{
  "1": "{0}",
  "2": "{0}",
  "3": "{0}",
  "4": "{0}",
  "5": "{0}",
  "6": "{0}",
  "7": "{0}",
  "8": "{0}",
  "9": "{0}",
  "10": "{0}",
  "11": "{0}",
  "12": "{0}",
  "13": "{0}",
  "14": "{0}",
  "15": "{0}",
  "16": "{0}",
  "17": "{0}",
  "18": "{0}",
  "19": "{0}",
  "20": "{0}",
  "0.api.dast.api.common.7369.match.attack.s0.o0": "서버 측 템플릿 삽입 취약점을 확인하기 위해, 요청 데이터에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7369.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7369.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7369.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7369.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7369.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으며, 응답 본문에 전송한 공격 페이로드의 실행 결과가 포함된 것을 발견했습니다.",
  "0.api.dast.api.common.7369.match.result.s0.o1": "이를 통해 서버 측 템플릿 삽입 공격이 가능함을 확인했습니다.",
  "0.api.dast.api.common.7369.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7369.match.solution.s0.o0": "서버 측 템플릿 삽입 취약점을 방지하려면, Sanitization과 입력값 검증을 함께 적용하는 것이 효과적입니다.",
  "0.api.dast.api.common.7369.match.solution.s1.o0": "Sanitization은 사용자의 입력값이 템플릿 구문으로 해석되지 않도록 처리하는 방법입니다.",
  "0.api.dast.api.common.7369.match.solution.s1.o1": "이를 위해 템플릿 파일을 미리 정의된 상태로 유지하고, 사용자의 입력은 템플릿에서 제공하는 안전한 출력 방식을 사용해야 합니다.",
  "0.api.dast.api.common.7369.match.solution.s2.o0": "또한, {, [, <, >, %, #, @, $ 등 공격에 자주 사용되는 특수문자가 사용자의 입력값에 포함되지 않도록 필터링해야 합니다.",
  "0.api.dast.api.common.7369.match.solution.s2.o1": "예를 들어, {{7*7}}을 입력했을 때 49가 출력되지 않고, 특수문자가 필터링 돼 77만 남아야 합니다.",
  "0.api.dast.api.common.7370.match.attack.s0.o0": "LDAP 삽입 취약점을 확인하기 위해, 요청 데이터에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7370.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7370.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7370.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7370.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7370.match.result.s0.o0": "요청에 대한 응답 결과, 응답 본문에서 LDAP 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "0.api.dast.api.common.7370.match.result.s0.o1": "서버가 사용자 입력값을 적절히 검증하지 않기 때문에 공격 문자열이 LDAP 쿼리에 포함되었고, 이로 인해 오류 메시지가 발생한 것으로 보입니다.",
  "0.api.dast.api.common.7370.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7370.match.solution.s0.o0": "LDAP 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 `, ', \", ), (, #, *, &, +, =, <, >, |, ; 등을 검증하고 필터링해야 합니다.",
  "0.api.dast.api.common.7370.match.solution.s0.o1": "또한, Prepared Statement를 사용해 사용자 입력값이 LDAP 쿼리에 영향을 주지 않도록 합니다.",
  "0.api.dast.api.common.7370.match.solution.s1.o0": "LDAP 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 LDAP 쿼리 구조를 파악할 수 있습니다.",
  "0.api.dast.api.common.7370.match.solution.s1.o1": "따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환해 정보 유출을 방지해야 합니다.",
  "0.api.dast.api.common.7371.match.attack.s0.o0": "코드 삽입 취약점을 확인하기 위해, 요청 데이터에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7371.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7371.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7371.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7371.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7371.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으며, 응답 본문에 전송한 공격 페이로드의 실행 결과가 포함된 것을 발견했습니다.",
  "0.api.dast.api.common.7371.match.result.s0.o1": "이를 통해 코드 삽입 공격이 가능함을 확인했습니다.",
  "0.api.dast.api.common.7371.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7371.match.solution.s0.o0": "코드 삽입 취약점을 방지하려면, 사용자 입력값으로 전달되는 문자열이 코드로 실행되지 않도록 적절히 필터링해야 합니다.",
  "0.api.dast.api.common.7371.match.solution.s0.o1": "특히, eval()과 같은 동적 코드 실행 함수는 사용해서는 안 되며, 필요한 경우 입력값에 대해 화이트리스트 기반 검증을 적용해야 합니다.",
  "0.api.dast.api.common.7372.match.attack.s0.o0": "경로 조작 취약점을 확인하기 위해, 요청 데이터에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7372.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7372.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7372.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7372.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7372.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으며, 응답 본문에 전송한 공격 페이로드의 실행 결과가 포함된 것을 발견했습니다.",
  "0.api.dast.api.common.7372.match.result.s0.o1": "이를 통해 경로 조작 공격이 가능함을 확인했습니다.",
  "0.api.dast.api.common.7372.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7372.match.solution.s0.o0": "경로 조작 취약점을 방지하려면, 사용자의 입력값을 적절히 검증해야 합니다.",
  "0.api.dast.api.common.7372.match.solution.s0.o1": "입력값에 .., /, \\ 등 경로 순회(Directory Traversal) 공격에 사용될 수 있는 문자가 포함된 경우, 이를 제거하거나 허용된 경로만 선택할 수 있도록 필터링해야 합니다.",
  "0.api.dast.api.common.7376.match.attack.s0.o0": "XXE 삽입 취약점을 확인하기 위해, 요청 데이터에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7376.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7376.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7376.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7376.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7376.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으며, 응답 본문에 전송한 공격 페이로드의 실행 결과가 포함된 것을 발견했습니다.",
  "0.api.dast.api.common.7376.match.result.s0.o1": "이를 통해 XXE 삽입 공격이 가능함을 확인했습니다.",
  "0.api.dast.api.common.7376.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7376.match.solution.s0.o0": "XML 파서를 설정해 외부 개체(External Entity) 참조를 비활성화하고, XML 입력값을 안전하게 검증 및 필터링해 악의적인 XML 구조를 차단해야 합니다.",
  "0.api.dast.api.common.7377.match.attack.s0.o0": "운영체제 명령어 삽입 취약점을 확인하기 위해, 요청 데이터에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7377.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7377.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7377.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7377.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7377.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으며, 응답 본문에 전송한 공격 페이로드의 실행 결과가 포함된 것을 발견했습니다.",
  "0.api.dast.api.common.7377.match.result.s0.o1": "이를 통해 운영체제 명령어 삽입 공격이 가능함을 확인했습니다.",
  "0.api.dast.api.common.7377.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7377.match.solution.s0.o0": "애플리케이션이 운영체제 명령어를 직접 호출하지 않도록 구현합니다.",
  "0.api.dast.api.common.7377.match.solution.s0.o1": "필요한 경우, 허용된 명령어만 실행할 수 있도록 화이트리스트를 적용해야 합니다.",
  "0.api.dast.api.common.7377.match.solution.s1.o0": "또한, 사용자 입력값이 명령어 해석기로 전달되기 전에 적절한 검증을 수행해야 합니다.",
  "0.api.dast.api.common.7377.match.solution.s1.o1": "공격에 사용될 수 있는 특수문자 [{, }, (, ), <, >, @, &, *, ‘, |, =, ?, ;, [, ], $, –, #, ~, !, ., ”, %, /, \\, :, +, ,, `]를 적절히 필터링해야 합니다.",
  "0.api.dast.api.common.7378.injected.attack.s0.o0": "크로스 사이트 스크립팅 취약점을 확인하기 위해, 요청 데이터에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7378.injected.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7378.injected.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7378.injected.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7378.injected.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7378.injected.result.s0.o0": "요청에 대한 응답 결과, 응답 본문에 전송한 공격 페이로드가 적절히 인코딩(이스케이프)되지 않은 채 반환된 것을 확인했습니다.",
  "0.api.dast.api.common.7378.injected.result.s0.o1": "서버가 응답에 이스케이프하지 않은 값을 그대로 반환하는 경우, 브라우저가 이를 HTML로 렌더링하여 크로스 사이트 스크립팅(XSS)이 발생할 수 있습니다.",
  "0.api.dast.api.common.7378.injected.result.s1.o0": "{0}",
  "0.api.dast.api.common.7378.injected.solution.s0.o0": "크로스 사이트 스크립팅 취약점을 방지하려면, 사용자의 입력값에 포함된 HTML 태그나 특수 문자 <, >, &, ', \" 등을 검증하고 필터링해야 합니다.",
  "0.api.dast.api.common.7378.injected.solution.s0.o1": "또한, 사용자 데이터를 HTML 문서에 삽입하는 경우, 텍스트로만 출력하거나 HTML 엔터티로 변환해 스크립트 실행을 방지합니다.",
  "0.api.dast.api.common.7379.match.attack.s0.o0": "SQL 삽입 취약점을 확인하기 위해, 요청 데이터에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7379.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7379.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7379.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7379.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7379.match.result.s0.o0": "요청에 대한 응답 결과, 응답 본문에서 SQL 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "0.api.dast.api.common.7379.match.result.s0.o1": "서버가 사용자의 입력값을 적절히 검증하지 않아, 공격 페이로드가 SQL 쿼리에 포함되었고, 이로 인해 오류가 발생한 것으로 보입니다.",
  "0.api.dast.api.common.7379.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7379.match.solution.s0.o0": "SQL 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 ', \", ;, #, --, //, %, /*, */ 등을 검증하고 필터링해야 합니다.",
  "0.api.dast.api.common.7379.match.solution.s0.o1": "또한, Prepared Statement 또는 ORM(Object-Relational Mapping)을 사용해 사용자 입력값이 SQL 쿼리에 영향을 주지 않도록 합니다.",
  "0.api.dast.api.common.7379.match.solution.s1.o0": "SQL 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 SQL 쿼리 구조를 파악할 수 있습니다.",
  "0.api.dast.api.common.7379.match.solution.s1.o1": "따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환해 정보 유출을 방지해야 합니다.",
  "0.api.dast.api.common.7380.match.attack.s0.o0": "경로 조작 취약점을 확인하기 위해, 요청 본문에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7380.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7380.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7380.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7380.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7380.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으며, 응답 본문에 전송한 공격 페이로드의 실행 결과가 포함된 것을 발견했습니다.",
  "0.api.dast.api.common.7380.match.result.s0.o1": "이를 통해 경로 조작 공격이 가능함을 확인했습니다.",
  "0.api.dast.api.common.7380.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7380.match.solution.s0.o0": "경로 조작 취약점을 방지하려면, 사용자의 입력값을 적절히 검증해야 합니다.",
  "0.api.dast.api.common.7380.match.solution.s0.o1": "입력값에 .., /, \\ 등 경로 순회(Directory Traversal) 공격에 사용될 수 있는 문자가 포함된 경우, 이를 제거하거나 허용된 경로만 선택할 수 있도록 필터링해야 합니다.",
  "0.api.dast.api.common.7394.injected.attack.s0.o0": "크로스 사이트 스크립팅 취약점을 확인하기 위해, 요청 본문에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7394.injected.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7394.injected.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7394.injected.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7394.injected.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7394.injected.result.s0.o0": "요청에 대한 응답 결과, 응답 본문에 전송한 공격 페이로드가 적절히 인코딩(이스케이프)되지 않은 채 반환된 것을 확인했습니다.",
  "0.api.dast.api.common.7394.injected.result.s0.o1": "서버가 응답에 이스케이프하지 않은 값을 그대로 반환하는 경우, 브라우저가 이를 HTML로 렌더링하여 크로스 사이트 스크립팅(XSS)이 발생할 수 있습니다.",
  "0.api.dast.api.common.7394.injected.result.s1.o0": "{0}",
  "0.api.dast.api.common.7394.injected.solution.s0.o0": "크로스 사이트 스크립팅 취약점을 방지하려면, 사용자의 입력값에 포함된 HTML 태그나 특수 문자 <, >, &, ', \" 등을 검증하고 필터링해야 합니다.",
  "0.api.dast.api.common.7394.injected.solution.s0.o1": "또한, 사용자 데이터를 HTML 문서에 삽입하는 경우, 텍스트로만 출력하거나 HTML 엔터티로 변환해 스크립트 실행을 방지합니다.",
  "0.api.dast.api.common.7395.match.attack.s0.o0": "운영체제 명령어 삽입 취약점을 확인하기 위해, 요청 본문에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7395.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7395.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7395.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7395.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7395.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으며, 응답 본문에 전송한 공격 페이로드의 실행 결과가 포함된 것을 발견했습니다.",
  "0.api.dast.api.common.7395.match.result.s0.o1": "이를 통해 운영체제 명령어 삽입 공격이 가능함을 확인했습니다.",
  "0.api.dast.api.common.7395.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7395.match.solution.s0.o0": "애플리케이션이 운영체제 명령어를 직접 호출하지 않도록 구현합니다.",
  "0.api.dast.api.common.7395.match.solution.s0.o1": "필요한 경우, 허용된 명령어만 실행할 수 있도록 화이트리스트를 적용해야 합니다.",
  "0.api.dast.api.common.7395.match.solution.s1.o0": "또한, 사용자 입력값이 명령어 해석기로 전달되기 전에 적절한 검증을 수행해야 합니다.",
  "0.api.dast.api.common.7395.match.solution.s1.o1": "공격에 사용될 수 있는 특수문자 [{, }, (, ), <, >, @, &, *, ‘, |, =, ?, ;, [, ], $, –, #, ~, !, ., ”, %, /, \\, :, +, ,, `]를 적절히 필터링해야 합니다.",
  "0.api.dast.api.common.7396.match.attack.s0.o0": "SQL 삽입 취약점을 확인하기 위해, 요청 본문에 존재하는 {0}의 값을 다음 공격 페이로드로 변경했습니다.",
  "0.api.dast.api.common.7396.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7396.match.attack.s2.o0": "이후, 해당 요청을 서버로 전송했습니다.",
  "0.api.dast.api.common.7396.match.attack.s3.o0": "{0}",
  "0.api.dast.api.common.7396.match.attack.s3.o1": "{0}",
  "0.api.dast.api.common.7396.match.result.s0.o0": "요청에 대한 응답 결과, 응답 본문에서 SQL 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "0.api.dast.api.common.7396.match.result.s0.o1": "서버가 사용자의 입력값을 적절히 검증하지 않아, 공격 페이로드가 SQL 쿼리에 포함되었고, 이로 인해 오류가 발생한 것으로 보입니다.",
  "0.api.dast.api.common.7396.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7396.match.solution.s0.o0": "SQL 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 ', \", ;, #, --, //, %, /*, */ 등을 검증하고 필터링해야 합니다.",
  "0.api.dast.api.common.7396.match.solution.s0.o1": "또한, Prepared Statement 또는 ORM(Object-Relational Mapping)을 사용해 사용자 입력값이 SQL 쿼리에 영향을 주지 않도록 합니다.",
  "0.api.dast.api.common.7396.match.solution.s1.o0": "SQL 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 SQL 쿼리 구조를 파악할 수 있습니다.",
  "0.api.dast.api.common.7396.match.solution.s1.o1": "따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환하여 정보 유출을 방지해야 합니다.",
  "0.api.dast.api.common.7397.match.attack.s0.o0": "GraphQL에서 디버그 모드 및 스택 추적 기능이 활성화되어 있는지 확인하기 위해, 부적절한 쿼리를 제작했습니다.",
  "0.api.dast.api.common.7397.match.attack.s0.o1": "이후, 다음과 같이 구성된 요청을 GraphQL 엔드포인트에 전송했습니다.",
  "0.api.dast.api.common.7397.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7397.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7397.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 부적절한 쿼리에 대해 과도한 오류를 반환하고 있음을 확인했습니다.",
  "0.api.dast.api.common.7397.match.result.s0.o1": "이를 통해 서버에 디버그 모드 또는 스택 추적 기능이 활성화되어 있음을 확인했습니다.",
  "0.api.dast.api.common.7397.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7397.match.result.s1.o1": "{0}",
  "0.api.dast.api.common.7397.match.solution.s0.o0": "운영 환경에서는 GraphQL의 디버그 모드와 스택 추적 기능을 비활성화해야 합니다.",
  "0.api.dast.api.common.7397.match.solution.s0.o1": "또한 서버는 오류가 발생하더라도 최소한의 정보만 포함된 일반적인 메시지만 반환해야 합니다.",
  "0.api.dast.api.common.7398.match.attack.s0.o0": "GraphQL IDE가 노출되었는지 확인하기 위해, {0} 경로로 GET 요청을 전송했습니다.",
  "0.api.dast.api.common.7398.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7398.match.result.s0.o0": "GET 요청에 대한 응답 결과, 서버는 오류 없이 HTML 형식의 응답 본문을 반환했습니다.",
  "0.api.dast.api.common.7398.match.result.s0.o1": "이를 통해 해당 경로에서 GraphQL IDE가 노출되어 있음을 확인했습니다.",
  "0.api.dast.api.common.7398.match.solution.s0.o0": "운영 환경에서는 GraphQL IDE를 비활성화하는 것이 권장되며, 필요한 경우 인가된 사용자만 접근을 허용하도록 설정해야 합니다.",
  "0.api.dast.api.common.7399.match.attack.s0.o0": "GraphQL 구조가 노출되었는지 확인하기 위해, 다음과 같이 Introspection 쿼리를 전송했습니다.",
  "0.api.dast.api.common.7399.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7399.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7399.match.result.s0.o0": "Introspection 쿼리에 대한 응답 결과, 서버는 오류 없이 정상적인 GraphQL 스키마 정보를 반환했습니다.",
  "0.api.dast.api.common.7399.match.result.s0.o1": "이를 통해 GraphQL의 Introspection 기능이 활성화되어 있음을 확인했습니다.",
  "0.api.dast.api.common.7399.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7399.match.result.s1.o1": "{0}",
  "0.api.dast.api.common.7399.match.solution.s0.o0": "운영 환경에서는 Introspection 기능을 비활성화하는 것이 권장되며, 필요한 경우 인가된 사용자만 해당 기능을 사용하도록 설정해야 합니다.",
  "0.api.dast.api.common.7436.match.attack.s0.o0": "GraphQL에서 필드 제안 기능이 활성화되어 있는지 확인하기 위해, 잘못된 필드 이름을 포함한 쿼리를 제작했습니다.",
  "0.api.dast.api.common.7436.match.attack.s0.o1": "이후, 다음과 같이 구성된 요청을 GraphQL 엔드포인트에 전송했습니다.",
  "0.api.dast.api.common.7436.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7436.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7436.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 잘못된 필드 이름에 대해 오류를 반환하고, 유사한 필드 이름을 함께 제안했습니다.",
  "0.api.dast.api.common.7436.match.result.s0.o1": "이를 통해 서버에 필드 제안 기능이 활성화되어 있음을 확인했습니다.",
  "0.api.dast.api.common.7436.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7436.match.result.s1.o1": "{0}",
  "0.api.dast.api.common.7436.match.solution.s0.o0": "운영 환경에서는 GraphQL 필드 제안 기능을 비활성화하는 것이 권장되며, 존재하지 않은 필드에 대해 최소한의 오류 정보만 제공해야 합니다.",
  "0.api.dast.api.common.7436.match.solution.s0.o1": "예를 들어 `이런 쿼리를 찾으셨나요?`와 같은 오류 메시지 대신, `존재하지 않는 필드입니다.` 또는 `요청을 처리할 수 없습니다.`와 같은 오류 메시지를 제공하는 것이 안전합니다.",
  "0.api.dast.api.common.7437.cloud.attack.s0.o0": "GraphQL에서 SSRF 공격 가능성을 확인하기 위해, 외부 자원 요청에 사용되는 값을 클라우드 메타데이터 주소로 변경한 뒤 요청을 전송했습니다.",
  "0.api.dast.api.common.7437.cloud.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7437.cloud.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7437.cloud.result.s0.o0": "요청에 대한 응답 결과, 서버는 클라우드 메타데이터 서비스에 대한 정보를 반환했습니다.",
  "0.api.dast.api.common.7437.cloud.result.s0.o1": "이를 통해 서버가 외부 자원 요청에 사용되는 값을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7437.cloud.result.s1.o0": "{0}",
  "0.api.dast.api.common.7437.cloud.solution.s0.o0": "서버 측 요청 위조 취약점을 방지하려면, 요청 대상이 되는 URL 입력값을 적절히 검증해야 합니다.",
  "0.api.dast.api.common.7437.cloud.solution.s0.o1": "서버는 허용된 도메인이나 IP만 접근할 수 있도록 화이트리스트를 적용하고, `localhost` 및 `127.0.0.1`과 같은 내부 주소나 `file://` 및 `gopher://` 등 공격에 자주 사용되는 스킴(scheme)은 블랙리스트로 설정하여 차단해야 합니다.",
  "0.api.dast.api.common.7437.file.attack.s0.o0": "GraphQL에서 SSRF 공격 가능성을 확인하기 위해, 외부 자원 요청에서 사용되는 값을 로컬 파일 경로로 변경한 뒤 요청을 전송했습니다.",
  "0.api.dast.api.common.7437.file.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7437.file.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7437.file.result.s0.o0": "요청에 대한 응답 결과, 서버는 정상적으로 로컬 파일을 읽고 이를 응답에 반환했습니다.",
  "0.api.dast.api.common.7437.file.result.s0.o1": "이를 통해 서버가 외부 자원 요청에 사용되는 값을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7437.file.result.s1.o0": "{0}",
  "0.api.dast.api.common.7437.file.solution.s0.o0": "서버 측 요청 위조 취약점을 방지하려면, 요청 대상이 되는 URL 입력값을 적절히 검증해야 합니다.",
  "0.api.dast.api.common.7437.file.solution.s0.o1": "서버는 허용된 도메인이나 IP만 접근할 수 있도록 화이트리스트를 적용하고, `localhost` 및 `127.0.0.1`과 같은 내부 주소나 `file://` 및 `gopher://` 등 공격에 자주 사용되는 스킴(scheme)은 블랙리스트로 설정하여 차단해야 합니다.",
  "0.api.dast.api.common.7438.match.attack.s0.o0": "GraphQL에서 필드 중복 공격 가능성을 확인하기 위해, 다음 두 요청을 전송했습니다.",
  "0.api.dast.api.common.7438.match.attack.s1.o0": "첫 번째 요청에서는 __typename 필드를 한 번 포함한 쿼리를 GraphQL 엔드포인트에 전송했습니다.",
  "0.api.dast.api.common.7438.match.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7438.match.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7438.match.attack.s3.o0": "이후, 두 번째 요청에서는 __typename 필드를 2,000번 중복 포함한 쿼리를 전송했습니다.",
  "0.api.dast.api.common.7438.match.result.s0.o0": "첫 번째 요청에 대한 응답 결과, 서버는 정상 응답을 반환했습니다.",
  "0.api.dast.api.common.7438.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7438.match.result.s1.o1": "{0}",
  "0.api.dast.api.common.7438.match.result.s2.o0": "두 번째 요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으나 첫 번째 요청 대비 응답 시간이 지연되었습니다.",
  "0.api.dast.api.common.7438.match.result.s2.o1": "이를 통해 서버가 중복 필드에 대한 제한을 두고 있지 않음을 확인했습니다.",
  "0.api.dast.api.common.7438.match.result.s3.o0": "{0}",
  "0.api.dast.api.common.7438.match.result.s3.o1": "{0}",
  "0.api.dast.api.common.7438.match.solution.s0.o0": "GraphQL에서 필드 중복 공격을 방지하려면, 중복 필드를 감지하고 단일 쿼리에 허용할 수 있는 고유 필드 수, 루트 필드 수를 제한해야 합니다.",
  "0.api.dast.api.common.7438.match.solution.s0.o1": "또한, 쿼리의 깊이나 요청 및 응답의 크기를 제한하는 방법도 고려할 수 있습니다.",
  "0.api.dast.api.common.7438.match.solution.s1.o0": "추가적으로, 비용 분석(Cost Analysis) 기법을 적용하는 것도 효과적인 대응 방안입니다.",
  "0.api.dast.api.common.7438.match.solution.s1.o1": "이 기법은 필드별로 리소스 비용을 정의하고, 쿼리 전체의 실행 비용을 계산합니다.",
  "0.api.dast.api.common.7438.match.solution.s1.o2": "계산된 비용이 사전에 설정된 임곗값을 초과하는 경우, 해당 요청을 차단하는 방식입니다.",
  "0.api.dast.api.common.7439.match.attack.s0.o0": "GraphQL에서 지시어 오버로딩 공격 가능성을 확인하기 위해, 다음 두 요청을 전송했습니다.",
  "0.api.dast.api.common.7439.match.attack.s1.o0": "첫 번째 요청에서는 __typename 필드에 1,000개의 지시어를 포함한 쿼리를 GraphQL 엔드포인트에 전송했습니다.",
  "0.api.dast.api.common.7439.match.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7439.match.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7439.match.attack.s3.o0": "이후, 두 번째 요청에서는 __typename 필드에 10,000개의 지시어를 포함한 쿼리를 전송했습니다.",
  "0.api.dast.api.common.7439.match.result.s0.o0": "첫 번째 요청에 대한 응답 결과, 서버는 부적절한 지시어에 대해 오류를 반환했습니다.",
  "0.api.dast.api.common.7439.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7439.match.result.s1.o1": "{0}",
  "0.api.dast.api.common.7439.match.result.s2.o0": "두 번째 요청에 대한 응답 결과, 동일한 오류가 발생했으나 첫 번째 요청 대비 응답 시간이 지연되었습니다.",
  "0.api.dast.api.common.7439.match.result.s2.o1": "이를 통해 서버는 지시어 해석 과정에서 리소스를 소모하고 있으며, 지시어 수에 대한 제한을 두고 있지 않음을 확인했습니다.",
  "0.api.dast.api.common.7439.match.solution.s0.o0": "GraphQL에서 지시어 오버로딩 공격을 방지하려면, 단일 쿼리에 허용할 지시어 수를 적절히 제한해야 합니다.",
  "0.api.dast.api.common.7439.match.solution.s0.o1": "또한, 단일 필드에 지시어가 반복 포함된 경우, 오류를 반환하거나 요청을 거부하는 방식도 고려할 수 있습니다.",
  "0.api.dast.api.common.7439.match.solution.s0.o2": "추가적으로, 쿼리의 깊이나 요청 및 응답 크기를 제한하는 방법도 효과적인 대응 방안입니다.",
  "0.api.dast.api.common.7440.match.attack.s0.o0": "GraphQL 순환 쿼리 공격 가능성을 확인하기 위해, Introspection 쿼리를 활용해 순환 쿼리를 제작한 뒤, 다음 두 요청을 전송했습니다.",
  "0.api.dast.api.common.7440.match.attack.s0.o1": "첫 번째 요청에서는 fields → type 구조를 한 번 포함한 쿼리를 GraphQL 엔드포인트에 전송했습니다.",
  "0.api.dast.api.common.7440.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7440.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7440.match.attack.s2.o0": "이후, 두 번째 요청에서는 fields → type → fields 구조를 20번 중복 포함한 쿼리를 전송했습니다.",
  "0.api.dast.api.common.7440.match.result.s0.o0": "첫 번째 요청에 대한 응답 결과, 서버는 정상 응답을 반환했습니다.",
  "0.api.dast.api.common.7440.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7440.match.result.s1.o1": "{0}",
  "0.api.dast.api.common.7440.match.result.s2.o0": "두 번째 요청에 대한 응답 결과, 서버는 오류 없이 정상 응답을 반환했으나, 첫 번째 요청 대비 응답 시간이 지연되었습니다.",
  "0.api.dast.api.common.7440.match.result.s2.o1": "이를 통해 서버가 쿼리 깊이에 대한 제한을 두고 있지 않음을 확인했습니다.",
  "0.api.dast.api.common.7440.match.result.s3.o0": "{0}",
  "0.api.dast.api.common.7440.match.result.s3.o1": "{0}",
  "0.api.dast.api.common.7440.match.solution.s0.o0": "GraphQL에서 순환 쿼리 공격을 방지하려면, 쿼리의 깊이와 요청 및 응답 크기를 제한해야 합니다.",
  "0.api.dast.api.common.7440.match.solution.s0.o1": "또한, 쿼리 타임아웃을 설정해 쿼리 실행 시간을 모니터링하고, 설정된 제한 시간을 초과하는 경우 해당 요청을 차단하는 방법도 고려할 수 있습니다.",
  "0.api.dast.api.common.7440.match.solution.s1.o0": "추가적으로, 비용 분석(Cost Analysis) 기법을 적용하는 것도 효과적인 대응 방안입니다.",
  "0.api.dast.api.common.7440.match.solution.s1.o1": "이 기법은 필드별로 리소스 비용을 정의하고, 쿼리 전체의 실행 비용을 계산합니다.",
  "0.api.dast.api.common.7440.match.solution.s1.o2": "계산된 비용이 사전에 설정된 임곗값을 초과하는 경우, 해당 요청을 차단하는 방식입니다.",
  "0.api.dast.api.common.7441.match.attack.s0.o0": "GraphQL에서 배칭 공격 가능성을 확인하기 위해, __typename 필드를 포함한 50개의 쿼리를 JSON 배열 형태로 제작했습니다.",
  "0.api.dast.api.common.7441.match.attack.s0.o1": "이후, 다음과 같이 구성된 요청을 GraphQL 엔드포인트에 전송했습니다.",
  "0.api.dast.api.common.7441.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7441.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7441.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 객체 타입의 이름을 모두 반환했습니다.",
  "0.api.dast.api.common.7441.match.result.s0.o1": "이를 통해 서버가 쿼리 수 제한 없이 배칭 기능을 허용하고 있음을 확인했습니다.",
  "0.api.dast.api.common.7441.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7441.match.result.s1.o1": "{0}",
  "0.api.dast.api.common.7441.match.solution.s0.o0": "GraphQL에서 배칭 공격을 방지하려면, 단일 요청에 허용할 수 있는 쿼리 수를 제한해야 합니다.",
  "0.api.dast.api.common.7441.match.solution.s0.o1": "또한, 쿼리의 깊이나 요청 및 응답의 크기를 제한하는 방법도 고려할 수 있습니다.",
  "0.api.dast.api.common.7441.match.solution.s1.o0": "추가적으로, 비용 분석(Cost Analysis) 기법을 적용하는 것도 효과적인 대응 방안입니다.",
  "0.api.dast.api.common.7441.match.solution.s1.o1": "이 기법은 필드별로 리소스 비용을 정의하고, 쿼리 전체의 실행 비용을 계산합니다.",
  "0.api.dast.api.common.7441.match.solution.s1.o2": "계산된 비용이 사전에 설정된 임곗값을 초과하는 경우, 해당 요청을 차단하는 방식입니다.",
  "0.api.dast.api.common.7442.match.attack.s0.o0": "GraphQL에서 별칭 오버로딩 공격 가능성을 확인하기 위해, __typename 필드에 500개의 별칭(Alias)을 적용한 쿼리를 제작했습니다.",
  "0.api.dast.api.common.7442.match.attack.s0.o1": "이후, 다음과 같이 구성된 요청을 GraphQL 엔드포인트에 전송했습니다.",
  "0.api.dast.api.common.7442.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7442.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7442.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 오류 없이 객체의 타입 이름을 반환했습니다.",
  "0.api.dast.api.common.7442.match.result.s0.o1": "이를 통해 서버가 별칭 수에 대한 제한을 두고 있지 않음을 확인했습니다.",
  "0.api.dast.api.common.7442.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7442.match.result.s1.o1": "{0}",
  "0.api.dast.api.common.7442.match.solution.s0.o0": "GraphQL에서 별칭 오버로딩 공격을 방지하려면, 단일 쿼리에 허용할 수 있는 고유 필드 수, 별칭(Alias) 수, 루트 필드 수를 적절히 제한해야 합니다.",
  "0.api.dast.api.common.7442.match.solution.s0.o1": "또한, 쿼리의 깊이나 요청 및 응답의 크기를 제한하는 방법도 고려할 수 있습니다.",
  "0.api.dast.api.common.7442.match.solution.s1.o0": "추가적으로, 비용 분석(Cost Analysis) 기법을 적용하는 것도 효과적인 대응 방안입니다.",
  "0.api.dast.api.common.7442.match.solution.s1.o1": "이 기법은 필드별로 리소스 비용을 정의하고, 쿼리 전체의 실행 비용을 계산합니다.",
  "0.api.dast.api.common.7442.match.solution.s1.o2": "계산된 비용이 사전에 설정된 임곗값을 초과하는 경우, 해당 요청을 차단하는 방식입니다.",
  "0.api.dast.api.common.7443.auto_modification.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, 관리자 계정과 일반 사용자 계정을 활용해 관리자 API 엔드포인트를 사전에 식별했습니다.",
  "0.api.dast.api.common.7443.auto_modification.attack.s0.o1": "이후, 다음과 같은 단계를 수행했습니다.",
  "0.api.dast.api.common.7443.auto_modification.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 식별된 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7443.auto_modification.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7443.auto_modification.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7443.auto_modification.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문 내 필드 값을 다음과 같이 변경했습니다.",
  "0.api.dast.api.common.7443.auto_modification.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7443.auto_modification.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7443.auto_modification.attack.s5.o0": "변경된 요청으로 로그인에 성공한 뒤, 동일한 관리자 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7443.auto_modification.result.s0.o0": "권한 상승을 시도한 뒤, 관리자 API 엔드포인트로 요청을 전송한 결과, 서버는 관리자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7443.auto_modification.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체의 개별 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7443.auto_modification.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7443.auto_modification.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7443.jwt_modification.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, 관리자 계정과 권한 상승을 시도한 일반 사용자 계정으로 각각 로그인을 수행했습니다.",
  "0.api.dast.api.common.7443.jwt_modification.attack.s0.o1": "이후 발급되는 JWT를 디코딩 한 뒤, 페이로드에서 역할 및 권한 관련 키를 확인했습니다.",
  "0.api.dast.api.common.7443.jwt_modification.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 발급된 JWT의 디코딩 결과는 다음과 같습니다.",
  "0.api.dast.api.common.7443.jwt_modification.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7443.jwt_modification.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문 내 필드 값을 다음과 같이 변경했습니다.",
  "0.api.dast.api.common.7443.jwt_modification.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7443.jwt_modification.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7443.jwt_modification.attack.s5.o0": "변경된 요청으로 로그인에 성공한 뒤, 발급된 JWT의 디코딩 결과는 다음과 같습니다.",
  "0.api.dast.api.common.7443.jwt_modification.attack.s6.o0": "{0}",
  "0.api.dast.api.common.7443.jwt_modification.result.s0.o0": "권한 상승을 시도한 일반 사용자 계정의 JWT를 디코딩 한 결과, 페이로드 내 역할 및 권한 관련 필드가 관리자 계정과 동일했습니다.",
  "0.api.dast.api.common.7443.jwt_modification.result.s0.o1": "이를 통해 서버가 객체의 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7443.jwt_modification.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7443.jwt_modification.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7443.manual_modification.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, DAST는 수동으로 입력된 관리자 API 엔드포인트를 활용해 다음과 같은 분석을 수행했습니다.",
  "0.api.dast.api.common.7443.manual_modification.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 식별된 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7443.manual_modification.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7443.manual_modification.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7443.manual_modification.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문 내 필드 값을 다음과 같이 변경했습니다.",
  "0.api.dast.api.common.7443.manual_modification.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7443.manual_modification.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7443.manual_modification.attack.s5.o0": "변경된 요청으로 로그인에 성공한 뒤, 동일한 관리자 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7443.manual_modification.result.s0.o0": "권한 상승을 시도한 뒤, 관리자 API 엔드포인트로 요청을 전송한 결과, 서버는 관리자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7443.manual_modification.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체의 개별 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7443.manual_modification.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7443.manual_modification.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7444.match.attack.s0.o0": "손상된 객체 수준 권한 부여(BOLA) 취약점을 확인하기 위해, 두 개의 사용자 계정을 활용했습니다.",
  "0.api.dast.api.common.7444.match.attack.s0.o1": "먼저 사용자 식별 키를 포함한 API 엔드포인트를 사전에 선별한 뒤, 다음과 같은 단계를 수행했습니다.",
  "0.api.dast.api.common.7444.match.attack.s1.o0": "첫 번째 사용자 계정으로 로그인한 뒤, 선별된 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7444.match.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7444.match.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7444.match.attack.s3.o0": "두 번째 사용자 계정으로 로그인한 뒤, 동일한 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7444.match.attack.s3.o1": "이때 요청 본문에 포함된 사용자 식별 키값을 첫 번째 계정의 값으로 변경했습니다.",
  "0.api.dast.api.common.7444.match.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7444.match.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7444.match.result.s0.o0": "사용자 식별 키를 변경한 뒤, 동일한 API 엔드포인트로 요청을 전송한 결과, 서버는 첫 번째 사용자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7444.match.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체 식별자에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7444.match.solution.s0.o0": "손상된 객체 수준 권한 부여(BOLA) 취약점을 방지하려면, 서버는 요청한 사용자가 해당 객체 식별자(ID, UUID 등)에 접근할 권한이 있는지 검증해야 합니다.",
  "0.api.dast.api.common.7444.match.solution.s0.o1": "또한, 객체 식별자는 예측하기 어렵게 생성해 공격자가 이를 쉽게 추측하거나 조작하지 못하도록 설정해야 합니다.",
  "0.api.dast.api.common.7445.access.attack.s0.o0": "API의 부적절한 재고 관리를 확인하기 위해, 엔드포인트를 {0}로 변경한 뒤 서버로 전송했습니다.",
  "0.api.dast.api.common.7445.access.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7445.access.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7445.access.result.s0.o0": "요청에 대한 응답 결과, 서버는 변경된 엔드포인트에 대해서도 오류 없이 기존과 동일한 정상 응답을 반환했습니다.",
  "0.api.dast.api.common.7445.access.result.s0.o1": "이를 통해 운영 환경에서 불필요하게 활성화된 API가 존재함을 확인했습니다.",
  "0.api.dast.api.common.7445.access.solution.s0.o0": "운영 환경에서 사용하는 모든 API 엔드포인트는 식별하고 문서화해야 하며, 개발 및 테스트용 또는 구버전 API는 제거해야 합니다.",
  "0.api.dast.api.common.7445.access.solution.s0.o1": "또한, Swagger와 같은 API 문서는 인가된 사용자만 접근할 수 있도록 접근 제어 정책을 적용해야 합니다.",
  "0.api.dast.api.common.7445.access.solution.s0.o2": "추가적으로 불필요한 노출을 방지하기 위해 내부용 API나 민감한 정보를 다루는 API는 신뢰할 수 있는 네트워크에서만 호출할 수 있도록 제한해야 합니다.",
  "0.api.dast.api.common.7446.cloud.attack.s0.o0": "REST API에서 SSRF 공격 가능성을 확인하기 위해, 외부 자원 요청에 사용되는 값을 클라우드 메타데이터 주소로 변경한 뒤 요청을 전송했습니다.",
  "0.api.dast.api.common.7446.cloud.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7446.cloud.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7446.cloud.result.s0.o0": "요청에 대한 응답 결과, 서버는 클라우드 메타데이터 서비스에 대한 정보를 반환했습니다.",
  "0.api.dast.api.common.7446.cloud.result.s0.o1": "이를 통해 서버가 외부 자원 요청에 사용되는 값을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7446.cloud.result.s1.o0": "{0}",
  "0.api.dast.api.common.7446.cloud.solution.s0.o0": "서버 측 요청 위조 취약점을 방지하려면, 요청 대상이 되는 URL 입력값을 적절히 검증해야 합니다.",
  "0.api.dast.api.common.7446.cloud.solution.s0.o1": "서버는 허용된 도메인이나 IP만 접근할 수 있도록 화이트리스트를 적용하고, localhost, 127.0.0.1, file:// 등 내부 주소나 공격에 자주 사용되는 스킴은 블랙리스트로 차단해야 합니다.",
  "0.api.dast.api.common.7446.file.attack.s0.o0": "REST API에서 SSRF 공격 가능성을 확인하기 위해, 외부 자원 요청에서 사용되는 값을 로컬 파일 경로로 변경한 뒤 요청을 전송했습니다.",
  "0.api.dast.api.common.7446.file.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7446.file.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7446.file.result.s0.o0": "요청에 대한 응답 결과, 서버는 정상적으로 로컬 파일을 읽고 이를 응답에 반환했습니다.",
  "0.api.dast.api.common.7446.file.result.s0.o1": "이를 통해 서버가 외부 자원 요청에 사용되는 값을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7446.file.result.s1.o0": "{0}",
  "0.api.dast.api.common.7446.file.solution.s0.o0": "서버 측 요청 위조 취약점을 방지하려면, 요청 대상이 되는 URL 입력값을 적절히 검증해야 합니다.",
  "0.api.dast.api.common.7446.file.solution.s0.o1": "서버는 허용된 도메인이나 IP만 접근할 수 있도록 화이트리스트를 적용하고, localhost, 127.0.0.1, file:// 등 내부 주소나 공격에 자주 사용되는 스킴은 블랙리스트로 차단해야 합니다.",
  "0.api.dast.api.common.7447.match_auto.attack.s0.o0": "손상된 기능 수준 권한 부여(BFLA) 취약점을 확인하기 위해, 관리자 계정과 일반 사용자 계정을 활용해 관리자 API 엔드포인트를 사전에 식별했습니다. 이후, 다음과 같은 단계를 수행했습니다.",
  "0.api.dast.api.common.7447.match_auto.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 식별된 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7447.match_auto.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7447.match_auto.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7447.match_auto.attack.s3.o0": "일반 사용자 계정으로 로그인한 뒤, 동일한 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7447.match_auto.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7447.match_auto.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7447.match_auto.result.s0.o0": "일반 사용자 계정으로 로그인한 뒤, 동일한 관리자 API 엔드포인트로 요청을 전송한 결과, 반환된 응답이 관리자 계정의 응답과 높은 수준으로 유사했습니다.",
  "0.api.dast.api.common.7447.match_auto.result.s0.o1": "이를 통해 서버가 API의 기능별 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7447.match_auto.solution.s0.o0": "손상된 기능 수준 권한 부여 취약점을 방지하려면, 서버는 API의 기능에 따라 최소 권한을 명확히 정의하고, 역할 기반 접근 제어(RBAC) 또는 속성 기반 접근 제어(ABAC)를 적용해야 합니다.",
  "0.api.dast.api.common.7447.match_auto.solution.s0.o1": "특히 생성, 수정, 삭제, 관리자 페이지 접근 등 민감한 기능에 대해서는 서버 측 권한 검증을 엄격히 적용해야 합니다.",
  "0.api.dast.api.common.7447.match_manual.attack.s0.o0": "손상된 기능 수준 권한 부여(BFLA) 취약점을 확인하기 위해, 수동으로 입력된 관리자 API 엔드포인트를 활용해 다음과 같은 분석을 수행했습니다.",
  "0.api.dast.api.common.7447.match_manual.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 식별된 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7447.match_manual.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7447.match_manual.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7447.match_manual.attack.s3.o0": "일반 사용자 계정으로 로그인한 뒤, 동일한 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7447.match_manual.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7447.match_manual.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7447.match_manual.result.s0.o0": "일반 사용자 계정으로 로그인한 뒤, 동일한 관리자 API 엔드포인트로 요청을 전송한 결과, 반환된 응답이 관리자 계정의 응답과 높은 수준으로 유사했습니다.",
  "0.api.dast.api.common.7447.match_manual.result.s0.o1": "이를 통해 서버가 API의 기능별 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7447.match_manual.solution.s0.o0": "손상된 기능 수준 권한 부여 취약점을 방지하려면, 서버는 API의 기능에 따라 최소 권한을 명확히 정의하고, 역할 기반 접근 제어(RBAC) 또는 속성 기반 접근 제어(ABAC)를 적용해야 합니다.",
  "0.api.dast.api.common.7447.match_manual.solution.s0.o1": "특히 생성, 수정, 삭제, 관리자 페이지 접근 등 민감한 기능에 대해서는 서버 측 권한 검증을 엄격히 적용해야 합니다.",
  "0.api.dast.api.common.7449.auto_insertion.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, 관리자 계정과 일반 사용자 계정을 활용해 관리자 API 엔드포인트를 사전에 식별했습니다.",
  "0.api.dast.api.common.7449.auto_insertion.attack.s0.o1": "이후, 다음과 같은 단계를 수행했습니다.",
  "0.api.dast.api.common.7449.auto_insertion.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 식별된 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7449.auto_insertion.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7449.auto_insertion.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7449.auto_insertion.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문에 다음과 같은 필드를 추가했습니다.",
  "0.api.dast.api.common.7449.auto_insertion.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7449.auto_insertion.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7449.auto_insertion.attack.s5.o0": "추가된 필드가 포함된 요청으로 로그인에 성공한 뒤, 동일한 관리자 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7449.auto_insertion.result.s0.o0": "권한 상승을 시도한 뒤, 관리자 API 엔드포인트로 요청을 전송한 결과, 서버는 관리자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7449.auto_insertion.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체의 개별 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7449.auto_insertion.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7449.auto_insertion.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7449.auto_modification.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, 관리자 계정과 일반 사용자 계정을 활용해 관리자 API 엔드포인트를 사전에 식별했습니다.",
  "0.api.dast.api.common.7449.auto_modification.attack.s0.o1": "이후, 다음과 같은 단계를 수행했습니다.",
  "0.api.dast.api.common.7449.auto_modification.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 식별된 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7449.auto_modification.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7449.auto_modification.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7449.auto_modification.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문 내 필드 값을 다음과 같이 변경했습니다.",
  "0.api.dast.api.common.7449.auto_modification.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7449.auto_modification.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7449.auto_modification.attack.s5.o0": "변경된 요청으로 로그인에 성공한 뒤, 동일한 관리자 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7449.auto_modification.result.s0.o0": "권한 상승을 시도한 뒤, 관리자 API 엔드포인트로 요청을 전송한 결과, 서버는 관리자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7449.auto_modification.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체의 개별 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7449.auto_modification.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7449.auto_modification.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, 관리자 계정과 권한 상승을 시도한 일반 사용자 계정으로 각각 로그인을 수행했습니다.",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s0.o1": "이후 발급되는 JWT를 디코딩 한 뒤, 페이로드에서 역할 및 권한 관련 키를 확인했습니다.",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 발급된 JWT의 디코딩 결과는 다음과 같습니다.",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문에 다음과 같은 필드를 추가했습니다.",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s5.o0": "추가된 필드가 포함된 요청으로 로그인에 성공한 뒤, 발급된 JWT의 디코딩 결과는 다음과 같습니다.",
  "0.api.dast.api.common.7449.jwt_insertion.attack.s6.o0": "{0}",
  "0.api.dast.api.common.7449.jwt_insertion.result.s0.o0": "권한 상승을 시도한 일반 사용자 계정으로 로그인한 뒤, 발급된 JWT를 디코딩 한 결과, 페이로드 내 역할 및 권한 관련 필드가 관리자 계정과 동일했습니다.",
  "0.api.dast.api.common.7449.jwt_insertion.result.s0.o1": "이를 통해 서버가 객체의 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7449.jwt_insertion.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7449.jwt_insertion.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7449.jwt_modification.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, 관리자 계정과 권한 상승을 시도한 일반 사용자 계정으로 각각 로그인을 수행했습니다.",
  "0.api.dast.api.common.7449.jwt_modification.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 발급된 JWT의 디코딩 결과는 다음과 같습니다.",
  "0.api.dast.api.common.7449.jwt_modification.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7449.jwt_modification.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문 내 필드 값을 다음과 같이 변경했습니다.",
  "0.api.dast.api.common.7449.jwt_modification.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7449.jwt_modification.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7449.jwt_modification.attack.s5.o0": "변경된 요청으로 로그인에 성공한 뒤, 발급된 JWT의 디코딩 결과는 다음과 같습니다.",
  "0.api.dast.api.common.7449.jwt_modification.attack.s6.o0": "{0}",
  "0.api.dast.api.common.7449.jwt_modification.result.s0.o0": "권한 상승을 시도한 일반 사용자 계정으로 로그인한 뒤, 발급된 JWT를 디코딩 한 결과, 페이로드 내 역할 및 권한 관련 필드가 관리자 계정과 동일했습니다.",
  "0.api.dast.api.common.7449.jwt_modification.result.s0.o1": "이를 통해 서버가 객체의 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7449.jwt_modification.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7449.jwt_modification.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7449.manual_insertion.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, 수동으로 입력된 관리자 API 엔드포인트를 활용하여 다음과 같은 분석을 수행했습니다.",
  "0.api.dast.api.common.7449.manual_insertion.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 식별된 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7449.manual_insertion.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7449.manual_insertion.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7449.manual_insertion.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문에 다음과 같은 필드를 추가했습니다.",
  "0.api.dast.api.common.7449.manual_insertion.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7449.manual_insertion.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7449.manual_insertion.attack.s5.o0": "추가된 필드가 포함된 요청으로 로그인에 성공한 뒤, 동일한 관리자 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7449.manual_insertion.result.s0.o0": "권한 상승을 시도한 뒤, 관리자 API 엔드포인트로 요청을 전송한 결과, 서버는 관리자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7449.manual_insertion.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체의 개별 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7449.manual_insertion.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7449.manual_insertion.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7449.manual_modification.attack.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 확인하기 위해, DAST는 수동으로 입력된 관리자 API 엔드포인트를 활용해 다음과 같은 분석을 수행했습니다.",
  "0.api.dast.api.common.7449.manual_modification.attack.s1.o0": "관리자 계정으로 로그인한 뒤, 식별된 관리자 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7449.manual_modification.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7449.manual_modification.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7449.manual_modification.attack.s3.o0": "권한 상승을 시도하기 위해, 일반 사용자 계정으로 로그인할 때 요청 본문 내 필드 값을 다음과 같이 변경했습니다.",
  "0.api.dast.api.common.7449.manual_modification.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7449.manual_modification.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7449.manual_modification.attack.s5.o0": "변경된 요청으로 로그인에 성공한 뒤, 동일한 관리자 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7449.manual_modification.result.s0.o0": "권한 상승을 시도한 뒤, 관리자 API 엔드포인트로 요청을 전송한 결과, 서버는 관리자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7449.manual_modification.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체의 개별 속성에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7449.manual_modification.solution.s0.o0": "손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7449.manual_modification.solution.s0.o1": "또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7454.missing.attack.s0.o0": "부적절한 JWT 만료 시간을 확인하기 위해, 브라우저에 저장된 JWT를 Base64로 디코딩 한 후, 페이로드에서 만료 시간(exp) 클레임을 확인했습니다.",
  "0.api.dast.api.common.7454.missing.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7454.missing.result.s0.o0": "디코딩 결과, JWT에 만료 시간(exp) 클레임이 존재하지 않았습니다.",
  "0.api.dast.api.common.7454.missing.result.s0.o1": "이를 통해 서버가 만료 시간을 설정하지 않고 토큰을 발급하고 있음을 확인했습니다.",
  "0.api.dast.api.common.7454.missing.result.s1.o0": "{0}",
  "0.api.dast.api.common.7454.missing.solution.s0.o0": "JWT를 발급할 때 서비스 특성에 맞는 만료 시간(exp)을 설정하고, 서버는 이를 적절히 검증해야 합니다.",
  "0.api.dast.api.common.7454.missing.solution.s0.o1": "만료된 토큰이 사용된 경우, 서버는 해당 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7454.missing.solution.s1.o0": "일반적으로 Access Token과 Refresh Token을 함께 사용하는 방식이 권장됩니다.",
  "0.api.dast.api.common.7454.missing.solution.s1.o1": "Access Token에는 짧은 만료 시간을 설정하고, 토큰이 만료되면 Refresh Token을 통해 새로운 Access Token을 발급합니다.",
  "0.api.dast.api.common.7454.missing.solution.s2.o0": "또한, 토큰 재사용을 차단하기 위해 무효화 전략을 적용할 수 있습니다.",
  "0.api.dast.api.common.7454.missing.solution.s2.o1": "예를 들어, JWT의 페이로드에 TokenVersion이나 암호화된 IP 주소를 포함하고, 서버가 해당 값을 검증하는 방식입니다.",
  "0.api.dast.api.common.7454.missing.solution.s2.o2": "TokenVersion은 비밀번호 변경, 로그아웃 등 특정 이벤트가 발생할 때 값을 증가시켜 이전 토큰을 무효화할 수 있습니다.",
  "0.api.dast.api.common.7454.missing.solution.s2.o3": "IP 주소 검증은 등록되지 않은 IP에서의 요청을 차단해, 탈취된 토큰의 재사용을 방지할 수 있습니다.",
  "0.api.dast.api.common.7454.too_long.attack.s0.o0": "부적절한 JWT 만료 시간을 확인하기 위해, 브라우저에 저장된 JWT를 Base64로 디코딩 한 후, 페이로드에서 만료 시간(exp) 클레임을 확인했습니다.",
  "0.api.dast.api.common.7454.too_long.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7454.too_long.result.s0.o0": "디코딩 결과, JWT의 만료 시간이 24시간을 초과하고 있음을 확인했습니다.",
  "0.api.dast.api.common.7454.too_long.result.s0.o1": "Access Token과 같이 인증에 사용되는 토큰은 과도하게 긴 만료 시간을 피하고, 가능한 한 짧게 설정하는 것이 권장됩니다.",
  "0.api.dast.api.common.7454.too_long.result.s1.o0": "{0}",
  "0.api.dast.api.common.7454.too_long.solution.s0.o0": "JWT를 발급할 때 서비스 특성에 맞는 만료 시간(exp)을 설정하고, 서버는 이를 적절히 검증해야 합니다.",
  "0.api.dast.api.common.7454.too_long.solution.s0.o1": "만료된 토큰이 사용된 경우, 서버는 해당 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7454.too_long.solution.s1.o0": "일반적으로 Access Token과 Refresh Token을 함께 사용하는 방식이 권장됩니다.",
  "0.api.dast.api.common.7454.too_long.solution.s1.o1": "Access Token에는 짧은 만료 시간을 설정하고, 토큰이 만료되면 Refresh Token을 통해 새로운 Access Token을 발급합니다.",
  "0.api.dast.api.common.7454.too_long.solution.s2.o0": "또한, 토큰 재사용을 차단하기 위해 무효화 전략을 적용할 수 있습니다.",
  "0.api.dast.api.common.7454.too_long.solution.s2.o1": "예를 들어, JWT의 페이로드에 TokenVersion이나 암호화된 IP 주소를 포함하고, 서버가 해당 값을 검증하는 방식입니다.",
  "0.api.dast.api.common.7454.too_long.solution.s2.o2": "TokenVersion은 비밀번호 변경, 로그아웃 등 특정 이벤트가 발생할 때 값을 증가시켜 이전 토큰을 무효화할 수 있습니다.",
  "0.api.dast.api.common.7454.too_long.solution.s2.o3": "IP 주소 검증은 등록되지 않은 IP에서의 요청을 차단해, 탈취된 토큰의 재사용을 방지할 수 있습니다.",
  "0.api.dast.api.common.7455.match.attack.s0.o0": "부적절한 JWT가 발급되는지 확인하기 위해, 다음과 같은 분석 과정을 수행했습니다.",
  "0.api.dast.api.common.7455.match.attack.s1.o0": "로그인 이벤트 클립보드를 사용해 두 번의 정상 로그인을 수행했습니다.",
  "0.api.dast.api.common.7455.match.result.s0.o0": "첫 번째와 두 번째 로그인 요청에서 생성된 JWT를 비교한 결과, 두 값이 동일했습니다.",
  "0.api.dast.api.common.7455.match.result.s0.o1": "이를 통해 서버가 JWT를 부적절하게 발급하고 있음을 확인했습니다.",
  "0.api.dast.api.common.7455.match.result.s1.o0": "{0}",
  "0.api.dast.api.common.7455.match.solution.s0.o0": "토큰은 매번 새로운 값으로 생성되도록 구현해야 합니다.",
  "0.api.dast.api.common.7455.match.solution.s0.o1": "이를 위해 페이로드에 고유 식별값(jti)이나 발급 시간(iat), 만료 시간(ext) 등을 포함해, 토큰을 구별하고 예측을 어렵게 만들어야 합니다.",
  "0.api.dast.api.common.7456.match.attack.s0.o0": "손상된 객체 수준 권한 부여(BOLA) 취약점을 확인하기 위해, 두 개의 사용자 계정을 활용했습니다.",
  "0.api.dast.api.common.7456.match.attack.s0.o1": "먼저 사용자 식별 키를 포함한 API 엔드포인트를 사전에 선별한 뒤, 다음과 같은 단계를 수행했습니다.",
  "0.api.dast.api.common.7456.match.attack.s1.o0": "첫 번째 사용자 계정으로 로그인한 뒤, 선별된 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7456.match.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7456.match.attack.s3.o0": "두 번째 사용자 계정으로 로그인한 뒤, 동일한 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7456.match.attack.s3.o1": "이때, 요청에 포함된 인증 정보는 두 번째 계정 기준이며, URL 경로 또는 쿼리 스트링에 포함된 사용자 식별 키값은 첫 번째 계정의 값과 동일합니다.",
  "0.api.dast.api.common.7456.match.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7456.match.result.s0.o0": "두 번째 사용자 계정으로 로그인한 뒤, 동일한 API 엔드포인트로 요청을 전송한 결과, 서버는 첫 번째 사용자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7456.match.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체 식별자에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7456.match.solution.s0.o0": "손상된 객체 수준 권한 부여(BOLA) 취약점을 방지하려면, 서버는 요청한 사용자가 해당 객체 식별자(ID, UUID 등)에 접근할 권한이 있는지 검증해야 합니다.",
  "0.api.dast.api.common.7456.match.solution.s0.o1": "또한, 객체 식별자는 예측하기 어렵게 생성해 공격자가 이를 쉽게 추측하거나 조작하지 못하도록 설정해야 합니다.",
  "0.api.dast.api.common.7457.match.attack.s0.o0": "손상된 객체 수준 권한 부여(BOLA) 취약점을 확인하기 위해, 두 개의 사용자 계정을 활용했습니다.",
  "0.api.dast.api.common.7457.match.attack.s0.o1": "먼저 사용자 식별 키를 포함한 API 엔드포인트를 사전에 선별한 뒤, 다음과 같은 단계를 수행했습니다.",
  "0.api.dast.api.common.7457.match.attack.s1.o0": "첫 번째 사용자 계정으로 로그인한 뒤, 선별된 API 엔드포인트로 다음 요청을 전송했습니다.",
  "0.api.dast.api.common.7457.match.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7457.match.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7457.match.attack.s3.o0": "두 번째 사용자 계정으로 로그인한 뒤, 동일한 API 엔드포인트로 요청을 전송했습니다.",
  "0.api.dast.api.common.7457.match.attack.s3.o1": "이때 요청 본문에 포함된 사용자 식별 키값을 첫 번째 계정의 값으로 변경했습니다.",
  "0.api.dast.api.common.7457.match.attack.s4.o0": "{0}",
  "0.api.dast.api.common.7457.match.attack.s4.o1": "{0}",
  "0.api.dast.api.common.7457.match.result.s0.o0": "사용자 식별 키를 변경한 뒤, 동일한 API 엔드포인트로 요청을 전송한 결과, 서버는 첫 번째 사용자 계정에 대한 응답과 높은 수준의 유사도를 보이는 응답을 반환했습니다.",
  "0.api.dast.api.common.7457.match.result.s0.o1": "이를 통해 서버가 API 요청을 처리할 때, 객체 식별자에 대한 권한을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7457.match.solution.s0.o0": "손상된 객체 수준 권한 부여(BOLA) 취약점을 방지하려면, 서버는 요청한 사용자가 해당 객체 식별자(ID, UUID 등)에 접근할 권한이 있는지 검증해야 합니다.",
  "0.api.dast.api.common.7457.match.solution.s0.o1": "또한, 객체 식별자는 예측하기 어렵게 생성해 공격자가 이를 쉽게 추측하거나 조작하지 못하도록 설정해야 합니다.",
  "0.api.dast.api.common.7458.match.attack.s0.o0": "JWT 서명 우회(None Algorithm) 취약점을 확인하기 위해, JWT 헤더의 알고리즘을 {0}으로 변경한 뒤 서버로 전송했습니다.",
  "0.api.dast.api.common.7458.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7458.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7458.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 기존과 동일한 정상 응답을 반환했습니다.",
  "0.api.dast.api.common.7458.match.result.s0.o1": "이를 통해 서버가 none 알고리즘을 허용하고 있음을 확인했습니다.",
  "0.api.dast.api.common.7458.match.solution.s0.o0": "JWT 서명 우회 취약점을 방지하려면, 서버는 none 알고리즘을 허용해서는 안 됩니다.",
  "0.api.dast.api.common.7458.match.solution.s0.o1": "또한, 서명 검증 단계에서 서명이 누락되었거나 올바르게 설정되지 않은 경우, 해당 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7458.match.solution.s1.o0": "대부분의 최신 JWT 라이브러리는 none 알고리즘을 지원하지 않습니다.",
  "0.api.dast.api.common.7458.match.solution.s1.o1": "그러나 일부 구 버전에서는 이를 허용하므로, 최신 버전을 적용해야 합니다.",
  "0.api.dast.api.common.7459.match.attack.s0.o0": "JWT 서명 우회(Blank Secret) 취약점을 확인하기 위해, JWT 서명의 Secret 값을 {0}로 변경한 뒤 서버로 전송했습니다.",
  "0.api.dast.api.common.7459.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7459.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7459.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 기존과 동일한 정상 응답을 반환했습니다.",
  "0.api.dast.api.common.7459.match.result.s0.o1": "이를 통해 서버가 JWT 서명을 적절히 검증하지 않거나, 비밀키로 빈 문자열이 사용되고 있음을 확인했습니다.",
  "0.api.dast.api.common.7459.match.solution.s0.o0": "서버는 JWT를 검증할 때, 토큰에 서명이 정상적으로 포함되어 있는지 확인하고, 그 값이 유효한지 검증해야 합니다.",
  "0.api.dast.api.common.7459.match.solution.s0.o1": "이때 서명에 사용하는 비밀키는 충분히 복잡해야 하며, 빈 문자열이나 추측 가능한 값은 사용하지 않아야 합니다.",
  "0.api.dast.api.common.7459.match.solution.s0.o2": "또한, 서버는 허용된 알고리즘만 사용하도록 제한하고, 서명이 누락되었거나 변조된 토큰이 감지될 경우 해당 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7460.match.attack.s0.o0": "서버가 JWT의 서명을 적절히 검증하는지 확인하기 위해, 전송되는 JWT의 서명 부분을 제거한 뒤 서버로 전송했습니다.",
  "0.api.dast.api.common.7460.match.attack.s1.o0": "{0}",
  "0.api.dast.api.common.7460.match.attack.s1.o1": "{0}",
  "0.api.dast.api.common.7460.match.result.s0.o0": "요청에 대한 응답 결과, 서버는 기존과 동일한 정상 응답을 반환했습니다.",
  "0.api.dast.api.common.7460.match.result.s0.o1": "이를 통해 서버가 JWT의 서명을 적절히 검증하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7460.match.solution.s0.o0": "서버는 JWT를 검증할 때, 토큰에 서명이 정상적으로 포함되어 있는지 확인하고, 그 값이 유효한지 검증해야 합니다.",
  "0.api.dast.api.common.7460.match.solution.s0.o1": "또한, 서버는 허용된 알고리즘만 사용하도록 제한하고, 서명이 누락되었거나 변조된 토큰이 감지될 경우, 해당 요청을 차단해야 합니다.",
  "0.api.dast.api.common.7461.match.attack.s0.o0": "JWT 재사용 취약점을 확인하기 위해 JWT 인증을 요구하는 엔드포인트를 사전에 식별한 뒤, 다음과 같은 단계를 수행했습니다.",
  "0.api.dast.api.common.7461.match.attack.s1.o0": "1. 정상 로그인 후 발급받은 유효한 JWT로 식별된 엔드포인트에 다음과 같은 요청을 전송했습니다.",
  "0.api.dast.api.common.7461.match.attack.s2.o0": "{0}",
  "0.api.dast.api.common.7461.match.attack.s2.o1": "{0}",
  "0.api.dast.api.common.7461.match.attack.s3.o0": "2. 로그아웃 이벤트 클립보드를 이용해 로그아웃을 수행했습니다.",
  "0.api.dast.api.common.7461.match.attack.s4.o0": "3. 로그아웃 후 1번과 동일한 요청을 동일 엔드포인트로 재전송해 JWT 블랙리스트 등록 여부를 확인했습니다.",
  "0.api.dast.api.common.7461.match.result.s0.o0": "로그아웃 후 동일한 요청을 재전송한 결과, 서버는 기존과 동일한 정상 응답을 반환했습니다.",
  "0.api.dast.api.common.7461.match.result.s0.o1": "이를 통해 서버 측에서 로그아웃 이후에도 해당 JWT를 블랙리스트로 등록하지 않고 있음을 확인했습니다.",
  "0.api.dast.api.common.7461.match.solution.s0.o0": "서버는 로그아웃, 세션 종료 또는 이상 행위가 감지된 경우, 사용 중인 Access Token을 블랙리스트에 등록해 더 이상 인증에 사용되지 않도록 해야 합니다.",
  "0.api.dast.api.common.7461.match.solution.s0.o1": "블랙리스트로 관리할 토큰은 일반 데이터베이스보다 조회 속도가 빠른 인 메모리 저장소(ex. Redis)에 보관하는 것이 권장되며, 토큰의 만료 시간(exp)이 도달하면 자동으로 삭제되도록 구성합니다.",
  "0.api.dast.api.common.7461.match.solution.s0.o2": "이후 서버는 인증 요청이 들어오면 해당 요청에 포함된 토큰이 블랙리스트에 등록되어 있는지를 확인하고, 등록된 경우 요청을 거부해야 합니다.",
  "0.api.dast.api.common.7461.match.solution.s1.o0": "또한 Access Token의 유효 기간을 짧게 설정하고, Refresh Token을 사용해 주기적으로 새로운 Access Token을 재발급함으로써 탈취된 토큰의 재사용 가능성을 최소화해야 합니다.",
  "0.event.absolute_path_disclosure.path.attack.s0.o0": "파일 절대 경로 노출 취약점은 파일 절대 경로가 노출되는 취약점입니다.",
  "0.event.absolute_path_disclosure.path.attack.s1.o0": "파일 절대 경로 노출 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.absolute_path_disclosure.path.attack.s2.o0": "페이지 내부의 텍스트에 절대 경로가 존재하는지 검사했습니다.",
  "0.event.absolute_path_disclosure.path.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.absolute_path_disclosure.path.result.s1.o0": "페이지 내부의 텍스트에서 절대 경로로 추정되는 다음과 같은 내용을 발견했습니다.",
  "0.event.absolute_path_disclosure.path.result.s2.o0": "{0}",
  "0.event.absolute_path_disclosure.path.result.s3.o0": "검사 결과, 파일 절대 경로 노출 취약점이 존재함을 확인했습니다.",
  "0.event.absolute_path_disclosure.path.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.absolute_path_disclosure.path.solution.s1.o0": "절대 경로가 페이지에 노출되지 않도록 해당 정보를 삭제하세요.",
  "0.event.blind_ldap_injection.conditional.apiReqInfo": "{0}",
  "0.event.blind_ldap_injection.conditional.apiReqMsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.blind_ldap_injection.conditional.apireqinfo": "{0}",
  "0.event.blind_ldap_injection.conditional.apireqmsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.blind_ldap_injection.error.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.blind_ldap_injection.error.attack.s0.o1": "{0}",
  "0.event.blind_ldap_injection.error.attack.s1.o0": "공격 대상 페이지의 모든 {0} 요소에 대하여 다음과 같이 입력했습니다.",
  "0.event.blind_ldap_injection.error.attack.s1.o1": "{0}",
  "0.event.blind_ldap_injection.error.attack.s2.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "0.event.blind_ldap_injection.error.result.s0.o0": "이벤트 수행 후, 공격 대상 페이지의 DOM에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.blind_ldap_injection.error.result.s0.o1": "{0}",
  "0.event.blind_ldap_injection.error.result.s1.o0": "분석 수행 결과, LDAP문 관련 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "0.event.blind_ldap_injection.error.result.s1.o1": "따라서 수행한 이벤트로 인해 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 LDAP문 관련 정보를 수집할 수 있습니다.",
  "0.event.blind_ldap_injection.error.result.s2.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.blind_ldap_injection.error.result.s2.o1": "{0}",
  "0.event.blind_ldap_injection.error.solution.s0.o0": "LDAP문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다.",
  "0.event.blind_ldap_injection.error.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "0.event.blind_sql_injection.conditional.apiReqInfo": "{0}",
  "0.event.blind_sql_injection.conditional.apiReqMsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.blind_sql_injection.conditional.apireqinfo": "{0}",
  "0.event.blind_sql_injection.conditional.apireqmsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.blind_sql_injection.error.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.blind_sql_injection.error.attack.s0.o1": "{0}",
  "0.event.blind_sql_injection.error.attack.s1.o0": "공격 대상 페이지의 모든 {0} 요소에 대하여 다음과 같이 입력했습니다.",
  "0.event.blind_sql_injection.error.attack.s1.o1": "{0}",
  "0.event.blind_sql_injection.error.attack.s2.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "0.event.blind_sql_injection.error.result.s0.o0": "이벤트 수행 후, 공격 대상 페이지의 DOM에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.blind_sql_injection.error.result.s0.o1": "{0}",
  "0.event.blind_sql_injection.error.result.s1.o0": "분석 수행 결과, DBMS 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "0.event.blind_sql_injection.error.result.s1.o1": "따라서 수행한 이벤트로 인해 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 DB 및 SQL문 관련 정보를 수집할 수 있습니다.",
  "0.event.blind_sql_injection.error.result.s2.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.blind_sql_injection.error.result.s2.o1": "{0}",
  "0.event.blind_sql_injection.error.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다.",
  "0.event.blind_sql_injection.error.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "0.event.blind_xpath_injection.conditional.apiReqInfo": "{0}",
  "0.event.blind_xpath_injection.conditional.apiReqMsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.blind_xpath_injection.conditional.apireqinfo": "{0}",
  "0.event.blind_xpath_injection.conditional.apireqmsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.blind_xpath_injection.error.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.blind_xpath_injection.error.attack.s0.o1": "{0}",
  "0.event.blind_xpath_injection.error.attack.s1.o0": "공격 대상 페이지의 모든 {0} 요소에 대하여 다음과 같이 입력했습니다.",
  "0.event.blind_xpath_injection.error.attack.s1.o1": "{0}",
  "0.event.blind_xpath_injection.error.attack.s2.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "0.event.blind_xpath_injection.error.result.s0.o0": "이벤트 수행 후, 공격 대상 페이지의 DOM에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.blind_xpath_injection.error.result.s0.o1": "{0}",
  "0.event.blind_xpath_injection.error.result.s1.o0": "분석 수행 결과, XPath 표현식 관련 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "0.event.blind_xpath_injection.error.result.s1.o1": "따라서 수행한 이벤트로 인해 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 XPath 표현식 관련 정보를 수집할 수 있습니다.",
  "0.event.blind_xpath_injection.error.result.s2.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.blind_xpath_injection.error.result.s2.o1": "{0}",
  "0.event.blind_xpath_injection.error.solution.s0.o0": "XPath 표현식으로 인한 오류가 발생한 경우, XPath 표현식을 사용했는지 알 수 없도록 오류 메시지의 내용을 조정해야 합니다.",
  "0.event.blind_xpath_injection.error.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "0.event.broken_skip_link.broken.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.broken_skip_link.broken.attack.s0.o1": "{0}",
  "0.event.broken_skip_link.broken.attack.s2.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.broken_skip_link.broken.attack.s3.o0": "분석 대상 페이지에서 건너뛰기 링크를 탐색했습니다.",
  "0.event.broken_skip_link.broken.attack.s4.o0": "탐색한 건너뛰기 링크와 연결된 요소를 탐색했습니다.",
  "0.event.broken_skip_link.broken.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.broken_skip_link.broken.result.s1.o0": "분석 대상 페이지에서 건너뛰기 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.broken_skip_link.broken.result.s1.o1": "{0}",
  "0.event.broken_skip_link.broken.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.event.broken_skip_link.broken.result.s2.o1": "{0}",
  "0.event.broken_skip_link.broken.result.s3.o0": "분석 대상 페이지의 {0} 속성 값 또는 {1} 속성 값에 다음과 같은 요소가 존재하지 않습니다.",
  "0.event.broken_skip_link.broken.result.s3.o1": "{0}",
  "0.event.broken_skip_link.broken.result.s4.o0": "해당 요소가 없으므로 분석 대상 페이지의 건너뛰기 링크와 연결한 요소가 존재하지 않습니다.",
  "0.event.broken_skip_link.broken.solution.s0.o0": "건너뛰기 링크와 연결할 요소의 {0} 속성 값 또는 {1} 속성 값을 다음과 같이 설정하세요.",
  "0.event.broken_skip_link.broken.solution.s0.o1": "{0}",
  "0.event.command_injection.conditional.apiReqInfo": "{0}",
  "0.event.command_injection.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.command_injection.conditional.apireqinfo": "{0}",
  "0.event.command_injection.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.command_injection.os.attack.s0.o0": "운영 체제 명령어 삽입 취약점은 웹 애플리케이션에서 사용자 입력을 운영 체제 명령문에 사용하여 공격자가 비정상적이고 위험한 운영 체제 명령어를 실행할 수 있는 취약점입니다.",
  "0.event.command_injection.os.attack.s1.o0": "운영 체제 명령어 삽입 취약점이 존재하는지 확인하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.command_injection.os.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.command_injection.os.attack.s3.o0": "{0}",
  "0.event.command_injection.os.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "0.event.command_injection.os.attack.s5.o0": "{0}",
  "0.event.command_injection.os.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.command_injection.os.attack.s7.o0": "{0}",
  "0.event.command_injection.os.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.command_injection.os.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 명령 실행 결과를 발견했습니다.",
  "0.event.command_injection.os.result.s2.o0": "{0}",
  "0.event.command_injection.os.result.s3.o0": "해당 내용을 통해 {0} 명령이 실행되었음을 확인했습니다.",
  "0.event.command_injection.os.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.command_injection.os.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.command_injection.os.solution.s1.o0": "외부 입력값이 포함된 운영 체제 명령문을 실행하는 API를 사용할 때 외부 입력값에 대한 검증이 필요합니다.",
  "0.event.command_injection.os.solution.s2.o0": "각 운영 체제에서는 외부 입력값에 대해 다음과 같은 검증 및 필터링을 수행해야 합니다.",
  "0.event.command_injection.os.solution.s3.o0": "{0} 계열 운영 체제의 경우, 다음과 같이 검증 및 필터링을 수행해야 합니다.",
  "0.event.command_injection.os.solution.s4.o0": "{0}",
  "0.event.command_injection.os.solution.s5.o0": "{0} 계열 운영 체제의 경우, 다음과 같이 검증 및 필터링을 수행해야 합니다.",
  "0.event.command_injection.os.solution.s6.o0": "{0}",
  "0.event.command_injection.os.solution.s7.o0": "또한 권한이 없는 사용자의 경우, 명령문 실행이 가능한 API 사용을 제한해야 합니다.",
  "0.event.controllable_form_action.action.attack.s0.o0": "조작 가능한 폼 액션 취약점은 폼 태그의 액션 속성값 구성에 있어 사용자 입력을 별도의 필터링 작업 없이 직접적으로 사용하는 취약점입니다.",
  "0.event.controllable_form_action.action.attack.s1.o0": "조작 가능한 폼 액션 취약점이 존재하는지 확인하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.controllable_form_action.action.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.controllable_form_action.action.attack.s3.o0": "{0}",
  "0.event.controllable_form_action.action.attack.s4.o0": "탐색 결과, 다음과 같은 공격 대상 요소를 탐색했습니다.",
  "0.event.controllable_form_action.action.attack.s5.o0": "{0}",
  "0.event.controllable_form_action.action.attack.s6.o0": "공격 대상에 대하여 다음과 같은 문자열을 입력했습니다.",
  "0.event.controllable_form_action.action.attack.s7.o0": "{0}",
  "0.event.controllable_form_action.action.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.controllable_form_action.action.attack.s9.o0": "{0}",
  "0.event.controllable_form_action.action.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.controllable_form_action.action.result.s1.o0": "이벤트 수행 결과, DOM에서 {0} 속성을 가지는 폼 태그를 발견했으며, 해당 속성값은 다음과 같습니다.",
  "0.event.controllable_form_action.action.result.s2.o0": "{0}",
  "0.event.controllable_form_action.action.result.s3.o0": "해당 {0} 속성값은 공격 시도 도중 입력한 값과 일치합니다. 따라서 폼 태그의 {1} 속성값을 구성할 때 사용자 입력을 직접적으로 사용하게 됩니다.",
  "0.event.controllable_form_action.action.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 조작 가능한 폼 액션 취약점이 존재함을 확인했습니다.",
  "0.event.controllable_form_action.action.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.controllable_form_action.action.solution.s1.o0": "폼 태그의 액션 속성값을 구성할 때 사용자 입력을 사용하지 않아야 합니다.",
  "0.event.controllable_form_action.action.solution.s2.o0": "사용자 입력을 사용해야 하는 경우, 반드시 해당 값에 대한 검증 및 필터링을 수행해야 합니다.",
  "0.event.controllable_form_action.conditional.apiReqInfo": "{0}",
  "0.event.controllable_form_action.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.controllable_form_action.conditional.apireqinfo": "{0}",
  "0.event.controllable_form_action.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.controllable_reference.attr.attack.s0.o0": "조작 가능한 참조 취약점은 특정 태그의 참조 위치 속성값을 구성할 때 사용자 입력을 별도의 필터링 작업 없이 직접적으로 사용하는 취약점입니다.",
  "0.event.controllable_reference.attr.attack.s0.o1": "해당 취약점은 {0}, {1} 태그 등의 참조 위치 속성인 {2}, {3} 속성값을 사용하는 경우에 발생할 수 있습니다.",
  "0.event.controllable_reference.attr.attack.s1.o0": "조작 가능한 참조 취약점이 존재하는지 확인하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.controllable_reference.attr.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.controllable_reference.attr.attack.s3.o0": "{0}",
  "0.event.controllable_reference.attr.attack.s4.o0": "탐색 결과, 다음과 같은 공격 대상 요소를 탐색했습니다.",
  "0.event.controllable_reference.attr.attack.s5.o0": "{0}",
  "0.event.controllable_reference.attr.attack.s6.o0": "공격 대상에 대하여 다음과 같은 문자열을 입력했습니다.",
  "0.event.controllable_reference.attr.attack.s7.o0": "{0}",
  "0.event.controllable_reference.attr.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.controllable_reference.attr.attack.s9.o0": "{0}",
  "0.event.controllable_reference.attr.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.controllable_reference.attr.result.s1.o0": "이벤트 수행 결과, DOM에서 {0} 속성을 가지는 {1} 태그를 발견했으며, 해당 속성값은 다음과 같습니다.",
  "0.event.controllable_reference.attr.result.s2.o0": "{0}",
  "0.event.controllable_reference.attr.result.s3.o0": "해당 속성값은 공격 시도 도중 입력한 값과 일치합니다. 따라서 해당 태그의 속성값을 구성할 때 사용자 입력을 직접적으로 사용하게 됩니다.",
  "0.event.controllable_reference.attr.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 조작 가능한 참조 취약점이 존재함을 확인했습니다.",
  "0.event.controllable_reference.attr.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.controllable_reference.attr.solution.s1.o0": "태그의 참조 속성값을 구성할 때 사용자 입력을 사용하지 않아야 합니다.",
  "0.event.controllable_reference.attr.solution.s2.o0": "사용자 입력을 사용해야 하는 경우, 반드시 해당 값에 대한 검증 및 필터링을 수행해야 합니다.",
  "0.event.controllable_reference.conditional.apiReqInfo": "{0}",
  "0.event.controllable_reference.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.controllable_reference.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.cookie_missing_httponly_attribute.missing.attack.s0.o0": "로그인 후 세션 쿠키의 HttpOnly 속성을 확인합니다.",
  "0.event.cookie_missing_httponly_attribute.missing.result.s0.o0": "아래와 같은 세션 쿠키의 값이 확인되었습니다.",
  "0.event.cookie_missing_httponly_attribute.missing.result.s0.o1": "{0}",
  "0.event.cookie_missing_httponly_attribute.missing.solution.s0.o0": "세션 쿠키에 HttpOnly 속성을 추가해야 합니다. 이를 통해 클라이언트 측 스크립트가 쿠키에 접근하지 못하도록 하여 잠재적인 XSS 공격으로부터 보호할 수 있습니다.",
  "0.event.csrf.formWithoutToken.attack.s0.o0": "크로스 사이트 HTTP 요청위조 취약점은 특정 사용자의 브라우저에서 해당 사용자의 권한을 사용하여, 해당 사용자로 하여금 공격자가 원하는 행동이나 기능을 위한 HTTP 요청을 보내도록 강제할 수 있는 취약점입니다.",
  "0.event.csrf.formWithoutToken.attack.s0.o1": "만약 임의의 폼 태그에 크로스 사이트 HTTP 요청위조 취약점 방지를 위한 동기화 토큰이 없는 경우, 공격자는 해당 폼 태그를 사용하여 크로스 사이트 HTTP 요청 위조 공격을 시도할 수 있습니다.",
  "0.event.csrf.formWithoutToken.attack.s1.o0": "크로스 사이트 HTTP 요청 변조 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.csrf.formWithoutToken.attack.s2.o0": "페이지 내부의 요소 중 특정 {0} 요소에 적절한 CSRF 토큰이 존재하는지를 검사했습니다.",
  "0.event.csrf.formWithoutToken.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.csrf.formWithoutToken.result.s1.o0": "검사 대상 {0} 웹 페이지 요소는 다음과 같습니다.",
  "0.event.csrf.formWithoutToken.result.s2.o0": "{0}",
  "0.event.csrf.formWithoutToken.result.s3.o0": "검사 대상 {0} 웹 페이지 요소에 포함된 다음과 같은 {1} 웹 페이지 요소를 발견했습니다.",
  "0.event.csrf.formWithoutToken.result.s4.o0": "{0}",
  "0.event.csrf.formWithoutToken.result.s5.o0": "위의 모든 {0} 웹 페이지 요소에서 적절한 CSRF 토큰을 발견할 수 없었습니다.",
  "0.event.csrf.formWithoutToken.result.s6.o0": "검사 결과, 크로스 사이트 HTTP 요청위조 취약점이 존재함을 확인했습니다.",
  "0.event.csrf.formWithoutToken.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.csrf.formWithoutToken.solution.s1.o0": "크로스 사이트 HTTP 요청 변조 공격의 방지를 위해 {0} 요소를 사용할 때 CSRF 토큰을 추가하는 것이 중요합니다.",
  "0.event.csrf.formWithoutToken.solution.s1.o1": "서버에서는 CSRF 토큰을 사용하여 모든 HTTP 요청에 대하여 검증을 수행할 수 있습니다.",
  "0.event.csrf.formWithoutToken.solution.s2.o0": "적절한 CSRF 토큰의 생성 및 이용은 다음을 참고하세요.",
  "0.event.csrf.formWithoutToken.solution.s3.o0": "CSRF 토큰의 생성은 세션 별로 발생하고, 토큰 값으로 예측하기 어려운 난수를 사용해야 합니다.",
  "0.event.csrf.formWithoutToken.solution.s4.o0": "CSRF 토큰은 {0} 요소 내에 '{1}' 처럼 일반적인 이름을 가지는 {2} 필드로서 추가하여 사용하는 것이 좋습니다.",
  "0.event.csrf.formWithoutToken.solution.s5.o0": "CSRF 토큰의 노출은 보안상 바람직하지 않으며, 가능하면 {0} 방식 HTTP 요청에만 사용해야 합니다. 따라서 가능한 모든 {1} 방식 HTTP 요청을 {2} 방식 HTTP 요청으로 우회하는 것이 좋습니다.",
  "0.event.csrf.formWithoutToken.solution.s6.o0": "CSRF 토큰의 사용 예시는 다음과 같습니다.",
  "0.event.csrf.formWithoutToken.solution.s7.o0": "{0}",
  "0.event.csrf.formwithouttoken.attack.s0.o0": "크로스 사이트 HTTP 요청위조 취약점은 특정 사용자의 브라우저에서 해당 사용자의 권한을 사용하여, 해당 사용자로 하여금 공격자가 원하는 행동이나 기능을 위한 HTTP 요청을 보내도록 강제할 수 있는 취약점입니다.",
  "0.event.csrf.formwithouttoken.attack.s0.o1": "만약 임의의 폼 태그에 크로스 사이트 HTTP 요청위조 취약점 방지를 위한 동기화 토큰이 없는 경우, 공격자는 해당 폼 태그를 사용하여 크로스 사이트 HTTP 요청 위조 공격을 시도할 수 있습니다.",
  "0.event.csrf.formwithouttoken.attack.s1.o0": "크로스 사이트 HTTP 요청 변조 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.csrf.formwithouttoken.attack.s2.o0": "페이지 내부의 요소 중 특정 {0} 요소에 적절한 CSRF 토큰이 존재하는지를 검사했습니다.",
  "0.event.csrf.formwithouttoken.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.csrf.formwithouttoken.result.s1.o0": "검사 대상 {0} 웹 페이지 요소는 다음과 같습니다.",
  "0.event.csrf.formwithouttoken.result.s2.o0": "{0}",
  "0.event.csrf.formwithouttoken.result.s3.o0": "검사 대상 {0} 웹 페이지 요소에 포함된 다음과 같은 {1} 웹 페이지 요소를 발견했습니다.",
  "0.event.csrf.formwithouttoken.result.s4.o0": "{0}",
  "0.event.csrf.formwithouttoken.result.s5.o0": "위의 모든 {0} 웹 페이지 요소에서 적절한 CSRF 토큰을 발견할 수 없었습니다.",
  "0.event.csrf.formwithouttoken.result.s6.o0": "검사 결과, 크로스 사이트 HTTP 요청위조 취약점이 존재함을 확인했습니다.",
  "0.event.csrf.formwithouttoken.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.csrf.formwithouttoken.solution.s1.o0": "크로스 사이트 HTTP 요청 변조 공격의 방지를 위해 {0} 요소를 사용할 때 CSRF 토큰을 추가하는 것이 중요합니다.",
  "0.event.csrf.formwithouttoken.solution.s1.o1": "서버에서는 CSRF 토큰을 사용하여 모든 HTTP 요청에 대하여 검증을 수행할 수 있습니다.",
  "0.event.csrf.formwithouttoken.solution.s2.o0": "적절한 CSRF 토큰의 생성 및 이용은 다음을 참고하세요.",
  "0.event.csrf.formwithouttoken.solution.s3.o0": "CSRF 토큰의 생성은 세션 별로 발생하고, 토큰 값으로 예측하기 어려운 난수를 사용해야 합니다.",
  "0.event.csrf.formwithouttoken.solution.s4.o0": "CSRF 토큰은 {0} 요소 내에 '{1}' 처럼 일반적인 이름을 가지는 {2} 필드로서 추가하여 사용하는 것이 좋습니다.",
  "0.event.csrf.formwithouttoken.solution.s5.o0": "CSRF 토큰의 노출은 보안상 바람직하지 않으며, 가능하면 {0} 방식 HTTP 요청에만 사용해야 합니다. 따라서 가능한 모든 {1} 방식 HTTP 요청을 {2} 방식 HTTP 요청으로 우회하는 것이 좋습니다.",
  "0.event.csrf.formwithouttoken.solution.s6.o0": "CSRF 토큰의 사용 예시는 다음과 같습니다.",
  "0.event.csrf.formwithouttoken.solution.s7.o0": "{0}",
  "0.event.custom.active_custom.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.custom.active_custom.attack.s0.o1": "{0}",
  "0.event.custom.active_custom.attack.s1.o0": "공격 대상 페이지의 모든 {0} 요소에 대하여 다음과 같이 입력했습니다.",
  "0.event.custom.active_custom.attack.s1.o1": "{0}",
  "0.event.custom.active_custom.attack.s1.o2": "입력한 공격 문자열은 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.custom.active_custom.attack.s2.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "0.event.custom.active_custom.result.s0.o0": "이벤트 수행 후, 공격 대상 페이지의 DOM에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.custom.active_custom.result.s0.o1": "{0}",
  "0.event.custom.active_custom.result.s0.o2": "공격 대상 페이지의 DOM에서 해당 문자열의 위치는 {0}입니다.",
  "0.event.custom.active_custom.result.s1.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "0.event.custom.conditional.apiReqInfo": "{0}",
  "0.event.custom.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.custom.conditional.apireqinfo": "{0}",
  "0.event.custom.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.custom.passive_custom.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.custom.passive_custom.attack.s0.o1": "{0}",
  "0.event.custom.passive_custom.result.s0.o0": "공격 대상 페이지의 DOM에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.custom.passive_custom.result.s0.o1": "{0}",
  "0.event.custom.passive_custom.result.s0.o2": "공격 대상 페이지의 DOM에서 해당 문자열의 위치는 {0}입니다.",
  "0.event.custom.passive_custom.result.s1.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "0.event.dacg_npm.conditional.alternative": "사용 중인 라이브러리 대신 다른 라이브러리를 사용하거나, 해당 라이브러리의 취약점이 발생 가능한 기능을 사용하지 않아야 합니다.",
  "0.event.dacg_npm.conditional.authentication_bypass": "해당 라이브러리 버전에는 인증 우회 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.authentication_bypass_description": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.authentication_bypass_effect": "공격자는 해당 취약점을 이용하여 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.authorization_bypass": "해당 라이브러리 버전에는 인가 우회 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.authorization_bypass_description": "인가 우회 취약점은 필요한 인가 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.authorization_bypass_effect": "공격자는 해당 취약점을 이용하여 권한이 없는 동작을 수행할 수 있습니다.",
  "0.event.dacg_npm.conditional.buffer_overflow": "해당 라이브러리 버전에는 버퍼 오버플로우 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.buffer_overflow_description": "버퍼 오버플로우 취약점은 개발자가 지정한 버퍼 위치를 벗어난 위치에 접근 및 수정이 가능한 취약점입니다.",
  "0.event.dacg_npm.conditional.buffer_overflow_effect": "공격자는 해당 취약점을 이용하여 개발자가 의도하지 않은 데이터를 버퍼에 덮어쓸 수 있으며, 대상 애플리케이션의 특정 값 또는 흐름 제어 등을 조작할 수 있습니다.",
  "0.event.dacg_npm.conditional.clickjacking": "해당 라이브러리 버전에는 클릭잭킹 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.clickjacking_description": "클릭잭킹 취약점은 공격자가 임베디드 코드 혹은 스크립트 등을 사용자가 알 수 없도록 실행시킴으로써, 사용자로 하여금 실제 클릭한 대상이 아닌 다른 대상을 클릭하도록 할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.clickjacking_effect": "공격자는 해당 취약점을 이용하여 사용자의 민감한 정보 혹은 컴퓨터의 제어권을 획득할 수 있습니다.",
  "0.event.dacg_npm.conditional.code_injection": "해당 라이브러리 버전에는 코드 삽입 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.code_injection_description": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.code_injection_effect": "공격자는 해당 취약점을 이용하여 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.command_injection": "해당 라이브러리 버전에는 운영 체제 명령어 삽입 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.command_injection_description": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm.conditional.command_injection_effect": "공격자는 해당 취약점을 이용하여 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm.conditional.cors_bypass": "해당 라이브러리 버전에는 교차 출처 리소스 공유 정책 우회 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.cors_bypass_description": "교차 출처 리소스 공유 정책 우회 취약점은 교차 출처 리소스 공유 정책을 우회할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.cors_bypass_effect": "공격자는 해당 취약점을 이용하여 교차 출처 리소스 공유 정책을 우회할 수 있으며, 외부의 위험한 코드의 삽입 등이 가능합니다.",
  "0.event.dacg_npm.conditional.crlf_injection": "해당 라이브러리 버전에는 CRLF 삽입 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.crlf_injection_description": "CRLF 삽입 취약점은 특정 요청의 매개변수 등을 통해 CRLF를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.crlf_injection_effect": "공격자는 해당 취약점을 이용하여 서버의 응답을 조작할 수 있으며, 사용자의 정보(세션, 쿠키 등)의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.csp_bypass": "해당 라이브러리 버전에는 콘텐츠 보안 정책 우회 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.csp_bypass_description": "콘텐츠 보안 정책 우회 취약점은 특정 사이트에서 불러올 수 있는 리소스의 위치와 타입을 제한하는 콘텐트 보안 정책을 무력화할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.csp_bypass_effect": "공격자는 해당 취약점을 이용하여 제한된 타입 혹은 위치의 리소스를 대상 사이트로 불러와 영향을 미칠 수 있으며, 사용자의 정보(세션, 쿠키 등)의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.csrf": "해당 라이브러리 버전에는 크로스 사이트 요청 위조(CSRF) 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.csrf_description": "크로스 사이트 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.csrf_effect": "공격자는 해당 취약점을 이용하여 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm.conditional.deserialization_of_untrusted_data": "해당 라이브러리 버전에는 신뢰할 수 없는 데이터 비직렬화 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.deserialization_of_untrusted_data_description": "신뢰할 수 없는 데이터 비직렬화 취약점은 충분한 검증 없이 특정 데이터를 비직렬화하는 취약점입니다.",
  "0.event.dacg_npm.conditional.deserialization_of_untrusted_data_effect": "공격자는 해당 취약점을 이용하여 대상 애플리케이션이 올바르지 않은 형태의 데이터를 비직렬화하도록 강제할 수 있으며, 이를 통해 애플리케이션의 의도하지 않은 동작을 발생시킬 수 있습니다.",
  "0.event.dacg_npm.conditional.directory_traversal": "해당 라이브러리 버전에는 경로 조작 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.directory_traversal_description": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm.conditional.directory_traversal_effect": "공격자는 해당 취약점을 이용하여 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.dos": "해당 라이브러리 버전에는 서비스 거부(DoS) 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.dos_description": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm.conditional.dos_effect": "공격자는 해당 취약점을 이용하여 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm.conditional.embedded_malicious_code": "해당 라이브러리 버전에는 내장된 악성코드 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.embedded_malicious_code_description": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm.conditional.embedded_malicious_code_effect": "공격자는 해당 취약점을 이용하여 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm.conditional.eval_injection": "해당 라이브러리 버전에는 Eval 삽입 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.eval_injection_description": "Eval 삽입 취약점은 사용자가 입력한 값을 별도의 검증 과정 없이 Eval() 함수의 인자로서 사용할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.eval_injection_effect": "공격자는 해당 취약점을 이용하여 공격자가 원하는 스크립트를 실행시킬 수 있으며, 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm.conditional.file_upload": "해당 라이브러리 버전에는 파일 업로드 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.file_upload_description": "파일 업로드 취약점은 충분한 검증 단계 없이 파일 업로드를 허용하는 취약점입니다.",
  "0.event.dacg_npm.conditional.file_upload_effect": "공격자는 해당 취약점을 이용하여 서버에 악영향을 끼칠 수 있는 파일을 업로드할 수 있습니다.",
  "0.event.dacg_npm.conditional.heap_based_buffer_overflow": "해당 라이브러리 버전에는 힙 기반 버퍼 오버플로우 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.heap_based_buffer_overflow_description": "힙 기반 버퍼 오버플로우 취약점은 힙에서 개발자가 지정한 버퍼 위치를 벗어난 위치에 접근 및 수정이 가능한 취약점입니다.",
  "0.event.dacg_npm.conditional.heap_based_buffer_overflow_effect": "공격자는 해당 취약점을 이용하여 개발자가 의도하지 않은 데이터를 힙 버퍼에 덮어쓸 수 있으며, 대상 애플리케이션의 특정 값 또는 흐름 제어 등을 조작할 수 있습니다.",
  "0.event.dacg_npm.conditional.http_whitelist_bypass": "해당 라이브러리 버전에는 HTTP 화이트리스트 우회 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.http_whitelist_bypass_description": "HTTP 화이트리스트 우회 취약점은 화이트리스트에 의거한 접속 제한 정책을 무력화할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.http_whitelist_bypass_effect": "공격자는 해당 취약점을 이용하여 접속이 제한된 특정 주소로 접속하고, 위험한 사이트로의 접속을 통해 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm.conditional.improper_certificate_validation": "해당 라이브러리 버전에는 부적절한 인증서 검증 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.improper_certificate_validation_description": "부적절한 인증서 검증 취약점은 인증서에 대한 검증 과정이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm.conditional.improper_certificate_validation_effect": "공격자는 해당 취약점을 이용하여 인증 및 인가 우회, 통신 데이터 탈취 및 조작 등이 가능합니다.",
  "0.event.dacg_npm.conditional.improper_input_validation": "해당 라이브러리 버전에는 부적절한 입력값 검증 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.improper_input_validation_description": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm.conditional.improper_input_validation_effect": "공격자는 해당 취약점을 이용하여 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm.conditional.improper_privilege_management": "해당 라이브러리 버전에는 부적절한 권한 관리 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.improper_privilege_management_description": "부적절한 권한 관리 취약점은 특정 사용자에 대한 권한 관리가 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm.conditional.improper_privilege_management_effect": "공격자는 해당 취약점을 이용하여 제한된 정보로의 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.improper_verification_of_cryptographic_signature": "해당 라이브러리 버전에는 부적절한 디지털 서명 검증 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.improper_verification_of_cryptographic_signature_description": "부적절한 디지털 서명 검증 취약점은 특정 파일에 대한 디지털 서명 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm.conditional.improper_verification_of_cryptographic_signature_effect": "공격자는 해당 취약점을 이용하여 위험한 파일을 업로드할 수 있으며, 해당 파일을 통한 중요 정보 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.improperly_implemented_security_check_for_standard": "해당 라이브러리 버전에는 표준에 대한 부적절한 보안 검증 구현 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.improperly_implemented_security_check_for_standard_description": "표준에 대한 부적절한 보안 검증 구현 취약점은 표준 알고리즘, 프로토콜, 기술 설계 등에 해당하는 보안 관련 검사 로직을 올바르게 구현하지 않은 취약점입니다.",
  "0.event.dacg_npm.conditional.improperly_implemented_security_check_for_standard_effect": "공격자는 해당 취약점을 이용하여 민감한 정보로의 접근 및 탈취, 서버의 비정상 동작 강제, 인증 및 인가 우회 등이 가능합니다.",
  "0.event.dacg_npm.conditional.information_exposure": "해당 라이브러리 버전에는 정보 노출 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.information_exposure_description": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.information_exposure_effect": "공격자는 해당 취약점을 이용하여 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm.conditional.information_exposure_through_log_files": "해당 라이브러리 버전에는 로그 파일을 통한 정보 노출 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.information_exposure_through_log_files_description": "로그 파일을 통한 정보 노출 취약점은 로그 파일이 노출됨으로 인하여 민감한 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.information_exposure_through_log_files_effect": "공격자는 해당 취약점을 이용하여 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm.conditional.insecure_configuration": "해당 라이브러리 버전에는 안전하지 않은 설정 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.insecure_configuration_description": "안전하지 않은 설정 취약점은 서버 또는 애플리케이션 등의 설정값에 의해 외부의 공격을 허용하는 취약점입니다.",
  "0.event.dacg_npm.conditional.insecure_configuration_effect": "공격자는 해당 취약점을 이용하여 서버 또는 애플리케이션의 동작을 제어하거나 민감한 정보를 탈취 및 조작할 수 있습니다.",
  "0.event.dacg_npm.conditional.insecure_credential_usage": "해당 라이브러리 버전에는 안전하지 않은 인증서 사용 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.insecure_credential_usage_description": "안전하지 않은 인증서 사용 취약점은 인증서를 저장하거나 전송할 때 충분한 보안이 보장되지 않은 경우에 발생하는 취약점입니다.",
  "0.event.dacg_npm.conditional.insecure_credential_usage_effect": "공격자는 해당 취약점을 이용하여 인증서에 대한 접근 및 탈취가 가능합니다.",
  "0.event.dacg_npm.conditional.insecure_hashing_algorithm": "해당 라이브러리 버전에는 안전하지 않은 해싱 알고리즘 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.insecure_hashing_algorithm_description": "안전하지 않은 해싱 알고리즘 취약점은 해당 라이브러리에서 사용 중인 해싱 함수가 중복 해시 값을 생성할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.insecure_hashing_algorithm_effect": "공격자는 해당 취약점을 이용하여 특정 값을 입력하는 대신 동일한 해시 값을 가지는 다른 값을 대입할 수 있으며, 이를 통해 인증 과정을 통과할 수 있습니다.",
  "0.event.dacg_npm.conditional.insecure_temporary_file": "해당 라이브러리 버전에는 안전하지 않은 임시 파일 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.insecure_temporary_file_description": "안전하지 않은 임시 파일 취약점은 서버의 중요 정보가 포함된 임시 파일을 올바르게 처리하지 않는 취약점입니다.",
  "0.event.dacg_npm.conditional.insecure_temporary_file_effect": "공격자는 해당 취약점을 이용하여 중요 정보가 포함된 임시 파일의 내용을 열람할 수 있으며, 이를 통한 추가적인 공격이 가능합니다.",
  "0.event.dacg_npm.conditional.insufficient_comparison": "해당 라이브러리 버전에는 불충분한 비교 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.insufficient_comparison_description": "불충분한 비교 취약점은 적절하지 않은 비교 연산을 통해 의도하지 않은 결과 도출이 가능한 취약점입니다.",
  "0.event.dacg_npm.conditional.insufficient_comparison_effect": "공격자는 해당 취약점을 이용하여 비교 연산을 통한 검증 등을 우회할 수 있습니다.",
  "0.event.dacg_npm.conditional.jsonp_callback": "해당 라이브러리 버전에는 JSONP 콜백 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.jsonp_callback_description": "JSONP 콜백 취약점은 JSONP 콜백을 이용하여 사용자의 브라우저 및 Java Script 콘텍스트로의 접근 권한을 가질 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.jsonp_callback_effect": "공격자는 해당 취약점을 이용하여 사용자의 정보(세션, 쿠키 등)의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.ldap_injection": "해당 라이브러리 버전에는 LDAP 삽입 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.ldap_injection_description": "LDAP 삽입 취약점은 웹 애플리케이션에서 LDAP 문을 구성할 때 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.event.dacg_npm.conditional.ldap_injection_effect": "공격자는 해당 취약점을 이용하여 대상 애플리케이션 내부의 LDAP 구조를 조작할 수 있으며, 중요 정보를 탈취할 수 있습니다.",
  "0.event.dacg_npm.conditional.link_following": "해당 라이브러리 버전에는 링크 추적 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.link_following_description": "링크 추적 취약점은 링크를 사용하여 특정 파일에 대한 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm.conditional.link_following_effect": "공격자는 해당 취약점을 이용하여 접근이 제한된 파일의 내용 열람 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.mitm": "해당 라이브러리 버전에는 중간자 공격(MitM) 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.mitm_description": "중간자 공격(MitM) 취약점은 외부에서 네트워크 통신에 개입할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.mitm_effect": "공격자는 해당 취약점을 이용하여 통신 내용을 도청하거나 조작할 수 있습니다.",
  "0.event.dacg_npm.conditional.open_redirect": "해당 라이브러리 버전에는 신뢰할 수 없는 URL 주소로 자동접속 연결 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.open_redirect_description": "신뢰할 수 없는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm.conditional.open_redirect_effect": "공격자는 해당 취약점을 이용하여 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm.conditional.prototype_pollution": "해당 라이브러리 버전에는 프로토타입 변조 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.prototype_pollution_description": "프로토타입 변조 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.prototype_pollution_effect": "공격자는 해당 취약점을 이용하여 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm.conditional.redos": "해당 라이브러리 버전에는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.redos_description": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm.conditional.redos_effect": "공격자는 해당 취약점을 이용하여 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm.conditional.resources_downloaded_over_insecure_protocol": "해당 라이브러리 버전에는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.resources_downloaded_over_insecure_protocol_description": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm.conditional.resources_downloaded_over_insecure_protocol_effect": "공격자는 해당 취약점을 이용하여 외부로부터 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm.conditional.sandbox_bypass": "해당 라이브러리 버전에는 샌드박스 우회 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.sandbox_bypass_description": "샌드박스 우회 취약점은 제한된 샌드박스 환경을 벗어날 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.sandbox_bypass_effect": "공격자는 해당 취약점을 이용하여 샌드박스 외부로 영향을 미칠 수 있으며, 샌드박스 외부에 존재하는 정보에 대하여 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.sql_injection": "해당 라이브러리 버전에는 SQL 삽입 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.sql_injection_description": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm.conditional.sql_injection_effect": "공격자는 해당 취약점을 이용하여 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.symlink_following": "해당 라이브러리 버전에는 심볼릭 링크 추적 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.symlink_following_description": "심볼릭 링크 추적 취약점은 심볼릭 링크를 사용하여 특정 파일에 대한 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm.conditional.symlink_following_effect": "공격자는 해당 취약점을 이용하여 접근이 제한된 파일의 내용 열람 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.timing_attack": "해당 라이브러리 버전에는 타이밍 공격 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.timing_attack_description": "타이밍 공격 취약점은 문자열 등의 비교 도중 다른 부분을 발견하는 즉시 비교를 중단하는, 즉 비교 소요 '시간'에 차이가 발생하는 취약점입니다.",
  "0.event.dacg_npm.conditional.timing_attack_effect": "공격자는 해당 취약점을 이용하여 비교 소요 시간이 차이가 나는 것을 측정할 수 있으며, 최종적으로 비밀번호 등의 민감한 정보를 추정할 수 있습니다.",
  "0.event.dacg_npm.conditional.upgrade": "사용 중인 라이브러리의 버전을 {0}보다 최신 버전으로 교체해야 합니다.",
  "0.event.dacg_npm.conditional.use_of_insufficiently_random_values": "해당 라이브러리 버전에는 불충분한 난수값 사용 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.use_of_insufficiently_random_values_description": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm.conditional.use_of_insufficiently_random_values_effect": "공격자는 해당 취약점을 이용하여 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm.conditional.version_eq": "{0} 버전의 라이브러리는 해당 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.version_ge_le": "{0}보다 낮거나 같고 {1}보다 높거나 같은 버전의 라이브러리는 해당 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.version_ge_lt": "{0}보다 낮고 {1}보다 높거나 같은 버전의 라이브러리는 해당 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.version_gt_le": "{0}보다 낮거나 같고 {1}보다 높은 버전의 라이브러리는 해당 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.version_gt_lt": "{0}보다 낮고 {1}보다 높은 버전의 라이브러리는 해당 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.xas": "해당 라이브러리 버전에는 크로스 애플리케이션 스크립트(XAS) 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.xas_description": "크로스 애플리케이션 스크립트(XAS) 취약점은 특정 웹 애플리케이션에 대하여 임의의 값을 입력할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.xas_effect": "공격자는 해당 취약점을 이용하여 대상 애플리케이션이 의도하지 않은 동작을 하도록 강제할 수 있으며, 나아가 애플리케이션이 동작하는 환경의 높은 권한을 가진 상태로 주요 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.xml_injection": "해당 라이브러리 버전에는 XML 삽입 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.xml_injection_description": "XML 삽입 취약점은 임의의 XML 태그를 기존의 XML 구조 내부로 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.xml_injection_effect": "공격자는 해당 취약점을 이용하여 XML 구조를 조작할 수 있으며, 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.xss": "해당 라이브러리 버전에는 크로스 사이트 스크립트(XSS 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.xss_description": "크로스 사이트 스크립트(XSS 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm.conditional.xss_effect": "공격자는 해당 취약점을 이용하여 악성 스크립트를 주입 및 실행할 수 있으며, 사용자의 정보(세션, 쿠키 등)의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm.conditional.xxe_injection": "해당 라이브러리 버전에는 XML 외부 개체(XXE) 삽입 취약점이 존재합니다.",
  "0.event.dacg_npm.conditional.xxe_injection_description": "XML 외부 개체(XXE) 삽입 취약점은 XML 문서에서 충분한 검증 단계 없이 동적으로 외부 URL의 리소스(즉, 개체)를 포함하는 취약점입니다.",
  "0.event.dacg_npm.conditional.xxe_injection_effect": "공격자는 해당 취약점을 이용하여 민감한 정보의 탈취 또는 'Billion Laughs'와 같은 리소스 소모 혹은 서비스 거부 공격의 수행이 가능합니다.",
  "0.event.dacg_npm.version.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.dacg_npm.version.attack.s0.o1": "{0}",
  "0.event.dacg_npm.version.result.s0.o0": "공격 대상 페이지의 {0} 요소 {1}의 {2} 속성 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.dacg_npm.version.result.s0.o1": "{0}",
  "0.event.dacg_npm.version.result.s1.o0": "분석 수행 결과, 공격 대상 페이지에서 {0} 버전의 {1} 라이브러리를 사용하고 있음을 발견했습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__11xiaoli__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__11xiaoli__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__22lixian__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__22lixian__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__626__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__626__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__626__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__abaaso__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__abaaso__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__abaaso__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__actionhero__ge_13_0_0_lt_15_1_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__actionhero__ge_1_0_2_lt_4_0_0__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__adamvr_geoip_lite__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__address_rfc2822__lt_2_0_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s2.o0": "해당 라이브러리는 Arbitrary File Write via Archive Extraction (Zip Slip) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s3.o0": "Arbitrary File Write via Archive Extraction (Zip Slip) 취약점은 NO_VULNERABILITY_DESCRIPTION",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s4.o0": "Arbitrary File Write via Archive Extraction (Zip Slip) 취약점을 이용하여, 공격자는 NO_RESULT_DESCRIPTION",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 Arbitrary File Write via Archive Extraction(Zip Slip) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__adm_zip__lt_0_4_11__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__aegir__ge_12_0_0_lt_12_0_8__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__aerospike__lt_2_4_2__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ag_grid__ge_13_0_0_lt_14_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ag_grid__ge_3_3_0_lt_5_0_0_alpha_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ag_grid__lt_0_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__air_sdk__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__airbrake__le_0_3_8__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__alto_saxophone__lt_2_25_1__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__amqp_match__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__amqp_match__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__amqp_match__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__anarchy__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_2_30__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__ge_1_0_0_lt_1_5_0_beta_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 데이터 비직렬화 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.result.s3.o0": "신뢰되지 않는 데이터 비직렬화 취약점은 충분한 검증 없이 특정 데이터를 비직렬화하는 취약점입니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.result.s4.o0": "신뢰되지 않는 데이터 비직렬화 취약점을 이용하여, 공격자는 대상 애플리케이션이 올바르지 않은 형태의 데이터를 비직렬화하도록 강제할 수 있으며, 이를 통해 애플리케이션의 의도하지 않은 동작을 발생시킬 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 데이터 비직렬화 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__ge_1_2_19_lt_1_2_24__deserialization_of_untrusted_data.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__ge_1_3_0_lt_1_5_0_rc_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.result.s2.o0": "해당 라이브러리는 클릭잭킹 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.result.s3.o0": "클릭잭킹 취약점은 공격자가 임베디드 코드 혹은 스크립트 등을 사용자가 알 수 없도록 실행시킴으로써, 사용자로 하여금 실제 클릭한 대상이 아닌 다른 대상을 클릭하도록 할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.result.s4.o0": "클릭잭킹 취약점을 이용하여, 공격자는 사용자의 민감한 정보 혹은 컴퓨터의 제어권을 획득할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 클릭잭킹 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__ge_1_3_1_lt_1_5_0_beta_0__clickjacking.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.result.s2.o0": "해당 라이브러리는 콘텐츠 보안 정책 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.result.s3.o0": "콘텐츠 보안 정책 우회 취약점은 특정 사이트에서 불러올 수 있는 리소스의 위치와 타입을 제한하는 콘텐트 보안 정책을 무력화할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.result.s4.o0": "콘텐츠 보안 정책 우회 취약점을 이용하여, 공격자는 제한된 타입 혹은 위치의 리소스를 대상 사이트로 불러와 영향을 미칠 수 있으며, 사용자의 정보(세션, 쿠키 등)의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 콘텐츠 보안 정책 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__ge_1_5_0_lt_1_5_9__csp_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__le_1_1_5__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__le_1_1_5__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_1_5__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_2_2__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_3_0_rc_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_3_2__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_4_10__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_beta_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_5_0_rc_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.result.s2.o0": "해당 라이브러리는 JSONP 콜백 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.result.s3.o0": "JSONP 콜백 취약점은 JSONP 콜백을 이용하여 사용자의 브라우저 및 Java Script 콘텍스트로의 접근 권한을 가질 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.result.s4.o0": "JSONP 콜백 취약점을 이용하여, 공격자는 사용자의 정보(세션, 쿠키 등)의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 JSONP 콜백 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_6_1__jsonp_callback.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_6_7__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular__lt_1_6_9__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular_gettext__le_0_4_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_3__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular_http_server__lt_1_4_4__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__angular_redactor__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__angular_redactor__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__angular_redactor__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ansi2html__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ansi2html__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ansi2html__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__anywhere__lt_1_5_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__api_proxy__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__api_proxy__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__apk_parser2__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__apk_parser3__lt_0_1_3__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__apk_parser__lt_0_1_6__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__appium_chromedriver__lt_2_9_4__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__arcanist__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__arrayfire_js__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__aso_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__aso_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__asset_cache__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__asset_cache__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__assign_deep__lt_0_4_7__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__astronomia__lt_1_3_9__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__atob__lt_2_1_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__atom_node_module_installer__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__atropa_ide__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__atropa_ide__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__atropa_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__atropa_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__augustine__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__augustine__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__augustine__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.result.s2.o0": "해당 라이브러리는 부적절한 권한 관리 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.result.s3.o0": "부적절한 권한 관리 취약점은 특정 사용자에 대한 권한 관리가 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.result.s4.o0": "부적절한 권한 관리 취약점을 이용하여, 공격자는 제한된 정보로의 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 권한 관리 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__auth0_js__lt_8_12__1__improper_privilege_management.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_0_0__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__auth0_js__lt_9_3__1__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__auth0_lock__lt_11_0_0__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__awning__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__awning__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__awning__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__aws_lambda_multipart_parser__lt_0_1_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__babelcli__le_1_0_0__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__backbone__le_0_3_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__backbone__lt_0_5_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__badjs_sourcemap_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bae_nodejs__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__baryton_saxophone__lt_3_0_1__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__base64_url__lt_2_0_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__base64url__lt_3_0_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__basic_static__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__basic_static__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bassmaster__le_1_5_1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__binocular_lamp__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bionode_sra__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bittorrent_dht__lt_5_1_3__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bitty__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bitty__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bitty__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bkjs_wand__lt_0_3_2__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bl__ge_1_0_0_lt_1_0_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bl__lt_0_9_5__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bleach__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bleach__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__bleach__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bleach__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bleach__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__blocks__lt_0_3_5__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__boom__lt_0_3_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_alpha_lt_4_0_0_beta_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bootstrap__ge_4_0_0_lt_4_1_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bootstrap__lt_2_1_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bootstrap__lt_3_4_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bootstrap_markdown__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bootstrap_markdown__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bootstrap_tagsinput__le_0_8_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__botbait__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__botbait__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__botkit__lt_0_4_4__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__box2d_native__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__brace_expansion__lt_1_1_7__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__braces__lt_2_3_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bracket_template__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bracket_template__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bracket_template__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__brisket__le_0_33_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__broccoli_closure__lt_1_3_1__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__brunch__ge_1_7_0_lt_1_7_7__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bruteser__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bruteser__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bson__lt_1_0_5__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__btnode__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__btnode__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__btnode__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__bui__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__bui__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__bui__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__bui__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__bui__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__bui__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__bui__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__bui__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__bui__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__bui__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__bui__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__bui__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__bui__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__bui__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__bui__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__bui__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__butler_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__butler_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__buttle__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__buttle__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__buttle__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__buttle__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__buttle__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__buttle__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__byte__lt_1_4_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__byucslabsix__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__byucslabsix__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__c3__le_0_4_10__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__c3__le_0_4_10__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__caihong__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__caihong__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__caihong__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 입력값 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.result.s3.o0": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.result.s4.o0": "부적절한 입력값 검증 취약점을 이용하여, 공격자는 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 입력값 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__call__ge_2_0_1_lt_3_0_2__improper_input_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__calmquist_static_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__canvas_designer__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__canvas_designer__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__caolilinode1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__caolilinode1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__caolilinode__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__caolilinode__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cejs__lt_2_0_20180219__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__censorify_matt_shurtz__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__censorify_tanisjr__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__charset__lt_1_0_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__chatbyvista__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__chatbyvista__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__checkit__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__checkit__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__checkit__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__checkit__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__checkit__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cheerio__le_0_8_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__chromedriver126__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__chromedriver__lt_2_25_2__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__citation_js__lt_0_4_0_7__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__citeproc__lt_2_1_184__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__city_weather_abe__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__citypredict_whauwiller__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ckeditor_dev__ge_4_5_11_lt_4_9_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_4_8__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ckeditor_dev__lt_4_5_11__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__clamscan__lt_0_8_2__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__clang_extra__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__clean_css__lt_4_1_11__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.result.s2.o0": "해당 라이브러리는 링크 추적 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.result.s3.o0": "링크 추적 취약점은 링크를 사용하여 특정 파일에 대한 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.result.s4.o0": "링크 추적 취약점을 이용하여, 공격자는 접근이 제한된 파일의 내용 열람 및 조작이 가능합니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 링크 추적 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cli__lt_1_0_0__link_following.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__closure_util__lt_1_19_0__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__closurecompiler__lt_1_6_1__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cloudcmd__lt_9_1_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cloudpub_redis__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__clusterize_js__lt_0_3_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cmake__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__co_cli_installer__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cobalt_cli__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__codem_transcode__lt_0_5_0__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cofee_script__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cofeescript__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__coffe_script__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__coffescript__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__command_exists__lt_1_2_4__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__commentapp_stetsonwood__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__compromise__lt_11_5_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_4_0_lt_1_4_11__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__concat_stream__ge_1_5_0_lt_1_5_2__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__concat_stream__lt_1_3_2__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__concat_with_sourcemaps__lt_1_0_6__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__connect__ge_1_4_0_lt_2_0_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__connect__le_2_8_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__connect__le_2_8_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__connect_parse_php__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__console_io__le_2_2_13__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.result.s2.o0": "해당 라이브러리는 샌드박스 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.result.s3.o0": "샌드박스 우회 취약점은 제한된 샌드박스 환경을 벗어날 수 있는 취약점입니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.result.s4.o0": "샌드박스 우회 취약점을 이용하여, 공격자는 샌드박스 외부로 영향을 미칠 수 있으며, 샌드박스 외부에 존재하는 정보에 대하여 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 샌드박스 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__constantinople__lt_3_1_1__sandbox_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__content__ge_4_0_0_lt_4_0_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__content__lt_3_0_6__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__content__lt_3_0_6__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__content__lt_3_0_7__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__content__lt_3_0_7__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__content_type_parser__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__content_type_parser__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__content_type_parser__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 해싱 알고리즘 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.result.s3.o0": "안전하지 않은 해싱 알고리즘 취약점은 해당 라이브러리에서 사용 중인 해싱 함수가 중복 해시 값을 생성할 수 있는 취약점입니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.result.s4.o0": "안전하지 않은 해싱 알고리즘 취약점을 이용하여, 공격자는 특정 값을 입력하는 대신 동일한 해시 값을 가지는 다른 값을 대입할 수 있으며, 이를 통해 인증 과정을 통과할 수 있습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 안전하지 않은 해싱 알고리즘 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__contwidgetor__insecure_hashing_algorithm.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__converse_js__lt_3_3_3__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.result.s2.o0": "해당 라이브러리는 타이밍 공격 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.result.s3.o0": "타이밍 공격 취약점은 문자열 등의 비교 도중 다른 부분을 발견하는 즉시 비교를 중단하는, 즉 비교 소요 '시간'에 차이가 발생하는 취약점입니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.result.s4.o0": "타이밍 공격 취약점을 이용하여, 공격자는 비교 소요 시간이 차이가 나는 것을 측정할 수 있으며, 최종적으로 비밀번호 등의 민감한 정보를 추정할 수 있습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 타이밍 공격 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cookie_signature__lt_1_0_4__timing_attack.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_android__ge_4_0_0_lt_4_0_2__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_android__le_3_6_4__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.result.s2.o0": "해당 라이브러리는 HTTP 화이트리스트 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.result.s3.o0": "HTTP 화이트리스트 우회 취약점은 화이트리스트에 의거한 접속 제한 정책을 무력화할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.result.s4.o0": "HTTP 화이트리스트 우회 취약점을 이용하여, 공격자는 접속이 제한된 특정 주소로 접속하고, 위험한 사이트로의 접속을 통해 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 HTTP 화이트리스트 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__http_whitelist_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.result.s2.o0": "해당 라이브러리는 크로스 애플리케이션 스크립트(XAS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.result.s3.o0": "크로스 애플리케이션 스크립트(XAS) 취약점은 특정 웹 애플리케이션에 대하여 임의의 값을 입력할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.result.s4.o0": "크로스 애플리케이션 스크립트(XAS) 취약점을 이용하여, 공격자는 대상 애플리케이션이 의도하지 않은 동작을 하도록 강제할 수 있으며, 나아가 애플리케이션이 동작하는 환경의 높은 권한을 가진 상태로 주요 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 크로스 애플리케이션 스크립트(XAS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_5_1__xas.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_android__lt_3_7_2__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_android__lt_4_1_1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_android__lt_6_1_2__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.result.s2.o0": "해당 라이브러리는 인가 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.result.s3.o0": "인가 우회 취약점은 필요한 인가 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.result.s4.o0": "공격자는 인가 우회 취약점을 이용하여 권한이 없는 동작을 수행할 수 있습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인가 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__authorization_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_ios__ge_3_5_0_lt_4_0_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_ios__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_ios__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 설정 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.result.s3.o0": "안전하지 않은 설정 취약점은 서버 또는 애플리케이션 등의 설정값에 의해 외부의 공격을 허용하는 취약점입니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.result.s4.o0": "안전하지 않은 설정 취약점을 이용하여, 공격자는 서버 또는 애플리케이션의 동작을 제어하거나 민감한 정보를 탈취 및 조작할 수 있습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 안전하지 않은 설정 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_0_4_2__insecure_configuration.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.result.s2.o0": "해당 라이브러리는 CRLF 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.result.s3.o0": "CRLF 삽입 취약점은 특정 HTTP 요청의 매개변수 등을 통해 CRLF를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.result.s4.o0": "CRLF 삽입 취약점을 이용하여, 공격자는 서버의 HTTP 응답을 조작할 수 있으며, 사용자의 정보(세션, 쿠키 등)의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 CRLF 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_plugin_file_transfer__lt_1_3_0__crlf_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.result.s2.o0": "해당 라이브러리는 부적절한 권한 관리 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.result.s3.o0": "부적절한 권한 관리 취약점은 특정 사용자에 대한 권한 관리가 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.result.s4.o0": "부적절한 권한 관리 취약점을 이용하여, 공격자는 제한된 정보로의 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 권한 관리 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_plugin_inappbrowser__lt_0_3_2__improper_privilege_management.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cordova_plugin_ios_keychain__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__craft_ai_icons__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__crossbow_lang__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__crossbow_lang__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__crossenv__le_1_0_1__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__crud_file_server__lt_0_9_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.result.s2.o0": "해당 라이브러리는 교차 출처 리소스 공유 정책 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.result.s3.o0": "교차 출처 리소스 공유 정책 우회 취약점은 교차 출처 리소스 공유 정책을 우회할 수 있는 취약점입니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.result.s4.o0": "교차 출처 리소스 공유 정책 우회 취약점을 이용하여, 공격자는 교차 출처 리소스 공유 정책을 우회하여 외부의 위험한 코드의 삽입 등이 가능합니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 교차 출처 리소스 공유 정책 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__crumb__lt_3_0_0__cors_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__crumb__lt_4_0_2__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cryptiles__lt_4_1_2__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__crypto_browserify__lt_2_1_11__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cs360getcity__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cs360getcity__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.result.s2.o0": "해당 라이브러리는 타이밍 공격 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.result.s3.o0": "타이밍 공격 취약점은 문자열 등의 비교 도중 다른 부분을 발견하는 즉시 비교를 중단하는, 즉 비교 소요 '시간'에 차이가 발생하는 취약점입니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.result.s4.o0": "타이밍 공격 취약점을 이용하여, 공격자는 비교 소요 시간이 차이가 나는 것을 측정할 수 있으며, 최종적으로 비밀번호 등의 민감한 정보를 추정할 수 있습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 타이밍 공격 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__csrf_lite__le_0_1_1__timing_attack.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cuciuci__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cuciuci__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cue_sdk_node__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cuiaiguang__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__curses__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cxy__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cxy__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cxy__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cyber_js__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cyber_js__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cypserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cypserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__cyro__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__cyro__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__cyro__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__d3_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dalek_browser_chrome__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dalek_browser_chrome_canary__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dalek_browser_ie__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dalek_browser_ie_canary__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dasafio__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dasafio__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__datachannel_client__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__datachannel_client__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__datatables__ge_1_10_1_lt_1_10_10__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__datatables__le_1_10_8__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__datatype_expansion__lt_0_3_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dcdcdcdcdc__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dcserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dcserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__deap__lt_1_0_1__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__deasyncp__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__debug__ge_3_0_0_lt_3_1_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__debug__lt_2_6_9__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__decamelize__ge_1_1_0_lt_1_1_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__deckardcain__lt_0_3_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__deep_extend__lt_0_5_1__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__defaults_deep__lt_0_2_4__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__der_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__der_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__der_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__desafio__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__desafio__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__desafio__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dgard8_lab6__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__diff__ge_3_0_0_lt_3_5_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dijit__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dijit__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dijit__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dijit__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dijit__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dilu__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dilu__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dilu__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dirty_json__lt_0_5_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__discordi_js__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dmmcquay_lab6__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dns_sync__lt_0_1_1__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dns_sync__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dns_sync__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dns_sync__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__ge_0_4__1_lt_0_4_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__ge_1_0__1_lt_1_0_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__ge_1_1__1_lt_1_1_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__ge_1_2__1_lt_1_2_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__ge_1_3__1_lt_1_3_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__ge_1_4__1_lt_1_4_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__le_1_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__lt_1_1__1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dojo__lt_1_4_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dompurify__ge_0_4_0_lt_0_6_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dompurify__ge_0_7_3_lt_0_8_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 설정 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.result.s3.o0": "안전하지 않은 설정 취약점은 서버 또는 애플리케이션 등의 설정값에 의해 외부의 공격을 허용하는 취약점입니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.result.s4.o0": "안전하지 않은 설정 취약점을 이용하여, 공격자는 서버 또는 애플리케이션의 동작을 제어하거나 민감한 정보를 탈취 및 조작할 수 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 안전하지 않은 설정 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dompurify__lt_0_3__1__insecure_configuration.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dompurify__lt_0_4_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dompurify__lt_0_8_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__droppy__lt_3_5_0__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ducktype__lt_1_2_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dustjs_linkedin__le_2_5_1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dwebp_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__dylmomo__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__dylmomo__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__earlybird__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__earlybird__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__easy_node_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__easy_node_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__easy_router__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__easy_router__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__easyquick__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__easyquick__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__easyxdm__lt_2_4_19__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ec2_price__lt_0_5_0__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ecstatic__lt_1_4_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ecstatic__lt_2_0_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__edp_package__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_3__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ejs__lt_2_5_5__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__elding__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__elding__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__elding__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_0_8__1_lt_1_8_4__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_1_3_0_lt_1_3_13__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_11__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.result.s2.o0": "해당 라이브러리는 중간자 공격(MitM) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.result.s3.o0": "중간자 공격(MitM) 취약점은 외부에서 네트워크 통신에 개입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.result.s4.o0": "중간자 공격(MitM) 취약점을 이용하여, 공격자는 통신 내용을 도청하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 중간자 공격(MitM) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_1_4_0_lt_1_4_12__mitm.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_1_7_0_lt_1_7_8__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_11__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_1_7__1_lt_1_7_13__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_1_8_0_lt_1_8_1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_1_8__1_lt_1_8_2_beta_4__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__ge_2_0_0_lt_2_0_0_beta_4__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__lt_1_4_15__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__lt_1_6_14__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__lt_1_6_16__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__lt_1_6_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__lt_1_6_8__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 입력값 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.result.s3.o0": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.result.s4.o0": "부적절한 입력값 검증 취약점을 이용하여, 공격자는 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 입력값 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__lt_1_7_6__improper_input_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron__lt_1_8_2_beta_5__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron_markdownify__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron_markdownify__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron_markdownify__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 인증서 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.result.s3.o0": "부적절한 인증서 검증 취약점은 인증서에 대한 검증 과정이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.result.s4.o0": "부적절한 인증서 검증 취약점을 이용하여, 공격자는 인증 및 인가 우회, 통신 데이터 탈취 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 부적절한 인증서 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__electron_packager__ge_5_2_1_le_6_0_2__improper_certificate_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__email_existence__lt_0_1_6__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__emailjs_mime_codec__lt_2_0_5__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__emailjs_mime_parser__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__emailjs_mime_parser__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__embedza__lt_1_2_4__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__eq_1_2_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__eq_1_2_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__eq_1_3_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__eq_1_3_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_lt_1_0_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_1_lt_1_0_0_rc_1_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_2_lt_1_0_0_rc_2_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_3_lt_1_0_0_rc_3_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_4_lt_1_0_0_rc_4_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_5_lt_1_0_0_rc_5_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_0_0_rc_6_lt_1_0_0_rc_6_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_1_0_lt_1_1_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_2_0_lt_1_2_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_3_0_lt_1_3_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ember__ge_1_4_0_lt_1_4_0_beta2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__emojione__le_1_3_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ep_imageconvert__le_0_0_2__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__eslint__lt_4_18_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__eslint_config_airbnb_standard__ge_2_0_0_lt_2_1_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__eslint_d__ge_4_0_0_lt_4_0_1__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__eslint_d__lt_3_1_2__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__eslint_scope__eq_3_7_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ewgaddis_lab6__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ex_http_frame__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express__ge_4__1__1_lt_4_5__1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express__lt_3_11__1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express__lt_3_11__1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express_blinker__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express_blinker__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express_cart__lt_1_1_7__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express_cookies__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express_graphql__ge_0_4_0_lt_0_4_11__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express_restify_mongoose__ge_3_0_0_lt_3_1_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express_restify_mongoose__lt_2_5_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__express_saml2__xml_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.result.s2.o0": "해당 라이브러리는 XML 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.result.s3.o0": "XML 삽입 취약점은 임의의 XML 태그를 기존의 XML 구조 내부로 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.result.s4.o0": "XML 삽입 취약점을 이용하여, 공격자는 XML 구조를 조작할 수 있으며, 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 XML 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__express_saml2__xml_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__exxxxxxxxxxx__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.result.s2.o0": "해당 라이브러리는 중간자 공격(MitM) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.result.s3.o0": "중간자 공격(MitM) 취약점은 외부에서 네트워크 통신에 개입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.result.s4.o0": "중간자 공격(MitM) 취약점을 이용하여, 공격자는 통신 내용을 도청하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 중간자 공격(MitM) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ezseed_transmission__ge_0_0_10_le_0_0_14__mitm.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__f2e_server__lt_1_12_13__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fabric_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fakelearnnodejs__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fancy_server__lt_0_1_4__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fast_http__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fast_http__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fast_http_cli__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fastify__lt_0_38_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__favico_js__lt_0_3_10__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 설정 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.result.s3.o0": "안전하지 않은 설정 취약점은 서버 또는 애플리케이션 등의 설정값에 의해 외부의 공격을 허용하는 취약점입니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.result.s4.o0": "안전하지 않은 설정 취약점을 이용하여, 공격자는 서버 또는 애플리케이션의 동작을 제어하거나 민감한 정보를 탈취 및 조작할 수 있습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 안전하지 않은 설정 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__faye__ge_0_5_0_lt_0_8_9__insecure_configuration.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fbr_client__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fbr_client__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__featurebook__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__featurebook__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.result.s2.o0": "해당 라이브러리는 타이밍 공격 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.result.s3.o0": "타이밍 공격 취약점은 문자열 등의 비교 도중 다른 부분을 발견하는 즉시 비교를 중단하는, 즉 비교 소요 '시간'에 차이가 발생하는 취약점입니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.result.s4.o0": "타이밍 공격 취약점을 이용하여, 공격자는 비교 소요 시간이 차이가 나는 것을 측정할 수 있으며, 최종적으로 비밀번호 등의 민감한 정보를 추정할 수 있습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 타이밍 공격 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fernet__ge_0_0_1_lt_0_1_0__timing_attack.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ffmepg__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fibjs__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fis_parser_sass_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fis_sass_all__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__floody__lt_0_1_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__foreman__lt_3_0_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__forms__lt_1_3_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__forwarded__lt_0_1_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__foundation_sites__ge_3_0_0_lt_3_0_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__foundation_sites__lt_5_5_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__foundation_sites__lt_6_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__frames_compiler__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fresh__lt_0_5_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__frvr__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__frvr__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__frvr__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fs_git__lt_1_0_2__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fs_path__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fs_path__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fs_path__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fsk_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fsk_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fuelux__lt_3_15_7__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fullpage_js__lt_2_7_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__ge_0_2_0_lt_0_9_7__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fury_adapter_swagger__le_0_8_0_pre__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__fuseki__lt_1_0_1__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__galenframework_cli__lt_2_3_1__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gamebutler__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gamebutler__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gaoxiaotingtingting__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gaoxuyan__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gatsby_cli__lt_1_0_9__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__geddy__lt_13_0_8__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__general_file_server__le_1_1_8__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__generate_pincode__lt_5_0_2__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__generator_jhipster__ge_0_3_1_lt_0_14_0__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.result.s2.o0": "해당 라이브러리는 타이밍 공격 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.result.s3.o0": "타이밍 공격 취약점은 문자열 등의 비교 도중 다른 부분을 발견하는 즉시 비교를 중단하는, 즉 비교 소요 '시간'에 차이가 발생하는 취약점입니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.result.s4.o0": "타이밍 공격 취약점을 이용하여, 공격자는 비교 소요 시간이 차이가 나는 것을 측정할 수 있으며, 최종적으로 비밀번호 등의 민감한 정보를 추정할 수 있습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 타이밍 공격 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__generator_jhipster__gt_2_0_0_lt_2_23_0__timing_attack.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__geoip_lite_country__lt_1_1_4__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__getcityapi_yoehoehne__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__getcookies__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__getstats__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__getstats__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__getstats__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gettext_parser__lt_1_3_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gfe_sass__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gfm_srv__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gfm_srv__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghod5servercs360__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghost__ge_0_8_0_lt_0_11_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghost__ge_1_0_0_alpha_1_lt_1_0_0_alpha_5__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghost__lt_0_10_0__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ghost__lt_0_5_9__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gifsicle__lt_1_90__1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__git_dummy_commit__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__git_dummy_commit__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__git_ls_remote__lt_0_2_0__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__git_username__ge_0_5_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__github_url_to_object__lt_4_0_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__given_html_report__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__glance__lt_3_0_4__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__glance__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__glance__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__glance__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__glance__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__glance__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__glance__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__glance__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__glance__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__glance__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__glance__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__glance__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__glance__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__glance__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__glance__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__glance__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__glance__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__glurp__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__glurp__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__glurp__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gm__le_1_20_0__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gmail_js__lt_0_6_5__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__go_ipfs_dep__lt_0_4_4__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gomeplus_h5_proxy__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__google_closure_tools_latest__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__goserv__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__goserv__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__goserv__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__growl__lt_1_10_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__grunt_ccompiler__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__grunt_fileserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.result.s2.o0": "해당 라이브러리는 로그 파일을 통한 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.result.s3.o0": "로그 파일을 통한 정보 노출 취약점은 로그 파일이 노출됨으로 인하여 민감한 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.result.s4.o0": "로그 파일을 통한 정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 로그 파일을 통한 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__grunt_gh_pages__le_0_9_1__information_exposure_through_log_files.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__grunt_images__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__grunt_serve__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__grunt_serve__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__grunt_webdriver_qunit__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gruntcli__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__guaycuru__lt_0_2_4__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__gyfserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__gyfserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__handlebars__le_1_0_0_beta_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__handlebars__lt_4_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi__eq_2_0__1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi__eq_2_1__1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi__ge_15_0_0_lt_16_1_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi__lt_0_16_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.result.s2.o0": "해당 라이브러리는 교차 출처 리소스 공유 정책 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.result.s3.o0": "교차 출처 리소스 공유 정책 우회 취약점은 교차 출처 리소스 공유 정책을 우회할 수 있는 취약점입니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.result.s4.o0": "교차 출처 리소스 공유 정책 우회 취약점을 이용하여, 공격자는 교차 출처 리소스 공유 정책을 우회하여 외부의 위험한 코드의 삽입 등이 가능합니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 교차 출처 리소스 공유 정책 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi__lt_11_0_0__cors_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_3__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.result.s2.o0": "해당 라이브러리는 표준에 대한 부적절한 보안 검증 구현 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.result.s3.o0": "표준에 대한 부적절한 보안 검증 구현 취약점은 표준 알고리즘, 프로토콜, 기술 설계 등에 해당하는 보안 관련 검사 로직을 올바르게 구현하지 않은 취약점입니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.result.s4.o0": "표준에 대한 부적절한 보안 검증 구현 취약점을 이용하여, 공격자는 민감한 정보로의 접근 및 탈취, 서버의 비정상 동작 강제, 인증 및 인가 우회 등이 가능합니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 표준에 대한 부적절한 보안 검증 구현 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi__lt_11_1_4__improperly_implemented_security_check_for_standard.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.result.s2.o0": "해당 라이브러리는 JSONP 콜백 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.result.s3.o0": "JSONP 콜백 취약점은 JSONP 콜백을 이용하여 사용자의 브라우저 및 Java Script 콘텍스트로의 접근 권한을 가질 수 있는 취약점입니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.result.s4.o0": "JSONP 콜백 취약점을 이용하여, 공격자는 사용자의 정보(세션, 쿠키 등)의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 JSONP 콜백 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi__lt_6_1_0__jsonp_callback.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hapi_auth_jwt2__eq_5_1_1__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__haraka__lt_2_8_19__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__harb__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__harb__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__harb__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__harb__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__harb__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__harb__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__harb__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__harb__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__harb__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__harb__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__harb__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__harb__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__harb__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__harb__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__harb__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__harb__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__harmlesspackage__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hawk__ge_4_0_0_lt_4_1_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hawk__le_3_1_2__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__haxe3__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__haxe__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__haxe_dev__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__haxeshim__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hcbserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hcbserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hdsdhhksjd__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__headless_browser_lite__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__healthcenter__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hechatroom__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hechatroom__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_3__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hekto__lt_0_2_4__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__herbivore__le_0_0_3__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hexo_editor__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hexo_editor__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hexo_editor__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hftp__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hftp__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hftp__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__highcharts__lt_6_1_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hoek__ge_5_0_0_lt_5_0_3__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hoek__lt_0_7_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hoek__lt_4_2_1__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hooka_tools__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hostr__lt_2_3_6__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hotel__mitm.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hotel__mitm.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.result.s2.o0": "해당 라이브러리는 중간자 공격(MitM) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.result.s3.o0": "중간자 공격(MitM) 취약점은 외부에서 네트워크 통신에 개입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.result.s4.o0": "중간자 공격(MitM) 취약점을 이용하여, 공격자는 통신 내용을 도청하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 중간자 공격(MitM) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hotel__mitm.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hserver_static__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hserver_static__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__html_dom_parser__lt_1_4_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__html_pages__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__html_pages__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__html_pages__lt_2_1_0__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__htmllint__lt_0_7_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__http_fetch_cookies__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__http_proxy__lt_0_7_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__http_proxy_agent__lt_2_0_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__http_proxy_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__http_signature__ge_0_9_0_lt_0_10_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.result.s2.o0": "해당 라이브러리는 타이밍 공격 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.result.s3.o0": "타이밍 공격 취약점은 문자열 등의 비교 도중 다른 부분을 발견하는 즉시 비교를 중단하는, 즉 비교 소요 '시간'에 차이가 발생하는 취약점입니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.result.s4.o0": "타이밍 공격 취약점을 이용하여, 공격자는 비교 소요 시간이 차이가 나는 것을 측정할 수 있으며, 최종적으로 비밀번호 등의 민감한 정보를 추정할 수 있습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 타이밍 공격 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__http_signature__lt_1_0_0__timing_attack.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__http_static_simple__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__http_static_simple__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__httpea__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__httpea__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__httpea__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__https_proxy_agent__lt_2_2_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__httpsync__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hubl_server__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__hubot_scripts__le_2_4_3__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__i18n_node_angular__lt_1_4_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__i18next__ge_2_0_0_lt_3_4_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__i18next__lt_1_10_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ibapi__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ibm_db__lt_1_0_2__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__iceman178_weather_cs360__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__iedriver__lt_3_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__igniteui__le_0_0_5__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ikst__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ikst__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ikst__lt_1_1_2__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__imageoptim__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__inert__lt_1_1_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__infraserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__infraserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__innomon__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__innomon__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__innomon__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__insight_api__improper_input_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 입력값 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.result.s3.o0": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.result.s4.o0": "부적절한 입력값 검증 취약점을 이용하여, 공격자는 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 입력값 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__insight_api__improper_input_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__install_g_test__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__install_nw__lt_1_1_5__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__intsol_package__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__intsol_package__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ip__lt_1_1_5__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ipip__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ipip_coffee__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__is_mobile__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__is_mobile__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__is_mobile__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__is_my_json_valid__ge_2_0_0_lt_2_17_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__is_my_json_valid__le_2_12_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__is_my_json_valid__lt_1_4_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__is_url__lt_1_2_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__isv_http__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__isv_http__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__iter_http__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__iter_http__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__iter_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__iter_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jdf_sass__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jiazhipeng__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jikes__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jikes__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jikes__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jn_jj_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jqtree__le_1_3_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery__eq_3_0_0_rc_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_0_lt_1_12_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery__ge_1_4_2_le_1_5_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery__ge_1_7_1_lt_1_9_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery__gt_1_12_3_lt_3_0_0_beta1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery__lt_1_6_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery_colorbox__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery_colorbox__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery_csssr_validation__lt_0_0_26__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery_migrate__lt_1_2_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery_mobile__lt_1_2_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery_ui__le_1_11_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery_ui__lt_1_10_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquery_ujs__le_1_0_3__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jquey__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jquey__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__js_given__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_6_4__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.result.s2.o0": "해당 라이브러리는 버퍼 오버플로우 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.result.s3.o0": "버퍼 오버플로우 취약점은 개발자가 지정한 버퍼 위치를 벗어난 위치에 접근 및 수정이 가능한 취약점입니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.result.s4.o0": "버퍼 오버플로우 취약점을 이용하여, 공격자는 개발자가 의도하지 않은 데이터를 버퍼에 덮어쓸 수 있으며, 대상 애플리케이션의 특정 값 또는 흐름 제어 등을 조작할 수 있습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 버퍼 오버플로우 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__js_quantities__lt_1_7_0__buffer_overflow.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__js_xss__lt_0_2_7__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__js_yaml__lt_2_0_5__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jser_stat__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jshamcrest__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jshamcrest__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jshamcrest__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jsjws__lt_2_0_0__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jsonwebtoken__lt_4_2_2__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jspdf__lt_1_1_135__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jsrender__le_0_9_73__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jstestdriver__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jstree__lt_3_0_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jsviews__lt_0_9_74__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jvminstall__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jws__lt_3_0_0__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__jwt_simple__lt_0_3_0__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__keycloak_auth_utils__ge_2_5_0_lt_3_1_0__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__keystone__ge_0_2_7_lt_0_3_6__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__keystone__lt_0_2_34__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__keystone__lt_0_3_16__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__keystone__lt_4_0_0_beta_7__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_5_1_1_lt_5_6_7__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_5_3_0_lt_5_3_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_5_4_0_lt_5_4_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_6_0_0_lt_6_1_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_6_1_0_lt_6_1_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__ge_6__1__1_lt_6_0_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__lt_5_0_0_alpha5__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__lt_5_2_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__lt_5_3_1__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__lt_5_4_3__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kibana__lt_5_6_5__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kindlegen__lt_1_1_0__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__kmc__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__kmc__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__kmc__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__knex__ge_0_7_0_lt_0_7_6__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__knex__lt_0_6_23__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__knockout__ge_2_1_0_pre_lt_3_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__knockout__lt_3_5_0_beta__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__koa_body__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__koa_body__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__koa_static_cache__ge_5_0_0_lt_5_1_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__koa_static_cache__lt_4_1_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lab6_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lab6_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lab6_agolotin__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lab6_brit95__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lab6_wclaibor__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lab6drewfusbyu__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lactate__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lactate__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lactate__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ladder_text_js__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lam__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lam__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lam__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lander__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lander__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lander__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.result.s2.o0": "해당 라이브러리는 LDAP 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.result.s3.o0": "LDAP 삽입 취약점은 웹 애플리케이션에서 LDAP 문을 구성할 때 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.result.s4.o0": "LDAP 삽입 취약점을 이용하여, 공격자는 대상 애플리케이션 내부의 LDAP 구조를 조작할 수 있으며, 중요 정보를 탈취할 수 있습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 LDAP 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ldapauth__le_2_2_4__ldap_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.result.s2.o0": "해당 라이브러리는 LDAP 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.result.s3.o0": "LDAP 삽입 취약점은 웹 애플리케이션에서 LDAP 문을 구성할 때 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.result.s4.o0": "LDAP 삽입 취약점을 이용하여, 공격자는 대상 애플리케이션 내부의 LDAP 구조를 조작할 수 있으며, 중요 정보를 탈취할 수 있습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.result.s5.o0": "검사 결과에 의거하여, {0} 라이브러리 사용에 의한 LDAP 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ldapauth_fork__lt_2_3_3__ldap_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__less_livereload__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__less_livereload__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lessindex__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lessindex__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lets_chat__ge_0_3_10_lt_0_4_8__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__libnotify__le_1_0_3__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__libp2p_secio__le_0_8_1__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__libsbml__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__libsbmlsim__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__libxl__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.result.s2.o0": "해당 라이브러리는 XML 외부 개체(XXE) 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.result.s3.o0": "XML 외부 개체(XXE) 삽입 취약점은 XML 문서에서 충분한 검증 단계 없이 동적으로 외부 URL의 리소스(즉, 개체)를 포함하는 취약점입니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.result.s4.o0": "XML 외부 개체(XXE) 삽입 취약점을 이용하여, 공격자는 민감한 정보의 탈취 또는 'Billion Laughs'와 같은 리소스 소모 혹은 서비스 거부 공격의 수행이 가능합니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 XML 외부 개체(XXE) 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__libxmljs__le_0_16_1__xxe_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.result.s2.o0": "해당 라이브러리는 힙 기반 버퍼 오버플로우 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.result.s3.o0": "힙 기반 버퍼 오버플로우 취약점은 힙에서 개발자가 지정한 버퍼 위치를 벗어난 위치에 접근 및 수정이 가능한 취약점입니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.result.s4.o0": "힙 기반 버퍼 오버플로우 취약점을 이용하여, 공격자는 개발자가 의도하지 않은 데이터를 힙 버퍼에 덮어쓸 수 있으며, 대상 애플리케이션의 특정 값 또는 흐름 제어 등을 조작할 수 있습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 힙 기반 버퍼 오버플로우 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__libyaml__lt_0_2_3__heap_based_buffer_overflow.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__life_star__le_0_8_4__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lihuini__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lihuini__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__limbus_buildgen__lt_0_1_1__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__list_n_stream__lt_0_0_11__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__litedoc__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__litedoc__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__liuyaserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__liuyaserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__liyujing__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__liyujing__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ljjnodeserve__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__localhost_now__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__localhost_now__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__localhost_now__lt_1_0_2__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lodash__lt_4_17_5__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__loopback__lt_3_16_2__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__loopback_connector_mssql__lt_1_3_0__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__loopback_connector_mysql__lt_1_5_0__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__loopback_connector_oracle__lt_1_5_0__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__loopback_connector_postgresql__lt_1_3_0__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__looppake__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__looppake__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__looppake__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ltt__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ltt__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ltt__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ltt_js__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ltt_js__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__lzl123__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__lzl123__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__m2m_supervisor__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__m2m_supervisor__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__m_log__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__m_log__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__m_log__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__m_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__m_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__m_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__macaca_chromedriver__lt_1_0_27__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__macaca_chromedriver_zxa__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__macaddress__lt_0_2_9__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mailparser__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mailparser__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mailparser__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mailparser_mit__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mailparser_mit__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mailparser_mit__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mailsplit__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mailsplit__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mailsplit__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_1_7__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mapbox_js__gt_2_0_0_lt_2_2_4__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_5__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mapbox_js__lt_1_6_6__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mariadb__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marionette_socket_host__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__markdown_it__ge_4_0_0_lt_4_3_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__markdown_it__le_4_0_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__markdown_js__lt_0_0_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__markdown_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__markdown_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marked__le_0_3_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marked__le_0_3_2__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marked__le_0_3_3__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marked__le_0_3_3__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marked__lt_0_3_17__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marked__lt_0_3_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marked__lt_0_3_7__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__marked__lt_0_3_9__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__massif__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mathjs__lt_3_10_3__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mathjs__lt_3_11_5__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mathjs__lt_3_13_3__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mathjs__lt_3_17_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__maybemaliciouspackage__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mcstatic__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mcstatic__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mediaelement__ge_2_17_0_lt_2_21_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mediaelement__ge_3_0_0_lt_3_1_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__medis__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__medis__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__medis__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__medis__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__medis__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__medis__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__medis__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__medis__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__medis__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__medis__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__medis__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__medis__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__medis__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__medis__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__medis__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__medis__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__memjs__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__memjs__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__memjs__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__memjs__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__memjs__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__merge_deep__lt_3_0_1__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__merge_objects__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__merge_objects__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__merge_options__lt_1_0_1__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__merge_recursive__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__meryl__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__meryl__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__meryl__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__metascraper__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__metascraper__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__metascraper__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__method_override__lt_2_3_10__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mfrs__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mfrs__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mfrserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mfrserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__micra__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__micra__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__micra__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__microservicebus_node__lt_0_4_3__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__millisecond__lt_0_1_2__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mime__ge_2_0_0_lt_2_0_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mime__lt_1_4_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mime_web_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mime_web_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mimer__lt_0_3_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__minimatch__le_3_0_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.result.s2.o0": "해당 라이브러리는 프로토타입 오염 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.result.s3.o0": "프로토타입 오염 취약점은 Java Script에서 Object의 프로토타입을 조작할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.result.s4.o0": "프로토타입 오염 취약점을 이용하여, 공격자는 모든 객체의 속성 정보를 수정하고 탈취할 수 있습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 프로토타입 오염 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mixin_deep__lt_1_3_1__prototype_pollution.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mixin_pro__lt_0_6_7__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mktmpio__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mobile_detect__lt_1_4_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mobile_icon_resizer__lt_0_4_3__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mock2easy__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mock2easy__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mock2easy__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mockserve__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mockserve__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__moddle_xml__lt_4_1_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__modjs__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__modjs__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__modjs__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__modulify__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__modulify__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__modulify__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mol_proto__lt_1_0_6__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__moment__le_2_11_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__moment__le_2_11_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__moment__lt_2_15_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__moment__lt_2_19_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongo_edit__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongo_edit__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongo_parse__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongo_parse__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongodb_instance__lt_0_0_3__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongoose__ge_3_5_5_lt_3_8_39__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_1_10__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongoose__ge_4_0_0_lt_4_3_6__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongoose_beautiful_unique_validation__ge_7_1_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongoosemask__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongoosemask__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongoosify__lt_0_0_4__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongose__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mongui__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mongui__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mongui__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__morris_js__le_0_5_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mqtt__ge_2_0_0_lt_2_15_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mqtt__le_0_3_13__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mqtt_packet__gt_4_0_0_lt_4_0_5__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mqtt_packet__lt_3_4_6__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mrk_js__lt_2_0_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ms__le_0_7_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ms__le_0_7_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ms__lt_2_0_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mssql_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mssql_node__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mustache__lt_0_3_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mustache__lt_2_2_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.result.s2.o0": "해당 라이브러리는 XML 외부 개체(XXE) 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.result.s3.o0": "XML 외부 개체(XXE) 삽입 취약점은 XML 문서에서 충분한 검증 단계 없이 동적으로 외부 URL의 리소스(즉, 개체)를 포함하는 취약점입니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.result.s4.o0": "XML 외부 개체(XXE) 삽입 취약점을 이용하여, 공격자는 민감한 정보의 탈취 또는 'Billion Laughs'와 같은 리소스 소모 혹은 서비스 거부 공격의 수행이 가능합니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 XML 외부 개체(XXE) 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mxgraph__lt_3_7_6__xxe_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__my_sn__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__my_sn__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__myprolyz__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__myprolyz__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__myserve111__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__myserve111__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__myserver_alexcthomas18__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mysql2csv__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mysql2csv__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_alpha_lt_2_0_0_alpha8__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.result.s2.o0": "해당 라이브러리는 인가 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.result.s3.o0": "인가 우회 취약점은 필요한 인가 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.result.s4.o0": "공격자는 인가 우회 취약점을 이용하여 권한이 없는 동작을 수행할 수 있습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인가 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mysql__ge_2_0_0_lt_2_3_0__authorization_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mysql__lt_2_14_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mysqljs__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mystem3__lt_1_0_8__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mystem__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mystem_fix__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__mystem_wrapper__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nameless_cli__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nameless_cli__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__native_opencv__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nd_validator__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nd_validator__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nd_validator__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__negotiator__le_0_6_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nes__lt_6_4_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__next__ge_3_0_0_beta1_lt_3_0_0_beta7__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__next__lt_2_4_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__next__lt_2_4_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__next__lt_2_4_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__next__lt_4_2_3__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nforce__lt_0_6_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ng_dialog__ge_0_6_3__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nhouston__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nhouston__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nicest__lt_1_1_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nitro_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nitro_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__njwt__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__njwt__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__njwt__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__no_case__lt_2_3_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_air_sdk__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_browser__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_bsdiff_android__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_cxc__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_cxc__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_fabric__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.result.s2.o0": "해당 라이브러리는 타이밍 공격 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.result.s3.o0": "타이밍 공격 취약점은 문자열 등의 비교 도중 다른 부분을 발견하는 즉시 비교를 중단하는, 즉 비교 소요 '시간'에 차이가 발생하는 취약점입니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.result.s4.o0": "타이밍 공격 취약점을 이용하여, 공격자는 비교 소요 시간이 차이가 나는 것을 측정할 수 있으며, 최종적으로 비밀번호 등의 민감한 정보를 추정할 수 있습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 타이밍 공격 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_forge__lt_0_6_33__timing_attack.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_forge__lt_0_7_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_htmlparser_classic__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_htmlparser_classic__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_http_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_http_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.result.s2.o0": "해당 라이브러리는 부적절한 디지털 서명 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.result.s3.o0": "부적절한 디지털 서명 검증 취약점은 특정 파일에 대한 디지털 서명 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.result.s4.o0": "부적절한 디지털 서명 검증 취약점을 이용하여, 공격자는 위험한 파일을 업로드할 수 있으며, 해당 파일을 통한 중요 정보 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 디지털 서명 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_jose__lt_0_11_0__improper_verification_of_cryptographic_signature.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_jose__lt_0_9_3__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_json_db__lt_0_7_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_krb5__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_krb5__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_opencv__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_opensl__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_openssl__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_pg_migrate__lt_2_23_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_serialize__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_serialize__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_serialize__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_server_forfront__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_simple_router__lt_0_10_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_sqlite__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_srv__lt_2_1_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_static_webserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_staticserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_staticserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_thulac__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_tkinter__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_3_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__node_uuid__lt_1_4_4__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodeaaaaa__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodebb__ge_0_4_3_lt_1_4_1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodebb__ge_0_6_1_lt_0_7_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodecaffe__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodefabric__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodeffmpeg__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodejs_jseidl__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodejs_liamgb__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodejsccc__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodejsccc__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodeload__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodeload__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodeload_nmickuli__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodemailer_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodemssql__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__noderequest__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodesass__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodeschnaps__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodeserver_jta__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodesqlite__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodewebkit__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nodux_core__lt_0_0_18__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nopach__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nopach__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nopach__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nothing_js__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npm__ge_3_0_0_le_3_8_2__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npm__le_2_15_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.result.s2.o0": "해당 라이브러리는 심볼릭 링크 추적 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.result.s3.o0": "심볼릭 링크 추적 취약점은 심볼릭 링크를 사용하여 특정 파일에 대한 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.result.s4.o0": "심볼릭 링크 추적 취약점을 이용하여, 공격자는 접근이 제한된 파일의 내용 열람 및 조작이 가능합니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 심볼릭 링크 추적 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npm__lt_1_3_3__symlink_following.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.result.s2.o0": "해당 라이브러리는 인가 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.result.s3.o0": "인가 우회 취약점은 필요한 인가 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.result.s4.o0": "공격자는 인가 우회 취약점을 이용하여 권한이 없는 동작을 수행할 수 있습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인가 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npm__lt_5_7_1__authorization_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npm_exploit__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npm_script_demo__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npm_scripts_test_metrics__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npm_test_sqlite3_trunk__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__npmconf__lt_2_1_3__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ntfserver__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nunjucks__lt_2_4_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nw__lt_0_23_7__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nw_with_arm__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__nwmatcher__lt_1_4_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__oauth2orize_fprm__lt_0_2_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__octotree__lt_1_1__1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__octotree__lt_2_0_11__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__open__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__open__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__open__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__open__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__open__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__open_device__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__open_device__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__open_device__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__opencv_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__openframe_ascii_image__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__openframe_glslviewer__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__openframe_image__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__openssl_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__openwhisk__lt_3_3_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__operadriver__lt_0_2_3__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pandora_doomsday__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__paopao613__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__paopao613__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__parse_ssi__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__parse_ssi__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__parsejson__le_0_0_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__passport_azure_ad__eq_2_0_0__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__passport_azure_ad__ge_1_0_0_lt_1_4_6__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__passport_wsfed_saml2__lt_3_0_5__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__path_complete_extname__lt_1_0_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__paypal_ipn__lt_3_0_0__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pdf_image__lt_2_0_1__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pdfinfojs__lt_0_4_1__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__peiserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__peiserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pennyworth__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_3_0_0_lt_3_6_4__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_4_0_0_lt_4_5_7__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_5_0_0_lt_5_2_1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_6_0_0_lt_6_0_5__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_6_1_0_lt_6_1_6__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_6_2_0_lt_6_2_5__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_6_3_0_lt_6_3_3__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_6_4_0_lt_6_4_2__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_7_0_0_lt_7_0_2__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__ge_7_1_0_lt_7_1_2__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pg__lt_2_11_2__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__phantomjs_cheniu__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__phpjs__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__phpjs__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__phpjs__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__picard__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__picard__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__picard__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pico_static_server__lt_3_0_2__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pidusage__lt_1_1_5__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pivottable__ge_1_4_0_lt_2_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pk_app_wonderbox__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__platform_js__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__platform_js__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__platform_js__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__plist__ge_1_2_0_lt_3_0_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_0_0_lt_1_2_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__plotly_js__ge_1_10_4_lt_1_16_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__plotly_js__lt_1_16_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pm2_kafka__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pngcrush_installer__lt_1_8_10__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__poco__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__podium__ge_1_2_2_lt_1_2_5__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__polyfill_service__lt_3_1_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pooledwebsocket__lt_0_0_18__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__postcss_inline_base64__lt_3_0_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pouchdb__le_6_0_4__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pouchdb__lt_1_1_0__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__prebuild_lwip__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__prince__lt_1_4_5__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__printer__le_0_0_1__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__product_monitor__lt_2_2_5__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__protobufjs__ge_6_0_0_lt_6_8_6__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__protobufjs__lt_5_0_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__protojs__lt_1_0_6__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__proxey__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__proxey__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__proxey__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__proxy_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ptest__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ptest__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ptest__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__public__le_0_1_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__public__le_0_1_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__public__lt_0_1_3__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pullit__lt_1_4_0__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pure__lt_2_86_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.result.s3.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점은 특정 웹 페이지에 접속한 사용자의 권한을 가진 상태로 사용자가 의도하지 않은 동작을 취하도록 강제할 수 있는 취약점입니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.result.s4.o0": "크로스 사이트 HTTP 요청 위조(CSRF) 취약점을 이용하여, 공격자는 대상 웹 페이지에 접속한 사용자의 권한을 사용할 수 있으며, 신원 위조 및 인증 우회, 중요 정보의 열람 및 조작 등이 가능합니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 HTTP 요청 위조(CSRF) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pym_js__lt_1_3_2__csrf.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__pytservce__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__pytservce__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__q_io__lt_1_13_5__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__qbs__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__qinserve__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__qinserve__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 입력값 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.result.s3.o0": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.result.s4.o0": "부적절한 입력값 검증 취약점을 이용하여, 공격자는 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 입력값 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__qs__ge_6_1_0_lt_6_1_2__improper_input_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 입력값 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.result.s3.o0": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.result.s4.o0": "부적절한 입력값 검증 취약점을 이용하여, 공격자는 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 입력값 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__qs__ge_6_2_0_lt_6_2_3__improper_input_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 입력값 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.result.s3.o0": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.result.s4.o0": "부적절한 입력값 검증 취약점을 이용하여, 공격자는 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 입력값 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__qs__ge_6_3_0_lt_6_3_2__improper_input_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__qs__lt_1_0_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 입력값 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.result.s3.o0": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.result.s4.o0": "부적절한 입력값 검증 취약점을 이용하여, 공격자는 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 입력값 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__qs__lt_6_0_4__improper_input_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__query_mysql__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__query_mysql__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.result.s2.o0": "해당 라이브러리는 부적절한 입력값 검증 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.result.s3.o0": "부적절한 입력값 검증 취약점은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.result.s4.o0": "부적절한 입력값 검증 취약점을 이용하여, 공격자는 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 부적절한 입력값 검증 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__querystringify__lt_2_0_0__improper_input_validation.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__quickserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__quickserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__quill__ge_1_0_0_beta_0_lt_1_0_4__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ractive__lt_0_8_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rapid_httpserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__react__ge_0_4_0_lt_0_4_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__react__ge_0_5_0_lt_0_5_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__react__lt_0_14_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__react__lt_0_14_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__react_marked_markdown__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__react_marked_markdown__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__react_native_baidu_voice_synthesizer__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__react_native_meteor_oauth__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__react_svg__lt_2_2_18__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__redis_commander__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__redis_commander__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__redis_commander__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__redis_srvr__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__reduce_css_calc__lt_1_2_5__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__reecerver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__reecerver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__remarkable__lt_1_4_1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__remarkable__lt_1_7_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rendr__ge_0_4_0_lt_1_1_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rendr__le_1_1_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rendr__lt_0_4_8_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rendr__lt_0_5_0_rc1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rendr_handlebars__lt_1_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__request__gt_2_2_5_lt_2_68_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__resolve_path__lt_1_4_0__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__resourcehacker__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__restafary__lt_1_6_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__restify__ge_2_0_0_lt_4_1_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rethinkdb__ge_1_2_0_lt_2_1_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__reveal_js__lt_2_6_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rgb2hex__lt_0_1_6__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__riot__lt_0_9_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__riot_compiler__le_2_3_21__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ritp__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ritp__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ritp__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rjpserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rjpserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__robot_js__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rocketmake_nuget__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__roslib_socketio__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rs_brightcove__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__rtcmulticonnection_client__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__run_this_place__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__run_this_place__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sabu__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sabu__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sabu__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 인증서 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.result.s3.o0": "안전하지 않은 인증서 사용 취약점은 인증서를 저장하거나 전송할 때 충분한 보안이 보장되지 않은 경우에 발생하는 취약점입니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.result.s4.o0": "안전하지 않은 인증서 사용 취약점을 이용하여, 공격자는 인증서에 대한 접근 및 탈취가 가능합니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 인증서 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__safe_compare__ge_1_1_0_lt_1_1_2__insecure_credential_usage.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 인증서 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.result.s3.o0": "안전하지 않은 인증서 사용 취약점은 인증서를 저장하거나 전송할 때 충분한 보안이 보장되지 않은 경우에 발생하는 취약점입니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.result.s4.o0": "안전하지 않은 인증서 사용 취약점을 이용하여, 공격자는 인증서에 대한 접근 및 탈취가 가능합니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 인증서 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__safe_compare__lt_1_1_1__insecure_credential_usage.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.result.s2.o0": "해당 라이브러리는 샌드박스 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.result.s3.o0": "샌드박스 우회 취약점은 제한된 샌드박스 환경을 벗어날 수 있는 취약점입니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.result.s4.o0": "샌드박스 우회 취약점을 이용하여, 공격자는 샌드박스 외부로 영향을 미칠 수 있으며, 샌드박스 외부에 존재하는 정보에 대하여 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 샌드박스 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__safe_eval__sandbox_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sails__ge_0_11_0_rc6_lt_0_12_0_rc4__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.result.s2.o0": "해당 라이브러리는 교차 출처 리소스 공유 정책 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.result.s3.o0": "교차 출처 리소스 공유 정책 우회 취약점은 교차 출처 리소스 공유 정책을 우회할 수 있는 취약점입니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.result.s4.o0": "교차 출처 리소스 공유 정책 우회 취약점을 이용하여, 공격자는 교차 출처 리소스 공유 정책을 우회하여 외부의 위험한 코드의 삽입 등이 가능합니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 교차 출처 리소스 공유 정책 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sails__le_0_12_7__cors_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sails__lt_0_9_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__saml2_js__ge_2_0_0_lt_2_0_2__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__saml2_js__lt_1_12_4__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.result.s2.o0": "해당 라이브러리는 XML 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.result.s3.o0": "XML 삽입 취약점은 임의의 XML 태그를 기존의 XML 구조 내부로 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.result.s4.o0": "XML 삽입 취약점을 이용하여, 공격자는 XML 구조를 조작할 수 있으며, 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 XML 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__samlify__lt_2_3_0__xml_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sandbox__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sandbox__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sandbox__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sanitize__lt_2_1_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sanitize_html__le_1_4_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_11_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_2_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sanitize_html__lt_1_4_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sauce_connect__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__scala_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__scalajs_standalone_bin__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__scott_blanch_weather_app__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sdfjghlkfjdshlkjdhsfg__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__section2_madisonjbrooks12__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.result.s2.o0": "해당 라이브러리는 불충분한 비교 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.result.s3.o0": "불충분한 비교 취약점은 적절하지 않은 비교 연산을 통해 의도하지 않은 결과 도출이 가능한 취약점입니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.result.s4.o0": "불충분한 비교 취약점을 이용하여, 공격자는 비교 연산을 통한 검증 등을 우회할 수 있습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 비교 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__secure_compare__le_3_0_0__insufficient_comparison.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__secure_servedir__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__secure_servedir__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__select2__ge_1_0_0_lt_3_3_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__selenium_binaries__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__selenium_download__lt_2_0_7__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__selenium_portal__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__selenium_standalone_painful__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__selenium_wrapper__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__semantic_ui__lt_1_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__semantic_ui__lt_2_2_8__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__semver__lt_4_3_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sencisho__lt_0_3_3__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__send__lt_0_11_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__send__lt_0_8_4__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_1_7_0_alpha2__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sequelize__ge_0_2_2_le_3_16_0__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sequelize__ge_3_4_0_lt_3_23_6__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sequelize__le_2_0_0_rc7__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sequelize__le_2_1_3__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sequelize__le_3_19_3__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sequelize__lt_3_12_1__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sequelize__lt_3_17_2__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serc_js__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serialize_to_js__le_0_5_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve46__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve46__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve46__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve__eq_5_2_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve__lt_5_2_0__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve__lt_6_4_9__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve__lt_6_5_2__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve__lt_7_0_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve_here__lt_3_2_2__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve_index__lt_1_6_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve_static__ge_1_7_0_lt_1_7_2__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve_static__lt_1_6_5__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serve_static__lt_1_8_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__servedir__lt_1_0_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__server12311__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__server12311__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__server12311__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__server_static__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__server_static__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__server_static__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverabc__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverabc__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverfff__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverfff__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__servergmf__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__servergmf__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverhuwenhui__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverliujiayi1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverlyj333__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverlyj333__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverlyr__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverlyr__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__servershuai__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__servershuai__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serversyysyy__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serversyysyy__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverwg__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverwg__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverwzl__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverwzl__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverxh__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverxh__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverxxx__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverxxx__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serveryaozeyan__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serveryyl__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serveryyl__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serveryztyzt__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverzyqzyq__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__serverzyy__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__serverzyy__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__servewuqianqianqian__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__severzlt__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__severzlt__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sexstatic__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sexstatic__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sexstatic__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sfml__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sgqserve__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sgqserve__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shadowsock__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shaka_player__le_2_3_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__share__ge_0_6_0_lt_0_7_0_alpha8__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shell_quote__le_1_6_0__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shelljs__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shelljs__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shelljs__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shenliru3__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shenliru3__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shenliru__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shenliru__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shiba__lt_1_1_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shit_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shit_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shout__ge_0_38_0_lt_0_51_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shout__ge_0_44_0_lt_0_50_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__showdown_xss_filter__lt_0_1_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__shrugging_logging__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__simditor__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__simditor__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__simditor__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__simditor__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__simditor__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__simpl_schema__lt_1_5_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__simple_mock_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__simple_npm_registry__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__simple_server__lt_1_1_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__simplehttpserver__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__simplehttpserver__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__simplehttpserver__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__skeemas__lt_1_2_5__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__slimerjs_edge__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__slug__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__slug__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__slug__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__slug__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__slug__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__slug__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__slug__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__slug__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__slug__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__slug__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__slug__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__slug__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__slug__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__slug__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__slug__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__slug__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sly07__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sly07__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sly07__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__smb__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__soci__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_6__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__socket_io__lt_0_9_7__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__songcaihong__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__songcaihong__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sql__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sql__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sql__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sqlite_js__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sqliter__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sqlserver__le_1_0_2__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__squel__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__squel__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__squel__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__squire_rte__lt_1_6_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__srverqq__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__srverqq__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sshpk__lt_1_14_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sspa__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sspa__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sspa__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ssri__lt_5_2_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__st__lt_0_2_5__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.result.s2.o0": "해당 라이브러리는 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.result.s3.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점은 웹 애플리케이션이 신뢰할 수 없는 사용자 입력을 기반으로 URL을 구성하고, 해당 URL로의 리다이렉션을 수행하는 취약점입니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.result.s4.o0": "신뢰되지 않는 URL 주소로 자동접속 연결 취약점을 이용하여, 공격자는 사용자가 피싱 사이트와 같은 악성 사이트로 접속하도록 강제할 수 있습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 신뢰되지 않는 URL 주소로 자동접속 연결 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__st__lt_1_2_2__open_redirect.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__starfruit__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__starfruit__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__static_cling__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__static_cling__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__static_eval__lt_2_0_0__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__static_html_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__static_html_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__stattic__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__stattic__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__stattic__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__stattic__lt_0_3_0__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__steroids__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__stevenc4_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__strider_sauce__le_0_6_3__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__string__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__string__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__string__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__string__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__string__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__string__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__string__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__string__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__string__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__string__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__string__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__string__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__string__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__string__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__string__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__string__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__stringstream__lt_0_0_6__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__subtitles_lib__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.result.s2.o0": "해당 라이브러리는 Eval 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.result.s3.o0": "Eval 삽입 취약점은 사용자가 입력한 값을 별도의 검증 과정 없이 Eval() 함수의 인자로서 사용할 수 있는 취약점입니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.result.s4.o0": "Eval 삽입 취약점을 이용하여, 공격자는 공격자가 원하는 스크립트를 실행시킬 수 있으며, 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 Eval 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__summit__ge_0_1_0__eval_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__superagent__lt_3_7_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__superstatic__le_5_0_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__susu_sum__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__susu_sum__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__swagger_ui__eq_2_1_0_m2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_1_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__swagger_ui__le_2_2_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__swagger_ui__lt_2_2_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__swagger_ui__lt_3_4_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 임시 파일 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.result.s3.o0": "안전하지 않은 임시 파일 취약점은 서버의 중요 정보가 포함된 임시 파일을 올바르게 처리하지 않는 취약점입니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.result.s4.o0": "안전하지 않은 임시 파일 취약점을 이용하여, 공격자는 중요 정보가 포함된 임시 파일의 내용을 열람할 수 있으며, 이를 통한 추가적인 공격이 가능합니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 임시 파일 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__sync_exec__insecure_temporary_file.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.result.s2.o0": "해당 라이브러리는 코드 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.result.s3.o0": "코드 삽입 취약점은 웹 애플리케이션 내부로 임의의 코드를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.result.s4.o0": "코드 삽입 취약점을 이용하여, 공격자는 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 코드 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__syntax_error__lt_1_1_1__code_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.result.s2.o0": "해당 라이브러리는 심볼릭 링크 추적 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.result.s3.o0": "심볼릭 링크 추적 취약점은 심볼릭 링크를 사용하여 특정 파일에 대한 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.result.s4.o0": "심볼릭 링크 추적 취약점을 이용하여, 공격자는 접근이 제한된 파일의 내용 열람 및 조작이 가능합니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 심볼릭 링크 추적 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tar__lt_2_0_0__symlink_following.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tencent_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tencent_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__terminal_share__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__terminal_share__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__test_module_a__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__textangular__lt_1_2_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__textangular__lt_1_3_7__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__thelounge__ge_1_0_0_lt_1_5_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__thrushs__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__thrushs__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__timespan__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__timespan__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__timespan__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__timespan__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__timespan__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tiny_http__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tiny_http__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.result.s2.o0": "해당 라이브러리는 중간자 공격(MitM) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.result.s3.o0": "중간자 공격(MitM) 취약점은 외부에서 네트워크 통신에 개입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.result.s4.o0": "중간자 공격(MitM) 취약점을 이용하여, 공격자는 통신 내용을 도청하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 중간자 공격(MitM) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tiny_json_http__gt_7_0_0__mitm.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tinymce__lt_4_2_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tinymce__lt_4_6_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tinymce__lt_4_7_12__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tinyserver2__lt_0_6_1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tinyserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tinyserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.result.s2.o0": "해당 라이브러리는 내장된 악성코드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.result.s3.o0": "내장된 악성코드 취약점은 라이브러리를 사용할 때 해당 라이브러리에 포함된 악성 코드까지 실행되는 취약점입니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.result.s4.o0": "내장된 악성코드 취약점을 이용하여, 공격자는 사용자의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 내장된 악성코드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tkinter__embedded_malicious_code.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tmadserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tmadserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tmock__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tmock__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tmock__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.result.s2.o0": "해당 라이브러리는 인증 우회 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.result.s3.o0": "인증 우회 취약점은 필요한 인증 과정을 무시할 수 있는 취약점입니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.result.s4.o0": "인증 우회 취약점을 이용하여, 공격자는 제한된 정보에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 인증 우회 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tomato__le_0_0_5__authentication_bypass.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tomita__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tomita_parser__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tough_cookie__ge_0_9_7_le_2_2_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tough_cookie__lt_2_3_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__traceroute__le_1_0_0__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__truncate__lt_2_0_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__tunnel_agent__lt_0_6_0__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ua_parser__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ua_parser__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ua_parser__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_16__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ua_parser_js__lt_0_7_18__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uas_parser__lt_0_2_3__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uc_micro__le_1_0_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uekw1511server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uekw1511server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.result.s2.o0": "해당 라이브러리는 불충분한 비교 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.result.s3.o0": "불충분한 비교 취약점은 적절하지 않은 비교 연산을 통해 의도하지 않은 결과 도출이 가능한 취약점입니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.result.s4.o0": "불충분한 비교 취약점을 이용하여, 공격자는 비교 연산을 통한 검증 등을 우회할 수 있습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 비교 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uglify_js__le_2_4_23__insufficient_comparison.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uglify_js__lt_2_6_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uikit__ge_2_0_0_lt_2_26_4__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__underscore_string__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__underscore_string__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__underscore_string__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ungit__le_0_8_4__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__unicode__lt_9_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__unicode_json__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__unicorn_list__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__unicorn_list__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s2.o0": "해당 라이브러리는 Arbitrary File Write via Archive Extraction (Zip Slip) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s3.o0": "Arbitrary File Write via Archive Extraction (Zip Slip) 취약점은 NO_VULNERABILITY_DESCRIPTION",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s4.o0": "Arbitrary File Write via Archive Extraction (Zip Slip) 취약점을 이용하여, 공격자는 NO_RESULT_DESCRIPTION",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 Arbitrary File Write via Archive Extraction(Zip Slip) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__unzipper__lt_0_8_13__arbitrary_file_write_via_archive_extraction__zip_slip_.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uri_js__lt_3_0_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_12__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__useragent__lt_2_1_13__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ussasasa__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ussasasa__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__utahcityfinder__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uuid__lt_1_3_1__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uv_tj_demo__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__uws__ge_0_10_0_lt_0_10_9__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__valid_data_url__lt_0_1_5__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__valid_email__lt_1_0_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__validator__ge_3_0_0_lt_3_34_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__validator__lt_1_1_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__validator__lt_2_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__validator__lt_3_22_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.result.s2.o0": "해당 라이브러리는 버퍼 오버플로우 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.result.s3.o0": "버퍼 오버플로우 취약점은 개발자가 지정한 버퍼 위치를 벗어난 위치에 접근 및 수정이 가능한 취약점입니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.result.s4.o0": "버퍼 오버플로우 취약점을 이용하여, 공격자는 개발자가 의도하지 않은 데이터를 버퍼에 덮어쓸 수 있으며, 대상 애플리케이션의 특정 값 또는 흐름 제어 등을 조작할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 버퍼 오버플로우 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__validator__lt_5_0_0__buffer_overflow.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__validator__lt_9_4_1__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__vega__lt_2_4_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__vue__le_2_5_14__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__vue__le_2_5_14__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__vue__lt_2_3_0_beta_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__vue__lt_2_4_3__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wangguojing123__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wangguojing123__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wangshuai__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wangshuai__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wasdk__lt_1_0_42__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.result.s2.o0": "해당 라이브러리는 SQL 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.result.s3.o0": "SQL 삽입 취약점은 SQL 쿼리문의 조작 혹은 임의의 SQL 문의 실행이 가능한 취약점입니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.result.s4.o0": "SQL 삽입 취약점을 이용하여, 공격자는 데이터베이스 내부의 중요 정보의 탈취 및 조작이 가능합니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 SQL 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__waterline_sequel__le_0_5_0__sql_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__weather_swlyons__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__weathertest_bryceperkins__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__web_debug__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__web_debug__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__web_node_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__web_node_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__web_server_mock__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__web_server_mock__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__webdriver_launcher__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__webdrvr__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__webrepl__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__webrepl__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__webrtc_native__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__websocket_driver__lt_0_3_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__websvr__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__websvr__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__websvr__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__welcomyzt__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__welcomyzt__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wenluhong111__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wenluhong111__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wenluhong11__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wenluhong11__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wenluhong1__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wenluhong1__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__weyland__lt_2_1_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wffserve__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wffserve__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__whatwg_mimetype__lt_2_0_0__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__whereis__lt_0_4_1__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__whispercast__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__whispercast__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wicket__lt_1_3_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__willvdb_test_server__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wind_mvc__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wind_mvc__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__windows_build_tools__lt_1_0_0__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__windows_cpu__command_injection.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.result.s2.o0": "해당 라이브러리는 운영 체제 명령어 삽입 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.result.s3.o0": "운영 체제 명령어 삽입 취약점은 사용자가 입력한 명령어를 별도의 검증 과정 없이 실행하는 취약점입니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.result.s4.o0": "운영 체제 명령어 삽입 취약점을 이용하여, 공격자는 이로 인해 서버에 대한 주요 정보의 탈취 및 의도하지 않은 동작을 강제할 수 있습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 운영 체제 명령어 삽입 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__windows_cpu__command_injection.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__windows_iedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__windows_latestchromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__windows_selenium_chromedriver__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__windows_seleniumjar__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__windows_seleniumjar_mirror__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wintiwebdev__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wisper__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wisper__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wisper__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wixtoolset__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wrlc__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wrlc__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ws__ge_2_0_0_lt_3_3_1__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ws__le_1_1_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ws__le_1_1_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.result.s2.o0": "해당 라이브러리는 정보 노출 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.result.s3.o0": "정보 노출 취약점은 민감한 정보에 대한 보안이 충분하지 않아 해당 정보가 노출될 수 있는 취약점입니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.result.s4.o0": "정보 노출 취약점을 이용하여, 공격자는 민감한 정보로 접근 및 해당 정보의 탈취가 가능합니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ws__lt_1_0_1__information_exposure.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.result.s2.o0": "해당 라이브러리는 불충분한 난수값 사용 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.result.s3.o0": "불충분한 난수값 사용 취약점은 예측 가능한 난수값을 생성하는 취약점입니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.result.s4.o0": "불충분한 난수값 사용 취약점을 이용하여, 공격자는 비밀번호 또는 복호화 키로서 사용 가능한 난수값을 추론할 수 있습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 불충분한 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ws__lt_1_1_2__use_of_insufficiently_random_values.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__ws__lt_1_1_5__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wuzhuang__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wuzhuang__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wuzhuangserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__wysihtml__lt_0_4_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__xbhxbh__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__xbhxbh__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.result.s2.o0": "해당 라이브러리는 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.result.s3.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점은 다운로드 환경이 외부 개입에 대해 안전하지 않은 취약점입니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.result.s4.o0": "안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점을 이용하여, 공격자는 다운로드 대상 리소스를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 안전하지 않은 프로토콜을 통한 리소스 다운로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__xd_testing__resources_downloaded_over_insecure_protocol.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__xingbaohai__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__xingbaohai__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__xiongrui_httpserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.result.s2.o0": "해당 라이브러리는 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.result.s3.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점은 연산에 매우 오래 걸리는 (의도적으로 만들어진) 정규 표현식의 계산을 수행함으로써 서버가 다른 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.result.s4.o0": "정규식에 의한 서비스 거부(ReDoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 정규식에 의한 서비스 거부(ReDoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__xlsx__lt_0_12_2__redos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__xtalk__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__xtalk__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__xxf11__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__xxf11__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.result.s2.o0": "해당 라이브러리는 서비스 거부(DoS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.result.s3.o0": "서비스 거부(DoS) 취약점은 공격자의 리소스 강제 점유로 인하여 서버가 HTTP 요청을 정상적으로 처리할 수 없는 취약점입니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.result.s4.o0": "서비스 거부(DoS) 취약점을 이용하여, 공격자는 다른 정상 사용자들이 서비스를 사용할 수 없도록 할 수 있습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 서비스 거부(DoS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yar__lt_2_2_0__dos.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yjmyjmyjm__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yms__lt_1_0_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__youtransfer__file_upload.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__youtransfer__file_upload.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.result.s2.o0": "해당 라이브러리는 파일 업로드 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.result.s3.o0": "파일 업로드 취약점은 충분한 검증 단계 없이 파일 업로드를 허용하는 취약점입니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.result.s4.o0": "파일 업로드 취약점을 이용하여, 공격자는 서버에 악영향을 끼칠 수 있는 파일을 업로드할 수 있습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 파일 업로드 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__youtransfer__file_upload.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yttivy__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yttivy__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yui__eq_3_10_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_2_8_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yui__ge_2_4_0_lt_3_0_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_0__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yui__ge_3_0_0_lt_3_10_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yui__ge_3_5_0_pr1_lt_3_5_1__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yxxserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yxxserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yyooopack__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yyooopack__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yypsulie11__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yypsulie11__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__yzt__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__yzt__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__yzt__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zeroclipboard__ge_1_0_7_lt_1_3_2__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_0_8__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.result.s2.o0": "해당 라이브러리는 크로스 사이트 스크립트(XSS) 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.result.s3.o0": "크로스 사이트 스크립트(XSS) 취약점은 특정 웹 페이지에 실행 가능한 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.result.s4.o0": "크로스 사이트 스크립트(XSS) 취약점을 이용하여, 공격자는 악성 스크립트를 주입하거나 실행하고, 사용자의 정보(세션, 쿠키 등)를 탈취하거나 조작할 수 있습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 크로스 사이트 스크립트(XSS) 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zeroclipboard__lt_1_1_4__xss.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zhanglina__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zhanglina__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zhangranbigman__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zhaolei1111__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zjjserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zjjserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zs123__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zs123__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zs123__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zwserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zwserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.conditional.versioninfo": "{0}",
  "0.event.dacg_npm__zxyserver__directory_traversal.conditional.versionmsg": "해당 취약점이 존재하는 버전 범위 목록은 다음과 같습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.attack.s0.o0": "애플리케이션에서 취약한 Javascript 라이브러리를 사용하는 경우, 해당 라이브러리를 사용하는 애플리케이션 역시 취약할 수 있습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.attack.s1.o0": "취약한 Javascript 라이브러리 사용으로 인한 애플리케이션의 취약성을 확인하기 위해 다음과 같은 검사를 수행했습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.attack.s2.o0": "대상 페이지에서 {0} 라이브러리의 사용 여부 및 버전 정보를 탐색했습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.attack.s3.o0": "해당 라이브러리를 사용하는 경우, 해당 라이브러리의 모든 버전 혹은 일부 버전에 취약점이 존재하는지를 확인했습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.result.s0.o0": "분석 결과는 다음과 같습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.result.s1.o0": "대상 페이지에서 {0} 라이브러리의 {1} 버전을 사용했습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.result.s2.o0": "해당 라이브러리는 경로 조작 취약점이 존재하는 것으로 알려져 있습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.result.s3.o0": "경로 조작 취약점은 허용된 웹 루트 경로 외부의 다른 경로로의 접근이 가능한 취약점입니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.result.s4.o0": "경로 조작 취약점을 이용하여, 공격자는 제한된 경로의 파일 혹은 디렉토리에 대한 접근 및 조작이 가능합니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.result.s5.o0": "검사 결과, {0} 라이브러리 사용으로 인해 경로 조작 취약점이 존재함을 확인했습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.solution.s1.o0": "라이브러리를 취약점이 없는 버전으로 변경해야 합니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.solution.s1.o1": "가능하면 최신 버전의 라이브러리를 사용하는 것이 좋습니다.",
  "0.event.dacg_npm__zxyserver__directory_traversal.dacg.solution.s2.o0": "또는 취약점이 없는 다른 라이브러리로 대체하여 사용해야 합니다.",
  "0.event.dast.sw.common.6497.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.dast.sw.common.6497.closure.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.6497.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6497.closure.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.6497.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.dast.sw.common.6497.closure.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.6497.closure.attack.s3.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.dast.sw.common.6497.closure.attack.s4.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.dast.sw.common.6497.closure.attack.s4.o1": "{0}",
  "0.event.dast.sw.common.6497.closure.attack.s5.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.dast.sw.common.6497.closure.attack.s5.o1": "{0}",
  "0.event.dast.sw.common.6497.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.dast.sw.common.6497.closure.result.s0.o1": "{0}",
  "0.event.dast.sw.common.6497.closure.result.s1.o0": "분석 수행 결과, 로그아웃한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.dast.sw.common.6497.closure.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "0.event.dast.sw.common.6497.logout.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.dast.sw.common.6497.logout.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.6497.logout.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6497.logout.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.6497.logout.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.dast.sw.common.6497.logout.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.6497.logout.attack.s3.o0": "다음 URL에 해당하는 페이지에서 로그아웃을 시도했습니다.",
  "0.event.dast.sw.common.6497.logout.attack.s3.o1": "{0}",
  "0.event.dast.sw.common.6497.logout.attack.s4.o0": "로그아웃한 후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6497.logout.attack.s4.o1": "{0}",
  "0.event.dast.sw.common.6497.logout.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.dast.sw.common.6497.logout.attack.s5.o1": "{0}",
  "0.event.dast.sw.common.6497.logout.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.dast.sw.common.6497.logout.attack.s6.o1": "{0}",
  "0.event.dast.sw.common.6497.logout.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.dast.sw.common.6497.logout.result.s0.o1": "{0}",
  "0.event.dast.sw.common.6497.logout.result.s1.o0": "분석 수행 결과, 로그아웃한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.dast.sw.common.6497.logout.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "0.event.dast.sw.common.6498.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.dast.sw.common.6498.closure.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.6498.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6498.closure.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.6498.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.dast.sw.common.6498.closure.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.6498.closure.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.dast.sw.common.6498.closure.attack.s4.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.dast.sw.common.6498.closure.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.dast.sw.common.6498.closure.attack.s5.o1": "{0}",
  "0.event.dast.sw.common.6498.closure.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.dast.sw.common.6498.closure.attack.s6.o1": "{0}",
  "0.event.dast.sw.common.6498.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.dast.sw.common.6498.closure.result.s0.o1": "{0}",
  "0.event.dast.sw.common.6498.closure.result.s1.o0": "분석 수행 결과, 브라우저를 재실행한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.dast.sw.common.6498.closure.solution.s0.o0": "웹 애플리케이션의 Session Timeout을 설정합니다.",
  "0.event.dast.sw.common.6500.fixed.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 1차 시도했습니다.",
  "0.event.dast.sw.common.6500.fixed.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.6500.fixed.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6500.fixed.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.6500.fixed.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.dast.sw.common.6500.fixed.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.6500.fixed.attack.s3.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.dast.sw.common.6500.fixed.attack.s4.o0": "다음 URL에 해당하는 페이지에서 로그인을 2차 시도했습니다.",
  "0.event.dast.sw.common.6500.fixed.attack.s4.o1": "{0}",
  "0.event.dast.sw.common.6500.fixed.attack.s5.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6500.fixed.attack.s5.o1": "{0}",
  "0.event.dast.sw.common.6500.fixed.attack.s6.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.dast.sw.common.6500.fixed.attack.s6.o1": "{0}",
  "0.event.dast.sw.common.6500.fixed.result.s0.o0": "1차 및 2차 로그인 시도를 통해 생성된 세션 ID를 비교한 결과, 두 값이 동일합니다.\n",
  "0.event.dast.sw.common.6500.fixed.result.s1.o0": "분석 수행 결과, 세션 ID가 고정값에 해당함을 확인했습니다.",
  "0.event.dast.sw.common.6500.fixed.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "0.event.dast.sw.common.6500.fixed.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "0.event.dast.sw.common.6502.run.attack.s0.o0": "다음 URL에 해당하는 페이지에 접근을 시도했습니다.",
  "0.event.dast.sw.common.6502.run.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.6502.run.attack.s1.o0": "페이지에 존재하는 이벤트 중, 다음과 같은 XPath를 가지는 이벤트를 발견했습니다.",
  "0.event.dast.sw.common.6502.run.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.6502.run.attack.s2.o0": "해당 이벤트의 값을 다음과 같이 변경했습니다.",
  "0.event.dast.sw.common.6502.run.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.6502.run.attack.s3.o0": "페이지에 존재하는 이벤트 중, 다음과 같은 XPath를 가지는 이벤트를 실행했습니다.",
  "0.event.dast.sw.common.6502.run.attack.s3.o1": "{0}",
  "0.event.dast.sw.common.6502.run.attack.s4.o0": "해당 이벤트 실행 이후, SPARROW_DAST_XSS_TEST DOM 변수의 값을 검사했습니다.",
  "0.event.dast.sw.common.6502.run.result.s0.o0": "SPARROW_DAST_XSS_TEST DOM 변수의 값이 다음과 같습니다.",
  "0.event.dast.sw.common.6502.run.result.s0.o1": "{0}",
  "0.event.dast.sw.common.6502.run.result.s1.o0": "해당 값은 다음과 같은 XPath를 가지는 이벤트의 값에 해당하는 스크립트를 실제로 실행한 결과에 해당합니다.",
  "0.event.dast.sw.common.6502.run.result.s1.o1": "{0}",
  "0.event.dast.sw.common.6502.run.result.s2.o0": "분석 수행 결과, 사용자가 삽입한 임의의 스크립트가 실제로 실행될 수 있음을 확인했습니다.",
  "0.event.dast.sw.common.6502.run.solution.s0.o0": "사용자에게 제공되어 입력받은 값에 대해 입/출력값 검증작업이 필요합니다.",
  "0.event.dast.sw.common.6502.run.solution.s1.o0": "{0}",
  "0.event.dast.sw.common.6507.tampered.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.dast.sw.common.6507.tampered.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.6507.tampered.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6507.tampered.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.6507.tampered.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값을 사용자를 식별하는 계정 및 그룹에 해당하는 정보에 해당하는 것으로 간주했습니다. 해당 쿠키값은 다음과 같습니다.",
  "0.event.dast.sw.common.6507.tampered.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.6507.tampered.attack.s3.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.dast.sw.common.6507.tampered.attack.s4.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.dast.sw.common.6507.tampered.attack.s4.o1": "{0}",
  "0.event.dast.sw.common.6507.tampered.attack.s5.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.dast.sw.common.6507.tampered.attack.s5.o1": "{0}",
  "0.event.dast.sw.common.6507.tampered.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.dast.sw.common.6507.tampered.result.s0.o1": "{0}",
  "0.event.dast.sw.common.6507.tampered.result.s1.o0": "분석 수행 결과, 사용자를 식별하는 계정 및 그룹에 해당하는 정보에 해당하는 쿠키값을 변조하여 인증 우회가 가능함을 확인했습니다.",
  "0.event.dast.sw.common.6507.tampered.solution.s0.o0": "Cookie에 사용자 정보를 저장해야 하는 경우 해당 정보가 평문으로 노출되지 않도록 암호화된 값을 저장해야 합니다.\n",
  "0.event.dast.sw.common.6507.tampered.solution.s1.o0": "보안 가이드 내의 “3-6. 중요 정보 암호화 저장” 항목 조치 방법 중 [보안 강도에 따른 대칭키 암호 알고리즘 분류]를 참고하여, 권고하는 안전한 암호화 알고리즘을 적용할 수 있습니다.",
  "0.event.dast.sw.common.6533.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.dast.sw.common.6533.closure.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.6533.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6533.closure.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.6533.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.dast.sw.common.6533.closure.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.6533.closure.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.dast.sw.common.6533.closure.attack.s4.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.dast.sw.common.6533.closure.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.dast.sw.common.6533.closure.attack.s5.o1": "{0}",
  "0.event.dast.sw.common.6533.closure.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.dast.sw.common.6533.closure.attack.s6.o1": "{0}",
  "0.event.dast.sw.common.6533.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.dast.sw.common.6533.closure.result.s0.o1": "{0}",
  "0.event.dast.sw.common.6533.closure.result.s1.o0": "분석 수행 결과, 브라우저를 재실행한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.dast.sw.common.6533.closure.solution.s0.o0": "Session 유지를 위한 Baseline을 설정해야 합니다.\n",
  "0.event.dast.sw.common.6533.closure.solution.s1.o0": "내부 서비스 제공 시, Session Time 설정 여부로 판단 (EP, EIP 인트라넷 및 Business 지원 서비스 등)\n",
  "0.event.dast.sw.common.6533.closure.solution.s2.o0": "외부 서비스 제공 시, 60분 이하 설정 (대고객 서비스, 금융거래, 고객 관리 서비스 및 SK 대표 사이트 등)\n",
  "0.event.dast.sw.common.6533.closure.solution.s3.o0": "내부/외부 모두 로그아웃과 브라우저 종료 시 세션 폐기 수행\n",
  "0.event.dast.sw.common.6533.closure.solution.s4.o0": "서비스 목적에 따른 특수성 또는 예외성이 필요한 경우 사유 제시",
  "0.event.dast.sw.common.6534.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.dast.sw.common.6534.closure.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.6534.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.6534.closure.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.6534.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.dast.sw.common.6534.closure.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.6534.closure.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.dast.sw.common.6534.closure.attack.s4.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.dast.sw.common.6534.closure.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.dast.sw.common.6534.closure.attack.s5.o1": "{0}",
  "0.event.dast.sw.common.6534.closure.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.dast.sw.common.6534.closure.attack.s6.o1": "{0}",
  "0.event.dast.sw.common.6534.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.dast.sw.common.6534.closure.result.s0.o1": "{0}",
  "0.event.dast.sw.common.6534.closure.result.s1.o0": "분석 수행 결과, 브라우저를 재실행한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.dast.sw.common.6534.closure.solution.s0.o0": "웹 애플리케이션의 Session Timeout을 설정합니다.",
  "0.event.dast.sw.common.7151.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.dast.sw.common.7151.closure.attack.s0.o1": "{0}",
  "0.event.dast.sw.common.7151.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.dast.sw.common.7151.closure.attack.s1.o1": "{0}",
  "0.event.dast.sw.common.7151.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.dast.sw.common.7151.closure.attack.s2.o1": "{0}",
  "0.event.dast.sw.common.7151.closure.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.dast.sw.common.7151.closure.attack.s4.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.dast.sw.common.7151.closure.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.dast.sw.common.7151.closure.attack.s5.o1": "{0}",
  "0.event.dast.sw.common.7151.closure.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.dast.sw.common.7151.closure.attack.s6.o1": "{0}",
  "0.event.dast.sw.common.7151.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.dast.sw.common.7151.closure.result.s0.o1": "{0}",
  "0.event.dast.sw.common.7151.closure.result.s1.o0": "분석 수행 결과, 브라우저를 재실행한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.dast.sw.common.7151.closure.solution.s0.o0": "세션을 유지할 수 있는 기본값을 설정해야 합니다.\n",
  "0.event.dast.sw.common.7151.closure.solution.s1.o0": "1. 내부 서비스 제공 시, Session Time 설정 여부로 판단 (EP, EIP 인트라넷 및 Business 지원 서비스 등)\n",
  "0.event.dast.sw.common.7151.closure.solution.s2.o0": "2. 외부 서비스 제공 시, 60분 이하 설정 (대고객 서비스, 금융거래, 고객 관리 서비스 및 SK 대표 사이트 등)\n",
  "0.event.dast.sw.common.7151.closure.solution.s3.o0": "3. 내부/외부 모두 로그아웃과 브라우저 종료 시 세션 폐기 수행\n",
  "0.event.dast.sw.common.7151.closure.solution.s4.o0": "4. 서비스 목적에 따른 특수성 또는 예외성이 필요한 경우 사유 제시",
  "0.event.deprecated_components_in_html5.attr.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.deprecated_components_in_html5.attr.attack.s0.o1": "{0}",
  "0.event.deprecated_components_in_html5.attr.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.deprecated_components_in_html5.attr.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.deprecated_components_in_html5.attr.attack.s3.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.event.deprecated_components_in_html5.attr.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.deprecated_components_in_html5.attr.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.deprecated_components_in_html5.attr.result.s1.o1": "{0}",
  "0.event.deprecated_components_in_html5.attr.result.s2.o0": "해당 요소의 {0} 속성이 존재합니다. 해당 속성은 HTML5에서 더 이상 사용되지 않는 속성입니다.",
  "0.event.deprecated_components_in_html5.attr.solution.s0.o0": "{0} 요소의 {1} 속성을 제거하세요.",
  "0.event.deprecated_components_in_html5.tag.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.deprecated_components_in_html5.tag.attack.s0.o1": "{0}",
  "0.event.deprecated_components_in_html5.tag.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.deprecated_components_in_html5.tag.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.deprecated_components_in_html5.tag.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.deprecated_components_in_html5.tag.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.deprecated_components_in_html5.tag.result.s1.o1": "{0}",
  "0.event.deprecated_components_in_html5.tag.result.s2.o0": "해당 요소는 HTML5에서 더 이상 사용되지 않는 요소입니다.",
  "0.event.deprecated_components_in_html5.tag.solution.s0.o0": "{0} 요소를 제거하거나 다른 요소로 대체하세요.",
  "0.event.direct_page_redirection.access.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.direct_page_redirection.access.solution.s1.o0": "접근 제한이 필요한 URL에 대해서 URL 경로에 대한 사용자 검증을 수행해야 합니다.",
  "0.event.direct_page_redirection.access.solution.s2.o0": "이를 통해 권한이 없는 사용자가 해당 직접 접근하여도 페이지가 노출되지 않고 로그인 페이지로 이동하거나 오류 페이지가 표시되도록 합니다.",
  "0.event.email_address_disclosure.email.attack.s0.o0": "이메일 주소 노출 취약점은 이메일 주소가 노출되는 취약점입니다.",
  "0.event.email_address_disclosure.email.attack.s1.o0": "이메일 주소 노출 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.email_address_disclosure.email.attack.s2.o0": "페이지 내부의 텍스트에 절대 경로가 존재하는지 검사했습니다.",
  "0.event.email_address_disclosure.email.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.email_address_disclosure.email.result.s1.o0": "페이지 내부의 텍스트에서 이메일 주소로 추정되는 다음과 같은 내용을 발견했습니다.",
  "0.event.email_address_disclosure.email.result.s2.o0": "{0}",
  "0.event.email_address_disclosure.email.result.s3.o0": "검사 결과, 이메일 주소 노출 취약점이 존재함을 확인했습니다.",
  "0.event.email_address_disclosure.email.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.email_address_disclosure.email.solution.s1.o0": "절대 경로가 페이지에 노출되지 않도록 해당 정보를 삭제하세요.",
  "0.event.external_redirect.conditional.apiReqInfo": "{0}",
  "0.event.external_redirect.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.external_redirect.conditional.apireqinfo": "{0}",
  "0.event.external_redirect.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.external_redirect.redirection.attack.s0.o0": "검증되지 않은 리다이렉션 취약점은 웹 애플리케이션이 사용자가 입력한 신뢰할 수 없는 링크로 연결되는 취약점입니다.",
  "0.event.external_redirect.redirection.attack.s1.o0": "검증되지 않은 리다이렉션 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.external_redirect.redirection.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.external_redirect.redirection.attack.s3.o0": "{0}",
  "0.event.external_redirect.redirection.attack.s4.o0": "탐색 결과, 다음과 같은 공격 대상 요소를 탐색했습니다.",
  "0.event.external_redirect.redirection.attack.s5.o0": "{0}",
  "0.event.external_redirect.redirection.attack.s6.o0": "공격 대상에 다음과 같이 입력했습니다.(공격 문자열은 공격 대상 요소의 XPath값의 해시값을 포함합니다)",
  "0.event.external_redirect.redirection.attack.s7.o0": "{0}",
  "0.event.external_redirect.redirection.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.external_redirect.redirection.attack.s9.o0": "{0}",
  "0.event.external_redirect.redirection.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.external_redirect.redirection.result.s1.o0": "이벤트 수행 결과, 다음과 같은 URL 주소로의 이동을 확인했습니다.",
  "0.event.external_redirect.redirection.result.s2.o0": "{0}",
  "0.event.external_redirect.redirection.result.s3.o0": "해당 URL 주소는 {0} 와 같은 이름을 가지는 매개변수를 가지며, 값은 {1} 입니다.",
  "0.event.external_redirect.redirection.result.s4.o0": "해당 매개변수의 값은 탐색한 공격 대상을 통해 리다이렉션이 수행되었음을 확인할 수 있습니다.",
  "0.event.external_redirect.redirection.result.s5.o0": "실행 결과, 공격 시도가 성공했으며 검증되지 않은 리다이렉션 취약점이 존재함을 확인했습니다.",
  "0.event.external_redirect.redirection.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.external_redirect.redirection.solution.s1.o0": "외부 입력값을 기반으로 하여 다른 URL 주소로 이동하는 경우를 제거하는 것이 가장 좋습니다.",
  "0.event.external_redirect.redirection.solution.s2.o0": "제거할 수 없는 경우, 입력받은 값에 대하여 검증 및 필터링을 수행해야 합니다.",
  "0.event.fixed_session_id.fixed.attack.s0.o0": "로그인 전과 후의 세션 ID가 동일한지 확인합니다.",
  "0.event.fixed_session_id.fixed.result.s0.o0": "로그인 전과 후의 값이 동일합니다.",
  "0.event.fixed_session_id.fixed.result.s0.o1": "{0}",
  "0.event.fixed_session_id.fixed.solution.s0.o0": "로그인 후 기존 세션을 폐기하고, 새로운 세션을 생성해야 합니다. 세션 ID가 재생성되면 세션 하이재킹과 같은 공격을 방지할 수 있습니다. 대부분의 웹 프레임워크는 로그인 시 세션을 재생성하는 기능을 제공하므로 이를 활용하거나 직접 구현해야 합니다.",
  "0.event.format_string.conditional.apiReqInfo": "{0}",
  "0.event.format_string.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.format_string.conditional.apireqinfo": "{0}",
  "0.event.format_string.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.format_string.formatString.attack.s0.o0": "형식 문자열 삽입 취약점은 형식 문자열을 포함하는 라이브러리 또는 함수에서 사용자 입력을 사용하여 공격자가 형식 문자열을 사용할 수 있는 취약점입니다.",
  "0.event.format_string.formatString.attack.s1.o0": "형식 문자열 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.format_string.formatString.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.format_string.formatString.attack.s3.o0": "{0}",
  "0.event.format_string.formatString.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "0.event.format_string.formatString.attack.s5.o0": "{0}",
  "0.event.format_string.formatString.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.format_string.formatString.attack.s7.o0": "{0}",
  "0.event.format_string.formatString.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.format_string.formatString.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "0.event.format_string.formatString.result.s2.o0": "{0}",
  "0.event.format_string.formatString.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "0.event.format_string.formatString.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 형식 문자열 삽입 취약점의 존재 가능성을 발견했습니다.",
  "0.event.format_string.formatString.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.format_string.formatString.solution.s1.o0": "형식 문자열 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 형식 문자열을 구성하는 경우에서의 데이터 검증이 필요합니다.",
  "0.event.format_string.formatString.solution.s2.o0": "입력 받은 데이터에 토큰이 포함되는지 확인하는 등 입력 받은 값으로 인해 발생한 오류를 적절히 처리해야 합니다.",
  "0.event.format_string.formatString.solution.s3.o0": "또는 웹 서버, WAS 등에 존재하는 취약점에 대하여 각 제공사에서 제공하는 최신 패치를 적용하여 취약점을 해결할 수 있습니다.",
  "0.event.format_string.formatstring.attack.s0.o0": "형식 문자열 삽입 취약점은 형식 문자열을 포함하는 라이브러리 또는 함수에서 사용자 입력을 사용하여 공격자가 형식 문자열을 사용할 수 있는 취약점입니다.",
  "0.event.format_string.formatstring.attack.s1.o0": "형식 문자열 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.format_string.formatstring.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.format_string.formatstring.attack.s3.o0": "{0}",
  "0.event.format_string.formatstring.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "0.event.format_string.formatstring.attack.s5.o0": "{0}",
  "0.event.format_string.formatstring.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.format_string.formatstring.attack.s7.o0": "{0}",
  "0.event.format_string.formatstring.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.format_string.formatstring.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "0.event.format_string.formatstring.result.s2.o0": "{0}",
  "0.event.format_string.formatstring.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "0.event.format_string.formatstring.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 형식 문자열 삽입 취약점의 존재 가능성을 발견했습니다.",
  "0.event.format_string.formatstring.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.format_string.formatstring.solution.s1.o0": "형식 문자열 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 형식 문자열을 구성하는 경우에서의 데이터 검증이 필요합니다.",
  "0.event.format_string.formatstring.solution.s2.o0": "입력 받은 데이터에 토큰이 포함되는지 확인하는 등 입력 받은 값으로 인해 발생한 오류를 적절히 처리해야 합니다.",
  "0.event.format_string.formatstring.solution.s3.o0": "또는 웹 서버, WAS 등에 존재하는 취약점에 대하여 각 제공사에서 제공하는 최신 패치를 적용하여 취약점을 해결할 수 있습니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.attack.s0.o1": "{0}",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.attack.s3.o0": "해당 요소의 내부 텍스트 값을 검사했습니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.result.s1.o1": "{0}",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.result.s2.o0": "해당 요소의 내부 텍스트 값이 반복된 특수 문자를 포함하고 있습니다. 해당 내부 텍스트 값에 포함된 특수 문자는 {0}입니다. 해당 내부 텍스트 값은 다음과 같습니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.result.s2.o1": "{0}",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.result.s3.o0": "해당 내부 텍스트 값은 페이지 제목으로 사용하기에 적절하지 않습니다.",
  "0.event.inappropriate_title.duplicate_special_characters_in_page_title.solution.s0.o0": "{0} 요소의 내부 텍스트 값에서 동일한 특수 문자가 두 개 이상 연속되지 않도록 수정하세요.",
  "0.event.inappropriate_title.empty_frame_title.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.inappropriate_title.empty_frame_title.attack.s0.o1": "{0}",
  "0.event.inappropriate_title.empty_frame_title.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.inappropriate_title.empty_frame_title.attack.s2.o0": "분석 대상 페이지에서 프레임을 탐색했습니다.",
  "0.event.inappropriate_title.empty_frame_title.attack.s3.o0": "해당 프레임의 {0} 속성을 탐색했습니다.",
  "0.event.inappropriate_title.empty_frame_title.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.inappropriate_title.empty_frame_title.result.s1.o0": "분석 대상 페이지에는 프레임에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.inappropriate_title.empty_frame_title.result.s1.o1": "{0}",
  "0.event.inappropriate_title.empty_frame_title.result.s2.o0": "해당 요소의 {0} 속성 값이 빈 문자열이므로 프레임 제목이 누락되었습니다.",
  "0.event.inappropriate_title.empty_frame_title.solution.s0.o0": "{0} 요소의 {1} 속성 값을 비어있지 않은 문자열로 설정하세요.",
  "0.event.inappropriate_title.empty_page_title.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.inappropriate_title.empty_page_title.attack.s0.o1": "{0}",
  "0.event.inappropriate_title.empty_page_title.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.inappropriate_title.empty_page_title.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.inappropriate_title.empty_page_title.attack.s3.o0": "해당 요소의 내부 텍스트 값을 검사했습니다.",
  "0.event.inappropriate_title.empty_page_title.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.inappropriate_title.empty_page_title.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.inappropriate_title.empty_page_title.result.s1.o1": "{0}",
  "0.event.inappropriate_title.empty_page_title.result.s2.o0": "해당 요소의 내부 텍스트 값이 빈 문자열이므로 페이지 제목이 누락되었습니다.",
  "0.event.inappropriate_title.empty_page_title.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 비어있지 않은 문자열로 설정하세요.",
  "0.event.inappropriate_title.no_frame_title.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.inappropriate_title.no_frame_title.attack.s0.o1": "{0}",
  "0.event.inappropriate_title.no_frame_title.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.inappropriate_title.no_frame_title.attack.s2.o0": "분석 대상 페이지에서 프레임을 탐색했습니다.",
  "0.event.inappropriate_title.no_frame_title.attack.s3.o0": "해당 프레임의 {0} 속성을 탐색했습니다.",
  "0.event.inappropriate_title.no_frame_title.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.inappropriate_title.no_frame_title.result.s1.o0": "분석 대상 페이지에는 프레임에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.inappropriate_title.no_frame_title.result.s1.o1": "{0}",
  "0.event.inappropriate_title.no_frame_title.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 프레임 제목이 누락되었습니다.",
  "0.event.inappropriate_title.no_frame_title.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "0.event.inappropriate_title.no_page_title.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.inappropriate_title.no_page_title.attack.s0.o1": "{0}",
  "0.event.inappropriate_title.no_page_title.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.inappropriate_title.no_page_title.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.inappropriate_title.no_page_title.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.inappropriate_title.no_page_title.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재하지 않습니다. 해당 요소가 없으므로 페이지 제목이 누락되었습니다.",
  "0.event.inappropriate_title.no_page_title.solution.s0.o0": "{0} 요소를 추가하세요.",
  "0.event.incompatible_css.css.attack.s0.o0": "다음과 같은 과정으로 첫 번째 분석 대상 페이지에 접근했습니다.",
  "0.event.incompatible_css.css.attack.s0.o1": "{0}",
  "0.event.incompatible_css.css.attack.s1.o0": "첫 번째 분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.incompatible_css.css.attack.s2.o0": "첫 번째 분석 대상 페이지에서 CSS 문서로의 연결을 탐색했습니다.",
  "0.event.incompatible_css.css.attack.s3.o0": "탐색한 연결을 따라가기 위해 두 번째 분석 대상 페이지에 접근했습니다. 두 번째 분석 대상 페이지의 URL은 다음과 같습니다.",
  "0.event.incompatible_css.css.attack.s3.o1": "{0}",
  "0.event.incompatible_css.css.attack.s4.o0": "두 번째 분석 대상 페이지가 CSS 문서인지를 검사했습니다.",
  "0.event.incompatible_css.css.attack.s5.o0": "두 번째 분석 대상 페이지에 대하여 CSS 구문 분석을 수행했습니다.",
  "0.event.incompatible_css.css.result.s0.o0": "첫 번째 분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.incompatible_css.css.result.s1.o0": "첫 번째 분석 대상 페이지에 CSS 문서로의 연결에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.incompatible_css.css.result.s1.o1": "{0}",
  "0.event.incompatible_css.css.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "0.event.incompatible_css.css.result.s2.o1": "{0}",
  "0.event.incompatible_css.css.result.s3.o0": "두 번째 분석 대상 페이지가 CSS 문서에 해당합니다.",
  "0.event.incompatible_css.css.result.s4.o0": "두 번째 분석 대상 페이지에 대한 CSS 구문 분석 결과, {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "0.event.incompatible_css.css.solution.s0.o0": "{0} 속성을 제거하거나 다른 속성으로 대체하세요.",
  "0.event.incompatible_css.html.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.incompatible_css.html.attack.s0.o1": "{0}",
  "0.event.incompatible_css.html.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.incompatible_css.html.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.incompatible_css.html.attack.s3.o0": "탐색한 요소의 내부 텍스트 값에 대하여 CSS 구문 분석을 수행했습니다.",
  "0.event.incompatible_css.html.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.incompatible_css.html.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.incompatible_css.html.result.s1.o1": "{0}",
  "0.event.incompatible_css.html.result.s2.o0": "해당 요소의 내부 텍스트에 대한 CSS 구문 분석 결과, {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "0.event.incompatible_css.html.solution.s0.o0": "{0} 속성을 제거하거나 다른 속성으로 대체하세요.",
  "0.event.incompatible_html.attr.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.incompatible_html.attr.attack.s0.o1": "{0}",
  "0.event.incompatible_html.attr.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.incompatible_html.attr.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.incompatible_html.attr.attack.s3.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.event.incompatible_html.attr.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.incompatible_html.attr.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.incompatible_html.attr.result.s1.o1": "{0}",
  "0.event.incompatible_html.attr.result.s2.o0": "해당 요소에 {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "0.event.incompatible_html.attr.solution.s0.o0": "{0} 요소의 {1} 속성을 제거하세요.",
  "0.event.incompatible_html.tag.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.incompatible_html.tag.attack.s0.o1": "{0}",
  "0.event.incompatible_html.tag.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.incompatible_html.tag.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.incompatible_html.tag.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.incompatible_html.tag.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.incompatible_html.tag.result.s1.o1": "{0}",
  "0.event.incompatible_html.tag.result.s2.o0": "해당 요소는 일부 브라우저에서 지원하지 않습니다.",
  "0.event.incompatible_html.tag.solution.s0.o0": "{0} 요소를 제거하거나 다른 요소로 대체하세요.",
  "0.event.incompatible_js.html_over_es5.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.incompatible_js.html_over_es5.attack.s0.o1": "{0}",
  "0.event.incompatible_js.html_over_es5.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.incompatible_js.html_over_es5.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.incompatible_js.html_over_es5.attack.s3.o0": "탐색한 요소의 내부 텍스트 값에 대하여 Javascript 구문 분석을 수행했습니다.",
  "0.event.incompatible_js.html_over_es5.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.incompatible_js.html_over_es5.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.incompatible_js.html_over_es5.result.s1.o1": "{0}",
  "0.event.incompatible_js.html_over_es5.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 Javascript 구문 분석 결과, Javascript 버전이 {0}인 경우에만 사용 가능한 기능이 존재합니다. 해당 기능의 이름은 다음과 같습니다.",
  "0.event.incompatible_js.html_over_es5.result.s2.o1": "{0}",
  "0.event.incompatible_js.html_over_es5.result.s3.o0": "해당 기능은 일부 브라우저에서 지원하지 않습니다.",
  "0.event.incompatible_js.html_over_es5.solution.s0.o0": "{0} 기능을 제거하거나 다른 기능으로 대체하세요.",
  "0.event.incompatible_js.js_over_es5.attack.s0.o0": "다음과 같은 과정으로 첫 번째 분석 대상 페이지에 접근했습니다.",
  "0.event.incompatible_js.js_over_es5.attack.s0.o1": "{0}",
  "0.event.incompatible_js.js_over_es5.attack.s1.o0": "첫 번째 분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.incompatible_js.js_over_es5.attack.s2.o0": "첫 번째 분석 대상 페이지에서 Javascript 문서로의 연결을 탐색했습니다.",
  "0.event.incompatible_js.js_over_es5.attack.s3.o0": "탐색한 연결을 따라가기 위해 두 번째 분석 대상 페이지에 접근했습니다. 두 번째 분석 대상 페이지의 URL은 다음과 같습니다.",
  "0.event.incompatible_js.js_over_es5.attack.s3.o1": "{0}",
  "0.event.incompatible_js.js_over_es5.attack.s4.o0": "두 번째 분석 대상 페이지가 Javascript 문서인지를 검사했습니다.",
  "0.event.incompatible_js.js_over_es5.attack.s5.o0": "두 번째 분석 대상 페이지에 대하여 Javascript 구문 분석을 수행했습니다.",
  "0.event.incompatible_js.js_over_es5.result.s0.o0": "첫 번째 분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.incompatible_js.js_over_es5.result.s1.o0": "첫 번째 분석 대상 페이지에 Javascript 문서로의 연결에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.incompatible_js.js_over_es5.result.s1.o1": "{0}",
  "0.event.incompatible_js.js_over_es5.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.event.incompatible_js.js_over_es5.result.s2.o1": "{0}",
  "0.event.incompatible_js.js_over_es5.result.s3.o0": "두 번째 분석 대상 페이지가 Javascript 문서에 해당합니다.",
  "0.event.incompatible_js.js_over_es5.result.s4.o0": "두 번째 분석 대상 페이지에 대한 Javascript 구문 분석 결과, Javascript 버전이 {0}인 경우에만 사용 가능한 기능이 존재합니다. 해당 기능의 이름은 다음과 같습니다.",
  "0.event.incompatible_js.js_over_es5.result.s4.o1": "{0}",
  "0.event.incompatible_js.js_over_es5.result.s5.o0": "해당 기능은 일부 브라우저에서 지원하지 않습니다.",
  "0.event.incompatible_js.js_over_es5.solution.s0.o0": "{0} 기능을 제거하거나 다른 기능으로 대체하세요.",
  "0.event.incomplete_session_expiration.custom_expires.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.incomplete_session_expiration.custom_expires.attack.s0.o1": "{0}",
  "0.event.incomplete_session_expiration.custom_expires.attack.s1.o0": "공격 대상 페이지에 대하여 이벤트 클립보드의 이벤트 수행 기록이 존재합니다.",
  "0.event.incomplete_session_expiration.custom_expires.attack.s1.o1": "해당 이벤트 수행 기록은 로그인을 수행할 때 사용할 수 있습니다.",
  "0.event.incomplete_session_expiration.custom_expires.attack.s2.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.incomplete_session_expiration.custom_expires.attack.s2.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 로그인을 수행했습니다.",
  "0.event.incomplete_session_expiration.custom_expires.attack.s3.o0": "로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.incomplete_session_expiration.custom_expires.attack.s3.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.incomplete_session_expiration.custom_expires.result.s0.o0": "로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.incomplete_session_expiration.custom_expires.result.s0.o1": "{0}",
  "0.event.incomplete_session_expiration.custom_expires.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.incomplete_session_expiration.custom_expires.result.s1.o0": "세션 ID 정보를 가지는 쿠키의 유효 기간을 확인했습니다.",
  "0.event.incomplete_session_expiration.custom_expires.result.s1.o1": "해당 쿠키의 유효 기간은 {0}까지입니다.",
  "0.event.incomplete_session_expiration.custom_expires.result.s2.o0": "분석 수행 결과, 세션 ID 정보를 가지는 쿠키는 로그인 이후 {0}초 동안 유효함을 확인했습니다.",
  "0.event.incomplete_session_expiration.custom_expires.result.s2.o1": "따라서 세션을 가지는 클라이언트에 대하여, 서버는 해당 유효 기간 동안 추가적인 인증을 요구하지 않게 됩니다.",
  "0.event.incomplete_session_expiration.custom_expires.solution.s0.o0": "각 세션에 대하여 최소 10분 이후에는 해당 세션이 만료되도록 설정해야 합니다.",
  "0.event.incomplete_session_expiration.expires.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.incomplete_session_expiration.expires.attack.s0.o1": "{0}",
  "0.event.incomplete_session_expiration.expires.attack.s1.o0": "공격 대상 페이지에 대하여 이벤트 클립보드의 이벤트 수행 기록이 존재합니다.",
  "0.event.incomplete_session_expiration.expires.attack.s1.o1": "해당 이벤트 수행 기록은 로그인을 수행할 때 사용할 수 있습니다.",
  "0.event.incomplete_session_expiration.expires.attack.s2.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.incomplete_session_expiration.expires.attack.s2.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 로그인을 수행했습니다.",
  "0.event.incomplete_session_expiration.expires.attack.s3.o0": "로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.incomplete_session_expiration.expires.result.s0.o0": "로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.incomplete_session_expiration.expires.result.s0.o1": "{0}",
  "0.event.incomplete_session_expiration.expires.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.incomplete_session_expiration.expires.result.s1.o0": "세션 ID 정보를 가지는 쿠키의 유효 기간을 확인했습니다.",
  "0.event.incomplete_session_expiration.expires.result.s1.o1": "해당 쿠키의 유효 기간은 {0}까지입니다.",
  "0.event.incomplete_session_expiration.expires.result.s2.o0": "분석 수행 결과, 세션 ID 정보를 가지는 쿠키는 로그인 이후 {0}초 동안 유효함을 확인했습니다.",
  "0.event.incomplete_session_expiration.expires.result.s2.o1": "따라서 세션을 가지는 클라이언트에 대하여, 서버는 해당 유효 기간 동안 추가적인 인증을 요구하지 않게 됩니다.",
  "0.event.incomplete_session_expiration.expires.solution.s0.o0": "각 세션에 대하여 최소 10분 이후에는 해당 세션이 만료되도록 설정해야 합니다.",
  "0.event.invalid_css.css_error.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_css.css_error.attack.s0.o1": "{0}",
  "0.event.invalid_css.css_error.attack.s1.o0": "첫 번째 분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_css.css_error.attack.s2.o0": "첫 번째 분석 대상 페이지에서 스타일 시트 문서로의 연결을 탐색했습니다.",
  "0.event.invalid_css.css_error.attack.s3.o0": "탐색한 연결을 따라가기 위해 두 번째 분석 대상 페이지에 접근했습니다. 두 번째 분석 대상 페이지의 URL은 다음과 같습니다.",
  "0.event.invalid_css.css_error.attack.s3.o1": "{0}",
  "0.event.invalid_css.css_error.attack.s4.o0": "두 번째 분석 대상 페이지가 CSS 문서인지를 검사했습니다.",
  "0.event.invalid_css.css_error.attack.s5.o0": "두 번째 분석 대상 페이지에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "0.event.invalid_css.css_error.result.s0.o0": "첫 번째 분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_css.css_error.result.s1.o0": "첫 번째 분석 대상 페이지에서 스타일 시트 문서로의 연결에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_css.css_error.result.s1.o1": "{0}",
  "0.event.invalid_css.css_error.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "0.event.invalid_css.css_error.result.s2.o1": "{0}",
  "0.event.invalid_css.css_error.result.s3.o0": "두 번째 분석 대상 페이지가 CSS 문서에 해당합니다.",
  "0.event.invalid_css.css_error.result.s4.o0": "두 번째 분석 대상 페이지에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '오류' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "0.event.invalid_css.css_error.result.s4.o1": "{0}",
  "0.event.invalid_css.css_error.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 두 번째 분석 대상 페이지에 해당하는 스타일 시트 문서를 수정하세요.",
  "0.event.invalid_css.css_warning.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_css.css_warning.attack.s0.o1": "{0}",
  "0.event.invalid_css.css_warning.attack.s1.o0": "첫 번째 분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_css.css_warning.attack.s2.o0": "첫 번째 분석 대상 페이지에서 스타일 시트 문서로의 연결을 탐색했습니다.",
  "0.event.invalid_css.css_warning.attack.s3.o0": "탐색한 연결을 따라가기 위해 두 번째 분석 대상 페이지에 접근했습니다. 두 번째 분석 대상 페이지의 URL은 다음과 같습니다.",
  "0.event.invalid_css.css_warning.attack.s3.o1": "{0}",
  "0.event.invalid_css.css_warning.attack.s4.o0": "두 번째 분석 대상 페이지가 CSS 문서인지를 검사했습니다.",
  "0.event.invalid_css.css_warning.attack.s5.o0": "두 번째 분석 대상 페이지에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "0.event.invalid_css.css_warning.result.s0.o0": "첫 번째 분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_css.css_warning.result.s1.o0": "첫 번째 분석 대상 페이지에서 스타일 시트 문서로의 연결에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_css.css_warning.result.s1.o1": "{0}",
  "0.event.invalid_css.css_warning.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "0.event.invalid_css.css_warning.result.s2.o1": "{0}",
  "0.event.invalid_css.css_warning.result.s3.o0": "두 번째 분석 대상 페이지가 CSS 문서에 해당합니다.",
  "0.event.invalid_css.css_warning.result.s4.o0": "두 번째 분석 대상 페이지에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '경고' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "0.event.invalid_css.css_warning.result.s4.o1": "{0}",
  "0.event.invalid_css.css_warning.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 두 번째 분석 대상 페이지에 해당하는 스타일 시트 문서를 수정하세요.",
  "0.event.invalid_css.html_error.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_css.html_error.attack.s0.o1": "{0}",
  "0.event.invalid_css.html_error.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_css.html_error.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.invalid_css.html_error.attack.s3.o0": "탐색한 요소의 내부 텍스트 값에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "0.event.invalid_css.html_error.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_css.html_error.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_css.html_error.result.s1.o1": "{0}",
  "0.event.invalid_css.html_error.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '오류' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "0.event.invalid_css.html_error.result.s2.o1": "{0}",
  "0.event.invalid_css.html_error.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 분석 대상 페이지에서 탐색한 {0} 요소의 내부 텍스트 값을 수정하세요.",
  "0.event.invalid_css.html_warning.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_css.html_warning.attack.s0.o1": "{0}",
  "0.event.invalid_css.html_warning.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_css.html_warning.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.invalid_css.html_warning.attack.s3.o0": "탐색한 요소의 내부 텍스트 값에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "0.event.invalid_css.html_warning.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_css.html_warning.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_css.html_warning.result.s1.o1": "{0}",
  "0.event.invalid_css.html_warning.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '경고' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "0.event.invalid_css.html_warning.result.s2.o1": "{0}",
  "0.event.invalid_css.html_warning.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 분석 대상 페이지에서 탐색한 {0} 요소의 내부 텍스트 값을 수정하세요.",
  "0.event.invalid_html.error.attack.s0.o0": "분석 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.invalid_html.error.attack.s0.o1": "{0}",
  "0.event.invalid_html.error.attack.s1.o0": "분석 대상 페이지가 (X)HTML 문서인지를 검사했습니다.",
  "0.event.invalid_html.error.attack.s2.o0": "분석 대상 페이지에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "0.event.invalid_html.error.result.s0.o0": "분석 대상 페이지가 (X)HTML 문서에 해당합니다.",
  "0.event.invalid_html.error.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '오류' 항목이 발생했습니다.",
  "0.event.invalid_html.error.result.s1.o1": "{0}",
  "0.event.invalid_html.error.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 HTTP 응답 본문에 해당하는 (X)HTML 문서를 수정하세요.",
  "0.event.invalid_html.fatal.attack.s0.o0": "분석 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.invalid_html.fatal.attack.s0.o1": "{0}",
  "0.event.invalid_html.fatal.attack.s1.o0": "분석 대상 페이지가 (X)HTML 문서인지를 검사했습니다.",
  "0.event.invalid_html.fatal.attack.s2.o0": "분석 대상 페이지에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "0.event.invalid_html.fatal.result.s0.o0": "분석 대상 페이지가 (X)HTML 문서에 해당합니다.",
  "0.event.invalid_html.fatal.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '심각' 항목이 발생했습니다.",
  "0.event.invalid_html.fatal.result.s1.o1": "{0}",
  "0.event.invalid_html.fatal.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 분석 대상 페이지에 해당하는 (X)HTML 문서를 수정하세요.",
  "0.event.invalid_html.warning.attack.s0.o0": "분석 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.invalid_html.warning.attack.s0.o1": "{0}",
  "0.event.invalid_html.warning.attack.s1.o0": "분석 대상 페이지가 (X)HTML 문서인지를 검사했습니다.",
  "0.event.invalid_html.warning.attack.s2.o0": "분석 대상 페이지에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "0.event.invalid_html.warning.result.s0.o0": "분석 대상 페이지가 (X)HTML 문서에 해당합니다.",
  "0.event.invalid_html.warning.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '경고' 항목이 발생했습니다.",
  "0.event.invalid_html.warning.result.s1.o1": "{0}",
  "0.event.invalid_html.warning.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 HTTP 응답 본문에 해당하는 (X)HTML 문서를 수정하세요.",
  "0.event.invalid_link_text.a_blank.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_link_text.a_blank.attack.s0.o1": "{0}",
  "0.event.invalid_link_text.a_blank.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_link_text.a_blank.attack.s2.o0": "분석 대상 페이지에서 링크를 탐색했습니다.",
  "0.event.invalid_link_text.a_blank.attack.s3.o0": "탐색한 링크의 내부 텍스트 값을 검사했습니다.",
  "0.event.invalid_link_text.a_blank.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_link_text.a_blank.result.s1.o0": "분석 대상 페이지에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_link_text.a_blank.result.s1.o1": "{0}",
  "0.event.invalid_link_text.a_blank.result.s2.o0": "해당 요소의 내부 텍스트 값이 공백으로만 이루어진 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "0.event.invalid_link_text.a_blank.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 공백이 아닌 문자가 포함된 문자열로 설정하세요.",
  "0.event.invalid_link_text.a_empty.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_link_text.a_empty.attack.s0.o1": "{0}",
  "0.event.invalid_link_text.a_empty.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_link_text.a_empty.attack.s2.o0": "분석 대상 페이지에서 링크를 탐색했습니다.",
  "0.event.invalid_link_text.a_empty.attack.s3.o0": "탐색한 링크의 내부 텍스트 값을 검사했습니다.",
  "0.event.invalid_link_text.a_empty.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_link_text.a_empty.result.s1.o0": "분석 대상 페이지에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_link_text.a_empty.result.s1.o1": "{0}",
  "0.event.invalid_link_text.a_empty.result.s2.o0": "해당 요소의 내부 텍스트 값이 빈 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "0.event.invalid_link_text.a_empty.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 비어있지 않은 문자열로 설정하세요.",
  "0.event.invalid_link_text.area_blank.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_link_text.area_blank.attack.s0.o1": "{0}",
  "0.event.invalid_link_text.area_blank.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_link_text.area_blank.attack.s2.o0": "분석 대상 페이지에서 링크를 탐색했습니다.",
  "0.event.invalid_link_text.area_blank.attack.s3.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "0.event.invalid_link_text.area_blank.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_link_text.area_blank.result.s1.o0": "분석 대상 페이지에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_link_text.area_blank.result.s1.o1": "{0}",
  "0.event.invalid_link_text.area_blank.result.s2.o0": "해당 요소의 {0} 속성 값이 공백으로만 이루어진 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "0.event.invalid_link_text.area_blank.solution.s0.o0": "{0} 요소의 {1} 값을 공백이 아닌 문자가 포함된 문자열로 설정하세요.",
  "0.event.invalid_link_text.area_empty.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_link_text.area_empty.attack.s0.o1": "{0}",
  "0.event.invalid_link_text.area_empty.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_link_text.area_empty.attack.s2.o0": "분석 대상 페이지에서 링크를 탐색했습니다.",
  "0.event.invalid_link_text.area_empty.attack.s3.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "0.event.invalid_link_text.area_empty.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_link_text.area_empty.result.s1.o0": "분석 대상 페이지에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_link_text.area_empty.result.s1.o1": "{0}",
  "0.event.invalid_link_text.area_empty.result.s2.o0": "해당 요소의 {0} 속성 값이 빈 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "0.event.invalid_link_text.area_empty.solution.s0.o0": "{0} 요소의 {1} 값을 비어있지 않은 문자열로 설정하세요.",
  "0.event.invalid_link_text.area_none.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.invalid_link_text.area_none.attack.s0.o1": "{0}",
  "0.event.invalid_link_text.area_none.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.invalid_link_text.area_none.attack.s2.o0": "분석 대상 페이지에서 링크를 탐색했습니다.",
  "0.event.invalid_link_text.area_none.attack.s3.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "0.event.invalid_link_text.area_none.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.invalid_link_text.area_none.result.s1.o0": "분석 대상 페이지에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.invalid_link_text.area_none.result.s1.o1": "{0}",
  "0.event.invalid_link_text.area_none.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 링크 텍스트가 누락되었습니다.",
  "0.event.invalid_link_text.area_none.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "0.event.ldap_injection.conditional.apiReqInfo": "{0}",
  "0.event.ldap_injection.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.ldap_injection.conditional.apireqinfo": "{0}",
  "0.event.ldap_injection.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.ldap_injection.ldapi.attack.s0.o0": "LDAP 삽입 취약점은 사용자 입력을 기반한 LDAP 문을 구성하는 웹 기반 애플리케이션에 대하여 LDAP 문을 조작할 수 있는 취약점입니다.",
  "0.event.ldap_injection.ldapi.attack.s1.o0": "LDAP 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.ldap_injection.ldapi.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.ldap_injection.ldapi.attack.s3.o0": "{0}",
  "0.event.ldap_injection.ldapi.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "0.event.ldap_injection.ldapi.attack.s5.o0": "{0}",
  "0.event.ldap_injection.ldapi.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.ldap_injection.ldapi.attack.s7.o0": "{0}",
  "0.event.ldap_injection.ldapi.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.ldap_injection.ldapi.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "0.event.ldap_injection.ldapi.result.s2.o0": "{0}",
  "0.event.ldap_injection.ldapi.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "0.event.ldap_injection.ldapi.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 LDAP 삽입 취약점의 존재 가능성을 발견했습니다.",
  "0.event.ldap_injection.ldapi.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.ldap_injection.ldapi.solution.s1.o0": "LDAP 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 LDAP 쿼리문을 형성하는 경우에 대하여 다음과 같은 데이터 검증이 필요합니다.",
  "0.event.ldap_injection.ldapi.solution.s2.o0": "먼저 사용자 입력 데이터 중 '*', '&', '(' 등과 같은 일부 문자들에 대하여, 해당하는 모든 문자를 안전한 문자로 바꿔야 합니다.",
  "0.event.ldap_injection.ldapi.solution.s2.o1": "다음과 같이 예를 들 수 있습니다.",
  "0.event.ldap_injection.ldapi.solution.s3.o0": "{0}",
  "0.event.ldap_injection.ldapi.solution.s4.o0": "또는 보다 엄격한 권한 제어를 통해 임의의 사용자들로부터의 공격이 불가능하도록 강제해야 합니다.",
  "0.event.local_file_include.conditional.apiReqInfo": "{0}",
  "0.event.local_file_include.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.local_file_include.conditional.apireqinfo": "{0}",
  "0.event.local_file_include.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.local_file_include.local.attack.s0.o0": "로컬 파일 포함 취약점은 서버에 존재하는 파일 중 사용자 입력에 해당하는 파일의 내용이 브라우저를 통해 노출될 수 있는 취약점입니다.",
  "0.event.local_file_include.local.attack.s1.o0": "로컬 파일 포함 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.local_file_include.local.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.local_file_include.local.attack.s3.o0": "{0}",
  "0.event.local_file_include.local.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "0.event.local_file_include.local.attack.s5.o0": "{0}",
  "0.event.local_file_include.local.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.local_file_include.local.attack.s7.o0": "{0}",
  "0.event.local_file_include.local.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.local_file_include.local.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.local_file_include.local.result.s2.o0": "{0}",
  "0.event.local_file_include.local.result.s3.o0": "실행 결과, 공격 시도가 성공했으며 로컬 파일 포함 취약점의 존재 가능성을 발견했습니다.",
  "0.event.local_file_include.local.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.local_file_include.local.solution.s1.o0": "외부 입력값에 해당하는 파일로의 접근을 허용하지 말아야 합니다.",
  "0.event.local_file_include.local.solution.s2.o0": "접근 제한이 불가능한 경우, 입력 받은 값에 대하여 검증 및 필터링을 수행해야 합니다.",
  "0.event.login_attempt_limit_absent.session.attack.s0.o0": "로그인 인증 시도에 대한 횟수를 제한하고 있는지 확인하기 위해, 다음과 같은 분석 과정을 수행했습니다.",
  "0.event.login_attempt_limit_absent.session.attack.s1.o0": "이벤트 클립보드를 사용해 정상 로그인을 수행했습니다.",
  "0.event.login_attempt_limit_absent.session.attack.s2.o0": "{0}",
  "0.event.login_attempt_limit_absent.session.attack.s2.o1": "{0}",
  "0.event.login_attempt_limit_absent.session.attack.s3.o0": "이후, 다음과 같이 사용자 비밀번호를 {0}로 변경한 뒤, 5번의 로그인 요청을 전송했습니다.",
  "0.event.login_attempt_limit_absent.session.attack.s4.o0": "{0}",
  "0.event.login_attempt_limit_absent.session.attack.s4.o1": "{0}",
  "0.event.login_attempt_limit_absent.session.attack.s5.o0": "이후, 올바른 사용자 계정 정보를 기반으로 로그인 요청을 전송했습니다.",
  "0.event.login_attempt_limit_absent.session.result.s0.o0": "첫 번째 정상 로그인을 수행한 결과, 사용자 세션 정보가 생성되는 것을 확인했습니다.",
  "0.event.login_attempt_limit_absent.session.result.s0.o1": "이후, 조작된 로그인 요청을 5번 전송한 뒤, 올바른 사용자 계정 정보를 기반으로 로그인을 시도했습니다.",
  "0.event.login_attempt_limit_absent.session.result.s1.o0": "그 결과, 앞서 수행한 정상 로그인과 동일하게 사용자 세션 정보가 생성되는 것을 확인했습니다.",
  "0.event.login_attempt_limit_absent.session.result.s1.o1": "이를 통해 해당 로그인 페이지가 사용자 인증 시도 횟수를 적절히 제한하지 않고 있음을 확인했습니다.",
  "0.event.login_attempt_limit_absent.session.solution.s0.o0": "로그인 인증 시도 횟수를 3~5회로 제한하는 것이 권장됩니다.",
  "0.event.login_attempt_limit_absent.session.solution.s0.o1": "인증 시도가 이 횟수를 초과할 경우, 로그인을 차단하거나 경고 메시지를 표시해 추가적인 시도를 방지해야 합니다.",
  "0.event.login_attempt_limit_absent.session.solution.s0.o2": "또한, CAPTCHA 입력을 요구하거나 오류 페이지로 전환하는 방법도 고려할 수 있습니다.",
  "0.event.login_attempt_limit_absent.token.attack.s0.o0": "로그인 인증 시도에 대한 횟수를 제한하고 있는지 확인하기 위해, 다음과 같은 분석 과정을 수행했습니다.",
  "0.event.login_attempt_limit_absent.token.attack.s1.o0": "이벤트 클립보드를 사용해 정상 로그인을 수행했습니다.",
  "0.event.login_attempt_limit_absent.token.attack.s2.o0": "{0}",
  "0.event.login_attempt_limit_absent.token.attack.s2.o1": "{0}",
  "0.event.login_attempt_limit_absent.token.attack.s3.o0": "이후, 다음과 같이 사용자 비밀번호를 {0}로 변경한 뒤, 5번의 로그인 요청을 전송했습니다.",
  "0.event.login_attempt_limit_absent.token.attack.s4.o0": "{0}",
  "0.event.login_attempt_limit_absent.token.attack.s4.o1": "{0}",
  "0.event.login_attempt_limit_absent.token.attack.s5.o0": "이후, 올바른 사용자 계정 정보를 기반으로 로그인 요청을 전송했습니다.",
  "0.event.login_attempt_limit_absent.token.result.s0.o0": "첫 번째 정상 로그인을 수행한 결과, 사용자 토큰이 생성되는 것을 확인했습니다.",
  "0.event.login_attempt_limit_absent.token.result.s0.o1": "이후, 조작된 로그인 요청을 5번 전송한 뒤, 올바른 사용자 계정 정보를 기반으로 로그인을 시도했습니다.",
  "0.event.login_attempt_limit_absent.token.result.s1.o0": "그 결과, 앞서 수행한 정상 로그인과 동일하게 사용자 토큰이 생성되는 것을 확인했습니다.",
  "0.event.login_attempt_limit_absent.token.result.s1.o1": "이를 통해 해당 로그인 페이지가 사용자 인증 시도 횟수를 적절히 제한하지 않고 있음을 확인했습니다.",
  "0.event.login_attempt_limit_absent.token.solution.s0.o0": "로그인 인증 시도 횟수를 3~5회로 제한하는 것이 권장됩니다.",
  "0.event.login_attempt_limit_absent.token.solution.s0.o1": "인증 시도가 이 횟수를 초과할 경우, 로그인을 차단하거나 경고 메시지를 표시해 추가적인 시도를 방지해야 합니다.",
  "0.event.login_attempt_limit_absent.token.solution.s0.o2": "또한, CAPTCHA 입력을 요구하거나 오류 페이지로 전환하는 방법도 고려할 수 있습니다.",
  "0.event.missing_alt_text.empty_alt.attack.s0.o0": "분석 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.missing_alt_text.empty_alt.attack.s0.o1": "{0}",
  "0.event.missing_alt_text.empty_alt.result.s0.o0": "DOM에서 {0} 웹 요소를 탐색했습니다.",
  "0.event.missing_alt_text.empty_alt.result.s0.o1": "해당 웹 요소의 XPath는 다음과 같습니다.",
  "0.event.missing_alt_text.empty_alt.result.s0.o2": "{0}",
  "0.event.missing_alt_text.empty_alt.result.s0.o3": "해당 웹 요소는 텍스트가 아닌 콘텐츠에 해당합니다.",
  "0.event.missing_alt_text.empty_alt.result.s0.o4": "해당 웹 요소의 {0} 속성 값이 빈 문자열입니다.",
  "0.event.missing_alt_text.empty_alt.result.s1.o0": "분석 결과, 대체 텍스트를 제공하지 않는 텍스트가 아닌 콘텐츠를 탐색했습니다.",
  "0.event.missing_alt_text.empty_alt.solution.s0.o0": "텍스트가 아닌 콘텐츠의 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 합니다.",
  "0.event.missing_alt_text.empty_alt.solution.s0.o1": "{0} 웹 요소의 {1} 속성을 지정하여 대체 텍스트를 제공할 수 있습니다.",
  "0.event.missing_alt_text.no_alt.attack.s0.o0": "분석 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.missing_alt_text.no_alt.attack.s0.o1": "{0}",
  "0.event.missing_alt_text.no_alt.result.s0.o0": "DOM에서 {0} 웹 요소를 탐색했습니다.",
  "0.event.missing_alt_text.no_alt.result.s0.o1": "해당 웹 요소의 XPath는 다음과 같습니다.",
  "0.event.missing_alt_text.no_alt.result.s0.o2": "{0}",
  "0.event.missing_alt_text.no_alt.result.s0.o3": "해당 웹 요소는 텍스트가 아닌 콘텐츠에 해당합니다.",
  "0.event.missing_alt_text.no_alt.result.s0.o4": "해당 웹 요소의 {0} 속성을 탐색할 수 없습니다.",
  "0.event.missing_alt_text.no_alt.result.s1.o0": "분석 결과, 대체 텍스트를 제공하지 않는 텍스트가 아닌 콘텐츠를 탐색했습니다.",
  "0.event.missing_alt_text.no_alt.solution.s0.o0": "텍스트가 아닌 콘텐츠의 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 합니다.",
  "0.event.missing_alt_text.no_alt.solution.s0.o1": "{0} 웹 요소의 {1} 속성을 지정하여 대체 텍스트를 제공할 수 있습니다.",
  "0.event.missing_default_language.html_without_lang.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.missing_default_language.html_without_lang.attack.s0.o1": "{0}",
  "0.event.missing_default_language.html_without_lang.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.missing_default_language.html_without_lang.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.missing_default_language.html_without_lang.attack.s3.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.event.missing_default_language.html_without_lang.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.missing_default_language.html_without_lang.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.missing_default_language.html_without_lang.result.s1.o1": "{0}",
  "0.event.missing_default_language.html_without_lang.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 HTML 문서의 기본 언어가 누락되었습니다.",
  "0.event.missing_default_language.html_without_lang.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "0.event.missing_default_language.xhtml_without_lang.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.missing_default_language.xhtml_without_lang.attack.s0.o1": "{0}",
  "0.event.missing_default_language.xhtml_without_lang.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.missing_default_language.xhtml_without_lang.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.missing_default_language.xhtml_without_lang.attack.s3.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.event.missing_default_language.xhtml_without_lang.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.event.missing_default_language.xhtml_without_lang.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.missing_default_language.xhtml_without_lang.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.missing_default_language.xhtml_without_lang.result.s1.o1": "{0}",
  "0.event.missing_default_language.xhtml_without_lang.result.s2.o0": "해당 요소의 {0} 속성이 존재합니다.",
  "0.event.missing_default_language.xhtml_without_lang.result.s3.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 XHTML 문서의 기본 언어가 누락되었습니다.",
  "0.event.missing_default_language.xhtml_without_lang.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "0.event.missing_label.no_id.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.missing_label.no_id.attack.s0.o1": "{0}",
  "0.event.missing_label.no_id.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.missing_label.no_id.attack.s2.o0": "분석 대상 페이지에서 레이블이 필요한 요소를 탐색했습니다.",
  "0.event.missing_label.no_id.attack.s3.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.event.missing_label.no_id.attack.s4.o0": "탐색한 요소의 부모 요소 중 {0} 요소를 탐색했습니다.",
  "0.event.missing_label.no_id.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.missing_label.no_id.result.s1.o0": "분석 대상 페이지에 레이블이 필요한 요소에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.missing_label.no_id.result.s1.o1": "{0}",
  "0.event.missing_label.no_id.result.s2.o0": "해당 요소의 {0} 속성 값이 존재하지 않습니다.",
  "0.event.missing_label.no_id.result.s3.o0": "해당 요소의 부모 요소 중, {0} 요소가 존재하지 않습니다. 따라서 레이블이 필요한 요소에 레이블이 누락되었습니다.",
  "0.event.missing_label.no_id.solution.s0.o0": "{0} 요소의 부모 요소로서 {1} 요소를 추가하세요. 또는 {1} 요소를 추가하고, 해당 요소의 {2} 속성 값을 {0} 요소의 {3} 속성 값으로 설정하세요.",
  "0.event.missing_label.no_label.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.missing_label.no_label.attack.s0.o1": "{0}",
  "0.event.missing_label.no_label.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.missing_label.no_label.attack.s2.o0": "분석 대상 페이지에서 레이블이 필요한 요소를 탐색했습니다.",
  "0.event.missing_label.no_label.attack.s3.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.event.missing_label.no_label.attack.s4.o0": "탐색한 요소의 부모 요소 중 {0} 요소를 탐색했습니다.",
  "0.event.missing_label.no_label.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.missing_label.no_label.result.s1.o0": "분석 대상 페이지에 레이블이 필요한 요소에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.missing_label.no_label.result.s1.o1": "{0}",
  "0.event.missing_label.no_label.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.event.missing_label.no_label.result.s2.o1": "{0}",
  "0.event.missing_label.no_label.result.s3.o0": "해당 요소의 부모 요소 중, {0} 요소가 존재하지 않습니다.",
  "0.event.missing_label.no_label.result.s4.o0": "분석 대상 페이지에서 {0} 속성의 값이 다음과 같은 {1} 요소가 존재하지 않습니다.",
  "0.event.missing_label.no_label.result.s4.o1": "{0}",
  "0.event.missing_label.no_label.result.s5.o0": "따라서 레이블이 필요한 요소에 레이블이 누락되었습니다.",
  "0.event.missing_label.no_label.solution.s0.o0": "{0} 요소의 부모 요소로서 {1} 요소를 추가하세요. 또는 {1} 요소를 추가하고, 해당 요소의 {2} 속성 값을 {0} 요소의 {3} 속성 값으로 설정하세요.",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s0.o1": "{0}",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s3.o0": "탐색한 {0} 요소의 자식 요소 중 입력 가능한 요소를 탐색했습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s4.o0": "탐색한 {0} 요소의 값을 빈 문자열로 설정했습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s5.o0": "탐색한 {0} 요소의 자식 요소 중 {1} 요소를 탐색했습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s6.o0": "탐색한 {0} 요소에 대하여 {1} 이벤트가 발생했습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.attack.s7.o0": "해당 이벤트를 수행한 후에 서버의 반응을 확인했습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.no_response_to_missing_input.no_change_inner.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.result.s1.o1": "{0}",
  "0.event.no_response_to_missing_input.no_change_inner.result.s2.o0": "{0} 요소의 자식 요소 중 {1}개의 입력 가능한 요소가 존재합니다.",
  "0.event.no_response_to_missing_input.no_change_inner.result.s3.o0": "{0} 요소의 자식 요소 중 {1} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.result.s3.o1": "{0}",
  "0.event.no_response_to_missing_input.no_change_inner.result.s4.o0": "{0} 요소에 대하여 {1} 이벤트를 발생시킨 결과, 해당 이벤트 이전과 DOM이 동일하고 메시지 창이 팝업되지 않습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.result.s4.o1": "따라서 입력이 누락된 경우 서버가 응답하지 않았습니다.",
  "0.event.no_response_to_missing_input.no_change_inner.solution.s0.o0": "{0} 요소에 빈 문자열을 입력한 경우, DOM을 변경하거나 메시지 창을 팝업하도록 수정하세요.",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s0.o1": "{0}",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s3.o0": "탐색한 {0} 요소의 자식 요소 중 입력 가능한 요소를 탐색했습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s4.o0": "탐색한 {0} 요소의 값을 빈 문자열로 설정했습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s5.o0": "탐색한 {0} 요소의 자식이 아닌 요소 중 {1} 요소를 탐색했습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s6.o0": "탐색한 {0} 요소에 대하여 {1} 이벤트가 발생했습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.attack.s7.o0": "해당 이벤트를 수행한 후에 서버의 반응을 확인했습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.no_response_to_missing_input.no_change_outer.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.result.s1.o1": "{0}",
  "0.event.no_response_to_missing_input.no_change_outer.result.s2.o0": "{0} 요소의 id 속성 값은 다음과 같습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.result.s2.o1": "{0}",
  "0.event.no_response_to_missing_input.no_change_outer.result.s3.o0": "{0} 요소의 자식 요소 중 {1}개의 입력 가능한 요소가 존재합니다.",
  "0.event.no_response_to_missing_input.no_change_outer.result.s4.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.result.s4.o1": "{0}",
  "0.event.no_response_to_missing_input.no_change_outer.result.s5.o0": "{0} 요소의 form 속성 값은 다음과 같습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.result.s5.o1": "{0}",
  "0.event.no_response_to_missing_input.no_change_outer.result.s6.o0": "{0} 요소에 대하여 {1} 이벤트를 발생시킨 결과, 해당 이벤트 이전과 DOM이 동일하고 메시지 창이 팝업되지 않습니다. 따라서 입력이 누락된 경우 서버가 응답하지 않았습니다.",
  "0.event.no_response_to_missing_input.no_change_outer.solution.s0.o0": "{0} 요소에 빈 문자열을 입력한 경우, DOM을 변경하거나 메시지 창을 팝업하도록 수정하세요.",
  "0.event.non_standard_technology.active_x.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.non_standard_technology.active_x.attack.s0.o1": "{0}",
  "0.event.non_standard_technology.active_x.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.non_standard_technology.active_x.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.non_standard_technology.active_x.attack.s3.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.event.non_standard_technology.active_x.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.non_standard_technology.active_x.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.non_standard_technology.active_x.result.s1.o1": "{0}",
  "0.event.non_standard_technology.active_x.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.event.non_standard_technology.active_x.result.s2.o1": "{0}",
  "0.event.non_standard_technology.active_x.result.s3.o0": "해당 속성 값은 ActiveX 기술을 사용했음을 의미합니다.",
  "0.event.non_standard_technology.active_x.solution.s0.o0": "ActiveX 기술을 대체하는 표준 기술을 사용하세요.",
  "0.event.non_standard_technology.flash.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.non_standard_technology.flash.attack.s0.o1": "{0}",
  "0.event.non_standard_technology.flash.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.non_standard_technology.flash.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.non_standard_technology.flash.attack.s3.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.event.non_standard_technology.flash.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.non_standard_technology.flash.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.non_standard_technology.flash.result.s1.o1": "{0}",
  "0.event.non_standard_technology.flash.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.event.non_standard_technology.flash.result.s2.o1": "{0}",
  "0.event.non_standard_technology.flash.result.s3.o0": "해당 속성 값은 Adobe Flash 기술을 사용했음을 의미합니다.",
  "0.event.non_standard_technology.flash.solution.s0.o0": "Adobe Flash 기술을 대체하는 표준 기술을 사용하세요.",
  "0.event.non_standard_technology.java_applet.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.non_standard_technology.java_applet.attack.s0.o1": "{0}",
  "0.event.non_standard_technology.java_applet.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.non_standard_technology.java_applet.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.non_standard_technology.java_applet.attack.s3.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.event.non_standard_technology.java_applet.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.non_standard_technology.java_applet.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.non_standard_technology.java_applet.result.s1.o1": "{0}",
  "0.event.non_standard_technology.java_applet.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.event.non_standard_technology.java_applet.result.s2.o1": "{0}",
  "0.event.non_standard_technology.java_applet.result.s3.o0": "해당 속성 값은 Java Applet 기술을 사용했음을 의미합니다.",
  "0.event.non_standard_technology.java_applet.solution.s0.o0": "Java Applet 기술을 대체하는 표준 기술을 사용하세요.",
  "0.event.non_standard_technology.silverlight.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.non_standard_technology.silverlight.attack.s0.o1": "{0}",
  "0.event.non_standard_technology.silverlight.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.non_standard_technology.silverlight.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.non_standard_technology.silverlight.attack.s3.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.event.non_standard_technology.silverlight.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.non_standard_technology.silverlight.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.non_standard_technology.silverlight.result.s1.o1": "{0}",
  "0.event.non_standard_technology.silverlight.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.event.non_standard_technology.silverlight.result.s2.o1": "{0}",
  "0.event.non_standard_technology.silverlight.result.s3.o0": "해당 속성 값은 Microsoft Silverlight 기술을 사용했음을 의미합니다.",
  "0.event.non_standard_technology.silverlight.solution.s0.o0": "Microsoft Silverlight 기술을 대체하는 표준 기술을 사용하세요.",
  "0.event.non_standard_technology.windows_media_player.attack.s0.o0": "다음과 같은 과정으로 분석 대상 페이지에 접근했습니다.",
  "0.event.non_standard_technology.windows_media_player.attack.s0.o1": "{0}",
  "0.event.non_standard_technology.windows_media_player.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "0.event.non_standard_technology.windows_media_player.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "0.event.non_standard_technology.windows_media_player.attack.s3.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.event.non_standard_technology.windows_media_player.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "0.event.non_standard_technology.windows_media_player.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.event.non_standard_technology.windows_media_player.result.s1.o1": "{0}",
  "0.event.non_standard_technology.windows_media_player.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.event.non_standard_technology.windows_media_player.result.s2.o1": "{0}",
  "0.event.non_standard_technology.windows_media_player.result.s3.o0": "해당 속성 값은 Windows Media Player 기술을 사용했음을 의미합니다.",
  "0.event.non_standard_technology.windows_media_player.solution.s0.o0": "Windows Media Player 기술을 대체하는 표준 기술을 사용하세요.",
  "0.event.path_traversal.conditional.apiReqInfo": "{0}",
  "0.event.path_traversal.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.path_traversal.conditional.apireqinfo": "{0}",
  "0.event.path_traversal.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.path_traversal.pathTraversal.attack.s0.o0": "경로 조작 취약점은 사용자 입력을 디렉토리 경로 문자열에 사용하여 웹 애플리케이션의 최상단 디렉토리 이외에 파일 시스템이 노출될 수 있는 취약점입니다.",
  "0.event.path_traversal.pathTraversal.attack.s1.o0": "경로 조작 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.path_traversal.pathTraversal.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.path_traversal.pathTraversal.attack.s3.o0": "{0}",
  "0.event.path_traversal.pathTraversal.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "0.event.path_traversal.pathTraversal.attack.s5.o0": "{0}",
  "0.event.path_traversal.pathTraversal.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.path_traversal.pathTraversal.attack.s7.o0": "{0}",
  "0.event.path_traversal.pathTraversal.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.path_traversal.pathTraversal.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.path_traversal.pathTraversal.result.s2.o0": "{0}",
  "0.event.path_traversal.pathTraversal.result.s3.o0": "실행 결과, 공격 시도가 성공했으며 경로 조작 취약점의 존재 가능성을 발견했습니다.",
  "0.event.path_traversal.pathTraversal.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.path_traversal.pathTraversal.solution.s1.o0": "외부 입력값이 포함된 경로로 접근할 수 있는 가능성을 제거하는 것이 가장 좋습니다.",
  "0.event.path_traversal.pathTraversal.solution.s2.o0": "제거할 수 없는 경우, 입력받은 값에 대하여 검증 및 필터링을 수행해야 합니다.",
  "0.event.path_traversal.pathtraversal.attack.s0.o0": "경로 조작 취약점은 사용자 입력을 디렉토리 경로 문자열에 사용하여 웹 애플리케이션의 최상단 디렉토리 이외에 파일 시스템이 노출될 수 있는 취약점입니다.",
  "0.event.path_traversal.pathtraversal.attack.s1.o0": "경로 조작 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.path_traversal.pathtraversal.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.path_traversal.pathtraversal.attack.s3.o0": "{0}",
  "0.event.path_traversal.pathtraversal.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "0.event.path_traversal.pathtraversal.attack.s5.o0": "{0}",
  "0.event.path_traversal.pathtraversal.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.path_traversal.pathtraversal.attack.s7.o0": "{0}",
  "0.event.path_traversal.pathtraversal.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.path_traversal.pathtraversal.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.path_traversal.pathtraversal.result.s2.o0": "{0}",
  "0.event.path_traversal.pathtraversal.result.s3.o0": "실행 결과, 공격 시도가 성공했으며 경로 조작 취약점의 존재 가능성을 발견했습니다.",
  "0.event.path_traversal.pathtraversal.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.path_traversal.pathtraversal.solution.s1.o0": "외부 입력값이 포함된 경로로 접근할 수 있는 가능성을 제거하는 것이 가장 좋습니다.",
  "0.event.path_traversal.pathtraversal.solution.s2.o0": "제거할 수 없는 경우, 입력받은 값에 대하여 검증 및 필터링을 수행해야 합니다.",
  "0.event.predictable_session.custom_numeric.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s0.o1": "{0}",
  "0.event.predictable_session.custom_numeric.attack.s1.o0": "공격 대상 페이지에 대하여 이벤트 클립보드의 이벤트 수행 기록이 존재합니다.",
  "0.event.predictable_session.custom_numeric.attack.s1.o1": "해당 이벤트 수행 기록은 로그인을 수행할 때 사용할 수 있습니다.",
  "0.event.predictable_session.custom_numeric.attack.s2.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s2.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 1차 로그인을 수행했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s3.o0": "1차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s3.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.predictable_session.custom_numeric.attack.s4.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s4.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 2차 로그인을 수행했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s5.o0": "2차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s5.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.predictable_session.custom_numeric.attack.s6.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s6.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 3차 로그인을 수행했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s7.o0": "3차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.predictable_session.custom_numeric.attack.s7.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.predictable_session.custom_numeric.result.s0.o0": "1차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.predictable_session.custom_numeric.result.s0.o1": "{0}",
  "0.event.predictable_session.custom_numeric.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.predictable_session.custom_numeric.result.s1.o0": "2차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.predictable_session.custom_numeric.result.s1.o1": "{0}",
  "0.event.predictable_session.custom_numeric.result.s1.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.predictable_session.custom_numeric.result.s2.o0": "3차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.predictable_session.custom_numeric.result.s2.o1": "{0}",
  "0.event.predictable_session.custom_numeric.result.s2.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.predictable_session.custom_numeric.result.s3.o0": "각 로그인 이후의 세션 ID 값 중 숫자에 해당하는 문자열에는 다음과 같은 차이가 있습니다.",
  "0.event.predictable_session.custom_numeric.result.s3.o1": "{0}",
  "0.event.predictable_session.custom_numeric.result.s4.o0": "분석 수행 결과, 각 로그인 수행으로 얻은 세션 ID 값의 변화에서 규칙성을 발견했습니다.",
  "0.event.predictable_session.custom_numeric.result.s4.o1": "따라서 서버로부터 할당 받을 세션 ID를 예측할 수 있습니다.",
  "0.event.predictable_session.custom_numeric.solution.s0.o0": "클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다.",
  "0.event.predictable_session.custom_numeric.solution.s0.o1": "세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "0.event.predictable_session.numeric.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.predictable_session.numeric.attack.s0.o1": "{0}",
  "0.event.predictable_session.numeric.attack.s1.o0": "공격 대상 페이지에 대하여 이벤트 클립보드의 이벤트 수행 기록이 존재합니다.",
  "0.event.predictable_session.numeric.attack.s1.o1": "해당 이벤트 수행 기록은 로그인을 수행할 때 사용할 수 있습니다.",
  "0.event.predictable_session.numeric.attack.s2.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.predictable_session.numeric.attack.s2.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 1차 로그인을 수행했습니다.",
  "0.event.predictable_session.numeric.attack.s3.o0": "1차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.predictable_session.numeric.attack.s4.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.predictable_session.numeric.attack.s4.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 2차 로그인을 수행했습니다.",
  "0.event.predictable_session.numeric.attack.s5.o0": "2차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.predictable_session.numeric.attack.s6.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.predictable_session.numeric.attack.s6.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 3차 로그인을 수행했습니다.",
  "0.event.predictable_session.numeric.attack.s7.o0": "3차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.predictable_session.numeric.result.s0.o0": "1차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.predictable_session.numeric.result.s0.o1": "{0}",
  "0.event.predictable_session.numeric.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.predictable_session.numeric.result.s1.o0": "2차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.predictable_session.numeric.result.s1.o1": "{0}",
  "0.event.predictable_session.numeric.result.s1.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.predictable_session.numeric.result.s2.o0": "3차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.predictable_session.numeric.result.s2.o1": "{0}",
  "0.event.predictable_session.numeric.result.s2.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.predictable_session.numeric.result.s3.o0": "각 로그인 이후의 세션 ID 값 중 숫자에 해당하는 문자열에는 다음과 같은 차이가 있습니다.",
  "0.event.predictable_session.numeric.result.s3.o1": "{0}",
  "0.event.predictable_session.numeric.result.s4.o0": "분석 수행 결과, 각 로그인 수행으로 얻은 세션 ID 값의 변화에서 규칙성을 발견했습니다.",
  "0.event.predictable_session.numeric.result.s4.o1": "따라서 서버로부터 할당 받을 세션 ID를 예측할 수 있습니다.",
  "0.event.predictable_session.numeric.solution.s0.o0": "클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다.",
  "0.event.predictable_session.numeric.solution.s0.o1": "세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "0.event.reflected_xss.run.attack.s0.o0": "다음 URL에 해당하는 페이지에 접근을 시도했습니다.",
  "0.event.reflected_xss.run.attack.s0.o1": "{0}",
  "0.event.reflected_xss.run.attack.s1.o0": "페이지에 존재하는 이벤트 중, 다음과 같은 XPath를 가지는 이벤트를 발견했습니다.",
  "0.event.reflected_xss.run.attack.s1.o1": "{0}",
  "0.event.reflected_xss.run.attack.s2.o0": "해당 이벤트의 값을 다음과 같이 변경했습니다.",
  "0.event.reflected_xss.run.attack.s2.o1": "{0}",
  "0.event.reflected_xss.run.attack.s3.o0": "페이지에 존재하는 이벤트 중, 다음과 같은 XPath를 가지는 이벤트를 실행했습니다.",
  "0.event.reflected_xss.run.attack.s3.o1": "{0}",
  "0.event.reflected_xss.run.attack.s4.o0": "해당 이벤트 실행 이후, SPARROW_DAST_XSS_TEST DOM 변수의 값을 검사했습니다.",
  "0.event.reflected_xss.run.result.s0.o0": "SPARROW_DAST_XSS_TEST DOM 변수의 값이 다음과 같습니다.",
  "0.event.reflected_xss.run.result.s0.o1": "{0}",
  "0.event.reflected_xss.run.result.s1.o0": "해당 값은 다음과 같은 XPath를 가지는 이벤트의 값에 해당하는 스크립트를 실제로 실행한 결과에 해당합니다.",
  "0.event.reflected_xss.run.result.s1.o1": "{0}",
  "0.event.reflected_xss.run.solution.s0.o0": "사용자가 입력한 값에 대해 검증과 인코딩을 수행하여 악성 스크립트가 실행되지 않도록 방지해야 합니다.",
  "0.event.sensitive_information_in_comments.jdbc.attack.s0.o0": "주석문 안에 포함된 중요 정보 노출 취약점은 브라우저를 통해 불특정 다수가 확인할 수 있는 주석문 내부에 중요한 정보가 포함되어 있는 취약점입니다.",
  "0.event.sensitive_information_in_comments.jdbc.attack.s1.o0": "주석문 안에 포함된 중요 정보 노출 취약점을 검출하기 위해 다음과 같이 검사를 수행했습니다.",
  "0.event.sensitive_information_in_comments.jdbc.attack.s2.o0": "대상 페이지 내부에 존재하는 주석문을 추출했습니다.",
  "0.event.sensitive_information_in_comments.jdbc.attack.s3.o0": "추출한 주석문 내부에 JDBC와 관련된 것으로 추정되는 정보가 존재하는지 확인했습니다.",
  "0.event.sensitive_information_in_comments.jdbc.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.sensitive_information_in_comments.jdbc.result.s1.o0": "대상 페이지 내부에서 다음과 같은 주석문을 추출했습니다.",
  "0.event.sensitive_information_in_comments.jdbc.result.s2.o0": "{0}",
  "0.event.sensitive_information_in_comments.jdbc.result.s3.o0": "추출한 주석문 내부에서 다음과 같이 JDBC와 관련된 것으로 추정되는 정보를 발견했습니다.",
  "0.event.sensitive_information_in_comments.jdbc.result.s4.o0": "{0}",
  "0.event.sensitive_information_in_comments.jdbc.result.s5.o0": "검사 결과, 주석문 안에 포함된 중요 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.sensitive_information_in_comments.jdbc.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sensitive_information_in_comments.jdbc.solution.s1.o0": "주석문은 JDBC 관련 정보와 같이 중요한 정보를 포함할 수 있습니다.",
  "0.event.sensitive_information_in_comments.jdbc.solution.s1.o1": "해당 정보는 브라우저의 소스 보기 기능 등을 통해 사용자가 손쉽게 확인할 수 있습니다.",
  "0.event.sensitive_information_in_comments.jdbc.solution.s2.o0": "이러한 정보 노출을 방지하기 위해 다음과 같은 주석문은 사용하지 않아야 합니다.",
  "0.event.sensitive_information_in_comments.jdbc.solution.s3.o0": "{0}",
  "0.event.sensitive_information_in_comments.jdbc.solution.s4.o0": "대신 클라이언트에서 확인할 수 없는 서버측 주석을 사용하세요.",
  "0.event.sensitive_information_in_comments.jdbc.solution.s4.o1": "이는 다음과 같습니다.",
  "0.event.sensitive_information_in_comments.jdbc.solution.s5.o0": "{0}",
  "0.event.sensitive_information_in_comments.password.attack.s0.o0": "주석문 안에 포함된 중요 정보 노출 취약점은 브라우저를 통해 불특정 다수가 확인할 수 있는 주석문 내부에 중요한 정보가 포함되어 있는 취약점입니다.",
  "0.event.sensitive_information_in_comments.password.attack.s1.o0": "주석문 안에 포함된 중요 정보 노출 취약점을 검출하기 위해 다음과 같이 검사를 수행했습니다.",
  "0.event.sensitive_information_in_comments.password.attack.s2.o0": "대상 페이지 내부에 존재하는 주석문을 추출했습니다.",
  "0.event.sensitive_information_in_comments.password.attack.s3.o0": "추출한 주석문 내부에 비밀번호로 추정되는 정보가 존재하는지 확인했습니다.",
  "0.event.sensitive_information_in_comments.password.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.sensitive_information_in_comments.password.result.s1.o0": "대상 페이지 내부에서 다음과 같은 주석문을 추출했습니다.",
  "0.event.sensitive_information_in_comments.password.result.s2.o0": "{0}",
  "0.event.sensitive_information_in_comments.password.result.s3.o0": "추출한 주석문 내부에서 다음과 같이 비밀번호로 추정되는 정보를 발견했습니다.",
  "0.event.sensitive_information_in_comments.password.result.s4.o0": "{0}",
  "0.event.sensitive_information_in_comments.password.result.s5.o0": "검사 결과, 주석문 안에 포함된 중요 정보 노출 취약점이 존재함을 확인했습니다.",
  "0.event.sensitive_information_in_comments.password.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sensitive_information_in_comments.password.solution.s1.o0": "주석문은 비밀번호와 같이 중요한 정보를 포함할 수 있습니다.",
  "0.event.sensitive_information_in_comments.password.solution.s1.o1": "해당 정보는 브라우저의 소스 보기 기능 등을 통해 사용자가 손쉽게 확인할 수 있습니다.",
  "0.event.sensitive_information_in_comments.password.solution.s2.o0": "이러한 정보 노출을 방지하기 위해 다음과 같은 주석문은 사용하지 않아야 합니다.",
  "0.event.sensitive_information_in_comments.password.solution.s3.o0": "{0}",
  "0.event.sensitive_information_in_comments.password.solution.s4.o0": "대신 클라이언트에서 확인할 수 없는 서버측 주석을 사용하세요.",
  "0.event.sensitive_information_in_comments.password.solution.s4.o1": "이는 다음과 같습니다.",
  "0.event.sensitive_information_in_comments.password.solution.s5.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.absoluteAction.attack.s0.o0": "중요 정보 평문 전송 취약점은 민감한 정보를 평문으로 전송하는 취약점입니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.attack.s1.o0": "중요 정보 평문 전송 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.attack.s2.o0": "대상 페이지 내부에서 민감한 정보의 전송을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.attack.s3.o0": "해당 민감한 정보가 평문으로 전송될 수 있는 가능성을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s1.o0": "대상 페이지 내부에서 다음과 같이 민감한 정보를 포함할 수 있는 요소를 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s2.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s3.o0": "해당 정보의 전송지 주소는 FORM 태그 내부의 ACTION 속성 값에 절대 경로로 정의되었으며, 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s4.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s5.o0": "전송지 주소가 'https://'로 시작하지 않는 것에 근거하여, 전송지로의 통신에서 HTTPS 프로토콜을 사용하지 않음을 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s6.o0": "검사 결과, 중요 정보 평문 전송 취약점이 존재함을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s7.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.sensitive_information_in_plain_text.absoluteAction.result.s7.o1": "{0}",
  "0.event.sensitive_information_in_plain_text.absoluteAction.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.solution.s1.o0": "의도하지 않은 노출을 막기 위하여 민감한 정보는 반드시 암호화하여 전송해야 합니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.solution.s1.o1": "민감한 정보를 암호화하여 전송하기 위해 SSL을 통해 HTTPS 프로토콜을 사용할 수 있습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteAction.solution.s2.o0": "또는 자체적으로 해당 정보를 암호화한 뒤 HTTP 프로토콜을 통해 전송할 수도 있습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.attack.s0.o0": "중요 정보 평문 전송 취약점은 민감한 정보를 평문으로 전송하는 취약점입니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.attack.s1.o0": "중요 정보 평문 전송 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.attack.s2.o0": "대상 페이지 내부에서 민감한 정보의 전송을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.attack.s3.o0": "해당 민감한 정보가 평문으로 전송될 수 있는 가능성을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s1.o0": "대상 페이지 내부에서 다음과 같이 민감한 정보를 포함할 수 있는 요소를 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s2.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s3.o0": "해당 정보의 전송지 주소는 FORM 태그 내부의 ACTION 속성 값에 절대 경로로 정의되었으며, 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s4.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s5.o0": "전송지 주소가 'https://'로 시작하지 않는 것에 근거하여, 전송지로의 통신에서 HTTPS 프로토콜을 사용하지 않음을 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s6.o0": "검사 결과, 중요 정보 평문 전송 취약점이 존재함을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s7.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.sensitive_information_in_plain_text.absoluteaction.result.s7.o1": "{0}",
  "0.event.sensitive_information_in_plain_text.absoluteaction.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.solution.s1.o0": "의도하지 않은 노출을 막기 위하여 민감한 정보는 반드시 암호화하여 전송해야 합니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.solution.s1.o1": "민감한 정보를 암호화하여 전송하기 위해 SSL을 통해 HTTPS 프로토콜을 사용할 수 있습니다.",
  "0.event.sensitive_information_in_plain_text.absoluteaction.solution.s2.o0": "또는 자체적으로 해당 정보를 암호화한 뒤 HTTP 프로토콜을 통해 전송할 수도 있습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.attack.s0.o0": "중요 정보 평문 전송 취약점은 민감한 정보를 평문으로 전송하는 취약점입니다.",
  "0.event.sensitive_information_in_plain_text.noAction.attack.s1.o0": "중요 정보 평문 전송 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.attack.s2.o0": "대상 페이지 내부에서 민감한 정보의 전송을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.attack.s3.o0": "해당 민감한 정보가 평문으로 전송될 수 있는 가능성을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.result.s1.o0": "대상 페이지 내부에서 다음과 같이 민감한 정보를 포함할 수 있는 요소를 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.result.s2.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.noAction.result.s3.o0": "해당 정보의 전송지 주소는 FORM 태그 내부의 ACTION 속성 값에서 찾을 수 없었으므로, 다음과 같이 현재 페이지 주소와 같은 것으로 가정했습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.result.s4.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.noAction.result.s5.o0": "해당 전송지 주소는 현재 페이지 주소의 프로토콜을 그대로 사용함을 의미합니다.",
  "0.event.sensitive_information_in_plain_text.noAction.result.s6.o0": "현재 페이지 주소는 HTTP 프로토콜이며, 이에 따라 전송지로의 통신에서 HTTPS 프로토콜을 사용하지 않았음을 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.result.s7.o0": "검사 결과, 중요 정보 평문 전송 취약점이 존재함을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.result.s8.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.sensitive_information_in_plain_text.noAction.result.s8.o1": "{0}",
  "0.event.sensitive_information_in_plain_text.noAction.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.solution.s1.o0": "의도하지 않은 노출을 막기 위하여 민감한 정보는 반드시 암호화하여 전송해야 합니다.",
  "0.event.sensitive_information_in_plain_text.noAction.solution.s1.o1": "민감한 정보를 암호화하여 전송하기 위해 SSL을 통해 HTTPS 프로토콜을 사용할 수 있습니다.",
  "0.event.sensitive_information_in_plain_text.noAction.solution.s2.o0": "또는 자체적으로 해당 정보를 암호화한 뒤 HTTP 프로토콜을 통해 전송할 수도 있습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.attack.s0.o0": "중요 정보 평문 전송 취약점은 민감한 정보를 평문으로 전송하는 취약점입니다.",
  "0.event.sensitive_information_in_plain_text.noaction.attack.s1.o0": "중요 정보 평문 전송 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.attack.s2.o0": "대상 페이지 내부에서 민감한 정보의 전송을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.attack.s3.o0": "해당 민감한 정보가 평문으로 전송될 수 있는 가능성을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.result.s1.o0": "대상 페이지 내부에서 다음과 같이 민감한 정보를 포함할 수 있는 요소를 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.result.s2.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.noaction.result.s3.o0": "해당 정보의 전송지 주소는 FORM 태그 내부의 ACTION 속성 값에서 찾을 수 없었으므로, 다음과 같이 현재 페이지 주소와 같은 것으로 가정했습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.result.s4.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.noaction.result.s5.o0": "해당 전송지 주소는 현재 페이지 주소의 프로토콜을 그대로 사용함을 의미합니다.",
  "0.event.sensitive_information_in_plain_text.noaction.result.s6.o0": "현재 페이지 주소는 HTTP 프로토콜이며, 이에 따라 전송지로의 통신에서 HTTPS 프로토콜을 사용하지 않았음을 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.result.s7.o0": "검사 결과, 중요 정보 평문 전송 취약점이 존재함을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.result.s8.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.sensitive_information_in_plain_text.noaction.result.s8.o1": "{0}",
  "0.event.sensitive_information_in_plain_text.noaction.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.solution.s1.o0": "의도하지 않은 노출을 막기 위하여 민감한 정보는 반드시 암호화하여 전송해야 합니다.",
  "0.event.sensitive_information_in_plain_text.noaction.solution.s1.o1": "민감한 정보를 암호화하여 전송하기 위해 SSL을 통해 HTTPS 프로토콜을 사용할 수 있습니다.",
  "0.event.sensitive_information_in_plain_text.noaction.solution.s2.o0": "또는 자체적으로 해당 정보를 암호화한 뒤 HTTP 프로토콜을 통해 전송할 수도 있습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.attack.s0.o0": "중요 정보 평문 전송 취약점은 민감한 정보를 평문으로 전송하는 취약점입니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.attack.s1.o0": "중요 정보 평문 전송 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.attack.s2.o0": "대상 페이지 내부에서 민감한 정보의 전송을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.attack.s3.o0": "해당 민감한 정보가 평문으로 전송될 수 있는 가능성을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s1.o0": "대상 페이지 내부에서 다음과 같이 민감한 정보를 포함할 수 있는 요소를 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s2.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s3.o0": "해당 정보의 전송지 주소는 FORM 태그 내부의 ACTION 속성 값에 다음과 같은 상대 경로로 정의되었습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s4.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s5.o0": "해당 전송지 주소는 현재 페이지 주소의 프로토콜을 그대로 사용함을 의미합니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s6.o0": "현재 페이지 주소는 HTTP 프로토콜이며, 이에 따라 전송지로의 통신에서 HTTPS 프로토콜을 사용하지 않았음을 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s7.o0": "검사 결과, 중요 정보 평문 전송 취약점이 존재함을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s8.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.sensitive_information_in_plain_text.relativeAction.result.s8.o1": "{0}",
  "0.event.sensitive_information_in_plain_text.relativeAction.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.solution.s1.o0": "의도하지 않은 노출을 막기 위하여 민감한 정보는 반드시 암호화하여 전송해야 합니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.solution.s1.o1": "민감한 정보를 암호화하여 전송하기 위해 SSL을 통해 HTTPS 프로토콜을 사용할 수 있습니다.",
  "0.event.sensitive_information_in_plain_text.relativeAction.solution.s2.o0": "또는 자체적으로 해당 정보를 암호화한 뒤 HTTP 프로토콜을 통해 전송할 수도 있습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.attack.s0.o0": "중요 정보 평문 전송 취약점은 민감한 정보를 평문으로 전송하는 취약점입니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.attack.s1.o0": "중요 정보 평문 전송 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.attack.s2.o0": "대상 페이지 내부에서 민감한 정보의 전송을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.attack.s3.o0": "해당 민감한 정보가 평문으로 전송될 수 있는 가능성을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s1.o0": "대상 페이지 내부에서 다음과 같이 민감한 정보를 포함할 수 있는 요소를 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s2.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s3.o0": "해당 정보의 전송지 주소는 FORM 태그 내부의 ACTION 속성 값에 다음과 같은 상대 경로로 정의되었습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s4.o0": "{0}",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s5.o0": "해당 전송지 주소는 현재 페이지 주소의 프로토콜을 그대로 사용함을 의미합니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s6.o0": "현재 페이지 주소는 HTTP 프로토콜이며, 이에 따라 전송지로의 통신에서 HTTPS 프로토콜을 사용하지 않았음을 발견했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s7.o0": "검사 결과, 중요 정보 평문 전송 취약점이 존재함을 확인했습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s8.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.sensitive_information_in_plain_text.relativeaction.result.s8.o1": "{0}",
  "0.event.sensitive_information_in_plain_text.relativeaction.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.solution.s1.o0": "의도하지 않은 노출을 막기 위하여 민감한 정보는 반드시 암호화하여 전송해야 합니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.solution.s1.o1": "민감한 정보를 암호화하여 전송하기 위해 SSL을 통해 HTTPS 프로토콜을 사용할 수 있습니다.",
  "0.event.sensitive_information_in_plain_text.relativeaction.solution.s2.o0": "또는 자체적으로 해당 정보를 암호화한 뒤 HTTP 프로토콜을 통해 전송할 수도 있습니다.",
  "0.event.session_fixation.anonymous.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.session_fixation.anonymous.attack.s0.o1": "{0}",
  "0.event.session_fixation.anonymous.attack.s1.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_fixation.anonymous.attack.s1.o1": "브라우저 실행 후, 공격 대상 페이지에 1차 접근을 시도했습니다.",
  "0.event.session_fixation.anonymous.attack.s2.o0": "1차 접근 시도 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_fixation.anonymous.attack.s3.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_fixation.anonymous.attack.s3.o1": "브라우저 실행 후, 공격 대상 페이지에 2차 접근을 시도했습니다.",
  "0.event.session_fixation.anonymous.attack.s4.o0": "2차 접근 시도 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_fixation.anonymous.result.s0.o0": "공격 대상 페이지에 대한 1차 접근 시도 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_fixation.anonymous.result.s0.o1": "{0}",
  "0.event.session_fixation.anonymous.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_fixation.anonymous.result.s1.o0": "공격 대상 페이지에 대한 2차 접근 시도 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_fixation.anonymous.result.s1.o1": "{0}",
  "0.event.session_fixation.anonymous.result.s1.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_fixation.anonymous.result.s2.o0": "분석 수행 결과, 2번의 동일한 공격 대상 페이지로의 접근으로 얻은 세션 ID 값이 서로 동일함을 발견했습니다.",
  "0.event.session_fixation.anonymous.result.s2.o1": "따라서 임의의 클라이언트가 접속을 시도할 때마다 서버에서는 해당 클라이언트에 동일한 세션 ID를 발급할 수 있습니다.",
  "0.event.session_fixation.anonymous.solution.s0.o0": "클라이언트의 접속 시도마다 다른 세션 ID를 발급해야 합니다.",
  "0.event.session_fixation.anonymous.solution.s0.o1": "세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "0.event.session_fixation.anonymous.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "0.event.session_fixation.custom_anonymous.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.session_fixation.custom_anonymous.attack.s0.o1": "{0}",
  "0.event.session_fixation.custom_anonymous.attack.s1.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_fixation.custom_anonymous.attack.s1.o1": "브라우저 실행 후, 공격 대상 페이지에 1차 접근을 시도했습니다.",
  "0.event.session_fixation.custom_anonymous.attack.s2.o0": "1차 접근 시도 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_fixation.custom_anonymous.attack.s2.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.session_fixation.custom_anonymous.attack.s3.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_fixation.custom_anonymous.attack.s3.o1": "브라우저 실행 후, 공격 대상 페이지에 2차 접근을 시도했습니다.",
  "0.event.session_fixation.custom_anonymous.attack.s4.o0": "2차 접근 시도 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_fixation.custom_anonymous.attack.s4.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.session_fixation.custom_anonymous.result.s0.o0": "공격 대상 페이지에 대한 1차 접근 시도 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_fixation.custom_anonymous.result.s0.o1": "{0}",
  "0.event.session_fixation.custom_anonymous.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_fixation.custom_anonymous.result.s1.o0": "공격 대상 페이지에 대한 2차 접근 시도 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_fixation.custom_anonymous.result.s1.o1": "{0}",
  "0.event.session_fixation.custom_anonymous.result.s1.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_fixation.custom_anonymous.result.s2.o0": "분석 수행 결과, 2번의 동일한 공격 대상 페이지로의 접근으로 얻은 세션 ID 값이 서로 동일함을 발견했습니다.",
  "0.event.session_fixation.custom_anonymous.result.s2.o1": "따라서 임의의 클라이언트가 접속을 시도할 때마다 서버에서는 해당 클라이언트에 동일한 세션 ID를 발급할 수 있습니다.",
  "0.event.session_fixation.custom_anonymous.solution.s0.o0": "클라이언트의 접속 시도마다 다른 세션 ID를 발급해야 합니다.",
  "0.event.session_fixation.custom_anonymous.solution.s0.o1": "세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "0.event.session_fixation.custom_anonymous.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "0.event.session_fixation.custom_login.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.session_fixation.custom_login.attack.s0.o1": "{0}",
  "0.event.session_fixation.custom_login.attack.s1.o0": "공격 대상 페이지에 대하여 이벤트 클립보드의 이벤트 수행 기록이 존재합니다.",
  "0.event.session_fixation.custom_login.attack.s1.o1": "해당 이벤트 수행 기록은 로그인을 수행할 때 사용할 수 있습니다.",
  "0.event.session_fixation.custom_login.attack.s2.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_fixation.custom_login.attack.s2.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 1차 로그인을 수행했습니다.",
  "0.event.session_fixation.custom_login.attack.s3.o0": "1차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_fixation.custom_login.attack.s3.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.session_fixation.custom_login.attack.s4.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_fixation.custom_login.attack.s4.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 2차 로그인을 수행했습니다.",
  "0.event.session_fixation.custom_login.attack.s5.o0": "2차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_fixation.custom_login.attack.s5.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.session_fixation.custom_login.result.s0.o0": "1차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_fixation.custom_login.result.s0.o1": "{0}",
  "0.event.session_fixation.custom_login.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_fixation.custom_login.result.s1.o0": "2차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_fixation.custom_login.result.s1.o1": "{0}",
  "0.event.session_fixation.custom_login.result.s1.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_fixation.custom_login.result.s2.o0": "분석 수행 결과, 2번의 로그인 수행으로 얻은 세션 ID 값이 서로 동일함을 발견했습니다.",
  "0.event.session_fixation.custom_login.result.s2.o1": "따라서 임의의 클라이언트가 로그인을 시도할 때마다 서버에서는 해당 클라이언트에 동일한 세션 ID를 발급할 수 있습니다.",
  "0.event.session_fixation.custom_login.solution.s0.o0": "클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다.",
  "0.event.session_fixation.custom_login.solution.s0.o1": "세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "0.event.session_fixation.custom_login.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "0.event.session_fixation.login.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.session_fixation.login.attack.s0.o1": "{0}",
  "0.event.session_fixation.login.attack.s1.o0": "공격 대상 페이지에 대하여 이벤트 클립보드의 이벤트 수행 기록이 존재합니다.",
  "0.event.session_fixation.login.attack.s1.o1": "해당 이벤트 수행 기록은 로그인을 수행할 때 사용할 수 있습니다.",
  "0.event.session_fixation.login.attack.s2.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_fixation.login.attack.s2.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 1차 로그인을 수행했습니다.",
  "0.event.session_fixation.login.attack.s3.o0": "1차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_fixation.login.attack.s4.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_fixation.login.attack.s4.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 2차 로그인을 수행했습니다.",
  "0.event.session_fixation.login.attack.s5.o0": "2차 로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_fixation.login.result.s0.o0": "1차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_fixation.login.result.s0.o1": "{0}",
  "0.event.session_fixation.login.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_fixation.login.result.s1.o0": "2차 로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_fixation.login.result.s1.o1": "{0}",
  "0.event.session_fixation.login.result.s1.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_fixation.login.result.s2.o0": "분석 수행 결과, 2번의 로그인 수행으로 얻은 세션 ID 값이 서로 동일함을 발견했습니다.",
  "0.event.session_fixation.login.result.s2.o1": "따라서 임의의 클라이언트가 로그인을 시도할 때마다 서버에서는 해당 클라이언트에 동일한 세션 ID를 발급할 수 있습니다.",
  "0.event.session_fixation.login.solution.s0.o0": "클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다.",
  "0.event.session_fixation.login.solution.s0.o1": "세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "0.event.session_fixation.login.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "0.event.session_replay.custom_replay.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.session_replay.custom_replay.attack.s0.o1": "{0}",
  "0.event.session_replay.custom_replay.attack.s1.o0": "공격 대상 페이지에 대하여 이벤트 클립보드의 이벤트 수행 기록이 존재합니다.",
  "0.event.session_replay.custom_replay.attack.s1.o1": "해당 이벤트 수행 기록은 로그인을 수행할 때 사용할 수 있습니다.",
  "0.event.session_replay.custom_replay.attack.s2.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_replay.custom_replay.attack.s2.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 1차 로그인을 수행했습니다.",
  "0.event.session_replay.custom_replay.attack.s3.o0": "로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_replay.custom_replay.attack.s3.o1": "해당 쿠키는 사용자 정의 공격 문자열에 해당합니다.",
  "0.event.session_replay.custom_replay.attack.s4.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_replay.custom_replay.attack.s4.o1": "브라우저 실행 후, 로그인 이후 확인한 {0} 쿠키를 추가했습니다.",
  "0.event.session_replay.custom_replay.attack.s4.o2": "브라우저 쿠키 추가 후, 로그인 과정 없이 로그인 이후 이동한 위치로의 접근을 시도했습니다.",
  "0.event.session_replay.custom_replay.result.s0.o0": "로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_replay.custom_replay.result.s0.o1": "{0}",
  "0.event.session_replay.custom_replay.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_replay.custom_replay.result.s0.o3": "또한, 로그인 후 접근한 위치의 URL은 다음과 같습니다.",
  "0.event.session_replay.custom_replay.result.s0.o4": "{0}",
  "0.event.session_replay.custom_replay.result.s1.o0": "브라우저 쿠키 추가 및 로그인 과정 없이 로그인 이후 이동한 위치로의 접근 시도 결과, 다음과 같은 URL을 가지는 위치로 이동했습니다.",
  "0.event.session_replay.custom_replay.result.s1.o1": "{0}",
  "0.event.session_replay.custom_replay.result.s2.o0": "분석 수행 결과, 브라우저 쿠키 설정을 통해 로그인 과정 없이 로그인 이후 접근 가능한 위치로의 접근이 가능했습니다.",
  "0.event.session_replay.custom_replay.result.s2.o1": "따라서 클라이언트에서 세션 ID를 수정하여 인증을 우회할 수 있습니다.",
  "0.event.session_replay.custom_replay.solution.s0.o0": "클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다.",
  "0.event.session_replay.custom_replay.solution.s0.o1": "세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "0.event.session_replay.custom_replay.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "0.event.session_replay.replay.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.session_replay.replay.attack.s0.o1": "{0}",
  "0.event.session_replay.replay.attack.s1.o0": "공격 대상 페이지에 대하여 이벤트 클립보드의 이벤트 수행 기록이 존재합니다.",
  "0.event.session_replay.replay.attack.s1.o1": "해당 이벤트 수행 기록은 로그인을 수행할 때 사용할 수 있습니다.",
  "0.event.session_replay.replay.attack.s2.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_replay.replay.attack.s2.o1": "브라우저 실행 후, 로그인 이벤트 수행 기록을 이용하여 1차 로그인을 수행했습니다.",
  "0.event.session_replay.replay.attack.s3.o0": "로그인 수행 후, 브라우저에서 {0} 쿠키의 존재를 확인했습니다.",
  "0.event.session_replay.replay.attack.s4.o0": "기존 쿠키의 영향을 제거하기 위해, 브라우저를 종료한 후 다시 실행했습니다.",
  "0.event.session_replay.replay.attack.s4.o1": "브라우저 실행 후, 로그인 이후 확인한 {0} 쿠키를 추가했습니다.",
  "0.event.session_replay.replay.attack.s4.o2": "브라우저 쿠키 추가 후, 로그인 과정 없이 로그인 이후 이동한 위치로의 접근을 시도했습니다.",
  "0.event.session_replay.replay.result.s0.o0": "로그인 이벤트 수행 후, 브라우저의 {0} 쿠키의 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.event.session_replay.replay.result.s0.o1": "{0}",
  "0.event.session_replay.replay.result.s0.o2": "해당 문자열은 세션 ID 값에 해당합니다.",
  "0.event.session_replay.replay.result.s0.o3": "또한, 로그인 후 접근한 위치의 URL은 다음과 같습니다.",
  "0.event.session_replay.replay.result.s0.o4": "{0}",
  "0.event.session_replay.replay.result.s1.o0": "브라우저 쿠키 추가 및 로그인 과정 없이 로그인 이후 이동한 위치로의 접근 시도 결과, 다음과 같은 URL을 가지는 위치로 이동했습니다.",
  "0.event.session_replay.replay.result.s1.o1": "{0}",
  "0.event.session_replay.replay.result.s2.o0": "분석 수행 결과, 브라우저 쿠키 설정을 통해 로그인 과정 없이 로그인 이후 접근 가능한 위치로의 접근이 가능했습니다.",
  "0.event.session_replay.replay.result.s2.o1": "따라서 클라이언트에서 세션 ID를 수정하여 인증을 우회할 수 있습니다.",
  "0.event.session_replay.replay.solution.s0.o0": "클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다.",
  "0.event.session_replay.replay.solution.s0.o1": "세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "0.event.session_replay.replay.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s1.o1": "{0}",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s2.o1": "{0}",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s4.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s5.o1": "{0}",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.attack.s6.o1": "{0}",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.result.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.result.s1.o0": "분석 수행 결과, 브라우저를 재실행한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.skb__improper_session_expiration__application_session_timeout_settings.closure.solution.s0.o0": "웹 애플리케이션의 Session Timeout을 설정합니다.",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s1.o1": "{0}",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s2.o1": "{0}",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s4.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s5.o1": "{0}",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.attack.s6.o1": "{0}",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.result.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.result.s1.o0": "분석 수행 결과, 브라우저를 재실행한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.solution.s0.o0": "Session 유지를 위한 Baseline을 설정해야 합니다.\n",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.solution.s1.o0": "내부 서비스 제공 시, Session Time 설정 여부로 판단 (EP, EIP 인트라넷 및 Business 지원 서비스 등)\n",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.solution.s2.o0": "외부 서비스 제공 시, 60분 이하 설정 (대고객 서비스, 금융거래, 고객 관리 서비스 및 SK 대표 사이트 등)\n",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.solution.s3.o0": "내부/외부 모두 로그아웃과 브라우저 종료 시 세션 폐기 수행\n",
  "0.event.skb__improper_session_expiration__baseline_settings.closure.solution.s4.o0": "서비스 목적에 따른 특수성 또는 예외성이 필요한 경우 사유 제시",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 1차 시도했습니다.",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s1.o1": "{0}",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s2.o1": "{0}",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s3.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s4.o0": "다음 URL에 해당하는 페이지에서 로그인을 2차 시도했습니다.",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s4.o1": "{0}",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s5.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s5.o1": "{0}",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s6.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.attack.s6.o1": "{0}",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.result.s0.o0": "1차 및 2차 로그인 시도를 통해 생성된 세션 ID를 비교한 결과, 두 값이 동일합니다.",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.result.s1.o0": "분석 결과, 세션 ID가 고정값에 해당함을 확인했습니다.",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.solution.s0.o0": "클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다. 세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.\n",
  "0.event.skb__improper_session_expiration__fixed_session_id.fixed.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s1.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s2.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s4.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s5.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.attack.s6.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.result.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.result.s1.o0": "분석 수행 결과, {0}초 경과 후에도 기존 세션을 계속 사용하는 것이 가능함을 확인했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.closure.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s1.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s2.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s4.o0": "다음 URL에 해당하는 페이지에서 로그아웃을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s4.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s5.o0": "로그아웃한 후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s5.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s6.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s6.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s7.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.attack.s7.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.result.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.result.s1.o0": "분석 수행 결과, {0}초 경과 후에도 기존 세션을 계속 사용하는 것이 가능함을 확인했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_and_logout_for_timeout.logout.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s1.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s2.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s3.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s4.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s4.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s5.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.attack.s5.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.result.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.result.s1.o0": "분석 수행 결과, 로그아웃한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.closure.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s1.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s2.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s3.o0": "다음 URL에 해당하는 페이지에서 로그아웃을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s3.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s4.o0": "로그아웃한 후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s4.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s5.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.attack.s6.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.result.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.result.s1.o0": "분석 수행 결과, 로그아웃한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.skb__improper_session_expiration__session_disposal_upon_logout_or_browser_closure.logout.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s1.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s2.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s3.o0": "{0}초 동안 대기했습니다.\n",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s4.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s5.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s5.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s6.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.attack.s6.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.result.s0.o1": "{0}",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.result.s1.o0": "분석 수행 결과, 브라우저를 재실행한 후에도 기존 세션을 재사용할 수 있음을 확인했습니다.",
  "0.event.skb__improper_session_expiration__session_timeout_settings.closure.solution.s0.o0": "웹 애플리케이션의 Session Timeout을 설정합니다.",
  "0.event.skb__reflected_xss.run.attack.s0.o0": "다음 URL에 해당하는 페이지에 접근을 시도했습니다.",
  "0.event.skb__reflected_xss.run.attack.s0.o1": "{0}",
  "0.event.skb__reflected_xss.run.attack.s1.o0": "페이지에 존재하는 이벤트 중, 다음과 같은 XPath를 가지는 이벤트를 발견했습니다.",
  "0.event.skb__reflected_xss.run.attack.s1.o1": "{0}",
  "0.event.skb__reflected_xss.run.attack.s2.o0": "해당 이벤트의 값을 다음과 같이 변경했습니다.",
  "0.event.skb__reflected_xss.run.attack.s2.o1": "{0}",
  "0.event.skb__reflected_xss.run.attack.s3.o0": "페이지에 존재하는 이벤트 중, 다음과 같은 XPath를 가지는 이벤트를 실행했습니다.",
  "0.event.skb__reflected_xss.run.attack.s3.o1": "{0}",
  "0.event.skb__reflected_xss.run.attack.s4.o0": "해당 이벤트 실행 이후, SPARROW_DAST_XSS_TEST DOM 변수의 값을 검사했습니다.",
  "0.event.skb__reflected_xss.run.result.s0.o0": "SPARROW_DAST_XSS_TEST DOM 변수의 값이 다음과 같습니다.",
  "0.event.skb__reflected_xss.run.result.s0.o1": "{0}",
  "0.event.skb__reflected_xss.run.result.s1.o0": "해당 값은 다음과 같은 XPath를 가지는 이벤트의 값에 해당하는 스크립트를 실제로 실행한 결과에 해당합니다.",
  "0.event.skb__reflected_xss.run.result.s1.o1": "{0}",
  "0.event.skb__reflected_xss.run.result.s2.o0": "분석 수행 결과, 사용자가 삽입한 임의의 스크립트가 실제로 실행될 수 있음을 확인했습니다.",
  "0.event.skb__reflected_xss.run.solution.s0.o0": "사용자에게 제공되어 입력받은 값에 대해 입/출력값 검증작업이 필요합니다.",
  "0.event.skb__reflected_xss.run.solution.s1.o0": "{0}",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 시도했습니다.",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s0.o1": "{0}",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s1.o1": "{0}",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값을 사용자를 식별하는 계정 및 그룹에 해당하는 정보에 해당하는 것으로 간주했습니다. 해당 쿠키값은 다음과 같습니다.",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s2.o1": "{0}",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s3.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s4.o0": "브라우저에 {0}에 해당하는 쿠키값을 다음과 같이 설정했습니다.",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s4.o1": "{0}",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s5.o0": "별도의 인증 과정 없이 로그인 이후 접근 가능했던 다음 URL로 이동을 시도했습니다.",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.attack.s5.o1": "{0}",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.result.s0.o0": "별도의 인증 과정 없이 다음 URL에 대한 접근을 시도한 결과, 로그인 이후 접근한 페이지와 동일한 페이지로의 접근이 가능했습니다.",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.result.s0.o1": "{0}",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.result.s1.o0": "분석 수행 결과, 사용자를 식별하는 계정 및 그룹에 해당하는 정보에 해당하는 쿠키값을 변조하여 인증 우회가 가능함을 확인했습니다.",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.solution.s0.o0": "Cookie에 사용자 정보를 저장해야 하는 경우 해당 정보가 평문으로 노출되지 않도록 암호화된 값을 저장해야 합니다.\n",
  "0.event.skb__vulnerable_auth__cookie_tampering.tampered.solution.s1.o0": "보안 가이드 내의 “3-6. 중요 정보 암호화 저장” 항목 조치 방법 중 [보안 강도에 따른 대칭키 암호 알고리즘 분류]를 참고하여, 권고하는 안전한 암호화 알고리즘을 적용할 수 있습니다.",
  "0.event.snoop_disclosure.url.attack.s0.o0": "Snoop 정보 노출 취약점은 웹 애플리케이션 서버의 Snoop 관련 정보를 노출시킬 수 있는 취약점입니다.",
  "0.event.snoop_disclosure.url.attack.s1.o0": "Snoop 정보 노출 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.snoop_disclosure.url.attack.s2.o0": "대상 페이지에서 Snoop 관련 정보가 존재하는지 조사했습니다.",
  "0.event.snoop_disclosure.url.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.event.snoop_disclosure.url.result.s1.o0": "대상 페이지의 URL에서 {0} 문자열을 발견했습니다.",
  "0.event.snoop_disclosure.url.result.s1.o1": "URL은 다음과 같습니다.",
  "0.event.snoop_disclosure.url.result.s2.o0": "{0}",
  "0.event.snoop_disclosure.url.result.s3.o0": "또한 대상 페이지의 DOM에서 {0} 문자열을 발견했습니다.",
  "0.event.snoop_disclosure.url.result.s4.o0": "따라서 대상 페이지에 Snoop 정보가 포함될 수 있습니다.",
  "0.event.snoop_disclosure.url.result.s6.o0": "검사 결과, Snoop 정보 노출 취약점이 존재 가능성을 확인했습니다.",
  "0.event.snoop_disclosure.url.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.snoop_disclosure.url.solution.s1.o0": "의도하지 않은 노출을 막기 위하여 Snoop 관련 정보가 포함된 페이지에 대한 접근을 제어해야 합니다.",
  "0.event.sql_injection.conditional.apiReqInfo": "{0}",
  "0.event.sql_injection.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.sql_injection.conditional.apireqinfo": "{0}",
  "0.event.sql_injection.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.sql_injection.sqli.attack.s0.o0": "SQL 삽입 취약점은 데이터베이스와 연동된 웹 애플리케이션에 대해 악의적인 정보를 전송하고, SQL 쿼리문을 조작함으로써 허가 받지 않은 정보를 열람하거나 조작할 수 있는 취약점입니다.",
  "0.event.sql_injection.sqli.attack.s1.o0": "SQL 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.sql_injection.sqli.attack.s2.o0": "공격 대상인 모든 {0} 웹 요소를 탐색하기 위해, 다음과 같은 과정을 수행했습니다.",
  "0.event.sql_injection.sqli.attack.s3.o0": "{0}",
  "0.event.sql_injection.sqli.attack.s4.o0": "공격 대상에 다음과 같은 공격 문자열을 입력했습니다.",
  "0.event.sql_injection.sqli.attack.s5.o0": "{0}",
  "0.event.sql_injection.sqli.attack.s6.o0": "최종적으로, 다음과 같은 웹 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.sql_injection.sqli.attack.s7.o0": "{0}",
  "0.event.sql_injection.sqli.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.sql_injection.sqli.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "0.event.sql_injection.sqli.result.s2.o0": "{0}",
  "0.event.sql_injection.sqli.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "0.event.sql_injection.sqli.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 SQL 삽입 취약점의 존재 가능성을 발견했습니다.",
  "0.event.sql_injection.sqli.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.sql_injection.sqli.solution.s1.o0": "SQL 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 SQL 쿼리문을 형성하는 경우에서의 데이터 검증이 필요합니다.",
  "0.event.sql_injection.sqli.solution.s2.o0": "검증 방법은 크게 두 가지 방법이 있습니다.",
  "0.event.sql_injection.sqli.solution.s3.o0": "먼저, SQL 쿼리문을 인자화하여 사용할 수 있습니다. 이는 웹 애플리케이션을 구현한 언어별로 방법이 상이합니다.",
  "0.event.sql_injection.sqli.solution.s4.o0": "또한, 사용자 입력 데이터 중 작은 따옴표(')와 같은 일부 문자 또는 예약어에 대하여, 해당하는 모든 문자를 공백 등으로 바꿀 수 있습니다.",
  "0.event.sql_injection.sqli.solution.s4.o1": "다음과 같이 예를 들 수 있습니다.",
  "0.event.sql_injection.sqli.solution.s5.o0": "{0}",
  "0.event.sql_injection_bypass.session.attack.s0.o0": "SQL 삽입(사용자 인증 우회) 취약점이 발생하는지 확인하기 위해, 다음과 같은 분석 과정을 수행했습니다.",
  "0.event.sql_injection_bypass.session.attack.s1.o0": "이벤트 클립보드를 활용해 정상 로그인 요청을 전송했습니다.",
  "0.event.sql_injection_bypass.session.attack.s2.o0": "{0}",
  "0.event.sql_injection_bypass.session.attack.s2.o1": "{0}",
  "0.event.sql_injection_bypass.session.attack.s3.o0": "이후, 다음과 같이 사용자 ID를 {0}로 변경한 뒤, 로그인 요청을 재전송했습니다.",
  "0.event.sql_injection_bypass.session.attack.s4.o0": "{0}",
  "0.event.sql_injection_bypass.session.attack.s4.o1": "{0}",
  "0.event.sql_injection_bypass.session.result.s0.o0": "조작된 로그인 요청에 대한 응답 결과, 앞서 수행한 정상 로그인과 동일하게 사용자 세션 정보가 생성되는 것을 확인했습니다.",
  "0.event.sql_injection_bypass.session.result.s0.o1": "서버가 사용자의 입력값을 적절히 검증하지 않아, 공격 페이로드가 SQL 쿼리에 포함되었고, 이로 인해 SQL 삽입(사용자 인증 우회) 공격이 성공된 것으로 보입니다.",
  "0.event.sql_injection_bypass.session.solution.s0.o0": "SQL 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 ', \", ;, #, --, //, %, /*, */ 등을 검증하고 필터링해야 합니다.",
  "0.event.sql_injection_bypass.session.solution.s0.o1": "또한, Prepared Statement 또는 ORM(Object-Relational Mapping)을 사용해 사용자 입력값이 SQL 쿼리에 영향을 주지 않도록 합니다.",
  "0.event.sql_injection_bypass.session.solution.s1.o0": "SQL 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 SQL 쿼리 구조를 파악할 수 있습니다.",
  "0.event.sql_injection_bypass.session.solution.s1.o1": "따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환해 정보 유출을 방지해야 합니다.",
  "0.event.sql_injection_bypass.token.attack.s0.o0": "SQL 삽입(사용자 인증 우회) 취약점이 발생하는지 확인하기 위해, 다음과 같은 분석 과정을 수행했습니다.",
  "0.event.sql_injection_bypass.token.attack.s1.o0": "이벤트 클립보드를 활용해 정상 로그인 요청을 전송했습니다.",
  "0.event.sql_injection_bypass.token.attack.s2.o0": "{0}",
  "0.event.sql_injection_bypass.token.attack.s2.o1": "{0}",
  "0.event.sql_injection_bypass.token.attack.s3.o0": "이후, 다음과 같이 사용자 ID를 {0}로 변경한 뒤, 로그인 요청을 재전송했습니다.",
  "0.event.sql_injection_bypass.token.attack.s4.o0": "{0}",
  "0.event.sql_injection_bypass.token.attack.s4.o1": "{0}",
  "0.event.sql_injection_bypass.token.result.s0.o0": "조작된 로그인 요청에 대한 응답 결과, 앞서 수행한 정상 로그인과 동일하게 사용자 토큰이 생성되는 것을 확인했습니다.",
  "0.event.sql_injection_bypass.token.result.s0.o1": "서버가 사용자의 입력값을 적절히 검증하지 않아, 공격 페이로드가 SQL 쿼리에 포함되었고, 이로 인해 SQL 삽입(사용자 인증 우회) 공격이 성공된 것으로 보입니다.",
  "0.event.sql_injection_bypass.token.solution.s0.o0": "SQL 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 ', \", ;, #, --, //, %, /*, */ 등을 검증하고 필터링해야 합니다.",
  "0.event.sql_injection_bypass.token.solution.s0.o1": "또한, Prepared Statement 또는 ORM(Object-Relational Mapping)을 사용해 사용자 입력값이 SQL 쿼리에 영향을 주지 않도록 합니다.",
  "0.event.sql_injection_bypass.token.solution.s1.o0": "SQL 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 SQL 쿼리 구조를 파악할 수 있습니다.",
  "0.event.sql_injection_bypass.token.solution.s1.o1": "따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환해 정보 유출을 방지해야 합니다.",
  "0.event.unlimited_password_error.five_times.attack.s0.o0": "공격 대상 페이지에 도달하기 위하여 다음과 같은 과정을 수행했습니다.",
  "0.event.unlimited_password_error.five_times.attack.s0.o1": "{0}",
  "0.event.unlimited_password_error.five_times.attack.s1.o0": "공격 대상 페이지의 모든 {0} 웹 페이지 요소 중 {1} 속성이 {2}인 웹 페이지 요소에 대하여 다음과 같이 입력했습니다.",
  "0.event.unlimited_password_error.five_times.attack.s1.o1": "{0}",
  "0.event.unlimited_password_error.five_times.attack.s2.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "0.event.unlimited_password_error.five_times.attack.s3.o0": "위의 공격 과정을 총 {0}번 추가로 수행했습니다.",
  "0.event.unlimited_password_error.five_times.result.s0.o0": "이벤트 수행 후, 공격 대상 페이지의 DOM을 기록했습니다. 해당 DOM의 이름은 다음과 같습니다: {0}.",
  "0.event.unlimited_password_error.five_times.result.s1.o0": "동일한 공격 과정을 반복 수행한 결과로서 얻은 DOM은 모두 다음과 동일합니다: {0}.",
  "0.event.unlimited_password_error.five_times.result.s2.o0": "분석 수행 결과, 총 {0}회 반복적인 로그인 시도 결과가 모두 동일합니다.",
  "0.event.unlimited_password_error.five_times.result.s2.o1": "따라서 공격 대상 페이지에서 클라이언트의 반복적인 로그인 시도를 제한하지 않음을 의미합니다.",
  "0.event.unlimited_password_error.five_times.solution.s0.o0": "공격 대상 페이지에서 최소 {0}회의 반복적인 로그인을 시도하기 이전에 로그인 관련 조치를 취해야 합니다.",
  "0.event.unlimited_password_error.five_times.solution.s0.o1": "예를 들어, 로그인 자체를 제한하고 경고 메시지를 출력하거나, 다른 페이지로 이동시키는 방법입니다.",
  "0.event.unprotected_login_request.match.attack.s0.o0": "암호화되지 않은 로그인 요청을 확인하기 위해, 로그인 이벤트 클립보드에 있는 사용자 비밀번호를 {0}로 변경한 뒤, 다음과 같은 요청을 전송했습니다.",
  "0.event.unprotected_login_request.match.attack.s1.o0": "{0}",
  "0.event.unprotected_login_request.match.attack.s1.o1": "{0}",
  "0.event.unprotected_login_request.match.result.s0.o0": "분석 결과, 로그인 요청에 HTTP 프로토콜이 사용되고 있으며, 요청 본문에서 전송한 공격 문자열인 {0}가 평문 형태로 노출된 것을 확인했습니다.",
  "0.event.unprotected_login_request.match.solution.s0.o0": "웹 서버에 SSL/TLS 인증서를 적용하고 HTTPS 프로토콜 사용을 의무화해야 합니다.",
  "0.event.unprotected_login_request.match.solution.s0.o1": "이를 통해 클라이언트와 서버 간 전송되는 모든 데이터의 암호화를 보장하고 사용자 정보의 기밀성을 확보합니다.",
  "0.event.unprotected_login_request.match.solution.s0.o2": "또한 ID와 비밀번호 같은 민감한 정보는 전송 전 별도의 암호화 처리를 적용해야 합니다.",
  "0.event.unprotected_login_request.match.solution.s0.o3": "이 조치는 해당 정보가 탈취되더라도 공격자가 내용을 식별할 수 없도록 보호합니다.",
  "0.event.url_access_control.access.attack.s0.o0": "URL 접근 제한 실패 취약점은 인증이 없는 사용자가 인증이 필요한 페이지에 직접 접근했을 때 접근이 허용되는 취약점입니다.",
  "0.event.url_access_control.access.attack.s1.o0": "사용자가 입력한 로그인 기록 파일을 기반으로 URL 접근 제한을 확인합니다.",
  "0.event.url_access_control.access.attack.s2.o0": "다음의 URL에 대해 로그인 기록 파일이 존재합니다.",
  "0.event.url_access_control.access.attack.s3.o0": "{0}",
  "0.event.url_access_control.access.attack.s4.o0": "해당 페이지에서 로그인 기록 파일을 수행한 후 다음의 URL에 접근했습니다.",
  "0.event.url_access_control.access.attack.s5.o0": "{0}",
  "0.event.url_access_control.access.result.s0.o0": "URL 접근 제한 여부를 확인하기 위해 브라우저를 재시작하여 세션을 초기화합니다.",
  "0.event.url_access_control.access.result.s1.o0": "로그인 기록 파일을 수행한 후 접근할 수 있었던 다음의 URL에 세션 초기화 후 바로 접근합니다.",
  "0.event.url_access_control.access.result.s2.o0": "{0}",
  "0.event.url_access_control.access.result.s3.o0": "{0}",
  "0.event.url_access_control.access.result.s4.o0": "세션을 초기화한 후 해당 URL에 제한없이 접근됨을 확인할 수 있습니다.",
  "0.event.url_access_control.access.result.s5.o0": "{0}",
  "0.event.url_access_control.access.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.url_access_control.access.solution.s1.o0": "접근 제한이 필요한 URL에 대해서 URL 경로에 대한 사용자 검증을 수행해야 합니다.",
  "0.event.url_access_control.access.solution.s2.o0": "이를 통해 권한이 없는 사용자가 해당 직접 접근하여도 페이지가 노출되지 않고 로그인 페이지로 이동하거나 오류 페이지가 표시되도록 합니다.",
  "0.event.xfs.conditional.apiReqInfo": "{0}",
  "0.event.xfs.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.xfs.conditional.apireqinfo": "{0}",
  "0.event.xfs.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.xfs.userInput.attack.s0.o0": "크로스 프레임 스크립팅 취약점은 악성 스크립트가 포함된 페이지 내부에서 안전한 페이지를 불러오는 프레임만을 나타냄으로써, 사용자로 하여금 안전한 페이지를 정상적으로 불러온 것으로 인식하게 할 수 있는 취약점입니다.",
  "0.event.xfs.userInput.attack.s0.o1": "해당 취약점은 {0}, {1} 태그의 참조 위치 속성인 {2} 속성값을 사용할 경우에 발생할 수 있습니다.",
  "0.event.xfs.userInput.attack.s1.o0": "크로스 프레임 스크립팅 취약점이 존재하는지 확인하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.xfs.userInput.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.xfs.userInput.attack.s3.o0": "{0}",
  "0.event.xfs.userInput.attack.s4.o0": "탐색 결과, 다음과 같은 공격 대상 요소를 탐색했습니다.",
  "0.event.xfs.userInput.attack.s5.o0": "{0}",
  "0.event.xfs.userInput.attack.s6.o0": "공격 대상에 대하여 다음과 같은 문자열을 입력했습니다.",
  "0.event.xfs.userInput.attack.s7.o0": "{0}",
  "0.event.xfs.userInput.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.xfs.userInput.attack.s9.o0": "{0}",
  "0.event.xfs.userInput.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.xfs.userInput.result.s1.o0": "이벤트 수행 결과, DOM에서 {0} 태그를 발견했으며, 해당 태그의 {1} 속성값은 다음과 같습니다.",
  "0.event.xfs.userInput.result.s2.o0": "{0}",
  "0.event.xfs.userInput.result.s3.o0": "해당 속성값은 공격 시도 도중 입력한 값과 일치합니다. 따라서 사용자가 입력한 위치에 해당하는 페이지를 프레임 내부에서 불러올 수 있습니다.",
  "0.event.xfs.userInput.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 크로스 프레임 스크립팅 취약점이 존재함을 확인했습니다.",
  "0.event.xfs.userInput.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.xfs.userInput.solution.s1.o0": "태그의 {0} 속성값을 구성할 때 사용자 입력을 사용하지 않아야 합니다.",
  "0.event.xfs.userInput.solution.s2.o0": "사용자 입력을 사용해야 하는 경우, 반드시 해당 값에 대한 검증 및 필터링을 수행해야 합니다.",
  "0.event.xfs.userinput.attack.s0.o0": "크로스 프레임 스크립팅 취약점은 악성 스크립트가 포함된 페이지 내부에서 안전한 페이지를 불러오는 프레임만을 나타냄으로써, 사용자로 하여금 안전한 페이지를 정상적으로 불러온 것으로 인식하게 할 수 있는 취약점입니다.",
  "0.event.xfs.userinput.attack.s0.o1": "해당 취약점은 {0}, {1} 태그의 참조 위치 속성인 {2} 속성값을 사용할 경우에 발생할 수 있습니다.",
  "0.event.xfs.userinput.attack.s1.o0": "크로스 프레임 스크립팅 취약점이 존재하는지 확인하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.xfs.userinput.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.xfs.userinput.attack.s3.o0": "{0}",
  "0.event.xfs.userinput.attack.s4.o0": "탐색 결과, 다음과 같은 공격 대상 요소를 탐색했습니다.",
  "0.event.xfs.userinput.attack.s5.o0": "{0}",
  "0.event.xfs.userinput.attack.s6.o0": "공격 대상에 대하여 다음과 같은 문자열을 입력했습니다.",
  "0.event.xfs.userinput.attack.s7.o0": "{0}",
  "0.event.xfs.userinput.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.xfs.userinput.attack.s9.o0": "{0}",
  "0.event.xfs.userinput.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.xfs.userinput.result.s1.o0": "이벤트 수행 결과, DOM에서 {0} 태그를 발견했으며, 해당 태그의 {1} 속성값은 다음과 같습니다.",
  "0.event.xfs.userinput.result.s2.o0": "{0}",
  "0.event.xfs.userinput.result.s3.o0": "해당 속성값은 공격 시도 도중 입력한 값과 일치합니다. 따라서 사용자가 입력한 위치에 해당하는 페이지를 프레임 내부에서 불러올 수 있습니다.",
  "0.event.xfs.userinput.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 크로스 프레임 스크립팅 취약점이 존재함을 확인했습니다.",
  "0.event.xfs.userinput.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.xfs.userinput.solution.s1.o0": "태그의 {0} 속성값을 구성할 때 사용자 입력을 사용하지 않아야 합니다.",
  "0.event.xfs.userinput.solution.s2.o0": "사용자 입력을 사용해야 하는 경우, 반드시 해당 값에 대한 검증 및 필터링을 수행해야 합니다.",
  "0.event.xpath_injection.conditional.apiReqInfo": "{0}",
  "0.event.xpath_injection.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.xpath_injection.conditional.apireqinfo": "{0}",
  "0.event.xpath_injection.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.xpath_injection.xpathi.attack.s0.o0": "XPath 삽입 취약점은 XML 데이터를 보유한 웹 사이트에 대해 악의적인 정보를 전송하고, XPath 쿼리를 조작함으로써 XML 구조의 확인 및 허가 받지 않은 데이터를 열람하거나 조작할 수 있는 취약점입니다.",
  "0.event.xpath_injection.xpathi.attack.s1.o0": "XPath 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.xpath_injection.xpathi.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.xpath_injection.xpathi.attack.s3.o0": "{0}",
  "0.event.xpath_injection.xpathi.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "0.event.xpath_injection.xpathi.attack.s5.o0": "{0}",
  "0.event.xpath_injection.xpathi.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.xpath_injection.xpathi.attack.s7.o0": "{0}",
  "0.event.xpath_injection.xpathi.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.xpath_injection.xpathi.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "0.event.xpath_injection.xpathi.result.s2.o0": "{0}",
  "0.event.xpath_injection.xpathi.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "0.event.xpath_injection.xpathi.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 XPath 삽입 취약점의 존재 가능성을 발견했습니다.",
  "0.event.xpath_injection.xpathi.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.xpath_injection.xpathi.solution.s1.o0": "XPath 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 XPath 쿼리문을 형성하는 경우에서의 데이터 검증이 필요합니다.",
  "0.event.xpath_injection.xpathi.solution.s2.o1": "검증 방법은 크게 두 가지 방법이 있습니다.",
  "0.event.xpath_injection.xpathi.solution.s3.o0": "먼저, XPath 쿼리문을 인자화하여 사용할 수 있습니다. 이는 웹 애플리케이션을 구현한 언어별로 방법이 상이합니다.",
  "0.event.xpath_injection.xpathi.solution.s4.o0": "또한, 사용자 입력 데이터 중 작은 따옴표(')와 같은 일부 문자에 대하여, 해당하는 모든 문자를 다른 문자로 바꿀 수 있습니다.",
  "0.event.xpath_injection.xpathi.solution.s5.o0": "다음과 같이 예를 들 수 있습니다.",
  "0.event.xpath_injection.xpathi.solution.s6.o0": "{0}",
  "0.event.xss.conditional.apiReqInfo": "{0}",
  "0.event.xss.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.xss.conditional.apireqinfo": "{0}",
  "0.event.xss.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "0.event.xss.reflected.attack.s0.o0": "비지속적 크로스 사이트 스크립팅 취약점은 웹 사이트에 대하여 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.event.xss.reflected.attack.s1.o0": "비지속적 크로스 사이트 스크립팅 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "0.event.xss.reflected.attack.s2.o0": "공격 대상인 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.event.xss.reflected.attack.s3.o0": "{0}",
  "0.event.xss.reflected.attack.s4.o0": "탐색 결과, 다음과 같은 공격 대상 요소를 탐색했습니다.",
  "0.event.xss.reflected.attack.s5.o0": "{0}",
  "0.event.xss.reflected.attack.s6.o0": "공격 대상에 대하여 다음과 같은 문자열을 입력했습니다.(공격 문자열은 공격 대상 요소의 XPath값의 해시값을 포함합니다)",
  "0.event.xss.reflected.attack.s7.o0": "{0}",
  "0.event.xss.reflected.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.xss.reflected.attack.s9.o0": "{0}",
  "0.event.xss.reflected.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.xss.reflected.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 공격 스크립트를 발견했습니다.",
  "0.event.xss.reflected.result.s2.o0": "{0}",
  "0.event.xss.reflected.result.s3.o0": "해당 공격 스크립트는 {0} 라는 이름의 창을 생성했습니다.",
  "0.event.xss.reflected.result.s4.o0": "새롭게 생성된 창의 이름은 해당 공격 스크립트가 탐색한 공격 대상 웹 페이지 요소에 의하여 실행되었음을 의미합니다.",
  "0.event.xss.reflected.result.s5.o0": "실행 결과에 의거하여, 공격 시도가 성공했으며 비지속적 크로스 사이트 스크립팅 취약점이 존재함을 확인했습니다.",
  "0.event.xss.reflected.result.s6.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.xss.reflected.result.s7.o0": "{0}",
  "0.event.xss.reflected.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.xss.reflected.solution.s1.o0": "비지속적 크로스 사이트 스크립팅 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 검증 및 필터링해야 합니다.",
  "0.event.xss.reflected.solution.s2.o0": "기본적으로 태그의 이름이나 태그 속성의 이름, <script> 태그 사이, <style> 태그 사이 및 HTML 주석 사이와 허용되지 않은 위치에 사용자로부터 입력 받은 외부 데이터를 사용하지 않아야 합니다.",
  "0.event.xss.reflected.solution.s3.o0": "또는, 사용자로부터 입력 받은 외부 데이터를 사용해야 하는 경우에는 다음과 같이 데이터를 인코딩하여 사용해야 합니다.",
  "0.event.xss.reflected.solution.s4.o0": "웹 페이지 요소 사용자로부터 입력 받은 외부 데이터를 사용할 때의 인코딩",
  "0.event.xss.reflected.solution.s5.o0": "{0}",
  "0.event.xss.reflected.solution.s6.o0": "이외에도 사용자로부터 입력 받은 외부 데이터를 HTML 속성값이나 URL 매개변수, JavaScript, CSS 값 등에 사용할 때에도 인코딩이 필요합니다.",
  "0.event.xss.stored.attack.s0.o0": "지속적 크로스 사이트 스크립팅 취약점은 웹 사이트에 대하여 악성 스크립트를 삽입할 수 있고, 삽입한 악성 스크립트가 DB에 저장될 수 있는 취약점입니다.",
  "0.event.xss.stored.attack.s1.o0": "지속적 크로스 사이트 스크립팅 취약점을 검출하기 위하여 다음과 같이 공격을 시도합니다.",
  "0.event.xss.stored.attack.s2.o0": "공격 대상인 {0} 웹 페이지 요소를 탐색하기 위하여 다음과 같은 과정을 수행합니다.",
  "0.event.xss.stored.attack.s3.o0": "{0}",
  "0.event.xss.stored.attack.s4.o0": "탐색 결과 다음과 같은 공격 대상 웹 페이지 요소를 탐색합니다.",
  "0.event.xss.stored.attack.s5.o0": "{0}",
  "0.event.xss.stored.attack.s6.o0": "공격 대상에 대하여 다음과 같은 문자열을 입력했습니다.(공격 문자열은 공격 대상 요소의 XPath값의 해시값을 포함합니다)",
  "0.event.xss.stored.attack.s7.o0": "{0}",
  "0.event.xss.stored.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "0.event.xss.stored.attack.s9.o0": "{0}",
  "0.event.xss.stored.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "0.event.xss.stored.result.s1.o0": "지속적 크로스 사이트 스크립팅 취약점을 검출하기 위해 다음과 같은 과정을 수행합니다.",
  "0.event.xss.stored.result.s2.o0": "{0}",
  "0.event.xss.stored.result.s3.o0": "이동 결과, DOM에서 다음과 같은 공격 스크립트를 발견했습니다.",
  "0.event.xss.stored.result.s4.o0": "{0}",
  "0.event.xss.stored.result.s5.o0": "해당 공격 스크립트는 {0} 라는 이름의 창을 생성했습니다.",
  "0.event.xss.stored.result.s6.o0": "새롭게 생성된 창의 이름은 해당 공격 스크립트가 탐색한 공격 대상 웹 페이지 요소에 의하여 실행되었음을 의미합니다.",
  "0.event.xss.stored.result.s7.o0": "실행 결과에 의거하여, 공격 시도가 성공했으며 비지속적 크로스 사이트 스크립팅 취약점이 존재함을 확인했습니다.",
  "0.event.xss.stored.result.s8.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "0.event.xss.stored.result.s9.o0": "{0}",
  "0.event.xss.stored.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.event.xss.stored.solution.s1.o0": "지속적 크로스 사이트 스크립팅 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 검증 및 필터링해야 합니다.",
  "0.event.xss.stored.solution.s2.o0": "기본적으로 태그의 이름이나 태그 속성의 이름, <script> 태그 사이, <style> 태그 사이 및 HTML 주석 사이와 허용되지 않은 위치에 사용자로부터 입력 받은 외부 데이터를 사용하지 않아야 합니다.",
  "0.event.xss.stored.solution.s3.o0": "또는, 사용자로부터 입력 받은 외부 데이터를 사용해야 하는 경우에는 다음과 같이 데이터를 인코딩하여 사용해야 합니다.",
  "0.event.xss.stored.solution.s4.o0": "웹 페이지 요소 사용자로부터 입력 받은 외부 데이터를 사용할 때의 인코딩",
  "0.event.xss.stored.solution.s5.o0": "{0}",
  "0.event.xss.stored.solution.s6.o0": "이외에도 사용자로부터 입력 받은 외부 데이터를 HTML 속성값이나 URL 매개변수, JavaScript, CSS 값 등에 사용할 때에도 인코딩이 필요합니다.",
  "0.http.absolute_path_disclosure.match.attack.s0.o0": "파일 절대 경로 노출 취약점은 파일 절대 경로가 노출되는 취약점입니다.",
  "0.http.absolute_path_disclosure.match.attack.s1.o0": "이러한 파일 절대 경로 노출 취약점을 검출하기 다음의 HTTP 요청을 보냈습니다.",
  "0.http.absolute_path_disclosure.match.attack.s2.o0": "{0}",
  "0.http.absolute_path_disclosure.match.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.absolute_path_disclosure.match.result.s1.o0": "{0}",
  "0.http.absolute_path_disclosure.match.result.s2.o0": "위 HTTP 응답에서 파일 절대 경로로 추정되는 {0} 문자열이 검출되었습니다.",
  "0.http.absolute_path_disclosure.match.result.s3.o0": "{0} 경로가 실제 웹 애플리케이션과 연관이 있으면 경로 조작 등의 공격에 사용되어 중요 정보가 탈취되거나 예기치 않은 파일이 서버에서 실행될 수 있습니다.",
  "0.http.absolute_path_disclosure.match.solution.s0.o0": "파일 절대 경로 노출 취약점을 막기 위해서는 {0} 경로가 실제 웹 애플리케이션 서버와 연관이 있는지 확인하고, 연관되어 있다면 HTTP 응답에 노출되지 않도록 막아야 합니다.",
  "0.http.admin_page_disclosure.access.attack.s0.o0": "관리자 페이지 노출 취약점은 권한이 없는 임의의 사용자가 관리자 페이지에 접근이 가능한 취약점입니다.",
  "0.http.admin_page_disclosure.access.attack.s1.o0": "공격자는 관리자 페이지로 추정되는 페이지에 접근을 시도할 수 있습니다.",
  "0.http.admin_page_disclosure.access.attack.s1.o1": "이러한 시도를 통해 관리자 페이지에 접근이 가능하면, 공격자는 이를 통해 웹 애플리케이션의 주요 기능을 사용하거나 중요한 정보를 탈취할 수 있습니다.",
  "0.http.admin_page_disclosure.access.attack.s2.o0": "관리자 페이지 접근을 위해 {0} 공격 문자열이 포함된 다음 URL에 접근을 시도합니다.",
  "0.http.admin_page_disclosure.access.attack.s3.o0": "{0}",
  "0.http.admin_page_disclosure.access.result.s0.o0": "공격 문자열이 포함된 URL 접근 시도에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.admin_page_disclosure.access.result.s1.o0": "{0}",
  "0.http.admin_page_disclosure.access.result.s2.o0": "위 HTTP 응답을 통해 관리자 페이지로 예상되는 페이지에 접근이 가능함을 확인할 수 있습니다.",
  "0.http.admin_page_disclosure.access.solution.s0.o0": "관리자 페이지 노출 취약점을 해결하기 위해서는 권한이 없는 임의의 사용자가 관리자 페이지에 접근하지 못하도록 해야 합니다.",
  "0.http.application_error.client_error.attack.s0.o0": "애플리케이션 오류는 웹 애플리케이션에 클라이언트 오류(HTTP 400번대 오류)나 서버 오류(HTTP 500번대 오류)가 발생하여 페이지가 정상적으로 표시되지 않는 것을 말합니다.",
  "0.http.application_error.client_error.attack.s0.o1": "이러한 애플리케이션 오류는 사용자에게 불편함을 줄 뿐만 아니라 오류 메시지를 통해 중요 정보가 노출될 수 있습니다.",
  "0.http.application_error.client_error.attack.s0.o2": "애플리케이션 오류가 발생한 HTTP 요청은 다음과 같습니다.",
  "0.http.application_error.client_error.attack.s1.o0": "{0}",
  "0.http.application_error.client_error.result.s0.o0": "클라이언트 오류가 발생하여 웹 애플리케이션의 페이지가 정상적으로 표시되지 않았습니다.",
  "0.http.application_error.client_error.result.s0.o1": "해당 페이지의 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.application_error.client_error.result.s1.o0": "{0}",
  "0.http.application_error.client_error.result.s2.o0": "위의 HTTP 응답 헤더에 클라이언트 오류를 나타내는 HTTP {0} 상태 코드를 확인할 수 있습니다.",
  "0.http.application_error.client_error.solution.s0.o0": "클라이언트 오류를 의미하는 대표적인 상태 코드는 다음과 같습니다.",
  "0.http.application_error.client_error.solution.s1.o0": "{0}",
  "0.http.application_error.client_error.solution.s2.o0": "상태 코드를 참고하여 클라이언트 오류에 따른 오류를 고쳐야 합니다.",
  "0.http.application_error.error_message.attack.s0.o0": "애플리케이션 오류는 웹 애플리케이션에 클라이언트 오류(HTTP 400번대 오류)나 서버 오류(HTTP 500번대 오류)가 발생하여 페이지가 정상적으로 표시되지 않는 것을 말합니다.",
  "0.http.application_error.error_message.attack.s0.o1": "이러한 애플리케이션 오류는 사용자에게 불편함을 줄 뿐만 아니라 오류 메시지를 통해 웹 애플리케이션 서버의 중요 정보가 노출될 수 있습니다.",
  "0.http.application_error.error_message.attack.s0.o2": "애플리케이션 오류가 발생한 HTTP 요청은 다음과 같습니다.",
  "0.http.application_error.error_message.attack.s1.o0": "{0}",
  "0.http.application_error.error_message.result.s0.o0": "오류가 발생하여 페이지에 웹 애플리케이션의 중요 정보가 노출되었습니다.",
  "0.http.application_error.error_message.result.s0.o1": "노출된 페이지의 HTTP 응답은 다음과 같습니다.",
  "0.http.application_error.error_message.result.s1.o0": "{0}",
  "0.http.application_error.error_message.solution.s0.o0": "오류 메시지로 인한 중요 정보 노출을 막기 위해서는 오류 페이지를 수정하여 오류 메시지에 중요 정보를 제외하는 방법이 있습니다.",
  "0.http.application_error.error_message.solution.s0.o1": "또는 오류 발생시 다른 페이지를 표시하여 오류 메시지 자체를 보여주지 않는 방법이 있습니다.",
  "0.http.application_error.server_error.attack.s0.o0": "애플리케이션 오류는 웹 애플리케이션에 클라이언트 오류(HTTP 400번대 오류)나 서버 오류(HTTP 500번대 오류)가 발생하여 페이지가 정상적으로 표시되지 않는 것을 말합니다.",
  "0.http.application_error.server_error.attack.s0.o1": "이러한 애플리케이션 오류는 사용자에게 불편함을 줄 뿐만 아니라 오류 메시지를 통해 중요 정보가 노출될 수 있습니다.",
  "0.http.application_error.server_error.attack.s0.o2": "애플리케이션 오류가 발생한 HTTP 요청은 다음과 같습니다.",
  "0.http.application_error.server_error.attack.s1.o0": "{0}",
  "0.http.application_error.server_error.result.s0.o0": "서버 오류가 발생하여 웹 애플리케이션의 페이지가 정상적으로 표시되지 않았습니다.",
  "0.http.application_error.server_error.result.s0.o1": "해당 페이지의 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.application_error.server_error.result.s1.o0": "{0}",
  "0.http.application_error.server_error.result.s2.o0": "위의 HTTP 응답 헤더에 서버 오류를 나타내는 HTTP {0} 상태 코드를 확인할 수 있습니다.",
  "0.http.application_error.server_error.solution.s0.o0": "서버 오류를 의미하는 대표적인 상태 코드는 다음과 같습니다.",
  "0.http.application_error.server_error.solution.s1.o0": "{0}",
  "0.http.application_error.server_error.solution.s2.o0": "상태 코드를 참고하여 서버 오류에 따른 애플리케이션 오류를 고쳐야 합니다.",
  "0.http.blind_sql_injection.compare.attack.s0.o0": "SQL 삽입은 코드 삽입 공격의 일종으로 공격자가 웹 애플리케이션 서버의 SQL 쿼리문에 사용된 사용자 입력을 악용하여 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 공격입니다.",
  "0.http.blind_sql_injection.compare.attack.s0.o1": "공격자는 SQL 삽입을 통해 웹 애플리케이션 데이터베이스 내의 중요 정보를 탈취, 변경, 파괴 등이 가능합니다.",
  "0.http.blind_sql_injection.compare.attack.s0.o2": "다음과 같이 웹 애플리케이션 내에 사용자 입력을 SQL 쿼리문에 사용하는 경우,",
  "0.http.blind_sql_injection.compare.attack.s0.o3": "또한, 공격자는 데이터베이스의 무결성을 손상시켜 웹 애플리케이션이 비정상적인 행동 또는 종료되게 할 수 있으며, 데이터베이스의 사용자 권한을 조작할 수도 있습니다.",
  "0.http.blind_sql_injection.compare.attack.s1.o0": "{0}",
  "0.http.blind_sql_injection.compare.attack.s2.o0": "공격자가 users 테이블의 모든 정보를 탈취하기 위해 다음과 같은 값을 입력한다면,",
  "0.http.blind_sql_injection.compare.attack.s3.o0": "{0}",
  "0.http.blind_sql_injection.compare.attack.s4.o0": "다음과 같은 SQL 쿼리문이 실행되어 users 테이블의 모든 정보가 노출됩니다.",
  "0.http.blind_sql_injection.compare.attack.s5.o0": "{0}",
  "0.http.blind_sql_injection.compare.attack.s6.o0": "이러한 SQL 삽입을 검출하기 위해서 {0} 매개변수에 {1} 공격 문자열을 삽입한 HTTP 요청을 다음과 같이 보냅니다.",
  "0.http.blind_sql_injection.compare.attack.s7.o0": "{0}",
  "0.http.blind_sql_injection.compare.result.s0.o0": "공격 문자열이 아닌 일반적인 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.blind_sql_injection.compare.result.s1.o0": "{0}",
  "0.http.blind_sql_injection.compare.result.s2.o0": "{0} 매개변수에 {1} 공격 문자열을 삽입한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.blind_sql_injection.compare.result.s3.o0": "{0}",
  "0.http.blind_sql_injection.compare.result.s4.o0": "{0} 매개변수에 삽입된 {1} 공격 문자열에 의해 일반적인 HTTP 응답과는 다른 HTTP 응답이 왔음을 확인할 수 있습니다.",
  "0.http.blind_sql_injection.compare.solution.s0.o0": "SQL 삽입을 막기 위해서는 사용자 입력이 SQL 쿼리문에 사용되는 부분과 SQL 쿼리문을 실행하는 부분을 분리하여 사용자 입력을 검증하는 방법이 있습니다.",
  "0.http.blind_sql_injection.compare.solution.s0.o1": "또는 사용자 입력 중 SQL 쿼리문에서 중요한 의미를 가지는 문자를 이스케이프 처리하는 방법이 있습니다.",
  "0.http.blind_sql_injection.compare.solution.s0.o2": "이외에도 패턴 확인을 통해서 사용자 입력이 유효한지 확인하거나, 데이터베이스 권한을 통해 허용된 사용자만이 SQL 쿼리문에 사용할 수 있는 값을 입력하도록 조정하는 방법 등이 있습니다.",
  "0.http.blind_sql_injection.error.attack.s0.o0": "SQL 삽입은 코드 삽입 공격의 일종으로 공격자가 웹 애플리케이션 서버의 SQL 쿼리문에 사용된 사용자 입력을 악용하여 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 공격입니다.",
  "0.http.blind_sql_injection.error.attack.s0.o1": "공격자는 SQL 삽입을 통해 웹 애플리케이션 데이터베이스 내의 중요 정보를 탈취, 변경, 파괴 등이 가능합니다.",
  "0.http.blind_sql_injection.error.attack.s0.o2": "다음과 같이 웹 애플리케이션 내에 사용자 입력을 SQL 쿼리문에 사용하는 경우,",
  "0.http.blind_sql_injection.error.attack.s0.o3": "또한, 공격자는 데이터베이스의 무결성을 손상시켜 웹 애플리케이션이 비정상적인 행동 또는 종료되게 할 수 있으며, 데이터베이스의 사용자 권한을 조작할 수도 있습니다.",
  "0.http.blind_sql_injection.error.attack.s1.o0": "{0}",
  "0.http.blind_sql_injection.error.attack.s2.o0": "공격자가 users 테이블의 모든 정보를 탈취하기 위해 다음과 같은 값을 입력한다면,",
  "0.http.blind_sql_injection.error.attack.s3.o0": "{0}",
  "0.http.blind_sql_injection.error.attack.s4.o0": "다음과 같은 SQL 쿼리문이 실행되어 users 테이블의 모든 정보가 노출됩니다.",
  "0.http.blind_sql_injection.error.attack.s5.o0": "{0}",
  "0.http.blind_sql_injection.error.attack.s6.o0": "이러한 SQL 삽입을 검출하기 위해서 {0} 매개변수에 {1} 공격 문자열을 삽입한 HTTP 요청을 다음과 같이 보냅니다.",
  "0.http.blind_sql_injection.error.attack.s7.o0": "{0}",
  "0.http.blind_sql_injection.error.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.blind_sql_injection.error.result.s1.o0": "{0}",
  "0.http.blind_sql_injection.error.result.s2.o0": "위의 HTTP 응답을 통해 웹 애플리케이션의 서버가 데이터베이스의 오류로 인해 비정상적으로 작동함을 확인할 수 있습니다.",
  "0.http.blind_sql_injection.error.solution.s0.o0": "SQL 삽입을 막기 위해서는 사용자 입력이 SQL 쿼리문에 사용되는 부분과 SQL 쿼리문을 실행하는 부분을 분리하여 사용자 입력을 검증하는 방법이 있습니다.",
  "0.http.blind_sql_injection.error.solution.s0.o1": "또는 사용자 입력 중 SQL 쿼리문에서 중요한 의미를 가지는 문자를 이스케이프 처리하는 방법이 있습니다.",
  "0.http.blind_sql_injection.error.solution.s0.o2": "이외에도 패턴 확인을 통해서 사용자 입력이 유효한지 확인하거나, 데이터베이스 권한을 통해 허용된 사용자만이 SQL 쿼리문에 사용할 수 있는 값을 입력하도록 조정하는 방법 등이 있습니다.",
  "0.http.body_parameters_to_query.same.attack.s0.o0": "파라미터 쿼리 변환 취약점은 POST 메소드 HTTP 요청의 매개변수 값을 URL 쿼리 값으로 변경하여 GET 메소드 HTTP 요청으로 보내도 같은 HTTP 응답을 받는 취약점입니다.",
  "0.http.body_parameters_to_query.same.attack.s1.o0": "기존 POST 메소드 HTTP 요청은 다음과 같습니다.",
  "0.http.body_parameters_to_query.same.attack.s2.o0": "{0}",
  "0.http.body_parameters_to_query.same.attack.s2.o1": "{0}",
  "0.http.body_parameters_to_query.same.attack.s3.o0": "파라미터 쿼리 변환 취약점을 검출하기 위해 위의 POST 메소드 HTTP 요청을 다음과 같은 GET 메소드 HTTP 요청으로 변환했습니다.",
  "0.http.body_parameters_to_query.same.attack.s4.o0": "{0}",
  "0.http.body_parameters_to_query.same.attack.s4.o1": "{0}",
  "0.http.body_parameters_to_query.same.attack.s5.o0": "위 변환된 GET 메소드 HTTP 요청에서 기존 POST 메소드 HTTP 요청의 바디 매개변수 값이 {0} URL 쿼리 값으로 변환된 것을 확인할 수 있습니다.",
  "0.http.body_parameters_to_query.same.result.s0.o0": "기존 POST 메소드 HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.body_parameters_to_query.same.result.s1.o0": "{0}",
  "0.http.body_parameters_to_query.same.result.s2.o0": "변환된 GET 메소드 HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.body_parameters_to_query.same.result.s3.o0": "{0}",
  "0.http.body_parameters_to_query.same.result.s4.o0": "위 두 HTTP 응답 헤더의 헤더 개수와 종류, 상태 코드, 콘텐츠 길이 등이 같습니다.",
  "0.http.body_parameters_to_query.same.result.s4.o1": "이를 통해, 기존 POST 메소드 HTTP 요청에 대한 HTTP 응답이 변환된 GET 메소드 HTTP 요청에 대한 HTTP 응답이 같음을 유추할 수 있습니다.",
  "0.http.body_parameters_to_query.same.solution.s0.o0": "이 취약점을 해결하기 위해서는 POST 메소드 HTTP 요청과 GET 메소드 HTTP 요청이 웹 애플리케이션 내부에서 따로 처리되어야 합니다.",
  "0.http.body_parameters_to_query.same.solution.s1.o0": "만약 같이 처리되어야 하는 경우에는 같은 필터를 적용해야 합니다.",
  "0.http.broken_skip_link.broken.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "0.http.broken_skip_link.broken.attack.s0.o1": "{0}",
  "0.http.broken_skip_link.broken.attack.s0.o2": "{0}",
  "0.http.broken_skip_link.broken.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.broken_skip_link.broken.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.broken_skip_link.broken.attack.s3.o0": "HTTP 응답 본문에서 건너뛰기 링크를 탐색했습니다.",
  "0.http.broken_skip_link.broken.attack.s4.o0": "탐색한 건너뛰기 링크와 연결된 요소를 탐색했습니다.",
  "0.http.broken_skip_link.broken.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.broken_skip_link.broken.result.s1.o0": "HTTP 응답 본문에서 건너뛰기 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.broken_skip_link.broken.result.s1.o1": "{0}",
  "0.http.broken_skip_link.broken.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.http.broken_skip_link.broken.result.s2.o1": "{0}",
  "0.http.broken_skip_link.broken.result.s3.o0": "HTTP 응답 본문의 {0} 속성 값 또는 {1} 속성 값에 다음과 같은 요소가 존재하지 않습니다.",
  "0.http.broken_skip_link.broken.result.s3.o1": "{0}",
  "0.http.broken_skip_link.broken.result.s4.o0": "해당 요소가 없으므로 HTTP 응답 본문에 건너뛰기 링크와 연결한 요소가 존재하지 않습니다.",
  "0.http.broken_skip_link.broken.solution.s0.o0": "건너뛰기 링크와 연결할 요소의 {0} 속성 값 또는 {1} 속성 값을 다음과 같이 설정하세요.",
  "0.http.broken_skip_link.broken.solution.s0.o1": "{0}",
  "0.http.buffer_overflow.input.attack.s0.o0": "버퍼 오버플로우 취약점은 공격자가 버퍼 오버플로우를 발생시키는 값을 입력하여 웹 애플리케이션의 비정상적인 종료나 행동을 일으키는 취약점입니다.",
  "0.http.buffer_overflow.input.attack.s0.o1": "버퍼 오버플로우 취약점은 웹 서버와 애플리케이션 서버 모두에서 발생할 수 있으며, 서버를 사용하는 웹 애플리케이션에 치명적인 위협이 됩니다.",
  "0.http.buffer_overflow.input.attack.s0.o2": "웹 애플리케이션이 이미지 생성이나 이메일 전송 등에 쓰이는 라이브러리를 사용할 경우에 버퍼 오버플로우에 취약할 가능성이 높습니다.",
  "0.http.buffer_overflow.input.attack.s0.o3": "또한, 웹 애플리케이션에서 입력값을 정밀하게 검사하지 않으면 긴 길이의 입력값을 넣었을 때 데이터베이스가 비정상적인 작동을 하거나 정보 노출 가능성이 높은 상세 오류 메시지가 출력될 가능성이 높습니다.",
  "0.http.buffer_overflow.input.attack.s0.o4": "버퍼 오버플로우 취약점을 검출하기 위한 HTTP 요청은 다음과 같습니다.",
  "0.http.buffer_overflow.input.attack.s1.o0": "{0}",
  "0.http.buffer_overflow.input.attack.s1.o1": "{0}",
  "0.http.buffer_overflow.input.result.s0.o0": "긴 길이의 입력값을 포함하고 있는 HTTP 요청으로 인하여 서버 오류 또는 연결 해제가 발생했습니다.",
  "0.http.buffer_overflow.input.result.s0.o1": "버퍼 오버플로우 취약점 검출을 위해 보낸 HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.buffer_overflow.input.result.s1.o0": "{0}",
  "0.http.buffer_overflow.input.solution.s0.o0": "버퍼 오버플로우 취약점을 근본적으로 해결하기 위해서는 개발자의 주의와 코드의 지속적인 검사가 필요합니다.",
  "0.http.buffer_overflow.input.solution.s0.o1": "오버플로우에 안전한 라이브러리와 함수를 사용해야하며, 비실행 스택을 사용하거나 버퍼 오버플로우를 방지하는 컴파일러는 사용하는 방법이 있습니다.",
  "0.http.cache_control.header.attack.s0.o0": "캐시 통제는 여러 유저가 웹 캐시를 공유할 때, 캐시를 어떻게 다룰 것인지를 말합니다.",
  "0.http.cache_control.header.attack.s0.o1": "캐시 통제가 잘못었을 때, 여러 유저가 웹 캐시를 공유하고 해당 캐시에 악의적인 데이터가 유입되면 웹 캐시를 공유한 모든 유저가 악의적인 데이터에 노출됩니다.",
  "0.http.cache_control.header.attack.s0.o2": "이를 캐시 오염이라 합니다.",
  "0.http.cache_control.header.attack.s0.o3": "캐시 통제는 HTTP 응답의 Cache-Control 헤더나 Pragma 헤더를 통해 확인할 수 있으며 캐시 오염을 막기 위한 값은 다음과 같습니다.",
  "0.http.cache_control.header.attack.s1.o0": "{0}",
  "0.http.cache_control.header.result.s0.o0": "캐시 통제 취약점이 발견된 페이지의 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.cache_control.header.result.s1.o0": "{0}",
  "0.http.cache_control.header.result.s2.o0": "위의 HTTP 응답 헤더 중 {0} 헤더의 매개변수 값이 {0} 입니다.",
  "0.http.cache_control.header.solution.s0.o0": "캐시 오염을 막는 캐시 통제를 하기 위해서는 위에서 언급한 Cache-Control 헤더와 Pragma 헤더 값을 설정하는 방법이 있습니다.",
  "0.http.cache_control.header.solution.s0.o1": "이외에 공격자가 캐시 오염을 시도하더라도 정적인 응답을 통해 반응하지 않는 방법이 있습니다.",
  "0.http.cache_control.no_header.attack.s0.o0": "캐시 통제는 여러 유저가 웹 캐시를 공유할 때, 캐시를 어떻게 다룰 것인지를 말합니다.",
  "0.http.cache_control.no_header.attack.s0.o1": "캐시 통제가 잘못었을 때, 여러 유저가 웹 캐시를 공유하고 해당 캐시에 악의적인 데이터가 유입되면 웹 캐시를 공유한 모든 유저가 악의적인 데이터에 노출됩니다.",
  "0.http.cache_control.no_header.attack.s0.o2": "이를 캐시 오염이라 합니다.",
  "0.http.cache_control.no_header.attack.s0.o3": "캐시 통제는 HTTP 응답의 Cache-Control 헤더나 Pragma 헤더를 통해 확인할 수 있으며 캐시 오염을 막기 위한 값은 다음과 같습니다.",
  "0.http.cache_control.no_header.attack.s1.o0": "{0}",
  "0.http.cache_control.no_header.result.s0.o0": "캐시 통제 취약점이 발견된 페이지의 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.cache_control.no_header.result.s1.o0": "{0}",
  "0.http.cache_control.no_header.result.s2.o0": "위의 HTTP 응답 헤더에 캐시 통제와 관련된 헤더가 없습니다.",
  "0.http.cache_control.no_header.solution.s0.o0": "캐시 오염을 막는 캐시 통제를 하기 위해서는 위에서 언급한 Cache-Control 헤더와 Pragma 헤더 값을 설정하는 방법이 있습니다.",
  "0.http.cache_control.no_header.solution.s0.o1": "이외에도 캐시 서버에서 하나의 HTTP 요청에 두개의 HTTP 응답을 생성하는 HTTP 응답 분할을 방법이 있나 서버 캐시가 바뀔 때까지 HTTP 요청을 보내는 방법이 있습니다.",
  "0.http.client_side_cookie_access.match.attack.s0.o0": "클라이언트 측(JavaScript) 쿠키 참조는 HTTP 응답에서 {0} 문자열이 있는지 확인하는 체커입니다.",
  "0.http.client_side_cookie_access.match.attack.s1.o0": "이를 검출하기 위해 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.client_side_cookie_access.match.attack.s2.o0": "{0}",
  "0.http.client_side_cookie_access.match.result.s0.o0": "HTTP 응답 본문에서 {0} 문자열을 발견했습니다.",
  "0.http.client_side_cookie_access.match.result.s0.o1": "이를 통해 클라이언트 측에서 쿠키를 참조하고 있음을 알 수 있습니다.",
  "0.http.client_side_cookie_access.match.result.s1.o0": "{0}",
  "0.http.client_side_cookie_access.match.solution.s0.o0": "{0} 와 같이 사이트에 대한 보안 위협이 될 수 있는 클라이언트 측 JavaScript 코드를 제거해야 합니다.",
  "0.http.client_side_cookie_access.match.solution.s0.o1": "또한, 민감한 쿠키에는 반드시 {0}, {1}, {2}와 같은 보안 플래그를 설정하도록 합니다.",
  "0.http.code_injection.script.attack.s0.o0": "코드 삽입은 공격자가 컴퓨터 프로그램 코드를 값으로 입력하여 취약한 웹 애플리케이션의 실행을 변경하는 공격입니다.",
  "0.http.code_injection.script.attack.s0.o1": "코드 삽입은 웜 바이러스의 전파나 데이터 손실 및 오염, DoS 등을 일으킵니다.",
  "0.http.code_injection.script.attack.s0.o2": "코드 삽입 중에서 서버 스크립트 코드 삽입은 악성 소프트웨어를 설치하거나 악의적인 코드를 실행할 수 있습니다.",
  "0.http.code_injection.script.attack.s0.o3": "서버 스크립트 코드 삽입을 위해 다음과 같이 {0} 매개변수에 {1} 공격 문자열을 담은 HTTP 요청을 보냈습니다.",
  "0.http.code_injection.script.attack.s1.o0": "{0}",
  "0.http.code_injection.script.attack.s1.o1": "{0}",
  "0.http.code_injection.script.result.s0.o0": "서버 스크립트 코드 삽입은 애플리케이션 레벨에서 발생할 수 있는 공격으로 내용에 따라 SQL문 삽입, 경로 조작 등의 치명적인 공격이 가능하게 만듭니다.",
  "0.http.code_injection.script.result.s0.o1": "서버 스크립트 코드 삽입을 위해 보낸 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.code_injection.script.result.s1.o0": "{0}",
  "0.http.code_injection.script.result.s2.o0": "위의 HTTP 응답에서 {0} 공격 문자열에 의해 발생한 {1}를 확인할 수 있습니다.",
  "0.http.code_injection.script.solution.s0.o0": "서버 스크립트 코드 삽입을 막는 가장 좋은 방법은 사용자가 입력하는 값을 모두 검증하는 것입니다.",
  "0.http.code_injection.script.solution.s0.o1": "코드를 삽입해야 하는 경우에는 특수문자를 인코딩하여 웹 애플리케이션에 영향을 주지 않는 문자로 변경해야 합니다.",
  "0.http.command_injection.feedback.attack.s0.o0": "운영 체제 명령 실행 취약점을 검출하기 위해 {0} 매개변수에 {1} 공격 문자열을 포함한 HTTP 요청을 보냈습니다. HTTP 요청은 다음과 같습니다.",
  "0.http.command_injection.feedback.attack.s0.o1": "{0}",
  "0.http.command_injection.feedback.attack.s0.o2": "{0}",
  "0.http.command_injection.feedback.result.s0.o0": "운영 체제 명령 실행은 취약한 애플리케이션을 통해 사용자의 운영 체제에서 명령어를 실행하는 것을 목적으로 하는 공격입니다. HTTP 요청에 대한 HTTP 응답 메시지는 다음과 같습니다.",
  "0.http.command_injection.feedback.result.s0.o1": "{0}",
  "0.http.command_injection.feedback.result.s0.o2": "위 HTTP 응답 메시지에서 {0} 패턴의 시스템 정보가 노출되었습니다.",
  "0.http.command_injection.feedback.solution.s0.o0": "이 취약점을 해결하기 위해서는 시스템 명령어로 의심되는 문자열을 검사해야 합니다.",
  "0.http.command_injection.timeout.attack.s0.o0": "운영 체제 명령 실행 취약점을 검출하기 위해 {0} 매개변수에 {1} 공격 문자열을 포함한 HTTP 요청을 보냈습니다. HTTP 요청은 다음과 같습니다.",
  "0.http.command_injection.timeout.attack.s0.o1": "{0}",
  "0.http.command_injection.timeout.attack.s0.o2": "{0}",
  "0.http.command_injection.timeout.result.s0.o0": "운영 체제 명령 실행은 취약한 애플리케이션을 통해 사용자의 운영 체제에서 명령어를 실행하는 것을 목적으로 하는 공격입니다.",
  "0.http.command_injection.timeout.result.s0.o1": "HTTP 요청에 대한 HTTP 응답 시간이 지연되었습니다.",
  "0.http.command_injection.timeout.solution.s0.o0": "이 취약점을 해결하기 위해서는 시스템 명령어로 의심되는 문자열을 검사해야 합니다.",
  "0.http.content_security_policy_missing.missing.attack.s0.o0": "누락된 Content-Security-Policy(CSP) 헤더 취약점은 HTTP 응답에 Content-Security-Policy 헤더가 없는 취약점입니다.",
  "0.http.content_security_policy_missing.missing.attack.s1.o0": "이를 검출하기 위해서 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.content_security_policy_missing.missing.attack.s2.o0": "{0}",
  "0.http.content_security_policy_missing.missing.attack.s2.o1": "{0}",
  "0.http.content_security_policy_missing.missing.result.s0.o0": "HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.content_security_policy_missing.missing.result.s1.o0": "{0}",
  "0.http.content_security_policy_missing.missing.result.s2.o0": "위의 HTTP 응답 헤더에 Content-Security-Policy 헤더나 Content-Security-Policy-Report-Only 헤더가 없음을 확인할 수 있습니다.",
  "0.http.content_security_policy_missing.missing.result.s2.o1": "Content-Security-Policy 헤더가 없기 때문에 신뢰할 수 없는 도메인의 리소스가 브라우저에서 실행되거나 렌더링 되는 것을 막을 수 없습니다.",
  "0.http.content_security_policy_missing.missing.solution.s0.o0": "누락된 Content-Security-Policy 헤더 취약점을 해결하기 위해서는 웹 애플리케이션 서버에서 Content-Security-Policy 헤더를 추가해야 합니다.",
  "0.http.content_security_policy_missing.missing.solution.s0.o1": "모든 웹 사이트 내의 콘텐츠를 서브 도메인을 제외한 같은 도메인에서만 제공 받으려면 다음과 같이 사용합니다.",
  "0.http.content_security_policy_missing.missing.solution.s1.o0": "{0}",
  "0.http.content_security_policy_missing.missing.solution.s2.o0": "서브 도메인을 포함시키려면 다음과 같이 사용합니다.",
  "0.http.content_security_policy_missing.missing.solution.s3.o0": "{0}",
  "0.http.content_security_policy_missing.missing.solution.s4.o0": "이외에도 신뢰할 수 있는 도메인의 리소스를 특정 웹 페이지 요소에서만 사용하도록 설정할 수도 있습니다.",
  "0.http.content_security_policy_missing.missing.solution.s5.o0": "또한, 신뢰할 수 없는 도메인의 리소스가 사용되지는 것을 막지 않고 사용되었다는 정보만을 제공받으려면 다음과 같이 사용합니다.",
  "0.http.content_security_policy_missing.missing.solution.s6.o0": "{0}",
  "0.http.content_type_missing.missing.attack.s0.o0": "HTTP 응답에 포함된 Content-Type 헤더는 클라이언트에 반환된 컨텐츠의 유형이 실제로 무엇인지 알려줍니다.",
  "0.http.content_type_missing.missing.attack.s0.o1": "이런 Content-Type 헤더가 없으면 브라우저가 MIME 타입 스니핑을 수행할 수 있습니다.",
  "0.http.content_type_missing.missing.attack.s1.o0": "MIME 타입 스니핑이란 MIME 타입이 없거나 클라이언트 타입이 잘못 설정됐다고 판단될 경우, 브라우저가 리소스를 훑어보고 정확한 MIME 타입을 추측해내는 것입니다.",
  "0.http.content_type_missing.missing.attack.s1.o1": "이러한 MIME 타입 스니핑은 공격자가 비실행 MIME 타입을 실행 MIME 타입으로 전달할 수 있습니다.",
  "0.http.content_type_missing.missing.attack.s1.o2": "예를 들어, 크로스 사이트 스크립팅이 포함된 HTML을 MIME 타입 스니핑을 통해 이미지 파일인 것처럼 업로드할 수 있습니다.",
  "0.http.content_type_missing.missing.attack.s2.o0": "이러한 MIME 타입 스니핑이 발생할 수 있기 때문에 Content-Type이 있어야 합니다.",
  "0.http.content_type_missing.missing.result.s0.o0": "해당 페이지의 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.content_type_missing.missing.result.s1.o0": "{0}",
  "0.http.content_type_missing.missing.result.s2.o0": "위의 HTTP 응답 헤더에서 Content-Type 헤더가 없거나 해당 값이 없는 것을 확인할 수 있습니다.",
  "0.http.content_type_missing.missing.solution.s0.o0": "MIME 타입 스니핑을 막으려면 HTTP 응답에 콘텐츠의 유형과 맞는 값을 가진 Content-Type 헤더를 함께 보내야 합니다.",
  "0.http.content_type_missing.missing.solution.s0.o1": "또는, X-Content-Type-Options 헤더에 nosniff 값을 할당하여 MIME 타입 스니핑이 실행되지 않도록 해야 합니다.",
  "0.http.cookie_attribute_test_http_only.no_httpOnly.attack.s0.o0": "쿠키 속성 검사(HttpOnly)는 HTTP 응답에 Set-Cookie를 확인하여 HttpOnly 속성이 있는지 확인하는 체커입니다.",
  "0.http.cookie_attribute_test_http_only.no_httpOnly.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.cookie_attribute_test_http_only.no_httpOnly.attack.s1.o0": "{0}",
  "0.http.cookie_attribute_test_http_only.no_httpOnly.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "0.http.cookie_attribute_test_http_only.no_httpOnly.result.s1.o0": "{0}",
  "0.http.cookie_attribute_test_http_only.no_httpOnly.solution.s0.o0": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "0.http.cookie_attribute_test_http_only.no_httponly.attack.s0.o0": "쿠키 속성 검사(HttpOnly)는 HTTP 응답에 Set-Cookie를 확인하여 HttpOnly 속성이 있는지 확인하는 체커입니다.",
  "0.http.cookie_attribute_test_http_only.no_httponly.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.cookie_attribute_test_http_only.no_httponly.attack.s1.o0": "{0}",
  "0.http.cookie_attribute_test_http_only.no_httponly.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "0.http.cookie_attribute_test_http_only.no_httponly.result.s1.o0": "{0}",
  "0.http.cookie_attribute_test_http_only.no_httponly.solution.s0.o0": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_sameSite.attack.s0.o0": "쿠키 속성 검사(SameSite)는 HTTP 응답에 Set-Cookie를 확인하여 SameSite 속성이 있는지 확인하는 체커입니다.",
  "0.http.cookie_attribute_test_same_site.invalid_sameSite.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_sameSite.attack.s1.o0": "{0}",
  "0.http.cookie_attribute_test_same_site.invalid_sameSite.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_sameSite.result.s1.o0": "{0}",
  "0.http.cookie_attribute_test_same_site.invalid_sameSite.solution.s0.o0": "사이트 간 요청 위조(CSRF)를 막기 위해 SameSite 속성을 Lax나 Strict로 설정하는 것이 좋습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_sameSite.solution.s0.o1": "Google Chrome도 80 버전으로 업데이트되면서 SameSite 속성의 기본값을 None에서 Lax로 강화했습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_sameSite.solution.s0.o2": "만약 None으로 사용해야 한다면 반드시 Secure 속성과 함께 사용해야 합니다.",
  "0.http.cookie_attribute_test_same_site.invalid_samesite.attack.s0.o0": "쿠키 속성 검사(SameSite)는 HTTP 응답에 Set-Cookie를 확인하여 SameSite 속성이 있는지 확인하는 체커입니다.",
  "0.http.cookie_attribute_test_same_site.invalid_samesite.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_samesite.attack.s1.o0": "{0}",
  "0.http.cookie_attribute_test_same_site.invalid_samesite.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_samesite.result.s1.o0": "{0}",
  "0.http.cookie_attribute_test_same_site.invalid_samesite.solution.s0.o0": "사이트 간 요청 위조(CSRF)를 막기 위해 SameSite 속성을 Lax나 Strict로 설정하는 것이 좋습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_samesite.solution.s0.o1": "구글 크롬도 80 버전으로 업데이트되면서 SameSite 속성의 기본값을 None에서 Lax로 강화했습니다.",
  "0.http.cookie_attribute_test_same_site.invalid_samesite.solution.s0.o2": "만약 None으로 사용해야 한다면 반드시 Secure 속성과 함께 사용해야 합니다.",
  "0.http.cookie_attribute_test_secure.no_secure.attack.s0.o0": "쿠키 속성 검사(Secure)는 HTTP 응답에 Set-Cookie를 확인하여 Secure 속성이 있는지 확인하는 체커입니다.",
  "0.http.cookie_attribute_test_secure.no_secure.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.cookie_attribute_test_secure.no_secure.attack.s1.o0": "{0}",
  "0.http.cookie_attribute_test_secure.no_secure.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "0.http.cookie_attribute_test_secure.no_secure.result.s1.o0": "{0}",
  "0.http.cookie_attribute_test_secure.no_secure.solution.s0.o0": "Secure 속성은 HTTP에서 동작하지 않으므로 HTTPS로 변경해야 합니다.",
  "0.http.cookie_attribute_test_secure.no_secure.solution.s0.o1": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "0.http.cookie_http_only.missing.attack.s0.o0": "HttpOnly는 HTTP 응답의 Set-Cookie 또는 Set-Cookie2 헤더의 플래그 중 하나입니다.",
  "0.http.cookie_http_only.missing.attack.s0.o1": "이러한 HttpOnly 플래그는 클라이언트의 스크립트에서 쿠키에 접근하지 못하도록 막아 대부분은 크로스 사이트 스크립팅 공격을 막아줍니다.",
  "0.http.cookie_http_only.missing.result.s0.o0": "해당 페이지의 HTTP 응답은 다음과 같습니다.",
  "0.http.cookie_http_only.missing.result.s1.o0": "{0}",
  "0.http.cookie_http_only.missing.result.s2.o0": "위의 HTTP 응답에서 Set-Cookie 또는 Set-Cookie2 헤더에 HttpOnly 플래그가 없는 것을 확인할 수 있습니다.",
  "0.http.cookie_http_only.missing.solution.s0.o0": "웹 애플리케이션의 서버에서 Set-Cookie 또는 Set-Cookie2 헤더에 HttpOnly 플래그를 설정해야 합니다.",
  "0.http.cookie_http_only.missing.solution.s0.o1": "JAVA에서 HttpOnly 플래그를 설정하는 방법은 다음과 같습니다.",
  "0.http.cookie_http_only.missing.solution.s1.o0": "{0}",
  "0.http.cookie_http_only.missing.solution.s2.o0": "WEB-INF/web.xml에서 HttpOnly 플래그를 설정하는 방법은 다음과 같습니다.",
  "0.http.cookie_http_only.missing.solution.s3.o0": "{0}",
  "0.http.cookie_http_only.missing.solution.s4.o0": "Tomcat에서 HttpOnly 플래그를 설정하려면 context.xml에 다음과 같이 추가합니다.",
  "0.http.cookie_http_only.missing.solution.s5.o0": "{0}",
  "0.http.cookie_http_only.missing.solution.s6.o0": "PHP에서 HttpOnly 플래그를 설정하는 방법은 다음과 같습니다.",
  "0.http.cookie_http_only.missing.solution.s7.o0": "{0}",
  "0.http.cookie_secure_flag.missing.attack.s0.o0": "Secure는 HTTP 응답의 Set-Cookie 또는 Set-Cookie2 헤더의 플래그 중 하나입니다.",
  "0.http.cookie_secure_flag.missing.attack.s0.o1": "이러한 Secure 플래그는 브라우저가 SSL을 사용하는 HTTPS 프로토콜로 이루어진 연결에 대해서만 쿠키를 보내도록 합니다.",
  "0.http.cookie_secure_flag.missing.result.s0.o0": "해당 페이지의 HTTP 응답은 다음과 같습니다.",
  "0.http.cookie_secure_flag.missing.result.s1.o0": "{0}",
  "0.http.cookie_secure_flag.missing.result.s2.o0": "위의 HTTP 응답에서 Set-Cookie 또는 Set-Cookie2 헤더에 Secure 플래그가 없는 것을 확인할 수 있습니다.",
  "0.http.cookie_secure_flag.missing.solution.s0.o0": "웹 애플리케이션의 서버에서 Set-Cookie 또는 Set-Cookie2 헤더에 Secure 플래그를 설정해야 합니다.",
  "0.http.cookie_secure_flag.missing.solution.s0.o1": "JAVA의 WEB-INF/web.xml에서 Secure 플래그를 설정하는 방법은 다음과 같습니다.",
  "0.http.cookie_secure_flag.missing.solution.s1.o0": "{0}",
  "0.http.cookie_secure_flag.missing.solution.s2.o0": "PHP에서 Secure 플래그를 설정하는 방법은 다음과 같습니다.",
  "0.http.cookie_secure_flag.missing.solution.s3.o0": "{0}",
  "0.http.credit_card_number_disclosure.amex.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.credit_card_number_disclosure.amex.attack.s0.o1": "{0}",
  "0.http.credit_card_number_disclosure.amex.attack.s0.o2": "{0}",
  "0.http.credit_card_number_disclosure.amex.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.credit_card_number_disclosure.amex.result.s0.o1": "{0}",
  "0.http.credit_card_number_disclosure.amex.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.credit_card_number_disclosure.amex.result.s1.o1": "{0}",
  "0.http.credit_card_number_disclosure.amex.result.s1.o2": "해당 문자열은 American Express 신용카드번호에 해당합니다.",
  "0.http.credit_card_number_disclosure.amex.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 American Express 신용카드번호를 발견했습니다.",
  "0.http.credit_card_number_disclosure.amex.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 신용카드번호를 탈취할 수 있습니다.",
  "0.http.credit_card_number_disclosure.amex.solution.s0.o0": "HTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다.",
  "0.http.credit_card_number_disclosure.amex.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 신용카드번호 노출 여부를 점검해야 합니다.",
  "0.http.credit_card_number_disclosure.discover.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.credit_card_number_disclosure.discover.attack.s0.o1": "{0}",
  "0.http.credit_card_number_disclosure.discover.attack.s0.o2": "{0}",
  "0.http.credit_card_number_disclosure.discover.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.credit_card_number_disclosure.discover.result.s0.o1": "{0}",
  "0.http.credit_card_number_disclosure.discover.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.credit_card_number_disclosure.discover.result.s1.o1": "{0}",
  "0.http.credit_card_number_disclosure.discover.result.s1.o2": "해당 문자열은 Discover 신용카드번호에 해당합니다.",
  "0.http.credit_card_number_disclosure.discover.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 Discover 신용카드번호를 발견했습니다.",
  "0.http.credit_card_number_disclosure.discover.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 신용카드번호를 탈취할 수 있습니다.",
  "0.http.credit_card_number_disclosure.discover.solution.s0.o0": "HTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다.",
  "0.http.credit_card_number_disclosure.discover.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 신용카드번호 노출 여부를 점검해야 합니다.",
  "0.http.credit_card_number_disclosure.master.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.credit_card_number_disclosure.master.attack.s0.o1": "{0}",
  "0.http.credit_card_number_disclosure.master.attack.s0.o2": "{0}",
  "0.http.credit_card_number_disclosure.master.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.credit_card_number_disclosure.master.result.s0.o1": "{0}",
  "0.http.credit_card_number_disclosure.master.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.credit_card_number_disclosure.master.result.s1.o1": "{0}",
  "0.http.credit_card_number_disclosure.master.result.s1.o2": "해당 문자열은 Master 신용카드번호에 해당합니다.",
  "0.http.credit_card_number_disclosure.master.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 Master 신용카드번호를 발견했습니다.",
  "0.http.credit_card_number_disclosure.master.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 신용카드번호를 탈취할 수 있습니다.",
  "0.http.credit_card_number_disclosure.master.solution.s0.o0": "HTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다.",
  "0.http.credit_card_number_disclosure.master.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 신용카드번호 노출 여부를 점검해야 합니다.",
  "0.http.credit_card_number_disclosure.visa.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.credit_card_number_disclosure.visa.attack.s0.o1": "{0}",
  "0.http.credit_card_number_disclosure.visa.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.credit_card_number_disclosure.visa.result.s0.o1": "{0}",
  "0.http.credit_card_number_disclosure.visa.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.credit_card_number_disclosure.visa.result.s1.o1": "{0}",
  "0.http.credit_card_number_disclosure.visa.result.s1.o2": "해당 문자열은 VISA 신용카드번호에 해당합니다.",
  "0.http.credit_card_number_disclosure.visa.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 VISA 신용카드번호를 발견했습니다.",
  "0.http.credit_card_number_disclosure.visa.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 신용카드번호를 탈취할 수 있습니다.",
  "0.http.credit_card_number_disclosure.visa.solution.s0.o0": "HTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다.",
  "0.http.credit_card_number_disclosure.visa.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 신용카드번호 노출 여부를 점검해야 합니다.",
  "0.http.crlf_injection.cookie.attack.s0.o0": "CRLF란 Carriage Return(CR, ASCII 13, \\r)과 Line Feed(LF, ASCII 10, \\n)을 나타냅니다.",
  "0.http.crlf_injection.cookie.attack.s0.o1": "윈도우에서는 CR과 LF가, 리눅스 및 유닉스에서는 LF가 한 라인의 끝을 의미합니다.",
  "0.http.crlf_injection.cookie.attack.s0.o2": "CRLF 삽입이란 공격자가 이러한 CRLF를 입력하여 HTTP 응답의 헤더를 나누거나, 웹 애플리케이션 내의 코드 등을 의도치 않게 종료시켜 정보 노출, 크로스 사이트 스크립팅 등의 취약점을 발생시키는 것을 의미합니다.",
  "0.http.crlf_injection.cookie.attack.s0.o3": "이러한 CRLF 취약점을 검출하기 위해 {0} 공격 문자열이 포함된 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.crlf_injection.cookie.attack.s1.o0": "{0}",
  "0.http.crlf_injection.cookie.attack.s1.o1": "{0}",
  "0.http.crlf_injection.cookie.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.crlf_injection.cookie.result.s1.o0": "{0}",
  "0.http.crlf_injection.cookie.result.s2.o0": "HTTP 응답의 바디에 공격 문자열 {0}이 포함되었음을 확인할 수 있습니다.",
  "0.http.crlf_injection.cookie.solution.s0.o0": "CRLF 삽입을 막기 위해서는 사용자가 입력값으로 CRLF를 입력하지 못하도록 막거나, HTTP 헤더에 삽입되는 값들을 이스케이프 처리해야 합니다.",
  "0.http.cross_domain_script_inclusion.other_domain.attack.s0.o0": "웹 애플리케이션에 외부 도메인의 스크립트를 포함하면, 해당 스크립트는 웹 애플리케이션의 일부처럼 작동합니다.",
  "0.http.cross_domain_script_inclusion.other_domain.attack.s0.o1": "만약 외부 도메인의 스크립트에 악의적인 스크립트가 포함되어 있다면, 해당 스크립트를 통해 웹 애플리케이션의 데이터가 유출되거나 접속 유저의 권한으로 비정상적인 행동을 수행할 수 있습니다.",
  "0.http.cross_domain_script_inclusion.other_domain.result.s0.o0": "해당 페이지의 HTTP 응답은 다음과 같습니다.",
  "0.http.cross_domain_script_inclusion.other_domain.result.s1.o0": "{0}",
  "0.http.cross_domain_script_inclusion.other_domain.result.s2.o0": "위의 HTTP 응답의 {0}에서 src 속성값 {1}의 도메인이 호스트 {2}의 도메인과 다른 외부 도메인 입니다.",
  "0.http.cross_domain_script_inclusion.other_domain.solution.s0.o0": "외부 도메인의 스크립트를 통한 악의적인 스크립트 실행을 막기 위해서는 외부 도메인의 스크립트를 사용하지 않는 방법이 있습니다.",
  "0.http.cross_domain_script_inclusion.other_domain.solution.s0.o1": "또는, 라이선스 문제가 없는 외부 도메인의 스크립트를 검증 후 웹 애플리케이션에 직접 추가하는 방법이 있습니다.",
  "0.http.cross_domain_script_inclusion.other_domain.solution.s0.o2": "이외에도 블랙리스트를 작성하여 허용되지 않는 외부 도메인의 스크립트를 제외하거나 화이트리스트를 작성하여 허용된 외부 도메인의 스크립트만을 추가하는 방법이 있습니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.attack.s0.o0": "웹 소켓 연결 요청 시, Origin 헤더를 스패로우 도메인 서버로 변경한 뒤 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.attack.s1.o0": "{0}",
  "0.http.cross_site_web_socket_hijacking.handshake.result.s0.o0": "조작된 HTTP 요청에 대한 응답 결과는 다음과 같습니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.result.s1.o0": "{0}",
  "0.http.cross_site_web_socket_hijacking.handshake.result.s2.o0": "위 응답 결과, 웹 소켓 연결이 정상적으로 수립되었음을 나타내는 HTTP 101 응답이 반환되었습니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.result.s2.o1": "따라서 웹 소켓 연결 시 Origin 헤더에 대한 검증 미흡으로, 크로스 사이트 웹 소켓 하이재킹 취약점이 발생할 수 있습니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s0.o0": "크로스 사이트 웹 소켓 하이재킹 취약점을 대응하기 위해서는 Origin 헤더의 검증과 SameSite 쿠키를 적용하는 것이 가장 좋은 방법입니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s1.o0": "1. Origin 검증",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s1.o1": "{0} 헤더를 검증하기 위해 Access-Control-Allow-Origin 헤더를 설정합니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s1.o2": "이 헤더는 CORS(Cross-Origin Resource Sharing) 정책에서 사용하는 HTTP 응답 헤더 중 하나로, 다른 도메인에서 발생하는 요청에 대한 접근 허용 여부를 결정합니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s1.o3": "따라서, Access-Control-Allow-Origin 헤더는 신뢰할 수 있는 특정 도메인으로 제한해야 하며, {0} 또는 {1} 설정을 피해야 합니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s1.o4": "또 다른 방법으로, 서버에서 신뢰할 수 있는 출처 목록(allowlist)을 정의하고, WebSocket 핸드셰이크 요청 시 클라이언트에서 보내는 {0} 헤더를 검증하는 방식도 존재합니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s1.o5": "다음은 {0} 헤더를 검증하는 예시 코드입니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s2.o0": "{0}",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s3.o0": "2. SameSite 쿠키",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s3.o1": "{0} 쿠키 설정은 CSRF 공격을 방지하는 데 주로 사용되지만, 웹 소켓 연결에서 쿠키를 이용한 사용자 인증이 이루어질 경우 추가적인 보안 강화를 할 수 있습니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s3.o2": "{0} 헤더에서 {1} 또는 {2}를 설정함으로써, 해당 도메인에서 직접적으로 생성된 요청에만 쿠키를 포함시킬 수 있습니다.",
  "0.http.cross_site_web_socket_hijacking.handshake.solution.s3.o3": "이 설정은 다른 도메인에서의 요청 시 쿠키를 전송하지 않기 때문에, 크로스-오리진 요청을 통한 사용자 세션 탈취를 어렵게 합니다.",
  "0.http.custom.active_custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.custom.active_custom.attack.s0.o1": "{0}",
  "0.http.custom.active_custom.attack.s0.o2": "설정한 값은 사용자 정의 공격 문자열에 해당합니다.",
  "0.http.custom.active_custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.custom.active_custom.attack.s1.o1": "{0}",
  "0.http.custom.active_custom.attack.s1.o2": "{0}",
  "0.http.custom.active_custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.custom.active_custom.result.s0.o1": "{0}",
  "0.http.custom.active_custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.custom.active_custom.result.s1.o1": "{0}",
  "0.http.custom.active_custom.result.s1.o2": "HTTP 응답 본문에서 해당 문자열의 위치는 {0}입니다.",
  "0.http.custom.active_custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "0.http.custom.conditional.attack_cookie": "쿠키 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_dwr": "DWR 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_gwt": "GWT RPC 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_header": "HTTP 요청 헤더 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_json": "JSON-RPC 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_multipart": "Multipart/form-data 타입 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_url_path": "URL 경로의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.conditional.attack_xml": "XML-RPC 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.custom.passive_custom.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.custom.passive_custom.attack.s0.o1": "{0}",
  "0.http.custom.passive_custom.attack.s0.o2": "{0}",
  "0.http.custom.passive_custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.custom.passive_custom.result.s0.o1": "{0}",
  "0.http.custom.passive_custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.custom.passive_custom.result.s1.o1": "{0}",
  "0.http.custom.passive_custom.result.s1.o2": "HTTP 응답 본문에서 해당 문자열의 위치는 {0}입니다.",
  "0.http.custom.passive_custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "0.http.dacg.conditional.117": "해당 버전에는 '부적절한 로그 출력 검증'이 존재합니다.",
  "0.http.dacg.conditional.117_description": "부적절한 로그 출력 검증'은 사용자가 입력값을 충분한 검증 없이 로그 출력에 사용하는 취약점입니다.",
  "0.http.dacg.conditional.117_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션이 출력하는 로그 메시지를 조작할 수 있습니다.",
  "0.http.dacg.conditional.119": "해당 버전에는 '메모리 오염'이 존재합니다.",
  "0.http.dacg.conditional.119_description": "메모리 오염'은 의도하지 않은 메모리 버퍼에 대하여 읽기 혹은 쓰기 연산을 수행할 수 있는 취약점입니다.",
  "0.http.dacg.conditional.119_effect": "해당 취약점이 존재하는 경우, 공격자는 임의의 코드를 실행하거나 애플리케이션의 오동작을 발생시킬 수 있으며, 민감한 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.120": "해당 버전에는 '버퍼 오버플로우'가 존재합니다.",
  "0.http.dacg.conditional.120_description": "버퍼 오버플로우'는 애플리케이션 메모리 버퍼를 덮어씌울 수 있는 취약점입니다.",
  "0.http.dacg.conditional.120_effect": "해당 취약점이 존재하는 경우, 공격자는 쓰기가 제한된 메모리 영역에 특정 값을 덮어씌울 수 있으며, 애플리케이션의 오동작 또는 오류를 발생시킬 수 있습니다.",
  "0.http.dacg.conditional.122": "해당 버전에는 '힙 기반 버퍼 오버플로우'가 존재합니다.",
  "0.http.dacg.conditional.122_description": "힙 기반 버퍼 오버플로우'는 힙에 해당하는 애플리케이션 메모리 버퍼를 덮어씌울 수 있는 취약점입니다.",
  "0.http.dacg.conditional.122_effect": "해당 취약점이 존재하는 경우, 공격자는 쓰기가 제한된 메모리 영역에 특정 값을 덮어씌울 수 있으며, 애플리케이션의 오동작 또는 오류를 발생시킬 수 있습니다.",
  "0.http.dacg.conditional.16": "해당 버전에는 '안전하지 않은 설정'이 존재합니다.",
  "0.http.dacg.conditional.16_description": "안전하지 않은 설정'은 보안 관련 설정이 올바르지 않은 취약점입니다.",
  "0.http.dacg.conditional.16_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션 내의 중요 정보로 접근이 가능하며, 해당 정보를 탈취하거나 조작할 수 있습니다.",
  "0.http.dacg.conditional.183": "해당 버전에는 '취약한 화이트리스트'가 존재합니다.",
  "0.http.dacg.conditional.183_description": "취약한 화이트리스트'는 애플리케이션에서 사용하는 화이트리스트가 하나 이상의 위험한 값을 허용하는 취약점입니다.",
  "0.http.dacg.conditional.183_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션의 화이트리스트가 허용하는 위험한 값에 의하여 발생 가능한 추가적인 보안 취약점을 탐색할 수 있습니다.",
  "0.http.dacg.conditional.185": "해당 버전에는 '올바르지 않은 정규식 표현'이 존재합니다.",
  "0.http.dacg.conditional.185_description": "올바르지 않은 정규식 표현'은 주어진 값을 부적절하게 비교하거나 검출하는 정규식을 사용하는 취약점입니다.",
  "0.http.dacg.conditional.185_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 정규식 기반의 필터링 또는 검증 등의 보호 메커니즘을 우회하거나 해당 정규식을 사용하는 애플리케이션의 오류를 발생시킬 수 있습니다.",
  "0.http.dacg.conditional.20": "해당 버전에는 '부적절한 입력값 검증'이 존재합니다.",
  "0.http.dacg.conditional.200": "해당 버전에는 '정보 노출'이 존재합니다.",
  "0.http.dacg.conditional.200_description": "정보 노출'은 특정 정보를 열람하는데 필요한 권한이 없는 사용자가 해당 정보를 열람할 수 있는 취약점입니다.",
  "0.http.dacg.conditional.200_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션 내부 또는 애플리케이션이 동작하는 운영 체제, 서버 등의 환경으로부터 중요 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.208": "해당 버전에는 '시차를 통한 정보 노출'이 존재합니다.",
  "0.http.dacg.conditional.208_description": "시차를 통한 정보 노출'은 특정 연산을 수행하는데 소요되는 시간 차이로 인하여 정보를 노출하는 취약점입니다.",
  "0.http.dacg.conditional.208_effect": "해당 취약점이 존재하는 경우, 공격자는 특정 연산의 성공 여부 등의 애플리케이션 상태 정보를 확인할 수 있습니다.",
  "0.http.dacg.conditional.20_description": "부적절한 입력값 검증'은 사용자 입력에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.20_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션이 예상하지 못한 값을 입력할 수 있으며, 흐름 제어 조작, 임의의 리소스에 대한 강제 접근, 임의의 코드 실행 등이 가능합니다.",
  "0.http.dacg.conditional.22": "해당 버전에는 '경로 탐색'이 존재합니다.",
  "0.http.dacg.conditional.22_description": "경로 탐색'은 파일 시스템 경로를 구성할 때 사용자 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.22_effect": "해당 취약점이 존재하는 경우, 공격자는 접근이 제한된 경로에 존재하는 파일로의 접근이 가능하며, 해당 파일 내부의 중요한 정보를 탈취하거나 조작할 수 있습니다.",
  "0.http.dacg.conditional.269": "해당 버전에는 '부적절한 권한 관리'가 존재합니다.",
  "0.http.dacg.conditional.269_description": "부적절한 권한 관리'는 사용자에게 본래 허용되지 않은 권한을 부여할 수 있는 취약점입니다.",
  "0.http.dacg.conditional.269_effect": "해당 취약점이 존재하는 경우, 공격자는 비정상적인 권한 상승이 가능하며, 본래 접근이 불가능했던 정보에 대한 열람 및 조작 등이 가능합니다.",
  "0.http.dacg.conditional.284": "해당 버전에는 '부적절한 접근 제어'가 존재합니다.",
  "0.http.dacg.conditional.284_description": "부적절한 접근 제어'는 특정 리소스로의 접근 제어가 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.284_effect": "해당 취약점이 존재하는 경우, 공격자는 접근 권한이 없는 리소스에 접근할 수 있으며, 권한 획득, 중요 정보 탈취, 명령 실행, 탐지 회피 등을 수행할 수 있습니다.",
  "0.http.dacg.conditional.285": "해당 버전에는 '부적절한 인가'가 존재합니다.",
  "0.http.dacg.conditional.285_description": "부적절한 인가'는 임의의 사용자에 대한 권한 검사가 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.285_effect": "해당 취약점이 존재하는 경우, 공격자는 필요한 권한 없이 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.http.dacg.conditional.287": "해당 버전에는 '부적절한 인증'이 존재합니다.",
  "0.http.dacg.conditional.287_description": "부적절한 인증'은 임의의 사용자에 대한 신원 확인이 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.287_effect": "해당 취약점이 존재하는 경우, 공격자는 다른 사용자의 신원을 위조할 수 있으며, 해당 사용자의 권한을 이용하여 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "0.http.dacg.conditional.295": "해당 버전에는 '부적절한 인증서 검증'이 존재합니다.",
  "0.http.dacg.conditional.295_description": "부적절한 인증서 검증'은 인증서에 대한 검증 과정이 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.295_effect": "해당 취약점이 존재하는 경우, 공격자는 악성 호스트를 신뢰할 수 있는 호스트인 것처럼 위장할 수 있으며, 특정 사용자로 하여금 중요 정보를 전송하도록 유도할 수 있습니다.",
  "0.http.dacg.conditional.297": "해당 버전에는 '부적절한 인증서와 호스트간 불일치 검증'이 존재합니다.",
  "0.http.dacg.conditional.297_description": "부적절한 인증서와 호스트간 불일치 검증'은 인증서를 제공하는 호스트와 통신하는 경우, 해당 인증서가 해당 호스트와 연관되어이있는지 검증하는 과정이 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.297_effect": "해당 취약점이 존재하는 경우, 공격자는 악성 호스트를 신뢰할 수 있는 호스트인 것처럼 위장할 수 있으며, 특정 사용자로 하여금 중요 정보를 전송하도록 유도할 수 있습니다.",
  "0.http.dacg.conditional.300": "해당 버전에는 '엔드포인트가 아닌 위치에서 접근 가능한 채널'이 존재합니다.",
  "0.http.dacg.conditional.300_description": "엔드포인트가 아닌 위치에서 접근 가능한 채널'은 통신 채널의 양쪽 단말의 신원 검증 과정이 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.300_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 통신 채널의 단말이 아닌 중간자 위치에서 해당 통신에 개입하거나 영향을 줄 수 있습니다.",
  "0.http.dacg.conditional.319": "해당 버전에는 '민감한 정보 평문 전송'이 존재합니다.",
  "0.http.dacg.conditional.319_description": "민감한 정보 평문 전송'은 민감하거나 보안적으로 중요한 정보를 암호화 없이 전송하는 취약점입니다.",
  "0.http.dacg.conditional.319_effect": "해당 취약점이 존재하는 경우, 공격자는 민감하거나 보안적으로 중요한 정보를 통신 과정에서 도청할 수 있습니다.",
  "0.http.dacg.conditional.330": "해당 버전에는 '충분하지 않은 난수 사용'이 존재합니다.",
  "0.http.dacg.conditional.330_description": "충분하지 않은 난수 사용'은 다음 값을 예측 가능한 수준의 난수 값을 사용하는 취약점입니다.",
  "0.http.dacg.conditional.330_effect": "해당 취약점이 존재하는 경우, 공격자는 앞으로 애플리케이션이 생성할 난수 값을 예측할 수 있으며, 다른 사용자를 사칭하거나 민감한 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.347": "해당 버전에는 '부적절한 전자 서명 검증'이 존재합니다.",
  "0.http.dacg.conditional.347_description": "부적절한 전자 서명 검증'은 주어진 데이터에 대한 전자 서명 검증이 불충분한 취약점입니다.",
  "0.http.dacg.conditional.347_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션으로 하여금 신뢰할 수 없는 데이터를 사용하도록 강제할 수 있으며, 이로 인한 추가 공격이 가능합니다.",
  "0.http.dacg.conditional.352": "해당 버전에는 '크로스 사이트 요청 위조'가 존재합니다.",
  "0.http.dacg.conditional.352_description": "크로스 사이트 요청 위조'는 임의의 요청을 전송한 사용자에 대한 신원 검증이 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.352_effect": "해당 취약점이 존재하는 경우, 공격자는 임의의 사용자로 하여금 중요 정보의 수정, 삭제, 등록 등 공격자가 의도한 동작을 수행하도록 강제할 수 있습니다.",
  "0.http.dacg.conditional.358": "해당 버전에는 '표준 기준에 의거하지 않은 보안 검사'가 존재합니다.",
  "0.http.dacg.conditional.358_description": "표준 기준에 의거하지 않은 보안 검사'는 하나 이상의 보안 검사를 구현할 때 표준 알고리즘, 규약, 기술 등에 따라 올바르게 구현하지 않은 취약점입니다.",
  "0.http.dacg.conditional.358_effect": "해당 취약점이 존재하는 경우, 공격자는 표준에 의거하지 않은 보안 검사를 우회하여 신원 위조, 메시지 변조, 중요 정보 탈취 및 조작 등의 공격을 수행할 수 있습니다.",
  "0.http.dacg.conditional.367": "해당 버전에는 '검사 시점과 사용 시점 경쟁 조건'이 존재합니다.",
  "0.http.dacg.conditional.367_description": "검사 시점과 사용 시점 경쟁 조건'은 애플리케이션이 특정 리소스를 사용하기 이전에 수행하는 검사 시점과 해당 리소스를 실제로 사용하는 시점 사이에 해당 리소스의 상태를 외부에서 변경시킬 수 있는 취약점입니다.",
  "0.http.dacg.conditional.367_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션의 의도하지 않은 동작을 발생시킬 수 있습니다.",
  "0.http.dacg.conditional.377": "해당 버전에는 '안전하지 않은 임시 파일'이 존재합니다.",
  "0.http.dacg.conditional.377_description": "안전하지 않은 임시 파일'은 애플리케이션에서 사용하는 임시 파일 처리가 올바르지 않은 취약점입니다.",
  "0.http.dacg.conditional.377_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 임시 파일에 접근하여 중요 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.400": "해당 버전에는 '부적절한 리소스 소모 제어'가 존재합니다.",
  "0.http.dacg.conditional.400_description": "부적절한 리소스 소모 제어'는 제한된 양의 리소스의 할당 및 유지 관리가 올바르지 않은 취약점입니다.",
  "0.http.dacg.conditional.400_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션이 소모하는 리소스의 양을 임의로 조정할 수 있으며, 최종적으로 가용 리소스를 모두 소진할 수 있습니다.",
  "0.http.dacg.conditional.434": "해당 버전에는 '제한없는 파일 업로드'가 존재합니다.",
  "0.http.dacg.conditional.434_description": "제한없는 파일 업로드'은 위험 유형에 해당하는 파일을 애플리케이션으로 업로드할 수 있는 취약점입니다.",
  "0.http.dacg.conditional.434_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션 동작 환경에서 악성코드를 실행시키거나, 애플리케이션이 처리할 수 없는 파일을 이용하여 애플리케이션의 오동작을 발생시킬 수 있습니다.",
  "0.http.dacg.conditional.502": "해당 버전에는 '신뢰할 수 없는 데이터 비직렬화'가 존재합니다.",
  "0.http.dacg.conditional.502_description": "신뢰할 수 없는 데이터 비직렬화'는 신뢰할 수 없는 데이터에 대한 비직렬화 이후, 해당 비직렬화 결과에 대한 유효성 검사가 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.502_effect": "해당 취약점이 존재하는 경우, 공격자는 직렬화된 데이터를 조작한 뒤, 애플리케이션 내부에서 해당 데이터를 비직렬화하여 사용하도록 할 수 있습니다.",
  "0.http.dacg.conditional.506": "해당 버전에는 '악성 코드 내장'이 존재합니다.",
  "0.http.dacg.conditional.506_description": "악성 코드 내장'은 애플리케이션 내부에 악성 코드가 존재하는 취약점입니다.",
  "0.http.dacg.conditional.506_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 악성코드를 통한 중요 정보 탈취 및 조작, 리소스 소모, 임의의 코드 실행 등을 수행할 수 있습니다.",
  "0.http.dacg.conditional.522": "해당 버전에는 '자격 증명에 대한 불충분한 보호'가 존재합니다.",
  "0.http.dacg.conditional.522_description": "자격 증명에 대한 불충분한 보호'는 자격 증명을 전달하거나 저장하는 과정이 충분히 안전하지 않은 취약점입니다.",
  "0.http.dacg.conditional.522_effect": "해당 취약점이 존재하는 경우, 공격자는 특정 자격 증명을 탈취 및 도용할 수 있습니다.",
  "0.http.dacg.conditional.532": "해당 버전에는 '민감한 정보가 포함된 로그 파일'이 존재합니다.",
  "0.http.dacg.conditional.532_description": "민감한 정보가 포함된 로그 파일'은 애플리케이션이 생성하는 로그 파일 내부에 민감한 정보가 존재하는 취약점입니다.",
  "0.http.dacg.conditional.532_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 로그 파일 내부에 존재하는 중요 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.59": "해당 버전에는 '링크 추적'이 존재합니다.",
  "0.http.dacg.conditional.59_description": "링크 추적'은 접근이 제한된 특정 파일에 대하여 해당 파일로의 링크를 통한 접근이 가능한 취약점입니다.",
  "0.http.dacg.conditional.59_effect": "해당 취약점이 존재하는 경우, 공격자는 접근이 제한된 파일로의 접근이 가능하며, 해당 파일 내부의 중요한 정보를 탈취하거나 조작할 수 있습니다.",
  "0.http.dacg.conditional.601": "해당 버전에는 '검증하지 않은 리다이렉션'이 존재합니다.",
  "0.http.dacg.conditional.601_description": "검증하지 않은 리다이렉션'은 외부 사이트에 대한 링크를 구성할 때 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.601_effect": "해당 취약점이 존재하는 경우, 공격자는 악성 사이트로 이동할 수 있는 URL 값을 애플리케이션으로 전송하고, 임의의 사용자가 해당 악성 사이트로 이동하도록 유도할 수 있습니다.",
  "0.http.dacg.conditional.61": "해당 버전에는 '심볼릭 링크 추적'이 존재합니다.",
  "0.http.dacg.conditional.611": "해당 버전에는 'XXE 삽입'이 존재합니다.",
  "0.http.dacg.conditional.611_description": "XXE 삽입'은 XML 문서를 처리할 때 XML 외부 요소를 포함하는 과정에서 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.611_effect": "해당 취약점이 존재하는 경우, 공격자는 XML 문서 출력 결과에 애플리케이션 동작하는 서버 내부의 민감한 파일을 포함시키거나 애플리케이션이 가용 리소스를 모두 소진하도록 강제할 수 있습니다.",
  "0.http.dacg.conditional.61_description": "심볼릭 링크 추적'은 접근이 제한된 특정 파일에 대하여 해당 파일로의 심볼릭 링크를 통한 접근이 가능한 취약점입니다.",
  "0.http.dacg.conditional.61_effect": "해당 취약점이 존재하는 경우, 공격자는 접근이 제한된 파일로의 접근이 가능하며, 해당 파일 내부의 중요한 정보를 탈취하거나 조작할 수 있습니다.",
  "0.http.dacg.conditional.640": "해당 버전에는 '취약한 비밀번호 복구 메커니즘'이 존재합니다.",
  "0.http.dacg.conditional.640_description": "취약한 비밀번호 복구 메커니즘'은 이전의 비밀번호 없이 비밀번호 복구가 가능한 메커니즘이 지나치게 단순하거나 우회하기 쉬운 취약점입니다.",
  "0.http.dacg.conditional.640_effect": "해당 취약점이 존재하는 경우, 공격자는 다른 사용자의 비밀번호를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.643_description": "XPath 삽입'은 XPath 표현식을 생성할 때 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.643_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 XPath 표현식의 구조를 조작할 수 있으며, 애플리케이션의 보안 체계를 무력화 시키거나 중요 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.693": "해당 버전에는 '올바르지 않은 보호 메커니즘 활용'이 존재합니다.",
  "0.http.dacg.conditional.693_description": "올바르지 않은 보호 메커니즘 활용'은 본래 안전한 보호 메커니즘을 사용하지 않거나 올바르게 사용하지 않는 취약점입니다.",
  "0.http.dacg.conditional.693_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 보호 메커니즘으로 인하여 방어 가능했던 공격을 성공시킬 수 있습니다.",
  "0.http.dacg.conditional.697": "해당 버전에는 '올바르지 않은 비교'가 존재합니다.",
  "0.http.dacg.conditional.697_description": "올바르지 않은 비교'는 보안 상 중요한 상황에서 수행하는 비교 결과가 올바르지 않을 수 있는 취약점입니다.",
  "0.http.dacg.conditional.697_effect": "해당 취약점이 존재하는 경우, 공격자는 올바르지 않은 비교 결과를 사용하여 애플리케이션의 보안 체계를 무력화 또는 중요 정보 수행이 가능합니다.",
  "0.http.dacg.conditional.78": "해당 버전에는 '운영 체제 명령어 삽입'이 존재합니다.",
  "0.http.dacg.conditional.78_description": "운영 체제 명령어 삽입'은 운영 체제 명령어를 구성할 때 사용자 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.78_effect": "해당 취약점이 존재하는 경우, 공격자는 서버로 전송한 명령어를 실행할 수 있으며, 비정상적으로 자신의 권한을 상승시키거나 제한된 리소스로 접근할 수 있습니다.",
  "0.http.dacg.conditional.79": "해당 버전에는 '크로스 사이트 스크립팅'이 존재합니다.",
  "0.http.dacg.conditional.790": "해당 버전에는 '특수 요소에 대한 부적절한 필터링'이 존재합니다.",
  "0.http.dacg.conditional.790_description": "특수 요소에 대한 부적절한 필터링'은 사용자의 입력에 존재하는 특수 요소에 대하여 충분한 검증 과정을 수행하지 않고 사용하는 취약점입니다.",
  "0.http.dacg.conditional.790_effect": "해당 취약점이 존재하는 경우, 공격자는 애플리케이션이 처리하지 못한 특수 요소로부터 애플리케이션의 오동작을 일으킬 수 있습니다.",
  "0.http.dacg.conditional.79_description": "크로스 사이트 스크립팅'은 웹 페이지를 구성할 때 사용자 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.79_effect": "해당 취약점이 존재하는 경우, 공격자는 삽입한 스크립트를 웹 페이지 상에서 실행할 수 있으며, 임의의 사용자의 세션과 같은 중요 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.89": "해당 버전에는 'SQL 삽입'이 존재합니다.",
  "0.http.dacg.conditional.89_description": "SQL 삽입'은 SQL 명령문을 구성할 때 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.89_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 SQL 명령문을 조작할 수 있으며, 애플리케이션의 보안 체계를 무력화 시키거나 중요 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.90": "해당 버전에는 'LDAP 삽입'이 존재합니다.",
  "0.http.dacg.conditional.90_description": "LDAP 삽입'은 LDAP 쿼리문 구성할 때 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.90_effect": "해당 취약점이 존재하는 경우, 공격자는 해당 LDAP 쿼리문을 조작할 수 있으며, 애플리케이션의 보안 체계를 무력화 시키거나 중요 정보를 탈취할 수 있습니다.",
  "0.http.dacg.conditional.91": "해당 버전에는 'XPath 삽입'이 존재합니다.",
  "0.http.dacg.conditional.916": "해당 버전에는 '충분하지 않은 계산을 통한 비밀번호 해시값 생성'이 존재합니다.",
  "0.http.dacg.conditional.916_description": "충분하지 않은 계산을 통한 비밀번호 해시값 생성'은 임의의 비밀번호를 생성하기 위한 해시값 생성 시, 해당 비밀번호 또는 해시값을 추측할 수 없을 정도로 충분한 계산 과정을 수반하지 않는 취약점입니다.",
  "0.http.dacg.conditional.916_effect": "해당 취약점이 존재하는 경우, 공격자는 특정 비밀번호 또는 해시값을 추측하기 위한 계산을 수행할 수 있으며, 결과적으로 해당 비밀번호 또는 해시값을 얻을 수 있습니다.",
  "0.http.dacg.conditional.93": "해당 버전에는 'CRLF 삽입'이 존재합니다.",
  "0.http.dacg.conditional.93_description": "CRLF 삽입'은 CRLF(Carriage Return Line Feeds)를 특수 문자로서 사용하는 경우, 사용자 입력의 CRLF 포함 여부에 대한 검증이 충분하지 않은 취약점입니다.",
  "0.http.dacg.conditional.93_effect": "해당 취약점이 존재하는 경우, 공격자는 CRLF가 포함된 입력값을 서버로 전송할 수 있으며, 전송한 CRLF를 애플리케이션의 로그 메시지 또는 HTTP 응답 메시지에 포함시킴으로써 애플리케이션의 오동작을 발생시킬 수 있습니다.",
  "0.http.dacg.conditional.94": "해당 버전에는 '코드 삽입'이 존재합니다.",
  "0.http.dacg.conditional.942": "해당 버전에는 '취약한 크로스 도메인 화이트리스트'가 존재합니다.",
  "0.http.dacg.conditional.942_description": "취약한 크로스 도메인 화이트리스트'는 크로스 도메인 정책 파일 내부에 와일드 카드와 같이 신뢰할 수 없는 도메인을 포함하는 취약점입니다.",
  "0.http.dacg.conditional.942_effect": "해당 취약점이 존재하는 경우, 공격자는 크로스 도메인 정책과 관계 없이 외부에서 공격을 시도할 수 있습니다.",
  "0.http.dacg.conditional.94_description": "코드 삽입'은 애플리케이션의 코드 세그먼트 내에 임의의 코드를 삽입할 수 있는 취약점입니다",
  "0.http.dacg.conditional.94_effect": "해당 취약점이 존재하는 경우, 공격자는 서버의 코드 세그먼트 내에 포함시킨 악성 코드를 실행시킴으로써 서버의 오동작을 발생시킬 수 있습니다.",
  "0.http.dacg.conditional.95": "해당 버전에는 'Eval 삽입'이 존재합니다.",
  "0.http.dacg.conditional.95_description": "Eval 삽입'은 Eval() 함수를 호출할 때 인수로서 사용자 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.95_effect": "해당 취약점이 존재하는 경우, 공격자는 임의의 코드를 애플리케이션 내에서 조작하거나 실행할 수 있습니다.",
  "0.http.dacg.conditional.98": "해당 버전에는 'PHP 원격 파일 삽입'이 존재합니다.",
  "0.http.dacg.conditional.98_description": "PHP 원격 파일 삽입'은 PHP 애플리케이션에서 현재 페이지에 포함할 외부 문서 경로를 구성할 때 사용자의 입력을 충분한 검증 없이 사용하는 취약점입니다.",
  "0.http.dacg.conditional.98_effect": "해당 취약점이 존재하는 경우, 공격자는 임의의 코드를 애플리케이션 내에서 조작하거나 실행할 수 있습니다.",
  "0.http.dacg.conditional.iis": "현재 사용 중인 인터넷 정보 서비스(IIS)를 대체할 수 있는 웹 서버 소프트웨어를 사용해야 합니다.",
  "0.http.dacg.conditional.mvn_no_recommendation": "현재 사용 중인 {0} Java 라이브러리를 대체할 수 있는 다른 Java 라이브러리를 사용해야 합니다.",
  "0.http.dacg.conditional.mvn_recommendation": "현재 사용 중인 {0} Java 라이브러리의 버전을 {1}으로 교체해야 합니다.",
  "0.http.dacg.conditional.npm_no_recommendation": "현재 사용 중인 {0} JavaScript 라이브러리를 대체할 수 있는 다른 JavaScript 라이브러리를 사용해야 합니다.",
  "0.http.dacg.conditional.npm_recommendation": "현재 사용 중인 {0} JavaScript 라이브러리의 버전을 {1}으로 교체해야 합니다.",
  "0.http.dacg.conditional.wp_core_no_recommendation": "현재 사용 중인 WordPress를 대체할 수 있는 저작물 관리 시스템(CMS)을 사용해야 합니다.",
  "0.http.dacg.conditional.wp_core_recommendation": "현재 사용 중인 WordPress의 버전을 {0}으로 교체해야 합니다.",
  "0.http.dacg.conditional.wp_plugin_no_recommendation": "현재 사용 중인 {0} WordPress를 대체할 수 있는 웹 서버 소프트웨어를 사용해야 합니다.",
  "0.http.dacg.conditional.wp_plugin_recommendation": "현재 사용 중인 {0} WordPress 플러그인의 버전을 {1}으로 교체해야 합니다.",
  "0.http.dacg.conditional.wp_theme_no_recommendation": "현재 사용 중인 {0} WordPress 테마를 대체할 수 있는 웹 서버 소프트웨어를 사용해야 합니다.",
  "0.http.dacg.conditional.wp_theme_recommendation": "현재 사용 중인 {0} WordPress 테마의 버전을 {1}으로 교체해야 합니다.",
  "0.http.dacg.iis_server.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.iis_server.attack.s0.o1": "{0}",
  "0.http.dacg.iis_server.attack.s0.o2": "{0}",
  "0.http.dacg.iis_server.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.iis_server.result.s0.o1": "{0}",
  "0.http.dacg.iis_server.result.s1.o0": "HTTP 응답 헤더에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.iis_server.result.s1.o1": "{0}",
  "0.http.dacg.iis_server.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 인터넷 정보 서비스(IIS)를 사용 중임을 발견했습니다.",
  "0.http.dacg.iis_server.solution.s0.o0": " ",
  "0.http.dacg.iis_webdav.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.iis_webdav.attack.s0.o1": "{0}",
  "0.http.dacg.iis_webdav.attack.s0.o2": "{0}",
  "0.http.dacg.iis_webdav.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.iis_webdav.result.s0.o1": "{0}",
  "0.http.dacg.iis_webdav.result.s1.o0": "HTTP 응답 헤더에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.iis_webdav.result.s1.o1": "{0}",
  "0.http.dacg.iis_webdav.result.s1.o2": "또한, HTTP 응답 상태 코드는 {0} 입니다.",
  "0.http.dacg.iis_webdav.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 인터넷 정보 서비스(IIS)를 사용 중이며, WebDAV가 동작중임을 발견했습니다.",
  "0.http.dacg.iis_webdav.solution.s0.o0": " ",
  "0.http.dacg.mvn.attack.s0.o0": "서버에서 사용 중인 Java 라이브러리를 조사했습니다.",
  "0.http.dacg.mvn.result.s0.o0": "서버에서 사용 중인 Java 라이브러리 조사 결과, {0} 라이브러리를 사용 중임을 발견했습니다.",
  "0.http.dacg.mvn.result.s0.o1": "해당 라이브러리의 버전은 {0}, 라이브러리 파일의 해시값은 {1} 입니다.",
  "0.http.dacg.mvn.result.s1.o0": "분석 수행 결과, 서버에서 다음과 같은 취약점이 포함된 라이브러리를 사용 중임을 발견했습니다.",
  "0.http.dacg.mvn.solution.s0.o0": " ",
  "0.http.dacg.npm.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.npm.attack.s0.o1": "{0}",
  "0.http.dacg.npm.attack.s0.o2": "{0}",
  "0.http.dacg.npm.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.npm.result.s0.o1": "{0}",
  "0.http.dacg.npm.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.npm.result.s1.o1": "{0}",
  "0.http.dacg.npm.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 {1} JavaScript 라이브러리를 사용 중임을 발견했습니다.",
  "0.http.dacg.npm.solution.s0.o0": " ",
  "0.http.dacg.technote.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.technote.attack.s0.o1": "{0}",
  "0.http.dacg.technote.attack.s0.o2": "{0}",
  "0.http.dacg.technote.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.technote.result.s0.o1": "{0}",
  "0.http.dacg.technote.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.technote.result.s1.o1": "{0}",
  "0.http.dacg.technote.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 테크노트를 사용 중임을 발견했습니다.",
  "0.http.dacg.technote.solution.s0.o0": "현재 사용 중인 테크노트는 개발 및 지원이 중지되었습니다. 테크노트를 대체할 수 있는 저작물 관리 시스템(CMS)을 사용해야 합니다.",
  "0.http.dacg.wp_active_core.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.wp_active_core.attack.s0.o1": "{0}",
  "0.http.dacg.wp_active_core.attack.s0.o2": "{0}",
  "0.http.dacg.wp_active_core.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.wp_active_core.result.s0.o1": "{0}",
  "0.http.dacg.wp_active_core.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.wp_active_core.result.s1.o1": "{0}",
  "0.http.dacg.wp_active_core.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 WordPress를 사용 중임을 발견했습니다.",
  "0.http.dacg.wp_active_core.solution.s0.o0": " ",
  "0.http.dacg.wp_passive_core.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.wp_passive_core.attack.s0.o1": "{0}",
  "0.http.dacg.wp_passive_core.attack.s0.o2": "{0}",
  "0.http.dacg.wp_passive_core.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.wp_passive_core.result.s0.o1": "{0}",
  "0.http.dacg.wp_passive_core.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.wp_passive_core.result.s1.o1": "{0}",
  "0.http.dacg.wp_passive_core.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 WordPress를 사용 중임을 발견했습니다.",
  "0.http.dacg.wp_passive_core.solution.s0.o0": " ",
  "0.http.dacg.wp_passive_plugin.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.wp_passive_plugin.attack.s0.o1": "{0}",
  "0.http.dacg.wp_passive_plugin.attack.s0.o2": "{0}",
  "0.http.dacg.wp_passive_plugin.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.wp_passive_plugin.result.s0.o1": "{0}",
  "0.http.dacg.wp_passive_plugin.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.wp_passive_plugin.result.s1.o1": "{0}",
  "0.http.dacg.wp_passive_plugin.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 {1} WordPress 플러그인을 사용 중임을 발견했습니다.",
  "0.http.dacg.wp_passive_plugin.solution.s0.o0": " ",
  "0.http.dacg.wp_passive_theme.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.wp_passive_theme.attack.s0.o1": "{0}",
  "0.http.dacg.wp_passive_theme.attack.s0.o2": "{0}",
  "0.http.dacg.wp_passive_theme.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.wp_passive_theme.result.s0.o1": "{0}",
  "0.http.dacg.wp_passive_theme.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.wp_passive_theme.result.s1.o1": "{0}",
  "0.http.dacg.wp_passive_theme.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 {1} WordPress 테마를 사용 중임을 발견했습니다.",
  "0.http.dacg.wp_passive_theme.solution.s0.o0": " ",
  "0.http.dacg.zeroboard.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.dacg.zeroboard.attack.s0.o1": "{0}",
  "0.http.dacg.zeroboard.attack.s0.o2": "{0}",
  "0.http.dacg.zeroboard.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.dacg.zeroboard.result.s0.o1": "{0}",
  "0.http.dacg.zeroboard.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dacg.zeroboard.result.s1.o1": "{0}",
  "0.http.dacg.zeroboard.result.s2.o0": "분석 수행 결과, 서버에서 {0} 버전의 제로보드를 사용 중임을 발견했습니다.",
  "0.http.dacg.zeroboard.solution.s0.o0": "현재 사용 중인 제로보드를 XpressEngine으로 업그레이드하여 사용해야 합니다.",
  "0.http.dast.sw.common.6495.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6495.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6495.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6495.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6495.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6495.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6495.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6495.match.result.s2.o0": "분석 수행 결과, 관리자 페이지로의 접근이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6495.match.solution.s0.o0": "관리자 인터페이스 보호를 위해 아래 “관리자 페이지 설정 규칙”을 최대한 준수하여, 추측이 불가능한 경로로 일반 사용자 영역과 분리해야 합니다.\n",
  "0.http.dast.sw.common.6495.match.solution.s1.o0": "1. admin, manager, adm, system 등 관리자와 연관될 수 있는 단어 사용 금지\n",
  "0.http.dast.sw.common.6495.match.solution.s2.o0": "2. index, default 등 디폴트 인덱스 파일 이름 사용 금지\n",
  "0.http.dast.sw.common.6495.match.solution.s3.o0": "3. 웹 서버에서 디폴트 인덱스 페이지 사용을 비활성화하여, 정확한 경로 입력 시에만 페이지 연결이 가능하도록 설정\n",
  "0.http.dast.sw.common.6495.match.solution.s4.o0": "4. 경로 Depth를 2단계 이상 사용\n",
  "0.http.dast.sw.common.6495.match.solution.s5.o0": "5. 추측하기 어려운 포트 번호로 변경 (ex. 8080, 8888 등 사용 금지)",
  "0.http.dast.sw.common.6496.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6496.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6496.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6496.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6496.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6496.match.result.s1.o0": "또한, 응답에 대한 최종 도착지 경로가 다음과 같습니다.",
  "0.http.dast.sw.common.6496.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6496.match.result.s2.o0": "아울러, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6496.match.result.s2.o1": "{0}",
  "0.http.dast.sw.common.6496.match.result.s3.o0": "분석 수행 결과, 관리자 페이지로의 접근이 가능하며, 동시에 해당 관리자 페이지 접근 시 SSL 설정을 통한 보호 조치를 적용하지 않았음을 확인했습니다.",
  "0.http.dast.sw.common.6496.match.solution.s0.o0": "관리자 인터페이스 보호를 위해 아래 “관리자 페이지 설정 규칙”을 최대한 준수하여, 추측이 불가능한 경로로 일반 사용자 영역과 분리해야 합니다.\n",
  "0.http.dast.sw.common.6496.match.solution.s1.o0": "1. admin, manager, adm, system 등 관리자와 연관될 수 있는 단어 사용 금지\n",
  "0.http.dast.sw.common.6496.match.solution.s2.o0": "2. index, default 등 디폴트 인덱스 파일 이름 사용 금지\n",
  "0.http.dast.sw.common.6496.match.solution.s3.o0": "3. 웹 서버에서 디폴트 인덱스 페이지 사용을 비활성화하여, 정확한 경로 입력 시에만 페이지 연결이 가능하도록 설정\n",
  "0.http.dast.sw.common.6496.match.solution.s4.o0": "4. 경로 Depth를 2단계 이상 사용\n",
  "0.http.dast.sw.common.6496.match.solution.s5.o0": "5. 추측하기 어려운 포트 번호로 변경 (ex. 8080, 8888 등 사용 금지)",
  "0.http.dast.sw.common.6501.both.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6501.both.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6501.both.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6501.both.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6501.both.result.s0.o0": "응답의 헤더 중, 이름이 {0}에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.dast.sw.common.6501.both.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6501.both.result.s1.o0": "응답의 헤더 중, 이름이 {0}에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.dast.sw.common.6501.both.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6501.both.result.s2.o0": "분석 수행 결과, CORS 설정이 올바르지 않음을 확인했습니다.",
  "0.http.dast.sw.common.6501.both.solution.s0.o0": "CORS를 설정한 경우, Origin 헤더를 조작하여 요청을 발생시킬 수 있기 때문에 `Access-Control-Allow-Origin` 혹은 `Access-Control-Allow-Credentials` 헤더에만 의존한 접근 제어를 피해야 합니다.\n",
  "0.http.dast.sw.common.6501.both.solution.s0.o1": "예를 들어, 다음과 같은 CORS 정규식을 작성할 수 있습니다.",
  "0.http.dast.sw.common.6501.both.solution.s0.o2": "{0}",
  "0.http.dast.sw.common.6501.credentials.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6501.credentials.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6501.credentials.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6501.credentials.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6501.credentials.result.s0.o0": "응답의 헤더 중, 이름이 {0}에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.dast.sw.common.6501.credentials.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6501.credentials.result.s1.o0": "분석 수행 결과, CORS 설정이 올바르지 않음을 확인했습니다.",
  "0.http.dast.sw.common.6501.credentials.solution.s0.o0": "CORS를 설정한 경우, Origin 헤더를 조작하여 요청을 발생시킬 수 있기 때문에 `Access-Control-Allow-Origin` 혹은 `Access-Control-Allow-Credentials` 헤더에만 의존한 접근 제어를 피해야 합니다.\n",
  "0.http.dast.sw.common.6501.credentials.solution.s0.o1": "예를 들어, 다음과 같은 CORS 정규식을 작성할 수 있습니다.",
  "0.http.dast.sw.common.6501.credentials.solution.s0.o2": "{0}",
  "0.http.dast.sw.common.6501.origin.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6501.origin.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6501.origin.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6501.origin.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6501.origin.result.s0.o0": "응답의 헤더 중, 이름이 {0}에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.dast.sw.common.6501.origin.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6501.origin.result.s1.o0": "분석 수행 결과, CORS 설정이 올바르지 않음을 확인했습니다.",
  "0.http.dast.sw.common.6501.origin.solution.s0.o0": "CORS를 설정한 경우, Origin 헤더를 조작하여 요청을 발생시킬 수 있기 때문에 `Access-Control-Allow-Origin` 혹은 `Access-Control-Allow-Credentials` 헤더에만 의존한 접근 제어를 피해야 합니다.\n",
  "0.http.dast.sw.common.6501.origin.solution.s0.o1": "예를 들어, 다음과 같은 CORS 정규식을 작성할 수 있습니다.",
  "0.http.dast.sw.common.6501.origin.solution.s0.o2": "{0}",
  "0.http.dast.sw.common.6503.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6503.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6503.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6503.match.attack.s0.o3": "해당 요청에 대한 응답의 본문을 분석했습니다.",
  "0.http.dast.sw.common.6503.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6503.match.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6503.match.result.s0.o2": "해당 문자열은 DBMS에서 출력한 오류 메시지로 보입니다.\n",
  "0.http.dast.sw.common.6503.match.result.s0.o3": "분석 수행 결과, SQL 인젝션 유발 가능성이 있는 위험한 문자에 대한 필터링이 충분하지 않음을 확인했습니다.",
  "0.http.dast.sw.common.6503.match.solution.s0.o0": "악의적인 사용자가 입력한 SQL 쿼리로 DBMS 및 데이터를 열람하거나 조작 가능하므로 사용자의 입력값에 대한 필터링을 구현해야 합니다. ', ;, --, #, /* */ 등의 특수문자는 대표적인 예시로 SQL 인젝션을 유발할 수 있는 위험한 문자이니 사용자 입력값으로 사용되지 않게 조심해야 합니다.\n\n",
  "0.http.dast.sw.common.6503.match.solution.s0.o1": "Java :",
  "0.http.dast.sw.common.6503.match.solution.s0.o2": "{0}",
  "0.http.dast.sw.common.6503.match.solution.s0.o3": "JSP :",
  "0.http.dast.sw.common.6503.match.solution.s0.o4": "{0}",
  "0.http.dast.sw.common.6503.match.solution.s0.o5": "PHP :",
  "0.http.dast.sw.common.6503.match.solution.s0.o6": "{0}",
  "0.http.dast.sw.common.6504.time_based.attack.s0.o0": "다음과 같은 요청을 1차 송신했습니다. 해당 요청으로 인해 SQL 쿼리를 처리하는 과정에서 지연이 발생할 것으로 가정합니다.",
  "0.http.dast.sw.common.6504.time_based.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6504.time_based.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6504.time_based.attack.s0.o3": "다음과 같은 요청을 2차 송신했습니다. 해당 요청으로 인해 SQL 쿼리를 처리하는 과정에서 지연이 발생하지 않을 것으로 가정합니다.",
  "0.http.dast.sw.common.6504.time_based.attack.s0.o4": "{0}",
  "0.http.dast.sw.common.6504.time_based.attack.s0.o5": "{0}",
  "0.http.dast.sw.common.6504.time_based.attack.s0.o6": "요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6504.time_based.result.s0.o0": "모든 응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6504.time_based.result.s0.o1": "1차 송신한 요청에 대한 응답 수신 시 다음과 같은 시간이 소요되었습니다: {0}초\n",
  "0.http.dast.sw.common.6504.time_based.result.s0.o2": "2차 송신한 요청에 대한 응답 수신 시 다음과 같은 시간이 소요되었습니다: {0}초\n",
  "0.http.dast.sw.common.6504.time_based.result.s0.o3": "1차 송신한 요청에 대한 응답 수신 시 {0}초 만큼의 추가 지연이 발생했습니다.\n",
  "0.http.dast.sw.common.6504.time_based.result.s0.o4": "분석 수행 결과, time-based blind SQL 삽입 공격 시도가 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6504.time_based.solution.s0.o0": "악의적인 사용자가 입력한 SQL 쿼리로 DBMS 및 데이터를 열람하거나 조작 가능하므로 사용자의 입력값에 대한 필터링을 구현해야 합니다. ', ;, --, #, /* */ 등의 특수문자는 대표적인 예시로 SQL 인젝션을 유발할 수 있는 위험한 문자이니 사용자 입력값으로 사용되지 않게 조심해야 합니다.\n\n",
  "0.http.dast.sw.common.6504.time_based.solution.s0.o1": "Java :",
  "0.http.dast.sw.common.6504.time_based.solution.s0.o2": "{0}",
  "0.http.dast.sw.common.6504.time_based.solution.s0.o3": "JSP :",
  "0.http.dast.sw.common.6504.time_based.solution.s0.o4": "{0}",
  "0.http.dast.sw.common.6504.time_based.solution.s0.o5": "PHP :",
  "0.http.dast.sw.common.6504.time_based.solution.s0.o6": "{0}",
  "0.http.dast.sw.common.6505.unix.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6505.unix.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6505.unix.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6505.unix.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6505.unix.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6505.unix.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6505.unix.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6505.unix.result.s2.o0": "분석 수행 결과, Unix 계열 운영체제 명령어 삽입 공격이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6505.unix.solution.s0.o0": "애플리케이션은 운영체제로부터 명령어를 직접적으로 호출하지 않도록 구현해야 합니다.\n",
  "0.http.dast.sw.common.6505.unix.solution.s1.o0": "명령어를 직접 호출하는 것이 필요한 경우에는, 데이터가 OS의 명령어 해석기에 전달되기 전에 입력값 검증 확인을 수행해야 합니다.\n",
  "0.http.dast.sw.common.6505.unix.solution.s2.o0": "입력값에 대한 파라미터 데이터의 특수 문자에 대한 필터링 처리가 필요합니다. 해당 문자는 다음과 같습니다.",
  "0.http.dast.sw.common.6505.unix.solution.s3.o1": "{0}",
  "0.http.dast.sw.common.6505.windows.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6505.windows.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6505.windows.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6505.windows.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6505.windows.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6505.windows.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6505.windows.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6505.windows.result.s2.o0": "분석 수행 결과, Windows 계열 운영체제 명령어 삽입 공격이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6505.windows.solution.s0.o0": "애플리케이션은 운영체제로부터 명령어를 직접적으로 호출하지 않도록 구현해야 합니다.\n",
  "0.http.dast.sw.common.6505.windows.solution.s1.o0": "명령어를 직접 호출하는 것이 필요한 경우에는, 데이터가 OS 의 명령어 해석기에 전달되기 전에 입력값 검증 확인을 수행해야 합니다.\n",
  "0.http.dast.sw.common.6505.windows.solution.s2.o0": "입력값에 대한 파라미터 데이터의 특수 문자에 대한 필터링 처리가 필요합니다. 해당 문자는 다음과 같습니다.",
  "0.http.dast.sw.common.6505.windows.solution.s3.o1": "{0}",
  "0.http.dast.sw.common.6506.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6506.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6506.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6506.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6506.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6506.match.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6506.match.result.s1.o0": "해당 문자열은 XPath 처리 도중 구문 오류가 발생했음을 의미합니다.\n",
  "0.http.dast.sw.common.6506.match.result.s2.o0": "분석 수행 결과, XPath 삽입 취약점의 존재 가능성을 확인했습니다.",
  "0.http.dast.sw.common.6506.match.solution.s0.o0": "서비스의 특성에 따라 데이터를 XML로 처리하거나, 설정 정보 및 코드정보를 XML 데이터로 관리하는 경우 XML 쿼리 생성 시 입력값에 대한 검증 확인 작업을 수행해야 합니다.\n",
  "0.http.dast.sw.common.6506.match.solution.s0.o1": "입력값을 사용한 경우 파라미터 데이터에 사용된 특수 문자를 필터링해야 합니다. 해당 문자는 다음과 같습니다.",
  "0.http.dast.sw.common.6506.match.solution.s0.o2": "{0}",
  "0.http.dast.sw.common.6506.match.solution.s1.o2": "SQL Injection과 마찬가지로 XPATH 쿼리에 입력되는 모든 값에 대한 유효성 검사를 수행해야 합니다.",
  "0.http.dast.sw.common.6508.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6508.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6508.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6508.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6508.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6508.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6508.match.result.s2.o0": "{0}",
  "0.http.dast.sw.common.6508.match.result.s3.o0": "분석 수행 결과, XXE 삽입 공격이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6508.match.solution.s0.o0": "서버 내에서 XML 처리기를 사용할 때, DTDs(Document Type Definition)를 Disable로 설정하는 것이 좋습니다.\n",
  "0.http.dast.sw.common.6508.match.solution.s0.o1": "XML을 통해 삽입되는 서버 내 파일 경로에 대한 검증을 수행하여, 허가되지 않은 경로의 정보를 사용하지 못하도록 구현해야 합니다. (Positive 방식)\n",
  "0.http.dast.sw.common.6508.match.solution.s0.o2": "다음 URL을 참고하여, XML 파서 사용 시 XXE 공격을 예방할 수 있도록 구현해야 합니다.\n",
  "0.http.dast.sw.common.6508.match.solution.s0.o3": "{0}",
  "0.http.dast.sw.common.6509.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6509.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6509.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6509.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6509.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6509.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6509.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6509.match.result.s2.o0": "분석 수행 결과, SSI 삽입 공격이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6509.match.solution.s0.o0": "사용자 입력값을 화이트리스트 방식으로 허용된 문자만 입력 가능하도록 검증 로직을 구현하여야 합니다.\n",
  "0.http.dast.sw.common.6509.match.solution.s0.o1": "특수문자를 사용해야 하는 경우, ‘<’, ‘>’, ‘”’, ‘(’, ‘)’, ‘#’, ‘&’ 등, 실행 명령이 아닌 일반 문자로 인식되도록 처리해야 합니다. 이는 다음과 같이 처리할 수 있습니다.",
  "0.http.dast.sw.common.6509.match.solution.s0.o2": "{0}",
  "0.http.dast.sw.common.6509.match.solution.s0.o3": "또한, 웹 애플리케이션 실행에 SSI 기능이 불필요할 경우, 아래와 같이 설정을 추가해야 합니다.\n",
  "0.http.dast.sw.common.6509.match.solution.s0.o4": "Apache 설정 (httpd.conf)",
  "0.http.dast.sw.common.6509.match.solution.s0.o5": "{0}",
  "0.http.dast.sw.common.6511.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6511.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6511.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6511.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6511.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6511.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6511.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6511.match.result.s2.o0": "분석 수행 결과, 분석 대상에서 phpMyAdmin을 사용 중임을 확인했습니다.",
  "0.http.dast.sw.common.6511.match.solution.s0.o0": "phpMyAdmin 사용을 금지해야 합니다. phpMyAdmin 사용이 불가피한 경우, 최신 버전의 업데이트를 적용해야 합니다.",
  "0.http.dast.sw.common.6512.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6512.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6512.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6512.match.attack.s0.o3": "해당 요청에 대한 응답의 본문을 분석했습니다.",
  "0.http.dast.sw.common.6512.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6512.match.result.s1.o0": "{0}",
  "0.http.dast.sw.common.6512.match.result.s1.o1": "분석 수행 결과, 해당 페이지에서 Adobe Flash Player를 사용 중임을 확인했습니다.",
  "0.http.dast.sw.common.6512.match.solution.s0.o0": "Adobe Flash Player는 기술 지원이 중단되었으므로 사용하지 않도록 합니다. 대신, 개방형 웹 표준 기술인 WebGL, HTML5, WebAssembly 등으로 대체하여 구현하도록 합니다.",
  "0.http.dast.sw.common.6513.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6513.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6513.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6513.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6513.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6513.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6513.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6513.match.result.s2.o0": "분석 수행 결과, 디렉터리 경로 조작을 통한 중요 파일의 다운로드가 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6513.match.solution.s0.o0": "사용자로부터 전송받은 디렉터리 이름 및 파일명에 대하여 입력값 필수 검증이 필요합니다. 검증은 다음 문자에 대하여 수행해야 합니다.\n",
  "0.http.dast.sw.common.6513.match.solution.s0.o1": "- '.': Path Traversal 가능성의 확인\n",
  "0.http.dast.sw.common.6513.match.solution.s0.o2": "- '/': 특정 Path의 접근 가능성을 확인\n",
  "0.http.dast.sw.common.6513.match.solution.s0.o3": "- '\\': 운영환경에 따른 Path 접근 확인\n",
  "0.http.dast.sw.common.6513.match.solution.s0.o4": "- '%': UTF 인코딩 파라미터\n",
  "0.http.dast.sw.common.6513.match.solution.s0.o5": "또한, 입력값 검증 시 “../”을 기준으로 필터링하지 않아야 합니다. 아래 예시를 참고하세요.\n\n",
  "0.http.dast.sw.common.6513.match.solution.s0.o6": "[JSP] 예외처리 샘플 소스코드",
  "0.http.dast.sw.common.6513.match.solution.s0.o7": "{0}",
  "0.http.dast.sw.common.6513.match.solution.s0.o8": "[PHP] 예외처리 샘플 소스코드",
  "0.http.dast.sw.common.6513.match.solution.s0.o9": "{0}",
  "0.http.dast.sw.common.6513.match.solution.s1.o0": "[ASP] 예외처리 샘플 소스코드",
  "0.http.dast.sw.common.6513.match.solution.s1.o1": "{0}",
  "0.http.dast.sw.common.6513.match.solution.s1.o2": "[ASP.NET] 예외처리 샘플 소스코드\n",
  "0.http.dast.sw.common.6513.match.solution.s1.o3": ".NET 환경은 자체적으로 Path Traversal 을 막고 있으므로, 소스 자체적인 별다른 조치는 필요가 없으나 일부 .NET 버전에 해당 보안 메커니즘을 우회할 수 있는 취약점이 발견된 사례가 있으므로, 최신 패치를 설치할 것을 권고합니다.\n",
  "0.http.dast.sw.common.6513.match.solution.s1.o4": "해당 패치가 설치되어 있지 않은 경우 Global.asax에 다음과 같은 내용을 추가합니다.",
  "0.http.dast.sw.common.6513.match.solution.s1.o5": "{0}",
  "0.http.dast.sw.common.6514.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6514.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6514.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6514.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6514.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6514.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6514.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6514.match.result.s2.o0": "분석 수행 결과, 디렉터리 경로 조작을 통한 중요 파일의 다운로드가 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6514.match.solution.s0.o0": "발견한 파일 절대 경로를 노출할 필요가 없는 경우, 해당 파일 절대 경로를 HTTP 응답 본문에서 제거하세요.",
  "0.http.dast.sw.common.6515.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6515.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6515.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6515.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6515.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6515.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6515.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6515.match.result.s2.o0": "분석 수행 결과, 디렉터리 경로 조작을 통한 중요 파일의 다운로드가 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6515.match.solution.s0.o0": "사용자로부터 전송받은 디렉터리 이름 및 파일명에 대하여 입력값 필수 검증이 필요합니다. 검증은 다음 문자에 대하여 수행해야 합니다.\n",
  "0.http.dast.sw.common.6515.match.solution.s0.o1": "- '.': Path Traversal 가능성의 확인\n",
  "0.http.dast.sw.common.6515.match.solution.s0.o2": "- '/': 특정 Path의 접근 가능성을 확인\n",
  "0.http.dast.sw.common.6515.match.solution.s0.o3": "- '\\': 운영환경에 따른 Path 접근 확인\n",
  "0.http.dast.sw.common.6515.match.solution.s0.o4": "- '%': UTF 인코딩 파라미터\n",
  "0.http.dast.sw.common.6515.match.solution.s0.o5": "또한, 입력값 검증 시 “../”을 기준으로 필터링하지 않아야 합니다. 아래 예시를 참고하세요.\n\n",
  "0.http.dast.sw.common.6515.match.solution.s0.o6": "[JSP] 예외처리 샘플 소스코드",
  "0.http.dast.sw.common.6515.match.solution.s0.o7": "{0}",
  "0.http.dast.sw.common.6515.match.solution.s0.o8": "[PHP] 예외처리 샘플 소스코드",
  "0.http.dast.sw.common.6515.match.solution.s0.o9": "{0}",
  "0.http.dast.sw.common.6515.match.solution.s1.o0": "[ASP] 예외처리 샘플 소스코드",
  "0.http.dast.sw.common.6515.match.solution.s1.o1": "{0}",
  "0.http.dast.sw.common.6515.match.solution.s1.o2": "[ASP.NET] 예외처리 샘플 소스코드\n",
  "0.http.dast.sw.common.6515.match.solution.s1.o3": ".NET 환경은 자체적으로 Path Traversal 을 막고 있으므로, 소스 자체적인 별다른 조치는 필요가 없으나 일부 .NET 버전에 해당 보안 메커니즘을 우회할 수 있는 취약점이 발견된 사례가 있으므로, 최신 패치를 설치할 것을 권고합니다.\n",
  "0.http.dast.sw.common.6515.match.solution.s1.o4": "해당 패치가 설치되어 있지 않은 경우 Global.asax에 다음과 같은 내용을 추가합니다.",
  "0.http.dast.sw.common.6515.match.solution.s1.o5": "{0}",
  "0.http.dast.sw.common.6518.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6518.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6518.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6518.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6518.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6518.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6518.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6518.match.result.s2.o0": "분석 수행 결과, 디렉터리 리스팅 페이지에 대한 접근이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6518.match.solution.s0.o0": "웹 서비스 중 WEB, WAS의 경우 디렉토리 나열(Directory Listing)의 설정을 비활성화해야 합니다.\n",
  "0.http.dast.sw.common.6518.match.solution.s0.o1": "Apache: `httpd.conf` 파일 (Ubuntu 등 Debian 계열은 `apache2.conf`) 내의 `Options` 지시자에서 `Indexes`라는 옵션을 제거하거나 `-Indexes` 옵션을 삽입\n",
  "0.http.dast.sw.common.6518.match.solution.s0.o2": "IIS 6/7/8/10: 인터넷 정보 서비스(IIS) 관리 - [해당 웹사이트] - [등록정보] - [홈 디렉터리] 탭에서 [디렉터리 검색] 해제\n",
  "0.http.dast.sw.common.6518.match.solution.s0.o3": "JBoss, Apache Tomcat: web.xml 내 listings 값을 false로 설정\n",
  "0.http.dast.sw.common.6518.match.solution.s0.o4": "JRun: default-web.xml 내 browseDirs 속성을 false로 설정\n",
  "0.http.dast.sw.common.6518.match.solution.s0.o5": "WebLogic: weblogic.xml 내 weblogic-wep-app 요소의 index-directory-enabled 속성을 false로 설정\n",
  "0.http.dast.sw.common.6518.match.solution.s0.o6": "WebtoB: http.m 내 Options 항목을 삭제하거나, Options를 `-Index`로 설정",
  "0.http.dast.sw.common.6519.delete.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6519.delete.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6519.delete.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6519.delete.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "0.http.dast.sw.common.6519.delete.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6519.delete.attack.s1.o2": "{0}",
  "0.http.dast.sw.common.6519.delete.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "0.http.dast.sw.common.6519.delete.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.dast.sw.common.6519.delete.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "0.http.dast.sw.common.6519.delete.result.s0.o2": "{0}",
  "0.http.dast.sw.common.6519.delete.result.s0.o3": "해당 헤더 값을 기반으로, DELETE 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "0.http.dast.sw.common.6519.delete.result.s1.o0": "DELETE 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.dast.sw.common.6519.delete.result.s1.o2": "분석 수행 결과, DELETE 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6519.delete.solution.s0.o0": "HTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드는 취약하지 않지만 사용하지 않는 것이 좋습니다.)",
  "0.http.dast.sw.common.6519.put.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6519.put.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6519.put.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6519.put.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "0.http.dast.sw.common.6519.put.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6519.put.attack.s1.o2": "{0}",
  "0.http.dast.sw.common.6519.put.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "0.http.dast.sw.common.6519.put.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.dast.sw.common.6519.put.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "0.http.dast.sw.common.6519.put.result.s0.o2": "{0}",
  "0.http.dast.sw.common.6519.put.result.s0.o3": "해당 헤더 값을 기반으로, PUT 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "0.http.dast.sw.common.6519.put.result.s1.o0": "PUT 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.dast.sw.common.6519.put.result.s1.o1": "또한, 해당 응답의 헤더 중 Content-Location 헤더가 존재합니다.\n",
  "0.http.dast.sw.common.6519.put.result.s1.o2": "분석 수행 결과, PUT 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6519.put.solution.s0.o0": "HTTP Method 중 운영에 필수적인 Method(GET, POST)만 사용하고, 취약한 HTTP Method(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD Method는 취약하지 않지만 사용하지 않을 것이 좋습니다.)",
  "0.http.dast.sw.common.6519.trace.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6519.trace.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6519.trace.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6519.trace.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "0.http.dast.sw.common.6519.trace.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6519.trace.attack.s1.o2": "{0}",
  "0.http.dast.sw.common.6519.trace.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "0.http.dast.sw.common.6519.trace.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.dast.sw.common.6519.trace.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "0.http.dast.sw.common.6519.trace.result.s0.o2": "{0}",
  "0.http.dast.sw.common.6519.trace.result.s0.o3": "해당 헤더 값을 기반으로, TRACE 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "0.http.dast.sw.common.6519.trace.result.s1.o0": "TRACE 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.dast.sw.common.6519.trace.result.s1.o1": "또한, 해당 응답의 본문에서 다음 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6519.trace.result.s1.o2": "{0}",
  "0.http.dast.sw.common.6519.trace.result.s1.o3": "분석 수행 결과, TRACE 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6519.trace.solution.s0.o0": "HTTP Method 중 운영에 필수적인 Method(GET, POST)만 사용하고, 취약한 HTTP Method(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD Method는 취약하지 않지만 사용하지 않을 것이 좋습니다.)",
  "0.http.dast.sw.common.6520.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6520.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6520.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6520.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6520.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6520.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6520.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6520.match.result.s2.o0": "분석 수행 결과, 해당 오류 페이지에서 서버 정보 등의 노출이 발생함을 확인했습니다.",
  "0.http.dast.sw.common.6520.match.solution.s0.o0": "커스텀 오류 페이지를 생성하여 오류 발생 시 디폴트 오류 페이지가 나오지 않도록 예외 처리가 필요합니다. 커스텀 페이지 내에는 HTTP 상태 코드나 서버의 정보가 포함되지 않아야 합니다.",
  "0.http.dast.sw.common.6522.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6522.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6522.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6522.match.attack.s0.o3": "해당 요청에 대한 응답의 본문을 분석했습니다.",
  "0.http.dast.sw.common.6522.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6522.match.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6522.match.result.s0.o2": "해당 문자열은 DBMS에서 출력한 오류 메시지로 보입니다.\n",
  "0.http.dast.sw.common.6522.match.result.s0.o3": "분석 수행 결과, DB 오류 메시지에 대한 처리가 불충분한 페이지가 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6522.match.solution.s0.o0": "적절한 DB 에러 메시지 처리가 필요합니다. 아래 예시를 참고하세요.\n",
  "0.http.dast.sw.common.6522.match.solution.s0.o1": "예) [JAVA] 안전하지 않은 코드(printStackTrace)",
  "0.http.dast.sw.common.6522.match.solution.s0.o2": "{0}",
  "0.http.dast.sw.common.6522.match.solution.s0.o3": "예) [JAVA] 안전하지 않은 코드(getMessage)",
  "0.http.dast.sw.common.6522.match.solution.s0.o4": "{0}",
  "0.http.dast.sw.common.6522.match.solution.s0.o5": "예) [JAVA] 안전한 코드(예로써 제시함으로, 구현 시 다를 수 있음)",
  "0.http.dast.sw.common.6522.match.solution.s0.o6": "{0}",
  "0.http.dast.sw.common.6523.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6523.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6523.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6523.match.attack.s0.o3": "해당 요청에 대한 응답의 본문을 분석했습니다.",
  "0.http.dast.sw.common.6523.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6523.match.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6523.match.result.s1.o0": "분석 수행 결과, 해당 페이지에서 민감한 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6523.match.solution.s0.o0": "스크립트 함수 내에 파일 업로드 정보, 테이블 정보, 특정 IP 나 URL Full 경로 사용을 제한하여야 하며, 필요시 설정 파일을 참조하도록 합니다.",
  "0.http.dast.sw.common.6524.server.attack.s0.o0": "서버 정보를 확인하기 위해 아래의 요청의 응답을 확인합니다.",
  "0.http.dast.sw.common.6524.server.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6524.server.result.s0.o0": "HTTP 응답 헤더에 다음과 같이 서버의 버전 정보가 포함되어 있습니다.",
  "0.http.dast.sw.common.6524.server.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6524.server.result.s1.o0": "분석 수행 결과, 해당 페이지에서 민감한 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6524.server.solution.s0.o0": "서버의 버전 정보는 일반적으로 서버의 설정을 변경하여 버전 정보가 HTTP 응답 헤더에 포함되지 않도록 제한할 수 있습니다.\n",
  "0.http.dast.sw.common.6524.server.solution.s1.o0": "- PHP의 경우 php.ini 파일의 설정을 아래와 같이 조정합니다.\n",
  "0.http.dast.sw.common.6524.server.solution.s2.o0": "- Apache의 경우 httpd.conf 파일의 설정을 아래와 같이 조정합니다.\n",
  "0.http.dast.sw.common.6524.server.solution.s3.o0": "- Nginx의 경우 fastcgi_hide_header 모듈을 사용하여 헤더를 숨기도록 지정합니다.\n",
  "0.http.dast.sw.common.6524.server.solution.s4.o0": "- IIS의 경우 web.config 파일의 설정을 아래와 같이 조정합니다.",
  "0.http.dast.sw.common.6525.absolute_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6525.absolute_action.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.absolute_action.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6525.absolute_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6525.absolute_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.6525.absolute_action.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.absolute_action.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTP 프로토콜을 사용함을 의미합니다.\n",
  "0.http.dast.sw.common.6525.absolute_action.result.s1.o1": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.6525.absolute_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.6525.get_method.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6525.get_method.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.get_method.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6525.get_method.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6525.get_method.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.6525.get_method.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.get_method.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTPS 프로토콜을 사용함을 의미합니다.\n",
  "0.http.dast.sw.common.6525.get_method.result.s1.o1": "또한 해당 form 태그의 method 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통하여 발생한 요청이 GET 메소드를 사용함을 의미합니다.\n",
  "0.http.dast.sw.common.6525.get_method.result.s1.o2": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 메소드를 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.6525.get_method.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.6525.no_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6525.no_action.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.no_action.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6525.no_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6525.no_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.6525.no_action.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.no_action.result.s1.o0": "해당 form 태그의 action 속성값이 존재하지 않습니다. 이는 해당 form 태그를 통하여 발생한 요청을 해당 form 태그가 존재하는 페이지의 URL에 해당하는 위치로 전송함을 의미합니다. 따라서 해당 form 태그를 통하여 발생한 요청은 해당 form 태그가 존재하는 페이지의 URL과 동일한 프로토콜을 사용합니다.\n",
  "0.http.dast.sw.common.6525.no_action.result.s1.o1": "또한, 해당 form 태그가 존재하는 페이지의 URL은 다음과 같습니다.",
  "0.http.dast.sw.common.6525.no_action.result.s1.o2": "{0}",
  "0.http.dast.sw.common.6525.no_action.result.s1.o3": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.6525.no_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.6525.no_method.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6525.no_method.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.no_method.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6525.no_method.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6525.no_method.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.6525.no_method.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.no_method.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTPS 프로토콜을 사용함을 의미합니다.\n",
  "0.http.dast.sw.common.6525.no_method.result.s1.o1": "또한 해당 form 태그의 method 속성이 존재하지 않습니다. 이는 해당 form 태그를 통해 발생한 요청이 GET 메소드를 사용함을 의미합니다.\n",
  "0.http.dast.sw.common.6525.no_method.result.s1.o2": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 메소드를 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.6525.no_method.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.6525.relative_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6525.relative_action.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.relative_action.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6525.relative_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6525.relative_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.6525.relative_action.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6525.relative_action.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통하여 발생한 요청을 해당 form 태그가 존재하는 페이지의 URL에 대한 상대 경로 위치로 전송함을 의미합니다. 따라서 해당 form 태그를 통하여 발생한 요청은 해당 form 태그가 존재하는 페이지의 URL과 동일한 프로토콜을 사용합니다.\n",
  "0.http.dast.sw.common.6525.relative_action.result.s1.o1": "또한, 해당 form 태그가 존재하는 페이지의 URL은 다음과 같습니다.",
  "0.http.dast.sw.common.6525.relative_action.result.s1.o2": "{0}",
  "0.http.dast.sw.common.6525.relative_action.result.s1.o3": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.6525.relative_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.6526.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6526.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6526.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6526.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6526.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6526.match.result.s0.o1": "{0}",
  "0.http.dast.sw.common.6526.match.result.s0.o2": "분석 수행 결과, 해당 페이지에서 FTP, DB, 또는 시스템 접속 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6526.match.solution.s0.o0": "애플릿, 서블릿, jar, war 등에서 특정 리소스 참조 시 FTP, DB 등 시스템 접속 정보가 평문으로 노출되지 않도록 설계해야 합니다.",
  "0.http.dast.sw.common.6527.cs.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6527.cs.attack.s1.o0": "{0}",
  "0.http.dast.sw.common.6527.cs.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6527.cs.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.dast.sw.common.6527.cs.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.dast.sw.common.6527.cs.result.s1.o0": "현재 사용 중인 cipher suite 중, 다음과 같은 cipher suite가 존재합니다: {0}\n",
  "0.http.dast.sw.common.6527.cs.result.s2.o0": "해당 cipher suite는 안전하지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.dast.sw.common.6527.cs.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.dast.sw.common.6527.hash.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6527.hash.attack.s1.o0": "{0}",
  "0.http.dast.sw.common.6527.hash.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6527.hash.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.dast.sw.common.6527.hash.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.dast.sw.common.6527.hash.result.s1.o0": "현재 사용 중인 인증서 중, 해시 알고리즘이 다음과 같은 인증서가 존재합니다: {0}\n",
  "0.http.dast.sw.common.6527.hash.result.s2.o0": "해당 인증서의 해시 알고리즘은 안전하지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.dast.sw.common.6527.hash.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.dast.sw.common.6527.length.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6527.length.attack.s1.o0": "{0}",
  "0.http.dast.sw.common.6527.length.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6527.length.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.dast.sw.common.6527.length.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.dast.sw.common.6527.length.result.s1.o0": "현재 사용 중인 인증서 중, 키 길이가 다음과 같은 인증서가 존재합니다: {0}\n",
  "0.http.dast.sw.common.6527.length.result.s2.o0": "해당 인증서의 키 길이가 충분히 길지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.dast.sw.common.6527.length.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.dast.sw.common.6527.period.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6527.period.attack.s1.o0": "{0}",
  "0.http.dast.sw.common.6527.period.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6527.period.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.dast.sw.common.6527.period.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.dast.sw.common.6527.period.result.s1.o0": "현재 사용 중인 인증서 중, 유효 기간이 다음과 같은 인증서가 존재합니다: {0}\n",
  "0.http.dast.sw.common.6527.period.result.s2.o0": "해당 인증서는 이미 만료되었으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.dast.sw.common.6527.period.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.dast.sw.common.6527.protocol.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6527.protocol.attack.s1.o0": "{0}",
  "0.http.dast.sw.common.6527.protocol.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6527.protocol.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.dast.sw.common.6527.protocol.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.dast.sw.common.6527.protocol.result.s1.o0": "현재 사용 중인 프로토콜의 버전이 다음과 같습니다: {0}\n",
  "0.http.dast.sw.common.6527.protocol.result.s2.o0": "해당 버전의 프로토콜은 안전하지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.dast.sw.common.6527.protocol.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.dast.sw.common.6527.rating.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6527.rating.attack.s1.o0": "{0}",
  "0.http.dast.sw.common.6527.rating.attack.s1.o1": "{0}",
  "0.http.dast.sw.common.6527.rating.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.dast.sw.common.6527.rating.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.dast.sw.common.6527.rating.result.s1.o0": "전체 평가 등급이 다음과 같습니다: {0}\n",
  "0.http.dast.sw.common.6527.rating.result.s2.o0": "전체 평가 등급이 양호하지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.dast.sw.common.6527.rating.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.dast.sw.common.6528.disallow.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6528.disallow.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6528.disallow.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6528.disallow.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6528.disallow.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6528.disallow.result.s0.o1": "또한, 응답 본문 내의 Disallow의 값이 존재하지 않습니다.\n",
  "0.http.dast.sw.common.6528.disallow.result.s1.o0": "분석 수행 결과, 검색 엔진을 통한 분석 대상 사이트의 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6528.disallow.solution.s0.o0": "웹 서버 소스 디렉터리의 /(최상위 경로)에 robots.txt를 설정합니다. User-agent의 값을 변경하여 특정 검색 엔진의 수집을 막거나, Disallow의 값을 조정하여 특정 디렉터리의 수집을 제한 가능합니다.",
  "0.http.dast.sw.common.6528.status.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6528.status.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6528.status.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6528.status.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6528.status.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6528.status.result.s0.o1": "분석 수행 결과, 검색 엔진을 통한 분석 대상 사이트의 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6528.status.solution.s0.o0": "웹 서버 소스 디렉터리의 /(최상위 경로)에 robots.txt를 설정합니다. User-agent의 값을 변경하여 특정 검색 엔진의 수집을 막거나, Disallow의 값을 조정하여 특정 디렉터리의 수집을 제한 가능합니다.",
  "0.http.dast.sw.common.6528.user_agent.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6528.user_agent.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6528.user_agent.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6528.user_agent.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6528.user_agent.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6528.user_agent.result.s0.o1": "또한, 응답 본문 내의 User-agent의 값이 적절하지 않습니다.\n",
  "0.http.dast.sw.common.6528.user_agent.result.s1.o0": "분석 수행 결과, 검색 엔진을 통한 분석 대상 사이트의 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6528.user_agent.solution.s0.o0": "웹 서버 소스 디렉터리의 /(최상위 경로)에 robots.txt를 설정합니다. User-agent의 값을 변경하여 특정 검색 엔진의 수집을 막거나, Disallow의 값을 조정하여 특정 디렉터리의 수집을 제한 가능합니다.",
  "0.http.dast.sw.common.6529.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6529.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6529.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6529.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6529.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6529.match.result.s0.o1": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6529.match.result.s0.o2": "{0}",
  "0.http.dast.sw.common.6529.match.result.s0.o3": "분석 수행 결과, 디렉터리 리스팅 페이지에 대한 접근이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6529.match.solution.s0.o0": "/CVS/ 혹은 /.svc/ 디렉터리 존재 시 해당 디렉터리 접근이 불가하도록 설정해야 합니다.\n",
  "0.http.dast.sw.common.6529.match.solution.s0.o1": "- Apache",
  "0.http.dast.sw.common.6529.match.solution.s0.o2": "httpd.conf 파일(우분투 등 데비안 계열은 apache2.conf) 내 <DirectoryMatch “/CVS/”> 혹은 <DirectoryMatch “/.svc/”> 태그 추가 후 Deny from all 속성 설정 후 재가동",
  "0.http.dast.sw.common.6530.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6530.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6530.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6530.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6530.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6530.match.result.s1.o0": "{0}",
  "0.http.dast.sw.common.6530.match.result.s1.o1": "분석 수행 결과, 해당 페이지에서 불필요한 파일의 다운로드 가능성이 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6530.match.solution.s0.o0": "웹 애플리케이션 운영에 필수적인 파일을 제외한 모든 불필요한 파일을 삭제해야 합니다.\n",
  "0.http.dast.sw.common.6530.match.solution.s0.o1": "tar, psd, fla, bak, test, txt, old, zip, 날짜 등 불필요한 확장자를 검색 후 삭제하는 것이 좋습니다.\n",
  "0.http.dast.sw.common.6530.match.solution.s0.o2": "추가 개발이나 유지 보수로 인해 서비스 오픈 이후 불필요한 파일이 남아 있지 않은지 확인하도록 합니다. 예를 들어, 초기에 서비스를 설치할 때 디폴트로 설치되는 Contents 및 서비스를 비활성화 처리하고, 디폴트 디렉터리(/htdocs, /cig-bin 등)를 삭제 또는 변경하고, 디폴트 페이지(Manual, Sample 등)를 삭제 또는 변경하는 등의 방법이 포함됩니다.\n",
  "0.http.dast.sw.common.6530.match.solution.s0.o3": "개발 및 테스트 목적으로 필요한 파일의 경우 별도 테스트 프로젝트로 분리하여 관리하도록 합니다.",
  "0.http.dast.sw.common.6531.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6531.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6531.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6531.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6531.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.6531.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6531.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.6531.match.result.s2.o0": "분석 수행 결과, 디폴트 페이지 혹은 샘플 파일에 대한 접근이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.6531.match.solution.s0.o0": "웹 애플리케이션 운영에 필수적인 파일을 제외한 모든 불필요한 파일을 삭제해야 합니다.\n",
  "0.http.dast.sw.common.6531.match.solution.s0.o1": "*.tar, *.psd, *.fla, *.bak, *.test, *.txt, *.old, *.zip, *.날짜 등 불필요한 확장자를 검색하여 삭제하는 것이 좋습니다.\n",
  "0.http.dast.sw.common.6531.match.solution.s0.o2": "서비스 오픈 이후 추가 개발이나 유지 보수 후 불필요한 파일이 남아 있지 않은지 확인해야 합니다. 예시는 다음과 같습니다.\n",
  "0.http.dast.sw.common.6531.match.solution.s0.o3": "1. 초기 서비스 설치 시 디폴트로 설치되는 콘텐츠 및 서비스들을 비활성화\n",
  "0.http.dast.sw.common.6531.match.solution.s0.o4": "2. 디폴트 디렉터리 (/htdocs, /cig-bin) 등을 삭제 또는 변경\n",
  "0.http.dast.sw.common.6531.match.solution.s0.o5": "3. 디폴트 페이지 (Manual, Sample) 등을 삭제 또는 변경\n",
  "0.http.dast.sw.common.6531.match.solution.s0.o6": "개발 및 테스트 목적으로 필요한 파일의 경우 별도 테스트 프로젝트로 분리하여 관리하도록 합니다.",
  "0.http.dast.sw.common.6532.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.6532.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.6532.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.6532.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.6532.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.6532.match.result.s1.o0": "{0}",
  "0.http.dast.sw.common.6532.match.result.s1.o1": "분석 수행 결과, 해당 페이지에서 민감한 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.dast.sw.common.6532.match.solution.s0.o0": "소스코드 내 console.log() 등의 불필요한 로그 출력 함수를 모두 삭제해야 합니다.",
  "0.http.dast.sw.common.7029.get_method.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.7029.get_method.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.7029.get_method.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.7029.get_method.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.7029.get_method.result.s0.o0": "응답의 본문에서 다음과 같은 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.7029.get_method.result.s0.o1": "{0}",
  "0.http.dast.sw.common.7029.get_method.result.s0.o2": "해당 form 태그가 포함하는 input 태그 중, name 속성이 다음과 같은 input 태그가 존재합니다: {0} 따라서 해당 form 태그를 통하여 중요 정보 전송이 발생하는 것으로 간주합니다.\n",
  "0.http.dast.sw.common.7029.get_method.result.s0.o3": "해당 form 태그의 method 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통하여 발생한 요청이 GET 메소드를 사용함을 의미합니다.\n",
  "0.http.dast.sw.common.7029.get_method.result.s0.o4": "분석 수행 결과, 중요 정보를 전달할 때 GET 메소드를 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.7029.get_method.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.7029.no_method.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.7029.no_method.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.7029.no_method.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.7029.no_method.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.7029.no_method.result.s0.o0": "응답의 본문에서 다음과 같은 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.7029.no_method.result.s0.o1": "{0}",
  "0.http.dast.sw.common.7029.no_method.result.s0.o2": "해당 form 태그가 포함하는 input 태그 중, name 속성이 다음과 같은 input 태그가 존재합니다: {0} 따라서 해당 form 태그를 통하여 중요 정보 전송이 발생하는 것으로 간주합니다.\n",
  "0.http.dast.sw.common.7029.no_method.result.s0.o3": "해당 form 태그의 method 속성이 존재하지 않습니다. 이는 해당 form 태그를 통해 발생한 요청이 GET 메소드를 사용함을 의미합니다.\n",
  "0.http.dast.sw.common.7029.no_method.result.s0.o4": "분석 수행 결과, 중요 정보를 전달할 때 GET 메소드를 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.7029.no_method.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.7030.absolute_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.7030.absolute_action.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.7030.absolute_action.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.7030.absolute_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.7030.absolute_action.result.s0.o0": "응답의 본문에서 다음과 같은 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.7030.absolute_action.result.s0.o1": "{0}",
  "0.http.dast.sw.common.7030.absolute_action.result.s0.o2": "해당 form 태그가 포함하는 input 태그 중, name 속성이 다음과 같은 input 태그가 존재합니다: {0} 따라서 해당 form 태그를 통하여 중요 정보 전송이 발생하는 것으로 간주합니다.\n",
  "0.http.dast.sw.common.7030.absolute_action.result.s0.o3": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTP 프로토콜을 사용함을 의미합니다.\n",
  "0.http.dast.sw.common.7030.absolute_action.result.s0.o4": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.7030.absolute_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.7030.no_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.7030.no_action.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.7030.no_action.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.7030.no_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.7030.no_action.result.s0.o0": "응답의 본문에서 다음과 같은 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.7030.no_action.result.s0.o1": "{0}",
  "0.http.dast.sw.common.7030.no_action.result.s0.o2": "해당 form 태그가 포함하는 input 태그 중, name 속성이 다음과 같은 input 태그가 존재합니다: {0} 따라서 해당 form 태그를 통하여 중요 정보 전송이 발생하는 것으로 간주합니다.\n",
  "0.http.dast.sw.common.7030.no_action.result.s0.o3": "해당 form 태그의 action 속성 값이 존재하지 않습니다. 이는 해당 form 태그를 통하여 발생한 요청을 해당 form 태그가 존재하는 페이지의 URL에 해당하는 위치로 의미합니다. 따라서 해당 form 태그를 통하여 발생한 요청은 해당 form 태그가 존재하는 페이지의 URL과 동일한 프로토콜을 사용합니다.\n",
  "0.http.dast.sw.common.7030.no_action.result.s0.o4": "해당 form 태그가 존재하는 페이지의 URL은 다음과 같습니다.",
  "0.http.dast.sw.common.7030.no_action.result.s0.o5": "{0}",
  "0.http.dast.sw.common.7030.no_action.result.s0.o6": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.7030.no_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.7030.relative_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.7030.relative_action.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.7030.relative_action.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.7030.relative_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.7030.relative_action.result.s0.o0": "응답의 본문에서 다음과 같은 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.dast.sw.common.7030.relative_action.result.s0.o1": "{0}",
  "0.http.dast.sw.common.7030.relative_action.result.s0.o2": "해당 form 태그가 포함하는 input 태그 중, name 속성이 다음과 같은 input 태그가 존재합니다: {0} 따라서 해당 form 태그를 통하여 중요 정보 전송이 발생하는 것으로 간주합니다.\n",
  "0.http.dast.sw.common.7030.relative_action.result.s0.o3": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통하여 발생한 요청을 해당 form 태그가 존재하는 페이지의 URL에 대한 상대 경로 위치로 전송함을 의미합니다. 따라서 해당 form 태그를 통하여 발생한 요청은 해당 form 태그가 존재하는 페이지의 URL과 동일한 프로토콜을 사용합니다.\n",
  "0.http.dast.sw.common.7030.relative_action.result.s0.o4": "해당 form 태그가 존재하는 페이지의 URL은 다음과 같습니다.",
  "0.http.dast.sw.common.7030.relative_action.result.s0.o5": "{0}",
  "0.http.dast.sw.common.7030.relative_action.result.s0.o6": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.dast.sw.common.7030.relative_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다.",
  "0.http.dast.sw.common.7152.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.7152.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.7152.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.7152.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.7152.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.7152.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.7152.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.7152.match.result.s2.o0": "분석 수행 결과, 디렉터리 리스팅 페이지에 대한 접근이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.7152.match.solution.s0.o0": "웹 서비스 중 WEB, WAS의 경우 디렉토리 나열(Directory Listing)의 설정을 비활성화해야 합니다.\n",
  "0.http.dast.sw.common.7152.match.solution.s0.o1": "Apache: `httpd.conf` 파일 (Ubuntu 등 Debian 계열은 `apache2.conf`) 내의 `Options` 지시자에서 `Indexes`라는 옵션을 제거하거나 `-Indexes` 옵션을 삽입\n",
  "0.http.dast.sw.common.7152.match.solution.s0.o2": "IIS 6/7/8/10: 인터넷 정보 서비스(IIS) 관리 - [해당 웹사이트] - [등록정보] - [홈 디렉터리] 탭에서 [디렉터리 검색] 해제\n",
  "0.http.dast.sw.common.7152.match.solution.s0.o3": "JBoss, Apache Tomcat: web.xml 내 listings 값을 false로 설정\n",
  "0.http.dast.sw.common.7152.match.solution.s0.o4": "JRun: default-web.xml 내 browseDirs 속성을 false로 설정\n",
  "0.http.dast.sw.common.7152.match.solution.s0.o5": "WebLogic: weblogic.xml 내 weblogic-wep-app 요소의 index-directory-enabled 속성을 false로 설정\n",
  "0.http.dast.sw.common.7152.match.solution.s0.o6": "WebtoB: http.m 내 Options 항목을 삭제하거나, Options를 `-Index`로 설정",
  "0.http.dast.sw.common.7153.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.7153.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.7153.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.7153.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.7153.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.",
  "0.http.dast.sw.common.7153.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.7153.match.result.s1.o1": "{0}",
  "0.http.dast.sw.common.7153.match.result.s2.o0": "분석 수행 결과, 디렉터리 리스팅 페이지에 대한 접근이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.7153.match.solution.s0.o0": "웹 서비스 중 WEB, WAS의 경우 디렉토리 나열(Directory Listing)의 설정을 비활성화해야 합니다.\n",
  "0.http.dast.sw.common.7153.match.solution.s0.o1": "Apache: `httpd.conf` 파일 (Ubuntu 등 Debian 계열은 apache2.conf) 내의 `Options` 지시자에서 `Indexes`라는 옵션을 제거하거나 `-Indexes` 옵션을 삽입\n",
  "0.http.dast.sw.common.7153.match.solution.s0.o2": "IIS 6/7/8/10: 인터넷 정보 서비스(IIS) 관리 - [해당 웹사이트] - [등록정보] - [홈 디렉터리] 탭에서 [디렉터리 검색] 해제\n",
  "0.http.dast.sw.common.7153.match.solution.s0.o3": "JBoss, Apache Tomcat: web.xml 내 listings 값을 false로 설정\n",
  "0.http.dast.sw.common.7153.match.solution.s0.o4": "JRun: default-web.xml 내 browseDirs 속성을 false로 설정\n",
  "0.http.dast.sw.common.7153.match.solution.s0.o5": "WebLogic: weblogic.xml 내 weblogic-wep-app 요소의 index-directory-enabled 속성을 false로 설정\n",
  "0.http.dast.sw.common.7153.match.solution.s0.o6": "WebtoB: http.m 내 Options 항목을 삭제하거나, Options를 `-Index`로 설정",
  "0.http.dast.sw.common.7154.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.dast.sw.common.7154.match.attack.s0.o1": "{0}",
  "0.http.dast.sw.common.7154.match.attack.s0.o2": "{0}",
  "0.http.dast.sw.common.7154.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.dast.sw.common.7154.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.dast.sw.common.7154.match.result.s0.o1": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.dast.sw.common.7154.match.result.s0.o2": "{0}",
  "0.http.dast.sw.common.7154.match.result.s0.o3": "위의 분석 결과, 백업 및 임시 파일을 출력하는 페이지에 대한 접근이 가능함을 확인했습니다.",
  "0.http.dast.sw.common.7154.match.solution.s0.o0": "웹 애플리케이션 운영에 필수적인 파일을 제외한 모든 불필요한 파일을 삭제해야 합니다.\n",
  "0.http.dast.sw.common.7154.match.solution.s0.o1": "tar, psd, fla, bak, test, txt, old, zip, 날짜 등 불필요한 확장자를 검색 후 삭제하는 것이 좋습니다.\n",
  "0.http.dast.sw.common.7154.match.solution.s0.o2": "추가 개발이나 유지 보수로 인해 서비스 오픈 이후 불필요한 파일이 남아 있지 않은지 확인하도록 합니다. 예를 들어, 초기에 서비스를 설치할 때 디폴트로 설치되는 Contents 및 서비스를 비활성화 처리하고, 디폴트 디렉터리(/htdocs, /cig-bin 등)를 삭제 또는 변경하고, 디폴트 페이지(Manual, Sample 등)를 삭제 또는 변경하는 등의 방법이 포함됩니다.\n",
  "0.http.dast.sw.common.7154.match.solution.s0.o3": "개발 및 테스트 목적으로 필요한 파일의 경우 별도 테스트 프로젝트로 분리하여 관리하도록 합니다.",
  "0.http.dast.sw.common.7299.match.attack.s0.o0": "LDAP 삽입이 발생하는지 확인하기 위해, {0} 매개변수에 유효하지 않은 LDAP 쿼리 문자열을 포함한 HTTP 요청을 전송했습니다.",
  "0.http.dast.sw.common.7299.match.attack.s0.o1": "전송한 요청은 다음과 같습니다.",
  "0.http.dast.sw.common.7299.match.attack.s1.o0": "{0}",
  "0.http.dast.sw.common.7299.match.result.s0.o0": "조작된 HTTP 요청에 대한 응답 결과는 다음과 같습니다.",
  "0.http.dast.sw.common.7299.match.result.s1.o0": "{0}",
  "0.http.dast.sw.common.7299.match.result.s2.o0": "위 HTTP 응답 본문에서 LDAP 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "0.http.dast.sw.common.7299.match.result.s2.o1": "서버가 사용자 입력값을 적절히 검증하지 않아 공격 문자열이 LDAP 쿼리에 포함되었고, 이로 인해 오류 메시지가 발생한 것으로 보입니다.",
  "0.http.dast.sw.common.7299.match.solution.s0.o0": "LDAP 삽입을 방지하기 위해 Prepared Statement를 사용하여 입력값을 쿼리에 직접 포함하지 않도록 해야 합니다.",
  "0.http.dast.sw.common.7299.match.solution.s0.o1": "또한, 특수 문자인 `, ', \", ), (, #, *, &, +, =, <, >, |, ; 등의 문자를 필터링하여 입력값이 LDAP 쿼리에 영향을 주지 않도록 합니다.",
  "0.http.dast.sw.common.7299.match.solution.s1.o0": "LDAP 삽입으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용하여 서버 구성 정보나 LDAP 쿼리 구조를 파악할 수 있습니다.",
  "0.http.dast.sw.common.7299.match.solution.s1.o1": "시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환하여 정보 유출을 방지해야 합니다.",
  "0.http.dast.sw.common.7300.match.attack.s0.o0": "서버 측 템플릿 인젝션 취약점을 확인하기 위해, {0} 매개변수에 템플릿 엔진에서 사용되는 공격 문자열을 포함한 HTTP 요청을 전송했습니다.",
  "0.http.dast.sw.common.7300.match.attack.s1.o0": "해당 요청은 다음과 같습니다.",
  "0.http.dast.sw.common.7300.match.attack.s2.o0": "{0}",
  "0.http.dast.sw.common.7300.match.result.s0.o0": "조작된 HTTP 요청에 대한 응답 결과는 다음과 같습니다.",
  "0.http.dast.sw.common.7300.match.result.s1.o0": "{0}",
  "0.http.dast.sw.common.7300.match.result.s2.o0": "위 HTTP 응답 본문에서 {0} 문자열이 발견되었습니다.",
  "0.http.dast.sw.common.7300.match.result.s2.o1": "이는 사용자의 입력이 적절하게 필터링 되지 않아, 공격 문자열이 서버 측 템플릿 엔진에 삽입되어 동작했음을 의미합니다.",
  "0.http.dast.sw.common.7300.match.solution.s0.o0": "서버 측 템플릿 인젝션 취약점을 대응하기 위해서는 Sanitization과 입력 값 검증을 다중으로 적용하는 것이 가장 좋은 방법입니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s1.o0": "\n1. Sanitization (코드 안정성 검사)\n",
  "0.http.dast.sw.common.7300.match.solution.s1.o1": "Sanitization은 사용자 입력으로부터 전달받은 파라미터 값이 템플릿 구문으로 해석되지 않도록 처리하는 방안입니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s1.o2": "이를 위해 템플릿 파일을 미리 정의된 상태로 유지하고, 모든 사용자 입력은 템플릿에서 제공하는 안전한 변수로 처리해야 합니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s1.o3": "다음은 자주 사용되는 템플릿 엔진 별 Sanitization 예시입니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s2.o0": "\nPython Jinja\n",
  "0.http.dast.sw.common.7300.match.solution.s2.o1": "render_template() 함수를 사용해야 합니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s2.o2": "- 이는 사용자 입력이 템플릿 구문으로 해석되지 않고, 문자열로 처리됩니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s3.o0": "{0}",
  "0.http.dast.sw.common.7300.match.solution.s4.o0": "\nSpring Thymeleaf\n",
  "0.http.dast.sw.common.7300.match.solution.s4.o1": "th:utext 대신 th:text 코드를 사용해야 합니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s4.o2": "- th:text는 자동으로 HTML 특수 문자를 이스케이프 처리합니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s4.o3": "- th:utext는 HTML 이스케이프를 비활성화 시키는 코드입니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s5.o0": "{0}",
  "0.http.dast.sw.common.7300.match.solution.s6.o0": "이뿐만 아니라, 컨트롤러에서 반환되는 return 값에 사용자 입력 값을 포함해서는 안 됩니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s6.o1": "만약, 사용자 입력 값을 포함하여 반환해야 한다면 @ResponseBody 어노테이션을 사용하여 Spring 프레임워크가 사용자 입력 값을 뷰 이름으로 해석하지 않고 단순 문자열로 해석하는 방법이 있습니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s7.o0": "\n2. 입력 값 검증\n",
  "0.http.dast.sw.common.7300.match.solution.s7.o1": "사용자 입력에서 서버 측 템플릿 인젝션 공격 구문에 주로 사용되는 {0} 등의 핵심 특수 문자를 입력받지 못하도록 필터링해야 합니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s7.o2": "예를 들어, {{7*7}}를 입력했다면, 49가 아닌 특수 문자가 필터링 되어 77이 되어야 합니다.\n",
  "0.http.dast.sw.common.7300.match.solution.s8.o0": "\n템플릿 엔진 별 사용하는 언어 및 특수문자",
  "0.http.dast.sw.common.7300.match.solution.s9.o0": "{0}",
  "0.http.dast.sw.common.7301.match.attack.s0.o0": "부적절한 CSP 설정값을 사용하고 있는지 확인하기 위해, 분석 대상 URL에 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.dast.sw.common.7301.match.attack.s1.o0": "{0}",
  "0.http.dast.sw.common.7301.match.result.s0.o0": "HTTP 응답 헤더에서 다음과 같은 부적절한 CSP 설정값을 발견했습니다.",
  "0.http.dast.sw.common.7301.match.result.s0.o1": "해당 설정값을 사용하게 되면, 공격자는 XSS, 데이터 인젝션, 클릭재킹 등의 공격을 보다 쉽게 수행할 수 있습니다.",
  "0.http.dast.sw.common.7301.match.result.s0.o2": "이러한 문제를 방지하기 위해 안전한 CSP 설정값으로 변경해야 합니다.",
  "0.http.dast.sw.common.7301.match.result.s1.o0": "{0}",
  "0.http.dast.sw.common.7301.match.solution.s0.o0": "부적절한 CSP 설정값을 제거하고, 안전한 CSP 설정값으로 변경해야 합니다.",
  "0.http.dast.sw.common.7301.match.solution.s0.o1": "안전한 CSP 설정값의 예시는 다음과 같습니다.",
  "0.http.dast.sw.common.7301.match.solution.s1.o0": "'none' 값은 모든 리소스를 로드하지 못하도록 차단하는 설정입니다.",
  "0.http.dast.sw.common.7301.match.solution.s1.o1": "예를 들어, object-src 'none'과 같이 설정하면 객체 리소스 로드를 모두 차단할 수 있습니다.",
  "0.http.dast.sw.common.7301.match.solution.s2.o0": "'self' 값은 동일 출처에서 제공되는 리소스만 허용하는 설정입니다.",
  "0.http.dast.sw.common.7301.match.solution.s2.o1": "예를 들어, script-src 'self'와 같이 설정하면 동일 출처에서 제공되는 스크립트만 실행할 수 있습니다.",
  "0.http.dast.sw.common.7301.match.solution.s2.o2": "다만, 웹 애플리케이션이 JSONP(JSON with Padding)를 사용하는 경우에는 주의가 필요합니다.",
  "0.http.dast.sw.common.7301.match.solution.s2.o3": "허용된 도메인에 취약한 JSONP 콜백 메서드가 존재할 경우, 공격자가 이를 이용해 악성 스크립트를 주입할 수 있습니다.",
  "0.http.dast.sw.common.7301.match.solution.s2.o4": "이를 방지하기 위해 CORS(Cross-Origin Resource Sharing) 정책을 함께 적용하여 신뢰할 수 있는 출처에서만 데이터를 요청하도록 관리해야 합니다.",
  "0.http.dast.sw.common.7301.match.solution.s3.o0": "'nonce' 값은 고유하게 생성된 nonce 값을 사용하여 인라인 스크립트나 스타일을 안전하게 허용하는 설정입니다.",
  "0.http.dast.sw.common.7301.match.solution.s3.o1": "예를 들어, script-src 'nonce-랜덤값'과 같이 설정하면, 해당 nonce 값을 가진 스크립트만 실행할 수 있습니다.",
  "0.http.dast.sw.common.7301.match.solution.s4.o0": "'sha256-hash' 값은 해시값(sha256, sha384, sha512 등)을 사용하여 인라인 스크립트나 스타일을 안전하게 허용하는 설정입니다.",
  "0.http.dast.sw.common.7301.match.solution.s4.o1": "예를 들어, script-src 'sha256-해시값'과 같이 설정하면, 인라인 스크립트나 스타일의 해시값이 일치하는 경우에만 리소스가 실행됩니다.",
  "0.http.dast.sw.common.7302.conditional.inproper": "HTTP 응답의 X-Frame-Options 헤더의 값이 잘못되었습니다.",
  "0.http.dast.sw.common.7302.conditional.no_header": "HTTP 응답에 X-Frame-Options 헤더가 존재하지 않습니다.",
  "0.http.dast.sw.common.7302.invalid.attack.s0.o0": "누락된 X 프레임 옵션 취약점은 X-Frame-Options 헤더가 HTTP 응답에 포함되지 않는 취약점입니다.",
  "0.http.dast.sw.common.7302.invalid.attack.s1.o0": "X-Frame-Options 헤더는 브라우저가 <frame>, <iframe>, 또는 <object> 태그 안의 페이지를 브라우저가 랜더링할지 여부를 설정하는 HTTP 응답의 헤더입니다.",
  "0.http.dast.sw.common.7302.invalid.attack.s1.o1": "X-Frame-Options 헤더를 통해 클릭잭킹을 막을 수 있습니다.",
  "0.http.dast.sw.common.7302.invalid.attack.s2.o0": "클릭잭킹이란 사용자의 인식 없이 실행될 수 있는 임베디드 코드나 스크립트의 형태를 갖추어, 사용자가 자신이 클릭하고 있다고 인지하는 것과 다른 것을 클릭하게 속이는 공격방식입니다.",
  "0.http.dast.sw.common.7302.invalid.attack.s2.o1": "이를 통해 공격자는 사용자의 정보를 유출하거나 사용자의 컴퓨터를 제어할 수 있습니다.",
  "0.http.dast.sw.common.7302.invalid.result.s0.o0": "HTTP 응답의 헤더는 다음과 같습니다.",
  "0.http.dast.sw.common.7302.invalid.result.s1.o0": "{0}",
  "0.http.dast.sw.common.7302.invalid.solution.s0.o0": "웹 애플리케이션의 서버가 HTTP 응답에 올바른 값을 가진 X-Frame-Options 헤더를 넣어야 합니다.",
  "0.http.dast.sw.common.7302.invalid.solution.s0.o1": "X-Frame-Options 헤더의 올바른 값은 다음과 같습니다.",
  "0.http.dast.sw.common.7302.invalid.solution.s1.o0": "{0}",
  "0.http.dast.sw.common.7303.missing.attack.s0.o0": "누락된 Content-Security-Policy(CSP) 헤더 취약점은 HTTP 응답에 Content-Security-Policy 헤더가 없는 취약점입니다.",
  "0.http.dast.sw.common.7303.missing.attack.s1.o0": "이를 검출하기 위해서 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.dast.sw.common.7303.missing.attack.s2.o0": "{0}",
  "0.http.dast.sw.common.7303.missing.attack.s2.o1": "{0}",
  "0.http.dast.sw.common.7303.missing.result.s0.o0": "HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.dast.sw.common.7303.missing.result.s1.o0": "{0}",
  "0.http.dast.sw.common.7303.missing.result.s2.o0": "위의 HTTP 응답 헤더에 Content-Security-Policy 헤더나 Content-Security-Policy-Report-Only 헤더가 없음을 확인할 수 있습니다.",
  "0.http.dast.sw.common.7303.missing.result.s2.o1": "Content-Security-Policy 헤더가 없기 때문에 신뢰할 수 없는 도메인의 리소스가 브라우저에서 실행되거나 렌더링 되는 것을 막을 수 없습니다.",
  "0.http.dast.sw.common.7303.missing.solution.s0.o0": "누락된 Content-Security-Policy 헤더 취약점을 해결하기 위해서는 웹 애플리케이션 서버에서 Content-Security-Policy 헤더를 추가해야 합니다.",
  "0.http.dast.sw.common.7303.missing.solution.s0.o1": "모든 웹 사이트 내의 콘텐츠를 서브 도메인을 제외한 같은 도메인에서만 제공 받으려면 다음과 같이 사용합니다.",
  "0.http.dast.sw.common.7303.missing.solution.s1.o0": "{0}",
  "0.http.dast.sw.common.7303.missing.solution.s2.o0": "서브 도메인을 포함시키려면 다음과 같이 사용합니다.",
  "0.http.dast.sw.common.7303.missing.solution.s3.o0": "{0}",
  "0.http.dast.sw.common.7303.missing.solution.s4.o0": "이외에도 신뢰할 수 있는 도메인의 리소스를 특정 웹 페이지 요소에서만 사용하도록 설정할 수도 있습니다.",
  "0.http.dast.sw.common.7303.missing.solution.s5.o0": "또한, 신뢰할 수 없는 도메인의 리소스가 사용되지는 것을 막지 않고 사용되었다는 정보만을 제공받으려면 다음과 같이 사용합니다.",
  "0.http.dast.sw.common.7303.missing.solution.s6.o0": "{0}",
  "0.http.default_page_disclosure.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.default_page_disclosure.match.attack.s0.o1": "{0}",
  "0.http.default_page_disclosure.match.attack.s0.o2": "{0}",
  "0.http.default_page_disclosure.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.",
  "0.http.default_page_disclosure.match.result.s0.o1": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.default_page_disclosure.match.result.s0.o2": "{0}",
  "0.http.default_page_disclosure.match.solution.s0.o0": "디폴트 페이지, 샘플 페이지 등의 외부 노출을 방지하기 위해 서버 설정을 수정합니다. 특히, 불필요한 파일은 삭제하거나 외부에서 접근할 수 없도록 설정합니다.",
  "0.http.deprecated_components_in_html5.attr.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.deprecated_components_in_html5.attr.attack.s0.o1": "{0}",
  "0.http.deprecated_components_in_html5.attr.attack.s0.o2": "{0}",
  "0.http.deprecated_components_in_html5.attr.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.deprecated_components_in_html5.attr.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.deprecated_components_in_html5.attr.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.deprecated_components_in_html5.attr.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.http.deprecated_components_in_html5.attr.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.deprecated_components_in_html5.attr.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.deprecated_components_in_html5.attr.result.s1.o1": "{0}",
  "0.http.deprecated_components_in_html5.attr.result.s2.o0": "해당 요소의 {0} 속성이 존재합니다. 해당 속성은 HTML5에서 더 이상 사용되지 않는 속성입니다.",
  "0.http.deprecated_components_in_html5.attr.solution.s0.o0": "{0} 요소의 {1} 속성을 제거하세요.",
  "0.http.deprecated_components_in_html5.tag.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.deprecated_components_in_html5.tag.attack.s0.o1": "{0}",
  "0.http.deprecated_components_in_html5.tag.attack.s0.o2": "{0}",
  "0.http.deprecated_components_in_html5.tag.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.deprecated_components_in_html5.tag.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.deprecated_components_in_html5.tag.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.deprecated_components_in_html5.tag.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.deprecated_components_in_html5.tag.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.deprecated_components_in_html5.tag.result.s1.o1": "{0}",
  "0.http.deprecated_components_in_html5.tag.result.s2.o0": "해당 요소는 HTML5에서 더 이상 사용되지 않는 요소입니다.",
  "0.http.deprecated_components_in_html5.tag.solution.s0.o0": "{0} 요소를 제거하거나 다른 요소로 대체하세요.",
  "0.http.directory_browsing.pattern.attack.s0.o0": "디렉토리 목록화는 웹 애플리케이션 서버의 잘못된 구성에 의하여 서버의 디렉토리 내부에 있는 파일들이나 다른 디렉토리들이 노출되는 취약점을 말합니다.",
  "0.http.directory_browsing.pattern.attack.s0.o1": "공격자는 디렉토리 목록화를 통해 웹 애플리케이션의 리소스를 분석할 수 있고, 임시 파일이나 덤프 파일 등의 중요한 정보를 가지고 있는 파일들에 접근할 수 있습니다.",
  "0.http.directory_browsing.pattern.attack.s0.o2": "이러한 디렉토리 목록화 취약점을 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.directory_browsing.pattern.attack.s1.o0": "{0}",
  "0.http.directory_browsing.pattern.attack.s1.o1": "{0}",
  "0.http.directory_browsing.pattern.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.directory_browsing.pattern.result.s1.o0": "{0}",
  "0.http.directory_browsing.pattern.result.s2.o0": "HTTP 응답의 바디에 디렉토리 목록화를 나타내는 {0}이 포함되었음을 확인할 수 있습니다.",
  "0.http.directory_browsing.pattern.solution.s0.o0": "디렉토리 목록화는 그 자체만으로 취약점이라기보다 이를 통해 유출되는 다른 정보들로 인해 취약점이 됩니다.",
  "0.http.directory_browsing.pattern.solution.s1.o0": "이러한 디렉토리 목록화를 해결하기 위해서는 웹 애플리케이션 서버의 디렉토리 내부에 중요한 정보를 두지 말아야 합니다.",
  "0.http.directory_browsing.pattern.solution.s2.o0": "또는, 웹 애플리케이션 서버의 구성 변경을 통해 웹 애플리케이션 서버 아래에 있는 모든 경로에 대해서 디렉토리 목록화를 막아야 합니다.",
  "0.http.directory_indexing.index.attack.s0.o0": "아래 페이지에서 디렉토리 인덱싱 페이지를 출력하는지 확인했습니다.",
  "0.http.directory_indexing.index.attack.s1.o0": "{0}",
  "0.http.directory_indexing.index.result.s0.o0": "URL 페이지에서 디렉토리 인덱싱 페이지가 감지되었습니다.",
  "0.http.directory_indexing.index.result.s1.o0": "인덱스 파일을 생성하거나 서버 설정 파일에서 디렉토리 인덱싱 옵션을 비활성하여 해결할 수 있습니다.",
  "0.http.directory_indexing.index.solution.s0.o0": "인덱스 파일이 있는 경우 디렉토리 인덱싱 페이지 대신 인덱스 파일을 사용자에게 표시합니다.",
  "0.http.directory_indexing.index.solution.s0.o1": "일반적으로 index.html, home.html, default.asp을 인덱스 파일로 사용합니다.",
  "0.http.directory_indexing.index.solution.s0.o2": "그리고 특별한 경우가 아니라면 서버 설정 파일에서 디렉토리 인덱싱 옵션을 비활성하는 것이 안전합니다.",
  "0.http.directory_listing.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.directory_listing.match.attack.s0.o1": "{0}",
  "0.http.directory_listing.match.attack.s0.o2": "{0}",
  "0.http.directory_listing.match.result.s0.o0": "응답의 상태 코드가 {0}입니다. ",
  "0.http.directory_listing.match.result.s0.o1": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.directory_listing.match.result.s0.o2": "{0}",
  "0.http.directory_listing.match.solution.s0.o0": "웹 서버에서 디렉터리 리스팅을 비활성화하고, 서버에 적절한 접근 제어를 설정해 중요한 파일이 외부에 노출되지 않도록 보호합니다. 불필요한 백업 및 임시 파일을 삭제하고, 버전 관리 시스템(CVS, SVN 등)의 디렉터리는 외부 접근이 불가능하도록 설정해 내부 정보 유출을 방지합니다.",
  "0.http.download_path_disclosure.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.download_path_disclosure.match.attack.s0.o1": "{0}",
  "0.http.download_path_disclosure.match.attack.s0.o2": "{0}",
  "0.http.download_path_disclosure.match.result.s0.o0": "응답 본문에 존재하는 {0} 요소를 발견했으며, 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.download_path_disclosure.match.result.s0.o1": "{0}",
  "0.http.download_path_disclosure.match.result.s0.o2": "해당 요소의 경로가 조작 가능하다는 점을 확인했습니다.",
  "0.http.download_path_disclosure.match.result.s0.o3": "{0}",
  "0.http.download_path_disclosure.match.solution.s0.o0": "파일 경로와 이름 등의 정보는 클라이언트 측에 노출되지 않도록 해야 하며, 서버에서 파일 요청을 처리할 때 경로 검증을 강화하여 사용자 입력을 통해 파일 경로가 조작되지 않도록 방지해야 합니다.",
  "0.http.driver_license_number_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.driver_license_number_disclosure.match.attack.s0.o1": "{0}",
  "0.http.driver_license_number_disclosure.match.attack.s0.o2": "{0}",
  "0.http.driver_license_number_disclosure.match.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.driver_license_number_disclosure.match.result.s0.o1": "{0}",
  "0.http.driver_license_number_disclosure.match.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.driver_license_number_disclosure.match.result.s1.o1": "{0}",
  "0.http.driver_license_number_disclosure.match.result.s1.o2": "해당 문자열은 운전면허번호에 해당합니다.",
  "0.http.driver_license_number_disclosure.match.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 운전면허번호를 발견했습니다.",
  "0.http.driver_license_number_disclosure.match.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 운전면허번호를 탈취할 수 있습니다.",
  "0.http.driver_license_number_disclosure.match.solution.s0.o0": "HTTP 응답 본문에 운전면허번호를 포함하지 않아야 합니다.",
  "0.http.driver_license_number_disclosure.match.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 운전면허번호 노출 여부를 점검해야 합니다.",
  "0.http.email_address_disclosure.match.attack.s0.o0": "이메일 주소 노출 취약점은 이메일 주소가 HTTP 응답 바디에 노출되는 취약점입니다.",
  "0.http.email_address_disclosure.match.attack.s1.o0": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.email_address_disclosure.match.attack.s2.o0": "{0}",
  "0.http.email_address_disclosure.match.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.email_address_disclosure.match.result.s1.o0": "{0}",
  "0.http.email_address_disclosure.match.result.s2.o0": "위 HTTP 응답에 이메일 주소로 추정되는 {0} 문자열이 포함되어 있음을 확인할 수 있습니다.",
  "0.http.email_address_disclosure.match.result.s3.o0": "{0} 이메일 주소가 웹 애플리케이션의 계정이나 기업 웹 사이트의 권한과 관련되어 있다면 인증 우회 등의 공격에 사용될 수 있습니다.",
  "0.http.email_address_disclosure.match.result.s3.o1": "또한, 해당 이메일 주소로 보내지는 스팸 메일이 증가할 수 있습니다.",
  "0.http.email_address_disclosure.match.solution.s0.o0": "이메일 주소 노출 취약점을 해결하기 위해서는 이메일 주소가 HTTP 응답에 노출되지 않도록 막아야 합니다.",
  "0.http.email_address_disclosure.match.solution.s1.o0": "{0} 이메일 주소에 보안 이슈가 있다면 노출되지 않도록 막아야 합니다.",
  "0.http.external_redirect.location.attack.s0.o0": "미검증 리다이렉션은 웹 애플리케이션이 공격자가 입력한 신뢰할 수 없는 링크로 연결되는 취약점입니다.",
  "0.http.external_redirect.location.attack.s0.o1": "공격자는 미검증 리다이렉션을 통해 사용자가 악의적인 사이트에 접속하도록 만들어 피싱 사기를 하거나 개인정보를 탈취합니다.",
  "0.http.external_redirect.location.attack.s0.o2": "미검증 리다이렉션은 특히 기존 사이트와 같은 형태의 악의적인 링크로 연결하는 방법 등을 통해 사용자가 기존 사이트로 착각하도록 만들어 피싱 사기를 당할 확률이 높입니다.",
  "0.http.external_redirect.location.attack.s0.o3": "미검증 리다이렉션 취약점을 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.external_redirect.location.attack.s1.o0": "{0}",
  "0.http.external_redirect.location.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.external_redirect.location.result.s1.o0": "{0}",
  "0.http.external_redirect.location.result.s2.o0": "HTTP 응답의 {0}에 미검증 리다이렉션 취약점이 발견되었습니다.",
  "0.http.external_redirect.location.solution.s0.o0": "미검증 리다이렉션을 피하는 방법은 리다이렉션을 못하게 막는 것입니다.",
  "0.http.external_redirect.location.solution.s0.o1": "리다이렉션을 사용해야 한다면 웹 애플리케이션 코드에 리다이렉션할 링크를 상수로 정의하거나, 사용자가 입력한 값이 리다이렉션에 사용되지 않도록 합니다.",
  "0.http.external_redirect.location.solution.s0.o2": "사용자가 입력한 값이 리다이렉션에 사용되어야 한다면, 사용자의 권한을 확인하고 입력값을 통한 리다이렉션이 유효한지 검사해야 합니다.",
  "0.http.falsified_http_method.same.attack.s0.o0": "HTTP 위조 취약점은 임의의 메소드 HTTP 요청에 대한 HTTP 응답이 일반적인 메소드 HTTP 요청의 HTTP 응답과 같은 취약점입니다.",
  "0.http.falsified_http_method.same.attack.s1.o0": "HTTP 위조 취약점을 검출하기 위해 일반 메소드 {0} HTTP 요청에서 HTTP 메소드만을 임의의 {1} 메소드로 변경한 HTTP 요청은 다음과 같습니다.",
  "0.http.falsified_http_method.same.attack.s2.o0": "{0}",
  "0.http.falsified_http_method.same.attack.s2.o1": "{0}",
  "0.http.falsified_http_method.same.result.s0.o0": "기존의 일반 메소드인 {0} 메소드 HTTP 요청에 대한 HTTP 응답의 헤더는 다음과 같습니다.",
  "0.http.falsified_http_method.same.result.s1.o0": "{0}",
  "0.http.falsified_http_method.same.result.s2.o0": "임의의 메소드인 {0} 메소드로 변경하여 보낸 HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.falsified_http_method.same.result.s3.o0": "{0}",
  "0.http.falsified_http_method.same.result.s4.o0": "위 두 HTTP 응답 헤더의 헤더 개수와 종류, 상태 코드, 콘텐츠 길이 등이 같습니다.",
  "0.http.falsified_http_method.same.result.s5.o0": "이를 통해, 임의의 메소드 HTTP 요청이 일반 메소드인 {0} 메소드 HTTP 요청과 똑같이 처리됨을 유추할 수 있습니다.",
  "0.http.falsified_http_method.same.solution.s0.o0": "이러한 HTTP 위조 취약점을 해결하기 위해서는 임의의 메소드 HTTP 요청을 허용하지 말아야 합니다.",
  "0.http.falsified_http_method.same.solution.s1.o0": "허용해야 하는 경우에는 이러한 임의의 메소드 HTTP 요청이 일반적인 메소드인 {0} 메소드 HTTP 요청과 같은 보안 설정 및 권한 설정이 적용되도록 만들어야 합니다.",
  "0.http.format_string.execute.attack.s0.o0": "형식 문자열 취약점은 공격자가 형식 문자열 값을 입력하여 웹 애플리케이션에 부적절한 코드 실행, 스택 노출, 오작동 등의 문제를 일으키는 취약점입니다.",
  "0.http.format_string.execute.attack.s0.o1": "대표적인 형식 문자열은 다음과 같습니다.",
  "0.http.format_string.execute.attack.s1.o0": "{0}",
  "0.http.format_string.execute.attack.s2.o0": "형식 문자열을 검출하기 위한 HTTP 요청은 다음과 같습니다.",
  "0.http.format_string.execute.attack.s3.o0": "{0}",
  "0.http.format_string.execute.attack.s3.o1": "{0}",
  "0.http.format_string.execute.result.s0.o0": "형식 문자열 취약점을 검출하기 위해 보낸 HTTP 요청으로 인하여 형식 문자열이 실행되었습니다.",
  "0.http.format_string.execute.result.s0.o1": "HTTP 응답 메시지 헤더는 다음과 같습니다.",
  "0.http.format_string.execute.result.s1.o0": "{0}",
  "0.http.format_string.execute.solution.s0.o0": "형식 문자열 취약점을 막기 위해서는 입력값 검증을 통해 형식 문자열이 입력되지 않도록 하거나 이스케이프 처리하여 사용해야 합니다.",
  "0.http.format_string.execute.solution.s0.o1": "또한, 다음과 같이 형식 문자열을 사용하는 함수를 사용할 때 유의해야 합니다.",
  "0.http.format_string.execute.solution.s1.o0": "C / C++ :",
  "0.http.format_string.execute.solution.s2.o0": "{0}",
  "0.http.format_string.execute.solution.s3.o0": "Java :",
  "0.http.format_string.execute.solution.s4.o0": "{0}",
  "0.http.format_string.execute.solution.s5.o0": "C# :",
  "0.http.format_string.execute.solution.s6.o0": "{0}",
  "0.http.format_string.server.attack.s0.o0": "형식 문자열 취약점은 공격자가 형식 문자열 값을 입력하여 웹 애플리케이션에 부적절한 코드 실행, 스택 노출, 오작동 등의 문제를 일으키는 취약점입니다.",
  "0.http.format_string.server.attack.s0.o1": "대표적인 형식 문자열은 다음과 같습니다.",
  "0.http.format_string.server.attack.s1.o0": "{0}",
  "0.http.format_string.server.attack.s2.o0": "형식 문자열을 검출하기 위한 HTTP 요청은 다음과 같습니다.",
  "0.http.format_string.server.attack.s3.o0": "{0}",
  "0.http.format_string.server.attack.s3.o1": "{0}",
  "0.http.format_string.server.result.s0.o0": "형식 문자열 취약점을 검출하기 위해 보낸 HTTP 요청으로 인하여 형식 문자열이 실행되었습니다.",
  "0.http.format_string.server.result.s0.o1": "HTTP 응답 메시지 헤더는 다음과 같습니다.",
  "0.http.format_string.server.result.s1.o0": "{0}",
  "0.http.format_string.server.solution.s0.o0": "형식 문자열 취약점을 막기 위해서는 입력값 검증을 통해 형식 문자열이 입력되지 않도록 하거나 이스케이프 처리하여 사용해야 합니다.",
  "0.http.format_string.server.solution.s0.o1": "또한, 다음과 같이 형식 문자열을 사용하는 함수를 사용할 때 유의해야 합니다.",
  "0.http.format_string.server.solution.s1.o0": "C / C++ :",
  "0.http.format_string.server.solution.s2.o0": "{0}",
  "0.http.format_string.server.solution.s3.o0": "Java :",
  "0.http.format_string.server.solution.s4.o0": "{0}",
  "0.http.format_string.server.solution.s5.o0": "C# :",
  "0.http.format_string.server.solution.s6.o0": "{0}",
  "0.http.hardcoded_api_key_disclosure_in_comment.match.attack.s0.o0": "웹 페이지 내 하드코드된 API 키의 노출 여부를 확인하기 위해, 수집된 URL에 대해 HTTP 요청을 전송했습니다.",
  "0.http.hardcoded_api_key_disclosure_in_comment.match.attack.s1.o0": "{0}",
  "0.http.hardcoded_api_key_disclosure_in_comment.match.result.s0.o0": "HTTP 요청에 대한 응답에서 하드코드된 API 키가 발견되었습니다.",
  "0.http.hardcoded_api_key_disclosure_in_comment.match.result.s1.o0": "{0}",
  "0.http.hardcoded_api_key_disclosure_in_comment.match.solution.s0.o0": "API 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "0.http.hardcoded_api_key_disclosure_in_script.match.attack.s0.o0": "웹 페이지 내 하드코드된 API 키의 노출 여부를 확인하기 위해, 수집된 URL에 대해 HTTP 요청을 전송했습니다.",
  "0.http.hardcoded_api_key_disclosure_in_script.match.attack.s1.o0": "{0}",
  "0.http.hardcoded_api_key_disclosure_in_script.match.result.s0.o0": "HTTP 요청에 대한 응답에서 하드코딩된 API 키가 발견되었습니다.",
  "0.http.hardcoded_api_key_disclosure_in_script.match.result.s1.o0": "{0}",
  "0.http.hardcoded_api_key_disclosure_in_script.match.solution.s0.o0": "API 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "0.http.hardcoded_email_disclosure_in_comment.match.attack.s0.o0": "웹 페이지 내 하드코드된 이메일 주소의 노출 여부를 확인하기 위해, 수집된 URL에 대해 HTTP 요청을 전송했습니다.",
  "0.http.hardcoded_email_disclosure_in_comment.match.attack.s1.o0": "{0}",
  "0.http.hardcoded_email_disclosure_in_comment.match.result.s0.o0": "HTTP 요청에 대한 응답에서 하드코드된 이메일 주소가 발견되었습니다.",
  "0.http.hardcoded_email_disclosure_in_comment.match.result.s1.o0": "{0}",
  "0.http.hardcoded_email_disclosure_in_comment.match.solution.s0.o0": "이메일 주소가 주석문에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "0.http.hardcoded_email_disclosure_in_script.match.attack.s0.o0": "웹 페이지 내 하드코드된 이메일 주소의 노출 여부를 확인하기 위해, 수집된 URL에 대해 HTTP 요청을 전송했습니다.",
  "0.http.hardcoded_email_disclosure_in_script.match.attack.s1.o0": "{0}",
  "0.http.hardcoded_email_disclosure_in_script.match.result.s0.o0": "HTTP 요청에 대한 응답에서 하드코딩된 이메일 주소가 발견되었습니다.",
  "0.http.hardcoded_email_disclosure_in_script.match.result.s1.o0": "{0}",
  "0.http.hardcoded_email_disclosure_in_script.match.solution.s0.o0": "이메일 주소가 코드 내에 하드코딩되지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "0.http.hardcoded_ip_disclosure_in_comment.match.attack.s0.o0": "웹 페이지 내 하드코딩된 IP 주소의 노출 여부를 확인하기 위해, 수집된 URL에 대해 HTTP 요청을 전송했습니다.",
  "0.http.hardcoded_ip_disclosure_in_comment.match.attack.s1.o0": "{0}",
  "0.http.hardcoded_ip_disclosure_in_comment.match.result.s0.o0": "HTTP 요청에 대한 응답에서 하드코드된 IP 주소가 발견되었습니다.",
  "0.http.hardcoded_ip_disclosure_in_comment.match.result.s1.o0": "{0}",
  "0.http.hardcoded_ip_disclosure_in_comment.match.solution.s0.o0": "주석문에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "0.http.hardcoded_ip_disclosure_in_script.match.attack.s0.o0": "웹 페이지 내 하드코딩된 IP 주소의 노출 여부를 확인하기 위해, 수집된 URL에 대해 HTTP 요청을 전송했습니다.",
  "0.http.hardcoded_ip_disclosure_in_script.match.attack.s1.o0": "{0}",
  "0.http.hardcoded_ip_disclosure_in_script.match.result.s0.o0": "HTTP 요청에 대한 응답에서 하드코드된 IP 주소가 발견되었습니다.",
  "0.http.hardcoded_ip_disclosure_in_script.match.result.s1.o0": "{0}",
  "0.http.hardcoded_ip_disclosure_in_script.match.solution.s0.o0": "소스 코드에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "0.http.header_xss_protection.conditional.disable": "HTTP 응답에 포함된 X-XSS-Protection 헤더 중에서 크로스 사이트 스크립팅 필터가 사용하지 않음을 나타내는 0 값이 포함되어 있습니다.",
  "0.http.header_xss_protection.conditional.no_header": "HTTP 응답에 X-XSS-Protection 헤더가 존재하지 않습니다.",
  "0.http.header_xss_protection.not.attack.s0.o0": "누락된 XSS 보호 헤더 취약점은 HTTP 응답에 XSS 보호 헤더가 없는 취약점입니다.",
  "0.http.header_xss_protection.not.attack.s1.o0": "HTTP 응답의 X-XSS-Protection 헤더는 인터넷 익스플로러, 크롬, 사파리 브라우저에서 페이지 로딩 중 비지속적 크로스 사이트 스크립팅 공격이 감지된 경우, 페이지 로딩을 중단하는 기능의 상태를 나타냅니다.",
  "0.http.header_xss_protection.not.attack.s2.o0": "X-XSS-Protection 헤더의 값이 0이면 크로스 사이트 스크립팅 필터가 사용되지 않음을 나타냅니다.",
  "0.http.header_xss_protection.not.result.s0.o0": "HTTP 응답은 다음과 같습니다.",
  "0.http.header_xss_protection.not.result.s1.o0": "{0}",
  "0.http.header_xss_protection.not.solution.s0.o0": "웹 애플리케이션의 서버에서 X-XSS-Protection 헤더를 동작시키는 방법은 다음과 같습니다.",
  "0.http.header_xss_protection.not.solution.s1.o0": "Apache(.htaccess) :",
  "0.http.header_xss_protection.not.solution.s2.o0": "{0}",
  "0.http.header_xss_protection.not.solution.s3.o0": "PHP :",
  "0.http.header_xss_protection.not.solution.s4.o0": "{0}",
  "0.http.header_xss_protection.not.solution.s5.o0": "Spring Framework :",
  "0.http.header_xss_protection.not.solution.s6.o0": "{0}",
  "0.http.header_xss_protection.not.solution.s7.o0": "Node js :",
  "0.http.header_xss_protection.not.solution.s8.o0": "{0}",
  "0.http.host_header.used.attack.s0.o0": "Host 헤더 취약점은 Host 헤더가 조작되어 Host 헤더의 값을 사용하는 링크가 악의적인 사이트로 연결되는 취약점입니다.",
  "0.http.host_header.used.attack.s1.o0": "웹 애플리케이션에서 Host 헤더의 값을 별도의 검증 없이 사용한다면, 공격자가 Host 헤더를 조작하여 악의적인 사이트를 연결시킬 수 있습니다.",
  "0.http.host_header.used.attack.s1.o1": "이를 통해 공격자는 사용자의 HTTP 요청을 가로채거나 사용자가 의도치 않은 행동을 수행하도록 할 수 있습니다.",
  "0.http.host_header.used.attack.s2.o0": "예를 들어, 공격자가 Host 헤더를 조작하여 사용자에게 악의적으로 조작된 암호 변경 사이트를 연결시킬 수 있습니다.",
  "0.http.host_header.used.attack.s2.o1": "사용자는 인지하지 못하고 암호를 변경하게 되면, 변경된 암호 정보가 공격자에게 전달되어 사용자의 계정 정보가 탈취될 수 있습니다.",
  "0.http.host_header.used.attack.s3.o0": "이러한 Host 헤더 취약점을 검출하기 위해 Host 헤더 값을 {0} 으로 변경한 HTTP 요청을 다음과 같이 보냈습니다.",
  "0.http.host_header.used.attack.s4.o0": "{0}",
  "0.http.host_header.used.attack.s4.o1": "{0}",
  "0.http.host_header.used.result.s0.o0": "HTTP 요청에 대한 HTTP 응답에 다음과 같이 Host 헤더 값을 사용하는 요소가 있습니다.",
  "0.http.host_header.used.result.s1.o0": "{0}",
  "0.http.host_header.used.result.s2.o0": "HTTP 응답에서 {0} 속성에 검출을 위해 사용한 Host 헤더 값 {1}이 포함되어 있음을 확인할 수 있습니다.",
  "0.http.host_header.used.solution.s0.o0": "Host 헤더 취약점을 해결하기 위한 가장 간단한 방법은 Host 헤더의 값을 사용하지 않는 것입니다.",
  "0.http.host_header.used.solution.s1.o0": "Host 헤더 값을 사용해야 하는 경우에는, Host 헤더 값을 검증하여 사용해야 합니다.",
  "0.http.host_header.used.solution.s2.o0": "Host 헤더 값을 검증하기 위한 방법은 일반적으로 화이트리스트 방법과 블랙리스트 방법이 있습니다.",
  "0.http.host_header.used.solution.s2.o1": "화이트리스트 방법은 검증이 완료된 Host 헤더 값을 목록으로 저장하여 해당 Host 헤더 값만을 받아들이는 방법입니다.",
  "0.http.host_header.used.solution.s2.o3": "블랙리스트 방법은 위험하다고 판단되는 Host 헤더 값을 목록으로 저장하여 해당 Host 헤더 값이 들어오면 차단하는 방법입니다.",
  "0.http.host_header.used.solution.s3.o0": "이렇듯 Host 헤더 값을 다양한 방식으로 검증하여 사용하면 Host 헤더 취약점을 해결할 수 있습니다.",
  "0.http.http_request_smuggling.clte.attack.s0.o0": "HTTP 요청 스머글링 - CL.TE 공격 검증을 위해 Content-Length와 Transfer-Encoding: chunked 헤더를 포함한 부적절한 HTTP 요청을 제작한 뒤, 수집된 URL로 전송했습니다.",
  "0.http.http_request_smuggling.clte.attack.s1.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.http_request_smuggling.clte.attack.s2.o0": "{0}",
  "0.http.http_request_smuggling.clte.attack.s2.o1": "{0}",
  "0.http.http_request_smuggling.clte.result.s0.o0": "부적절한 HTTP 요청에 대한 응답 결과, 서버에서 응답이 지연되었고 오류가 반환되었습니다.",
  "0.http.http_request_smuggling.clte.result.s1.o0": "{0}",
  "0.http.http_request_smuggling.clte.result.s2.o0": "이는 전송된 HTTP 요청 본문에 종료 청크(0)가 포함되지 않았기 때문입니다.",
  "0.http.http_request_smuggling.clte.result.s2.o1": "백엔드 서버는 Transfer-Encoding: chunked 헤더를 기준으로 요청이 완료되지 않은 것으로 판단해 추가 데이터를 기다렸으나, 끝내 데이터가 도착하지 않아 응답이 지연되고 오류가 반환되었습니다.",
  "0.http.http_request_smuggling.clte.result.s2.o2": "이러한 결과는 프런트엔드와 백엔드 서버 간의 요청 처리 방식이 일치하지 않아 발생한 문제로 판단됩니다.",
  "0.http.http_request_smuggling.clte.solution.s0.o0": "RFC 9112(6.1 ~ 6.3) 명세에 따르면, Content-Length와 Transfer-Encoding 헤더를 동시에 사용할 경우 요청 스머글링 취약점이 발생할 수 있으므로 두 헤더가 함께 수신된 요청은 오류로 처리해야 한다고 규정하고 있습니다.",
  "0.http.http_request_smuggling.clte.solution.s1.o0": "따라서, 프론트엔드와 백엔드 서버는 요청을 해석할 때 Content-Length와 Transfer-Encoding 헤더를 일관되게 처리하도록 구성해야 하며, 중복된 헤더나 비정상적인 헤더 값이 포함된 요청을 차단해야 합니다.",
  "0.http.http_request_smuggling.clte.solution.s2.o0": "또한, HTTP/2에서는 모든 Transfer-Encoding 헤더 사용이 허용되지 않으므로, HTTP/2로 업그레이드해 요청 스머글링 공격을 방지할 수 있습니다.",
  "0.http.http_request_smuggling.clte.solution.s2.o1": "그러나 HTTP/1.x와 HTTP/2 간의 프로토콜 전환(H2C)을 지원하는 환경에서는 H2C 요청 스머글링 공격이 발생할 가능성이 있으므로, 서버와 클라이언트 모두 HTTP/2 프로토콜을 일관되게 사용하도록 설정해야 합니다.",
  "0.http.http_request_smuggling.tecl.attack.s0.o0": "HTTP 요청 스머글링 - TE.CL 공격 검증을 위해 Content-Length와 Transfer-Encoding: chunked 헤더를 포함한 부적절한 HTTP 요청을 제작한 뒤, 수집된 URL로 전송했습니다.",
  "0.http.http_request_smuggling.tecl.attack.s1.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.http_request_smuggling.tecl.attack.s2.o0": "{0}",
  "0.http.http_request_smuggling.tecl.attack.s2.o1": "{0}",
  "0.http.http_request_smuggling.tecl.result.s0.o0": "부적절한 HTTP 요청에 대한 응답 결과, 서버에서 응답이 지연되었고 오류가 반환되었습니다.",
  "0.http.http_request_smuggling.tecl.result.s1.o0": "{0}",
  "0.http.http_request_smuggling.tecl.result.s2.o0": "이는 프런트엔드 서버가 Transfer-Encoding: chunked 헤더를 기준으로 종료 청크(0)를 만나 요청 처리가 완료된 것으로 판단해, 해당 부분까지만 백엔드 서버로 전송했기 때문입니다.",
  "0.http.http_request_smuggling.tecl.result.s2.o1": "백엔드 서버는 Content-Length 헤더에 명시된 값에 따라 본문 길이(6 byte)를 예상했으나, 전송된 데이터가 부족해 나머지 데이터가 도착할 때까지 기다렸습니다.",
  "0.http.http_request_smuggling.tecl.result.s2.o2": "그러나 프런트엔드는 전송을 마쳤으므로 끝내 추가 데이터가 도착하지 않아 응답이 지연되고 오류가 반환되었습니다.",
  "0.http.http_request_smuggling.tecl.result.s2.o3": "이러한 결과는 프런트엔드와 백엔드 서버 간의 요청 처리 방식이 일치하지 않아 발생한 문제로 판단됩니다.",
  "0.http.http_request_smuggling.tecl.solution.s0.o0": "RFC 9112(6.1 ~ 6.3) 명세에 따르면, Content-Length와 Transfer-Encoding 헤더를 동시에 사용할 경우 요청 스머글링 취약점이 발생할 수 있으므로 두 헤더가 함께 수신된 요청은 오류로 처리해야 한다고 규정하고 있습니다.",
  "0.http.http_request_smuggling.tecl.solution.s1.o0": "따라서, 프런트엔드와 백엔드 서버는 요청을 해석할 때 Content-Length와 Transfer-Encoding 헤더를 일관되게 처리하도록 구성해야 하며, 중복된 헤더나 비정상적인 헤더 값이 포함된 요청을 차단해야 합니다.",
  "0.http.http_request_smuggling.tecl.solution.s2.o0": "또한, HTTP/2에서는 모든 Transfer-Encoding 헤더 사용이 허용되지 않으므로, HTTP/2로 업그레이드해 요청 스머글링 공격을 방지할 수 있습니다.",
  "0.http.http_request_smuggling.tecl.solution.s2.o1": "그러나 HTTP/1.x와 HTTP/2 간의 프로토콜 전환(H2C)을 지원하는 환경에서는 H2C 요청 스머글링 공격이 발생할 가능성이 있으므로, 서버와 클라이언트 모두 HTTP/2 프로토콜을 일관되게 사용하도록 설정해야 합니다.",
  "0.http.http_request_smuggling.tete.attack.s0.o0": "HTTP 요청 스머글링 - TE.TE 공격 검증을 위해 중복된 Transfer-Encoding 헤더를 포함한 부적절한 HTTP 요청을 제작한 뒤, 수집된 URL로 두 번 전송했습니다.",
  "0.http.http_request_smuggling.tete.attack.s1.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.http_request_smuggling.tete.attack.s2.o0": "{0}",
  "0.http.http_request_smuggling.tete.attack.s2.o1": "{0}",
  "0.http.http_request_smuggling.tete.result.s0.o0": "부적절한 HTTP 요청에 대한 첫 번째 응답 결과, 다음과 같이 정상 응답이 반환되었습니다.",
  "0.http.http_request_smuggling.tete.result.s1.o0": "{0}",
  "0.http.http_request_smuggling.tete.result.s2.o0": "부적절한 HTTP 요청에 대한 두 번째 응답 결과, 다음과 같이 오류 응답이 반환되었습니다.",
  "0.http.http_request_smuggling.tete.result.s3.o0": "{0}",
  "0.http.http_request_smuggling.tete.result.s4.o0": "이는 백엔드 서버가 중복되거나 조작된 Transfer-Encoding 헤더를 비정상적인 값으로 간주해, 요청 본문을 제대로 처리하지 못하고 응답을 반환했기 때문입니다.",
  "0.http.http_request_smuggling.tete.result.s4.o1": "이로 인해 첫 번째 요청의 처리되지 않은 일부 데이터가 백엔드 서버의 버퍼에 남게 되었고, 두 번째 요청을 전송했을 때 버퍼에 남은 데이터가 새로운 요청과 결합되어 오류가 반환되었습니다.",
  "0.http.http_request_smuggling.tete.result.s4.o2": "이러한 결과는 백엔드 서버가 Transfer-Encoding 헤더를 제대로 검증하고 있지 않아 발생한 문제로 판단됩니다.",
  "0.http.http_request_smuggling.tete.solution.s0.o0": "RFC 9112(6.1 ~ 6.3) 명세에 따르면, Content-Length와 Transfer-Encoding 헤더를 동시에 사용할 경우 요청 스머글링 취약점이 발생할 수 있으므로 두 헤더가 함께 수신된 요청은 오류로 처리해야 한다고 규정하고 있습니다.",
  "0.http.http_request_smuggling.tete.solution.s1.o0": "따라서, 프론트엔드와 백엔드 서버는 요청을 해석할 때 Content-Length와 Transfer-Encoding 헤더를 일관되게 처리하도록 구성해야 하며, 중복된 헤더나 비정상적인 헤더 값이 포함된 요청을 차단해야 합니다.",
  "0.http.http_request_smuggling.tete.solution.s2.o0": "또한, HTTP/2에서는 모든 Transfer-Encoding 헤더 사용이 허용되지 않으므로, HTTP/2로 업그레이드해 요청 스머글링 공격을 방지할 수 있습니다.",
  "0.http.http_request_smuggling.tete.solution.s2.o1": "그러나 HTTP/1.x와 HTTP/2 간의 프로토콜 전환(H2C)을 지원하는 환경에서는 H2C 요청 스머글링 공격이 발생할 가능성이 있으므로, 서버와 클라이언트 모두 HTTP/2 프로토콜을 일관되게 사용하도록 설정해야 합니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s0.o1": "{0}",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s0.o2": "{0}",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s4.o0": "해당 요소의 내부 텍스트 값을 검사했습니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s1.o1": "{0}",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s2.o0": "해당 요소의 내부 텍스트에 반복된 특수문자가 포함되었습니다. 다음과 같은 내부 텍스트에 특수문자 {0}가 포함되었습니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s2.o1": "{0}",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s3.o0": "해당 내부 텍스트 값은 페이지 제목으로 사용하기에 적절하지 않습니다.",
  "0.http.inappropriate_title.duplicate_special_characters_in_page_title.solution.s0.o0": "{0} 요소의 내부 텍스트 값에서 동일한 특수 문자가 두 개 이상 연속되지 않도록 수정하세요.",
  "0.http.inappropriate_title.empty_frame_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.inappropriate_title.empty_frame_title.attack.s0.o1": "{0}",
  "0.http.inappropriate_title.empty_frame_title.attack.s0.o2": "{0}",
  "0.http.inappropriate_title.empty_frame_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.inappropriate_title.empty_frame_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.inappropriate_title.empty_frame_title.attack.s3.o0": "HTTP 응답 본문에서 프레임을 탐색했습니다.",
  "0.http.inappropriate_title.empty_frame_title.attack.s4.o0": "해당 프레임의 {0} 속성을 탐색했습니다.",
  "0.http.inappropriate_title.empty_frame_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.inappropriate_title.empty_frame_title.result.s1.o0": "HTTP 응답 본문에서 프레임에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.inappropriate_title.empty_frame_title.result.s1.o1": "{0}",
  "0.http.inappropriate_title.empty_frame_title.result.s2.o0": "해당 요소의 {0} 속성 값이 빈 문자열이므로 프레임 제목이 누락되었습니다.",
  "0.http.inappropriate_title.empty_frame_title.solution.s0.o0": "{0} 요소의 {1} 속성 값을 비어있지 않은 문자열로 설정하세요.",
  "0.http.inappropriate_title.empty_page_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.inappropriate_title.empty_page_title.attack.s0.o1": "{0}",
  "0.http.inappropriate_title.empty_page_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.inappropriate_title.empty_page_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.inappropriate_title.empty_page_title.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.inappropriate_title.empty_page_title.attack.s4.o0": "해당 요소의 내부 텍스트 값을 검사했습니다.",
  "0.http.inappropriate_title.empty_page_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.inappropriate_title.empty_page_title.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.inappropriate_title.empty_page_title.result.s1.o1": "{0}",
  "0.http.inappropriate_title.empty_page_title.result.s2.o0": "해당 요소의 내부 텍스트 값이 빈 문자열이므로 페이지 제목이 누락되었습니다.",
  "0.http.inappropriate_title.empty_page_title.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 비어있지 않은 문자열로 설정하세요.",
  "0.http.inappropriate_title.no_frame_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.inappropriate_title.no_frame_title.attack.s0.o1": "{0}",
  "0.http.inappropriate_title.no_frame_title.attack.s0.o2": "{0}",
  "0.http.inappropriate_title.no_frame_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.inappropriate_title.no_frame_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.inappropriate_title.no_frame_title.attack.s3.o0": "HTTP 응답 본문에서 프레임을 탐색했습니다.",
  "0.http.inappropriate_title.no_frame_title.attack.s4.o0": "해당 프레임의 {0} 속성을 탐색했습니다.",
  "0.http.inappropriate_title.no_frame_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.inappropriate_title.no_frame_title.result.s1.o0": "HTTP 응답 본문에서 프레임에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.inappropriate_title.no_frame_title.result.s1.o1": "{0}",
  "0.http.inappropriate_title.no_frame_title.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 요소가 없으므로 프레임 제목이 누락되었습니다.",
  "0.http.inappropriate_title.no_frame_title.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "0.http.inappropriate_title.no_page_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.inappropriate_title.no_page_title.attack.s0.o1": "{0}",
  "0.http.inappropriate_title.no_page_title.attack.s0.o2": "{0}",
  "0.http.inappropriate_title.no_page_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.inappropriate_title.no_page_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.inappropriate_title.no_page_title.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.inappropriate_title.no_page_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.inappropriate_title.no_page_title.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재하지 않습니다. 해당 요소가 없으므로 페이지 제목이 누락되었습니다.",
  "0.http.inappropriate_title.no_page_title.solution.s0.o0": "{0} 요소를 추가하세요.",
  "0.http.incompatible_css.css.attack.s0.o0": "다음과 같은 첫 번째 HTTP 요청을 전송했습니다.",
  "0.http.incompatible_css.css.attack.s0.o1": "{0}",
  "0.http.incompatible_css.css.attack.s0.o2": "{0}",
  "0.http.incompatible_css.css.attack.s1.o0": "첫 번째 HTTP 응답을 수신했습니다.",
  "0.http.incompatible_css.css.attack.s2.o0": "첫 번째 HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.incompatible_css.css.attack.s3.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로의 연결을 탐색했습니다.",
  "0.http.incompatible_css.css.attack.s4.o0": "탐색한 연결을 따라가기 위해 다음과 같은 두 번째 HTTP 요청을 전송했습니다.",
  "0.http.incompatible_css.css.attack.s4.o1": "{0}",
  "0.http.incompatible_css.css.attack.s5.o0": "두 번째 HTTP 응답을 수신했습니다.",
  "0.http.incompatible_css.css.attack.s6.o0": "두 번째 HTTP 응답 본문이 CSS 문서인지를 검사했습니다.",
  "0.http.incompatible_css.css.attack.s7.o0": "두 번째 HTTP 응답 본문에 대하여 CSS 구문 분석을 수행했습니다.",
  "0.http.incompatible_css.css.result.s0.o0": "첫 번째 HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.incompatible_css.css.result.s1.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로 연결하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.incompatible_css.css.result.s1.o1": "{0}",
  "0.http.incompatible_css.css.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "0.http.incompatible_css.css.result.s2.o1": "{0}",
  "0.http.incompatible_css.css.result.s3.o0": "두 번째 HTTP 응답 본문이 CSS 문서에 해당합니다.",
  "0.http.incompatible_css.css.result.s4.o0": "두 번째 HTTP 응답 본문에 대한 CSS 구문 분석 결과, {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "0.http.incompatible_css.css.solution.s0.o0": "{0} 속성을 제거하거나 다른 속성으로 대체하세요.",
  "0.http.incompatible_css.html.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.incompatible_css.html.attack.s0.o1": "{0}",
  "0.http.incompatible_css.html.attack.s0.o2": "{0}",
  "0.http.incompatible_css.html.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.incompatible_css.html.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.incompatible_css.html.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.incompatible_css.html.attack.s4.o0": "탐색한 요소의 내부 텍스트 값에 대하여 CSS 구문 분석을 수행했습니다.",
  "0.http.incompatible_css.html.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.incompatible_css.html.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.incompatible_css.html.result.s1.o1": "{0}",
  "0.http.incompatible_css.html.result.s2.o0": "해당 요소의 내부 텍스트에 대한 CSS 구문 분석 결과, {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "0.http.incompatible_css.html.solution.s0.o0": "{0} 속성을 제거하거나 다른 속성으로 대체하세요.",
  "0.http.incompatible_html.attr.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.incompatible_html.attr.attack.s0.o1": "{0}",
  "0.http.incompatible_html.attr.attack.s0.o2": "{0}",
  "0.http.incompatible_html.attr.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.incompatible_html.attr.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.incompatible_html.attr.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.incompatible_html.attr.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.http.incompatible_html.attr.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.incompatible_html.attr.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.incompatible_html.attr.result.s1.o1": "{0}",
  "0.http.incompatible_html.attr.result.s2.o0": "해당 요소에 {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "0.http.incompatible_html.attr.solution.s0.o0": "{0} 요소의 {1} 속성을 제거하세요.",
  "0.http.incompatible_html.tag.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.incompatible_html.tag.attack.s0.o1": "{0}",
  "0.http.incompatible_html.tag.attack.s0.o2": "{0}",
  "0.http.incompatible_html.tag.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.incompatible_html.tag.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.incompatible_html.tag.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.incompatible_html.tag.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.incompatible_html.tag.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.incompatible_html.tag.result.s1.o1": "{0}",
  "0.http.incompatible_html.tag.result.s2.o0": "해당 요소는 일부 브라우저에서 지원하지 않습니다.",
  "0.http.incompatible_html.tag.solution.s0.o0": "{0} 요소를 제거하거나 다른 요소로 대체하세요.",
  "0.http.incompatible_js.html_over_es5.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.incompatible_js.html_over_es5.attack.s0.o1": "{0}",
  "0.http.incompatible_js.html_over_es5.attack.s0.o2": "{0}",
  "0.http.incompatible_js.html_over_es5.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.incompatible_js.html_over_es5.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.incompatible_js.html_over_es5.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.incompatible_js.html_over_es5.attack.s4.o0": "탐색한 요소의 내부 텍스트 값에 대하여 Javascript 구문 분석을 수행했습니다.",
  "0.http.incompatible_js.html_over_es5.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.incompatible_js.html_over_es5.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.incompatible_js.html_over_es5.result.s1.o1": "{0}",
  "0.http.incompatible_js.html_over_es5.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 Javascript 구문 분석 결과, Javascript 버전이 {0}인 경우에만 사용 가능한 기능이 존재합니다. 해당 기능의 이름은 다음과 같습니다.",
  "0.http.incompatible_js.html_over_es5.result.s2.o1": "{0}",
  "0.http.incompatible_js.html_over_es5.result.s3.o0": "해당 기능은 일부 브라우저에서 지원하지 않습니다.",
  "0.http.incompatible_js.html_over_es5.solution.s0.o0": "{0} 기능을 제거하거나 다른 기능으로 대체하세요.",
  "0.http.incompatible_js.js_over_es5.attack.s0.o0": "다음과 같은 첫 번째 HTTP 요청을 전송했습니다.",
  "0.http.incompatible_js.js_over_es5.attack.s0.o1": "{0}",
  "0.http.incompatible_js.js_over_es5.attack.s0.o2": "{0}",
  "0.http.incompatible_js.js_over_es5.attack.s1.o0": "첫 번째 HTTP 응답을 수신했습니다.",
  "0.http.incompatible_js.js_over_es5.attack.s2.o0": "첫 번째 HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.incompatible_js.js_over_es5.attack.s3.o0": "첫 번째 HTTP 응답 본문에서 Javascript 문서로의 연결을 탐색했습니다.",
  "0.http.incompatible_js.js_over_es5.attack.s4.o0": "탐색한 연결을 따라가기 위해 다음과 같은 두 번째 HTTP 요청을 전송했습니다.",
  "0.http.incompatible_js.js_over_es5.attack.s4.o1": "{0}",
  "0.http.incompatible_js.js_over_es5.attack.s5.o0": "두 번째 HTTP 응답을 수신했습니다.",
  "0.http.incompatible_js.js_over_es5.attack.s6.o0": "두 번째 HTTP 응답 본문이 Javascript 문서인지를 검사했습니다.",
  "0.http.incompatible_js.js_over_es5.attack.s7.o0": "두 번째 HTTP 응답 본문에 대하여 Javascript 구문 분석을 수행했습니다.",
  "0.http.incompatible_js.js_over_es5.result.s0.o0": "첫 번째 HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.incompatible_js.js_over_es5.result.s1.o0": "첫 번째 HTTP 응답 본문에 Javascript 문서로의 연결에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.incompatible_js.js_over_es5.result.s1.o1": "{0}",
  "0.http.incompatible_js.js_over_es5.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.http.incompatible_js.js_over_es5.result.s2.o1": "{0}",
  "0.http.incompatible_js.js_over_es5.result.s3.o0": "두 번째 HTTP 응답 본문이 Javascript 문서에 해당합니다.",
  "0.http.incompatible_js.js_over_es5.result.s4.o0": "두 번째 HTTP 응답 본문에 대한 Javascript 구문 분석 결과, Javascript 버전이 {0}인 경우에만 사용 가능한 기능이 존재합니다. 해당 기능의 이름은 다음과 같습니다.",
  "0.http.incompatible_js.js_over_es5.result.s4.o1": "{0}",
  "0.http.incompatible_js.js_over_es5.result.s5.o0": "해당 기능은 일부 브라우저에서 지원하지 않습니다.",
  "0.http.incompatible_js.js_over_es5.solution.s0.o0": "{0} 기능을 제거하거나 다른 기능으로 대체하세요.",
  "0.http.integer_overflow.error.attack.s0.o0": "정수 오버플로우 취약점이 발생하는지 확인하기 위해, {0}에 존재하는 값을 다음 {1}로 변경한 뒤 HTTP 요청을 전송했습니다.",
  "0.http.integer_overflow.error.attack.s1.o0": "{0}",
  "0.http.integer_overflow.error.attack.s1.o1": "{0}",
  "0.http.integer_overflow.error.result.s0.o0": "조작된 HTTP 요청에 대한 응답 결과, 서버 측 오류를 의미하는 HTTP 5.x.x 상태 코드가 반환되었습니다.",
  "0.http.integer_overflow.error.result.s0.o1": "이는 전송된 공격 페이로드가 서버의 데이터 처리 로직에 영향을 미쳐 내부에서 예기치 못한 오류가 발생한 것으로 보입니다.",
  "0.http.integer_overflow.error.result.s1.o0": "{0}",
  "0.http.integer_overflow.error.solution.s0.o0": "프로그래밍 언어나 플랫폼 별 정수 타입의 범위를 적절히 확인한 뒤 사용해야 합니다.",
  "0.http.integer_overflow.error.solution.s0.o1": "예를 들어, int 대신 long 또는 BigInteger와 같은 더 큰 범위의 자료형을 사용하는 것이 안전합니다.",
  "0.http.integer_overflow.error.solution.s1.o0": "또한, 외부 입력값을 기반으로 반복문 제어, 메모리 할당, 메모리 복사 등을 수행할 경우, 입력값이 예상 범위 내에 있는지 검증하는 로직을 적용해야 합니다.",
  "0.http.integer_overflow.error.solution.s2.o0": "추가적으로, 정수형 변수를 연산에 사용할 때는 연산 결과가 자료형의 범위를 초과하지 않도록 안전한 연산 함수나 라이브러리를 사용하는 것이 권장됩니다.",
  "0.http.integer_overflow.error.solution.s2.o1": "예를 들어, Java의 Math 클래스에서 제공하는 multiplyExact() 또는 C++의 SafeInt 라이브러리는 정수 오버플로우 발생 여부를 검사하고, 오버플로우가 감지되면 예외를 발생시켜 안전하게 처리할 수 있습니다.",
  "0.http.invalid_css.css_error.attack.s0.o0": "다음과 같은 첫 번째 HTTP 요청을 전송했습니다.",
  "0.http.invalid_css.css_error.attack.s0.o1": "{0}",
  "0.http.invalid_css.css_error.attack.s0.o2": "{0}",
  "0.http.invalid_css.css_error.attack.s1.o0": "첫 번째 HTTP 응답을 수신했습니다.",
  "0.http.invalid_css.css_error.attack.s2.o0": "첫 번째 HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_css.css_error.attack.s3.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로의 연결을 탐색했습니다.",
  "0.http.invalid_css.css_error.attack.s4.o0": "탐색한 연결을 따라가기 위해 다음과 같은 두 번째 HTTP 요청을 전송했습니다.",
  "0.http.invalid_css.css_error.attack.s4.o1": "{0}",
  "0.http.invalid_css.css_error.attack.s5.o0": "두 번째 HTTP 응답을 수신했습니다.",
  "0.http.invalid_css.css_error.attack.s6.o0": "두 번째 HTTP 응답 본문이 CSS 문서인지를 검사했습니다.",
  "0.http.invalid_css.css_error.attack.s7.o0": "두 번째 HTTP 응답 본문에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "0.http.invalid_css.css_error.result.s0.o0": "첫 번째 HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_css.css_error.result.s1.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로 연결하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_css.css_error.result.s1.o1": "{0}",
  "0.http.invalid_css.css_error.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "0.http.invalid_css.css_error.result.s2.o1": "{0}",
  "0.http.invalid_css.css_error.result.s3.o0": "두 번째 HTTP 응답 본문이 CSS 문서에 해당합니다.",
  "0.http.invalid_css.css_error.result.s4.o0": "두 번째 HTTP 응답 본문에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '오류' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "0.http.invalid_css.css_error.result.s4.o1": "{0}",
  "0.http.invalid_css.css_error.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 두 번째 HTTP 응답 본문에 해당하는 CSS 문서를 수정하세요.",
  "0.http.invalid_css.css_warning.attack.s0.o0": "다음과 같은 첫 번째 HTTP 요청을 전송했습니다.",
  "0.http.invalid_css.css_warning.attack.s0.o1": "{0}",
  "0.http.invalid_css.css_warning.attack.s0.o2": "{0}",
  "0.http.invalid_css.css_warning.attack.s1.o0": "첫 번째 HTTP 응답을 수신했습니다.",
  "0.http.invalid_css.css_warning.attack.s2.o0": "첫 번째 HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_css.css_warning.attack.s3.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로의 연결을 탐색했습니다.",
  "0.http.invalid_css.css_warning.attack.s4.o0": "탐색한 연결을 따라가기 위해 다음과 같은 두 번째 HTTP 요청을 전송했습니다.",
  "0.http.invalid_css.css_warning.attack.s4.o1": "{0}",
  "0.http.invalid_css.css_warning.attack.s5.o0": "두 번째 HTTP 응답을 수신했습니다.",
  "0.http.invalid_css.css_warning.attack.s6.o0": "두 번째 HTTP 응답 본문이 CSS 문서인지를 검사했습니다.",
  "0.http.invalid_css.css_warning.attack.s7.o0": "두 번째 HTTP 응답 본문에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "0.http.invalid_css.css_warning.result.s0.o0": "첫 번째 HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_css.css_warning.result.s1.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로 연결하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_css.css_warning.result.s1.o1": "{0}",
  "0.http.invalid_css.css_warning.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "0.http.invalid_css.css_warning.result.s2.o1": "{0}",
  "0.http.invalid_css.css_warning.result.s3.o0": "두 번째 HTTP 응답 본문이 CSS 문서에 해당합니다.",
  "0.http.invalid_css.css_warning.result.s4.o0": "두 번째 HTTP 응답 본문에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '경고' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "0.http.invalid_css.css_warning.result.s4.o1": "{0}",
  "0.http.invalid_css.css_warning.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 두 번째 HTTP 응답 본문에 해당하는 CSS 문서를 수정하세요.",
  "0.http.invalid_css.html_error.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.invalid_css.html_error.attack.s0.o1": "{0}",
  "0.http.invalid_css.html_error.attack.s0.o2": "{0}",
  "0.http.invalid_css.html_error.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_css.html_error.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_css.html_error.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.invalid_css.html_error.attack.s4.o0": "탐색한 요소의 내부 텍스트 값에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "0.http.invalid_css.html_error.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_css.html_error.result.s1.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_css.html_error.result.s1.o1": "{0}",
  "0.http.invalid_css.html_error.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '오류' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "0.http.invalid_css.html_error.result.s2.o1": "{0}",
  "0.http.invalid_css.html_error.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 HTTP 응답 본문에서 탐색한 {0} 요소의 내부 텍스트 값을 수정하세요.",
  "0.http.invalid_css.html_warning.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.invalid_css.html_warning.attack.s0.o1": "{0}",
  "0.http.invalid_css.html_warning.attack.s0.o2": "{0}",
  "0.http.invalid_css.html_warning.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_css.html_warning.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_css.html_warning.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.invalid_css.html_warning.attack.s4.o0": "탐색한 요소의 내부 텍스트 값에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "0.http.invalid_css.html_warning.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_css.html_warning.result.s1.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_css.html_warning.result.s1.o1": "{0}",
  "0.http.invalid_css.html_warning.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '경고' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "0.http.invalid_css.html_warning.result.s2.o1": "{0}",
  "0.http.invalid_css.html_warning.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 HTTP 응답 본문에서 탐색한 {0} 요소의 내부 텍스트 값을 수정하세요.",
  "0.http.invalid_html.error.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "0.http.invalid_html.error.attack.s0.o1": "{0}",
  "0.http.invalid_html.error.attack.s0.o2": "{0}",
  "0.http.invalid_html.error.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_html.error.attack.s2.o0": "HTTP 응답 본문이 (X)HTML 문서인지를 검사했습니다.",
  "0.http.invalid_html.error.attack.s3.o0": "HTTP 응답 본문에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "0.http.invalid_html.error.result.s0.o0": "HTTP 응답 본문이 (X)HTML 문서에 해당합니다.",
  "0.http.invalid_html.error.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '오류' 항목이 발생했습니다.",
  "0.http.invalid_html.error.result.s1.o1": "{0}",
  "0.http.invalid_html.error.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 HTTP 응답 본문에 해당하는 (X)HTML 문서를 수정하세요.",
  "0.http.invalid_html.fatal.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "0.http.invalid_html.fatal.attack.s0.o1": "{0}",
  "0.http.invalid_html.fatal.attack.s0.o2": "{0}",
  "0.http.invalid_html.fatal.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_html.fatal.attack.s2.o0": "HTTP 응답 본문이 (X)HTML 문서인지를 검사했습니다.",
  "0.http.invalid_html.fatal.attack.s3.o0": "HTTP 응답 본문에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "0.http.invalid_html.fatal.result.s0.o0": "HTTP 응답 본문이 (X)HTML 문서에 해당합니다.",
  "0.http.invalid_html.fatal.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '심각' 항목이 발생했습니다.",
  "0.http.invalid_html.fatal.result.s1.o1": "{0}",
  "0.http.invalid_html.fatal.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 HTTP 응답 본문에 해당하는 (X)HTML 문서를 수정하세요.",
  "0.http.invalid_html.warning.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "0.http.invalid_html.warning.attack.s0.o1": "{0}",
  "0.http.invalid_html.warning.attack.s0.o2": "{0}",
  "0.http.invalid_html.warning.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_html.warning.attack.s2.o0": "HTTP 응답 본문이 (X)HTML 문서인지를 검사했습니다.",
  "0.http.invalid_html.warning.attack.s3.o0": "HTTP 응답 본문에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "0.http.invalid_html.warning.result.s0.o0": "HTTP 응답 본문이 (X)HTML 문서에 해당합니다.",
  "0.http.invalid_html.warning.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '경고' 항목이 발생했습니다.",
  "0.http.invalid_html.warning.result.s1.o1": "{0}",
  "0.http.invalid_html.warning.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 HTTP 응답 본문에 해당하는 (X)HTML 문서를 수정하세요.",
  "0.http.invalid_link_text.a_blank.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.invalid_link_text.a_blank.attack.s0.o1": "{0}",
  "0.http.invalid_link_text.a_blank.attack.s0.o2": "{0}",
  "0.http.invalid_link_text.a_blank.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_link_text.a_blank.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_link_text.a_blank.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "0.http.invalid_link_text.a_blank.attack.s4.o0": "탐색한 링크의 내부 텍스트 값을 검사했습니다.",
  "0.http.invalid_link_text.a_blank.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_link_text.a_blank.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_link_text.a_blank.result.s1.o1": "{0}",
  "0.http.invalid_link_text.a_blank.result.s2.o0": "해당 요소의 내부 텍스트 값이 공백으로만 이루어진 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "0.http.invalid_link_text.a_blank.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 공백이 아닌 문자가 포함된 문자열로 설정하세요.",
  "0.http.invalid_link_text.a_empty.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.invalid_link_text.a_empty.attack.s0.o1": "{0}",
  "0.http.invalid_link_text.a_empty.attack.s0.o2": "{0}",
  "0.http.invalid_link_text.a_empty.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_link_text.a_empty.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_link_text.a_empty.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "0.http.invalid_link_text.a_empty.attack.s4.o0": "탐색한 링크의 내부 텍스트 값을 검사했습니다.",
  "0.http.invalid_link_text.a_empty.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_link_text.a_empty.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_link_text.a_empty.result.s1.o1": "{0}",
  "0.http.invalid_link_text.a_empty.result.s2.o0": "해당 요소의 내부 텍스트 값이 빈 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "0.http.invalid_link_text.a_empty.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 비어있지 않은 문자열로 설정하세요.",
  "0.http.invalid_link_text.area_blank.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.invalid_link_text.area_blank.attack.s0.o1": "{0}",
  "0.http.invalid_link_text.area_blank.attack.s0.o2": "{0}",
  "0.http.invalid_link_text.area_blank.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_link_text.area_blank.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_link_text.area_blank.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "0.http.invalid_link_text.area_blank.attack.s4.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "0.http.invalid_link_text.area_blank.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_link_text.area_blank.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_link_text.area_blank.result.s1.o1": "{0}",
  "0.http.invalid_link_text.area_blank.result.s2.o0": "해당 요소의 {0} 속성 값이 공백으로만 이루어진 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "0.http.invalid_link_text.area_blank.solution.s0.o0": "{0} 요소의 {1} 값을 공백이 아닌 문자가 포함된 문자열로 설정하세요.",
  "0.http.invalid_link_text.area_empty.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.invalid_link_text.area_empty.attack.s0.o1": "{0}",
  "0.http.invalid_link_text.area_empty.attack.s0.o2": "{0}",
  "0.http.invalid_link_text.area_empty.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_link_text.area_empty.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_link_text.area_empty.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "0.http.invalid_link_text.area_empty.attack.s4.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "0.http.invalid_link_text.area_empty.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_link_text.area_empty.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_link_text.area_empty.result.s1.o1": "{0}",
  "0.http.invalid_link_text.area_empty.result.s2.o0": "해당 요소의 {0} 속성 값이 빈 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "0.http.invalid_link_text.area_empty.solution.s0.o0": "{0} 요소의 {1} 값을 비어있지 않은 문자열로 설정하세요.",
  "0.http.invalid_link_text.area_none.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.invalid_link_text.area_none.attack.s0.o1": "{0}",
  "0.http.invalid_link_text.area_none.attack.s0.o2": "{0}",
  "0.http.invalid_link_text.area_none.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.invalid_link_text.area_none.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.invalid_link_text.area_none.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "0.http.invalid_link_text.area_none.attack.s4.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "0.http.invalid_link_text.area_none.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.invalid_link_text.area_none.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.invalid_link_text.area_none.result.s1.o1": "{0}",
  "0.http.invalid_link_text.area_none.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 링크 텍스트가 누락되었습니다.",
  "0.http.invalid_link_text.area_none.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "0.http.ldap_injection.match.attack.s0.o0": "LDAP 삽입이 발생하는지 확인하기 위해, {0} 매개변수에 유효하지 않은 LDAP 쿼리 문자열을 포함한 HTTP 요청을 전송했습니다.",
  "0.http.ldap_injection.match.attack.s0.o1": "다음과 같은 요청을 송신했습니다.",
  "0.http.ldap_injection.match.attack.s1.o0": "{0}",
  "0.http.ldap_injection.match.result.s0.o0": "조작된 HTTP 요청에 대한 응답 결과는 다음과 같습니다.",
  "0.http.ldap_injection.match.result.s1.o0": "{0}",
  "0.http.ldap_injection.match.result.s2.o0": "위 HTTP 응답 본문에서 LDAP 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "0.http.ldap_injection.match.result.s2.o1": "서버가 사용자 입력값을 적절히 검증하지 않기 때문에 공격 문자열이 LDAP 쿼리에 포함되었고, 이로 인해 오류 메시지가 발생한 것으로 보입니다.",
  "0.http.ldap_injection.match.solution.s0.o0": "LDAP 삽입을 방지하기 위해 Prepared Statement를 사용하여 입력값을 쿼리에 직접 포함하지 않도록 해야 합니다.",
  "0.http.ldap_injection.match.solution.s0.o1": "또한, 특수 문자인 `, ', \", ), (, #, *, &, +, =, <, >, |, ; 등의 문자를 필터링하여 입력값이 LDAP 쿼리에 영향을 주지 않도록 합니다.",
  "0.http.ldap_injection.match.solution.s1.o0": "LDAP 삽입으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용하여 서버 구성 정보나 LDAP 쿼리 구조를 파악할 수 있습니다.",
  "0.http.ldap_injection.match.solution.s1.o1": "시스템 내부 정보가 포함된 에러 메시지를 클라이언트에서 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환하여 정보 유출을 방지해야 합니다.",
  "0.http.local_file_include.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.local_file_include.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.local_file_include.custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.local_file_include.custom.attack.s0.o1": "{0}",
  "0.http.local_file_include.custom.attack.s0.o2": "설정한 값은 사용자 정의 공격 문자열에 해당합니다.",
  "0.http.local_file_include.custom.attack.s0.o3": "설정한 값은 사용자 정의 공격 문자열에 해당합니다.",
  "0.http.local_file_include.custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.local_file_include.custom.attack.s1.o1": "{0}",
  "0.http.local_file_include.custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.local_file_include.custom.result.s0.o1": "{0}",
  "0.http.local_file_include.custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.local_file_include.custom.result.s1.o1": "{0}",
  "0.http.local_file_include.custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "0.http.local_file_include.custom.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "0.http.local_file_include.custom.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "0.http.local_file_include.custom.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "0.http.local_file_include.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.local_file_include.invocation.attack.s0.o1": "{0}",
  "0.http.local_file_include.invocation.attack.s0.o2": "{0}",
  "0.http.local_file_include.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.local_file_include.invocation.attack.s1.o1": "{0}",
  "0.http.local_file_include.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "0.http.local_file_include.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "0.http.local_file_include.invocation.result.s0.o2": "{0}",
  "0.http.local_file_include.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "0.http.local_file_include.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "0.http.local_file_include.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되고, 해당 메소드를 통해 서버의 해당 파일을 현재 페이지에 포함시킬 수 있습니다.",
  "0.http.local_file_include.invocation.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "0.http.local_file_include.invocation.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "0.http.local_file_include.invocation.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "0.http.local_file_include.jsp.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.local_file_include.jsp.attack.s0.o1": "{0}",
  "0.http.local_file_include.jsp.attack.s0.o2": "{0}",
  "0.http.local_file_include.jsp.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.local_file_include.jsp.attack.s1.o1": "{0}",
  "0.http.local_file_include.jsp.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.local_file_include.jsp.result.s0.o1": "{0}",
  "0.http.local_file_include.jsp.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.local_file_include.jsp.result.s1.o1": "{0}",
  "0.http.local_file_include.jsp.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값에 해당하는 {0} 폴더 내부의 {1} 파일의 내용을 발견했습니다.",
  "0.http.local_file_include.jsp.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 서버의 해당 파일을 현재 페이지에 포함시킬 수 있습니다.",
  "0.http.local_file_include.jsp.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "0.http.local_file_include.jsp.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "0.http.local_file_include.jsp.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "0.http.missing_alt_text.empty_alt.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "0.http.missing_alt_text.empty_alt.attack.s0.o1": "{0}",
  "0.http.missing_alt_text.empty_alt.attack.s0.o2": "{0}",
  "0.http.missing_alt_text.empty_alt.result.s0.o0": "HTTP 응답 메시지의 본문에서 {0} 웹 요소를 탐색했습니다.",
  "0.http.missing_alt_text.empty_alt.result.s0.o1": "해당 웹 요소의 XPath는 다음과 같습니다.",
  "0.http.missing_alt_text.empty_alt.result.s0.o2": "{0}",
  "0.http.missing_alt_text.empty_alt.result.s0.o3": "해당 웹 요소는 텍스트가 아닌 콘텐츠에 해당합니다.",
  "0.http.missing_alt_text.empty_alt.result.s0.o4": "해당 웹 요소의 {0} 속성 값이 빈 문자열입니다.",
  "0.http.missing_alt_text.empty_alt.result.s1.o0": "분석 결과, 대체 텍스트를 제공하지 않는 텍스트가 아닌 콘텐츠를 탐색했습니다.",
  "0.http.missing_alt_text.empty_alt.solution.s0.o0": "텍스트가 아닌 콘텐츠의 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 합니다.",
  "0.http.missing_alt_text.empty_alt.solution.s0.o1": "{0} 웹 요소의 {1} 속성을 지정하여 대체 텍스트를 제공할 수 있습니다.",
  "0.http.missing_alt_text.no_alt.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "0.http.missing_alt_text.no_alt.attack.s0.o1": "{0}",
  "0.http.missing_alt_text.no_alt.attack.s0.o2": "{0}",
  "0.http.missing_alt_text.no_alt.result.s0.o0": "HTTP 응답 메시지의 본문에서 {0} 웹 요소를 탐색했습니다.",
  "0.http.missing_alt_text.no_alt.result.s0.o1": "해당 웹 요소의 XPath는 다음과 같습니다.",
  "0.http.missing_alt_text.no_alt.result.s0.o2": "{0}",
  "0.http.missing_alt_text.no_alt.result.s0.o3": "해당 웹 요소는 텍스트가 아닌 콘텐츠에 해당합니다.",
  "0.http.missing_alt_text.no_alt.result.s0.o4": "해당 웹 요소의 {0} 속성을 탐색할 수 없습니다.",
  "0.http.missing_alt_text.no_alt.result.s1.o0": "분석 결과, 대체 텍스트를 제공하지 않는 텍스트가 아닌 콘텐츠를 탐색했습니다.",
  "0.http.missing_alt_text.no_alt.solution.s0.o0": "텍스트가 아닌 콘텐츠의 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 합니다.",
  "0.http.missing_alt_text.no_alt.solution.s0.o1": "{0} 웹 요소의 {1} 속성을 지정하여 대체 텍스트를 제공할 수 있습니다.",
  "0.http.missing_default_language.html_without_lang.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.missing_default_language.html_without_lang.attack.s0.o1": "{0}",
  "0.http.missing_default_language.html_without_lang.attack.s0.o2": "{0}",
  "0.http.missing_default_language.html_without_lang.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.missing_default_language.html_without_lang.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.missing_default_language.html_without_lang.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.missing_default_language.html_without_lang.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.http.missing_default_language.html_without_lang.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.missing_default_language.html_without_lang.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.missing_default_language.html_without_lang.result.s1.o1": "{0}",
  "0.http.missing_default_language.html_without_lang.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 HTML 문서의 기본 언어가 누락되었습니다.",
  "0.http.missing_default_language.html_without_lang.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "0.http.missing_default_language.xhtml_without_lang.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.missing_default_language.xhtml_without_lang.attack.s0.o1": "{0}",
  "0.http.missing_default_language.xhtml_without_lang.attack.s0.o2": "{0}",
  "0.http.missing_default_language.xhtml_without_lang.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.missing_default_language.xhtml_without_lang.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.missing_default_language.xhtml_without_lang.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.missing_default_language.xhtml_without_lang.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.http.missing_default_language.xhtml_without_lang.attack.s5.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.http.missing_default_language.xhtml_without_lang.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.missing_default_language.xhtml_without_lang.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.missing_default_language.xhtml_without_lang.result.s1.o1": "{0}",
  "0.http.missing_default_language.xhtml_without_lang.result.s2.o0": "해당 요소의 {0} 속성이 존재합니다.",
  "0.http.missing_default_language.xhtml_without_lang.result.s3.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 XHTML 문서의 기본 언어가 누락되었습니다.",
  "0.http.missing_default_language.xhtml_without_lang.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "0.http.missing_label.no_id.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.missing_label.no_id.attack.s0.o1": "{0}",
  "0.http.missing_label.no_id.attack.s0.o2": "{0}",
  "0.http.missing_label.no_id.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.missing_label.no_id.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.missing_label.no_id.attack.s3.o0": "HTTP 응답 본문에서 레이블이 필요한 요소를 탐색했습니다.",
  "0.http.missing_label.no_id.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.http.missing_label.no_id.attack.s5.o0": "탐색한 요소의 부모 요소 중 {0} 요소를 탐색했습니다.",
  "0.http.missing_label.no_id.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.missing_label.no_id.result.s1.o0": "HTTP 응답 본문에 레이블이 필요한 요소에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.missing_label.no_id.result.s1.o1": "{0}",
  "0.http.missing_label.no_id.result.s2.o0": "해당 요소의 {0} 속성 값이 존재하지 않습니다.",
  "0.http.missing_label.no_id.result.s3.o0": "해당 요소의 부모 요소 중, {0} 요소가 존재하지 않습니다. 따라서 레이블이 필요한 요소에 레이블이 누락되었습니다.",
  "0.http.missing_label.no_id.solution.s0.o0": "{0} 요소의 부모 요소로서 {1} 요소를 추가하세요. 또는 {1} 요소를 추가하고, 해당 요소의 {2} 속성 값을 {0} 요소의 {3} 속성 값으로 설정하세요.",
  "0.http.missing_label.no_label.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.missing_label.no_label.attack.s0.o1": "{0}",
  "0.http.missing_label.no_label.attack.s0.o2": "{0}",
  "0.http.missing_label.no_label.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.missing_label.no_label.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.missing_label.no_label.attack.s3.o0": "HTTP 응답 본문에서 레이블이 필요한 요소를 탐색했습니다.",
  "0.http.missing_label.no_label.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "0.http.missing_label.no_label.attack.s5.o0": "탐색한 요소의 부모 요소 중 {0} 요소를 탐색했습니다.",
  "0.http.missing_label.no_label.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.missing_label.no_label.result.s1.o0": "HTTP 응답 본문에 레이블이 필요한 요소에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.missing_label.no_label.result.s1.o1": "{0}",
  "0.http.missing_label.no_label.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.http.missing_label.no_label.result.s2.o1": "{0}",
  "0.http.missing_label.no_label.result.s3.o0": "해당 요소의 부모 요소 중, {0} 요소가 존재하지 않습니다.",
  "0.http.missing_label.no_label.result.s4.o0": "HTTP 응답 본문에서 {0} 속성의 값이 다음과 같은 {1} 요소가 존재하지 않습니다.",
  "0.http.missing_label.no_label.result.s4.o1": "{0}",
  "0.http.missing_label.no_label.result.s5.o0": "따라서 레이블이 필요한 요소에 레이블이 누락되었습니다.",
  "0.http.missing_label.no_label.solution.s0.o0": "{0} 요소의 부모 요소로서 {1} 요소를 추가하세요. 또는 {1} 요소를 추가하고, 해당 요소의 {2} 속성 값을 {0} 요소의 {3} 속성 값으로 설정하세요.",
  "0.http.mixed_content.http.attack.s0.o0": "혼합된 콘텐츠는 HTTPS 페이지에 일반적인 HTTP가 포함되어 비암호화된 컨텐츠의 생성되는 것을 말합니다.",
  "0.http.mixed_content.http.attack.s0.o1": "이러한 혼합된 콘텐츠는 HTTP 콘텐츠가 스니핑이 되거나 공격자에게 공격당해 HTTPS 페이지도 함께 위험해질 수 있습니다.",
  "0.http.mixed_content.http.attack.s0.o2": "혼합된 콘텐츠는 크게 HTTPS 페이지에 포함되는 HTTP 콘텐츠가 있는 혼합된 패시브 콘텐츠와 HTTPS 페이지의 DOM의 일부 또는 모든 부분에 접근할 수 있는 혼합된 액티브 콘텐츠로 나뉩니다.",
  "0.http.mixed_content.http.attack.s0.o3": "혼합된 패시브 콘텐츠는 웹 페이지가 깨지는 등의 낮은 수준의 위협을 보입니다.",
  "0.http.mixed_content.http.attack.s0.o4": "혼합된 패시브 콘텐츠는 다음과 같은 부분에 들어갈 수 있습니다.",
  "0.http.mixed_content.http.attack.s0.o5": "{0}",
  "0.http.mixed_content.http.attack.s0.o6": "혼합된 액티브 콘텐츠는 큰 위협이 되며 공격자가 사용자의 민감한 정보를 훔치거나 악의적인 코드를 사용자의 시스템에 설치할 수 있습니다.",
  "0.http.mixed_content.http.attack.s0.o7": "혼합된 액티브 콘텐츠는 다음과 같은 부분에 들어갈 수 있습니다.",
  "0.http.mixed_content.http.attack.s0.o8": "{0}",
  "0.http.mixed_content.http.result.s0.o0": "해당 페이지의 HTTP 응답은 다음과 같습니다.",
  "0.http.mixed_content.http.result.s1.o0": "{0}",
  "0.http.mixed_content.http.result.s2.o0": "위의 HTTP 응답에서 {0}에 HTTP 콘텐츠가 포함되어 있음을 확인할 수 있습니다.",
  "0.http.mixed_content.http.solution.s0.o0": "혼합된 콘텐츠를 막기 위해서는 HTTP 콘텐츠를 사용하지 말아야 합니다.",
  "0.http.non_standard_technology.active_x.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.non_standard_technology.active_x.attack.s0.o1": "{0}",
  "0.http.non_standard_technology.active_x.attack.s0.o2": "{0}",
  "0.http.non_standard_technology.active_x.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.non_standard_technology.active_x.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.non_standard_technology.active_x.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.non_standard_technology.active_x.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.http.non_standard_technology.active_x.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.non_standard_technology.active_x.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.non_standard_technology.active_x.result.s1.o1": "{0}",
  "0.http.non_standard_technology.active_x.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.http.non_standard_technology.active_x.result.s2.o1": "{0}",
  "0.http.non_standard_technology.active_x.result.s3.o0": "해당 속성 값은 ActiveX 기술을 사용했음을 의미합니다.",
  "0.http.non_standard_technology.active_x.solution.s0.o0": "ActiveX 기술을 대체하는 표준 기술을 사용하세요.",
  "0.http.non_standard_technology.flash.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.non_standard_technology.flash.attack.s0.o1": "{0}",
  "0.http.non_standard_technology.flash.attack.s0.o2": "{0}",
  "0.http.non_standard_technology.flash.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.non_standard_technology.flash.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.non_standard_technology.flash.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.non_standard_technology.flash.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.http.non_standard_technology.flash.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.non_standard_technology.flash.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.non_standard_technology.flash.result.s1.o1": "{0}",
  "0.http.non_standard_technology.flash.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.http.non_standard_technology.flash.result.s2.o1": "{0}",
  "0.http.non_standard_technology.flash.result.s3.o0": "해당 속성 값은 Adobe Flash 기술을 사용했음을 의미합니다.",
  "0.http.non_standard_technology.flash.solution.s0.o0": "Adobe Flash 기술을 대체하는 표준 기술을 사용하세요.",
  "0.http.non_standard_technology.java_applet.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.non_standard_technology.java_applet.attack.s0.o1": "{0}",
  "0.http.non_standard_technology.java_applet.attack.s0.o2": "{0}",
  "0.http.non_standard_technology.java_applet.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.non_standard_technology.java_applet.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.non_standard_technology.java_applet.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.non_standard_technology.java_applet.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.http.non_standard_technology.java_applet.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.non_standard_technology.java_applet.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.non_standard_technology.java_applet.result.s1.o1": "{0}",
  "0.http.non_standard_technology.java_applet.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.http.non_standard_technology.java_applet.result.s2.o1": "{0}",
  "0.http.non_standard_technology.java_applet.result.s3.o0": "해당 속성 값은 Java Applet 기술을 사용했음을 의미합니다.",
  "0.http.non_standard_technology.java_applet.solution.s0.o0": "Java Applet 기술을 대체하는 표준 기술을 사용하세요.",
  "0.http.non_standard_technology.silverlight.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.non_standard_technology.silverlight.attack.s0.o1": "{0}",
  "0.http.non_standard_technology.silverlight.attack.s0.o2": "{0}",
  "0.http.non_standard_technology.silverlight.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.non_standard_technology.silverlight.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.non_standard_technology.silverlight.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.non_standard_technology.silverlight.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.http.non_standard_technology.silverlight.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.non_standard_technology.silverlight.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.non_standard_technology.silverlight.result.s1.o1": "{0}",
  "0.http.non_standard_technology.silverlight.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.http.non_standard_technology.silverlight.result.s2.o1": "{0}",
  "0.http.non_standard_technology.silverlight.result.s3.o0": "해당 속성 값은 Microsoft Silverlight 기술을 사용했음을 의미합니다.",
  "0.http.non_standard_technology.silverlight.solution.s0.o0": "Microsoft Silverlight 기술을 대체하는 표준 기술을 사용하세요.",
  "0.http.non_standard_technology.windows_media_player.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.non_standard_technology.windows_media_player.attack.s0.o1": "{0}",
  "0.http.non_standard_technology.windows_media_player.attack.s0.o2": "{0}",
  "0.http.non_standard_technology.windows_media_player.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "0.http.non_standard_technology.windows_media_player.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "0.http.non_standard_technology.windows_media_player.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "0.http.non_standard_technology.windows_media_player.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "0.http.non_standard_technology.windows_media_player.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "0.http.non_standard_technology.windows_media_player.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "0.http.non_standard_technology.windows_media_player.result.s1.o1": "{0}",
  "0.http.non_standard_technology.windows_media_player.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "0.http.non_standard_technology.windows_media_player.result.s2.o1": "{0}",
  "0.http.non_standard_technology.windows_media_player.result.s3.o0": "해당 속성 값은 Windows Media Player 기술을 사용했음을 의미합니다.",
  "0.http.non_standard_technology.windows_media_player.solution.s0.o0": "Windows Media Player 기술을 대체하는 표준 기술을 사용하세요.",
  "0.http.options_method_enable.options.attack.s0.o0": "OPTIONS 메소드 허용 취약점은 웹 서버가 허용되지 않는 사용자에게 OPTIONS 메소드의 결과를 돌려주는 취약점입니다.",
  "0.http.options_method_enable.options.attack.s0.o0 ": " OPTIONS 메소드 허용 취약점은 웹서버가 허용되지 않는 사용자에게 OPTIONS 메소드의 결과를 돌려주는 취약점입니다.",
  "0.http.options_method_enable.options.attack.s1.o0": "OPTIONS 메소드는 현재 웹 서버에서 지원하는 메소드의 종류를 확인할 때 사용할 수 있는 메소드입니다.",
  "0.http.options_method_enable.options.attack.s1.o0 ": " OPTIONS 메소드는 현재 웹서버에서 지원하는 메소드의 종류를 알고자 할 때 사용할 수 있는 메소드입니다.",
  "0.http.options_method_enable.options.attack.s1.o1": "이러한 OPTIONS 메소드의 허용은 웹 서버의 민감한 정보를 노출할 수 있으며, 2차적 공격으로 이어질 수 있습니다.",
  "0.http.options_method_enable.options.attack.s1.o1 ": " 이러한 OPTIONS 메소드의 허용은 웹서버의 민감한 정보를 노출할 수 있으며, 2차적 공격으로 이어질 수 있습니다.",
  "0.http.options_method_enable.options.attack.s2.o0": "비인가된 OPTIONS 메소드를 검출하기 위해 {0} 메소드를 설정한 다음의 HTTP 요청을 보냈습니다.",
  "0.http.options_method_enable.options.attack.s2.o0 ": " 비인가된 OPTIONS 메소드를 검출하기 위해 {0} 메소드를 설정한 다음의 HTTP 요청을 보냈습니다.",
  "0.http.options_method_enable.options.attack.s3.o0": "{0}",
  "0.http.options_method_enable.options.attack.s3.o1": "{0}",
  "0.http.options_method_enable.options.result.s0.o0": "HTTP 요청에 따른 HTTP 응답은 다음과 같습니다.",
  "0.http.options_method_enable.options.result.s0.o0 ": " HTTP 요청에 따른 HTTP 응답은 다음과 같습니다.",
  "0.http.options_method_enable.options.result.s1.o0": "{0}",
  "0.http.options_method_enable.options.result.s2.o0": "OPTIONS 메소드 HTTP 요청에 대하여 다음의 허용된 HTTP 메소드 목록이 포함되었음을 확인할 수 있습니다.",
  "0.http.options_method_enable.options.result.s2.o0 ": " OPTIONS 메소드 HTTP 요청에 대하여 아래의 허용된 HTTP 메소드 목록이 포함되었음을 확인할 수 있습니다.",
  "0.http.options_method_enable.options.result.s3.o0": "{0}",
  "0.http.options_method_enable.options.solution.s0.o0": "임의의 사용자에 의한 OPTIONS 메소드 HTTP 요청은 허용하지 않도록 권장합니다.",
  "0.http.options_method_enable.options.solution.s0.o0 ": " 임의의 사용자에 의한 OPTIONS 메소드 HTTP 요청은 허용하지 않는 것을 추천합니다.",
  "0.http.options_method_enable.options.solution.s0.o1": "이를 위하여 적절한 서버 설정이 필요합니다.",
  "0.http.options_method_enable.options.solution.s0.o1 ": " 이를 위하여 적절한 서버 설정이 필요합니다.",
  "0.http.parameter_tamper.error.attack.s0.o0": "매개변수 변조는 URL이나 FORM 태그 등의 매개변수를 탈취하여 값을 바꾸는 공격입니다.",
  "0.http.parameter_tamper.error.attack.s0.o1": "공격자는 매개변수 변조를 통해 쇼핑 웹 애플리케이션의 상품 가격 변경 등의 정상적인 값을 변경하여 악용할 수 있습니다.",
  "0.http.parameter_tamper.error.attack.s0.o2": "또한, 사용자의 세션이나 사용자가 입력한 값들을 쿠키나 헤더에 저장하도록 하여 탈취할 수도 있으며,",
  "0.http.parameter_tamper.error.attack.s0.o3": "이러한 매개변수 변조에 취약한 부분을 검출하기 위해 매개변수 값을 웹 애플리케이션에 오류를 발생시키는 {0} 공격 문자열로 변경한 HTTP 요청을 다음과 같이 보냅니다.",
  "0.http.parameter_tamper.error.attack.s1.o0": "{0}",
  "0.http.parameter_tamper.error.attack.s1.o1": "{0}",
  "0.http.parameter_tamper.error.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.parameter_tamper.error.result.s1.o0": "{0}",
  "0.http.parameter_tamper.error.result.s2.o0": "매개변수 변조로 보낸 {0} 공격 문자열로 인해 오류가 발생했음을 확인할 수 있습니다.",
  "0.http.parameter_tamper.error.solution.s0.o0": "매개변수 변조를 막기 위해서는 매개변수 값의 최대/최소 길이를 설정하거나, 허용되는 값의 범위, 패턴 등을 통해 매개변수 값을 제한하고 유효성을 확인해야 합니다.",
  "0.http.parameter_tamper.error.solution.s0.o1": "이러한 유효성 검사 이외에도 매개변수로 입력되는 값에 대한 화이트리스트를 만들어 승인된 것만 받아들이거나 블랙릭스트를 만들어 승인되지 않은 값을 차단해야 합니다.",
  "0.http.parameter_tamper.error.solution.s0.o2": "HTTP 요청의 헤더, 쿠키, URL의 매개변수, 폼 필드 값 등 HTTP 요청의 모든 부분에 대해 변조 가능성을 고려해야 합니다.",
  "0.http.passport_number_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.passport_number_disclosure.match.attack.s0.o1": "{0}",
  "0.http.passport_number_disclosure.match.attack.s0.o2": "{0}",
  "0.http.passport_number_disclosure.match.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.passport_number_disclosure.match.result.s0.o1": "{0}",
  "0.http.passport_number_disclosure.match.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.passport_number_disclosure.match.result.s1.o1": "{0}",
  "0.http.passport_number_disclosure.match.result.s1.o2": "해당 문자열은 여권번호에 해당합니다.",
  "0.http.passport_number_disclosure.match.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 여권번호를 발견했습니다.",
  "0.http.passport_number_disclosure.match.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 여권번호를 탈취할 수 있습니다.",
  "0.http.passport_number_disclosure.match.solution.s0.o0": "HTTP 응답 본문에 여권번호를 포함하지 않아야 합니다.",
  "0.http.passport_number_disclosure.match.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 여권번호 노출 여부를 점검해야 합니다.",
  "0.http.password_autocomplete.form.attack.s0.o0": "비밀번호 자동완성은 사용자의 편의성을 위해 암호를 자동으로 완성하는 기능입니다.",
  "0.http.password_autocomplete.form.attack.s0.o1": "하지만 비밀번호 자동완성은 OTP(One-Time Password)와 같이 앞으로 필요 없는 암호가 자동으로 완성될 수도 있고,",
  "0.http.password_autocomplete.form.attack.s0.o2": "무엇보다도 주민번호나 카드 보안 코드와 같이 중요한 정보를 자동으로 폼 태그에 제출할 수도 있습니다.",
  "0.http.password_autocomplete.form.attack.s1.o0": "이러한 비밀번호 자동완성을 막기 위해서는 폼 태그 또는 암호를 입력하는 INPUT 태그에 'off' 값을 가지는 autocomplete 속성을 추가해야 합니다.",
  "0.http.password_autocomplete.form.attack.s1.o1": "autocomplete 속성 값을 'off'로 설정하는 경우 브라우저는 사용자가 이전에 폼 태그의 필드에 입력한 암호를 비슷한 사용자 입력값에 자동적으로 입력하지 않습니다. 또한, 입력값이 브라우저의 세션 히스토리에 캐시로 저장되지 않도록 막습니다.",
  "0.http.password_autocomplete.form.result.s0.o0": "해당 페이지의 HTTP 응답은 다음과 같습니다.",
  "0.http.password_autocomplete.form.result.s1.o0": "{0}",
  "0.http.password_autocomplete.form.result.s2.o0": "위의 HTTP 응답에서 {0}에 autocomplete 속성이 없거나 autocomplete 속성의 값이 off가 아님을 확인할 수 있습니다.",
  "0.http.password_autocomplete.form.solution.s0.o0": "Form 태그에서 비밀번호 자동 완성을 막기 위해서는 다음 예시와 같이 off 값을 가지는 autocomplete 속성을 Form 태그에 추가해야 합니다.",
  "0.http.password_autocomplete.form.solution.s1.o0": "{0}",
  "0.http.password_autocomplete.form.solution.s2.o0": "또는, 폼 태그 내부에 암호 등의 중요한 값이 입력되는 INPUT 태그에 off 값을 가지는 autocomplete 속성을 추가해야 합니다.",
  "0.http.password_autocomplete.form.solution.s3.o0": "{0}",
  "0.http.path_traversal.invocation.attack.s0.o0": "경로 조작은 공격자가 입력하는 값이 디렉토리 경로 문자열에 사용되어 공격자가 웹 애플리케이션의 최상단 디렉토리 밖의 파일 시스템에 접근하는 공격입니다.",
  "0.http.path_traversal.invocation.attack.s0.o1": "공격자는 파일 시스템에 접근하여 웹 애플리케이션의 코드나 시스템 파일 등의 중요 정보에 접근할 수 있습니다.",
  "0.http.path_traversal.invocation.attack.s0.o2": "예를 들어, 다음과 같이 URL에 있는 매개변수 값이 파일을 불러오는데 쓰이는 경우,",
  "0.http.path_traversal.invocation.attack.s1.o0": "{0}",
  "0.http.path_traversal.invocation.attack.s2.o0": "다음과 같이 대부분의 파일 시스템이 상위 디렉토리의 경로를 나타내는데 쓰는 '../'을 사용하여 웹 애플리케이션의 최상단 디렉토리 밖에 있는 파일에 접근할 수 있습니다.",
  "0.http.path_traversal.invocation.attack.s3.o0": "{0}",
  "0.http.path_traversal.invocation.attack.s4.o0": "이러한 경로 조작이 가능한지를 확인하기 위해, 경로 조작을 위한 {0} 공격 문자열을 담은 HTTP 요청을 다음과 같이 보냈습니다.",
  "0.http.path_traversal.invocation.attack.s5.o0": "{0}",
  "0.http.path_traversal.invocation.attack.s5.o1": "{0}",
  "0.http.path_traversal.invocation.result.s0.o0": "서버 내에서 파일 시스템 접근을 위한 {0} API가 호출되었습니다.",
  "0.http.path_traversal.invocation.solution.s0.o0": "경로 조작을 막기 위해서는 사용자 입력을 파일 시스템의 파일 및 디렉토리 접근에 사용하지 말아야 합니다.",
  "0.http.path_traversal.invocation.solution.s0.o1": "사용자 입력을 사용해야 한다면, 사용자 입력이 경로의 전체에 적용되지 못하게 해야 하며, 사용자 입력의 유효성을 검사해야 합니다.",
  "0.http.path_traversal.invocation.solution.s0.o2": "또한, JAVA의 URI.normalize()와 같이 경로 조작이 가능한 값을 인코딩하는 함수를 사용하여 사용자 입력을 수정한 후에 사용해야 합니다.",
  "0.http.path_traversal.match.attack.s0.o0": "경로 조작은 공격자가 입력하는 값이 디렉토리 경로 문자열에 사용되어 공격자가 웹 애플리케이션의 최상단 디렉토리 밖의 파일 시스템에 접근하는 공격입니다.",
  "0.http.path_traversal.match.attack.s0.o1": "공격자는 파일 시스템에 접근하여 웹 애플리케이션의 코드나 시스템 파일 등의 중요 정보에 접근할 수 있습니다.",
  "0.http.path_traversal.match.attack.s0.o2": "예를 들어, 다음과 같이 URL에 있는 매개변수 값이 파일을 불러오는데 쓰이는 경우,",
  "0.http.path_traversal.match.attack.s1.o0": "{0}",
  "0.http.path_traversal.match.attack.s2.o0": "다음과 같이 대부분의 파일 시스템이 상위 디렉토리의 경로를 나타내는데 쓰는 '../'을 사용하여 웹 애플리케이션의 최상단 디렉토리 밖에 있는 파일에 접근할 수 있습니다.",
  "0.http.path_traversal.match.attack.s3.o0": "{0}",
  "0.http.path_traversal.match.attack.s4.o0": "이러한 경로 조작이 가능한지를 확인하기 위해, 경로 조작을 위한 {0} 공격 문자열을 담은 HTTP 요청을 다음과 같이 보냈습니다.",
  "0.http.path_traversal.match.attack.s5.o0": "{0}",
  "0.http.path_traversal.match.attack.s5.o1": "{0}",
  "0.http.path_traversal.match.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.path_traversal.match.result.s1.o0": "{0}",
  "0.http.path_traversal.match.result.s2.o0": "{0} 공격 문자열에 의해 경로가 조작되어 HTTP 응답에 파일 내용이 포함되었음을 확인할 수 있습니다.",
  "0.http.path_traversal.match.solution.s0.o0": "경로 조작을 막기 위해서는 사용자 입력을 파일 시스템의 파일 및 디렉토리 접근에 사용하지 말아야 합니다.",
  "0.http.path_traversal.match.solution.s0.o1": "사용자 입력을 사용해야 한다면, 사용자 입력이 경로의 전체에 적용되지 못하게 해야 하며, 사용자 입력의 유효성을 검사해야 합니다.",
  "0.http.path_traversal.match.solution.s0.o2": "또한, JAVA의 URI.normalize()와 같이 경로 조작이 가능한 값을 인코딩하는 함수를 사용하여 사용자 입력을 수정한 후에 사용해야 합니다.",
  "0.http.permissive_cors_setting.cors.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.permissive_cors_setting.cors.attack.s0.o1": "{0}",
  "0.http.permissive_cors_setting.cors.attack.s0.o2": "{0}",
  "0.http.permissive_cors_setting.cors.result.s0.o0": "응답의 헤더 중, Access-Control-Allow-Origin에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.permissive_cors_setting.cors.result.s0.o1": "{0}",
  "0.http.permissive_cors_setting.cors.result.s0.o2": "응답의 헤더 중, Access-Control-Allow-Credentials에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.permissive_cors_setting.cors.result.s0.o3": "{0}",
  "0.http.permissive_cors_setting.cors.solution.s0.o0": "Access-Control-Allow-Origin 헤더는 신뢰할 수 있는 특정 도메인으로 제한해야 하며, * 또는 null 설정을 피해야 합니다. 또한, Access-Control-Allow-Credentials 헤더는 반드시 필요한 경우에만 true로 설정하고, 특정 출처에만 CORS 요청을 허용하도록 구성해야 합니다.",
  "0.http.permissive_robots_txt_setting.setting.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.permissive_robots_txt_setting.setting.attack.s0.o1": "{0}",
  "0.http.permissive_robots_txt_setting.setting.attack.s0.o2": "{0}",
  "0.http.permissive_robots_txt_setting.setting.result.s0.o0": "{0}",
  "0.http.permissive_robots_txt_setting.setting.result.s0.o1": "잘못된 설정으로 검색 엔진을 통한 분석 대상 사이트의 정보 노출 가능성이 존재합니다.",
  "0.http.permissive_robots_txt_setting.setting.solution.s0.o0": "웹 서버의 최상위 경로(/)에 robots.txt 파일을 배치하고, User-agent 값을 변경하여 특정 검색 엔진의 접근을 차단할 수 있습니다. 또한, Disallow 지시어를 사용해 특정 디렉터리나 파일에 대한 검색 엔진의 접근을 제한하여 민감한 정보가 노출되지 않도록 설정해야 합니다.",
  "0.http.phf_command_execution.phf.attack.s0.o0": "PHF CGI 원격 명령 실행 취약점을 검출하기 위해 {0} 경로로 HTTP 요청을 보냈습니다.",
  "0.http.phf_command_execution.phf.attack.s1.o0": "HTTP 요청은 다음과 같습니다.",
  "0.http.phf_command_execution.phf.attack.s2.o0": "{0}",
  "0.http.phf_command_execution.phf.attack.s2.o1": "{0}",
  "0.http.phf_command_execution.phf.result.s0.o0": "PHF CGI 원격 명령 실행 취약점은 CGI 프로그램인 PHF의 'escape_shell_cmd()' 함수를 사용하여 사용자의 운영 체제에서 명령어를 실행하는 것을 목적으로 하는 공격입니다.",
  "0.http.phf_command_execution.phf.result.s1.o0": "HTTP 요청에 대한 HTTP 응답 메시지는 다음과 같습니다.",
  "0.http.phf_command_execution.phf.result.s2.o0": "{0}",
  "0.http.phf_command_execution.phf.result.s3.o0": "위 HTTP 응답 메시지에서 {0} 패턴의 시스템 정보가 노출되었습니다.",
  "0.http.phf_command_execution.phf.solution.s0.o0": "이 취약점을 해결하기 위해서 다음과 같은 지침을 따르세요.",
  "0.http.phf_command_execution.phf.solution.s1.o0": "PHF와 같이 'escape_shell_cmd()' 함수를 사용하는 취약한 CGI 프로그램을 사용하지 않도록 합니다.",
  "0.http.phf_command_execution.phf.solution.s2.o0": "사용이 불가피한 경우, 'escape_shell_cmd()' 함수를 사용하지 않도록 CGI 프로그램을 수정하세요.",
  "0.http.private_address_disclosure.pattern.attack.s0.o0": "개별 IP 주소 노출은 웹 페이지 또는 HTTP 응답에 개별 IP 주소가 노출되는 취약점을 말합니다.",
  "0.http.private_address_disclosure.pattern.attack.s1.o0": "공격자가 웹 애플리케이션의 공용 IP 주소를 추출하는 방법은 많아도, 같은 방법으로 내부적으로 사용되는 개별 IP 주소를 탈취할 수는 없습니다.",
  "0.http.private_address_disclosure.pattern.attack.s1.o1": "하지만, 개별 IP 주소가 노출이 되면 공격자는 웹 애플리케이션의 공격하는데 사용할 수 있습니다.",
  "0.http.private_address_disclosure.pattern.attack.s1.o2": "특히, 조직에 속해 있는 개별 IP 주소인 경우에 심각한 문제가 될 수 있습니다.",
  "0.http.private_address_disclosure.pattern.result.s0.o0": "해당 페이지의 HTTP 응답입니다.",
  "0.http.private_address_disclosure.pattern.result.s1.o0": "{0}",
  "0.http.private_address_disclosure.pattern.result.s2.o0": "위의 HTTP 응답 메시지에서 개별 IP 주소로 의심되는 부분이 다음과 같이 검출되었습니다.",
  "0.http.private_address_disclosure.pattern.result.s3.o0": "{0}",
  "0.http.private_address_disclosure.pattern.solution.s0.o0": "개별 IP 주소 노출을 막기 위해서는 웹 애플리케이션 내에 개별 IP 주소를 사용하지 않아야 합니다.",
  "0.http.private_address_disclosure.pattern.solution.s0.o1": "개별 IP 주소가 노출 될 가능성이 있는 서비스 배너나 디버그 메시지들을 검증해야 합니다.",
  "0.http.private_address_disclosure.pattern.solution.s0.o2": "개별 IP 주소를 사용해야 한다면, 개별 IP 주소를 다른 식별자로 변경하여 노출되어도 공격자가 사용할 수 없도록 해야 합니다.",
  "0.http.referrer_policy_header.match.attack.s0.o0": "Referrer-Policy 헤더가 누락되어 있거나 부적절한 옵션을 사용하고 있는지 확인하기 위해, 분석 대상 URL에 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.referrer_policy_header.match.attack.s1.o0": "{0}",
  "0.http.referrer_policy_header.match.result.s0.o0": "HTTP 요청에 대한 응답 결과는 다음과 같습니다.",
  "0.http.referrer_policy_header.match.result.s1.o0": "{0}",
  "0.http.referrer_policy_header.match.result.s2.o0": "위 HTTP 응답에서 Referrer-Policy 헤더에 부적절한 옵션인 {0}이 설정되어 있음을 발견했습니다.",
  "0.http.referrer_policy_header.match.result.s2.o1": "해당 옵션을 사용할 경우, Referer 헤더에 전체 URL이 포함되기 때문에 민감한 정보가 유출될 가능성이 있습니다.",
  "0.http.referrer_policy_header.match.result.s2.o2": "이러한 문제를 방지하기 위해 안전한 옵션으로 변경해야 합니다.",
  "0.http.referrer_policy_header.match.solution.s0.o0": "URL에 세션 토큰, 인증 정보 등 민감한 데이터를 포함하지 않도록 합니다.",
  "0.http.referrer_policy_header.match.solution.s0.o1": "추가적으로 Referrer-Policy 헤더를 설정하여 Referer 헤더에 포함되는 정보를 제한하거나 제거할 수 있습니다.",
  "0.http.referrer_policy_header.match.solution.s0.o2": "Referrer-Policy 헤더는 요청 대상과 출처, 프로토콜 보안 수준에 따라 Referer 헤더에 포함되는 정보를 제어할 수 있으며, 보안 및 개인정보 보호를 위해 적절한 옵션 설정이 필요합니다.",
  "0.http.referrer_policy_header.match.solution.s1.o0": "보안상 권장되는 Referrer-Policy 헤더 옵션으로는 no-referrer, same-origin, strict-origin, strict-origin-when-cross-origin 등이 있습니다.",
  "0.http.referrer_policy_header.match.solution.s1.o1": "반면, unsafe-url, no-referrer-when-downgrade 옵션은 Referer 헤더에 전체 URL을 포함하므로 사용을 지양해야 합니다.",
  "0.http.referrer_policy_header.missing.attack.s0.o0": "Referrer-Policy 헤더가 누락되어 있거나 부적절한 옵션을 사용하고 있는지 확인하기 위해, 분석 대상 URL에 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.referrer_policy_header.missing.attack.s1.o0": "{0}",
  "0.http.referrer_policy_header.missing.result.s0.o0": "HTTP 요청에 대한 응답 결과는 다음과 같습니다.",
  "0.http.referrer_policy_header.missing.result.s1.o0": "{0}",
  "0.http.referrer_policy_header.missing.result.s2.o0": "위 HTTP 응답 헤더에서 Referrer-Policy 헤더가 설정되어 있지 않음을 발견했습니다.",
  "0.http.referrer_policy_header.missing.result.s2.o1": "민감한 정보가 유출되는 것을 방지하기 위해 Referrer-Policy 헤더를 적절하게 설정해야 합니다.",
  "0.http.referrer_policy_header.missing.solution.s0.o0": "URL에 세션 토큰, 인증 정보 등 민감한 데이터를 포함하지 않도록 합니다.",
  "0.http.referrer_policy_header.missing.solution.s0.o1": "추가적으로 Referrer-Policy 헤더를 설정하여 Referer 헤더에 포함되는 정보를 제한하거나 제거할 수 있습니다.",
  "0.http.referrer_policy_header.missing.solution.s0.o2": "Referrer-Policy 헤더는 요청 대상과 출처, 프로토콜 보안 수준에 따라 Referer 헤더에 포함되는 정보를 제어할 수 있으며, 보안 및 개인정보 보호를 위해 적절한 옵션 설정이 필요합니다.",
  "0.http.referrer_policy_header.missing.solution.s1.o0": "보안상 권장되는 Referrer-Policy 헤더 옵션으로는 no-referrer, same-origin, strict-origin, strict-origin-when-cross-origin 등이 있습니다.",
  "0.http.referrer_policy_header.missing.solution.s1.o1": "반면, unsafe-url, no-referrer-when-downgrade 옵션은 Referer 헤더에 전체 URL을 포함하므로 사용을 지양해야 합니다.",
  "0.http.remote_file_include.execute.attack.s0.o0": "원격 파일 포함 취약점은 웹 애플리케이션이 파일을 업로드하거나 실행할 때 사용자 입력을 사용함으로써 발생하는 취약점입니다.",
  "0.http.remote_file_include.execute.attack.s0.o1": "공격자는 원격 파일 포함 취약점을 통해 악의적인 코드가 포함된 파일을 실행시켜 중요 정보를 탈취하거나 웹 애플리케이션의 비정상적인 동작을 야기합니다.",
  "0.http.remote_file_include.execute.attack.s0.o2": "웹 애플리케이션의 서버에 다음과 같이 원격 파일 포함 취약점인 코드가 있을 경우,",
  "0.http.remote_file_include.execute.attack.s1.o0": "{0}",
  "0.http.remote_file_include.execute.attack.s2.o0": "공격자는 다음과 같이 웹 애플리케이션의 서버에 악의적인 파일인 {0}을 포함시킬 수 있습니다.",
  "0.http.remote_file_include.execute.attack.s3.o0": "{0}",
  "0.http.remote_file_include.execute.attack.s4.o0": "이러한 원격 파일 포함 취약점을 검출하기 위해서 구글 링크가 포함된 HTTP 요청을 다음과 같이 보냈습니다.",
  "0.http.remote_file_include.execute.attack.s5.o0": "{0}",
  "0.http.remote_file_include.execute.attack.s5.o1": "{0}",
  "0.http.remote_file_include.execute.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.remote_file_include.execute.result.s1.o0": "{0}",
  "0.http.remote_file_include.execute.result.s2.o0": "HTTP 요청에 구글 페이지 내용이 포함되어 있음을 확인할 수 있습니다.",
  "0.http.remote_file_include.execute.solution.s0.o0": "원격 파일 포함 취약점을 없애기 위해서는 파일 업로드 및 실행에 사용자 입력을 사용하지 말아야 합니다.",
  "0.http.remote_file_include.execute.solution.s0.o1": "만약 사용자 입력을 사용해야 한다면, 사용자 인증을 강화하고 화이트리스트를 만들어 인증된 파일만 포함 및 실행하거나, 블랙리스트를 만들어 인증되지 않은 파일을 제외해야 합니다.",
  "0.http.remote_file_include.execute.solution.s0.o2": "이외에도 웹 방화벽을 통해 원격 파일의 업로드 자체를 막을 수 있습니다.",
  "0.http.resident_registration_number_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.resident_registration_number_disclosure.match.attack.s0.o1": "{0}",
  "0.http.resident_registration_number_disclosure.match.attack.s0.o2": "{0}",
  "0.http.resident_registration_number_disclosure.match.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.resident_registration_number_disclosure.match.result.s0.o1": "{0}",
  "0.http.resident_registration_number_disclosure.match.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.resident_registration_number_disclosure.match.result.s1.o1": "{0}",
  "0.http.resident_registration_number_disclosure.match.result.s1.o2": "해당 문자열은 주민등록번호에 해당합니다.",
  "0.http.resident_registration_number_disclosure.match.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 주민등록번호를 발견했습니다.",
  "0.http.resident_registration_number_disclosure.match.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 주민등록번호를 탈취할 수 있습니다.",
  "0.http.resident_registration_number_disclosure.match.solution.s0.o0": "HTTP 응답 본문에 주민등록번호를 포함하지 않아야 합니다.",
  "0.http.resident_registration_number_disclosure.match.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 주민등록번호 노출 여부를 점검해야 합니다.",
  "0.http.sensitive_information_in_error_pages.was.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.sensitive_information_in_error_pages.was.attack.s0.o1": "{0}",
  "0.http.sensitive_information_in_error_pages.was.attack.s0.o2": "{0}",
  "0.http.sensitive_information_in_error_pages.was.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.sensitive_information_in_error_pages.was.result.s0.o1": "{0}",
  "0.http.sensitive_information_in_error_pages.was.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.sensitive_information_in_error_pages.was.result.s1.o1": "{0}",
  "0.http.sensitive_information_in_error_pages.was.result.s2.o0": "분석 수행 결과, 대상 페이지는 {0} WAS(Web Application Server)의 오류 페이지이며, 해당 페이지에서의 중요 정보 노출을 확인했습니다.",
  "0.http.sensitive_information_in_error_pages.was.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 오류 페이지에 존재하는 중요 정보를 탈취할 수 있습니다.",
  "0.http.sensitive_information_in_error_pages.was.solution.s0.o0": "해당 페이지에서 발생하는 애플리케이션 오류를 수정해야 합니다.",
  "0.http.sensitive_information_in_error_pages.was.solution.s0.o1": "또는 오류 페이지에서 중요 정보가 노출되지 않도록 오류 페이지를 수정해야 합니다.",
  "0.http.sensitive_information_in_meta_tag.wp_version.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.sensitive_information_in_meta_tag.wp_version.attack.s0.o1": "{0}",
  "0.http.sensitive_information_in_meta_tag.wp_version.attack.s0.o2": "{0}",
  "0.http.sensitive_information_in_meta_tag.wp_version.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.sensitive_information_in_meta_tag.wp_version.result.s0.o1": "{0}",
  "0.http.sensitive_information_in_meta_tag.wp_version.result.s1.o0": "HTTP 응답의 본문 중, 본문의 {0} 태그의 {1} 속성 값에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.sensitive_information_in_meta_tag.wp_version.result.s1.o1": "{0}",
  "0.http.sensitive_information_in_meta_tag.wp_version.result.s1.o2": "해당 문자열은 WordPress 버전 정보에 해당합니다.",
  "0.http.sensitive_information_in_meta_tag.wp_version.result.s2.o0": "분석 수행 결과, 응답 본문의 {0} 태그로부터 민감한 정보에 해당하는 WordPress 버전 정보를 발견했습니다.",
  "0.http.sensitive_information_in_meta_tag.wp_version.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 서버에 대한 중요 정보를 얻을 수 있습니다.",
  "0.http.sensitive_information_in_meta_tag.wp_version.solution.s0.o0": "서버 구성 요소의 버전 정보를 노출하지 않아야 합니다.",
  "0.http.sensitive_information_in_meta_tag.wp_version.solution.s0.o1": "{0} 태그의 경우 외부 사이트에서 참조할 수 있으므로, 민감한 정보를 포함하지 않아야 합니다.",
  "0.http.server_information_disclosure.server.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.server_information_disclosure.server.attack.s0.o1": "{0}",
  "0.http.server_information_disclosure.server.attack.s0.o2": "{0}",
  "0.http.server_information_disclosure.server.result.s0.o0": "응답 헤더 중 {0} 헤더가 존재합니다.",
  "0.http.server_information_disclosure.server.result.s0.o1": "해당 헤더의 값이 다음과 같습니다.",
  "0.http.server_information_disclosure.server.result.s0.o2": "{0}",
  "0.http.server_information_disclosure.server.solution.s0.o0": "응답 헤더에서 Server 헤더값을 제거하거나 서버 정보를 노출하지 않도록 설정합니다. 또한, 최소한의 정보만 제공하도록 서버 설정을 변경하여 공격자가 서버 버전 정보를 수집하지 못하도록 해야 합니다.",
  "0.http.server_information_included_in_http_headers.included.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.server_information_included_in_http_headers.included.attack.s0.o1": "{0}",
  "0.http.server_information_included_in_http_headers.included.attack.s0.o2": "{0}",
  "0.http.server_information_included_in_http_headers.included.result.s0.o0": "HTTP 응답 헤더에 다음과 같이 서버의 버전 정보가 포함되어 있습니다.",
  "0.http.server_information_included_in_http_headers.included.result.s0.o1": "{0}",
  "0.http.server_information_included_in_http_headers.included.solution.s0.o0": "일반적으로 서버의 설정을 변경하여 버전 정보가 HTTP 응답 헤더에 포함되지 않도록 제한할 수 있습니다.",
  "0.http.server_information_included_in_http_headers.included.solution.s1.o0": "PHP의 경우 php.ini 파일의 설정을 아래와 같이 조정합니다.",
  "0.http.server_information_included_in_http_headers.included.solution.s1.o1": "{0}",
  "0.http.server_information_included_in_http_headers.included.solution.s2.o0": "Apache의 경우 httpd.conf 파일의 설정을 아래와 같이 조정합니다.",
  "0.http.server_information_included_in_http_headers.included.solution.s2.o1": "{0}",
  "0.http.server_information_included_in_http_headers.included.solution.s3.o0": "Nginx의 경우 fastcgi_hide_header 모듈을 사용하여 헤더를 숨기도록 지정합니다.",
  "0.http.server_information_included_in_http_headers.included.solution.s3.o1": "{0}",
  "0.http.server_information_included_in_http_headers.included.solution.s4.o0": "IIS의 경우 web.config 파일의 설정을 아래와 같이 조정합니다.",
  "0.http.server_information_included_in_http_headers.included.solution.s4.o1": "{0}",
  "0.http.server_information_included_in_http_headers.included.solution.s4.o2": "{0}",
  "0.http.server_side_code_disclosure.match.attack.s0.o0": "서버 측 코드 노출을 확인하기 위해, 분석 대상 URL에 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.server_side_code_disclosure.match.attack.s1.o0": "{0}",
  "0.http.server_side_code_disclosure.match.result.s0.o0": "HTTP 응답 본문에서 다음과 같이 서버 측 코드로 예상되는 데이터를 발견했습니다.",
  "0.http.server_side_code_disclosure.match.result.s0.o1": "이러한 코드가 노출될 경우, 공격자는 이를 이용하여 추가적인 공격을 시도할 가능성이 있습니다.",
  "0.http.server_side_code_disclosure.match.result.s1.o0": "{0}",
  "0.http.server_side_code_disclosure.match.solution.s0.o0": "서버 측에서 사용되는 코드는 디버깅이나 내부 테스트를 위해 의도적으로 공개된 경우를 제외하고 노출되지 않아야 합니다.",
  "0.http.server_side_code_disclosure.match.solution.s0.o1": "디버깅과 내부 테스트가 완료된 후에는 이러한 목적으로 사용된 코드와 설정도 반드시 제거해야 합니다.",
  "0.http.server_side_code_disclosure.match.solution.s1.o0": "또한, 웹 애플리케이션 설정이 미흡한 경우, 디렉터리 목록이 노출되어 인가되지 않은 사용자가 서버 측 코드를 직접 확인할 수 있습니다.",
  "0.http.server_side_code_disclosure.match.solution.s1.o1": "이를 방지하기 위해 디렉터리 목록 노출을 차단하는 설정을 적용해야 합니다.",
  "0.http.server_side_include.exec.attack.s0.o0": "SSI(Server Side Includes)란 HTML 태그 외에 웹 서버에서 해석하여 브라우저로 전달하는 간단한 서버 스크립트 언어입니다.",
  "0.http.server_side_include.exec.attack.s1.o0": "일반적으로 사용되는 SSI 지시문은 다음과 같습니다.",
  "0.http.server_side_include.exec.attack.s2.o0": "{0}",
  "0.http.server_side_include.exec.attack.s2.o1": "SSI 삽입은 공격자의 입력값이 SSI로 웹 애플리케이션의 서버에 악의적인 코드를 보내어 실행하는 공격입니다.",
  "0.http.server_side_include.exec.attack.s2.o2": "이를 통해 공격자는 웹 서버의 사용자 권한으로 OS 명령어를 수행하거나, 페이지에 악의적인 파일을 포함시키는 등의 동작을 수행할 수 있습니다.",
  "0.http.server_side_include.exec.attack.s2.o3": "이러한 SSI 삽입을 검출하기 위해 {0} 공격 문자열이 포함된 HTTP 요청을 다음과 같이 보냈습니다.",
  "0.http.server_side_include.exec.attack.s3.o0": "{0}",
  "0.http.server_side_include.exec.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.server_side_include.exec.result.s1.o0": "{0}",
  "0.http.server_side_include.exec.result.s2.o0": "위의 HTTP 응답에서 {0} 공격 문자열에 포함된 SSI가 실행되었음을 확인할 수 있습니다.",
  "0.http.server_side_include.exec.solution.s0.o0": "SSI 삽입을 막기 위해서는 SSI가 필요하지 않을 경우 SSI의 실행을 막아야 합니다.",
  "0.http.server_side_include.exec.solution.s0.o1": "SSI를 사용해야 하는 경우에는 해당 페이지에 필요한 SSI 지시문만 허용하고 다른 SSI 지시문은 막아야 합니다.",
  "0.http.server_side_include.exec.solution.s0.o2": "또한, SSI 포함된 페이지에서 사용자 입력이 SSI에 포함되어 실행되지 않도록 해야 합니다.",
  "0.http.server_side_template_injection.match.attack.s0.o0": "서버 측 템플릿 인젝션 취약점을 확인하기 위해, {0} 매개변수에 템플릿 엔진에서 사용되는 공격 문자열을 포함한 HTTP 요청을 전송했습니다.",
  "0.http.server_side_template_injection.match.attack.s1.o0": "해당 요청은 다음과 같습니다.",
  "0.http.server_side_template_injection.match.attack.s2.o0": "{0}",
  "0.http.server_side_template_injection.match.result.s0.o0": "조작된 HTTP 요청에 대한 응답 결과는 다음과 같습니다.",
  "0.http.server_side_template_injection.match.result.s1.o0": "{0}",
  "0.http.server_side_template_injection.match.result.s2.o0": "위 HTTP 응답 본문에서 {0} 문자열이 발견되었습니다.",
  "0.http.server_side_template_injection.match.result.s2.o1": "따라서 사용자의 입력이 적절하게 필터링되지 않아, 공격 문자열이 서버 측 템플릿 엔진에 삽입되어 동작했습니다.",
  "0.http.server_side_template_injection.match.solution.s0.o0": "서버 측 템플릿 인젝션 취약점을 대응하기 위해서는 Sanitization과 입력값 검증을 다중으로 적용하는 것이 가장 좋은 방법입니다.",
  "0.http.server_side_template_injection.match.solution.s1.o0": "1. Sanitization (코드 안정성 검사)",
  "0.http.server_side_template_injection.match.solution.s1.o1": "Sanitization은 사용자 입력으로부터 전달받은 파라미터 값이 템플릿 구문으로 해석되지 않도록 처리하는 방안입니다.",
  "0.http.server_side_template_injection.match.solution.s1.o2": "이를 위해 템플릿 파일을 미리 정의된 상태로 유지하고, 모든 사용자 입력은 템플릿에서 제공하는 안전한 변수로 처리해야 합니다.",
  "0.http.server_side_template_injection.match.solution.s1.o3": "다음은 자주 사용되는 템플릿 엔진별 Sanitization 예시입니다.",
  "0.http.server_side_template_injection.match.solution.s2.o0": "Python Jinja",
  "0.http.server_side_template_injection.match.solution.s2.o1": "render_template() 함수를 사용해야 합니다.",
  "0.http.server_side_template_injection.match.solution.s2.o2": "- 따라서 사용자 입력이 템플릿 구문으로 해석되지 않고, 문자열로 처리됩니다.",
  "0.http.server_side_template_injection.match.solution.s3.o0": "{0}",
  "0.http.server_side_template_injection.match.solution.s4.o0": "Spring Thymeleaf",
  "0.http.server_side_template_injection.match.solution.s4.o1": "th:utext 대신 th:text 코드를 사용해야 합니다.",
  "0.http.server_side_template_injection.match.solution.s4.o2": "- th:text는 자동으로 HTML 특수 문자를 이스케이프 처리합니다.",
  "0.http.server_side_template_injection.match.solution.s4.o3": "- th:utext는 HTML 이스케이프를 비활성화시키는 코드입니다.",
  "0.http.server_side_template_injection.match.solution.s5.o0": "{0}",
  "0.http.server_side_template_injection.match.solution.s6.o0": "이뿐만 아니라, 컨트롤러에서 반환되는 return 값에 사용자 입력 값을 포함해서는 안 됩니다.",
  "0.http.server_side_template_injection.match.solution.s6.o1": "만약, 사용자 입력 값을 포함하여 반환해야 한다면 @ResponseBody 어노테이션을 사용하여 Spring 프레임워크가 사용자 입력 값을 뷰 이름으로 해석하지 않고 단순 문자열로 해석하는 방법이 있습니다.",
  "0.http.server_side_template_injection.match.solution.s7.o0": "2. 입력값 검증",
  "0.http.server_side_template_injection.match.solution.s7.o1": "사용자 입력에서 서버 측 템플릿 인젝션 공격 구문에 주로 사용되는 {0} 등의 핵심 특수 문자를 입력받지 못하도록 필터링해야 합니다.",
  "0.http.server_side_template_injection.match.solution.s7.o2": "예를 들어, {{7*7}}를 입력했다면, 49가 아닌 특수 문자가 필터링 되어 77이 되어야 합니다.",
  "0.http.server_side_template_injection.match.solution.s8.o0": "템플릿 엔진별 사용하는 언어 및 특수문자",
  "0.http.server_side_template_injection.match.solution.s9.o0": "{0}",
  "0.http.session_id_url.external.attack.s0.o0": "현재 URL에 세션 토큰이 노출되었을 가능성이 높습니다.",
  "0.http.session_id_url.external.attack.s1.o0": "{0}",
  "0.http.session_id_url.external.attack.s2.o0": "세션 토큰의 노출 가능성이 높은 URL에 외부 링크가 존재하면, 공격자가 해당 세션을 통해 외부 링크에 접속할 수 있습니다.",
  "0.http.session_id_url.external.result.s0.o0": "세션 토큰의 노출 가능성이 높은 URL에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.session_id_url.external.result.s1.o0": "{0}",
  "0.http.session_id_url.external.result.s2.o0": "HTTP 응답에 외부 링크가 포함되어 있음을 확인할 수 있습니다.",
  "0.http.session_id_url.external.solution.s0.o0": "공격자가 노출된 세션을 통해 외부 링크에 접속할 수 없도록 하려면 세션에 만료기한을 두어야 합니다.",
  "0.http.session_id_url.external.solution.s0.o1": "근본적으로 해결하기 위해서는 세션이 노출되지 않도록 해야 합니다.",
  "0.http.session_id_url.url.attack.s0.o0": "다음과 같이 세션 토큰이 URL에 노출되면, 공격자는 타 사용자를 사칭하여 웹 애플리케이션에 접근할 수 있습니다.",
  "0.http.session_id_url.url.attack.s1.o0": "{0}",
  "0.http.session_id_url.url.attack.s2.o0": "공격자는 이를 통해 타 사용자의 권한으로 웹 애플리케이션 내에서 활동할 수 있습니다.",
  "0.http.session_id_url.url.result.s0.o0": "다음과 같이 URL에 세션 토큰이 노출되어 있습니다.",
  "0.http.session_id_url.url.result.s1.o0": "{0}",
  "0.http.session_id_url.url.solution.s0.o0": "세션 토큰의 노출을 막기 위해서는 가장 먼저, URL에 노출되지 않도록 만들어야 합니다.",
  "0.http.session_id_url.url.solution.s0.o1": "또한, 노출된 경우 손해를 방지하기 위해 세션의 만료기한을 두어 일정 시간 등의 조건이 되면 세션이 만료되도록 해야 합니다.",
  "0.http.silverlight_domain_policy.match.attack.s0.o0": "Silverlight에서 크로스 도메인 정책이 적절히 설정되어 있는지 확인하기 위해, 분석 대상 URL 경로를 {0}로 변경한 뒤 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.silverlight_domain_policy.match.attack.s1.o0": "{0}",
  "0.http.silverlight_domain_policy.match.result.s0.o0": "HTTP 응답 본문에서 모든 도메인에 대한 접근을 허용하고 있음을 발견했습니다.",
  "0.http.silverlight_domain_policy.match.result.s0.o1": "이러한 설정은 CSRF, XSS 등의 보안 취약점을 유발할 수 있으므로, 신뢰할 수 있는 도메인만 허용하도록 설정해야 합니다.",
  "0.http.silverlight_domain_policy.match.result.s1.o0": "{0}",
  "0.http.silverlight_domain_policy.match.solution.s0.o0": "Silverlight에서 크로스 도메인에 대한 접근 허용을 설정할 때, 모든 도메인(*)에 대한 접근을 허용해서는 안되며, 신뢰할 수 있는 특정 도메인만 허용해야 합니다.",
  "0.http.silverlight_domain_policy.match.solution.s1.o0": "Microsoft는 2021년 10월 12일을 끝으로 Silverlight의 공식 지원을 종료했습니다.",
  "0.http.silverlight_domain_policy.match.solution.s1.o1": "지원이 종료된 프로그램은 업데이트와 보안 패치가 제공되지 않기 때문에 공격 대상이 될 수 있습니다.",
  "0.http.silverlight_domain_policy.match.solution.s1.o2": "따라서, 웹 애플리케이션에 설치된 Silverlight를 제거하고 React, Angular, HTML5와 같은 최신 웹 기술로 대체해야 합니다.",
  "0.http.skb__admin_page_access_control__interface_protection.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__admin_page_access_control__interface_protection.match.attack.s0.o1": "{0}",
  "0.http.skb__admin_page_access_control__interface_protection.match.attack.s0.o2": "{0}",
  "0.http.skb__admin_page_access_control__interface_protection.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__admin_page_access_control__interface_protection.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__admin_page_access_control__interface_protection.match.result.s1.o0": "또한, 응답에 대한 최종 도착지 경로가 다음과 같습니다.",
  "0.http.skb__admin_page_access_control__interface_protection.match.result.s1.o1": "{0}",
  "0.http.skb__admin_page_access_control__interface_protection.match.result.s2.o0": "아울러, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__admin_page_access_control__interface_protection.match.result.s2.o1": "{0}",
  "0.http.skb__admin_page_access_control__interface_protection.match.result.s3.o0": "분석 수행 결과, 관리자 페이지로의 접근이 가능하며, 동시에 해당 관리자 페이지 접근 시 SSL 설정을 통한 보호 조치를 적용하지 않았음을 확인했습니다.",
  "0.http.skb__admin_page_access_control__interface_protection.match.solution.s0.o0": "관리자 인터페이스 보호를 위해 아래 “관리자 페이지 설정 규칙”을 최대한 준수하여, 추측이 불가능한 경로로 일반 사용자 영역과 분리해야 합니다.\n",
  "0.http.skb__admin_page_access_control__interface_protection.match.solution.s1.o0": "1. admin, manager, adm, system 등 관리자와 연관될 수 있는 단어 사용 금지\n",
  "0.http.skb__admin_page_access_control__interface_protection.match.solution.s2.o0": "2. index, default 등 디폴트 인덱스 파일 이름 사용 금지\n",
  "0.http.skb__admin_page_access_control__interface_protection.match.solution.s3.o0": "3. 웹 서버에서 디폴트 인덱스 페이지 사용을 비활성화하여, 정확한 경로 입력 시에만 페이지 연결이 가능하도록 설정\n",
  "0.http.skb__admin_page_access_control__interface_protection.match.solution.s4.o0": "4. 경로 Depth를 2단계 이상 사용\n",
  "0.http.skb__admin_page_access_control__interface_protection.match.solution.s5.o0": "5. 추측하기 어려운 포트 번호로 변경 (ex. 8080, 8888 등 사용 금지)",
  "0.http.skb__admin_page_access_control__path_manipulation.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__admin_page_access_control__path_manipulation.match.attack.s0.o1": "{0}",
  "0.http.skb__admin_page_access_control__path_manipulation.match.attack.s0.o2": "{0}",
  "0.http.skb__admin_page_access_control__path_manipulation.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__admin_page_access_control__path_manipulation.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__admin_page_access_control__path_manipulation.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__admin_page_access_control__path_manipulation.match.result.s1.o1": "{0}",
  "0.http.skb__admin_page_access_control__path_manipulation.match.result.s2.o0": "분석 수행 결과, 관리자 페이지로의 접근이 가능함을 확인했습니다.",
  "0.http.skb__admin_page_access_control__path_manipulation.match.solution.s0.o0": "관리자 인터페이스 보호를 위해 아래 “관리자 페이지 설정 규칙”을 최대한 준수하여, 추측이 불가능한 경로로 일반 사용자 영역과 분리해야 합니다.\n",
  "0.http.skb__admin_page_access_control__path_manipulation.match.solution.s1.o0": "1. admin, manager, adm, system 등 관리자와 연관될 수 있는 단어 사용 금지\n",
  "0.http.skb__admin_page_access_control__path_manipulation.match.solution.s2.o0": "2. index, default 등 디폴트 인덱스 파일 이름 사용 금지\n",
  "0.http.skb__admin_page_access_control__path_manipulation.match.solution.s3.o0": "3. 웹 서버에서 디폴트 인덱스 페이지 사용을 비활성화하여, 정확한 경로 입력 시에만 페이지 연결이 가능하도록 설정\n",
  "0.http.skb__admin_page_access_control__path_manipulation.match.solution.s4.o0": "4. 경로 Depth를 2단계 이상 사용\n",
  "0.http.skb__admin_page_access_control__path_manipulation.match.solution.s5.o0": "5. 추측하기 어려운 포트 번호로 변경 (ex. 8080, 8888 등 사용 금지)",
  "0.http.skb__directory_listing__directory_list.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__directory_listing__directory_list.match.attack.s0.o1": "{0}",
  "0.http.skb__directory_listing__directory_list.match.attack.s0.o2": "{0}",
  "0.http.skb__directory_listing__directory_list.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__directory_listing__directory_list.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__directory_listing__directory_list.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__directory_listing__directory_list.match.result.s1.o1": "{0}",
  "0.http.skb__directory_listing__directory_list.match.result.s2.o0": "분석 수행 결과, 디렉터리 리스팅 페이지에 대한 접근이 가능함을 확인했습니다.",
  "0.http.skb__directory_listing__directory_list.match.solution.s0.o0": "웹 서비스 중 WEB, WAS의 경우 디렉토리 나열(Directory Listing)의 설정을 비활성화해야 합니다.\n",
  "0.http.skb__directory_listing__directory_list.match.solution.s0.o1": "Apache: `httpd.conf` 파일 (Ubuntu 등 Debian 계열은 `apache2.conf`) 내의 `Options` 지시자에서 `Indexes`라는 옵션을 제거하거나 `-Indexes` 옵션을 삽입\n",
  "0.http.skb__directory_listing__directory_list.match.solution.s0.o2": "IIS 6/7/8/10: 인터넷 정보 서비스(IIS) 관리 - [해당 웹사이트] - [등록정보] - [홈 디렉터리] 탭에서 [디렉터리 검색] 해제\n",
  "0.http.skb__directory_listing__directory_list.match.solution.s0.o3": "JBoss, Apache Tomcat: web.xml 내 listings 값을 false로 설정\n",
  "0.http.skb__directory_listing__directory_list.match.solution.s0.o4": "JRun: default-web.xml 내 browseDirs 속성을 false로 설정\n",
  "0.http.skb__directory_listing__directory_list.match.solution.s0.o5": "WebLogic: weblogic.xml 내 weblogic-wep-app 요소의 index-directory-enabled 속성을 false로 설정\n",
  "0.http.skb__directory_listing__directory_list.match.solution.s0.o6": "WebtoB: http.m 내 Options 항목을 삭제하거나, Options를 `-Index`로 설정",
  "0.http.skb__directory_listing__repository_list.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__directory_listing__repository_list.match.attack.s0.o1": "{0}",
  "0.http.skb__directory_listing__repository_list.match.attack.s0.o2": "{0}",
  "0.http.skb__directory_listing__repository_list.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__directory_listing__repository_list.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__directory_listing__repository_list.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__directory_listing__repository_list.match.result.s1.o1": "{0}",
  "0.http.skb__directory_listing__repository_list.match.result.s2.o0": "분석 수행 결과, 디렉터리 리스팅 페이지에 대한 접근이 가능함을 확인했습니다.",
  "0.http.skb__directory_listing__repository_list.match.solution.s0.o0": "/CVS/ 혹은 /.svc/ 디렉터리 존재 시 해당 디렉터리 접근이 불가하도록 설정해야 합니다.\n",
  "0.http.skb__directory_listing__repository_list.match.solution.s0.o1": "- Apache",
  "0.http.skb__directory_listing__repository_list.match.solution.s0.o2": "httpd.conf 파일(우분투 등 데비안 계열은 apache2.conf) 내 <DirectoryMatch “/CVS/”> 혹은 <DirectoryMatch “/.svc/”> 태그 추가 후 Deny from all 속성 설정 후 재가동",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.attack.s0.o1": "{0}",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.attack.s0.o2": "{0}",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.result.s1.o1": "{0}",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.result.s2.o0": "분석 수행 결과, 디렉터리 경로 조작을 통한 중요 파일의 다운로드가 가능함을 확인했습니다.",
  "0.http.skb__directory_path_traversal__hardcoded_path_in_hidden_fields_or_js_files.match.solution.s0.o0": "발견한 파일 절대 경로를 노출할 필요가 없는 경우, 해당 파일 절대 경로를 HTTP 응답 본문에서 제거하세요.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.attack.s0.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.attack.s0.o2": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.result.s1.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.result.s2.o0": "분석 수행 결과, 디렉터리 경로 조작을 통한 중요 파일의 다운로드가 가능함을 확인했습니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s0.o0": "사용자로부터 전송받은 디렉터리 이름 및 파일명에 대하여 입력값 필수 검증이 필요합니다. 검증은 다음 문자에 대하여 수행해야 합니다.\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s1.o0": "- '.': Path Traversal 가능성의 확인\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s10.o0": ".NET 환경은 자체적으로 Path Traversal 을 막고 있으므로, 소스 자체적인 별다른 조치는 필요가 없으나 일부 .NET 버전에 해당 보안 메커니즘을 우회할 수 있는 취약점이 발견된 사례가 있으므로, 최신 패치를 설치할 것을 권고합니다.\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s11.o0": "해당 패치가 설치되어 있지 않은 경우 Global.asax에 다음과 같은 내용을 추가합니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s11.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s2.o0": "- '/': 특정 Path의 접근 가능성을 확인\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s3.o0": "- '\\': 운영환경에 따른 Path 접근 확인\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s4.o0": "- '%': UTF 인코딩 파라미터\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s5.o0": "또한, 입력값 검증 시 “../”을 기준으로 필터링하지 않아야 합니다. 아래 예시를 참고하세요.\n\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s6.o0": "[JSP] 예외처리 샘플 소스코드",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s6.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s7.o0": "[PHP] 예외처리 샘플 소스코드",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s7.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s8.o0": "[ASP] 예외처리 샘플 소스코드",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s8.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable.match.solution.s9.o0": "[ASP.NET] 예외처리 샘플 소스코드\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.attack.s0.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.attack.s0.o2": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.result.s1.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.result.s2.o0": "분석 수행 결과, 디렉터리 경로 조작을 통한 중요 파일의 다운로드가 가능함을 확인했습니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s0.o0": "사용자로부터 전송받은 디렉터리 이름 및 파일명에 대하여 입력값 필수 검증이 필요합니다. 검증은 다음 문자에 대하여 수행해야 합니다.\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s1.o0": "- '.': Path Traversal 가능성의 확인\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s10.o0": ".NET 환경은 자체적으로 Path Traversal 을 막고 있으므로, 소스 자체적인 별다른 조치는 필요가 없으나 일부 .NET 버전에 해당 보안 메커니즘을 우회할 수 있는 취약점이 발견된 사례가 있으므로, 최신 패치를 설치할 것을 권고합니다.\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s11.o0": "해당 패치가 설치되어 있지 않은 경우 Global.asax에 다음과 같은 내용을 추가합니다.",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s11.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s2.o0": "- '/': 특정 Path의 접근 가능성을 확인\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s3.o0": "- '\\': 운영환경에 따른 Path 접근 확인\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s4.o0": "- '%': UTF 인코딩 파라미터\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s5.o0": "또한, 입력값 검증 시 `../`을 기준으로 필터링하지 않아야 합니다. 아래 예시를 참고하세요.\n\n",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s6.o0": "[JSP] 예외처리 샘플 소스코드",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s6.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s7.o0": "[PHP] 예외처리 샘플 소스코드",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s7.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s8.o0": "[ASP] 예외처리 샘플 소스코드",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s8.o1": "{0}",
  "0.http.skb__directory_path_traversal__path_exposure_or_downloadable_with_encoding.match.solution.s9.o0": "[ASP.NET] 예외처리 샘플 소스코드\n",
  "0.http.skb__encrypted_transmission__connection_information_disclosure.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__encrypted_transmission__connection_information_disclosure.match.attack.s0.o1": "{0}",
  "0.http.skb__encrypted_transmission__connection_information_disclosure.match.attack.s0.o2": "{0}",
  "0.http.skb__encrypted_transmission__connection_information_disclosure.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__encrypted_transmission__connection_information_disclosure.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__encrypted_transmission__connection_information_disclosure.match.result.s0.o1": "{0}",
  "0.http.skb__encrypted_transmission__connection_information_disclosure.match.result.s0.o2": "분석 수행 결과, 해당 페이지에서 FTP, DB, 또는 시스템 접속 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.skb__encrypted_transmission__connection_information_disclosure.match.solution.s0.o0": "애플릿, 서블릿, jar, war 등에서 특정 리소스 참조 시 FTP, DB 등 시스템 접속 정보가 평문으로 노출되지 않도록 설계해야 합니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.cs.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.cs.attack.s1.o0": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.cs.attack.s1.o1": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.cs.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.cs.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.cs.result.s1.o0": "현재 사용 중인 cipher suite 중, 다음과 같은 cipher suite가 존재합니다: {0}\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.cs.result.s2.o0": "해당 cipher suite는 안전하지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.cs.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.hash.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.hash.attack.s1.o0": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.hash.attack.s1.o1": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.hash.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.hash.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.hash.result.s1.o0": "현재 사용 중인 인증서 중, 해시 알고리즘이 다음과 같은 인증서가 존재합니다: {0}\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.hash.result.s2.o0": "해당 인증서의 해시 알고리즘은 안전하지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.hash.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.length.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.length.attack.s1.o0": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.length.attack.s1.o1": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.length.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.length.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.length.result.s1.o0": "현재 사용 중인 인증서 중, 키 길이가 다음과 같은 인증서가 존재합니다: {0}\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.length.result.s2.o0": "해당 인증서의 키 길이가 충분히 길지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.length.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.period.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.period.attack.s1.o0": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.period.attack.s1.o1": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.period.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.period.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.period.result.s1.o0": "현재 사용 중인 인증서 중, 유효 기간이 다음과 같은 인증서가 존재합니다: {0}\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.period.result.s2.o0": "해당 인증서는 이미 만료되었으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.period.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.protocol.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.protocol.attack.s1.o0": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.protocol.attack.s1.o1": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.protocol.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.protocol.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.protocol.result.s1.o0": "현재 사용 중인 프로토콜의 버전이 다음과 같습니다: {0}\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.protocol.result.s2.o0": "해당 버전의 프로토콜은 안전하지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.protocol.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.rating.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.rating.attack.s1.o0": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.rating.attack.s1.o1": "{0}",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.rating.attack.s2.o0": "해당 요청에 대한 응답 본문을 분석했습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.rating.result.s0.o0": "응답 본문은 분석 대상에서 사용하는 SSL 및 TLS 설정에 대한 Qualys SSL Labs의 SSL Server Test 결과에 해당합니다. 해당 결과 중 프로토콜 버전에 대한 내용이 존재합니다.\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.rating.result.s1.o0": "전체 평가 등급이 다음과 같습니다: {0}\n",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.rating.result.s2.o0": "전체 평가 등급이 양호하지 않으므로, 추가적인 공격을 허용할 수 있습니다.",
  "0.http.skb__encrypted_transmission__insecure_versions_of_ssl_and_tls.rating.solution.s0.o0": "보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "0.http.skb__etc__adobe_flash_player.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__etc__adobe_flash_player.match.attack.s0.o1": "{0}",
  "0.http.skb__etc__adobe_flash_player.match.attack.s0.o2": "{0}",
  "0.http.skb__etc__adobe_flash_player.match.attack.s0.o3": "해당 요청에 대한 응답의 본문을 분석했습니다.",
  "0.http.skb__etc__adobe_flash_player.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__etc__adobe_flash_player.match.result.s1.o0": "{0}",
  "0.http.skb__etc__adobe_flash_player.match.result.s1.o1": "분석 수행 결과, 해당 페이지에서 Adobe Flash Player를 사용 중임을 확인했습니다.",
  "0.http.skb__etc__adobe_flash_player.match.solution.s0.o0": "Adobe Flash Player는 기술 지원이 중단되었으므로 사용하지 않도록 합니다. 대신, 개방형 웹 표준 기술인 WebGL, HTML5, WebAssembly 등으로 대체하여 구현하도록 합니다.",
  "0.http.skb__etc__php_my_admin.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__etc__php_my_admin.match.attack.s0.o1": "{0}",
  "0.http.skb__etc__php_my_admin.match.attack.s0.o2": "{0}",
  "0.http.skb__etc__php_my_admin.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__etc__php_my_admin.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__etc__php_my_admin.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__etc__php_my_admin.match.result.s1.o1": "{0}",
  "0.http.skb__etc__php_my_admin.match.result.s2.o0": "분석 수행 결과, 분석 대상에서 phpMyAdmin을 사용 중임을 확인했습니다.",
  "0.http.skb__etc__php_my_admin.match.solution.s0.o0": "phpMyAdmin 사용을 금지해야 합니다. phpMyAdmin 사용이 불가피한 경우, 최신 버전의 업데이트를 적용해야 합니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.result.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTP 프로토콜을 사용함을 의미합니다.\n",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.result.s1.o1": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.absolute_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.result.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTPS 프로토콜을 사용함을 의미합니다.\n",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.result.s1.o1": "또한 해당 form 태그의 method 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통하여 발생한 요청이 GET 메소드를 사용함을 의미합니다.\n",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.result.s1.o2": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 메소드를 사용하고 있음을 확인했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.get_method.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.result.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.result.s1.o0": "해당 form 태그의 action 속성값이 존재하지 않습니다. 이는 해당 form 태그를 통하여 발생한 요청을 해당 form 태그가 존재하는 페이지의 URL에 해당하는 위치로 전송함을 의미합니다. 따라서 해당 form 태그를 통하여 발생한 요청은 해당 form 태그가 존재하는 페이지의 URL과 동일한 프로토콜을 사용합니다.\n",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.result.s1.o1": "또한, 해당 form 태그가 존재하는 페이지의 URL은 다음과 같습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.result.s1.o2": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.result.s1.o3": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.result.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통하여 발생한 요청이 HTTPS 프로토콜을 사용함을 의미합니다.\n",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.result.s1.o1": "또한 해당 form 태그의 method 속성이 존재하지 않습니다. 이는 해당 form 태그를 통해 발생한 요청이 GET 메소드를 사용함을 의미합니다.\n",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.result.s1.o2": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 메소드를 사용하고 있음을 확인했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.no_method.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.result.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통하여 발생한 요청을 해당 form 태그가 존재하는 페이지의 URL에 대한 상대 경로 위치로 전송함을 의미합니다. 따라서 해당 form 태그를 통하여 발생한 요청은 해당 form 태그가 존재하는 페이지의 URL과 동일한 프로토콜을 사용합니다.\n",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.result.s1.o1": "또한, 해당 form 태그가 존재하는 페이지의 URL은 다음과 같습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.result.s1.o2": "{0}",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.result.s1.o3": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.skb__http_method_restriction__form_without_https_protocol_or_post_method.relative_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.result.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.result.s0.o3": "분석 수행 결과, 서버가 취약한 메소드 사용을 허용하고 있음을 확인했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_allowed.allow.solution.s0.o0": "HTTP Method 중 운영에 필수적인 Method(GET, POST)만 사용하고, 취약한 HTTP Method(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD Method는 취약하지 않지만 사용하지 않을 것이 좋습니다.)",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.attack.s1.o1": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.attack.s1.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.result.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.result.s0.o3": "해당 헤더 값을 기반으로, DELETE 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.result.s1.o0": "DELETE 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.result.s1.o2": "분석 수행 결과, TRACE 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.delete.solution.s0.o0": "HTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드는 취약하지 않지만 사용하지 않는 것이 좋습니다.)",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.attack.s1.o1": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.attack.s1.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.result.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.result.s0.o3": "해당 헤더 값을 기반으로, PUT 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.result.s1.o0": "PUT 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.result.s1.o1": "또한, 해당 응답의 헤더 중 Content-Location 헤더가 존재합니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.result.s1.o2": "분석 수행 결과, PUT 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.put.solution.s0.o0": "HTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드는 취약하지 않지만 사용하지 않는 것이 좋습니다.)",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.attack.s0.o1": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.attack.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.attack.s1.o1": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.attack.s1.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.result.s0.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.result.s0.o3": "해당 헤더 값을 기반으로, TRACE 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.result.s1.o0": "TRACE 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.result.s1.o1": "또한, 해당 응답의 본문에서 다음 문자열을 발견했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.result.s1.o2": "{0}",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.result.s1.o3": "분석 수행 결과, TRACE 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "0.http.skb__http_method_restriction__unsafe_methods_available.trace.solution.s0.o0": "HTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드는 취약하지 않지만 사용하지 않는 것이 좋습니다.)",
  "0.http.skb__improper_error_handling__db_error_messages.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__improper_error_handling__db_error_messages.match.attack.s0.o1": "{0}",
  "0.http.skb__improper_error_handling__db_error_messages.match.attack.s0.o2": "{0}",
  "0.http.skb__improper_error_handling__db_error_messages.match.attack.s0.o3": "해당 요청에 대한 응답의 본문을 분석했습니다.",
  "0.http.skb__improper_error_handling__db_error_messages.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__improper_error_handling__db_error_messages.match.result.s0.o1": "{0}",
  "0.http.skb__improper_error_handling__db_error_messages.match.result.s0.o2": "해당 문자열은 {0}에서 출력한 오류 메시지로 보입니다.\n",
  "0.http.skb__improper_error_handling__db_error_messages.match.result.s0.o3": "분석 수행 결과, DB 오류 메시지에 대한 처리가 불충분한 페이지가 존재함을 확인했습니다.",
  "0.http.skb__improper_error_handling__db_error_messages.match.solution.s0.o0": "적절한 DB 에러 메시지 처리가 필요합니다. 아래 예시를 참고하세요.\n",
  "0.http.skb__improper_error_handling__db_error_messages.match.solution.s0.o1": "예) [JAVA] 안전하지 않은 코드(printStackTrace)",
  "0.http.skb__improper_error_handling__db_error_messages.match.solution.s0.o2": "{0}",
  "0.http.skb__improper_error_handling__db_error_messages.match.solution.s0.o3": "예) [JAVA] 안전하지 않은 코드(getMessage)",
  "0.http.skb__improper_error_handling__db_error_messages.match.solution.s0.o4": "{0}",
  "0.http.skb__improper_error_handling__db_error_messages.match.solution.s0.o5": "예) [JAVA] 안전한 코드(예로써 제시함으로, 구현 시 다를 수 있음)",
  "0.http.skb__improper_error_handling__db_error_messages.match.solution.s0.o6": "{0}",
  "0.http.skb__improper_error_handling__default_error_pages.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__improper_error_handling__default_error_pages.match.attack.s0.o1": "{0}",
  "0.http.skb__improper_error_handling__default_error_pages.match.attack.s0.o2": "{0}",
  "0.http.skb__improper_error_handling__default_error_pages.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__improper_error_handling__default_error_pages.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__improper_error_handling__default_error_pages.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__improper_error_handling__default_error_pages.match.result.s1.o1": "{0}",
  "0.http.skb__improper_error_handling__default_error_pages.match.result.s2.o0": "분석 수행 결과, WAS에서 제공하는 기본 오류 페이지를 사용하고 있음을 확인했습니다.",
  "0.http.skb__improper_error_handling__default_error_pages.match.solution.s0.o0": "WEB/WAS 서버의 오류 페이지 설정이 필요합니다. WEB/WAS에서 설정이 필요한 HTTP Error Code 예시는 다음과 같습니다.\n",
  "0.http.skb__improper_error_handling__default_error_pages.match.solution.s0.o1": "- 400: 요청 실패, 문법상 오류로 서버가 요청사항을 이해하지 못함.\n",
  "0.http.skb__improper_error_handling__default_error_pages.match.solution.s0.o2": "- 401: 클라이언트 인증 실패\n",
  "0.http.skb__improper_error_handling__default_error_pages.match.solution.s0.o3": "- 403: 액세스 금지. 접근이 거부된 파일을 요청함.\n",
  "0.http.skb__improper_error_handling__default_error_pages.match.solution.s0.o4": "- 404: 찾을 수 없음. 서버가 요청한 파일이나 스크립트를 찾지 못함.\n",
  "0.http.skb__improper_error_handling__default_error_pages.match.solution.s0.o5": "- 405: Method를 허용할 수 없음.\n",
  "0.http.skb__improper_error_handling__default_error_pages.match.solution.s0.o6": "- 500: 서버 내부 오류\n",
  "0.http.skb__improper_error_handling__default_error_pages.match.solution.s0.o7": "- 501: 서버에서 지원하지 않는 요청 방법",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.attack.s0.o1": "{0}",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.attack.s0.o2": "{0}",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.result.s1.o1": "{0}",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.result.s2.o0": "분석 수행 결과, 해당 오류 페이지에서 서버 정보 등의 노출이 발생함을 확인했습니다.",
  "0.http.skb__improper_error_handling__information_exposure_on_error_pages.match.solution.s0.o0": "커스텀 오류 페이지를 생성하여 오류 발생 시 디폴트 오류 페이지가 나오지 않도록 예외 처리가 필요합니다. 커스텀 페이지 내에는 HTTP 상태 코드나 서버의 정보가 포함되지 않아야 합니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.credentials.solution.s0.o0": "웹 서버 소스 디렉터리의 /(최상위 경로)에 robots.txt를 설정합니다. User-agent의 값을 변경하여 특정 검색 엔진의 수집을 막거나, Disallow의 값을 조정하여 특정 디렉터리의 수집을 제한 가능합니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.disallow.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.disallow.attack.s0.o1": "{0}",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.disallow.attack.s0.o2": "{0}",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.disallow.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.disallow.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.disallow.result.s0.o1": "또한, 응답 본문 내의 Disallow의 값이 존재하지 않습니다.\n",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.disallow.result.s1.o0": "분석 수행 결과, 검색 엔진을 통한 분석 대상 사이트의 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.disallow.solution.s0.o0": "웹 서버 소스 디렉터리의 /(최상위 경로)에 robots.txt를 설정합니다. User-agent의 값을 변경하여 특정 검색 엔진의 수집을 막거나, Disallow의 값을 조정하여 특정 디렉터리의 수집을 제한 가능합니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.status.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.status.attack.s0.o1": "{0}",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.status.attack.s0.o2": "{0}",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.status.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.status.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.status.result.s0.o1": "분석 수행 결과, 검색 엔진을 통한 분석 대상 사이트의 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.status.solution.s0.o0": "웹 서버 소스 디렉터리의 /(최상위 경로)에 robots.txt를 설정합니다. User-agent의 값을 변경하여 특정 검색 엔진의 수집을 막거나, Disallow의 값을 조정하여 특정 디렉터리의 수집을 제한 가능합니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.user_agent.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.user_agent.attack.s0.o1": "{0}",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.user_agent.attack.s0.o2": "{0}",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.user_agent.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.user_agent.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.user_agent.result.s0.o1": "또한, 응답 본문 내의 User-agent의 값이 적절하지 않습니다.\n",
  "0.http.skb__information_exposure_via_search_engines__no_robots_txt.user_agent.result.s1.o0": "분석 수행 결과, 검색 엔진을 통한 분석 대상 사이트의 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.skb__injection_attack__command_injection.unix.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__injection_attack__command_injection.unix.attack.s0.o1": "{0}",
  "0.http.skb__injection_attack__command_injection.unix.attack.s0.o2": "{0}",
  "0.http.skb__injection_attack__command_injection.unix.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__injection_attack__command_injection.unix.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__injection_attack__command_injection.unix.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__injection_attack__command_injection.unix.result.s1.o1": "{0}",
  "0.http.skb__injection_attack__command_injection.unix.result.s2.o0": "분석 수행 결과, Unix 계열 운영체제 명령어 삽입 공격이 가능함을 확인했습니다.",
  "0.http.skb__injection_attack__command_injection.unix.solution.s0.o0": "애플리케이션은 운영체제로부터 명령어를 직접적으로 호출하지 않도록 구현해야 합니다.\n",
  "0.http.skb__injection_attack__command_injection.unix.solution.s1.o0": "명령어를 직접 호출하는 것이 필요한 경우에는, 데이터가 OS의 명령어 해석기에 전달되기 전에 입력값 검증 확인을 수행해야 합니다.\n",
  "0.http.skb__injection_attack__command_injection.unix.solution.s2.o0": "입력값에 대한 파라미터 데이터의 특수 문자에 대한 필터링 처리가 필요합니다. 해당 문자는 다음과 같습니다.",
  "0.http.skb__injection_attack__command_injection.unix.solution.s3.o1": "{0}",
  "0.http.skb__injection_attack__command_injection.windows.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__injection_attack__command_injection.windows.attack.s0.o1": "{0}",
  "0.http.skb__injection_attack__command_injection.windows.attack.s0.o2": "{0}",
  "0.http.skb__injection_attack__command_injection.windows.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__injection_attack__command_injection.windows.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__injection_attack__command_injection.windows.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__injection_attack__command_injection.windows.result.s1.o1": "{0}",
  "0.http.skb__injection_attack__command_injection.windows.result.s2.o0": "분석 수행 결과, Windows 계열 운영체제 명령어 삽입 공격이 가능함을 확인했습니다.",
  "0.http.skb__injection_attack__command_injection.windows.solution.s0.o0": "애플리케이션은 운영체제로부터 명령어를 직접적으로 호출하지 않도록 구현해야 합니다.\n",
  "0.http.skb__injection_attack__command_injection.windows.solution.s1.o0": "명령어를 직접 호출하는 것이 필요한 경우에는, 데이터가 OS 의 명령어 해석기에 전달되기 전에 입력값 검증 확인을 수행해야 합니다.\n",
  "0.http.skb__injection_attack__command_injection.windows.solution.s2.o0": "입력값에 대한 파라미터 데이터의 특수 문자에 대한 필터링 처리가 필요합니다. 해당 문자는 다음과 같습니다.",
  "0.http.skb__injection_attack__command_injection.windows.solution.s3.o1": "{0}",
  "0.http.skb__injection_attack__ssi_injection.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__injection_attack__ssi_injection.match.attack.s0.o1": "{0}",
  "0.http.skb__injection_attack__ssi_injection.match.attack.s0.o2": "{0}",
  "0.http.skb__injection_attack__ssi_injection.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__injection_attack__ssi_injection.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__injection_attack__ssi_injection.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__injection_attack__ssi_injection.match.result.s1.o1": "{0}",
  "0.http.skb__injection_attack__ssi_injection.match.result.s2.o0": "분석 수행 결과, SSI 삽입 공격이 가능함을 확인했습니다.",
  "0.http.skb__injection_attack__ssi_injection.match.solution.s0.o0": "사용자 입력값을 화이트리스트 방식으로 허용된 문자만 입력 가능하도록 검증 로직을 구현해야 합니다.",
  "0.http.skb__injection_attack__ssi_injection.match.solution.s0.o1": "특수문자를 사용해야 하는 경우, ‘<’, ‘>’, ‘”’, ‘(’, ‘)’, ‘#’, ‘&’ 등, 실행 명령이 아닌 일반 문자로 인식되도록 처리해야 합니다. 이는 다음과 같이 처리할 수 있습니다.",
  "0.http.skb__injection_attack__ssi_injection.match.solution.s0.o2": "{0}",
  "0.http.skb__injection_attack__ssi_injection.match.solution.s0.o3": "또한, 웹 애플리케이션 실행에 SSI 기능이 불필요할 경우, 아래와 같이 설정을 추가해야 합니다.\n",
  "0.http.skb__injection_attack__ssi_injection.match.solution.s0.o4": "Apache 설정 (httpd.conf)",
  "0.http.skb__injection_attack__ssi_injection.match.solution.s0.o5": "{0}",
  "0.http.skb__injection_attack__xpath_injection.error.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__injection_attack__xpath_injection.error.attack.s0.o1": "{0}",
  "0.http.skb__injection_attack__xpath_injection.error.attack.s0.o2": "{0}",
  "0.http.skb__injection_attack__xpath_injection.error.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__injection_attack__xpath_injection.error.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__injection_attack__xpath_injection.error.result.s0.o1": "{0}",
  "0.http.skb__injection_attack__xpath_injection.error.result.s1.o0": "해당 문자열은 XPath 처리 도중 구문 오류가 발생했음을 의미합니다.\n",
  "0.http.skb__injection_attack__xpath_injection.error.result.s2.o0": "분석 수행 결과, XPath 삽입 취약점의 존재 가능성을 확인했습니다.",
  "0.http.skb__injection_attack__xpath_injection.error.solution.s0.o0": "서비스의 특성에 따라 데이터를 XML로 처리하거나, 설정 정보 및 코드정보를 XML 데이터로 관리하는 경우 XML 쿼리 생성 시 입력값에 대한 검증 확인 작업을 수행해야 합니다.\n",
  "0.http.skb__injection_attack__xpath_injection.error.solution.s0.o1": "입력값을 사용한 경우 파라미터 데이터에 사용된 특수 문자를 필터링해야 합니다. 해당 문자는 다음과 같습니다.",
  "0.http.skb__injection_attack__xpath_injection.error.solution.s0.o2": "{0}",
  "0.http.skb__injection_attack__xpath_injection.error.solution.s1.o2": "SQL Injection과 마찬가지로 XPATH 쿼리에 입력되는 모든 값에 대한 유효성 검사를 수행해야 합니다.",
  "0.http.skb__injection_attack__xpath_injection.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__injection_attack__xpath_injection.match.attack.s0.o1": "{0}",
  "0.http.skb__injection_attack__xpath_injection.match.attack.s0.o2": "{0}",
  "0.http.skb__injection_attack__xpath_injection.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__injection_attack__xpath_injection.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__injection_attack__xpath_injection.match.result.s0.o1": "{0}",
  "0.http.skb__injection_attack__xpath_injection.match.result.s1.o0": "해당 문자열은 XPath 삽입 취약점 검출을 위하여 사용자가 정의한 검사 정규식에 해당합니다.\n",
  "0.http.skb__injection_attack__xpath_injection.match.result.s2.o0": "분석 수행 결과, XPath 삽입 취약점의 존재를 확인했습니다.",
  "0.http.skb__injection_attack__xpath_injection.match.solution.s0.o0": "서비스의 특성에 따라 데이터를 XML로 처리하거나, 설정 정보 및 코드정보를 XML 데이터로 관리하는 경우 XML 쿼리 생성 시 입력값에 대한 검증 확인 작업을 수행해야 합니다.\n",
  "0.http.skb__injection_attack__xpath_injection.match.solution.s0.o1": "입력값을 사용한 경우 파라미터 데이터에 사용된 특수 문자를 필터링해야 합니다. 해당 문자는 다음과 같습니다.",
  "0.http.skb__injection_attack__xpath_injection.match.solution.s0.o2": "{0}",
  "0.http.skb__injection_attack__xpath_injection.match.solution.s1.o2": "SQL Injection과 마찬가지로 XPATH 쿼리에 입력되는 모든 값에 대한 유효성 검사를 수행해야 합니다.",
  "0.http.skb__injection_attack__xxe.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__injection_attack__xxe.match.attack.s0.o1": "{0}",
  "0.http.skb__injection_attack__xxe.match.attack.s0.o2": "{0}",
  "0.http.skb__injection_attack__xxe.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__injection_attack__xxe.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__injection_attack__xxe.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__injection_attack__xxe.match.result.s2.o0": "{0}",
  "0.http.skb__injection_attack__xxe.match.result.s3.o0": "분석 수행 결과, XXE 삽입 공격이 가능함을 확인했습니다.",
  "0.http.skb__injection_attack__xxe.match.solution.s0.o0": "서버 내에서 XML 처리기를 사용할 때, DTDs(Document Type Definition)를 Disable로 설정하는 것이 좋습니다.\n",
  "0.http.skb__injection_attack__xxe.match.solution.s0.o1": "XML을 통해 삽입되는 서버 내 파일 경로에 대한 검증을 수행하여, 허가되지 않은 경로의 정보를 사용하지 못하도록 구현해야 합니다. (Positive 방식)\n",
  "0.http.skb__injection_attack__xxe.match.solution.s0.o2": "다음 URL을 참고하여, XML 파서 사용 시 XXE 공격을 예방할 수 있도록 구현해야 합니다.\n",
  "0.http.skb__injection_attack__xxe.match.solution.s0.o3": "{0}",
  "0.http.skb__sensitive_information_exposure__information_in_comments_or_plain_texts.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__sensitive_information_exposure__information_in_comments_or_plain_texts.match.attack.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__information_in_comments_or_plain_texts.match.attack.s0.o2": "{0}",
  "0.http.skb__sensitive_information_exposure__information_in_comments_or_plain_texts.match.attack.s0.o3": "해당 요청에 대한 응답의 본문을 분석했습니다.",
  "0.http.skb__sensitive_information_exposure__information_in_comments_or_plain_texts.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__sensitive_information_exposure__information_in_comments_or_plain_texts.match.result.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__information_in_comments_or_plain_texts.match.result.s1.o0": "분석 수행 결과, 해당 페이지에서 민감한 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.skb__sensitive_information_exposure__information_in_comments_or_plain_texts.match.solution.s0.o0": "스크립트 함수 내에 파일 업로드 정보, 테이블 정보, 특정 IP 나 URL Full 경로 사용을 제한하여야 하며, 필요시 설정 파일을 참조하도록 합니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.attack.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.attack.s0.o2": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.result.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTP 프로토콜을 사용함을 의미합니다.\n",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.result.s1.o1": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.absolute_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.attack.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.attack.s0.o2": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.result.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTPS 프로토콜을 사용함을 의미합니다.\n",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.result.s1.o1": "또한 해당 form 태그의 method 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 GET 메소드를 사용함을 의미합니다.\n",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.result.s1.o2": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 메소드를 사용하고 있음을 확인했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.get_method.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.attack.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.attack.s0.o2": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.result.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.result.s1.o0": "해당 form 태그의 action 속성값이 존재하지 않습니다. 이는 해당 form 태그를 통하여 발생한 요청을 해당 form 태그가 존재하는 페이지의 URL에 해당하는 위치로 전송함을 의미합니다. 따라서 해당 form 태그를 통하여 발생한 요청은 해당 form 태그가 존재하는 페이지의 URL과 동일한 프로토콜을 사용합니다.\n",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.result.s1.o1": "또한, 해당 form 태그가 존재하는 페이지의 URL은 다음과 같습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.result.s1.o2": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.result.s1.o3": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.attack.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.attack.s0.o2": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.result.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통해 발생한 요청이 HTTPS 프로토콜을 사용함을 의미합니다.\n",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.result.s1.o1": "또한 해당 form 태그의 method 속성이 존재하지 않습니다. 이는 해당 form 태그를 통해 발생한 요청이 GET 메소드를 사용함을 의미합니다.\n",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.result.s1.o2": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 메소드를 사용하고 있음을 확인했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.no_method.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.attack.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.attack.s0.o2": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.result.s0.o0": "응답의 본문에서 중요 정보를 포함하는 form 태그를 발견했습니다. 해당 form 태그의 XPath는 다음과 같습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.result.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.result.s1.o0": "해당 form 태그의 action 속성값이 다음과 같습니다: {0} 이는 해당 form 태그를 통하여 발생한 요청을 해당 form 태그가 존재하는 페이지의 URL에 대한 상대 경로 위치로 전송함을 의미합니다. 따라서 해당 form 태그를 통하여 발생한 요청은 해당 form 태그가 존재하는 페이지의 URL과 동일한 프로토콜을 사용합니다.\n",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.result.s1.o1": "또한, 해당 form 태그가 존재하는 페이지의 URL은 다음과 같습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.result.s1.o2": "{0}",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.result.s1.o3": "분석 수행 결과, 중요 정보를 전달할 때 적절하지 않은 프로토콜을 사용하고 있음을 확인했습니다.",
  "0.http.skb__sensitive_information_exposure__public_admin_without_ssl.relative_action.solution.s0.o0": "form 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성값을 설정해야 합니다. 또한, POST 메소드를 사용하여 전송하도록 해당 form 태그의 method 속성값을 설정해야 합니다.",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.attack.s0.o0": "서버 정보를 확인하기 위해 아래의 요청의 응답을 확인합니다.",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.attack.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.result.s0.o0": "HTTP 응답 헤더에 다음과 같이 서버의 버전 정보가 포함되어 있습니다.",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.result.s0.o1": "{0}",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.result.s1.o0": "분석 수행 결과, 해당 페이지에서 민감한 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.solution.s0.o0": "서버의 버전 정보는 일반적으로 서버의 설정을 변경하여 버전 정보가 HTTP 응답 헤더에 포함되지 않도록 제한할 수 있습니다.\n",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.solution.s1.o0": "- PHP의 경우 php.ini 파일의 설정을 아래와 같이 조정합니다.\n",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.solution.s2.o0": "- Apache의 경우 httpd.conf 파일의 설정을 아래와 같이 조정합니다.\n",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.solution.s3.o0": "- Nginx의 경우 fastcgi_hide_header 모듈을 사용하여 헤더를 숨기도록 지정합니다.\n",
  "0.http.skb__sensitive_information_exposure__server_information_in_response_headers.server.solution.s4.o0": "- IIS의 경우 web.config 파일의 설정을 아래와 같이 조정합니다.",
  "0.http.skb__sql_injection__errors_on_special_characters.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__sql_injection__errors_on_special_characters.match.attack.s0.o1": "{0}",
  "0.http.skb__sql_injection__errors_on_special_characters.match.attack.s0.o2": "{0}",
  "0.http.skb__sql_injection__errors_on_special_characters.match.attack.s0.o3": "해당 요청에 대한 응답의 본문을 분석했습니다.",
  "0.http.skb__sql_injection__errors_on_special_characters.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__sql_injection__errors_on_special_characters.match.result.s0.o1": "{0}",
  "0.http.skb__sql_injection__errors_on_special_characters.match.result.s0.o2": "해당 문자열은 {0}에서 출력한 오류 메시지로 보입니다.\n",
  "0.http.skb__sql_injection__errors_on_special_characters.match.result.s0.o3": "분석 수행 결과, SQL 인젝션 유발 가능성이 있는 위험한 문자에 대한 필터링이 충분하지 않음을 확인했습니다.",
  "0.http.skb__sql_injection__errors_on_special_characters.match.solution.s0.o0": "악의적인 사용자가 입력한 SQL 쿼리로 DBMS 및 데이터를 열람하거나 조작 가능하므로 사용자의 입력값에 대한 필터링을 구현해야 합니다. ', ;, --, #, /* */ 등의 특수문자는 대표적인 예시로 SQL 인젝션을 유발할 수 있는 위험한 문자이니 사용자 입력값으로 사용되지 않게 조심해야 합니다.\n\n",
  "0.http.skb__sql_injection__errors_on_special_characters.match.solution.s0.o1": "Java :",
  "0.http.skb__sql_injection__errors_on_special_characters.match.solution.s0.o2": "{0}",
  "0.http.skb__sql_injection__errors_on_special_characters.match.solution.s0.o3": "JSP :",
  "0.http.skb__sql_injection__errors_on_special_characters.match.solution.s0.o4": "{0}",
  "0.http.skb__sql_injection__errors_on_special_characters.match.solution.s0.o5": "PHP :",
  "0.http.skb__sql_injection__errors_on_special_characters.match.solution.s0.o6": "{0}",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.attack.s0.o0": "다음과 같은 요청을 1차 송신했습니다. 해당 요청으로 인해 SQL 쿼리를 처리하는 과정에서 지연이 발생할 것으로 가정합니다.",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.attack.s0.o1": "{0}",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.attack.s0.o2": "{0}",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.attack.s0.o3": "다음과 같은 요청을 2차 송신했습니다. 해당 요청으로 인해 SQL 쿼리를 처리하는 과정에서 지연이 발생하지 않을 것으로 가정합니다.",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.attack.s0.o4": "{0}",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.attack.s0.o5": "{0}",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.attack.s0.o6": "요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.result.s0.o0": "모든 응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.result.s0.o1": "1차 송신한 요청에 대한 응답 수신 시 다음과 같은 시간이 소요되었습니다: {0}초\n",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.result.s0.o2": "2차 송신한 요청에 대한 응답 수신 시 다음과 같은 시간이 소요되었습니다: {0}초\n",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.result.s0.o3": "1차 송신한 요청에 대한 응답 수신 시 {0}초 만큼의 추가 지연이 발생했습니다.\n",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.result.s0.o4": "분석 수행 결과, time-based blind SQL 삽입 공격 시도가 가능함을 확인했습니다.",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.solution.s0.o0": "악의적인 사용자가 입력한 SQL 쿼리로 DBMS 및 데이터를 열람하거나 조작 가능하므로 사용자의 입력값에 대한 필터링을 구현해야 합니다. ', ;, --, #, /* */ 등의 특수문자는 대표적인 예시로 SQL 인젝션을 유발할 수 있는 위험한 문자이니 사용자 입력값으로 사용되지 않게 조심해야 합니다.\n\n",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.solution.s0.o1": "Java :",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.solution.s0.o2": "{0}",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.solution.s0.o3": "JSP :",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.solution.s0.o4": "{0}",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.solution.s0.o5": "PHP :",
  "0.http.skb__sql_injection__run_normally_on_attack_code.time_based.solution.s0.o6": "{0}",
  "0.http.skb__temp_files_management__default_pages.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__temp_files_management__default_pages.match.attack.s0.o1": "{0}",
  "0.http.skb__temp_files_management__default_pages.match.attack.s0.o2": "{0}",
  "0.http.skb__temp_files_management__default_pages.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__temp_files_management__default_pages.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.\n",
  "0.http.skb__temp_files_management__default_pages.match.result.s1.o0": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__temp_files_management__default_pages.match.result.s1.o1": "{0}",
  "0.http.skb__temp_files_management__default_pages.match.result.s2.o0": "분석 수행 결과, 디폴트 페이지 혹은 샘플 파일에 대한 접근이 가능함을 확인했습니다.",
  "0.http.skb__temp_files_management__default_pages.match.solution.s0.o0": "웹 애플리케이션 운영에 필수적인 파일을 제외한 모든 불필요한 파일을 삭제해야 합니다.\n",
  "0.http.skb__temp_files_management__default_pages.match.solution.s0.o1": "*.tar, *.psd, *.fla, *.bak, *.test, *.txt, *.old, *.zip, *.날짜 등 불필요한 확장자를 검색하여 삭제하는 것이 좋습니다.\n",
  "0.http.skb__temp_files_management__default_pages.match.solution.s0.o2": "서비스 오픈 이후 추가 개발이나 유지 보수 후 불필요한 파일이 남아 있지 않은지 확인해야 합니다. 예시는 다음과 같습니다.\n",
  "0.http.skb__temp_files_management__default_pages.match.solution.s0.o3": "1. 초기 서비스 설치 시 디폴트로 설치되는 콘텐츠 및 서비스들을 비활성화\n",
  "0.http.skb__temp_files_management__default_pages.match.solution.s0.o4": "2. 디폴트 디렉터리 (/htdocs, /cig-bin) 등을 삭제 또는 변경\n",
  "0.http.skb__temp_files_management__default_pages.match.solution.s0.o5": "3. 디폴트 페이지 (Manual, Sample) 등을 삭제 또는 변경\n",
  "0.http.skb__temp_files_management__default_pages.match.solution.s0.o6": "개발 및 테스트 목적으로 필요한 파일의 경우 별도 테스트 프로젝트로 분리하여 관리합니다.",
  "0.http.skb__temp_files_management__information_in_browser_console.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__temp_files_management__information_in_browser_console.match.attack.s0.o1": "{0}",
  "0.http.skb__temp_files_management__information_in_browser_console.match.attack.s0.o2": "{0}",
  "0.http.skb__temp_files_management__information_in_browser_console.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__temp_files_management__information_in_browser_console.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__temp_files_management__information_in_browser_console.match.result.s1.o0": "{0}",
  "0.http.skb__temp_files_management__information_in_browser_console.match.result.s1.o1": "분석 수행 결과, 해당 페이지에서 민감한 정보 노출 가능성이 존재함을 확인했습니다.",
  "0.http.skb__temp_files_management__information_in_browser_console.match.solution.s0.o0": "소스코드 내 console.log() 등의 불필요한 로그 출력 함수를 모두 삭제해야 합니다.",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.attack.s0.o1": "{0}",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.attack.s0.o2": "{0}",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.result.s1.o0": "{0}",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.result.s1.o1": "분석 수행 결과, 해당 페이지에서 불필요한 파일의 다운로드 가능성이 존재함을 확인했습니다.",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.solution.s0.o0": "웹 애플리케이션 운영에 필수적인 파일을 제외한 모든 불필요한 파일을 삭제해야 합니다.",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.solution.s0.o1": "*.tar, *.psd, *.fla, *.bak, *.test, *.txt, *.old, *.zip, *.날짜 등 불필요한 확장자를 검색하여 삭제하는 것이 좋습니다.\n",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.solution.s0.o2": "서비스 오픈 이후 추가 개발이나 유지 보수 후 불필요한 파일이 남아 있지 않은지 확인하도록 합니다. 예를 들어, 초기 서비스 설치 시 디폴트로 설치되는 Contents 및 서비스들을 Disable 처리, 디폴트 디렉터리(/htdocs, /cig bin 등)를 삭제 또는 변경, 디폴트 페이지(Manual, Sample 등)를 삭제 또는 변경 등이 가능합니다.\n",
  "0.http.skb__temp_files_management__unnecessary_files_for_operation.match.solution.s0.o3": "개발 및 테스트 목적으로 필요한 파일의 경우 별도 테스트 프로젝트로 분리하여 관리하도록 합니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.attack.s0.o1": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.attack.s0.o2": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.result.s0.o0": "응답의 헤더 중, 이름이 {0}에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.result.s0.o1": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.result.s1.o0": "응답의 헤더 중, 이름이 {0}에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.result.s1.o1": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.result.s2.o0": "분석 수행 결과, CORS 설정이 올바르지 않음을 확인했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.solution.s0.o0": "CORS를 설정한 경우, Origin 헤더를 조작하여 요청을 발생시킬 수 있기 때문에 `Access-Control-Allow-Origin` 혹은 `Access-Control-Allow-Credentials` 헤더에만 의존한 접근 제어를 피해야 합니다.\n",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.solution.s0.o1": "예를 들어, 다음과 같은 CORS 정규식을 작성할 수 있습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.both.solution.s0.o2": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.attack.s0.o1": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.attack.s0.o2": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.result.s0.o0": "응답의 헤더 중, 이름이 {0}에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.result.s0.o1": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.result.s1.o0": "분석 수행 결과, CORS 설정이 올바르지 않음을 확인했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.solution.s0.o0": "CORS를 설정한 경우, Origin 헤더를 조작하여 요청을 발생시킬 수 있기 때문에 `Access-Control-Allow-Origin` 혹은 `Access-Control-Allow-Credentials` 헤더에만 의존한 접근 제어를 피해야 합니다.\n",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.solution.s0.o1": "예를 들어, 다음과 같은 CORS 정규식을 작성할 수 있습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.credentials.solution.s0.o2": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.attack.s0.o1": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.attack.s0.o2": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.attack.s0.o3": "해당 요청에 대한 응답의 코드 및 본문을 분석했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.result.s0.o0": "응답의 헤더 중, 이름이 {0}에 해당하는 헤더의 값이 다음과 같습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.result.s0.o1": "{0}",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.result.s1.o0": "분석 수행 결과, CORS 설정이 올바르지 않음을 확인했습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.solution.s0.o0": "CORS를 설정한 경우, Origin 헤더를 조작하여 요청을 발생시킬 수 있기 때문에 `Access-Control-Allow-Origin` 혹은 `Access-Control-Allow-Credentials` 헤더에만 의존한 접근 제어를 피해야 합니다.\n",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.solution.s0.o1": "예를 들어, 다음과 같은 CORS 정규식을 작성할 수 있습니다.",
  "0.http.skb__unvalidated_redirect_and_forward__cors.origin.solution.s0.o2": "{0}",
  "0.http.snoop_disclosure.request.attack.s0.o0": "Snoop 서블릿 정보 노출 취약점은 IBM WebSphere 또는 Apache Tomcat 에서 사용되고 있는 Snoop 서블릿에서 정보가 노출되는 취약점입니다.",
  "0.http.snoop_disclosure.request.attack.s1.o0": "Snoop 서블릿은 HTTP 요청 변조 등에 의해 서버의 호스트 정보, 서버 타입, 서버 버전, 경로 등의 중요 정보가 유출되는 취약점을 가지고 있습니다.",
  "0.http.snoop_disclosure.request.attack.s1.o1": "이러한 Snoop 서블릿을 사용한 Apache Tomcat 3.0, 3.1과 IBM WebSphere 8.0 이하 버전도 마찬가지 취약점을 가지고 있습니다.",
  "0.http.snoop_disclosure.request.attack.s2.o0": "공격자는 이러한 취약점을 통해 서버 정보를 탈취하여 다른 공격에 사용할 수 있습니다.",
  "0.http.snoop_disclosure.request.attack.s3.o0": "Snoop 서블릿 정보 노출 취약점을 검출하기 위해 {0} Snoop 서블릿 경로를 포함한 다음의 HTTP 요청을 보냈습니다.",
  "0.http.snoop_disclosure.request.attack.s4.o0": "{0}",
  "0.http.snoop_disclosure.request.attack.s4.o1": "{0}",
  "0.http.snoop_disclosure.request.result.s0.o0": "Snoop 서블릿 정보 노출 취약점을 검출하기 위해 보낸 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.snoop_disclosure.request.result.s1.o0": "{0}",
  "0.http.snoop_disclosure.request.result.s2.o0": "위의 HTTP 응답에 Snoop 정보 노출을 의미하는 {0} 문자열이 포함되었음을 확인할 수 있습니다.",
  "0.http.snoop_disclosure.request.solution.s0.o0": "Snoop 서블릿 정보 노출 취약점을 해결하기 위해서는 취약한 Snoop 서블릿과 이러한 Snoop 서블릿을 사용하고 있는 웹 서버의 사용을 피해야 합니다.",
  "0.http.sql_injection.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.sql_injection.match.attack.s0.o1": "{0}",
  "0.http.sql_injection.match.attack.s0.o2": "{0}",
  "0.http.sql_injection.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.sql_injection.match.result.s0.o1": "{0}",
  "0.http.sql_injection.match.result.s0.o2": "해당 문자열은 {0}에서 출력한 오류 메시지로 보입니다.",
  "0.http.sql_injection.match.solution.s0.o0": "사용자 입력값을 그대로 DB 질의문에 포함하지 않도록 하기 위해 입력값을 철저히 검증하고, SQL 쿼리를 안전하게 처리하기 위해 Prepared Statements 또는 ORM(Object-Relational Mapping)과 같은 방법을 사용해야 합니다.",
  "0.http.subresource_integrity.match.attack.s0.o0": "웹 브라우저에서 외부 리소스의 무결성을 검증하고 있는지 확인하기 위해, 분석 대상 URL에 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.subresource_integrity.match.attack.s1.o0": "{0}",
  "0.http.subresource_integrity.match.result.s0.o0": "HTTP 응답 본문에서 다음과 같이 외부 리소스의 무결성을 검증하는 속성이 누락되어 있는 것을 발견했습니다.",
  "0.http.subresource_integrity.match.result.s0.o1": "외부 리소스의 무결성을 검증하지 않을 경우, 공격자는 해당 리소스를 변조하거나 악성코드를 삽입할 위험이 있습니다.",
  "0.http.subresource_integrity.match.result.s1.o0": "{0}",
  "0.http.subresource_integrity.match.solution.s0.o0": "웹 브라우저는 SRI를 사용하여 외부 리소스의 무결성을 검사해야 합니다.",
  "0.http.subresource_integrity.match.solution.s0.o1": "다음은 SRI를 사용하는 방법입니다.",
  "0.http.subresource_integrity.match.solution.s1.o0": "<script> 또는 <link> 태그에 integrity 속성을 추가하여 리소스 파일의 해시 값을 지정합니다.",
  "0.http.subresource_integrity.match.solution.s1.o1": "integrity 속성이 존재하면 브라우저는 리소스를 로드하기 전에 해당 해시 값과 리소스의 무결성을 비교합니다.",
  "0.http.subresource_integrity.match.solution.s1.o2": "만약 파일의 해시 값이 일치하지 않으면, 브라우저는 리소스의 로드를 거부하고, 네트워크 오류를 반환합니다.",
  "0.http.subresource_integrity.match.solution.s2.o0": "integrity 속성의 값은 최소한 하나의 문자열로 시작하며, 각 문자열에는 사용된 해시 알고리즘(sha256, sha384, sha512 등)을 나타내는 접두사가 포함되고, 그 뒤에 base64로 인코딩된 해시 값이 이어집니다.",
  "0.http.subresource_integrity.match.solution.s3.o0": "외부 CDN을 통해 제공되는 리소스는 웹 개발에서 자주 사용되지만, 모든 CDN이 SRI를 지원하지는 않습니다.",
  "0.http.subresource_integrity.match.solution.s3.o1": "이러한 경우, 개발자는 SRI Hash Generator와 같은 도구를 사용하여 직접 해시 값을 생성하고 무결성 검사를 수행할 수 있습니다.",
  "0.http.subresource_integrity.match.solution.s4.o0": "그러나 동적으로 제공되거나 업데이트 주기가 짧은 리소스에 대해 수동으로 SRI 해시를 생성하는 것은 비효율적이며, 관리가 복잡해질 수 있습니다.",
  "0.http.subresource_integrity.match.solution.s4.o1": "예를 들어, 리소스가 업데이트될 때마다 기존 SRI 해시는 더 이상 유효하지 않게 되며, 매번 새로운 해시를 생성하고 적용해야 하는 번거로움이 발생합니다.",
  "0.http.subresource_integrity.match.solution.s4.o2": "이러한 이유로 Google Fonts, Google Maps, Kakao Maps와 같은 일부 CDN은 동적 콘텐츠 제공 방식으로 인해 SRI를 지원하지 않습니다.",
  "0.http.subresource_integrity.match.solution.s5.o0": "따라서, 외부 CDN이 SRI를 지원하지 않을 경우, SRI를 수동으로 적용하기보다 CSP(Content Security Policy)와 같은 보안 정책을 활용하여 외부 리소스에 대한 신뢰할 수 있는 출처를 지정하는 것이 더 적합합니다.",
  "0.http.temp_file_disclosure.access.attack.s0.o0": "임시 파일 노출 취약점은 개발자나 개발 도구에 의해 생성된 임시 파일이 삭제되지 않고 남아 임의의 사용자에게 노출되는 취약점입니다.",
  "0.http.temp_file_disclosure.access.attack.s1.o0": "공격자는 이 취약점을 이용하여 중요 정보 등이 포함된 임시 파일에 접근할 수 있습니다.",
  "0.http.temp_file_disclosure.access.attack.s1.o1": "이러한 임시 파일에 접근 가능한지 알아보기 위해 {0} 공격 문자열이 포함된 다음 URL에 접근을 시도했습니다.",
  "0.http.temp_file_disclosure.access.attack.s2.o0": "{0}",
  "0.http.temp_file_disclosure.access.result.s0.o0": "공격 문자열이 포함된 URL 접근 시도에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "0.http.temp_file_disclosure.access.result.s1.o0": "{0}",
  "0.http.temp_file_disclosure.access.result.s2.o0": "위 HTTP 응답 헤더를 통해서 임시 파일 경로가 포함된 URL에 접근됨을 확인할 수 있습니다.",
  "0.http.temp_file_disclosure.access.solution.s0.o0": "임시 파일 노출 취약점을 해결하는 가장 좋은 방법은 불필요한 임시 파일을 제거하는 것입니다.",
  "0.http.temp_file_disclosure.access.solution.s1.o0": "임시 파일이 필요한 경우에는 권한이 없는 임의의 사용자가 임시 파일에 접근하지 못하도록 막아야 합니다.",
  "0.http.temporary_file_disclosure.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.temporary_file_disclosure.match.attack.s0.o1": "{0}",
  "0.http.temporary_file_disclosure.match.attack.s0.o2": "{0}",
  "0.http.temporary_file_disclosure.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.temporary_file_disclosure.match.result.s0.o1": "{0}",
  "0.http.temporary_file_disclosure.match.solution.s0.o0": "필요하지 않은 임시 파일, 백업 파일, 로그 파일 등을 제거하여 정보 노출을 방지합니다. 또한, 이러한 파일이 서버에 남아있지 않도록 주기적으로 삭제하는 자동화된 프로세스를 적용하는 것을 권장합니다.",
  "0.http.tomcat_examples.access.attack.s0.o0": "Apache Tomcat 예제 취약점은 크로스 사이트 스크립팅 취약점을 가지고 있는 Apache Tomcat의 JSP 예제들이 노출되는 취약점입니다.",
  "0.http.tomcat_examples.access.attack.s1.o0": "Apache Tomcat의 /examples/ 아래에는 다양한 예제 코드들과 실행 환경이 제공되어 있습니다.",
  "0.http.tomcat_examples.access.attack.s1.o1": "하지만 이러한 예제들은 보안을 고려하지 않을 상태로 구현되어 있기 때문에 공격자가 이러한 예제들을 통해 크로스 사이트 스크립팅 등의 공격을 수행할 수 있습니다.",
  "0.http.tomcat_examples.access.attack.s2.o0": "이와 같이 보안에 취약한 Apache Tomcat 예제에 접근이 가능한지 확인하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "0.http.tomcat_examples.access.attack.s3.o0": "{0}",
  "0.http.tomcat_examples.access.attack.s3.o1": "{0}",
  "0.http.tomcat_examples.access.result.s0.o0": "Apache Tomcat 예제 접근을 위한 HTTP 요청에 대해 다음과 같은 HTTP 응답이 왔습니다.",
  "0.http.tomcat_examples.access.result.s1.o0": "{0}",
  "0.http.tomcat_examples.access.result.s2.o0": "위의 HTTP 응답 메시지를 통해 취약한 Apache Tomcat 예제 중에 하나인 세션 예제에 접근 가능함을 확인할 수 있습니다.",
  "0.http.tomcat_examples.access.solution.s0.o0": "Apache Tomcat 예제 취약점을 막기 위해서는 기본적으로 Apache Tomcat 기본 페이지에 대한 접근을 차단해야 합니다.",
  "0.http.unlimited_password_error.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.unlimited_password_error.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s0.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s1.o0": "로그인 시도를 위한 첫 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s1.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s10.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s10.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s2.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s3.o0": "로그인 시도를 위한 두 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s3.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s4.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s4.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s5.o0": "로그인 시도를 위한 세 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s5.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s6.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s6.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s7.o0": "로그인 시도를 위한 네 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s7.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s8.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s8.o1": "{0}",
  "0.http.unlimited_password_error.five_times.attack.s9.o0": "로그인 시도를 위한 다섯 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.unlimited_password_error.five_times.attack.s9.o1": "{0}",
  "0.http.unlimited_password_error.five_times.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "0.http.unlimited_password_error.five_times.result.s0.o1": "{0}",
  "0.http.unlimited_password_error.five_times.result.s0.o2": "해당 HTTP 응답 본문에서 {0} 타입의 {1} 웹 요소를 발견했으며, 해당 웹 요소의 이름은 {2}입니다.",
  "0.http.unlimited_password_error.five_times.result.s1.o0": "로그인 시도를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "0.http.unlimited_password_error.five_times.result.s1.o1": "{0}",
  "0.http.unlimited_password_error.five_times.result.s2.o0": "로그인 시도를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "0.http.unlimited_password_error.five_times.result.s2.o1": "{0}",
  "0.http.unlimited_password_error.five_times.result.s2.o2": "해당 HTTP 응답 본문은 첫 번째 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "0.http.unlimited_password_error.five_times.result.s3.o0": "로그인 시도를 위한 세 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "0.http.unlimited_password_error.five_times.result.s3.o1": "{0}",
  "0.http.unlimited_password_error.five_times.result.s3.o2": "해당 HTTP 응답 본문은 첫 번째 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "0.http.unlimited_password_error.five_times.result.s4.o0": "로그인 시도를 위한 네 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "0.http.unlimited_password_error.five_times.result.s4.o1": "{0}",
  "0.http.unlimited_password_error.five_times.result.s4.o2": "해당 HTTP 응답 본문은 첫 번째 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "0.http.unlimited_password_error.five_times.result.s5.o0": "로그인 시도를 위한 다섯 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "0.http.unlimited_password_error.five_times.result.s5.o1": "{0}",
  "0.http.unlimited_password_error.five_times.result.s5.o2": "해당 HTTP 응답 본문은 첫 번째 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "0.http.unlimited_password_error.five_times.result.s6.o0": "각 HTTP 응답 본문 비교 결과, 각 HTTP 요청마다 동일한 HTTP 응답 본문을 수신했음을 확인했습니다.",
  "0.http.unlimited_password_error.five_times.result.s6.o1": "따라서 서버에서 클라이언트의 반복적인 로그인 시도를 제한하지 않게 됩니다.",
  "0.http.unlimited_password_error.five_times.solution.s0.o0": "특정 클라이언트의 인증 오류가 지나치게 연속적으로 발생하는 경우, 해당 클라이언트의 인증 시도를 제한해야 합니다.",
  "0.http.unlimited_password_error.five_times.solution.s0.o1": "최대 5번의 인증 오류 발생 이후에는 추가적인 인증 과정을 요구해야 합니다.",
  "0.http.unsafe_csp_setting.match.attack.s0.o0": "부적절한 CSP 설정값을 사용하고 있는지 확인하기 위해, 분석 대상 URL에 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.unsafe_csp_setting.match.attack.s1.o0": "{0}",
  "0.http.unsafe_csp_setting.match.result.s0.o0": "HTTP 응답 헤더에서 다음과 같은 부적절한 CSP 설정값을 발견했습니다.",
  "0.http.unsafe_csp_setting.match.result.s0.o1": "해당 설정값을 사용하게 되면, 공격자는 XSS, 데이터 삽입, 클릭재킹 등의 공격을 보다 쉽게 수행할 수 있습니다.",
  "0.http.unsafe_csp_setting.match.result.s0.o2": "이러한 문제를 방지하기 위해 안전한 CSP 설정값으로 변경해야 합니다.",
  "0.http.unsafe_csp_setting.match.result.s1.o0": "{0}",
  "0.http.unsafe_csp_setting.match.solution.s0.o0": "부적절한 CSP 설정값을 제거하고, 안전한 CSP 설정값으로 변경해야 합니다.",
  "0.http.unsafe_csp_setting.match.solution.s0.o1": "안전한 CSP 설정값에 대한 예시는 다음과 같습니다.",
  "0.http.unsafe_csp_setting.match.solution.s1.o0": "'none' 값은 모든 리소스를 로드하지 못하도록 차단하는 설정입니다.",
  "0.http.unsafe_csp_setting.match.solution.s1.o1": "예를 들어, object-src 'none'과 같이 설정하면 객체 리소스가 로드되지 않도록 차단할 수 있습니다.",
  "0.http.unsafe_csp_setting.match.solution.s2.o0": "'self' 값은 동일 출처에서 제공되는 리소스만 허용하는 설정입니다.",
  "0.http.unsafe_csp_setting.match.solution.s2.o1": "예를 들어, script-src 'self'와 같이 설정하면 동일 출처에서 제공되는 스크립트만 실행할 수 있습니다.",
  "0.http.unsafe_csp_setting.match.solution.s2.o2": "다만, 웹 애플리케이션이 JSONP(JSON with Padding)를 사용하는 경우에는 주의가 필요합니다.",
  "0.http.unsafe_csp_setting.match.solution.s2.o3": "허용된 도메인에 취약한 JSONP 콜백 메서드가 존재할 경우, 공격자가 이를 이용해 악성 스크립트를 주입할 수 있습니다.",
  "0.http.unsafe_csp_setting.match.solution.s2.o4": "이를 방지하기 위해 CORS(Cross-Origin Resource Sharing) 정책을 함께 적용하여 신뢰할 수 있는 출처에서만 데이터를 요청하도록 관리해야 합니다.",
  "0.http.unsafe_csp_setting.match.solution.s3.o0": "'nonce' 값은 고유하게 생성된 nonce 값을 사용하여 인라인 스크립트나 스타일을 안전하게 허용하는 설정입니다.",
  "0.http.unsafe_csp_setting.match.solution.s3.o1": "예를 들어, script-src 'nonce-랜덤값'과 같이 설정하면, 해당 nonce 값을 가진 스크립트만 실행할 수 있습니다.",
  "0.http.unsafe_csp_setting.match.solution.s4.o0": "'sha256-hash' 값은 해시값(sha256, sha384, sha512 등)을 사용하여 인라인 스크립트나 스타일을 안전하게 허용하는 설정입니다.",
  "0.http.unsafe_csp_setting.match.solution.s4.o1": "예를 들어, script-src 'sha256-해시값'과 같이 설정하면, 인라인 스크립트나 스타일의 해시값이 일치하는 경우에만 리소스가 실행됩니다.",
  "0.http.unsafe_third_party_link.match.attack.s0.o0": "안전하지 않은 서드파티 링크 취약점이 존재하는지 확인하기 위해, 수집된 URL에 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.unsafe_third_party_link.match.attack.s1.o0": "{0}",
  "0.http.unsafe_third_party_link.match.attack.s1.o1": "{0}",
  "0.http.unsafe_third_party_link.match.result.s0.o0": "다음과 같이 HTTP 응답 본문에서 target=\"_blank\" 속성을 사용할 때, rel=\"opener\" 속성이 함께 설정되어 있는 것을 확인했습니다.",
  "0.http.unsafe_third_party_link.match.result.s0.o1": "이 속성은 새 탭이나 새 창이 원본 페이지에 접근할 수 있도록 허용합니다.",
  "0.http.unsafe_third_party_link.match.result.s0.o2": "이로 인해 공격자가 window.opener 객체를 통해 부모 페이지를 피싱 사이트로 강제 리다이렉트할 위험이 있습니다.",
  "0.http.unsafe_third_party_link.match.result.s1.o0": "{0}",
  "0.http.unsafe_third_party_link.match.solution.s0.o0": "Tabnabbing 공격을 방지하기 위해 Cross-Origin-Opener-Policy 헤더를 사용하는 것이 권장됩니다.",
  "0.http.unsafe_third_party_link.match.solution.s0.o1": "이 헤더를 \"same-origin\"으로 설정하면 브라우저는 같은 출처의 문서만 브라우징 컨텍스트 그룹(BCG)을 공유하며, 다른 출처의 문서는 격리됩니다.",
  "0.http.unsafe_third_party_link.match.solution.s0.o2": "그 결과, 다른 출처에서 열린 문서는 window.opener가 null로 설정되어 원본 페이지를 조작할 수 없습니다.",
  "0.http.unsafe_third_party_link.match.solution.s1.o0": "추가적으로, HTML이나 JavaScript에서 새 창을 여는 \"_blank\" 속성을 사용할 때 \"noopener noreferrer\" 속성을 함께 사용해야 합니다.",
  "0.http.unsafe_third_party_link.match.solution.s1.o1": "이를 통해 새로 열린 페이지가 원본 페이지를 참조하지 못하도록 방지하고, 브라우저가 Referer 헤더를 전송하지 않도록 설정할 수 있습니다.",
  "0.http.unsafe_third_party_link.match.solution.s2.o0": "현대의 최신 웹 브라우저는 target=\"_blank\"를 <a>, <area>, <form> 요소에 설정할 경우 암묵적으로 window.opener를 설정하지 않는 rel=\"noopener\" 동작을 제공합니다.",
  "0.http.unsafe_third_party_link.match.solution.s2.o1": "그러나 이러한 암묵적 동작은 브라우저마다 일관되지 않을 수 있으므로, 해당 속성을 명시적으로 설정하는 것이 더 안전합니다.",
  "0.http.unsafe_third_party_link.missing.attack.s0.o0": "안전하지 않은 서드파티 링크 취약점이 존재하는지 확인하기 위해, 수집된 URL에 다음과 같은 HTTP 요청을 전송했습니다.",
  "0.http.unsafe_third_party_link.missing.attack.s1.o0": "{0}",
  "0.http.unsafe_third_party_link.missing.attack.s1.o1": "{0}",
  "0.http.unsafe_third_party_link.missing.result.s0.o0": "다음과 같이 HTTP 응답 본문에서 window.open() 메서드를 사용할 때 \"noopener\" 속성이 존재하지 않는 것을 발견했습니다.",
  "0.http.unsafe_third_party_link.missing.result.s0.o1": "해당 속성이 존재하지 않는 경우, 공격자가 window.opener 객체를 통해 부모 페이지를 피싱 사이트로 강제 리다이렉트할 위험이 있습니다.",
  "0.http.unsafe_third_party_link.missing.result.s1.o0": "{0}",
  "0.http.unsafe_third_party_link.missing.solution.s0.o0": "Tabnabbing 공격을 방지하기 위해 Cross-Origin-Opener-Policy 헤더를 사용하는 것이 권장됩니다.",
  "0.http.unsafe_third_party_link.missing.solution.s0.o1": "이 헤더를 \"same-origin\"으로 설정하면 브라우저는 같은 출처의 문서만 브라우징 컨텍스트 그룹(BCG)을 공유하며, 다른 출처의 문서는 격리됩니다.",
  "0.http.unsafe_third_party_link.missing.solution.s0.o2": "그 결과, 다른 출처에서 열린 문서는 window.opener가 null로 설정되어 원본 페이지를 조작할 수 없습니다.",
  "0.http.unsafe_third_party_link.missing.solution.s1.o0": "추가적으로, HTML이나 JavaScript에서 새 창을 여는 \"_blank\" 속성을 사용할 때 \"noopener noreferrer\" 속성을 함께 사용해야 합니다.",
  "0.http.unsafe_third_party_link.missing.solution.s1.o1": "이를 통해 새로 열린 페이지가 원본 페이지를 참조하지 못하도록 방지하고, 브라우저가 Referer 헤더를 전송하지 않도록 설정할 수 있습니다.",
  "0.http.unsafe_third_party_link.missing.solution.s2.o0": "현대의 최신 웹 브라우저는 target=\"_blank\"를 <a>, <area>, <form> 요소에 설정할 경우 암묵적으로 window.opener를 설정하지 않는 rel=\"noopener\" 동작을 제공합니다.",
  "0.http.unsafe_third_party_link.missing.solution.s2.o1": "그러나 이러한 암묵적 동작은 브라우저마다 일관되지 않을 수 있으므로, 해당 속성을 명시적으로 설정하는 것이 더 안전합니다.",
  "0.http.use_of_adobe_flash_player.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.use_of_adobe_flash_player.match.attack.s0.o1": "{0}",
  "0.http.use_of_adobe_flash_player.match.attack.s0.o2": "{0}",
  "0.http.use_of_adobe_flash_player.match.result.s0.o0": "응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.use_of_adobe_flash_player.match.result.s0.o1": "{0}",
  "0.http.use_of_adobe_flash_player.match.solution.s0.o0": "서비스 내에서 Adobe Flash Player를 제거하고, 웹 표준 기술인 HTML5, WebGL, WebAssembly 등을 사용하여 콘텐츠를 제공하도록 변경합니다. Flash 콘텐츠가 포함된 페이지는 수정하여 보안 위협을 제거해야 합니다.",
  "0.http.use_of_phpMyAdmin.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.use_of_phpMyAdmin.match.attack.s0.o1": "{0}",
  "0.http.use_of_phpMyAdmin.match.attack.s0.o2": "{0}",
  "0.http.use_of_phpMyAdmin.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.",
  "0.http.use_of_phpMyAdmin.match.result.s0.o1": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.use_of_phpMyAdmin.match.result.s0.o2": "{0}",
  "0.http.use_of_phpMyAdmin.match.solution.s0.o0": "되도록이면 phpMyAdmin의 사용을 제한하거나, 최신 버전으로 업그레이드하여 불필요한 페이지 접근을 차단하는 방법으로 보안을 강화합니다.",
  "0.http.use_of_phpmyadmin.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.use_of_phpmyadmin.match.attack.s0.o1": "{0}",
  "0.http.use_of_phpmyadmin.match.attack.s0.o2": "{0}",
  "0.http.use_of_phpmyadmin.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.",
  "0.http.use_of_phpmyadmin.match.result.s0.o1": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.use_of_phpmyadmin.match.result.s0.o2": "{0}",
  "0.http.use_of_phpmyadmin.match.solution.s0.o0": "되도록이면 phpMyAdmin의 사용을 제한하거나, 최신 버전으로 업그레이드하여 불필요한 페이지 접근을 차단하는 방법으로 보안을 강화합니다.",
  "0.http.weak_password.brute_force.attack.s0.o0": "취약한 비밀번호 취약점은 길이가 충분하지 않거나 지나치게 일반적인 비밀번호를 사용하여 공격자가 비밀번호를 유추할 수 있는 취약점입니다.",
  "0.http.weak_password.brute_force.attack.s1.o0": "{0}, {1}, {2}와 같은 비밀번호는 지나치게 일반적인 암호이어서 쉽게 유추할 수 있습니다.",
  "0.http.weak_password.brute_force.attack.s1.o1": "공격자는 이러한 암호를 유추하여 시도할 수 있으며, 인증에 성공하면 유저의 권한으로 서버에 접근할 수 있습니다.",
  "0.http.weak_password.brute_force.attack.s2.o0": "취약한 비밀번호 취약점을 검출하기 위해 {0} 매개변수에 {1} 공격 문자열을 포함한 HTTP 요청을 다음과 같이 보냈습니다.",
  "0.http.weak_password.brute_force.attack.s3.o0": "{0}",
  "0.http.weak_password.brute_force.attack.s3.o1": "{0}",
  "0.http.weak_password.brute_force.result.s0.o0": "취약한 비밀번호 취약점 검출을 위해 보낸 HTTP 요청에 대하여 다음과 같은 HTTP 응답이 왔습니다.",
  "0.http.weak_password.brute_force.result.s1.o0": "{0}",
  "0.http.weak_password.brute_force.result.s2.o0": "위 HTTP 응답 메시지를 통해 인증에 통과했음을 유추할 수 있습니다.",
  "0.http.weak_password.brute_force.solution.s0.o0": "취약한 비밀번호 취약점을 해결하기 위해서는 사용자가 충분히 긴 길이의 비밀번호를 사용하게 만들어야 합니다.",
  "0.http.weak_password.brute_force.solution.s0.o1": "또한, 알파벳 대소문자, 숫자, 특수문자 등을 조합하게 만들어 일반적이지 않은 비밀번호를 사용하게 만들어야 합니다.",
  "0.http.web_xml_disclosure.webxml.attack.s0.o0": "설정 파일 노출 취약점은 웹 애플리케이션에 대한 정보를 담고 있는 설정 파일이 노출되는 취약점입니다.",
  "0.http.web_xml_disclosure.webxml.attack.s1.o0": "설정 파일 중에서 WEB-INF 내의 web.xml 파일은 웹 애플리케이션의 배포 설명자로, 서버가 처음 로딩될 때 읽어들여 웹 애플리케이션의 환경을 설정합니다.",
  "0.http.web_xml_disclosure.webxml.attack.s1.o1": "web.xml에는 서블릿 콘텍스트의 초기 매개변수, 세션의 유효시간, 서블릿/JSP에 대한 정의, 서블릿/JSP 매핑, MIME 타입 매핑, 오류 페이지 처리, 리스너/필터 설정 등의 정보가 작성됩니다.",
  "0.http.web_xml_disclosure.webxml.attack.s2.o0": "이렇듯 web.xml에 서버의 중요 정보가 포함되어 있기 때문에 기본적으로 접근할 수 없어야 합니다.",
  "0.http.web_xml_disclosure.webxml.attack.s3.o0": "설정 파일 노출 취약점 검출을 위해 {0} 경로를 포함한 다음의 HTTP 요청을 보냈습니다.",
  "0.http.web_xml_disclosure.webxml.attack.s4.o0": "{0}",
  "0.http.web_xml_disclosure.webxml.attack.s4.o1": "{0}",
  "0.http.web_xml_disclosure.webxml.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.http.web_xml_disclosure.webxml.result.s1.o0": "{0}",
  "0.http.web_xml_disclosure.webxml.result.s2.o0": "HTTP 응답이 정상적으로 수신됨을 확인할 수 있습니다.",
  "0.http.web_xml_disclosure.webxml.solution.s0.o0": "설정 파일 노출 취약점을 막기 위해서는 해당 파일이 있는 경로에 접근하지 못하게 막아야 합니다.",
  "0.http.web_xml_disclosure.webxml.solution.s1.o0": "또한, 사용자 입력이 설정 파일 경로로 접근되지 못하도록 해야 하며, 사용자 입력을 사용해야 하는 경우에는 값을 인코딩하거나 검증한 후에 사용해야 합니다.",
  "0.http.x_content_type_options.conditional.no_header": "X-Content-Type-Options 헤더가 HTTP 응답에 없습니다.",
  "0.http.x_content_type_options.conditional.not_nosniff": "X-Content-Type-Options 헤더의 값이 nosniff가 아닙니다.",
  "0.http.x_content_type_options.invalid.attack.s0.o0": "누락된 X 콘텐츠 타입 옵션은 HTTP 응답에 X-Content-Type-Options 헤더가 존재하지 않거나 값이 잘못된 취약점입니다.",
  "0.http.x_content_type_options.invalid.attack.s1.o0": "HTTP 응답메시지에 X-Content-Type-Options가 있고, 그 값이 nosniff이면 MIME 타입 스니핑을 막습니다.",
  "0.http.x_content_type_options.invalid.attack.s2.o0": "MIME 타입 스니핑이란 MIME 타입이 없거나 클라이언트 타입이 잘못 설정됐다고 판단될 경우, 브라우저가 리소스를 훑어보고 정확한 MIME 타입을 추측해내는 것입니다.",
  "0.http.x_content_type_options.invalid.attack.s2.o1": "만약 MIME 타입 스니핑을 허용한다면 공격자는 비실행 MIME 타입을 실행 MIME 타입으로 전달할 수 있습니다.",
  "0.http.x_content_type_options.invalid.attack.s3.o0": "예를 들어, 크로스 사이트 스크립팅이 포함된 HTML을 MIME 타입 스니핑을 통해 이미지 파일인 것처럼 업로드할 수 있습니다.",
  "0.http.x_content_type_options.invalid.attack.s3.o1": "X-Content-Type-Options의 값을 nosniff로 설정하면 유효한 Content-Type인 경우에만 서버에 업로드 됩니다.",
  "0.http.x_content_type_options.invalid.attack.s4.o0": "유효한 Content-Type의 매칭은 다음과 같습니다.",
  "0.http.x_content_type_options.invalid.attack.s5.o0": "{0}",
  "0.http.x_content_type_options.invalid.result.s0.o0": "HTTP 응답의 헤더는 다음과 같습니다.",
  "0.http.x_content_type_options.invalid.result.s1.o0": "{0}",
  "0.http.x_content_type_options.invalid.solution.s0.o0": "MIME 타입 스니핑으로 인한 취약점을 막기 위해서는 웹 애플리케이션 서버가 HTTP 응답에 값이 nosniff인 X-Content-Type-Options 헤더를 포함하도록 해야 합니다.",
  "0.http.x_content_type_options.invalid.solution.s0.o1": "또는, 사용자가 웹 애플리케이션에 파일을 업로드하지 못하도록 막아야 합니다.",
  "0.http.x_frame_option.conditional.inproper": "HTTP 응답의 X-Frame-Options 헤더의 값이 잘못되었습니다.",
  "0.http.x_frame_option.conditional.no_header": "HTTP 응답에 X-Frame-Options 헤더가 존재하지 않습니다.",
  "0.http.x_frame_option.invalid.attack.s0.o0": "누락된 X 프레임 옵션 취약점은 X-Frame-Options 헤더가 HTTP 응답에 포함되지 않는 취약점입니다.",
  "0.http.x_frame_option.invalid.attack.s1.o0": "X-Frame-Options 헤더는 브라우저가 <frame>, <iframe>, 또는 <object> 태그 안의 페이지를 브라우저가 랜더링할지 여부를 설정하는 HTTP 응답의 헤더입니다.",
  "0.http.x_frame_option.invalid.attack.s1.o1": "X-Frame-Options 헤더를 통해 클릭잭킹을 막을 수 있습니다.",
  "0.http.x_frame_option.invalid.attack.s2.o0": "클릭잭킹이란 사용자의 인식 없이 실행될 수 있는 임베디드 코드나 스크립트의 형태를 갖추어, 사용자가 자신이 클릭하고 있다고 인지하는 것과 다른 것을 클릭하게 속이는 공격 방식입니다.",
  "0.http.x_frame_option.invalid.attack.s2.o1": "이를 통해 공격자는 사용자의 정보를 유출하거나 사용자의 컴퓨터를 제어할 수 있습니다.",
  "0.http.x_frame_option.invalid.result.s0.o0": "HTTP 응답의 헤더는 다음과 같습니다.",
  "0.http.x_frame_option.invalid.result.s1.o0": "{0}",
  "0.http.x_frame_option.invalid.solution.s0.o0": "웹 애플리케이션의 서버가 HTTP 응답에 올바른 값을 가진 X-Frame-Options 헤더를 넣어야 합니다.",
  "0.http.x_frame_option.invalid.solution.s0.o1": "X-Frame-Options 헤더의 올바른 값은 다음과 같습니다.",
  "0.http.x_frame_option.invalid.solution.s1.o0": "{0}",
  "0.http.xitami_information_leakage.testcgi.attack.s0.o0": "Xitami Web Server 정보 유출 취약점을 검출하기 위해 {0} 경로로 HTTP 요청을 보냈습니다.",
  "0.http.xitami_information_leakage.testcgi.attack.s1.o0": "HTTP 요청은 다음과 같습니다.",
  "0.http.xitami_information_leakage.testcgi.attack.s2.o0": "{0}",
  "0.http.xitami_information_leakage.testcgi.attack.s2.o1": "{0}",
  "0.http.xitami_information_leakage.testcgi.result.s0.o0": "Xitami Web Server 정보 유출 취약점은 CXitami Web Server 정보 유출 취약점은 2.5b 버전 이하의 Xitami에 포함된 tesgcgi.exe 파일의 경로가 기본값인 경우, 해당 프로그램을 임의의 사용자가 실행할 수 있는 취약점입니다.",
  "0.http.xitami_information_leakage.testcgi.result.s1.o0": "HTTP 요청에 대한 HTTP 응답 메시지는 다음과 같습니다.",
  "0.http.xitami_information_leakage.testcgi.result.s2.o0": "{0}",
  "0.http.xitami_information_leakage.testcgi.result.s3.o0": "위 HTTP 응답 메시지에서 예측 가능한 패턴을 발견했습니다.",
  "0.http.xitami_information_leakage.testcgi.solution.s0.o0": "이 취약점을 해결하기 위해서 다음과 같은 지침을 따르세요.",
  "0.http.xitami_information_leakage.testcgi.solution.s1.o0": "testcgi.exe 파일을 제거하세요.",
  "0.http.xitami_information_leakage.testcgi.solution.s2.o0": "혹은 해당 파일의 기본 설치 위치가 아닌 다른 위치에 해당 파일을 위치시켜야 합니다.",
  "0.http.xpath_injection.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.xpath_injection.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "0.http.xpath_injection.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.http.xpath_injection.invocation.attack.s0.o1": "{0}",
  "0.http.xpath_injection.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.http.xpath_injection.invocation.attack.s1.o1": "{0}",
  "0.http.xpath_injection.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "0.http.xpath_injection.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "0.http.xpath_injection.invocation.result.s0.o2": "{0}",
  "0.http.xpath_injection.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "0.http.xpath_injection.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "0.http.xpath_injection.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의해 해당 메소드가 호출되었으며, 해당 메소드를 통해 XPath 쿼리문을 처리했습니다.",
  "0.http.xpath_injection.invocation.solution.s0.o0": "XPath 쿼리문을 구성하는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "0.http.xpath_injection.invocation.solution.s0.o1": "사용자 입력을 사용하여 XPath 쿼리문을 구성해야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "0.http.xpath_injection.invocation.solution.s1.o0": ")와 같은 특수 문자가 포함된 경우 해당 문자를 안전한 문자로 바꾸거나 제거해야 합니다.",
  "0.http.xpath_injection.invocation.solution.s2.o0": "XPath 쿼리문을 사용하는 경우, 해당 XPath 쿼리문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "0.http.xpath_injection.invocation.solution.s2.o1": "매개변수화한 XPath 쿼리문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 XPath 쿼리문 실행 이전에 필터링할 수 있습니다.",
  "0.http.xss.reflected.attack.s0.o0": "크로스 사이트 스크립팅(xss) 취약점은 웹 사이트에 대하여 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "0.http.xss.reflected.attack.s0.o1": "웹 애플리케이션 서버가 외부에서 입력되는 값을 검증 없이 사용하면, 공격자가 악의적인 스크립트를 입력하여 웹 애플리케이션 사용자의 정보를 탈취하거나 웹 애플리케이션이 의도치 않은 동작을 하도록 만들 수 있습니다.",
  "0.http.xss.reflected.attack.s0.o2": "비지속적 크로스사이트 스크립팅은 공격자가 입력한 악의적인 스크립트가 별도의 검증 없이 즉시 웹 페이지에 표시되는 취약점입니다.",
  "0.http.xss.reflected.attack.s0.o3": "이러한 비지속적 크로스 사이트 스크립팅 취약점을 검출하기 위해 {0} 매개변수에 {1} 공격 문자열을 포함한 HTTP 요청을 다음과 같이 보냈습니다.",
  "0.http.xss.reflected.attack.s1.o0": "{0}",
  "0.http.xss.reflected.attack.s1.o1": "{0}",
  "0.http.xss.reflected.result.s0.o0": "비지속적 크로스 사이트 스크립팅은 오류 메시지, 검색 결과, 기타 입력 데이터를 포함한 HTTP 응답 메시지 등으로 서버에 입력한 스크립트가 돌아옵니다.",
  "0.http.xss.reflected.result.s0.o1": "HTTP 요청에 대한 HTTP 응답 메시지는 다음과 같습니다.",
  "0.http.xss.reflected.result.s1.o0": "{0}",
  "0.http.xss.reflected.result.s2.o0": "위 HTTP 응답 메시지에서 {0} 공격 문자열이 포함되어 있음을 확인할 수 있습니다.",
  "0.http.xss.reflected.solution.s0.o0": "크로스 사이트 스크립팅 취약점을 해결하려면 사용자로부터 입력 받은 외부 데이터를 검증 및 필터링해야 합니다.",
  "0.http.xss.reflected.solution.s0.o1": "기본적으로 태그의 이름이나 태그 속성의 이름, <script> 태그 사이, <style> 태그 사이 및 HTML 주석 사이와 허용되지 않은 위치에 사용자로부터 입력 받은 외부 데이터를 사용하지 않습니다.",
  "0.http.xss.reflected.solution.s0.o2": "또는, 사용자로부터 입력 받은 외부 데이터를 사용해야 하는 경우에는 다음과 같이 데이터를 인코딩하여 사용합니다.",
  "0.http.xss.reflected.solution.s1.o0": "웹 페이지 요소 사용자로부터 입력 받은 외부 데이터를 사용할 때의 인코딩",
  "0.http.xss.reflected.solution.s2.o0": "{0}",
  "0.http.xss.reflected.solution.s3.o0": "이외에도 사용자로부터 입력 받은 외부 데이터를 HTML 속성값이나 URL 매개변수, JavaScript, CSS 값 등에 사용할 때에도 인코딩이 필요합니다.",
  "0.http.xxe_injection.match.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "0.http.xxe_injection.match.attack.s0.o1": "{0}",
  "0.http.xxe_injection.match.attack.s0.o2": "{0}",
  "0.http.xxe_injection.match.result.s0.o0": "응답의 상태 코드가 {0}입니다.",
  "0.http.xxe_injection.match.result.s0.o1": "또한, 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "0.http.xxe_injection.match.result.s0.o2": "{0}",
  "0.http.xxe_injection.match.solution.s0.o0": "XML 파서를 설정하여 외부 개체(External Entity) 참조를 비활성화하고, XML 입력값을 안전하게 검증 및 필터링하여 악의적인 XML 구조를 차단해야 합니다.",
  "0.http.xxn.styleFound.attack.s0.o0": "X-XSS-Nightmare 취약점은 Internet Explorer 일부 버전에서 크로스 사이트 스크립팅 공격을 방어하기 위해 제공하는 XSS Filter의 동작 방식을 사용하여 우회함으로써 악성 스크립트를 실행시킬 수 있는 취약점입니다.",
  "0.http.xxn.styleFound.attack.s1.o0": "X-XSS-Nightmare 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.http.xxn.styleFound.attack.s2.o0": "페이지 내부의 요소 중 {0} 요소의 존재 여부를 검사했습니다.",
  "0.http.xxn.styleFound.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.http.xxn.styleFound.result.s1.o0": "다음과 같은 검사 대상 {0} 웹 페이지 요소를 발견했습니다.",
  "0.http.xxn.styleFound.result.s2.o0": "{0}",
  "0.http.xxn.styleFound.result.s3.o0": "대상 {0} 웹 페이지 요소의 내용은 다음과 같습니다.",
  "0.http.xxn.styleFound.result.s4.o0": "{0}",
  "0.http.xxn.styleFound.result.s5.o0": "검사 결과, X-XSS-Nightmare 취약점이 존재함을 확인했습니다.",
  "0.http.xxn.styleFound.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.http.xxn.styleFound.solution.s1.o0": "X-XSS-Nightmare (XXN) 취약점은 {0} 웹 페이지 요소를 사용하는 경우 발생할 수 있습니다.",
  "0.http.xxn.styleFound.solution.s2.o0": "XXN 취약점은 주로 Internet Explorer 8, 9, 10 버전에서 XXS 필터를 작동할 때 발생하는 취약점입니다.",
  "0.http.xxn.styleFound.solution.s3.o0": "취약점의 발생을 방지하기 위하여 다음과 같은 지침을 따르세요.",
  "0.http.xxn.styleFound.solution.s4.o0": "1. 다음과 같이 Windows 업데이트를 통해 보안 패치를 수행하세요.",
  "0.http.xxn.styleFound.solution.s5.o0": "{0}",
  "0.http.xxn.styleFound.solution.s6.o0": "2. Spring Security를 사용하는 경우, HTTP 헤더 설정을 통해 취약점을 방지할 수 있습니다. 다음 내용을 참조하세요: https://github.com/spring-projects/spring-security/issues/2330",
  "0.http.xxn.styleFound.solution.s7.o0": "3. Internet Explorer를 사용하는 경우 내장된 {0} 기능을 활성화하세요.",
  "0.http.xxn.stylefound.attack.s0.o0": "X-XSS-Nightmare 취약점은 Internet Explorer 일부 버전에서 크로스 사이트 스크립팅 공격을 방어하기 위해 제공하는 XSS Filter의 동작 방식을 사용하여 우회함으로써 악성 스크립트를 실행시킬 수 있는 취약점입니다.",
  "0.http.xxn.stylefound.attack.s1.o0": "X-XSS-Nightmare 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.http.xxn.stylefound.attack.s2.o0": "페이지 내부의 요소 중 {0} 요소의 존재 여부를 검사했습니다.",
  "0.http.xxn.stylefound.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.http.xxn.stylefound.result.s1.o0": "다음과 같은 검사 대상 {0} 웹 페이지 요소를 발견했습니다.",
  "0.http.xxn.stylefound.result.s2.o0": "{0}",
  "0.http.xxn.stylefound.result.s3.o0": "대상 {0} 웹 페이지 요소의 내용은 다음과 같습니다.",
  "0.http.xxn.stylefound.result.s4.o0": "{0}",
  "0.http.xxn.stylefound.result.s5.o0": "검사 결과, X-XSS-Nightmare 취약점이 존재함을 확인했습니다.",
  "0.http.xxn.stylefound.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.http.xxn.stylefound.solution.s1.o0": "X-XSS-Nightmare (XXN) 취약점은 {0} 웹 페이지 요소를 사용하는 경우 발생할 수 있습니다.",
  "0.http.xxn.stylefound.solution.s2.o0": "XXN 취약점은 주로 Internet Explorer 8, 9, 10 버전에서 XXS 필터를 작동할 때 발생하는 취약점입니다.",
  "0.http.xxn.stylefound.solution.s3.o0": "취약점의 발생을 방지하기 위하여 다음과 같은 지침을 따르세요.",
  "0.http.xxn.stylefound.solution.s4.o0": "1. 다음과 같은 Windows 업데이트를 통한 보안 패치를 수행하세요.",
  "0.http.xxn.stylefound.solution.s5.o0": "{0}",
  "0.http.xxn.stylefound.solution.s6.o0": "2. Spring Security를 사용하는 경우 HTTP 헤더 설정을 통해 취약점 방지가 가능합니다. 다음 내용을 참조하세요: https://github.com/spring-projects/spring-security/issues/2330",
  "0.http.xxn.stylefound.solution.s7.o0": "3. Internet Explorer를 사용하는 경우 자체 기능인 {0} 기능을 사용하도록 하세요.",
  "0.socket.ajp_enable.enable.attack.s0.o0": "AJP(Apache JServ Protocol)란, 웹 서버로부터 해당 서버 뒤에 위치한 애플리케이션 서버로 주어지는 HTTP 요청을 대신 처리할 수 있도록 하는 바이너리 프로토콜입니다.",
  "0.socket.ajp_enable.enable.attack.s0.o0 ": " AJP(Apache JServ Protocol)란, 웹 서버로부터 해당 서버 뒤에 위치한 애플리케이션 서버로 주어지는 HTTP 요청을 대신 처리할 수 있도록 하는 바이너리 프로토콜입니다.",
  "0.socket.ajp_enable.enable.attack.s0.o1": "임의의 외부 사용자로부터 서버의 AJP 서비스로의 접근이 가능한 경우, 서버의 중요한 정보가 노출될 수 있습니다.",
  "0.socket.ajp_enable.enable.attack.s0.o1 ": " 임의의 외부 사용자로부터 서버의 AJP 서비스로의 접근이 가능한 경우, 서버의 중요한 정보가 노출될 수 있습니다.",
  "0.socket.ajp_enable.enable.attack.s0.o2": "일반적으로 AJP 서비스는 TCP와 8009 포트를 사용하며, 이를 통해 다음과 같이 메시지를 전송함으로써 서비스의 동작 및 접근 가능 여부를 확인할 수 있습니다.",
  "0.socket.ajp_enable.enable.attack.s0.o2 ": " 일반적으로 AJP 서비스는 TCP와 8009 포트를 사용하며, 이를 이용하여 다음과 같이 메시지를 전송함으로써 서비스의 동작 및 접근 가능 여부를 확인할 수 있습니다.",
  "0.socket.ajp_enable.enable.attack.s1.o0": "{0}",
  "0.socket.ajp_enable.enable.result.s0.o0": "메시지 전송 결과, 다음과 같은 HTTP 응답을 수신했습니다.",
  "0.socket.ajp_enable.enable.result.s0.o0 ": " 메시지 전송 결과, 다음과 같은 HTTP 응답을 수신했습니다.",
  "0.socket.ajp_enable.enable.result.s1.o0": "{0}",
  "0.socket.ajp_enable.enable.solution.s0.o0": "AJP 서비스를 사용하는 경우, 임의의 외부 사용자가 접근할 수 없도록 접근 제어가 필요합니다.",
  "0.socket.ajp_enable.enable.solution.s0.o0 ": " AJP 서비스를 사용하는 경우, 임의의 외부 사용자가 접근할 수 없도록 접근 제어가 필요합니다.",
  "0.socket.ajp_enable.enable.solution.s0.o1": "이 경우에 서버 설정 혹은 방화벽 등의 도구를 사용할 수 있습니다.",
  "0.socket.ajp_enable.enable.solution.s0.o1 ": " 이는 서버 설정 혹은 방화벽 등의 도구를 사용하여 제어할 수 있습니다.",
  "0.socket.certificate_integrity_violation.expired.attack.s0.o0": "SSL 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "0.socket.certificate_integrity_violation.expired.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "0.socket.certificate_integrity_violation.expired.attack.s0.o2": "서버와 성공적으로 연결했습니다.",
  "0.socket.certificate_integrity_violation.expired.attack.s1.o0": "서버로부터 인증서 사슬을 수신했습니다.",
  "0.socket.certificate_integrity_violation.expired.attack.s1.o1": "인증서 사슬의 길이는 {0}입니다.",
  "0.socket.certificate_integrity_violation.expired.result.s0.o0": "수신한 인증서 중 가장 하위 계층에 해당하는 인증서의 유효기간을 확인했습니다.",
  "0.socket.certificate_integrity_violation.expired.result.s0.o1": "해당 인증서는 {0} 부터 {1} 까지 유효합니다.",
  "0.socket.certificate_integrity_violation.expired.result.s1.o0": "분석 결과, 분석 수행 일자가 인증서의 유효 기간 내에 해당하지 않았습니다.",
  "0.socket.certificate_integrity_violation.expired.result.s1.o1": "따라서 해당 인증서가 만료되었으므로 해당 인증서를 신뢰할 수 없게 됩니다.",
  "0.socket.certificate_integrity_violation.expired.solution.s0.o0": "인증서의 유효 기간이 만료된 경우, 해당 인증서를 갱신해야 합니다.",
  "0.socket.certificate_integrity_violation.expired.solution.s0.o1": "또는 기존 인증서 대신 신규 인증서로 교체해야 합니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.attack.s0.o0": "SSL 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.attack.s0.o2": "서버와 성공적으로 연결했습니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.attack.s1.o0": "서버로부터 인증서 사슬을 수신했습니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.attack.s1.o1": "인증서 사슬의 길이는 {0}입니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.result.s0.o0": "수신한 인증서 사슬에 대한 최상위 계층의 인증서 발급자를 검사했습니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.result.s0.o1": "해당 인증서의 발급자는 {0}입니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.result.s2.o0": "분석 결과, 최상위 계층의 인증서 발급자가 알려진 최상위 인증 기관에 해당하지 않았습니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.result.s2.o1": "따라서 해당 인증서의 발급자를 신뢰할 수 없으므로 해당 인증서를 신뢰할 수 없게 됩니다.",
  "0.socket.certificate_integrity_violation.invalid_issuer.solution.s0.o0": "신뢰할 수 있는 발급자로부터 발급받은 인증서로 기존 인증서를 교체해야 합니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.attack.s0.o0": "SSL 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.attack.s0.o2": "서버와 성공적으로 연결했습니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.attack.s1.o0": "서버로부터 인증서 사슬을 수신했습니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.attack.s1.o1": "인증서 사슬의 길이는 {0}입니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.result.s0.o0": "수신한 인증서 중 가장 하위 계층에 해당하는 인증서의 발급 대상 공통 이름(CN)을 확인했습니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.result.s0.o1": "인증서의 발급 대상 공통 이름은 {0}입니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.result.s1.o0": "분석 결과, 인증서의 발급 대상 공통 이름이 분석 대상 사이트의 주소 {0} 와 같지 않았습니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.result.s1.o1": "따라서 해당 인증서의 발급 대상 정보가 올바르지 않으므로 해당 인증서를 신뢰할 수 없게 됩니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.solution.s0.o0": "인증서의 발급 대상 정보가 올바르지 않은 경우, 올바른 정보가 포함된 인증서로 갱신해야 합니다.",
  "0.socket.certificate_integrity_violation.invalid_subject.solution.s0.o1": "또는 기존 인증서 대신 올바른 정보가 포함된 신규 인증서로 교체해야 합니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s0.o0": "SSL 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s0.o0 ": " SSL 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s0.o1 ": " 연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s0.o2": "서버와 성공적으로 연결했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s0.o2 ": " 서버와 성공적으로 연결했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s1.o0": "서버와 재협상을 시도했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s1.o0 ": " 서버와 재협상을 시도했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s2.o0": "다음과 같은 메시지를 SSL 소켓을 통해 전송했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s2.o0 ": " 다음과 같은 메시지를 SSL 소켓을 통해 전송했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.attack.s2.o1": "{0}",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.result.s0.o0": "메시지 전송 후, 서버로부터 다음과 같은 메시지를 SSL 소켓을 통해 수신했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.result.s0.o0 ": " 메시지를 전송한 후, 서버로부터 다음과 같은 메시지를 SSL 소켓을 통해 수신했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.result.s0.o1": "{0}",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.result.s1.o0": "분석 결과, 클라이언트로부터 시작된 재협상 이후에도 서버가 정상적으로 응답함을 확인했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.result.s1.o0 ": " 분석 결과, 클라이언트로부터 시작된 재협상 이후에도 서버가 정상적으로 응답함을 확인했습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.result.s1.o1": "따라서 서버가 클라이언트로 시작된 SSL 재협상을 허용하게 됩니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.result.s1.o1 ": " 이는 서버가 클라이언트로 시작된 SSL 재협상을 허용함을 의미합니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.solution.s0.o0": "웹 서버 또는 애플리케이션 서버에서 안전하지 않은 SSL 재협상을 허용하지 않도록 제한해야 합니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.solution.s0.o0 ": " 웹 서버 또는 어플레케이션 서버에서 안전하지 않은 SSL 재협상을 허용하지 않도록 제한하여야 합니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.solution.s0.o1": "JAVA 8 이후 버전 기반 서버의 경우, JVM 옵션에 다음과 같은 옵션을 추가할 수 있습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.solution.s0.o1 ": " JAVA 8 이후 버전 기반 서버의 경우, JVM 옵션에 다음과 같은 옵션을 추가할 수 있습니다.",
  "0.socket.client_initiated_ssl_renegotiation_enabled.enabled.solution.s0.o2": "{0}",
  "0.socket.dast.sw.common.6510.open.attack.s0.o0": "다음과 같은 호스트에 대하여 포트 스캐닝을 수행했습니다.",
  "0.socket.dast.sw.common.6510.open.attack.s0.o1": "{0}",
  "0.socket.dast.sw.common.6510.open.result.s0.o0": "다음과 같은 포트에 대한 연결에 성공했습니다.",
  "0.socket.dast.sw.common.6510.open.result.s0.o1": "{0}",
  "0.socket.dast.sw.common.6510.open.result.s1.o1": "분석 수행 결과, 해당 포트에 대한 연결 및 추가적인 공격 시도가 가능함을 확인했습니다.",
  "0.socket.dast.sw.common.6510.open.solution.s0.o0": "서비스에 필요한 포트 외 불필요한 포트는 사용하지 말아야 하며, 아래의 취약 서비스의 경우 외부에 노출되지 않도록 필수적으로 차단하거나 ACL 조치를 취해야 합니다.\n",
  "0.socket.dast.sw.common.6510.open.solution.s0.o1": "- FTP: 21번\n",
  "0.socket.dast.sw.common.6510.open.solution.s0.o2": "- SSH: 22번\n",
  "0.socket.dast.sw.common.6510.open.solution.s0.o3": "- 원격 데스크톱(RDP): 3389번\n",
  "0.socket.dast.sw.common.6510.open.solution.s0.o4": "- DBMS 기본 포트: 1521번(오라클), 1433번(MSSQL), 3306번(MySQL) 등",
  "0.socket.insufficient_key_length.httpsWithWeakKey.attack.s0.o0": "충분하지 않은 키 길이 사용 취약점은 검증된 암호화 알고리즘을 사용한 경우에도 키 길이가 충분하지 않아 공격자로 하여금 키를 찾아내어 임의로 복호화를 수행할 수 있는 취약점입니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.attack.s1.o0": "충분하지 않은 키 길이 사용 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.attack.s2.o0": "해당 사이트로의 연결에서 HTTPS 프로토콜을 사용함을 발견했습니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.attack.s3.o0": "연결에서 사용한 모든 인증서의 키를 추출한 후에 각 키의 길이가 검사 기준값인 {0} bit 미만인지를 검사했습니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.result.s1.o0": "연결 도중 사용한 인증서는 총 {0}개입니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.result.s2.o0": "전체 인증서 중 {0}개의 인증서가 검사 기준값 미만임을 확인했습니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.result.s3.o0": "각 인증서의 알고리즘과 길이는 다음과 같습니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.result.s4.o0": "{0}",
  "0.socket.insufficient_key_length.httpsWithWeakKey.result.s5.o0": "검사 결과, 충분하지 않은 키 길이 사용 취약점이 존재함을 확인했습니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.solution.s1.o0": "HTTPS 연결할 때 사용하는 인증서의 키 길이는 {0} 비트 이상이어야 안전합니다.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.solution.s1.o1": "인증서를 업데이트하거나, 키 길이를 확장하세요.",
  "0.socket.insufficient_key_length.httpsWithWeakKey.solution.s2.o0": "추가적으로 키 암호화 알고리즘 및 키의 유효기간을 고려해야 합니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.attack.s0.o0": "충분하지 않은 키 길이 사용 취약점은 검증된 암호화 알고리즘을 사용한 경우에도 키 길이가 충분하지 않아 공격자로 하여금 키를 찾아내어 임의로 복호화를 수행할 수 있는 취약점입니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.attack.s1.o0": "충분하지 않은 키 길이 사용 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.attack.s2.o0": "해당 사이트로의 연결에서 HTTPS 프로토콜을 사용함을 발견했습니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.attack.s3.o0": "연결에서 사용한 모든 인증서의 키를 추출한 후에 각 키의 길이가 검사 기준값인 {0} bit 미만인지를 검사했습니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.result.s1.o0": "연결 도중 사용한 인증서는 총 {0}개입니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.result.s2.o0": "전체 인증서 중 {0}개의 인증서가 검사 기준값 미만임을 확인했습니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.result.s3.o0": "각 인증서의 알고리즘과 길이는 다음과 같습니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.result.s4.o0": "{0}",
  "0.socket.insufficient_key_length.httpswithweakkey.result.s5.o0": "검사 결과, 충분하지 않은 키 길이 사용 취약점이 존재함을 확인했습니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.solution.s1.o0": "HTTPS 연결에서 사용하는 인증서의 키 길이는 {0} bit 이상이어야 안전합니다.",
  "0.socket.insufficient_key_length.httpswithweakkey.solution.s1.o1": "인증서를 업데이트하거나, 키 길이를 확장하세요.",
  "0.socket.insufficient_key_length.httpswithweakkey.solution.s2.o0": "추가적으로 키 암호화 알고리즘 및 키의 유효기간을 고려해야 합니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.attack.s0.o0": "적절하지 않은 난수값 사용 취약점은 생성 가능한 난수의 범위가 충분하지 않음에 따라 공격자가 해당 난수를 충분히 예측할 수 있는 취약점입니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.attack.s0.o1": "일부 Debian 계열 운영 체제에서, OpenSSL이 사용하는 키들은 불충분한 난수 범위 때문에 취약할 수 있습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.attack.s1.o0": "적절하지 않은 난수값 사용 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.attack.s2.o0": "해당 사이트로의 연결에서 HTTPS 프로토콜을 사용함을 발견함에 따라, Open SSL을 사용한 가능성을 확인했습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.attack.s3.o0": "연결에서 사용한 모든 인증서 중 취약하다고 알려진 공개 키를 사용하는 인증서의 존재 여부를 검사했습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.result.s1.o0": "연결에서 총 {0}개의 인증서를 사용함을 확인했습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.result.s2.o0": "모든 인증서에서 사용하는 공개 키 중 {0}개의 공개 키가 취약함을 발견했습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.result.s3.o0": "취약함을 발견한 공개 키는 다음과 같습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.result.s4.o0": "{0}",
  "0.socket.insufficiently_random_values.debianOpenSsl.result.s5.o0": "검사 결과, 공격 시도가 성공했으며 적절하지 않은 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.solution.s1.o0": "취약점이 제거된 버전의 OpenSSL을 사용해야 합니다.",
  "0.socket.insufficiently_random_values.debianOpenSsl.solution.s2.o0": "취약점에 관련된 자세한 정보 및 취약점이 존재하는 OpenSSL에 관한 정보는 다음을 참고하세요.",
  "0.socket.insufficiently_random_values.debianOpenSsl.solution.s3.o0": "{0}",
  "0.socket.insufficiently_random_values.debianopenssl.attack.s0.o0": "적절하지 않은 난수값 사용 취약점은 생성 가능한 난수의 범위가 충분하지 않음에 따라 공격자가 해당 난수를 충분히 예측할 수 있는 취약점입니다.",
  "0.socket.insufficiently_random_values.debianopenssl.attack.s0.o1": "일부 Debian 계열 운영 체제에서, OpenSSL이 사용하는 키들은 불충분한 난수 범위 때문에 취약할 수 있습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.attack.s1.o0": "적절하지 않은 난수값 사용 취약점을 검출하기 위해 다음과 같은 과정을 수행했습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.attack.s2.o0": "해당 사이트로의 연결에서 HTTPS 프로토콜을 사용함을 발견함에 따라, Open SSL을 사용한 가능성을 확인했습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.attack.s3.o0": "연결에서 사용한 모든 인증서 중 취약하다고 알려진 공개 키를 사용하는 인증서의 존재 여부를 검사했습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.result.s0.o0": "검사 결과는 다음과 같습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.result.s1.o0": "연결에서 총 {0}개의 인증서를 사용함을 확인했습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.result.s2.o0": "모든 인증서에서 사용하는 공개 키 중 {0}개의 공개 키가 취약함을 발견했습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.result.s3.o0": "취약함을 발견한 공개 키는 다음과 같습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.result.s4.o0": "{0}",
  "0.socket.insufficiently_random_values.debianopenssl.result.s5.o0": "검사 결과, 공격 시도가 성공했으며 적절하지 않은 난수값 사용 취약점이 존재함을 확인했습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "0.socket.insufficiently_random_values.debianopenssl.solution.s1.o0": "취약점이 제거된 버전의 OpenSSL을 사용해야 합니다.",
  "0.socket.insufficiently_random_values.debianopenssl.solution.s2.o0": "취약점에 관련된 자세한 정보 및 취약점이 존재하는 OpenSSL에 관한 정보는 다음을 참고하세요.",
  "0.socket.insufficiently_random_values.debianopenssl.solution.s3.o0": "{0}",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o0": "JMX(Java Management eXtensions)는 애플리케이션, 객체, 장치, 네트워크 등을 감시하기 위한 도구를 제공하는 Java API 입니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o0 ": " JMX(Java Management eXtensions)는 응용 프로그램, 객체, 장치, 네트워크 등을 감시하기 위한 도구를 제공하는 Java API 입니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o1": "RMI(Remote Method Invocation)는 통상적인 RPC(Remote Procedure Call) 인터페이스를 Java에서 사용할 수 있도록 구현한 것입니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o1 ": " RMI(Remote Method Invocation)는 통상적인 RPC(Remote Procedure Call) 인터페이스를 Java에서 사용할 수 있도록 구현한 것입니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o2": "임의의 외부 사용자로부터 서버의 JMX/RMI 서비스로의 접근이 가능한 경우, 서버의 중요한 정보가 노출될 수 있습니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o2 ": " 임의의 외부 사용자로부터 서버의 JMX/RMI 서비스로의 접근이 가능한 경우, 서버의 중요한 정보가 노출될 수 있습니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o3": "일반적으로 JMX/RMI 서비스의 TCP와 1099 포트를 사용하며, 해당 포트를 우선적으로 대상으로 하여 JMX 클라이언트를 사용한 연결을 시도할 수 있습니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o3 ": " 일반적으로 JMX/RMI 서비스의 TCP와 1099 포트를 사용하며, 해당 포트를 우선적으로 대상으로 하여 JMX 클라이언트를 이용한 연결을 시도할 수 있습니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o4": "연결이 성공한 경우, 이를 확인하기 위해 다음과 같은 쿼리를 서버로 전송합니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s0.o4 ": "연결이 성공한 경우, 이를 확인하기 위해 다음과 같은 쿼리를 서버로 전송합니다.",
  "0.socket.jmx_rmi_enable.connect.attack.s1.o0": "{0}",
  "0.socket.jmx_rmi_enable.connect.result.s0.o0": "쿼리 결과로부터 {0} 속성값이 다음과 같음을 확인했습니다.",
  "0.socket.jmx_rmi_enable.connect.result.s0.o0 ": "쿼리 결과로부터 {0} 속성값이 다음과 같음을 확인했습니다.",
  "0.socket.jmx_rmi_enable.connect.result.s1.o0": "{0}",
  "0.socket.jmx_rmi_enable.connect.solution.s0.o0": "JMX/RMI 서비스를 사용하는 경우, 임의의 외부 사용자가 접근할 수 없도록 접근 제어가 필요합니다.",
  "0.socket.jmx_rmi_enable.connect.solution.s0.o0 ": " JMX/RMI 서비스를 사용하는 경우, 임의의 외부 사용자가 접근할 수 없도록 접근 제어가 필요합니다.",
  "0.socket.jmx_rmi_enable.connect.solution.s0.o1": "이 경우에 서버 설정 혹은 방화벽 등의 도구를 사용할 수 있습니다.",
  "0.socket.jmx_rmi_enable.connect.solution.s0.o1 ": " 이는 서버 설정 혹은 방화벽 등의 도구를 사용하여 제어할 수 있습니다.",
  "0.socket.skb__etc__unnecessary_ports.open.attack.s0.o0": "다음과 같은 호스트에 대하여 포트 스캐닝을 수행했습니다.",
  "0.socket.skb__etc__unnecessary_ports.open.attack.s0.o1": "{0}",
  "0.socket.skb__etc__unnecessary_ports.open.result.s0.o0": "다음과 같은 포트에 대한 연결에 성공했습니다.",
  "0.socket.skb__etc__unnecessary_ports.open.result.s0.o1": "{0}",
  "0.socket.skb__etc__unnecessary_ports.open.result.s1.o1": "분석 수행 결과, 해당 포트에 대한 연결 및 추가적인 공격 시도가 가능함을 확인했습니다.",
  "0.socket.skb__etc__unnecessary_ports.open.solution.s0.o0": "서비스에 필요한 포트 외 불필요한 포트는 사용하지 말아야 하며, 아래의 취약 서비스의 경우 외부에 노출되지 않도록 필수적으로 차단하거나 ACL 조치를 취해야 합니다.\n",
  "0.socket.skb__etc__unnecessary_ports.open.solution.s0.o1": "- FTP: 21번\n",
  "0.socket.skb__etc__unnecessary_ports.open.solution.s0.o2": "- SSH: 22번\n",
  "0.socket.skb__etc__unnecessary_ports.open.solution.s0.o3": "- 원격 데스크톱(RDP): 3389번\n",
  "0.socket.skb__etc__unnecessary_ports.open.solution.s0.o4": "- DBMS 기본 포트: 1521번(오라클), 1433번(MSSQL), 3306번(MySQL) 등",
  "0.socket.slow_http_dos.response.attack.s0.o0": "Slow HTTP DOS (혹은 Slowloris) 공격은 HTTP 서비스를 대상으로하는 DOS(Denial of Service) 공격의 일종입니다.",
  "0.socket.slow_http_dos.response.attack.s0.o1": "공격자 클라이언트는 공격 대상이 되는 서버로 HTTP 요청을 전송할 때, 이 때 HTTP 요청의 헤더를 조작하여 Content-Length 필드에 임의의 큰 값을 설정하여 전송할 수 있습니다.",
  "0.socket.slow_http_dos.response.attack.s0.o2": "이 때 HTTP 요청을 완성 형태가 아닌, 일부분을 의도적으로 개별적으로 전송하는 경우, 서버는 클라이언트로부터 Content-Length 필드에 해당하는 크기의 HTTP 요청이 도착할 때까지 연결을 유지하게 됩니다.",
  "0.socket.slow_http_dos.response.attack.s0.o3": "공격자 클라이언트가 일정 시간 간격을 두고 위와 같은 완성되지 않은 HTTP 요청을 서버에 반복하여 전송하는 경우, 서버에서는 모든 세션을 사용하게 되어 서비스 거부 상태에 도달할 수 있습니다.",
  "0.socket.slow_http_dos.response.attack.s1.o0": "이러한 공격은 통상적으로 HTTP 요청의 종료를 의미하는 마지막 CRLF 문자를 제외하고 전송함으로써 가능합니다.",
  "0.socket.slow_http_dos.response.attack.s1.o1": "공격을 위하여 Content-Length 값을 {0}와 같이 설정한 뒤, 마지막 CRLF 문자를 제외하고 HTTP 요청을 전송합니다.",
  "0.socket.slow_http_dos.response.attack.s1.o2": "약 10초간 대기한 후, 마지막 CRLF 문자가 포함된 HTTP 요청의 마지막 부분을 전송합니다.",
  "0.socket.slow_http_dos.response.result.s0.o0": "위와 같은 2번의 HTTP 요청에 대하여 다음과 같은 1개의 HTTP 응답이 도달했습니다.",
  "0.socket.slow_http_dos.response.result.s1.o0": "{0}",
  "0.socket.slow_http_dos.response.solution.s0.o0": "Slow HTTP DOS 공격은 프로토콜의 취약점을 이용한 공격으로, 일차적으로 지속적인 감시를 통한 예방이 필요합니다.",
  "0.socket.slow_http_dos.response.solution.s1.o0": "다음과 같은 방법을 사용하여 공격의 위협을 감소시킬 수 있습니다.",
  "0.socket.slow_http_dos.response.solution.s1.o1": "먼저, 임의의 HTTP 요청에 대하여 불필요하게 큰 크기를 허용하지 않도록 합니다.",
  "0.socket.slow_http_dos.response.solution.s1.o2": "또한 각 HTTP 요청에 대한 제한시간을 적정한 수준으로 조정하여, 지나치게 긴 시간동안 세션을 점유하지 않도록 합니다.",
  "0.socket.slow_http_dos.response.solution.s1.o3": "마지막으로 TCP 소켓의 상태를 확인하여 평소보다 ESTABLISHED 및 TIME_WAIT 상태의 소켓 개수가 많은 상태인지를 확인하고, 이를 통해 이상 여부를 확인할 수 있습니다.",
  "0.socket.slow_post_attack.custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.socket.slow_post_attack.custom.attack.s0.o1": "HTTP 요청 헤더 {0}의 값을 다음과 같이 설정했습니다.",
  "0.socket.slow_post_attack.custom.attack.s0.o2": "{0}",
  "0.socket.slow_post_attack.custom.attack.s0.o3": "설정한 {0} 헤더 값은 사용자 정의 요청 본문 길이에 해당합니다.",
  "0.socket.slow_post_attack.custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.socket.slow_post_attack.custom.attack.s1.o1": "{0}",
  "0.socket.slow_post_attack.custom.attack.s2.o0": "{0}ms 동안 대기한 뒤, {1} 바이트 크기의 데이터를 추가로 전송했습니다.",
  "0.socket.slow_post_attack.custom.attack.s3.o0": "{0}ms 동안 대기한 뒤, {1} 바이트 크기의 데이터를 추가로 전송했습니다.",
  "0.socket.slow_post_attack.custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.socket.slow_post_attack.custom.result.s0.o1": "{0}",
  "0.socket.slow_post_attack.custom.result.s1.o0": "서버로부터 수신한 HTTP 응답은 정상적인 HTTP 응답에 해당합니다.",
  "0.socket.slow_post_attack.custom.result.s2.o0": "분석 결과, POST 방식의 HTTP 요청에 대하여 해당 요청의 {0} 헤더 값 {1}에 해당하는 크기만큼의 데이터를 수신할 때까지 대기함을 발견했습니다.",
  "0.socket.slow_post_attack.custom.result.s2.o1": "따라서 해당 HTTP 요청이 최소 {0}ms 동안 서버의 네트워크 리소스를 점유할 수 있습니다.",
  "0.socket.slow_post_attack.custom.solution.s0.o0": "각 HTTP 요청에 대한 제한시간 값을 적정한 수준으로 조정하여, 단일 HTTP 요청이 지나치게 긴 시간동안 세션을 점유하지 않도록 합니다.",
  "0.socket.slow_post_attack.custom.solution.s0.o1": "제한시간을 설정하기 어려운 경우 웹 캐시 소프트웨어를 통해 트래픽 장애 방지가 가능합니다.",
  "0.socket.slow_post_attack.custom.solution.s1.o0": "각 HTTP 요청에 대하여 {0} 헤더 값의 상한을 지정해야 합니다.",
  "0.socket.slow_post_attack.custom.solution.s1.o1": "임의의 HTTP 요청의 {0} 헤더 값이 상한을 초과하는 경우, 해당 HTTP 요청 처리를 거부해야 합니다.",
  "0.socket.slow_post_attack.waiting.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "0.socket.slow_post_attack.waiting.attack.s0.o1": "HTTP 요청 헤더 {0}의 값을 다음과 같이 설정했습니다.",
  "0.socket.slow_post_attack.waiting.attack.s0.o2": "{0}",
  "0.socket.slow_post_attack.waiting.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "0.socket.slow_post_attack.waiting.attack.s1.o1": "{0}",
  "0.socket.slow_post_attack.waiting.attack.s2.o0": "{0}ms 동안 대기한 뒤, {1} 바이트 크기의 데이터를 추가로 전송했습니다.",
  "0.socket.slow_post_attack.waiting.attack.s3.o0": "{0}ms 동안 대기한 뒤, {1} 바이트 크기의 데이터를 추가로 전송했습니다.",
  "0.socket.slow_post_attack.waiting.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "0.socket.slow_post_attack.waiting.result.s0.o1": "{0}",
  "0.socket.slow_post_attack.waiting.result.s1.o0": "서버로부터 수신한 HTTP 응답은 정상적인 HTTP 응답에 해당합니다.",
  "0.socket.slow_post_attack.waiting.result.s2.o0": "분석 결과, POST 방식의 HTTP 요청에 대하여 해당 요청의 {0} 헤더 값 {1}에 해당하는 크기만큼의 데이터를 수신할 때까지 대기함을 발견했습니다.",
  "0.socket.slow_post_attack.waiting.result.s2.o1": "따라서 해당 HTTP 요청이 최소 {0}ms 동안 서버의 네트워크 리소스를 점유할 수 있습니다.",
  "0.socket.slow_post_attack.waiting.solution.s0.o0": "각 HTTP 요청에 대한 제한시간 값을 적정한 수준으로 조정하여, 단일 HTTP 요청이 지나치게 긴 시간동안 세션을 점유하지 않도록 합니다.",
  "0.socket.slow_post_attack.waiting.solution.s0.o1": "제한시간을 설정하기 어려운 경우 웹 캐시 소프트웨어를 통해 트래픽 장애 방지가 가능합니다.",
  "0.socket.slow_post_attack.waiting.solution.s1.o0": "각 HTTP 요청에 대하여 {0} 헤더 값의 상한을 지정해야 합니다.",
  "0.socket.slow_post_attack.waiting.solution.s1.o1": "임의의 HTTP 요청의 {0} 헤더 값이 상한을 초과하는 경우, 해당 HTTP 요청 처리를 거부해야 합니다.",
  "0.true_scan.command_injection.cookie__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.cookie__parameter.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.cookie__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.cookie__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.cookie__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.cookie__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.cookie__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.cookie__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.cookie__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.cookie__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.cookie__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.cookie__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.cookie__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.cookie__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.cookie__return_value.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.cookie__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.cookie__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.cookie__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.cookie__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.cookie__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.cookie__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.cookie__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.cookie__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.cookie__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.cookie__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.cookie__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.custom__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.custom__parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.custom__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.custom__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.custom__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.custom__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.custom__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.custom__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.custom__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.custom__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.custom__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.custom__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.custom__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.custom__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.custom__return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.custom__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.custom__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.custom__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.custom__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.custom__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.custom__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.custom__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.custom__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.custom__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.custom__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.custom__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.dwr__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.dwr__parameter.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.dwr__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.dwr__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.dwr__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.dwr__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.dwr__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.dwr__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.dwr__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.dwr__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.dwr__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.dwr__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.dwr__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.dwr__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.dwr__return_value.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.dwr__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.dwr__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.dwr__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.dwr__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.dwr__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.dwr__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.dwr__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.dwr__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.dwr__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.dwr__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.dwr__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.form_data__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.form_data__parameter.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.form_data__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.form_data__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.form_data__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.form_data__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.form_data__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.form_data__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.form_data__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.form_data__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.form_data__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.form_data__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.form_data__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.form_data__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.form_data__return_value.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.form_data__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.form_data__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.form_data__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.form_data__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.form_data__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.form_data__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.form_data__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.form_data__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.form_data__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.form_data__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.form_data__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.gwt__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.gwt__parameter.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.gwt__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.gwt__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.gwt__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.gwt__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.gwt__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.gwt__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.gwt__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.gwt__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.gwt__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.gwt__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.gwt__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.gwt__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.gwt__return_value.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.gwt__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.gwt__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.gwt__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.gwt__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.gwt__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.gwt__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.gwt__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.gwt__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.gwt__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.gwt__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.gwt__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.http_header__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.http_header__parameter.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.http_header__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.http_header__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.http_header__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.http_header__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.http_header__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.http_header__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.http_header__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.http_header__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.http_header__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.http_header__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.http_header__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.http_header__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.http_header__return_value.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.http_header__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.http_header__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.http_header__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.http_header__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.http_header__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.http_header__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.http_header__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.http_header__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.http_header__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.http_header__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.http_header__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.json__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.json__parameter.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.json__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.json__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.json__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.json__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.json__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.json__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.json__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.json__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.json__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.json__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.json__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.json__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.json__return_value.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.json__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.json__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.json__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.json__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.json__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.json__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.json__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.json__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.json__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.json__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.json__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.multi_part__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.multi_part__parameter.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.multi_part__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.multi_part__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.multi_part__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.multi_part__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.multi_part__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.multi_part__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.multi_part__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.multi_part__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.multi_part__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.multi_part__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.multi_part__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.multi_part__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.multi_part__return_value.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.multi_part__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.multi_part__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.multi_part__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.multi_part__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.multi_part__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.multi_part__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.multi_part__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.multi_part__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.multi_part__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.multi_part__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.multi_part__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.odata__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.odata__parameter.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.odata__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.odata__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.odata__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.odata__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.odata__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.odata__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.odata__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.odata__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.odata__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.odata__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.odata__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.odata__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.odata__return_value.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.odata__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.odata__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.odata__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.odata__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.odata__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.odata__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.odata__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.odata__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.odata__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.odata__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.odata__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.query_string__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.query_string__parameter.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.query_string__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.query_string__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.query_string__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.query_string__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.query_string__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.query_string__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.query_string__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.query_string__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.query_string__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.query_string__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.query_string__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.query_string__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.query_string__return_value.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.query_string__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.query_string__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.query_string__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.query_string__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.query_string__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.query_string__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.query_string__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.query_string__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.query_string__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.query_string__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.query_string__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.url_path__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.url_path__parameter.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.url_path__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.url_path__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.url_path__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.url_path__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.url_path__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.url_path__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.url_path__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.url_path__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.url_path__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.url_path__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.url_path__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.url_path__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.url_path__return_value.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.url_path__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.url_path__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.url_path__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.url_path__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.url_path__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.url_path__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.url_path__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.url_path__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.url_path__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.url_path__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.url_path__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.userdef_parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.userdef_parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.userdef_parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.userdef_parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.userdef_parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.userdef_parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.userdef_parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.userdef_parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.userdef_parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.userdef_parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.userdef_parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.userdef_parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.userdef_parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.userdef_return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.userdef_return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.userdef_return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.userdef_return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.userdef_return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.userdef_return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.userdef_return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.userdef_return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.userdef_return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.userdef_return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.userdef_return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.userdef_return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.userdef_return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.xml__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.xml__parameter.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.xml__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.xml__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.xml__parameter.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.xml__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.xml__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.xml__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.xml__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.xml__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.xml__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.xml__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.command_injection.xml__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.command_injection.xml__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.command_injection.xml__return_value.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.command_injection.xml__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.command_injection.xml__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.command_injection.xml__return_value.attack.s2.o2": "{0}",
  "0.true_scan.command_injection.xml__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.command_injection.xml__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.command_injection.xml__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.xml__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.command_injection.xml__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.command_injection.xml__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.command_injection.xml__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.command_injection.xml__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.cookie__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.cookie__parameter.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.cookie__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.cookie__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.cookie__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.cookie__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.cookie__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.cookie__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.cookie__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.cookie__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.cookie__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.cookie__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.cookie__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.cookie__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.cookie__return_value.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.cookie__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.cookie__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.cookie__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.cookie__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.cookie__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.cookie__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.cookie__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.cookie__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.cookie__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.cookie__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.cookie__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.custom__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.custom__parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.custom__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.custom__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.custom__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.custom__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.custom__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.custom__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.custom__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.custom__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.custom__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.custom__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.custom__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.custom__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.custom__return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.custom__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.custom__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.custom__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.custom__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.custom__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.custom__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.custom__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.custom__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.custom__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.custom__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.custom__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.dwr__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.dwr__parameter.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.dwr__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.dwr__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.dwr__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.dwr__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.dwr__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.dwr__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.dwr__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.dwr__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.dwr__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.dwr__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.dwr__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.dwr__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.dwr__return_value.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.dwr__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.dwr__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.dwr__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.dwr__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.dwr__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.dwr__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.dwr__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.dwr__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.dwr__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.dwr__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.dwr__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.form_data__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.form_data__parameter.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.form_data__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.form_data__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.form_data__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.form_data__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.form_data__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.form_data__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.form_data__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.form_data__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.form_data__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.form_data__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.form_data__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.form_data__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.form_data__return_value.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.form_data__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.form_data__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.form_data__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.form_data__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.form_data__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.form_data__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.form_data__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.form_data__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.form_data__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.form_data__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.form_data__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.gwt__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.gwt__parameter.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.gwt__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.gwt__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.gwt__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.gwt__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.gwt__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.gwt__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.gwt__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.gwt__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.gwt__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.gwt__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.gwt__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.gwt__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.gwt__return_value.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.gwt__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.gwt__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.gwt__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.gwt__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.gwt__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.gwt__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.gwt__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.gwt__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.gwt__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.gwt__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.gwt__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.http_header__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.http_header__parameter.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.http_header__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.http_header__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.http_header__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.http_header__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.http_header__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.http_header__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.http_header__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.http_header__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.http_header__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.http_header__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.http_header__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.http_header__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.http_header__return_value.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.http_header__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.http_header__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.http_header__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.http_header__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.http_header__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.http_header__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.http_header__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.http_header__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.http_header__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.http_header__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.http_header__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.json__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.json__parameter.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.json__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.json__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.json__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.json__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.json__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.json__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.json__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.json__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.json__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.json__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.json__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.json__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.json__return_value.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.json__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.json__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.json__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.json__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.json__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.json__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.json__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.json__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.json__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.json__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.json__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.multi_part__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.multi_part__parameter.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.multi_part__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.multi_part__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.multi_part__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.multi_part__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.multi_part__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.multi_part__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.multi_part__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.multi_part__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.multi_part__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.multi_part__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.multi_part__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.multi_part__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.multi_part__return_value.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.multi_part__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.multi_part__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.multi_part__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.multi_part__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.multi_part__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.multi_part__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.multi_part__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.multi_part__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.multi_part__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.multi_part__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.multi_part__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.odata__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.odata__parameter.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.odata__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.odata__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.odata__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.odata__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.odata__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.odata__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.odata__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.odata__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.odata__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.odata__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.odata__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.odata__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.odata__return_value.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.odata__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.odata__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.odata__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.odata__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.odata__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.odata__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.odata__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.odata__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.odata__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.odata__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.odata__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.query_string__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.query_string__parameter.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.query_string__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.query_string__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.query_string__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.query_string__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.query_string__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.query_string__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.query_string__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.query_string__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.query_string__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.query_string__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.query_string__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.query_string__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.query_string__return_value.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.query_string__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.query_string__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.query_string__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.query_string__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.query_string__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.query_string__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.query_string__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.query_string__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.query_string__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.query_string__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.query_string__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.url_path__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.url_path__parameter.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.url_path__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.url_path__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.url_path__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.url_path__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.url_path__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.url_path__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.url_path__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.url_path__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.url_path__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.url_path__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.url_path__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.url_path__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.url_path__return_value.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.url_path__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.url_path__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.url_path__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.url_path__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.url_path__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.url_path__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.url_path__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.url_path__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.url_path__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.url_path__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.url_path__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.userdef_parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.userdef_parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.userdef_parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.userdef_parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.userdef_parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.userdef_parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.userdef_parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.userdef_parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.userdef_parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.userdef_parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.userdef_parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.userdef_parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.userdef_parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.userdef_return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.userdef_return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.userdef_return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.userdef_return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.userdef_return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.userdef_return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.userdef_return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.userdef_return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.userdef_return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.userdef_return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.userdef_return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.userdef_return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.userdef_return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.xml__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.xml__parameter.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.xml__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.xml__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.xml__parameter.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.xml__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.xml__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.xml__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.xml__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.xml__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.xml__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.xml__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.xml__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.external_redirect.xml__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.external_redirect.xml__return_value.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.external_redirect.xml__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.external_redirect.xml__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.external_redirect.xml__return_value.attack.s2.o2": "{0}",
  "0.true_scan.external_redirect.xml__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.external_redirect.xml__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.external_redirect.xml__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.xml__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.external_redirect.xml__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.external_redirect.xml__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.external_redirect.xml__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.external_redirect.xml__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.cookie__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.cookie__parameter.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.cookie__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.cookie__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.cookie__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.cookie__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.cookie__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.cookie__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.cookie__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.cookie__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.cookie__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.cookie__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.cookie__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.cookie__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.cookie__return_value.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.cookie__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.cookie__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.cookie__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.cookie__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.cookie__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.cookie__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.cookie__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.cookie__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.cookie__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.cookie__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.cookie__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.custom__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.custom__parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.custom__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.custom__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.custom__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.custom__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.custom__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.custom__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.custom__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.custom__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.custom__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.custom__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.custom__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.custom__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.custom__return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.custom__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.custom__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.custom__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.custom__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.custom__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.custom__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.custom__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.custom__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.custom__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.custom__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.custom__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.dwr__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.dwr__parameter.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.dwr__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.dwr__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.dwr__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.dwr__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.dwr__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.dwr__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.dwr__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.dwr__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.dwr__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.dwr__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.dwr__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.dwr__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.dwr__return_value.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.dwr__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.dwr__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.dwr__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.dwr__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.dwr__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.dwr__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.dwr__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.dwr__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.dwr__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.dwr__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.dwr__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.form_data__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.form_data__parameter.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.form_data__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.form_data__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.form_data__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.form_data__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.form_data__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.form_data__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.form_data__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.form_data__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.form_data__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.form_data__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.form_data__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.form_data__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.form_data__return_value.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.form_data__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.form_data__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.form_data__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.form_data__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.form_data__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.form_data__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.form_data__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.form_data__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.form_data__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.form_data__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.form_data__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.gwt__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.gwt__parameter.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.gwt__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.gwt__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.gwt__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.gwt__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.gwt__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.gwt__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.gwt__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.gwt__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.gwt__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.gwt__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.gwt__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.gwt__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.gwt__return_value.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.gwt__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.gwt__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.gwt__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.gwt__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.gwt__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.gwt__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.gwt__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.gwt__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.gwt__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.gwt__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.gwt__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.http_header__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.http_header__parameter.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.http_header__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.http_header__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.http_header__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.http_header__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.http_header__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.http_header__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.http_header__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.http_header__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.http_header__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.http_header__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.http_header__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.http_header__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.http_header__return_value.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.http_header__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.http_header__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.http_header__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.http_header__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.http_header__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.http_header__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.http_header__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.http_header__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.http_header__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.http_header__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.http_header__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.json__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.json__parameter.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.json__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.json__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.json__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.json__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.json__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.json__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.json__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.json__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.json__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.json__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.json__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.json__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.json__return_value.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.json__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.json__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.json__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.json__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.json__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.json__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.json__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.json__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.json__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.json__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.json__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.multi_part__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.multi_part__parameter.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.multi_part__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.multi_part__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.multi_part__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.multi_part__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.multi_part__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.multi_part__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.multi_part__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.multi_part__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.multi_part__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.multi_part__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.multi_part__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.multi_part__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.multi_part__return_value.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.multi_part__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.multi_part__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.multi_part__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.multi_part__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.multi_part__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.multi_part__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.multi_part__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.multi_part__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.multi_part__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.multi_part__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.multi_part__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.odata__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.odata__parameter.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.odata__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.odata__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.odata__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.odata__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.odata__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.odata__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.odata__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.odata__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.odata__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.odata__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.odata__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.odata__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.odata__return_value.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.odata__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.odata__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.odata__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.odata__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.odata__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.odata__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.odata__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.odata__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.odata__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.odata__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.odata__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.query_string__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.query_string__parameter.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.query_string__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.query_string__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.query_string__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.query_string__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.query_string__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.query_string__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.query_string__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.query_string__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.query_string__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.query_string__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.query_string__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.query_string__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.query_string__return_value.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.query_string__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.query_string__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.query_string__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.query_string__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.query_string__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.query_string__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.query_string__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.query_string__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.query_string__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.query_string__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.query_string__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.url_path__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.url_path__parameter.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.url_path__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.url_path__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.url_path__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.url_path__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.url_path__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.url_path__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.url_path__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.url_path__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.url_path__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.url_path__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.url_path__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.url_path__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.url_path__return_value.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.url_path__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.url_path__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.url_path__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.url_path__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.url_path__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.url_path__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.url_path__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.url_path__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.url_path__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.url_path__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.url_path__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.userdef_parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.userdef_parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.userdef_parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.userdef_parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.userdef_parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.userdef_parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.userdef_parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.userdef_parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.userdef_parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.userdef_parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.userdef_parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.userdef_parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.userdef_parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.userdef_return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.userdef_return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.userdef_return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.userdef_return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.userdef_return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.userdef_return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.userdef_return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.userdef_return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.userdef_return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.userdef_return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.userdef_return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.userdef_return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.userdef_return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.xml__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.xml__parameter.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.xml__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.xml__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.xml__parameter.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.xml__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.xml__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.xml__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.xml__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.xml__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.xml__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.xml__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.xml__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.local_file_include.xml__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.local_file_include.xml__return_value.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.local_file_include.xml__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.local_file_include.xml__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.local_file_include.xml__return_value.attack.s2.o2": "{0}",
  "0.true_scan.local_file_include.xml__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.local_file_include.xml__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.local_file_include.xml__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.xml__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.local_file_include.xml__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.local_file_include.xml__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.local_file_include.xml__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.local_file_include.xml__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.cookie__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.cookie__parameter.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.cookie__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.cookie__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.cookie__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.cookie__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.cookie__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.cookie__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.cookie__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.cookie__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.cookie__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.cookie__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.cookie__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.cookie__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.cookie__return_value.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.cookie__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.cookie__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.cookie__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.cookie__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.cookie__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.cookie__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.cookie__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.cookie__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.cookie__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.cookie__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.cookie__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.custom__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.custom__parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.custom__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.custom__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.custom__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.custom__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.custom__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.custom__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.custom__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.custom__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.custom__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.custom__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.custom__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.custom__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.custom__return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.custom__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.custom__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.custom__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.custom__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.custom__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.custom__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.custom__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.custom__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.custom__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.custom__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.custom__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.dwr__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.dwr__parameter.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.dwr__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.dwr__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.dwr__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.dwr__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.dwr__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.dwr__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.dwr__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.dwr__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.dwr__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.dwr__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.dwr__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.dwr__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.dwr__return_value.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.dwr__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.dwr__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.dwr__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.dwr__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.dwr__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.dwr__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.dwr__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.dwr__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.dwr__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.dwr__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.dwr__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.form_data__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.form_data__parameter.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.form_data__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.form_data__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.form_data__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.form_data__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.form_data__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.form_data__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.form_data__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.form_data__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.form_data__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.form_data__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.form_data__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.form_data__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.form_data__return_value.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.form_data__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.form_data__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.form_data__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.form_data__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.form_data__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.form_data__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.form_data__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.form_data__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.form_data__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.form_data__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.form_data__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.gwt__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.gwt__parameter.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.gwt__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.gwt__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.gwt__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.gwt__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.gwt__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.gwt__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.gwt__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.gwt__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.gwt__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.gwt__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.gwt__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.gwt__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.gwt__return_value.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.gwt__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.gwt__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.gwt__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.gwt__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.gwt__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.gwt__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.gwt__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.gwt__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.gwt__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.gwt__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.gwt__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.http_header__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.http_header__parameter.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.http_header__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.http_header__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.http_header__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.http_header__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.http_header__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.http_header__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.http_header__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.http_header__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.http_header__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.http_header__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.http_header__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.http_header__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.http_header__return_value.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.http_header__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.http_header__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.http_header__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.http_header__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.http_header__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.http_header__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.http_header__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.http_header__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.http_header__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.http_header__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.http_header__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.json__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.json__parameter.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.json__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.json__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.json__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.json__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.json__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.json__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.json__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.json__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.json__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.json__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.json__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.json__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.json__return_value.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.json__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.json__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.json__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.json__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.json__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.json__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.json__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.json__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.json__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.json__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.json__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.multi_part__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.multi_part__parameter.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.multi_part__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.multi_part__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.multi_part__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.multi_part__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.multi_part__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.multi_part__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.multi_part__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.multi_part__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.multi_part__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.multi_part__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.multi_part__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.multi_part__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.multi_part__return_value.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.multi_part__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.multi_part__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.multi_part__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.multi_part__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.multi_part__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.multi_part__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.multi_part__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.multi_part__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.multi_part__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.multi_part__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.multi_part__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.odata__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.odata__parameter.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.odata__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.odata__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.odata__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.odata__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.odata__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.odata__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.odata__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.odata__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.odata__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.odata__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.odata__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.odata__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.odata__return_value.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.odata__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.odata__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.odata__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.odata__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.odata__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.odata__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.odata__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.odata__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.odata__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.odata__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.odata__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.query_string__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.query_string__parameter.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.query_string__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.query_string__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.query_string__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.query_string__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.query_string__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.query_string__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.query_string__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.query_string__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.query_string__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.query_string__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.query_string__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.query_string__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.query_string__return_value.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.query_string__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.query_string__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.query_string__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.query_string__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.query_string__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.query_string__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.query_string__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.query_string__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.query_string__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.query_string__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.query_string__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.url_path__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.url_path__parameter.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.url_path__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.url_path__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.url_path__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.url_path__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.url_path__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.url_path__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.url_path__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.url_path__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.url_path__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.url_path__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.url_path__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.url_path__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.url_path__return_value.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.url_path__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.url_path__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.url_path__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.url_path__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.url_path__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.url_path__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.url_path__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.url_path__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.url_path__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.url_path__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.url_path__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.userdef_parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.userdef_parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.userdef_parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.userdef_parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.userdef_parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.userdef_parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.userdef_parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.userdef_parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.userdef_parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.userdef_parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.userdef_parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.userdef_parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.userdef_parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.userdef_return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.userdef_return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.userdef_return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.userdef_return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.userdef_return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.userdef_return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.userdef_return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.userdef_return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.userdef_return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.userdef_return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.userdef_return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.userdef_return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.userdef_return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.xml__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.xml__parameter.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.xml__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.xml__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.xml__parameter.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.xml__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.xml__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.xml__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.xml__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.xml__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.xml__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.xml__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.xml__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.path_traversal.xml__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.path_traversal.xml__return_value.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.path_traversal.xml__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.path_traversal.xml__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.path_traversal.xml__return_value.attack.s2.o2": "{0}",
  "0.true_scan.path_traversal.xml__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.path_traversal.xml__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.path_traversal.xml__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.xml__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.path_traversal.xml__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.path_traversal.xml__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.path_traversal.xml__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.path_traversal.xml__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.cookie__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.cookie__parameter.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.cookie__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.cookie__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.cookie__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.cookie__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.cookie__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.cookie__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.cookie__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.cookie__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.cookie__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.cookie__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.cookie__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.cookie__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.cookie__return_value.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.cookie__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.cookie__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.cookie__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.cookie__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.cookie__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.cookie__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.cookie__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.cookie__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.cookie__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.cookie__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.cookie__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.custom__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.custom__parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.custom__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.custom__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.custom__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.custom__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.custom__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.custom__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.custom__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.custom__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.custom__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.custom__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.custom__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.custom__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.custom__return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.custom__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.custom__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.custom__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.custom__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.custom__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.custom__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.custom__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.custom__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.custom__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.custom__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.custom__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.dwr__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.dwr__parameter.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.dwr__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.dwr__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.dwr__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.dwr__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.dwr__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.dwr__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.dwr__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.dwr__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.dwr__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.dwr__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.dwr__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.dwr__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.dwr__return_value.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.dwr__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.dwr__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.dwr__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.dwr__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.dwr__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.dwr__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.dwr__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.dwr__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.dwr__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.dwr__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.dwr__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.form_data__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.form_data__parameter.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.form_data__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.form_data__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.form_data__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.form_data__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.form_data__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.form_data__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.form_data__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.form_data__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.form_data__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.form_data__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.form_data__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.form_data__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.form_data__return_value.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.form_data__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.form_data__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.form_data__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.form_data__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.form_data__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.form_data__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.form_data__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.form_data__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.form_data__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.form_data__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.form_data__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.gwt__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.gwt__parameter.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.gwt__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.gwt__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.gwt__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.gwt__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.gwt__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.gwt__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.gwt__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.gwt__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.gwt__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.gwt__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.gwt__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.gwt__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.gwt__return_value.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.gwt__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.gwt__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.gwt__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.gwt__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.gwt__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.gwt__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.gwt__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.gwt__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.gwt__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.gwt__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.gwt__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.http_header__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.http_header__parameter.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.http_header__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.http_header__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.http_header__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.http_header__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.http_header__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.http_header__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.http_header__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.http_header__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.http_header__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.http_header__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.http_header__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.http_header__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.http_header__return_value.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.http_header__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.http_header__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.http_header__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.http_header__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.http_header__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.http_header__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.http_header__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.http_header__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.http_header__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.http_header__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.http_header__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.json__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.json__parameter.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.json__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.json__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.json__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.json__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.json__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.json__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.json__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.json__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.json__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.json__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.json__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.json__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.json__return_value.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.json__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.json__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.json__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.json__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.json__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.json__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.json__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.json__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.json__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.json__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.json__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.multi_part__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.multi_part__parameter.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.multi_part__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.multi_part__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.multi_part__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.multi_part__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.multi_part__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.multi_part__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.multi_part__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.multi_part__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.multi_part__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.multi_part__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.multi_part__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.multi_part__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.multi_part__return_value.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.multi_part__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.multi_part__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.multi_part__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.multi_part__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.multi_part__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.multi_part__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.multi_part__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.multi_part__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.multi_part__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.multi_part__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.multi_part__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.odata__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.odata__parameter.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.odata__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.odata__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.odata__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.odata__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.odata__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.odata__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.odata__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.odata__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.odata__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.odata__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.odata__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.odata__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.odata__return_value.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.odata__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.odata__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.odata__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.odata__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.odata__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.odata__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.odata__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.odata__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.odata__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.odata__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.odata__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.query_string__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.query_string__parameter.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.query_string__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.query_string__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.query_string__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.query_string__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.query_string__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.query_string__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.query_string__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.query_string__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.query_string__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.query_string__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.query_string__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.query_string__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.query_string__return_value.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.query_string__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.query_string__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.query_string__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.query_string__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.query_string__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.query_string__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.query_string__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.query_string__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.query_string__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.query_string__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.query_string__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.url_path__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.url_path__parameter.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.url_path__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.url_path__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.url_path__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.url_path__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.url_path__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.url_path__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.url_path__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.url_path__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.url_path__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.url_path__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.url_path__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.url_path__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.url_path__return_value.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.url_path__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.url_path__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.url_path__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.url_path__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.url_path__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.url_path__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.url_path__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.url_path__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.url_path__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.url_path__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.url_path__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.userdef_parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.userdef_parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.userdef_parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.userdef_parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.userdef_parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.userdef_parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.userdef_parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.userdef_parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.userdef_parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.userdef_parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.userdef_parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.userdef_parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.userdef_parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.userdef_return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.userdef_return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.userdef_return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.userdef_return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.userdef_return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.userdef_return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.userdef_return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.userdef_return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.userdef_return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.userdef_return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.userdef_return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.userdef_return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.userdef_return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.xml__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.xml__parameter.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.xml__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.xml__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.xml__parameter.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.xml__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.xml__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.xml__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.xml__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.xml__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.xml__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.xml__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.xml__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.sql_injection.xml__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.sql_injection.xml__return_value.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.sql_injection.xml__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.sql_injection.xml__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.sql_injection.xml__return_value.attack.s2.o2": "{0}",
  "0.true_scan.sql_injection.xml__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.sql_injection.xml__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.sql_injection.xml__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.xml__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.sql_injection.xml__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.sql_injection.xml__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.sql_injection.xml__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.sql_injection.xml__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.cookie__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.cookie__parameter.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.cookie__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.cookie__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.cookie__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.cookie__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.cookie__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.cookie__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.cookie__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.cookie__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.cookie__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.cookie__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.cookie__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.cookie__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.cookie__return_value.attack.s1.o0": "HTTP 요청의 쿠키 중 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.cookie__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.cookie__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.cookie__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.cookie__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.cookie__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.cookie__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.cookie__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.cookie__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.cookie__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.cookie__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.cookie__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.custom__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.custom__parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.custom__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.custom__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.custom__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.custom__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.custom__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.custom__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.custom__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.custom__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.custom__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.custom__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.custom__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.custom__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.custom__return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.custom__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.custom__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.custom__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.custom__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.custom__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.custom__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.custom__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.custom__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.custom__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.custom__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.custom__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.dwr__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.dwr__parameter.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.dwr__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.dwr__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.dwr__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.dwr__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.dwr__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.dwr__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.dwr__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.dwr__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.dwr__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.dwr__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.dwr__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.dwr__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.dwr__return_value.attack.s1.o0": "HTTP 요청의 커스텀 DWR 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.dwr__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.dwr__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.dwr__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.dwr__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.dwr__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.dwr__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.dwr__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.dwr__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.dwr__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.dwr__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.dwr__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.form_data__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.form_data__parameter.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.form_data__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.form_data__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.form_data__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.form_data__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.form_data__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.form_data__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.form_data__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.form_data__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.form_data__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.form_data__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.form_data__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.form_data__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.form_data__return_value.attack.s1.o0": "HTTP 요청의 폼 데이터 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.form_data__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.form_data__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.form_data__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.form_data__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.form_data__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.form_data__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.form_data__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.form_data__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.form_data__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.form_data__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.form_data__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.gwt__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.gwt__parameter.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.gwt__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.gwt__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.gwt__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.gwt__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.gwt__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.gwt__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.gwt__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.gwt__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.gwt__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.gwt__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.gwt__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.gwt__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.gwt__return_value.attack.s1.o0": "HTTP 요청의 GWT 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.gwt__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.gwt__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.gwt__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.gwt__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.gwt__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.gwt__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.gwt__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.gwt__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.gwt__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.gwt__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.gwt__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.http_header__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.http_header__parameter.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.http_header__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.http_header__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.http_header__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.http_header__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.http_header__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.http_header__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.http_header__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.http_header__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.http_header__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.http_header__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.http_header__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.http_header__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.http_header__return_value.attack.s1.o0": "HTTP 요청의 헤더 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.http_header__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.http_header__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.http_header__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.http_header__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.http_header__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.http_header__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.http_header__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.http_header__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.http_header__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.http_header__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.http_header__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.json__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.json__parameter.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.json__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.json__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.json__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.json__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.json__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.json__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.json__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.json__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.json__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.json__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.json__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.json__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.json__return_value.attack.s1.o0": "HTTP 요청의 커스텀 JSON 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.json__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.json__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.json__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.json__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.json__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.json__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.json__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.json__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.json__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.json__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.json__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.multi_part__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.multi_part__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.multi_part__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.multi_part__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.attack.s1.o0": "HTTP 요청의 멀티파트 데이터 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.multi_part__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.multi_part__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.multi_part__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.multi_part__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.odata__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.odata__parameter.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.odata__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.odata__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.odata__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.odata__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.odata__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.odata__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.odata__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.odata__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.odata__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.odata__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.odata__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.odata__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.odata__return_value.attack.s1.o0": "HTTP 요청의 폼 ODATA 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.odata__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.odata__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.odata__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.odata__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.odata__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.odata__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.odata__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.odata__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.odata__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.odata__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.odata__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.query_string__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.query_string__parameter.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.query_string__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.query_string__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.query_string__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.query_string__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.query_string__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.query_string__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.query_string__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.query_string__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.query_string__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.query_string__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.query_string__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.query_string__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.query_string__return_value.attack.s1.o0": "HTTP 요청의 폼 쿼리 스트링 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.query_string__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.query_string__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.query_string__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.query_string__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.query_string__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.query_string__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.query_string__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.query_string__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.query_string__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.query_string__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.query_string__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.url_path__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.url_path__parameter.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.url_path__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.url_path__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.url_path__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.url_path__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.url_path__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.url_path__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.url_path__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.url_path__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.url_path__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.url_path__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.url_path__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.url_path__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.url_path__return_value.attack.s1.o0": "HTTP 요청의 URL 경로 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.url_path__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.url_path__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.url_path__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.url_path__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.url_path__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.url_path__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.url_path__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.url_path__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.url_path__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.url_path__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.url_path__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.userdef_parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.userdef_parameter.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.userdef_parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.userdef_parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.userdef_parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.userdef_parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.userdef_parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.userdef_parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.userdef_parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.userdef_parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.userdef_parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.userdef_parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.userdef_parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.userdef_return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.userdef_return_value.attack.s1.o0": "HTTP 요청의 커스텀 RPC 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.userdef_return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.userdef_return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.userdef_return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.userdef_return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.userdef_return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.userdef_return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.userdef_return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.userdef_return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.userdef_return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.userdef_return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.userdef_return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.xml__parameter.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.xml__parameter.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.xml__parameter.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.xml__parameter.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.xml__parameter.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.xml__parameter.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.xml__parameter.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.xml__parameter.result.s2.o0": "해당 함수의 {0} 번째 매개변수 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.xml__parameter.result.s2.o1": "해당 매개변수의 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.xml__parameter.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.xml__parameter.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 {1} 번째 매개변수 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.xml__parameter.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.xml__parameter.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 {1} 번째 매개변수 값을 검사하도록 합니다.",
  "0.true_scan.xpath_injection.xml__return_value.attack.s0.o0": "분석을 위해 HTTP 요청을 구성했습니다.",
  "0.true_scan.xpath_injection.xml__return_value.attack.s1.o0": "HTTP 요청의 XML 매개변수 중에서 {0}의 값을 다음과 같이 설정했습니다: {1}",
  "0.true_scan.xpath_injection.xml__return_value.attack.s2.o0": "구성을 완료한 HTTP 요청을 분석 대상 서버로 전송했습니다.",
  "0.true_scan.xpath_injection.xml__return_value.attack.s2.o1": "전송한 HTTP 요청은 다음과 같습니다.",
  "0.true_scan.xpath_injection.xml__return_value.attack.s2.o2": "{0}",
  "0.true_scan.xpath_injection.xml__return_value.result.s0.o0": "트루스캔을 활용하여 서버의 함수 호출 정보를 수신했습니다.",
  "0.true_scan.xpath_injection.xml__return_value.result.s1.o0": "수신한 서버의 함수 호출 정보를 분석한 결과, 앞서 전송한 HTTP 요청에 대해 서버가 {0} 함수를 호출했습니다.",
  "0.true_scan.xpath_injection.xml__return_value.result.s2.o0": "해당 함수의 반환 값으로 인해 실제 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.xml__return_value.result.s2.o1": "해당 반환 값은 다음과 같습니다: {0}",
  "0.true_scan.xpath_injection.xml__return_value.result.s2.o2": "해당 값은 HTTP 요청을 구성할 때 설정한 값과 같습니다.",
  "0.true_scan.xpath_injection.xml__return_value.result.s3.o0": "분석 결과, HTTP 요청을 구성하면서 {0} 함수의 반환 값을 조작할 수 있고 이로 인해 잠재적인 취약점이 발생할 수 있습니다.",
  "0.true_scan.xpath_injection.xml__return_value.solution.s0.o0": "호출된 함수로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 반환 값을 검사해야 합니다.",
  "0.true_scan.xpath_injection.xml__return_value.solution.s0.o1": "{0} 함수를 실행하기 전 해당 함수의 반환 값을 검사하도록 합니다.",
  "1.event.absolute_path_disclosure.match.attack.s0.o0": "분석 대상 페이지에 접근했습니다.",
  "1.event.absolute_path_disclosure.match.attack.s0.o1": "접근 과정은 다음과 같습니다.",
  "1.event.absolute_path_disclosure.match.attack.s1.o0": "{0}",
  "1.event.absolute_path_disclosure.match.attack.s2.o0": "분석 대상 페이지에서 파일 절대 경로에 해당하는 문자열을 탐색했습니다.",
  "1.event.absolute_path_disclosure.match.result.s0.o0": "분석 대상 페이지에 다음과 같은 문자열이 존재합니다.",
  "1.event.absolute_path_disclosure.match.result.s1.o0": "{0}",
  "1.event.absolute_path_disclosure.match.result.s2.o0": "해당 문자열은 파일 절대 경로에 해당합니다.",
  "1.event.absolute_path_disclosure.match.solution.s0.o0": "발견한 파일 절대 경로를 노출할 필요가 없는 경우, 해당 파일 절대 경로를 HTTP 응답 본문에서 제거하세요.",
  "1.event.command_injection.conditional.apiReqInfo": "{0}",
  "1.event.command_injection.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.command_injection.conditional.apireqinfo": "{0}",
  "1.event.command_injection.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.command_injection.custom.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.command_injection.custom.attack.s1.o0": "{0}",
  "1.event.command_injection.custom.attack.s2.o0": "공격 대상 페이지에 존재하는 모든 {0} 요소에 대하여, 다음과 같은 사용자 정의 공격 문자열을 입력했습니다.",
  "1.event.command_injection.custom.attack.s3.o0": "{0}",
  "1.event.command_injection.custom.attack.s4.o0": "다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "1.event.command_injection.custom.attack.s5.o0": "{0}",
  "1.event.command_injection.custom.result.s0.o0": "이벤트 수행 결과로서 얻은 DOM 내부에서 다음과 같이 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "1.event.command_injection.custom.result.s1.o0": "{0}",
  "1.event.command_injection.custom.result.s2.o0": "발견한 문자열로 인해 운영 체제 명령어 삽입 취약점을 검출했습니다.",
  "1.event.command_injection.custom.solution.s0.o0": "외부 입력값을 포함하여 운영 체제 명령어를 실행하는 경우, 외부 입력값에 대한 검증이 필요합니다.",
  "1.event.command_injection.custom.solution.s1.o0": "각 운영 체제에서는 외부 입력값에 대해 다음과 같은 검증을 수행할 수 있습니다.",
  "1.event.command_injection.custom.solution.s2.o0": "{0} 계열 운영 체제의 경우, 다음과 같은 문자들에 대한 검증이 필요합니다.",
  "1.event.command_injection.custom.solution.s3.o0": "{0}",
  "1.event.command_injection.custom.solution.s4.o0": "{0} 계열 운영 체제의 경우, 다음과 같은 문자들에 대한 검증이 필요합니다.",
  "1.event.command_injection.custom.solution.s5.o0": "{0}",
  "1.event.command_injection.custom.solution.s6.o0": "또한 권한이 없는 사용자가 운영 체제 명령어를 실행할 수 없도록 권한 제어가 필요합니다.",
  "1.event.command_injection.netstat.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.command_injection.netstat.attack.s1.o0": "{0}",
  "1.event.command_injection.netstat.attack.s2.o0": "공격 대상 페이지에 존재하는 모든 {0} 요소에 대하여, 다음과 같이 입력했습니다.",
  "1.event.command_injection.netstat.attack.s3.o0": "{0}",
  "1.event.command_injection.netstat.attack.s4.o0": "다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "1.event.command_injection.netstat.attack.s5.o0": "{0}",
  "1.event.command_injection.netstat.result.s0.o0": "이벤트 수행 결과로서 얻은 DOM 내부에서 다음과 같은 문자열을 발견했습니다.",
  "1.event.command_injection.netstat.result.s1.o0": "{0}",
  "1.event.command_injection.netstat.result.s2.o0": "해당 문자열은 {0} 명령의 실행 결과이며, 해당 명령이 서버 운영 체제를 통해 실행되었음을 의미합니다.",
  "1.event.command_injection.netstat.result.s3.o0": "해당 명령을 실행한 결과, 운영 체제 명령어 삽입 취약점을 검출했습니다.",
  "1.event.command_injection.netstat.solution.s0.o0": "외부 입력값을 포함하여 운영 체제 명령어를 실행하는 경우, 외부 입력값에 대한 검증이 필요합니다.",
  "1.event.command_injection.netstat.solution.s1.o0": "각 운영 체제에서는 외부 입력값에 대해 다음과 같은 검증을 수행할 수 있습니다.",
  "1.event.command_injection.netstat.solution.s2.o0": "{0} 계열 운영 체제의 경우, 다음과 같은 문자들에 대한 검증이 필요합니다.",
  "1.event.command_injection.netstat.solution.s3.o0": "{0}",
  "1.event.command_injection.netstat.solution.s4.o0": "{0} 계열 운영 체제의 경우, 다음과 같은 문자들에 대한 검증이 필요합니다.",
  "1.event.command_injection.netstat.solution.s5.o0": "{0}",
  "1.event.command_injection.netstat.solution.s6.o0": "또한 권한이 없는 사용자가 운영 체제 명령어를 실행할 수 없도록 권한 제어가 필요합니다.",
  "1.event.csrf.formWithoutToken.attack.s0.o0": "페이지 내부 특정 요소 중 CSRF를 방지하는 Anti-CSRF 토큰이 있는지 검사합니다.",
  "1.event.csrf.formWithoutToken.result.s0.o0": "검사 결과 CSRF를 발생시키는 페이지 요소는 다음과 같습니다.",
  "1.event.csrf.formWithoutToken.result.s1.o0": "{0}",
  "1.event.csrf.formWithoutToken.solution.s0.o0": "CSRF를 막기 위해 FORM 요소에 Anti-CSRF 토큰을 추가해야 합니다.",
  "1.event.csrf.formWithoutToken.solution.s0.o1": "Anti-CSRF 토큰은 FORM 요소 내에 \"CSRFToken\", \"anticsrf\", \"OWASP_CSRFTOKEN\" 등의 Anti-CSRF 토큰을 HIDDEN 필드로 추가하여 사용합니다.",
  "1.event.csrf.formWithoutToken.solution.s0.o2": "혹은 JavaScript에서 Anti-CSRF 토큰을 사용할 수 있습니다.",
  "1.event.csrf.formWithoutToken.solution.s0.o3": "하지만 XSS가 발생하는 페이지라면 토큰 유무와 관계 없이 CSRF가 발생할 수도 있습니다.",
  "1.event.csrf.formwithouttoken.attack.s0.o0": "페이지 내부 특정 요소 중 CSRF를 방지하는 Anti-CSRF 토큰이 있는지 검사합니다.",
  "1.event.csrf.formwithouttoken.result.s0.o0": "검사 결과 CSRF를 발생시키는 페이지 요소는 다음과 같습니다.",
  "1.event.csrf.formwithouttoken.result.s1.o0": "{0}",
  "1.event.csrf.formwithouttoken.solution.s0.o0": "CSRF를 막기 위해 FORM 요소에 Anti-CSRF 토큰을 추가해야 합니다.",
  "1.event.csrf.formwithouttoken.solution.s0.o1": "Anti-CSRF 토큰은 FORM 요소 내에 \"CSRFToken\", \"anticsrf\", \"OWASP_CSRFTOKEN\" 등의 Anti-CSRF 토큰을 HIDDEN 필드로 추가하여 사용합니다.",
  "1.event.csrf.formwithouttoken.solution.s0.o2": "혹은 JavaSctipt에서 Anti-CSRF 토큰을 사용할 수 있습니다.",
  "1.event.csrf.formwithouttoken.solution.s0.o3": "하지만 XSS가 발생하는 페이지라면 토큰 유무와 관계 없이 CSRF가 발생할 수도 있습니다.",
  "1.event.dast.sw.common.6500.closure.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 1차 시도했습니다.",
  "1.event.dast.sw.common.6500.closure.attack.s0.o1": "{0}",
  "1.event.dast.sw.common.6500.closure.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "1.event.dast.sw.common.6500.closure.attack.s1.o1": "{0}",
  "1.event.dast.sw.common.6500.closure.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "1.event.dast.sw.common.6500.closure.attack.s2.o1": "{0}",
  "1.event.dast.sw.common.6500.closure.attack.s3.o0": "브라우저를 강제로 종료한 후, 다시 실행했습니다.\n",
  "1.event.dast.sw.common.6500.closure.attack.s4.o0": "다음 URL에 해당하는 페이지에서 로그인을 2차 시도했습니다.",
  "1.event.dast.sw.common.6500.closure.attack.s4.o1": "{0}",
  "1.event.dast.sw.common.6500.closure.attack.s5.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "1.event.dast.sw.common.6500.closure.attack.s5.o1": "{0}",
  "1.event.dast.sw.common.6500.closure.attack.s6.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "1.event.dast.sw.common.6500.closure.attack.s6.o1": "{0}",
  "1.event.dast.sw.common.6500.closure.result.s0.o0": "1차 및 2차 로그인 시도를 통해 생성된 세션 ID를 비교한 결과, 두 값이 동일합니다.",
  "1.event.dast.sw.common.6500.closure.result.s1.o0": "분석 수행 결과, 세션 ID가 고정값에 해당함을 확인했습니다.",
  "1.event.dast.sw.common.6500.closure.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "1.event.dast.sw.common.6500.closure.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "1.event.dast.sw.common.6500.logout.attack.s0.o0": "다음 URL에 해당하는 페이지에서 로그인을 1차 시도했습니다.",
  "1.event.dast.sw.common.6500.logout.attack.s0.o1": "{0}",
  "1.event.dast.sw.common.6500.logout.attack.s1.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "1.event.dast.sw.common.6500.logout.attack.s1.o1": "{0}",
  "1.event.dast.sw.common.6500.logout.attack.s2.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "1.event.dast.sw.common.6500.logout.attack.s2.o1": "{0}",
  "1.event.dast.sw.common.6500.logout.attack.s3.o0": "다음 URL에 해당하는 페이지에서 로그아웃을 시도했습니다.",
  "1.event.dast.sw.common.6500.logout.attack.s3.o1": "{0}",
  "1.event.dast.sw.common.6500.logout.attack.s4.o0": "로그아웃한 후, 다음 URL로 이동했습니다.",
  "1.event.dast.sw.common.6500.logout.attack.s4.o1": "{0}",
  "1.event.dast.sw.common.6500.logout.attack.s5.o0": "다음 URL에 해당하는 페이지에서 로그인을 2차 시도했습니다.",
  "1.event.dast.sw.common.6500.logout.attack.s5.o1": "{0}",
  "1.event.dast.sw.common.6500.logout.attack.s6.o0": "로그인 이후, 다음 URL로 이동했습니다.",
  "1.event.dast.sw.common.6500.logout.attack.s6.o1": "{0}",
  "1.event.dast.sw.common.6500.logout.attack.s7.o0": "브라우저에서 이름이 {0}에 해당하는 쿠키값을 추출했습니다. 해당 쿠키값은 세션 ID에 해당하며, 다음과 같습니다.",
  "1.event.dast.sw.common.6500.logout.attack.s7.o1": "{0}",
  "1.event.dast.sw.common.6500.logout.result.s0.o0": "1차 및 2차 로그인 시도를 통해 생성된 세션 ID를 비교한 결과, 두 값이 동일합니다.",
  "1.event.dast.sw.common.6500.logout.result.s1.o0": "분석 수행 결과, 세션 ID가 고정값에 해당함을 확인했습니다.",
  "1.event.dast.sw.common.6500.logout.solution.s0.o0": "세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "1.event.dast.sw.common.6500.logout.solution.s1.o0": "각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "1.event.email_address_disclosure.email.attack.s0.o0": "분석 대상 페이지에 접근했습니다.",
  "1.event.email_address_disclosure.email.attack.s0.o1": "접근 과정은 다음과 같습니다.",
  "1.event.email_address_disclosure.email.attack.s1.o0": "{0}",
  "1.event.email_address_disclosure.email.attack.s2.o0": "분석 대상 페이지에서 이메일 주소에 해당하는 문자열을 탐색했습니다.",
  "1.event.email_address_disclosure.email.result.s0.o0": "분석 대상 페이지에 다음과 같은 문자열이 존재합니다.",
  "1.event.email_address_disclosure.email.result.s1.o0": "{0}",
  "1.event.email_address_disclosure.email.result.s2.o0": "해당 문자열은 이메일 주소에 해당합니다.",
  "1.event.email_address_disclosure.email.solution.s0.o0": "발견한 이메일 주소를 노출할 필요가 없는 경우, 해당 이메일 주소를 HTTP 응답 본문에서 제거하세요.",
  "1.event.external_redirect.conditional.apiReqInfo": "{0}",
  "1.event.external_redirect.conditional.apiReqMsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.external_redirect.conditional.apireqinfo": "{0}",
  "1.event.external_redirect.conditional.apireqmsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.external_redirect.invocation.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "1.event.external_redirect.invocation.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증을 수행해야 합니다.",
  "1.event.external_redirect.redirect.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.external_redirect.redirect.attack.s0.o1": "{0}",
  "1.event.external_redirect.redirect.attack.s1.o0": "공격 대상 페이지의 모든 {0} 요소 중 XPath의 해시값이 {1}인 요소에 대하여 다음과 같이 입력했습니다.",
  "1.event.external_redirect.redirect.attack.s1.o1": "{0}",
  "1.event.external_redirect.redirect.attack.s2.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "1.event.external_redirect.redirect.result.s0.o0": "이벤트 수행 후, 이동한 페이지의 URL 경로에 다음과 같은 문자열을 발견했습니다.",
  "1.event.external_redirect.redirect.result.s0.o1": "{0}",
  "1.event.external_redirect.redirect.result.s1.o0": "분석 수행 결과, 이벤트를 수행할 때 입력한 값에 해당하는 URL 경로로의 이동을 발견했습니다.",
  "1.event.external_redirect.redirect.result.s1.o1": "따라서 수행한 이벤트로 인해 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "1.event.format_string.conditional.apiReqInfo": "{0}",
  "1.event.format_string.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.format_string.conditional.apireqinfo": "{0}",
  "1.event.format_string.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.format_string.error.attack.s0.o0": "형식 문자열 삽입 취약점은 형식 문자열을 포함하는 라이브러리 또는 함수에서 사용자 입력을 사용하여 공격자가 형식 문자열을 사용할 수 있는 취약점입니다.",
  "1.event.format_string.error.attack.s1.o0": "형식 문자열 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "1.event.format_string.error.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.format_string.error.attack.s3.o0": "{0}",
  "1.event.format_string.error.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "1.event.format_string.error.attack.s5.o0": "{0}",
  "1.event.format_string.error.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "1.event.format_string.error.attack.s7.o0": "{0}",
  "1.event.format_string.error.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "1.event.format_string.error.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "1.event.format_string.error.result.s2.o0": "{0}",
  "1.event.format_string.error.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "1.event.format_string.error.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 형식 문자열 삽입 취약점의 존재 가능성을 발견했습니다.",
  "1.event.format_string.error.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.event.format_string.error.solution.s1.o0": "형식 문자열 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 형식 문자열을 구성하는 경우에서의 데이터 검증이 필요합니다.",
  "1.event.format_string.error.solution.s2.o0": "입력 받은 데이터에 토큰이 포함되는지 확인하는 등 입력 받은 값으로 인해 발생한 오류를 적절히 처리해야 합니다.",
  "1.event.format_string.error.solution.s3.o0": "또는 웹 서버, WAS 등에 존재하는 취약점에 대하여 각 제공사에서 제공하는 최신 패치를 적용하여 취약점을 해결할 수 있습니다.",
  "1.event.ldap_injection.conditional.apiReqInfo": "{0}",
  "1.event.ldap_injection.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.ldap_injection.conditional.apireqinfo": "{0}",
  "1.event.ldap_injection.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.ldap_injection.error.attack.s0.o0": "LDAP 삽입 취약점은 사용자 입력을 기반한 LDAP 문을 구성하는 웹 기반 애플리케이션에 대하여 LDAP 문을 조작할 수 있는 취약점입니다.",
  "1.event.ldap_injection.error.attack.s1.o0": "LDAP 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "1.event.ldap_injection.error.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.ldap_injection.error.attack.s3.o0": "{0}",
  "1.event.ldap_injection.error.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "1.event.ldap_injection.error.attack.s5.o0": "{0}",
  "1.event.ldap_injection.error.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "1.event.ldap_injection.error.attack.s7.o0": "{0}",
  "1.event.ldap_injection.error.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "1.event.ldap_injection.error.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "1.event.ldap_injection.error.result.s2.o0": "{0}",
  "1.event.ldap_injection.error.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "1.event.ldap_injection.error.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 LDAP 삽입 취약점의 존재 가능성을 발견했습니다.",
  "1.event.ldap_injection.error.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.event.ldap_injection.error.solution.s1.o0": "LDAP 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 LDAP 쿼리문을 형성하는 경우에 대하여 다음과 같은 데이터 검증이 필요합니다.",
  "1.event.ldap_injection.error.solution.s2.o0": "먼저 사용자 입력 데이터 중 '*', '&', '(' 등과 같은 일부 문자들에 대하여, 해당하는 모든 문자를 안전한 문자로 바꿔야 합니다.",
  "1.event.ldap_injection.error.solution.s2.o1": "다음과 같이 예를 들 수 있습니다.",
  "1.event.ldap_injection.error.solution.s3.o0": "{0}",
  "1.event.ldap_injection.error.solution.s4.o0": "또는 보다 엄격한 권한 제어를 통해 임의의 사용자들로부터의 공격이 불가능하도록 강제해야 합니다.",
  "1.event.local_file_include.conditional.apiReqInfo": "{0}",
  "1.event.local_file_include.conditional.apiReqMsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.local_file_include.conditional.apireqinfo": "{0}",
  "1.event.local_file_include.conditional.apireqmsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.local_file_include.custom.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.local_file_include.custom.attack.s0.o1": "{0}",
  "1.event.local_file_include.custom.attack.s1.o0": "공격 대상 페이지의 모든 {0} 요소에 대하여 다음과 같이 입력했습니다.",
  "1.event.local_file_include.custom.attack.s1.o1": "{0}",
  "1.event.local_file_include.custom.attack.s1.o2": "입력한 공격 문자열은 사용자 정의 공격 문자열에 해당합니다.",
  "1.event.local_file_include.custom.attack.s2.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "1.event.local_file_include.custom.result.s0.o0": "이벤트 수행 후, 공격 대상 페이지의 DOM에서 다음과 같은 문자열을 발견했습니다.",
  "1.event.local_file_include.custom.result.s0.o1": "{0}",
  "1.event.local_file_include.custom.result.s1.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "1.event.local_file_include.custom.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "1.event.local_file_include.custom.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.event.local_file_include.custom.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "1.event.local_file_include.jsp.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.local_file_include.jsp.attack.s0.o1": "{0}",
  "1.event.local_file_include.jsp.attack.s1.o0": "공격 대상 페이지의 모든 {0} 요소에 대하여 다음과 같이 입력했습니다.",
  "1.event.local_file_include.jsp.attack.s1.o1": "{0}",
  "1.event.local_file_include.jsp.attack.s2.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "1.event.local_file_include.jsp.result.s0.o0": "이벤트 수행 후, 공격 대상 페이지의 DOM에서 다음과 같은 문자열을 발견했습니다.",
  "1.event.local_file_include.jsp.result.s0.o1": "{0}",
  "1.event.local_file_include.jsp.result.s1.o0": "분석 수행 결과, 이벤트를 수행할 때 입력한 값에 해당하는 {0} 폴더 내부의 {1} 파일의 내용을 발견했습니다.",
  "1.event.local_file_include.jsp.result.s1.o1": "따라서 수행한 이벤트로 인해 서버의 해당 파일을 현재 페이지에 포함시킬 수 있습니다.",
  "1.event.local_file_include.jsp.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "1.event.local_file_include.jsp.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.event.local_file_include.jsp.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s0.o0": "분석 대상 페이지에 접근했습니다. 접근 과정은 다음과 같습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s0.o1": "{0}",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s3.o0": "탐색한 {0} 요소의 자식 요소 중 입력 가능한 요소를 탐색했습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s4.o0": "탐색한 {0} 요소의 값을 빈 문자열로 설정했습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s5.o0": "탐색한 {0} 요소의 자식 요소 중 {1} 요소를 탐색했습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s6.o0": "탐색한 {0} 요소에 대하여 {1} 이벤트가 발생했습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.attack.s7.o0": "해당 이벤트를 수행한 후에 서버의 반응을 확인했습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "1.event.no_response_to_missing_input.no_change_inner.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.result.s1.o1": "{0}",
  "1.event.no_response_to_missing_input.no_change_inner.result.s2.o0": "{0} 요소의 자식 요소 중 {1}개의 입력 가능한 요소가 존재합니다.",
  "1.event.no_response_to_missing_input.no_change_inner.result.s3.o0": "{0} 요소의 자식 요소 중 {1} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.result.s3.o1": "{0}",
  "1.event.no_response_to_missing_input.no_change_inner.result.s4.o0": "{0} 요소에 대하여 {1} 이벤트를 발생시킨 결과, 해당 이벤트 이전과 DOM이 동일하고 메시지 창이 팝업되지 않습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.result.s4.o1": "따라서 입력이 누락된 경우 서버가 응답하지 않았습니다.",
  "1.event.no_response_to_missing_input.no_change_inner.solution.s0.o0": "{0} 요소에 빈 문자열을 입력한 경우, DOM을 변경하거나 메시지 창을 팝업하도록 수정하세요.",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s0.o0": "분석 대상 페이지에 접근했습니다. 접근 과정은 다음과 같습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s0.o1": "{0}",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s1.o0": "분석 대상 페이지가 HTML 문서인지를 검사했습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s2.o0": "분석 대상 페이지에서 {0} 요소를 탐색했습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s3.o0": "탐색한 {0} 요소의 자식 요소 중 입력 가능한 요소를 탐색했습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s4.o0": "탐색한 {0} 요소의 값을 빈 문자열로 설정했습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s5.o0": "탐색한 {0} 요소의 자식이 아닌 요소 중 {1} 요소를 탐색했습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s6.o0": "탐색한 {0} 요소에 대하여 {1} 이벤트가 발생했습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.attack.s7.o0": "해당 이벤트를 수행한 후에 서버의 반응을 확인했습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.result.s0.o0": "분석 대상 페이지가 HTML 문서에 해당합니다.",
  "1.event.no_response_to_missing_input.no_change_outer.result.s1.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.result.s1.o1": "{0}",
  "1.event.no_response_to_missing_input.no_change_outer.result.s2.o0": "{0} 요소의 id 속성 값은 다음과 같습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.result.s2.o1": "{0}",
  "1.event.no_response_to_missing_input.no_change_outer.result.s3.o0": "{0} 요소의 자식 요소 중 {1}개의 입력 가능한 요소가 존재합니다.",
  "1.event.no_response_to_missing_input.no_change_outer.result.s4.o0": "분석 대상 페이지에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.result.s4.o1": "{0}",
  "1.event.no_response_to_missing_input.no_change_outer.result.s5.o0": "{0} 요소의 form 속성 값은 다음과 같습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.result.s5.o1": "{0}",
  "1.event.no_response_to_missing_input.no_change_outer.result.s6.o0": "{0} 요소에 대하여 {1} 이벤트를 발생시킨 결과, 해당 이벤트 이전과 DOM이 동일하고 메시지 창이 팝업되지 않습니다. 따라서 입력이 누락된 경우 서버가 응답하지 않았습니다.",
  "1.event.no_response_to_missing_input.no_change_outer.solution.s0.o0": "{0} 요소에 빈 문자열을 입력한 경우, DOM을 변경하거나 메시지 창을 팝업하도록 수정하세요.",
  "1.event.sensitive_information_in_comments.jdbc.attack.s0.o0": "대상 페이지 내부에 존재하는 주석문 내부에 JDBC와 관련된 것으로 추정되는 정보가 존재하는지 확인했습니다.",
  "1.event.sensitive_information_in_comments.jdbc.result.s0.o0": "주석문 내부에서 다음과 같이 JDBC와 관련된 것으로 추정되는 정보를 발견했습니다.",
  "1.event.sensitive_information_in_comments.jdbc.result.s0.o1": "{0}",
  "1.event.sensitive_information_in_comments.jdbc.result.s1.o0": "따라서 주석문을 통해 중요 정보 노출이 발생할 수 있습니다.",
  "1.event.sensitive_information_in_comments.jdbc.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.event.sensitive_information_in_comments.jdbc.solution.s1.o0": "주석문은 JDBC 관련 정보와 같이 중요한 정보를 포함할 수 있습니다.",
  "1.event.sensitive_information_in_comments.jdbc.solution.s1.o1": "해당 정보는 브라우저의 소스 보기 기능 등을 통해 사용자가 손쉽게 확인할 수 있습니다.",
  "1.event.sensitive_information_in_comments.jdbc.solution.s2.o0": "이러한 정보 노출을 방지하기 위해 다음과 같은 주석문은 사용하지 않아야 합니다.",
  "1.event.sensitive_information_in_comments.jdbc.solution.s3.o0": "{0}",
  "1.event.sensitive_information_in_comments.jdbc.solution.s4.o0": "대신 클라이언트에서 확인할 수 없는 서버측 주석을 사용하세요.",
  "1.event.sensitive_information_in_comments.jdbc.solution.s4.o1": "이는 다음과 같습니다.",
  "1.event.sensitive_information_in_comments.jdbc.solution.s5.o0": "{0}",
  "1.event.sensitive_information_in_comments.password.attack.s0.o0": "대상 페이지 내부에 존재하는 주석문 내부에 비밀번호로 추정되는 정보가 존재하는지 확인했습니다.",
  "1.event.sensitive_information_in_comments.password.result.s0.o0": "주석문 내부에서 다음과 같이 비밀번호로 추정되는 정보를 발견했습니다.",
  "1.event.sensitive_information_in_comments.password.result.s0.o1": "{0}",
  "1.event.sensitive_information_in_comments.password.result.s1.o0": "따라서 주석문을 통해 중요 정보 노출이 발생할 수 있습니다.",
  "1.event.sensitive_information_in_comments.password.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.event.sensitive_information_in_comments.password.solution.s1.o0": "주석문은 비밀번호와 같이 중요한 정보를 포함할 수 있습니다.",
  "1.event.sensitive_information_in_comments.password.solution.s1.o1": "해당 정보는 브라우저의 소스 보기 기능 등을 통해 사용자가 손쉽게 확인할 수 있습니다.",
  "1.event.sensitive_information_in_comments.password.solution.s2.o0": "이러한 정보 노출을 방지하기 위해 다음과 같은 주석문은 사용하지 않아야 합니다.",
  "1.event.sensitive_information_in_comments.password.solution.s3.o0": "{0}",
  "1.event.sensitive_information_in_comments.password.solution.s4.o0": "대신 클라이언트에서 확인할 수 없는 서버측 주석을 사용하세요.",
  "1.event.sensitive_information_in_comments.password.solution.s4.o1": "이는 다음과 같습니다.",
  "1.event.sensitive_information_in_comments.password.solution.s5.o0": "{0}",
  "1.event.sql_injection.conditional.apiReqInfo": "{0}",
  "1.event.sql_injection.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.sql_injection.conditional.apireqinfo": "{0}",
  "1.event.sql_injection.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.sql_injection.error.attack.s0.o0": "SQL 삽입 취약점은 데이터베이스와 연동된 웹 애플리케이션에 대해 악의적인 정보를 전송하고, SQL 쿼리문을 조작함으로써 허가 받지 않은 정보를 열람하거나 조작할 수 있는 취약점입니다.",
  "1.event.sql_injection.error.attack.s1.o0": "SQL 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "1.event.sql_injection.error.attack.s2.o0": "공격 대상인 모든 {0} 웹 요소를 탐색하기 위해, 다음과 같은 과정을 수행했습니다.",
  "1.event.sql_injection.error.attack.s3.o0": "{0}",
  "1.event.sql_injection.error.attack.s4.o0": "공격 대상에 다음과 같은 공격 문자열을 입력했습니다.",
  "1.event.sql_injection.error.attack.s5.o0": "{0}",
  "1.event.sql_injection.error.attack.s6.o0": "최종적으로, 다음과 같은 웹 요소에 대해 {0} 이벤트를 수행했습니다.",
  "1.event.sql_injection.error.attack.s7.o0": "{0}",
  "1.event.sql_injection.error.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "1.event.sql_injection.error.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "1.event.sql_injection.error.result.s2.o0": "{0}",
  "1.event.sql_injection.error.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "1.event.sql_injection.error.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 SQL 삽입 취약점의 존재 가능성을 발견했습니다.",
  "1.event.sql_injection.error.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.event.sql_injection.error.solution.s1.o0": "SQL 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 SQL 쿼리문을 형성하는 경우에서의 데이터 검증이 필요합니다.",
  "1.event.sql_injection.error.solution.s2.o0": "검증 방법은 크게 두 가지 방법이 있습니다.",
  "1.event.sql_injection.error.solution.s3.o0": "먼저, SQL 쿼리문을 인자화하여 사용할 수 있습니다. 이는 웹 애플리케이션을 구현한 언어별로 방법이 상이합니다.",
  "1.event.sql_injection.error.solution.s4.o0": "또한, 사용자 입력 데이터 중 작은 따옴표(')와 같은 일부 문자 또는 예약어에 대하여, 해당하는 모든 문자를 공백 등으로 바꿀 수 있습니다.",
  "1.event.sql_injection.error.solution.s4.o1": "다음과 같이 예를 들 수 있습니다.",
  "1.event.sql_injection.error.solution.s5.o0": "{0}",
  "1.event.xpath_injection.conditional.apiReqInfo": "{0}",
  "1.event.xpath_injection.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.xpath_injection.conditional.apireqinfo": "{0}",
  "1.event.xpath_injection.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.xpath_injection.error.attack.s0.o0": "XPath 삽입 취약점은 XML 데이터를 보유한 웹 사이트에 대해 악의적인 정보를 전송하고, XPath 쿼리를 조작함으로써 XML 구조의 확인 및 허가 받지 않은 데이터를 열람하거나 조작할 수 있는 취약점입니다.",
  "1.event.xpath_injection.error.attack.s1.o0": "XPath 삽입 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "1.event.xpath_injection.error.attack.s2.o0": "공격 대상인 모든 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.xpath_injection.error.attack.s3.o0": "{0}",
  "1.event.xpath_injection.error.attack.s4.o0": "공격 대상에 다음과 같이 입력했습니다.",
  "1.event.xpath_injection.error.attack.s5.o0": "{0}",
  "1.event.xpath_injection.error.attack.s6.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "1.event.xpath_injection.error.attack.s7.o0": "{0}",
  "1.event.xpath_injection.error.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "1.event.xpath_injection.error.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 내용이 포함된 오류 메세지를 발견했습니다.",
  "1.event.xpath_injection.error.result.s2.o0": "{0}",
  "1.event.xpath_injection.error.result.s3.o0": "해당 오류 메세지가 존재하는 것은 곧 공격 문자열에 대한 올바른 처리가 충분하지 않음을 의미합니다.",
  "1.event.xpath_injection.error.result.s4.o0": "실행 결과, 공격 시도가 성공했으며 XPath 삽입 취약점의 존재 가능성을 발견했습니다.",
  "1.event.xpath_injection.error.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.event.xpath_injection.error.solution.s1.o0": "XPath 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 사용하여 XPath 쿼리문을 형성하는 경우에서의 데이터 검증이 필요합니다.",
  "1.event.xpath_injection.error.solution.s2.o1": "검증 방법은 크게 두 가지 방법이 있습니다.",
  "1.event.xpath_injection.error.solution.s3.o0": "먼저, XPath 쿼리문을 인자화하여 사용할 수 있습니다. 이는 웹 애플리케이션을 구현한 언어별로 방법이 상이합니다.",
  "1.event.xpath_injection.error.solution.s4.o0": "또한, 사용자 입력 데이터 중 작은 따옴표(')와 같은 일부 문자에 대하여, 해당하는 모든 문자를 다른 문자로 바꿀 수 있습니다.",
  "1.event.xpath_injection.error.solution.s5.o0": "다음과 같이 예를 들 수 있습니다.",
  "1.event.xpath_injection.error.solution.s6.o0": "{0}",
  "1.event.xss.conditional.apiReqInfo": "{0}",
  "1.event.xss.conditional.apiReqMsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "1.event.xss.conditional.apireqinfo": "{0}",
  "1.event.xss.conditional.apireqmsg": "또한, 공격 시도 중 {0} 이벤트를 실행한 결과 다음과 같은 API 요청이 발생했습니다.",
  "1.event.xss.reflected.attack.s0.o0": "비지속적 크로스 사이트 스크립팅 취약점은 웹 사이트에 대하여 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "1.event.xss.reflected.attack.s1.o0": "비지속적 크로스 사이트 스크립팅 취약점을 검출하기 위해 다음과 같이 공격을 시도했습니다.",
  "1.event.xss.reflected.attack.s2.o0": "공격 대상인 {0} 요소를 탐색하기 위해 다음과 같은 과정을 수행했습니다.",
  "1.event.xss.reflected.attack.s3.o0": "{0}",
  "1.event.xss.reflected.attack.s4.o0": "탐색 결과, 다음과 같은 공격 대상 요소를 탐색했습니다.",
  "1.event.xss.reflected.attack.s5.o0": "{0}",
  "1.event.xss.reflected.attack.s6.o0": "공격 대상에 대하여 다음과 같은 문자열을 입력했습니다.(공격 문자열은 공격 대상 요소의 XPath값의 해시값을 포함합니다)",
  "1.event.xss.reflected.attack.s7.o0": "{0}",
  "1.event.xss.reflected.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "1.event.xss.reflected.attack.s9.o0": "{0}",
  "1.event.xss.reflected.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "1.event.xss.reflected.result.s1.o0": "이벤트 수행 결과, DOM에서 다음과 같은 공격 스크립트를 발견했습니다.",
  "1.event.xss.reflected.result.s2.o0": "{0}",
  "1.event.xss.reflected.result.s3.o0": "해당 공격 스크립트는 {0} 라는 이름의 창을 생성했습니다.",
  "1.event.xss.reflected.result.s4.o0": "새롭게 생성된 창의 이름은 해당 공격 스크립트가 탐색한 공격 대상 웹 페이지 요소에 의하여 실행되었음을 의미합니다.",
  "1.event.xss.reflected.result.s5.o0": "실행 결과에 의거하여, 공격 시도가 성공했으며 비지속적 크로스 사이트 스크립팅 취약점이 존재함을 확인했습니다.",
  "1.event.xss.reflected.result.s6.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "1.event.xss.reflected.result.s7.o0": "{0}",
  "1.event.xss.reflected.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.event.xss.reflected.solution.s1.o0": "비 지속적 크로스 사이트 스크립팅 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 검증 및 필터링해야 합니다.",
  "1.event.xss.reflected.solution.s2.o0": "기본적으로 태그의 이름이나 태그 속성의 이름, <script> 태그 사이, <style> 태그 사이 및 HTML 주석 사이와 허용되지 않은 위치에 사용자로부터 입력 받은 외부 데이터를 사용하지 않아야 합니다.",
  "1.event.xss.reflected.solution.s3.o0": "또는, 사용자로부터 입력 받은 외부 데이터를 사용해야 하는 경우에는 다음과 같이 데이터를 인코딩하여 사용해야 합니다.",
  "1.event.xss.reflected.solution.s4.o0": "웹 페이지 요소 사용자로부터 입력 받은 외부 데이터를 사용할 때의 인코딩",
  "1.event.xss.reflected.solution.s4.o1": "{0}",
  "1.event.xss.reflected.solution.s5.o0": "이외에도 사용자로부터 입력 받은 외부 데이터를 HTML 속성값이나 URL 매개변수, JavaScript, CSS 값 등에 사용할 때에도 인코딩이 필요합니다.",
  "1.event.xss.reflected.solution.s6.o0": "Java :",
  "1.event.xss.reflected.solution.s6.o1": "{0}",
  "1.event.xss.reflected.solution.s7.o0": "JSP :",
  "1.event.xss.reflected.solution.s7.o1": "{0}",
  "1.event.xss.reflected.solution.s8.o0": "PHP :",
  "1.event.xss.reflected.solution.s8.o1": "{0}",
  "1.event.xss.stored.attack.s0.o0": "지속적 크로스 사이트 스크립팅 취약점은 웹 사이트에 대하여 악성 스크립트를 삽입할 수 있고, 삽입한 악성 스크립트가 DB에 저장될 수 있는 취약점입니다.",
  "1.event.xss.stored.attack.s1.o0": "지속적 크로스 사이트 스크립팅 취약점을 검출하기 위하여 다음과 같이 공격을 시도합니다.",
  "1.event.xss.stored.attack.s2.o0": "공격 대상인 {0} 웹 페이지 요소를 탐색하기 위하여 다음과 같은 과정을 수행합니다.",
  "1.event.xss.stored.attack.s3.o0": "{0}",
  "1.event.xss.stored.attack.s4.o0": "탐색 결과 다음과 같은 공격 대상 웹 페이지 요소를 탐색합니다.",
  "1.event.xss.stored.attack.s5.o0": "{0}",
  "1.event.xss.stored.attack.s6.o0": "공격 대상에 대하여 다음과 같은 문자열을 입력했습니다.(공격 문자열은 공격 대상 요소의 XPath값의 해시값을 포함합니다)",
  "1.event.xss.stored.attack.s7.o0": "{0}",
  "1.event.xss.stored.attack.s8.o0": "최종적으로, 다음과 같은 요소에 대해 {0} 이벤트를 수행했습니다.",
  "1.event.xss.stored.attack.s9.o0": "{0}",
  "1.event.xss.stored.result.s0.o0": "공격 결과는 다음과 같습니다.",
  "1.event.xss.stored.result.s1.o0": "지속적 크로스 사이트 스크립팅 취약점을 검출하기 위해 다음과 같은 과정을 수행합니다.",
  "1.event.xss.stored.result.s2.o0": "{0}",
  "1.event.xss.stored.result.s3.o0": "이동 결과, DOM에서 다음과 같은 공격 스크립트를 발견했습니다.",
  "1.event.xss.stored.result.s4.o0": "{0}",
  "1.event.xss.stored.result.s5.o0": "해당 공격 스크립트는 {0} 라는 이름의 창을 생성했습니다.",
  "1.event.xss.stored.result.s6.o0": "새롭게 생성된 창의 이름은 해당 공격 스크립트가 탐색한 공격 대상 웹 페이지 요소에 의하여 실행되었음을 의미합니다.",
  "1.event.xss.stored.result.s7.o0": "실행 결과에 의거하여, 공격 시도가 성공했으며 비지속적 크로스 사이트 스크립팅 취약점이 존재함을 확인했습니다.",
  "1.event.xss.stored.result.s8.o0": "다음 페이지에서 이슈가 검출되었습니다:",
  "1.event.xss.stored.result.s9.o0": "{0}",
  "1.event.xss.stored.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.event.xss.stored.solution.s1.o0": "비 지속적 크로스 사이트 스크립팅 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 검증 및 필터링해야 합니다.",
  "1.event.xss.stored.solution.s2.o0": "기본적으로 태그의 이름이나 태그 속성의 이름, <script> 태그 사이, <style> 태그 사이 및 HTML 주석 사이와 허용되지 않은 위치에 사용자로부터 입력 받은 외부 데이터를 사용하지 않아야 합니다.",
  "1.event.xss.stored.solution.s3.o0": "또는, 사용자로부터 입력 받은 외부 데이터를 사용해야 하는 경우에는 다음과 같이 데이터를 인코딩하여 사용해야 합니다.",
  "1.event.xss.stored.solution.s4.o0": "웹 페이지 요소 사용자로부터 입력 받은 외부 데이터를 사용할 때의 인코딩",
  "1.event.xss.stored.solution.s4.o1": "{0}",
  "1.event.xss.stored.solution.s5.o0": "이외에도 사용자로부터 입력 받은 외부 데이터를 HTML 속성값이나 URL 매개변수, JavaScript, CSS 값 등에 사용할 때에도 인코딩이 필요합니다.",
  "1.event.xss.stored.solution.s6.o0": "Java :",
  "1.event.xss.stored.solution.s6.o1": "{0}",
  "1.event.xss.stored.solution.s7.o0": "JSP :",
  "1.event.xss.stored.solution.s7.o1": "{0}",
  "1.event.xss.stored.solution.s8.o0": "PHP :",
  "1.event.xss.stored.solution.s8.o1": "{0}",
  "1.http.absolute_path_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.absolute_path_disclosure.match.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.absolute_path_disclosure.match.attack.s1.o0": "{0}",
  "1.http.absolute_path_disclosure.match.attack.s1.o1": "{0}",
  "1.http.absolute_path_disclosure.match.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "1.http.absolute_path_disclosure.match.attack.s3.o0": "HTTP 응답의 상태 코드가 오류 코드에 해당하는지의 여부를 검사했습니다.",
  "1.http.absolute_path_disclosure.match.attack.s4.o0": "HTTP 응답 본문에서 파일 절대 경로에 해당하는 문자열을 탐색했습니다.",
  "1.http.absolute_path_disclosure.match.result.s0.o0": "HTTP 응답의 상태 코드는 다음과 같습니다.",
  "1.http.absolute_path_disclosure.match.result.s1.o0": "{0}",
  "1.http.absolute_path_disclosure.match.result.s2.o0": "HTTP 응답 본문에 다음과 같은 문자열이 존재합니다.",
  "1.http.absolute_path_disclosure.match.result.s3.o0": "{0}",
  "1.http.absolute_path_disclosure.match.result.s3.o1": "해당 문자열은 파일 절대 경로에 해당합니다.",
  "1.http.absolute_path_disclosure.match.solution.s0.o0": "발견한 파일 절대 경로를 노출할 필요가 없는 경우, 해당 파일 절대 경로를 HTTP 응답 본문에서 제거하세요.",
  "1.http.application_error.error.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.application_error.error.attack.s0.o1": "{0}",
  "1.http.application_error.error.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.application_error.error.result.s0.o1": "{0}",
  "1.http.application_error.error.result.s1.o0": "HTTP 응답의 상태 코드가 다음과 같습니다.",
  "1.http.application_error.error.result.s1.o1": "{0}",
  "1.http.application_error.error.result.s2.o0": "분석 수행 결과, 해당 페이지에서 애플리케이션 오류가 발생함을 확인했습니다.",
  "1.http.application_error.error.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 애플리케이션 오류가 발생합니다.",
  "1.http.application_error.error.solution.s0.o0": "해당 페이지에서 발생하는 애플리케이션 오류를 수정해야 합니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s3.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s4.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.attack.s4.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s1.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일하지 않습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s3.o0": "HTTP 응답 비교 결과, HTTP 요청의 매개변수 값에 포함된 논리식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 논리식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_false.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s3.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s4.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.attack.s4.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s1.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일하지 않습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s3.o0": "HTTP 응답 비교 결과, HTTP 요청의 매개변수 값에 포함된 논리식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 논리식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "1.http.blind_sql_injection.compare_boolean_and_first_true.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s3.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s4.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.attack.s4.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s1.o2": "해당 HTTP 응답 본문 길이는 원본 HTTP 요청에 대한 HTTP 응답 본문 길이에 비하여 {0}% 더 증가했습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s3.o0": "HTTP 응답 비교 결과, HTTP 요청의 매개변수 값에 포함된 논리식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 SQL문 내부의 논리식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "1.http.blind_sql_injection.compare_boolean_or_first_false.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "1.http.blind_sql_injection.compare_different.attack.s0.o0": "원본 HTTP 요청을 서버로 전송했으며, 해당 HTTP 요청은 아래와 같습니다.",
  "1.http.blind_sql_injection.compare_different.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_different.attack.s1.o0": "원본 HTTP 요청을 다음과 같이 수정했습니다.",
  "1.http.blind_sql_injection.compare_different.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_different.attack.s2.o0": "첫 번째 수정한 HTTP 요청을 서버로 전송했으며, 해당 HTTP 요청은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_different.attack.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_different.attack.s3.o0": "원본 HTTP 요청을 다음과 같이 수정했습니다.",
  "1.http.blind_sql_injection.compare_different.attack.s3.o1": "{0}",
  "1.http.blind_sql_injection.compare_different.attack.s4.o0": "두 번째 수정한 HTTP 요청을 서버로 전송했으며, 해당 HTTP 요청은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_different.attack.s4.o1": "{0}",
  "1.http.blind_sql_injection.compare_different.result.s0.o0": "첫 번째 수정한 HTTP 요청에 대한 HTTP 응답 본문은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "1.http.blind_sql_injection.compare_different.result.s1.o0": "두 번째 수정한 HTTP 요청에 대한 HTTP 응답 본문은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일하지 않습니다.",
  "1.http.blind_sql_injection.compare_different.result.s2.o0": "HTTP 응답 본문 비교 결과, HTTP 요청의 매개변수 값에 포함된 논리식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "1.http.blind_sql_injection.compare_different.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 논리식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "1.http.blind_sql_injection.compare_different.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "1.http.blind_sql_injection.compare_different.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "1.http.blind_sql_injection.compare_expression.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_expression.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_expression.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_expression.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_expression.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_expression.attack.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_expression.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_expression.attack.s3.o1": "{0}",
  "1.http.blind_sql_injection.compare_expression.attack.s4.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_expression.attack.s4.o1": "{0}",
  "1.http.blind_sql_injection.compare_expression.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_expression.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_expression.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_expression.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_expression.result.s1.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "1.http.blind_sql_injection.compare_expression.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_expression.result.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_expression.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일하지 않습니다.",
  "1.http.blind_sql_injection.compare_expression.result.s3.o0": "HTTP 응답 본문 비교 결과, HTTP 요청의 매개변수 값에 포함된 표현식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "1.http.blind_sql_injection.compare_expression.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 SQL문 내부의 표현식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "1.http.blind_sql_injection.compare_expression.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "1.http.blind_sql_injection.compare_expression.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "1.http.blind_sql_injection.compare_increase.attack.s0.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_increase.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_increase.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_increase.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_increase.attack.s2.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_increase.attack.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_increase.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_increase.attack.s3.o1": "{0}",
  "1.http.blind_sql_injection.compare_increase.attack.s4.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_increase.attack.s4.o1": "{0}",
  "1.http.blind_sql_injection.compare_increase.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_increase.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_increase.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_increase.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_increase.result.s1.o2": "해당 HTTP 응답 본문 길이는 원본 HTTP 요청에 대한 HTTP 응답 본문 길이에 비하여 {0}% 더 증가했습니다.",
  "1.http.blind_sql_injection.compare_increase.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_increase.result.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_increase.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "1.http.blind_sql_injection.compare_increase.result.s3.o0": "HTTP 응답 비교 결과, HTTP 요청의 매개변수 값에 포함된 논리식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "1.http.blind_sql_injection.compare_increase.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 SQL문 내부의 논리식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "1.http.blind_sql_injection.compare_increase.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "1.http.blind_sql_injection.compare_increase.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "1.http.blind_sql_injection.compare_order_by.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_order_by.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_order_by.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_order_by.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_order_by.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_order_by.attack.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_order_by.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.compare_order_by.attack.s3.o1": "{0}",
  "1.http.blind_sql_injection.compare_order_by.attack.s4.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.compare_order_by.attack.s4.o1": "{0}",
  "1.http.blind_sql_injection.compare_order_by.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_order_by.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.compare_order_by.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_order_by.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.compare_order_by.result.s1.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "1.http.blind_sql_injection.compare_order_by.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.compare_order_by.result.s2.o1": "{0}",
  "1.http.blind_sql_injection.compare_order_by.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일하지 않습니다.",
  "1.http.blind_sql_injection.compare_order_by.result.s3.o0": "HTTP 응답 비교 결과, HTTP 요청의 매개변수 값에 포함된 ORDER BY문에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "1.http.blind_sql_injection.compare_order_by.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 SQL문 내부의 ORDER BY문 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "1.http.blind_sql_injection.compare_order_by.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "1.http.blind_sql_injection.compare_order_by.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "1.http.blind_sql_injection.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.blind_sql_injection.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.blind_sql_injection.error_generic.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.error_generic.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.error_generic.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.error_generic.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.error_generic.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.error_generic.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.error_generic.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.blind_sql_injection.error_generic.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.error_generic.result.s2.o0": "분석 수행 결과, 일반적인 DBMS에서 발생 가능한 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "1.http.blind_sql_injection.error_generic.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 DB 및 SQL문 관련 정보를 수집할 수 있습니다.",
  "1.http.blind_sql_injection.error_generic.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다.",
  "1.http.blind_sql_injection.error_generic.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "1.http.blind_sql_injection.error_specific.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.error_specific.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.error_specific.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.error_specific.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.error_specific.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.error_specific.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.error_specific.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.blind_sql_injection.error_specific.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.error_specific.result.s2.o0": "분석 수행 결과, 일반적인 {0}에서 발생 가능한 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "1.http.blind_sql_injection.error_specific.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 DB 및 SQL문 관련 정보를 수집할 수 있습니다.",
  "1.http.blind_sql_injection.error_specific.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다.",
  "1.http.blind_sql_injection.error_specific.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "1.http.blind_sql_injection.error_union.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.blind_sql_injection.error_union.attack.s0.o1": "{0}",
  "1.http.blind_sql_injection.error_union.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.blind_sql_injection.error_union.attack.s1.o1": "{0}",
  "1.http.blind_sql_injection.error_union.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.blind_sql_injection.error_union.result.s0.o1": "{0}",
  "1.http.blind_sql_injection.error_union.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.blind_sql_injection.error_union.result.s1.o1": "{0}",
  "1.http.blind_sql_injection.error_union.result.s2.o0": "분석 수행 결과, {0}에서 UNION문을 사용할 때 발생 가능한 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "1.http.blind_sql_injection.error_union.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 DB 및 SQL문 관련 정보를 수집할 수 있습니다.",
  "1.http.blind_sql_injection.error_union.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다.",
  "1.http.blind_sql_injection.error_union.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "1.http.body_parameters_to_query.same.attack.s0.o0": "파라미터 쿼리 변환 취약점은 POST 메소드 HTTP 요청의 매개변수 값을 URL 쿼리 값으로 변경하여 GET 메소드 HTTP 요청으로 보내도 같은 HTTP 응답을 받는 취약점입니다.",
  "1.http.body_parameters_to_query.same.attack.s1.o0": "기존 POST 메소드 HTTP 요청은 다음과 같습니다.",
  "1.http.body_parameters_to_query.same.attack.s2.o0": "{0}",
  "1.http.body_parameters_to_query.same.attack.s2.o1": "{0}",
  "1.http.body_parameters_to_query.same.attack.s3.o0": "파라미터 쿼리 변환 취약점을 검출하기 위해 위의 POST 메소드 HTTP 요청을 다음과 같은 GET 메소드 HTTP 요청으로 변환했습니다.",
  "1.http.body_parameters_to_query.same.attack.s4.o0": "{0}",
  "1.http.body_parameters_to_query.same.attack.s4.o1": "{0}",
  "1.http.body_parameters_to_query.same.attack.s5.o0": "위 변환된 GET 메소드 HTTP 요청에서 기존 POST 메소드 HTTP 요청의 바디 매개변수 값이 {0} URL 쿼리 값으로 변환된 것을 확인할 수 있습니다.",
  "1.http.body_parameters_to_query.same.result.s0.o0": "기존 POST 메소드 HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "1.http.body_parameters_to_query.same.result.s1.o0": "{0}",
  "1.http.body_parameters_to_query.same.result.s2.o0": "변환된 GET 메소드 HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "1.http.body_parameters_to_query.same.result.s3.o0": "{0}",
  "1.http.body_parameters_to_query.same.result.s4.o0": "위 두 HTTP 응답 헤더의 헤더 개수와 종류, 상태 코드, 콘텐츠 길이 등이 같습니다.",
  "1.http.body_parameters_to_query.same.result.s4.o1": "이를 통해, 기존 POST 메소드 HTTP 요청에 대한 HTTP 응답이 변환된 GET 메소드 HTTP 요청에 대한 HTTP 응답이 같음을 유추할 수 있습니다.",
  "1.http.body_parameters_to_query.same.solution.s0.o0": "이 취약점을 해결하기 위해서는 POST 메소드 HTTP 요청과 GET 메소드 HTTP 요청이 웹 애플리케이션 내부에서 따로 처리되어야 합니다.",
  "1.http.body_parameters_to_query.same.solution.s1.o0": "만약 같이 처리되어야 하는 경우에는 같은 필터를 적용해야 합니다.",
  "1.http.broken_skip_link.broken.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "1.http.broken_skip_link.broken.attack.s0.o1": "{0}",
  "1.http.broken_skip_link.broken.attack.s0.o2": "{0}",
  "1.http.broken_skip_link.broken.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.broken_skip_link.broken.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.broken_skip_link.broken.attack.s3.o0": "HTTP 응답 본문에서 건너뛰기 링크를 탐색했습니다.",
  "1.http.broken_skip_link.broken.attack.s4.o0": "탐색한 건너뛰기 링크와 연결된 요소를 탐색했습니다.",
  "1.http.broken_skip_link.broken.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.broken_skip_link.broken.result.s1.o0": "HTTP 응답 본문에서 건너뛰기 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.broken_skip_link.broken.result.s1.o1": "{0}",
  "1.http.broken_skip_link.broken.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "1.http.broken_skip_link.broken.result.s2.o1": "{0}",
  "1.http.broken_skip_link.broken.result.s3.o0": "HTTP 응답 본문의 {0} 속성 값 또는 {1} 속성 값에 다음과 같은 요소가 존재하지 않습니다.",
  "1.http.broken_skip_link.broken.result.s3.o1": "{0}",
  "1.http.broken_skip_link.broken.result.s4.o0": "해당 요소가 없으므로 HTTP 응답 본문에 건너뛰기 링크와 연결한 요소가 존재하지 않습니다.",
  "1.http.broken_skip_link.broken.solution.s0.o0": "건너뛰기 링크와 연결할 요소의 {0} 속성 값 또는 {1} 속성 값을 다음과 같이 설정하세요.",
  "1.http.broken_skip_link.broken.solution.s0.o1": "{0}",
  "1.http.buffer_overflow.input.attack.s0.o0": "버퍼 오버플로우 취약점은 공격자가 버퍼 오버플로우를 발생시키는 값을 입력하여 웹 애플리케이션의 비정상적인 종료나 행동을 일으키는 취약점입니다.",
  "1.http.buffer_overflow.input.attack.s0.o1": "버퍼 오버플로우 취약점은 웹 서버와 애플리케이션 서버 모두에서 발생할 수 있으며, 서버를 사용하는 웹 애플리케이션에 치명적인 위협이 됩니다.",
  "1.http.buffer_overflow.input.attack.s0.o2": "웹 애플리케이션이 이미지 생성이나 이메일 전송 등에 쓰이는 라이브러리를 사용할 경우에 버퍼 오버플로우에 취약할 가능성이 높습니다.",
  "1.http.buffer_overflow.input.attack.s0.o3": "또한, 웹 애플리케이션에서 입력값을 정밀하게 검사하지 않으면 긴 길이의 입력값을 넣었을 때 데이터베이스가 비정상적인 작동을 하거나 정보 노출 가능성이 높은 상세 오류 메시지가 출력될 가능성이 높습니다.",
  "1.http.buffer_overflow.input.attack.s0.o4": "버퍼 오버플로우 취약점을 검출하기 위한 HTTP 요청은 다음과 같습니다.",
  "1.http.buffer_overflow.input.attack.s1.o0": "{0}",
  "1.http.buffer_overflow.input.attack.s1.o1": "{0}",
  "1.http.buffer_overflow.input.result.s0.o0": "긴 길이의 입력값을 포함하고 있는 HTTP 요청으로 인하여 서버 오류 또는 연결 해제가 발생했습니다.",
  "1.http.buffer_overflow.input.result.s0.o1": "버퍼 오버플로우 취약점 검출을 위해 보낸 HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "1.http.buffer_overflow.input.result.s1.o0": "{0}",
  "1.http.buffer_overflow.input.solution.s0.o0": "버퍼 오버플로우 취약점을 근본적으로 해결하기 위해서는 개발자의 주의와 코드의 지속적인 검사가 필요합니다.",
  "1.http.buffer_overflow.input.solution.s0.o1": "오버플로우에 안전한 라이브러리와 함수를 사용해야하며, 비실행 스택을 사용하거나 버퍼 오버플로우를 방지하는 컴파일러는 사용하는 방법이 있습니다.",
  "1.http.cache_control.empty.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.cache_control.empty.attack.s0.o1": "{0}",
  "1.http.cache_control.empty.attack.s0.o2": "{0}",
  "1.http.cache_control.empty.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "1.http.cache_control.empty.result.s1.o0": "HTTP 응답 헤더 중 Cache-Control 헤더 및 Pragma 헤더의 값이 모두 비어 있습니다.",
  "1.http.cache_control.empty.result.s1.o1": "{0}",
  "1.http.cache_control.empty.solution.s0.o0": "HTTP 응답 헤더 중 Cache-Control 헤더 및 Pragma 헤더의 값을 다음과 같이 설정해야 합니다.",
  "1.http.cache_control.empty.solution.s0.o1": "{0}",
  "1.http.cache_control.invalid.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.cache_control.invalid.attack.s0.o1": "{0}",
  "1.http.cache_control.invalid.attack.s0.o2": "{0}",
  "1.http.cache_control.invalid.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "1.http.cache_control.invalid.result.s1.o0": "HTTP 응답 헤더 중 {0} 헤더 값은 다음과 같습니다.",
  "1.http.cache_control.invalid.result.s1.o1": "{0}",
  "1.http.cache_control.invalid.solution.s0.o0": "HTTP 응답 헤더 중 Cache-Control 헤더 혹은 Pragma 헤더의 값을 다음과 같이 설정해야 합니다.",
  "1.http.cache_control.invalid.solution.s0.o1": "{0}",
  "1.http.cache_control.invalid_cache_control.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.cache_control.invalid_cache_control.attack.s0.o1": "{0}",
  "1.http.cache_control.invalid_cache_control.attack.s0.o2": "{0}",
  "1.http.cache_control.invalid_cache_control.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "1.http.cache_control.invalid_cache_control.result.s1.o0": "HTTP 응답 헤더 중 Cache-Control 헤더 값은 다음과 같습니다.",
  "1.http.cache_control.invalid_cache_control.result.s1.o1": "{0}",
  "1.http.cache_control.invalid_cache_control.solution.s0.o0": "HTTP 응답 헤더 중 Cache-Control 헤더 및 Pragma 헤더의 값을 다음과 같이 설정해야 합니다.",
  "1.http.cache_control.invalid_cache_control.solution.s0.o1": "{0}",
  "1.http.cache_control.invalid_pragma.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.cache_control.invalid_pragma.attack.s0.o1": "{0}",
  "1.http.cache_control.invalid_pragma.attack.s0.o2": "{0}",
  "1.http.cache_control.invalid_pragma.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "1.http.cache_control.invalid_pragma.result.s1.o0": "HTTP 응답 헤더 중 Pragma 헤더 값은 다음과 같습니다.",
  "1.http.cache_control.invalid_pragma.result.s1.o1": "{0}",
  "1.http.cache_control.invalid_pragma.solution.s0.o0": "HTTP 응답 헤더 중 Cache-Control 헤더 및 Pragma 헤더의 값을 다음과 같이 설정해야 합니다.",
  "1.http.cache_control.invalid_pragma.solution.s0.o1": "{0}",
  "1.http.cache_control.null.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.cache_control.null.attack.s0.o1": "{0}",
  "1.http.cache_control.null.attack.s0.o2": "{0}",
  "1.http.cache_control.null.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "1.http.cache_control.null.result.s1.o0": "HTTP 응답 헤더 중 Cache-Control 헤더 및 Pragma 헤더가 모두 존재하지 않습니다.",
  "1.http.cache_control.null.result.s1.o1": "{0}",
  "1.http.cache_control.null.solution.s0.o0": "HTTP 응답 헤더 중 Cache-Control 헤더 및 Pragma 헤더의 값을 다음과 같이 설정해야 합니다.",
  "1.http.cache_control.null.solution.s0.o1": "{0}",
  "1.http.code_injection.script.attack.s0.o0": "코드 삽입은 공격자가 컴퓨터 프로그램 코드를 값으로 입력하여 취약한 웹 애플리케이션의 실행을 변경하는 공격입니다.",
  "1.http.code_injection.script.attack.s0.o1": "코드 삽입은 웜 바이러스의 전파나 데이터 손실 및 오염, DoS 등을 일으킵니다.",
  "1.http.code_injection.script.attack.s0.o2": "코드 삽입 중에서 서버 스크립트 코드 삽입은 악성 소프트웨어를 설치하거나 악의적인 코드를 실행할 수 있습니다.",
  "1.http.code_injection.script.attack.s0.o3": "서버 스크립트 코드 삽입을 위해 다음과 같이 {0} 매개변수에 {1} 공격 문자열을 담은 HTTP 요청을 보냈습니다.",
  "1.http.code_injection.script.attack.s1.o0": "{0}",
  "1.http.code_injection.script.attack.s1.o1": "{0}",
  "1.http.code_injection.script.result.s0.o0": "서버 스크립트 코드 삽입은 애플리케이션 레벨에서 발생할 수 있는 공격으로 내용에 따라 SQL문 삽입, 경로 조작 등의 치명적인 공격이 가능하게 만듭니다.",
  "1.http.code_injection.script.result.s0.o1": "서버 스크립트 코드 삽입을 위해 보낸 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.code_injection.script.result.s1.o0": "{0}",
  "1.http.code_injection.script.result.s2.o0": "위의 HTTP 응답에서 {0} 공격 문자열에 의해 발생한 {1}를 확인할 수 있습니다.",
  "1.http.code_injection.script.solution.s0.o0": "서버 스크립트 코드 삽입을 막는 가장 좋은 방법은 사용자가 입력하는 값을 모두 검증하는 것입니다.",
  "1.http.code_injection.script.solution.s0.o1": "코드를 삽입해야 하는 경우에는 특수문자를 인코딩하여 웹 애플리케이션에 영향을 주지 않는 문자로 변경해야 합니다.",
  "1.http.command_injection.feedback.attack.s0.o0": "운영 체제 명령 실행 취약점을 검출하기 위해 {0} 매개변수에 {1} 공격 문자열을 포함한 HTTP 요청을 보냈습니다. HTTP 요청은 다음과 같습니다.",
  "1.http.command_injection.feedback.attack.s0.o1": "{0}",
  "1.http.command_injection.feedback.attack.s0.o2": "{0}",
  "1.http.command_injection.feedback.result.s0.o0": "운영 체제 명령 실행은 취약한 애플리케이션을 통해 사용자의 운영 체제에서 명령어를 실행하는 것을 목적으로 하는 공격입니다. HTTP 요청에 대한 HTTP 응답 메시지는 다음과 같습니다.",
  "1.http.command_injection.feedback.result.s0.o1": "{0}",
  "1.http.command_injection.feedback.result.s0.o2": "위 HTTP 응답 메시지에서 {0} 패턴의 시스템 정보가 노출되었습니다.",
  "1.http.command_injection.feedback.solution.s0.o0": "이 취약점을 해결하기 위해서는 시스템 명령어로 의심되는 문자열을 검사해야 합니다.",
  "1.http.command_injection.timeout.attack.s0.o0": "운영 체제 명령 실행 취약점을 검출하기 위해 {0} 매개변수에 {1} 공격 문자열을 포함한 HTTP 요청을 보냈습니다. HTTP 요청은 다음과 같습니다.",
  "1.http.command_injection.timeout.attack.s0.o1": "{0}",
  "1.http.command_injection.timeout.attack.s0.o2": "{0}",
  "1.http.command_injection.timeout.result.s0.o0": "운영 체제 명령 실행은 취약한 애플리케이션을 통해 사용자의 운영 체제에서 명령어를 실행하는 것을 목적으로 하는 공격입니다.",
  "1.http.command_injection.timeout.result.s0.o1": "HTTP 요청에 대한 HTTP 응답 시간이 지연되었습니다.",
  "1.http.command_injection.timeout.solution.s0.o0": "이 취약점을 해결하기 위해서는 시스템 명령어로 의심되는 문자열을 검사해야 합니다.",
  "1.http.content_security_policy_missing.missing.attack.s0.o0": "누락된 Content-Security-Policy(CSP) 헤더 취약점은 HTTP 응답에 Content-Security-Policy 헤더가 없는 취약점입니다.",
  "1.http.content_security_policy_missing.missing.attack.s1.o0": "이를 검출하기 위해서 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.content_security_policy_missing.missing.attack.s2.o0": "{0}",
  "1.http.content_security_policy_missing.missing.attack.s2.o1": "{0}",
  "1.http.content_security_policy_missing.missing.result.s0.o0": "HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "1.http.content_security_policy_missing.missing.result.s1.o0": "{0}",
  "1.http.content_security_policy_missing.missing.result.s2.o0": "위의 HTTP 응답 헤더에 Content-Security-Policy 헤더나 Content-Security-Policy-Report-Only 헤더가 없음을 확인할 수 있습니다.",
  "1.http.content_security_policy_missing.missing.result.s2.o1": "Content-Security-Policy 헤더가 없기 때문에 신뢰할 수 없는 도메인의 리소스가 브라우저에서 실행되거나 렌더링 되는 것을 막을 수 없습니다.",
  "1.http.content_security_policy_missing.missing.solution.s0.o0": "누락된 Content-Security-Policy 헤더 취약점을 해결하기 위해서는 웹 애플리케이션 서버에서 Content-Security-Policy 헤더를 추가해야 합니다.",
  "1.http.content_security_policy_missing.missing.solution.s0.o1": "모든 웹 사이트 내의 콘텐츠를 서브 도메인을 제외한 같은 도메인에서만 제공 받으려면 다음과 같이 사용합니다.",
  "1.http.content_security_policy_missing.missing.solution.s1.o0": "{0}",
  "1.http.content_security_policy_missing.missing.solution.s2.o0": "서브 도메인을 포함시키려면 다음과 같이 사용합니다.",
  "1.http.content_security_policy_missing.missing.solution.s3.o0": "{0}",
  "1.http.content_security_policy_missing.missing.solution.s4.o0": "이외에도 신뢰할 수 있는 도메인의 리소스를 특정 웹 페이지 요소에서만 사용하도록 설정할 수도 있습니다.",
  "1.http.content_security_policy_missing.missing.solution.s5.o0": "또한, 신뢰할 수 없는 도메인의 리소스가 사용되지는 것을 막지 않고 사용되었다는 정보만을 제공받으려면 다음과 같이 사용합니다.",
  "1.http.content_security_policy_missing.missing.solution.s6.o0": "{0}",
  "1.http.content_type_missing.empty.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.content_type_missing.empty.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.content_type_missing.empty.attack.s1.o0": "{0}",
  "1.http.content_type_missing.empty.attack.s1.o1": "{0}",
  "1.http.content_type_missing.empty.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "1.http.content_type_missing.empty.attack.s3.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더의 존재 여부를 검사했습니다.",
  "1.http.content_type_missing.empty.attack.s4.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더 값을 검사했습니다.",
  "1.http.content_type_missing.empty.result.s0.o0": "HTTP 응답 헤더가 다음과 같습니다.",
  "1.http.content_type_missing.empty.result.s1.o0": "{0}",
  "1.http.content_type_missing.empty.result.s2.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더가 하나 이상 존재합니다.",
  "1.http.content_type_missing.empty.result.s3.o0": "'Content-Type' 헤더 중 하나의 값이 빈 문자열입니다.",
  "1.http.content_type_missing.empty.result.s3.o1": "해당 헤더 값은 'Content-Type' 헤더 값으로 적절하지 않습니다.",
  "1.http.content_type_missing.empty.solution.s0.o0": "HTTP 응답 헤더에 올바른 'Content-Type' 헤더를 추가하세요.",
  "1.http.content_type_missing.no_header.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.content_type_missing.no_header.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.content_type_missing.no_header.attack.s1.o0": "{0}",
  "1.http.content_type_missing.no_header.attack.s1.o1": "{0}",
  "1.http.content_type_missing.no_header.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "1.http.content_type_missing.no_header.attack.s3.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더의 존재 여부를 검사했습니다.",
  "1.http.content_type_missing.no_header.result.s0.o0": "HTTP 응답 헤더가 다음과 같습니다.",
  "1.http.content_type_missing.no_header.result.s1.o0": "{0}",
  "1.http.content_type_missing.no_header.result.s2.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더가 존재하지 않습니다.",
  "1.http.content_type_missing.no_header.solution.s0.o0": "HTTP 응답 헤더에 올바른 'Content-Type' 헤더를 추가하세요.",
  "1.http.content_type_missing.param_only.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.content_type_missing.param_only.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.content_type_missing.param_only.attack.s1.o0": "{0}",
  "1.http.content_type_missing.param_only.attack.s1.o1": "{0}",
  "1.http.content_type_missing.param_only.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "1.http.content_type_missing.param_only.attack.s3.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더의 존재 여부를 검사했습니다.",
  "1.http.content_type_missing.param_only.attack.s4.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더 값을 검사했습니다.",
  "1.http.content_type_missing.param_only.result.s0.o0": "HTTP 응답 헤더가 다음과 같습니다.",
  "1.http.content_type_missing.param_only.result.s1.o0": "{0}",
  "1.http.content_type_missing.param_only.result.s2.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더가 하나 이상 존재합니다.",
  "1.http.content_type_missing.param_only.result.s3.o0": "Content-Type' 헤더 중 하나의 값이 다음과 같습니다.",
  "1.http.content_type_missing.param_only.result.s4.o0": "{0}",
  "1.http.content_type_missing.param_only.result.s5.o0": "해당 헤더 값은 콘텐츠 타입 정보가 존재하지 않으며, 파라미터 정보만을 포함합니다.",
  "1.http.content_type_missing.param_only.result.s5.o1": "해당 헤더 값은 'Content-Type' 헤더 값으로 적절하지 않습니다.",
  "1.http.content_type_missing.param_only.solution.s0.o0": "HTTP 응답 헤더에 올바른 'Content-Type' 헤더를 추가하세요.",
  "1.http.cookie_attribute_test_http_only.exist.attack.s0.o0": "쿠키 속성 검사(HttpOnly)는 HTTP 응답에 Set-Cookie를 확인하여 HttpOnly 속성이 있는지 확인하는 체커입니다.",
  "1.http.cookie_attribute_test_http_only.exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.cookie_attribute_test_http_only.exist.attack.s1.o0": "{0}",
  "1.http.cookie_attribute_test_http_only.exist.attack.s1.o1": "{0}",
  "1.http.cookie_attribute_test_http_only.exist.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "1.http.cookie_attribute_test_http_only.exist.result.s1.o0": "{0}",
  "1.http.cookie_attribute_test_http_only.exist.solution.s0.o0": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "1.http.cookie_attribute_test_http_only.not_exist.attack.s0.o0": "쿠키 속성 검사(HttpOnly)는 HTTP 응답에 Set-Cookie를 확인하여 HttpOnly 속성이 있는지 확인하는 체커입니다.",
  "1.http.cookie_attribute_test_http_only.not_exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.cookie_attribute_test_http_only.not_exist.attack.s1.o0": "{0}",
  "1.http.cookie_attribute_test_http_only.not_exist.attack.s1.o1": "{0}",
  "1.http.cookie_attribute_test_http_only.not_exist.result.s0.o0": "HTTP 요청에 대한 응답에 Set-Cookie 정보가 존재하지 않습니다.",
  "1.http.cookie_attribute_test_http_only.not_exist.solution.s0.o0": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "1.http.cookie_attribute_test_same_site.exist.attack.s0.o0": "쿠키 속성 검사(SameSite)는 HTTP 응답에 Set-Cookie를 확인하여 SameSite 속성이 있는지 확인하는 체커입니다.",
  "1.http.cookie_attribute_test_same_site.exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.cookie_attribute_test_same_site.exist.attack.s1.o0": "{0}",
  "1.http.cookie_attribute_test_same_site.exist.attack.s1.o1": "{0}",
  "1.http.cookie_attribute_test_same_site.exist.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "1.http.cookie_attribute_test_same_site.exist.result.s1.o0": "{0}",
  "1.http.cookie_attribute_test_same_site.exist.solution.s0.o0": "사이트 간 요청 위조(CSRF)를 막기 위해 SameSite 속성을 Lax나 Strict로 설정하는 것이 좋습니다.",
  "1.http.cookie_attribute_test_same_site.exist.solution.s0.o1": "구글 크롬도 80 버전으로 업데이트되면서 SameSite 속성의 기본값을 None에서 Lax로 강화했습니다.",
  "1.http.cookie_attribute_test_same_site.exist.solution.s0.o2": "만약 None으로 사용해야 한다면 반드시 Secure 속성과 함께 사용해야 합니다.",
  "1.http.cookie_attribute_test_same_site.not_exist.attack.s0.o0": "쿠키 속성 검사(SameSite)는 HTTP 응답에 Set-Cookie를 확인하여 SameSite 속성이 있는지 확인하는 체커입니다.",
  "1.http.cookie_attribute_test_same_site.not_exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.cookie_attribute_test_same_site.not_exist.attack.s1.o0": "{0}",
  "1.http.cookie_attribute_test_same_site.not_exist.attack.s1.o1": "{0}",
  "1.http.cookie_attribute_test_same_site.not_exist.result.s0.o0": "HTTP 요청에 대한 응답에 Set-Cookie 정보가 존재하지 않습니다.",
  "1.http.cookie_attribute_test_same_site.not_exist.solution.s0.o0": "사이트 간 요청 위조(CSRF)를 막기 위해 SameSite 속성을 Lax나 Strict로 설정하는 것이 좋습니다.",
  "1.http.cookie_attribute_test_same_site.not_exist.solution.s0.o1": "Google Chrome도 80 버전으로 업데이트되면서 SameSite 속성의 기본값을 None에서 Lax로 강화했습니다.",
  "1.http.cookie_attribute_test_same_site.not_exist.solution.s0.o2": "만약 None으로 사용해야 한다면 반드시 Secure 속성과 함께 사용해야 합니다.",
  "1.http.cookie_attribute_test_secure.exist.attack.s0.o0": "쿠키 속성 검사(Secure)는 HTTP 응답에 Set-Cookie를 확인하여 Secure 속성이 있는지 확인하는 체커입니다.",
  "1.http.cookie_attribute_test_secure.exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.cookie_attribute_test_secure.exist.attack.s1.o0": "{0}",
  "1.http.cookie_attribute_test_secure.exist.attack.s1.o1": "{0}",
  "1.http.cookie_attribute_test_secure.exist.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "1.http.cookie_attribute_test_secure.exist.result.s1.o0": "{0}",
  "1.http.cookie_attribute_test_secure.exist.solution.s0.o0": "Secure 속성은 HTTP에서 동작하지 않으므로 HTTPS로 변경해야 합니다.",
  "1.http.cookie_attribute_test_secure.exist.solution.s0.o1": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "1.http.cookie_attribute_test_secure.not_exist.attack.s0.o0": "쿠키 속성 검사(Secure)는 HTTP 응답에 Set-Cookie를 확인하여 Secure 속성이 있는지 확인하는 체커입니다.",
  "1.http.cookie_attribute_test_secure.not_exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.cookie_attribute_test_secure.not_exist.attack.s1.o0": "{0}",
  "1.http.cookie_attribute_test_secure.not_exist.attack.s1.o1": "{0}",
  "1.http.cookie_attribute_test_secure.not_exist.result.s0.o0": "HTTP 요청에 대한 응답에 Set-Cookie 정보가 존재하지 않습니다.",
  "1.http.cookie_attribute_test_secure.not_exist.solution.s0.o0": "Secure 속성은 HTTP에서 동작하지 않으므로 HTTPS로 변경해야 합니다.",
  "1.http.cookie_attribute_test_secure.not_exist.solution.s0.o1": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "1.http.credit_card_number_disclosure.amex.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.credit_card_number_disclosure.amex.attack.s0.o1": "{0}",
  "1.http.credit_card_number_disclosure.amex.attack.s0.o2": "{0}",
  "1.http.credit_card_number_disclosure.amex.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.credit_card_number_disclosure.amex.result.s0.o1": "{0}",
  "1.http.credit_card_number_disclosure.amex.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.credit_card_number_disclosure.amex.result.s1.o1": "{0}",
  "1.http.credit_card_number_disclosure.amex.result.s1.o2": "해당 문자열은 American Express 신용카드번호에 해당합니다.",
  "1.http.credit_card_number_disclosure.amex.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 American Express 신용카드번호를 발견했습니다.",
  "1.http.credit_card_number_disclosure.amex.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 신용카드번호를 탈취할 수 있습니다.",
  "1.http.credit_card_number_disclosure.amex.solution.s0.o0": "HTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다.",
  "1.http.credit_card_number_disclosure.amex.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 신용카드번호 노출 여부를 점검해야 합니다.",
  "1.http.credit_card_number_disclosure.discover.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.credit_card_number_disclosure.discover.attack.s0.o1": "{0}",
  "1.http.credit_card_number_disclosure.discover.attack.s0.o2": "{0}",
  "1.http.credit_card_number_disclosure.discover.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.credit_card_number_disclosure.discover.result.s0.o1": "{0}",
  "1.http.credit_card_number_disclosure.discover.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.credit_card_number_disclosure.discover.result.s1.o1": "{0}",
  "1.http.credit_card_number_disclosure.discover.result.s1.o2": "해당 문자열은 Discover 신용카드번호에 해당합니다.",
  "1.http.credit_card_number_disclosure.discover.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 Discover 신용카드번호를 발견했습니다.",
  "1.http.credit_card_number_disclosure.discover.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 신용카드번호를 탈취할 수 있습니다.",
  "1.http.credit_card_number_disclosure.discover.solution.s0.o0": "HTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다.",
  "1.http.credit_card_number_disclosure.discover.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 신용카드번호 노출 여부를 점검해야 합니다.",
  "1.http.credit_card_number_disclosure.master.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.credit_card_number_disclosure.master.attack.s0.o1": "{0}",
  "1.http.credit_card_number_disclosure.master.attack.s0.o2": "{0}",
  "1.http.credit_card_number_disclosure.master.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.credit_card_number_disclosure.master.result.s0.o1": "{0}",
  "1.http.credit_card_number_disclosure.master.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.credit_card_number_disclosure.master.result.s1.o1": "{0}",
  "1.http.credit_card_number_disclosure.master.result.s1.o2": "해당 문자열은 Master 신용카드번호에 해당합니다.",
  "1.http.credit_card_number_disclosure.master.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 Master 신용카드번호를 발견했습니다.",
  "1.http.credit_card_number_disclosure.master.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 신용카드번호를 탈취할 수 있습니다.",
  "1.http.credit_card_number_disclosure.master.solution.s0.o0": "HTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다.",
  "1.http.credit_card_number_disclosure.master.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 신용카드번호 노출 여부를 점검해야 합니다.",
  "1.http.credit_card_number_disclosure.visa.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.credit_card_number_disclosure.visa.attack.s0.o1": "{0}",
  "1.http.credit_card_number_disclosure.visa.attack.s0.o2": "{0}",
  "1.http.credit_card_number_disclosure.visa.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.credit_card_number_disclosure.visa.result.s0.o1": "{0}",
  "1.http.credit_card_number_disclosure.visa.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.credit_card_number_disclosure.visa.result.s1.o1": "{0}",
  "1.http.credit_card_number_disclosure.visa.result.s1.o2": "해당 문자열은 VISA 신용카드번호에 해당합니다.",
  "1.http.credit_card_number_disclosure.visa.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 VISA 신용카드번호를 발견했습니다.",
  "1.http.credit_card_number_disclosure.visa.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 신용카드번호를 탈취할 수 있습니다.",
  "1.http.credit_card_number_disclosure.visa.solution.s0.o0": "HTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다.",
  "1.http.credit_card_number_disclosure.visa.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 신용카드번호 노출 여부를 점검해야 합니다.",
  "1.http.crlf_injection.cookie.attack.s0.o0": "CRLF란 Carriage Return(CR, ASCII 13, \\r)과 Line Feed(LF, ASCII 10, \\n)을 나타냅니다.",
  "1.http.crlf_injection.cookie.attack.s0.o1": "윈도우에서는 CR과 LF가, 리눅스 및 유닉스에서는 LF가 한 라인의 끝을 의미합니다.",
  "1.http.crlf_injection.cookie.attack.s0.o2": "CRLF 삽입이란 공격자가 이러한 CRLF를 입력하여 HTTP 응답의 헤더를 나누거나, 웹 애플리케이션 내의 코드 등을 의도치 않게 종료시켜 정보 노출, 크로스 사이트 스크립팅 등의 취약점을 발생시키는 것을 의미합니다.",
  "1.http.crlf_injection.cookie.attack.s0.o3": "이러한 CRLF 취약점을 검출하기 위해 {0} 공격 문자열이 포함된 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.crlf_injection.cookie.attack.s1.o0": "{0}",
  "1.http.crlf_injection.cookie.attack.s1.o1": "{0}",
  "1.http.crlf_injection.cookie.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.crlf_injection.cookie.result.s1.o0": "{0}",
  "1.http.crlf_injection.cookie.result.s2.o0": "HTTP 응답의 바디에 공격 문자열 {0}이 포함되었음을 확인할 수 있습니다.",
  "1.http.crlf_injection.cookie.solution.s0.o0": "CRLF 삽입을 막기 위해서는 사용자가 입력값으로 CRLF를 입력하지 못하도록 막거나, HTTP 헤더에 삽입되는 값들을 이스케이프 처리해야 합니다.",
  "1.http.cross_domain_script_inclusion.other_domain.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.cross_domain_script_inclusion.other_domain.attack.s0.o1": "{0}",
  "1.http.cross_domain_script_inclusion.other_domain.attack.s0.o2": "{0}",
  "1.http.cross_domain_script_inclusion.other_domain.result.s0.o0": "HTTP 응답 본문에서 script 태그 요소 중, src 속성값에 해당하는 도메인이 다음과 같은 요소가 존재합니다.",
  "1.http.cross_domain_script_inclusion.other_domain.result.s0.o1": "{0}",
  "1.http.cross_domain_script_inclusion.other_domain.result.s0.o2": "해당 도메인은 현재 호스트의 도메인과 동일하지 않습니다.",
  "1.http.cross_domain_script_inclusion.other_domain.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 외부 도메인 스크립트를 실행할 수 있습니다.",
  "1.http.cross_domain_script_inclusion.other_domain.solution.s0.o0": "외부 도메인의 스크립트를 통한 악의적인 스크립트 실행을 막기 위해서는 외부 도메인의 스크립트를 사용하지 않는 방법이 있습니다.",
  "1.http.cross_domain_script_inclusion.other_domain.solution.s0.o1": "또는, 라이선스 문제가 없는 외부 도메인의 스크립트를 검증 후 웹 애플리케이션에 직접 추가하는 방법이 있습니다.",
  "1.http.cross_domain_script_inclusion.other_domain.solution.s0.o2": "이외에도 블랙리스트를 작성하여 허용되지 않는 외부 도메인의 스크립트를 제외하거나 화이트리스트를 작성하여 허용된 외부 도메인의 스크립트만을 추가하는 방법이 있습니다.",
  "1.http.custom.active_custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.custom.active_custom.attack.s0.o1": "{0}",
  "1.http.custom.active_custom.attack.s0.o2": "설정한 값은 사용자 정의 공격 문자열에 해당합니다.",
  "1.http.custom.active_custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.custom.active_custom.attack.s1.o1": "{0}",
  "1.http.custom.active_custom.attack.s1.o2": "{0}",
  "1.http.custom.active_custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.custom.active_custom.result.s0.o1": "{0}",
  "1.http.custom.active_custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.custom.active_custom.result.s1.o1": "{0}",
  "1.http.custom.active_custom.result.s1.o2": "HTTP 응답 본문에서 해당 문자열의 위치는 {0}입니다.",
  "1.http.custom.active_custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "1.http.custom.conditional.attack_cookie": "쿠키 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_dwr": "DWR 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_gwt": "GWT RPC 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_header": "HTTP 요청 헤더 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_json": "JSON-RPC 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_multipart": "Multipart/form-data 타입 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_url_path": "URL 경로의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.conditional.attack_xml": "XML-RPC 요청의 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.custom.passive_custom.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.custom.passive_custom.attack.s0.o1": "{0}",
  "1.http.custom.passive_custom.attack.s0.o2": "{0}",
  "1.http.custom.passive_custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.custom.passive_custom.result.s0.o1": "{0}",
  "1.http.custom.passive_custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.custom.passive_custom.result.s1.o1": "{0}",
  "1.http.custom.passive_custom.result.s1.o2": "HTTP 응답 본문에서 해당 문자열의 위치는 {0}입니다.",
  "1.http.custom.passive_custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "1.http.dast.sw.common.6519.allow.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "1.http.dast.sw.common.6519.allow.attack.s0.o1": "{0}",
  "1.http.dast.sw.common.6519.allow.attack.s0.o2": "{0}",
  "1.http.dast.sw.common.6519.allow.attack.s0.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "1.http.dast.sw.common.6519.allow.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "1.http.dast.sw.common.6519.allow.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "1.http.dast.sw.common.6519.allow.result.s0.o2": "{0}",
  "1.http.dast.sw.common.6519.allow.result.s0.o3": "분석 결과, 서버가 취약한 메서드 사용을 허용하고 있음을 확인했습니다.",
  "1.http.dast.sw.common.6519.allow.solution.s0.o0": "HTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드는 취약하지 않지만 사용하지 않는 것이 좋습니다.)",
  "1.http.dast.sw.common.6519.delete.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "1.http.dast.sw.common.6519.delete.attack.s0.o1": "{0}",
  "1.http.dast.sw.common.6519.delete.attack.s0.o2": "{0}",
  "1.http.dast.sw.common.6519.delete.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "1.http.dast.sw.common.6519.delete.attack.s1.o1": "{0}",
  "1.http.dast.sw.common.6519.delete.attack.s1.o2": "{0}",
  "1.http.dast.sw.common.6519.delete.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "1.http.dast.sw.common.6519.delete.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "1.http.dast.sw.common.6519.delete.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "1.http.dast.sw.common.6519.delete.result.s0.o2": "{0}",
  "1.http.dast.sw.common.6519.delete.result.s0.o3": "해당 헤더 값을 기반으로, DELETE 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "1.http.dast.sw.common.6519.delete.result.s1.o0": "DELETE 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "1.http.dast.sw.common.6519.delete.result.s1.o2": "분석 수행 결과, DELETE 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "1.http.dast.sw.common.6519.delete.solution.s0.o0": "HTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드는 취약하지 않지만 사용하지 않는 것이 좋습니다.)",
  "1.http.dast.sw.common.6519.put.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "1.http.dast.sw.common.6519.put.attack.s0.o1": "{0}",
  "1.http.dast.sw.common.6519.put.attack.s0.o2": "{0}",
  "1.http.dast.sw.common.6519.put.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "1.http.dast.sw.common.6519.put.attack.s1.o1": "{0}",
  "1.http.dast.sw.common.6519.put.attack.s1.o2": "{0}",
  "1.http.dast.sw.common.6519.put.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "1.http.dast.sw.common.6519.put.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "1.http.dast.sw.common.6519.put.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "1.http.dast.sw.common.6519.put.result.s0.o2": "{0}",
  "1.http.dast.sw.common.6519.put.result.s0.o3": "해당 헤더 값을 기반으로, PUT 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "1.http.dast.sw.common.6519.put.result.s1.o0": "PUT 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "1.http.dast.sw.common.6519.put.result.s1.o1": "또한, 해당 응답의 헤더 중 Content-Location 헤더가 존재합니다.\n",
  "1.http.dast.sw.common.6519.put.result.s1.o2": "분석 수행 결과, PUT 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "1.http.dast.sw.common.6519.put.solution.s0.o0": "HTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드는 취약하지 않지만 사용하지 않는 것이 좋습니다.)",
  "1.http.dast.sw.common.6519.trace.attack.s0.o0": "다음과 같은 요청을 송신했습니다.",
  "1.http.dast.sw.common.6519.trace.attack.s0.o1": "{0}",
  "1.http.dast.sw.common.6519.trace.attack.s0.o2": "{0}",
  "1.http.dast.sw.common.6519.trace.attack.s1.o0": "해당 요청에 대한 응답을 기반으로, 다음과 같은 요청을 추가로 송신했습니다.",
  "1.http.dast.sw.common.6519.trace.attack.s1.o1": "{0}",
  "1.http.dast.sw.common.6519.trace.attack.s1.o2": "{0}",
  "1.http.dast.sw.common.6519.trace.attack.s1.o3": "해당 요청에 대한 응답을 분석했습니다.",
  "1.http.dast.sw.common.6519.trace.result.s0.o0": "OPTIONS 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "1.http.dast.sw.common.6519.trace.result.s0.o1": "또한, 응답 헤더 중 Allow라는 이름의 헤더가 존재하며, 해당 헤더의 값이 다음과 같습니다.",
  "1.http.dast.sw.common.6519.trace.result.s0.o2": "{0}",
  "1.http.dast.sw.common.6519.trace.result.s0.o3": "해당 헤더 값을 기반으로, TRACE 메소드를 사용하는 요청을 서버에서 허용하고 있음을 확인했습니다.\n",
  "1.http.dast.sw.common.6519.trace.result.s1.o0": "TRACE 메소드를 사용하는 요청에 대한 응답의 상태 코드가 {0} 입니다.\n",
  "1.http.dast.sw.common.6519.trace.result.s1.o1": "또한, 해당 응답의 본문에서 다음 문자열을 발견했습니다.",
  "1.http.dast.sw.common.6519.trace.result.s1.o2": "{0}",
  "1.http.dast.sw.common.6519.trace.result.s1.o3": "분석 수행 결과, TRACE 메소드를 사용하는 요청에 대한 정상 응답 수신이 가능함을 확인했습니다.",
  "1.http.dast.sw.common.6519.trace.solution.s0.o0": "HTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드는 취약하지 않지만 사용하지 않는 것이 좋습니다.)",
  "1.http.deprecated_components_in_html5.attr.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.deprecated_components_in_html5.attr.attack.s0.o1": "{0}",
  "1.http.deprecated_components_in_html5.attr.attack.s0.o2": "{0}",
  "1.http.deprecated_components_in_html5.attr.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.deprecated_components_in_html5.attr.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.deprecated_components_in_html5.attr.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.deprecated_components_in_html5.attr.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "1.http.deprecated_components_in_html5.attr.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.deprecated_components_in_html5.attr.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.deprecated_components_in_html5.attr.result.s1.o1": "{0}",
  "1.http.deprecated_components_in_html5.attr.result.s2.o0": "해당 요소의 {0} 속성이 존재합니다. 해당 속성은 HTML5에서 더 이상 사용되지 않는 속성입니다.",
  "1.http.deprecated_components_in_html5.attr.solution.s0.o0": "{0} 요소의 {1} 속성을 제거하세요.",
  "1.http.deprecated_components_in_html5.tag.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.deprecated_components_in_html5.tag.attack.s0.o1": "{0}",
  "1.http.deprecated_components_in_html5.tag.attack.s0.o2": "{0}",
  "1.http.deprecated_components_in_html5.tag.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.deprecated_components_in_html5.tag.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.deprecated_components_in_html5.tag.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.deprecated_components_in_html5.tag.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.deprecated_components_in_html5.tag.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.deprecated_components_in_html5.tag.result.s1.o1": "{0}",
  "1.http.deprecated_components_in_html5.tag.result.s2.o0": "해당 요소는 HTML5에서 더 이상 사용되지 않는 요소입니다.",
  "1.http.deprecated_components_in_html5.tag.solution.s0.o0": "{0} 요소를 제거하거나 다른 요소로 대체하세요.",
  "1.http.directory_browsing.pattern.attack.s0.o0": "디렉토리 목록화는 웹 애플리케이션 서버의 잘못된 구성에 의하여 서버의 디렉토리 내부에 있는 파일들이나 다른 디렉토리들이 노출되는 취약점을 말합니다.",
  "1.http.directory_browsing.pattern.attack.s0.o1": "공격자는 디렉토리 목록화를 통해 웹 애플리케이션의 리소스를 분석할 수 있고, 임시 파일이나 덤프 파일 등의 중요한 정보를 가지고 있는 파일들에 접근할 수 있습니다.",
  "1.http.directory_browsing.pattern.attack.s0.o2": "이러한 디렉토리 목록화 취약점을 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.directory_browsing.pattern.attack.s1.o0": "{0}",
  "1.http.directory_browsing.pattern.attack.s1.o1": "{0}",
  "1.http.directory_browsing.pattern.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.directory_browsing.pattern.result.s1.o0": "{0}",
  "1.http.directory_browsing.pattern.result.s2.o0": "HTTP 응답의 바디에 디렉토리 목록화를 나타내는 {0}이 포함되었음을 확인할 수 있습니다.",
  "1.http.directory_browsing.pattern.solution.s0.o0": "디렉토리 목록화는 그 자체만으로 취약점이라기보다 이를 통해 유출되는 다른 정보들로 인해 취약점이 됩니다.",
  "1.http.directory_browsing.pattern.solution.s1.o0": "이러한 디렉토리 목록화를 해결하기 위해서는 웹 애플리케이션 서버의 디렉토리 내부에 중요한 정보를 두지 말아야 합니다.",
  "1.http.directory_browsing.pattern.solution.s2.o0": "또는, 웹 애플리케이션 서버의 구성 변경을 통해 웹 애플리케이션 서버 아래에 있는 모든 경로에 대해서 디렉토리 목록화를 막아야 합니다.",
  "1.http.directory_indexing.index.attack.s0.o0": "아래 페이지에서 디렉토리 인덱싱 페이지를 출력하는지 확인했습니다.",
  "1.http.directory_indexing.index.attack.s1.o0": "{0}",
  "1.http.directory_indexing.index.result.s0.o0": "URL 페이지에서 디렉토리 인덱싱 페이지가 감지되었습니다.",
  "1.http.directory_indexing.index.result.s1.o0": "인덱스 파일을 생성하거나 서버 설정 파일에서 디렉토리 인덱싱 옵션을 비활성하여 해결할 수 있습니다.",
  "1.http.directory_indexing.index.solution.s0.o0": "인덱스 파일이 있는 경우 디렉토리 인덱싱 페이지 대신 인덱스 파일을 사용자에게 표시합니다.",
  "1.http.directory_indexing.index.solution.s0.o1": "일반적으로 index.html, home.html, default.asp을 인덱스 파일로 사용합니다.",
  "1.http.directory_indexing.index.solution.s0.o2": "그리고 특별한 경우가 아니라면 서버 설정 파일에서 디렉토리 인덱싱 옵션을 비활성하는 것이 안전합니다.",
  "1.http.directory_indexing.index.solution.s1.o0": "Apache :",
  "1.http.directory_indexing.index.solution.s2.o0": "먼저, 웹 서버 루트 디렉토리에 .htaccess 파일을 만듭니다.",
  "1.http.directory_indexing.index.solution.s2.o1": ".htaccess 파일에 다음과 같은 코드를 추가하여 디렉토리 인덱싱을 비활성화합니다.",
  "1.http.directory_indexing.index.solution.s2.o2": "{0}",
  "1.http.directory_indexing.index.solution.s3.o0": "PHP :",
  "1.http.directory_indexing.index.solution.s4.o1": "원하는 디렉토리에 index.php 파일을 생성하세요.",
  "1.http.directory_indexing.index.solution.s4.o2": "index.php 파일에 다음과 같은 코드를 추가하여 디렉토리에 대한 접근을 거부합니다.",
  "1.http.directory_indexing.index.solution.s4.o3": "{0}",
  "1.http.driver_license_number_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.driver_license_number_disclosure.match.attack.s0.o1": "{0}",
  "1.http.driver_license_number_disclosure.match.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.driver_license_number_disclosure.match.result.s0.o1": "{0}",
  "1.http.driver_license_number_disclosure.match.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.driver_license_number_disclosure.match.result.s1.o1": "{0}",
  "1.http.driver_license_number_disclosure.match.result.s1.o2": "해당 문자열은 운전면허번호에 해당합니다.",
  "1.http.driver_license_number_disclosure.match.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 운전면허번호를 발견했습니다.",
  "1.http.driver_license_number_disclosure.match.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 운전면허번호를 탈취할 수 있습니다.",
  "1.http.driver_license_number_disclosure.match.solution.s0.o0": "HTTP 응답 본문에 운전면허번호를 포함하지 않아야 합니다.",
  "1.http.driver_license_number_disclosure.match.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 운전면허번호 노출 여부를 점검해야 합니다.",
  "1.http.email_address_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.email_address_disclosure.match.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.email_address_disclosure.match.attack.s1.o0": "{0}",
  "1.http.email_address_disclosure.match.attack.s1.o1": "{0}",
  "1.http.email_address_disclosure.match.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "1.http.email_address_disclosure.match.attack.s3.o0": "HTTP 응답의 상태 코드가 오류 코드에 해당하는지의 여부를 검사했습니다.",
  "1.http.email_address_disclosure.match.attack.s4.o0": "HTTP 응답 본문에서 이메일 주소에 해당하는 문자열을 탐색했습니다.",
  "1.http.email_address_disclosure.match.result.s0.o0": "HTTP 응답의 상태 코드는 다음과 같습니다.",
  "1.http.email_address_disclosure.match.result.s1.o0": "{0}",
  "1.http.email_address_disclosure.match.result.s2.o0": "HTTP 응답 본문에 다음과 같은 문자열이 존재합니다.",
  "1.http.email_address_disclosure.match.result.s3.o0": "{0}",
  "1.http.email_address_disclosure.match.result.s3.o1": "해당 문자열은 이메일 주소에 해당합니다.",
  "1.http.email_address_disclosure.match.solution.s0.o0": "발견한 이메일 주소를 노출할 필요가 없는 경우, 해당 이메일 주소를 HTTP 응답 본문에서 제거하세요.",
  "1.http.external_redirect.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.external_redirect.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.external_redirect.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.external_redirect.invocation.attack.s0.o1": "{0}",
  "1.http.external_redirect.invocation.attack.s0.o2": "{0}",
  "1.http.external_redirect.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.external_redirect.invocation.attack.s1.o1": "{0}",
  "1.http.external_redirect.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "1.http.external_redirect.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "1.http.external_redirect.invocation.result.s0.o2": "{0}",
  "1.http.external_redirect.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "1.http.external_redirect.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "1.http.external_redirect.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되었으며, 해당 메소드를 통해 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "1.http.external_redirect.invocation.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "1.http.external_redirect.invocation.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증을 수행해야 합니다.",
  "1.http.external_redirect.redirect_header.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.external_redirect.redirect_header.attack.s0.o1": "{0}",
  "1.http.external_redirect.redirect_header.attack.s0.o2": "{0}",
  "1.http.external_redirect.redirect_header.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.external_redirect.redirect_header.attack.s1.o1": "{0}",
  "1.http.external_redirect.redirect_header.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.external_redirect.redirect_header.result.s0.o1": "{0}",
  "1.http.external_redirect.redirect_header.result.s1.o0": "HTTP 응답의 {0} 헤더의 값에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.external_redirect.redirect_header.result.s1.o1": "{0}",
  "1.http.external_redirect.redirect_header.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 헤더 값에 존재함을 발견했습니다.",
  "1.http.external_redirect.redirect_header.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "1.http.external_redirect.redirect_header.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "1.http.external_redirect.redirect_header.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "1.http.external_redirect.redirect_js.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.external_redirect.redirect_js.attack.s0.o1": "{0}",
  "1.http.external_redirect.redirect_js.attack.s0.o2": "{0}",
  "1.http.external_redirect.redirect_js.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.external_redirect.redirect_js.attack.s1.o1": "{0}",
  "1.http.external_redirect.redirect_js.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.external_redirect.redirect_js.result.s0.o1": "{0}",
  "1.http.external_redirect.redirect_js.result.s1.o0": "HTTP 응답의 본문 중, JavaScript 문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.external_redirect.redirect_js.result.s1.o1": "{0}",
  "1.http.external_redirect.redirect_js.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 JavaScript 문에 존재함을 발견했습니다.",
  "1.http.external_redirect.redirect_js.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "1.http.external_redirect.redirect_js.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "1.http.external_redirect.redirect_js.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "1.http.external_redirect.redirect_meta.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.external_redirect.redirect_meta.attack.s0.o1": "{0}",
  "1.http.external_redirect.redirect_meta.attack.s0.o2": "{0}",
  "1.http.external_redirect.redirect_meta.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.external_redirect.redirect_meta.attack.s1.o1": "{0}",
  "1.http.external_redirect.redirect_meta.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.external_redirect.redirect_meta.result.s0.o1": "{0}",
  "1.http.external_redirect.redirect_meta.result.s1.o0": "HTTP 응답의 본문 중, {0} 속성값이 {1}인 Meta 태그의 {2} 속성값에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.external_redirect.redirect_meta.result.s1.o1": "{0}",
  "1.http.external_redirect.redirect_meta.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 Meta 태그의 {0} 속성값에 존재함을 발견했습니다.",
  "1.http.external_redirect.redirect_meta.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "1.http.external_redirect.redirect_meta.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "1.http.external_redirect.redirect_meta.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "1.http.falsified_http_method.same.attack.s0.o0": "HTTP 위조 취약점은 임의의 메소드 HTTP 요청에 대한 HTTP 응답이 일반적인 메소드 HTTP 요청의 HTTP 응답과 같은 취약점입니다.",
  "1.http.falsified_http_method.same.attack.s1.o0": "HTTP 위조 취약점을 검출하기 위해 일반 메소드 {0} HTTP 요청에서 HTTP 메소드만을 임의의 {1} 메소드로 변경한 HTTP 요청은 다음과 같습니다.",
  "1.http.falsified_http_method.same.attack.s2.o0": "{0}",
  "1.http.falsified_http_method.same.attack.s2.o1": "{0}",
  "1.http.falsified_http_method.same.result.s0.o0": "기존의 일반 메소드인 {0} 메소드 HTTP 요청에 대한 HTTP 응답의 헤더는 다음과 같습니다.",
  "1.http.falsified_http_method.same.result.s1.o0": "{0}",
  "1.http.falsified_http_method.same.result.s2.o0": "임의의 메소드인 {0} 메소드로 변경하여 보낸 HTTP 요청에 대한 HTTP 응답 헤더는 다음과 같습니다.",
  "1.http.falsified_http_method.same.result.s3.o0": "{0}",
  "1.http.falsified_http_method.same.result.s4.o0": "위 두 HTTP 응답 헤더의 헤더 개수와 종류, 상태 코드, 콘텐츠 길이 등이 같습니다.",
  "1.http.falsified_http_method.same.result.s5.o0": "이를 통해, 임의의 메소드 HTTP 요청이 일반 메소드인 {0} 메소드 HTTP 요청과 똑같이 처리됨을 유추할 수 있습니다.",
  "1.http.falsified_http_method.same.solution.s0.o0": "이러한 HTTP 위조 취약점을 해결하기 위해서는 임의의 메소드 HTTP 요청을 허용하지 말아야 합니다.",
  "1.http.falsified_http_method.same.solution.s1.o0": "허용해야 하는 경우에는 이러한 임의의 메소드 HTTP 요청이 일반적인 메소드인 {0} 메소드 HTTP 요청과 같은 보안 설정 및 권한 설정이 적용되도록 만들어야 합니다.",
  "1.http.format_string.execute.attack.s0.o0": "형식 문자열 취약점은 공격자가 형식 문자열 값을 입력하여 웹 애플리케이션에 부적절한 코드 실행, 스택 노출, 오작동 등의 문제를 일으키는 취약점입니다.",
  "1.http.format_string.execute.attack.s0.o1": "대표적인 형식 문자열은 다음과 같습니다.",
  "1.http.format_string.execute.attack.s1.o0": "{0}",
  "1.http.format_string.execute.attack.s2.o0": "형식 문자열을 검출하기 위한 HTTP 요청은 다음과 같습니다.",
  "1.http.format_string.execute.attack.s3.o0": "{0}",
  "1.http.format_string.execute.attack.s3.o1": "{0}",
  "1.http.format_string.execute.result.s0.o0": "형식 문자열 취약점을 검출하기 위해 보낸 HTTP 요청으로 인하여 형식 문자열이 실행되었습니다.",
  "1.http.format_string.execute.result.s0.o1": "HTTP 응답 메시지 헤더는 다음과 같습니다.",
  "1.http.format_string.execute.result.s1.o0": "{0}",
  "1.http.format_string.execute.solution.s0.o0": "형식 문자열 취약점을 막기 위해서는 입력값 검증을 통해 형식 문자열이 입력되지 않도록 하거나 이스케이프 처리하여 사용해야 합니다.",
  "1.http.format_string.execute.solution.s0.o1": "또한, 다음과 같이 형식 문자열을 사용하는 함수를 사용할 때 유의해야 합니다.",
  "1.http.format_string.execute.solution.s1.o0": "C / C++ :",
  "1.http.format_string.execute.solution.s2.o0": "{0}",
  "1.http.format_string.execute.solution.s3.o0": "Java :",
  "1.http.format_string.execute.solution.s4.o0": "{0}",
  "1.http.format_string.execute.solution.s5.o0": "C# :",
  "1.http.format_string.execute.solution.s6.o0": "{0}",
  "1.http.format_string.server.attack.s0.o0": "형식 문자열 취약점은 공격자가 형식 문자열 값을 입력하여 웹 애플리케이션에 부적절한 코드 실행, 스택 노출, 오작동 등의 문제를 일으키는 취약점입니다.",
  "1.http.format_string.server.attack.s0.o1": "대표적인 형식 문자열은 다음과 같습니다.",
  "1.http.format_string.server.attack.s1.o0": "{0}",
  "1.http.format_string.server.attack.s2.o0": "형식 문자열을 검출하기 위한 HTTP 요청은 다음과 같습니다.",
  "1.http.format_string.server.attack.s3.o0": "{0}",
  "1.http.format_string.server.attack.s3.o1": "{0}",
  "1.http.format_string.server.result.s0.o0": "형식 문자열 취약점을 검출하기 위해 보낸 HTTP 요청으로 인하여 형식 문자열이 실행되었습니다.",
  "1.http.format_string.server.result.s0.o1": "HTTP 응답 메시지 헤더는 다음과 같습니다.",
  "1.http.format_string.server.result.s1.o0": "{0}",
  "1.http.format_string.server.solution.s0.o0": "형식 문자열 취약점을 막기 위해서는 입력값 검증을 통해 형식 문자열이 입력되지 않도록 하거나 이스케이프 처리하여 사용해야 합니다.",
  "1.http.format_string.server.solution.s0.o1": "또한, 다음과 같이 형식 문자열을 사용하는 함수를 사용할 때 유의해야 합니다.",
  "1.http.format_string.server.solution.s1.o0": "C / C++ :",
  "1.http.format_string.server.solution.s2.o0": "{0}",
  "1.http.format_string.server.solution.s3.o0": "Java :",
  "1.http.format_string.server.solution.s4.o0": "{0}",
  "1.http.format_string.server.solution.s5.o0": "C# :",
  "1.http.format_string.server.solution.s6.o0": "{0}",
  "1.http.host_header.used.attack.s0.o0": "Host 헤더 취약점은 Host 헤더가 조작되어 Host 헤더의 값을 사용하는 링크가 악의적인 사이트로 연결되는 취약점입니다.",
  "1.http.host_header.used.attack.s1.o0": "웹 애플리케이션에서 Host 헤더의 값을 별도의 검증 없이 사용한다면, 공격자가 Host 헤더를 조작하여 악의적인 사이트를 연결시킬 수 있습니다.",
  "1.http.host_header.used.attack.s1.o1": "이를 통해 공격자는 사용자의 HTTP 요청을 가로채거나 사용자가 의도치 않은 행동을 수행하도록 할 수 있습니다.",
  "1.http.host_header.used.attack.s2.o0": "예를 들어, 공격자가 Host 헤더를 조작하여 사용자에게 악의적으로 조작된 암호 변경 사이트를 연결시킬 수 있습니다.",
  "1.http.host_header.used.attack.s2.o1": "사용자는 인지하지 못하고 암호를 변경하게 되면, 변경된 암호 정보가 공격자에게 전달되어 사용자의 계정 정보가 탈취될 수 있습니다.",
  "1.http.host_header.used.attack.s3.o0": "이러한 Host 헤더 취약점을 검출하기 위해 Host 헤더 값을 {0} 으로 변경한 HTTP 요청을 다음과 같이 보냈습니다.",
  "1.http.host_header.used.attack.s4.o0": "{0}",
  "1.http.host_header.used.attack.s4.o1": "{0}",
  "1.http.host_header.used.result.s0.o0": "HTTP 요청에 대한 HTTP 응답에 다음과 같이 Host 헤더 값을 사용하는 요소가 있습니다.",
  "1.http.host_header.used.result.s1.o0": "{0}",
  "1.http.host_header.used.result.s2.o0": "HTTP 응답에서 {0} 속성에 검출을 위해 사용한 Host 헤더 값 {1}이 포함되어 있음을 확인할 수 있습니다.",
  "1.http.host_header.used.solution.s0.o0": "Host 헤더 취약점을 해결하기 위한 가장 간단한 방법은 Host 헤더의 값을 사용하지 않는 것입니다.",
  "1.http.host_header.used.solution.s1.o0": "Host 헤더 값을 사용해야 하는 경우에는, Host 헤더 값을 검증하여 사용해야 합니다.",
  "1.http.host_header.used.solution.s2.o0": "Host 헤더 값을 검증하기 위한 방법은 일반적으로 화이트리스트 방법과 블랙리스트 방법이 있습니다.",
  "1.http.host_header.used.solution.s2.o1": "화이트리스트 방법은 검증이 완료된 Host 헤더 값을 목록으로 저장하여 해당 Host 헤더 값만을 받아들이는 방법입니다.",
  "1.http.host_header.used.solution.s2.o3": "블랙리스트 방법은 위험하다고 판단되는 Host 헤더 값을 목록으로 저장하여 해당 Host 헤더 값이 들어오면 차단하는 방법입니다.",
  "1.http.host_header.used.solution.s3.o0": "이렇듯 Host 헤더 값을 다양한 방식으로 검증하여 사용하면 Host 헤더 취약점을 해결할 수 있습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s0.o1": "{0}",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s0.o2": "{0}",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.attack.s4.o0": "해당 요소의 내부 텍스트 값을 검사했습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s1.o1": "{0}",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s2.o0": "해당 요소의 내부 텍스트 값이 반복된 특수 문자를 포함하고 있습니다. 해당 내부 텍스트 값에 포함된 특수 문자는 {0}입니다. 해당 내부 텍스트 값은 다음과 같습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s2.o1": "{0}",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.result.s3.o0": "해당 내부 텍스트 값은 페이지 제목으로 사용하기에 적절하지 않습니다.",
  "1.http.inappropriate_title.duplicate_special_characters_in_page_title.solution.s0.o0": "{0} 요소의 내부 텍스트 값에서 동일한 특수 문자가 두 개 이상 연속되지 않도록 수정하세요.",
  "1.http.inappropriate_title.empty_frame_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.inappropriate_title.empty_frame_title.attack.s0.o1": "{0}",
  "1.http.inappropriate_title.empty_frame_title.attack.s0.o2": "{0}",
  "1.http.inappropriate_title.empty_frame_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.inappropriate_title.empty_frame_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.inappropriate_title.empty_frame_title.attack.s3.o0": "HTTP 응답 본문에서 프레임을 탐색했습니다.",
  "1.http.inappropriate_title.empty_frame_title.attack.s4.o0": "해당 프레임의 {0} 속성을 탐색했습니다.",
  "1.http.inappropriate_title.empty_frame_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.inappropriate_title.empty_frame_title.result.s1.o0": "HTTP 응답 본문에서 프레임에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.inappropriate_title.empty_frame_title.result.s1.o1": "{0}",
  "1.http.inappropriate_title.empty_frame_title.result.s2.o0": "해당 요소의 {0} 속성 값이 빈 문자열이므로 프레임 제목이 누락되었습니다.",
  "1.http.inappropriate_title.empty_frame_title.solution.s0.o0": "{0} 요소의 {1} 속성 값을 비어있지 않은 문자열로 설정하세요.",
  "1.http.inappropriate_title.empty_page_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.inappropriate_title.empty_page_title.attack.s0.o1": "{0}",
  "1.http.inappropriate_title.empty_page_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.inappropriate_title.empty_page_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.inappropriate_title.empty_page_title.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.inappropriate_title.empty_page_title.attack.s4.o0": "해당 요소의 내부 텍스트 값을 검사했습니다.",
  "1.http.inappropriate_title.empty_page_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.inappropriate_title.empty_page_title.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.inappropriate_title.empty_page_title.result.s1.o1": "{0}",
  "1.http.inappropriate_title.empty_page_title.result.s2.o0": "해당 요소의 내부 텍스트 값이 빈 문자열이므로 페이지 제목이 누락되었습니다.",
  "1.http.inappropriate_title.empty_page_title.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 비어있지 않은 문자열로 설정하세요.",
  "1.http.inappropriate_title.no_frame_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.inappropriate_title.no_frame_title.attack.s0.o1": "{0}",
  "1.http.inappropriate_title.no_frame_title.attack.s0.o2": "{0}",
  "1.http.inappropriate_title.no_frame_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.inappropriate_title.no_frame_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.inappropriate_title.no_frame_title.attack.s3.o0": "HTTP 응답 본문에서 프레임을 탐색했습니다.",
  "1.http.inappropriate_title.no_frame_title.attack.s4.o0": "해당 프레임의 {0} 속성을 탐색했습니다.",
  "1.http.inappropriate_title.no_frame_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.inappropriate_title.no_frame_title.result.s1.o0": "HTTP 응답 본문에서 프레임에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.inappropriate_title.no_frame_title.result.s1.o1": "{0}",
  "1.http.inappropriate_title.no_frame_title.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 프레임 제목이 누락되었습니다.",
  "1.http.inappropriate_title.no_frame_title.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "1.http.inappropriate_title.no_page_title.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.inappropriate_title.no_page_title.attack.s0.o1": "{0}",
  "1.http.inappropriate_title.no_page_title.attack.s0.o2": "{0}",
  "1.http.inappropriate_title.no_page_title.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.inappropriate_title.no_page_title.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.inappropriate_title.no_page_title.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.inappropriate_title.no_page_title.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.inappropriate_title.no_page_title.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재하지 않습니다. 해당 요소가 없으므로 페이지 제목이 누락되었습니다.",
  "1.http.inappropriate_title.no_page_title.solution.s0.o0": "{0} 요소를 추가하세요.",
  "1.http.incompatible_css.css.attack.s0.o0": "다음과 같은 첫 번째 HTTP 요청을 전송했습니다.",
  "1.http.incompatible_css.css.attack.s0.o1": "{0}",
  "1.http.incompatible_css.css.attack.s0.o2": "{0}",
  "1.http.incompatible_css.css.attack.s1.o0": "첫 번째 HTTP 응답을 수신했습니다.",
  "1.http.incompatible_css.css.attack.s2.o0": "첫 번째 HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.incompatible_css.css.attack.s3.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로의 연결을 탐색했습니다.",
  "1.http.incompatible_css.css.attack.s4.o0": "탐색한 연결을 따라가기 위해 다음과 같은 두 번째 HTTP 요청을 전송했습니다.",
  "1.http.incompatible_css.css.attack.s4.o1": "{0}",
  "1.http.incompatible_css.css.attack.s5.o0": "두 번째 HTTP 응답을 수신했습니다.",
  "1.http.incompatible_css.css.attack.s6.o0": "두 번째 HTTP 응답 본문이 CSS 문서인지를 검사했습니다.",
  "1.http.incompatible_css.css.attack.s7.o0": "두 번째 HTTP 응답 본문에 대하여 CSS 구문 분석을 수행했습니다.",
  "1.http.incompatible_css.css.result.s0.o0": "첫 번째 HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.incompatible_css.css.result.s1.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로 연결하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.incompatible_css.css.result.s1.o1": "{0}",
  "1.http.incompatible_css.css.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "1.http.incompatible_css.css.result.s2.o1": "{0}",
  "1.http.incompatible_css.css.result.s3.o0": "두 번째 HTTP 응답 본문이 CSS 문서에 해당합니다.",
  "1.http.incompatible_css.css.result.s4.o0": "두 번째 HTTP 응답 본문에 대한 CSS 구문 분석 결과, {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "1.http.incompatible_css.css.solution.s0.o0": "{0} 속성을 제거하거나 다른 속성으로 대체하세요.",
  "1.http.incompatible_css.html.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.incompatible_css.html.attack.s0.o1": "{0}",
  "1.http.incompatible_css.html.attack.s0.o2": "{0}",
  "1.http.incompatible_css.html.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.incompatible_css.html.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.incompatible_css.html.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.incompatible_css.html.attack.s4.o0": "탐색한 요소의 내부 텍스트 값에 대하여 CSS 구문 분석을 수행했습니다.",
  "1.http.incompatible_css.html.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.incompatible_css.html.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.incompatible_css.html.result.s1.o1": "{0}",
  "1.http.incompatible_css.html.result.s2.o0": "해당 요소의 내부 텍스트에 대한 CSS 구문 분석 결과, {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "1.http.incompatible_css.html.solution.s0.o0": "{0} 속성을 제거하거나 다른 속성으로 대체하세요.",
  "1.http.incompatible_html.attr.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.incompatible_html.attr.attack.s0.o1": "{0}",
  "1.http.incompatible_html.attr.attack.s0.o2": "{0}",
  "1.http.incompatible_html.attr.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.incompatible_html.attr.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.incompatible_html.attr.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.incompatible_html.attr.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "1.http.incompatible_html.attr.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.incompatible_html.attr.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.incompatible_html.attr.result.s1.o1": "{0}",
  "1.http.incompatible_html.attr.result.s2.o0": "해당 요소에 {0} 속성이 존재합니다. 해당 속성은 일부 브라우저에서 지원하지 않습니다.",
  "1.http.incompatible_html.attr.solution.s0.o0": "{0} 요소의 {1} 속성을 제거하세요.",
  "1.http.incompatible_html.tag.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.incompatible_html.tag.attack.s0.o1": "{0}",
  "1.http.incompatible_html.tag.attack.s0.o2": "{0}",
  "1.http.incompatible_html.tag.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.incompatible_html.tag.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.incompatible_html.tag.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.incompatible_html.tag.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.incompatible_html.tag.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.incompatible_html.tag.result.s1.o1": "{0}",
  "1.http.incompatible_html.tag.result.s2.o0": "해당 요소는 일부 브라우저에서 지원하지 않습니다.",
  "1.http.incompatible_html.tag.solution.s0.o0": "{0} 요소를 제거하거나 다른 요소로 대체하세요.",
  "1.http.incompatible_js.html_over_es5.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.incompatible_js.html_over_es5.attack.s0.o1": "{0}",
  "1.http.incompatible_js.html_over_es5.attack.s0.o2": "{0}",
  "1.http.incompatible_js.html_over_es5.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.incompatible_js.html_over_es5.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.incompatible_js.html_over_es5.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.incompatible_js.html_over_es5.attack.s4.o0": "탐색한 요소의 내부 텍스트 값에 대하여 Javascript 구문 분석을 수행했습니다.",
  "1.http.incompatible_js.html_over_es5.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.incompatible_js.html_over_es5.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.incompatible_js.html_over_es5.result.s1.o1": "{0}",
  "1.http.incompatible_js.html_over_es5.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 Javascript 구문 분석 결과, Javascript 버전이 {0}인 경우에만 사용 가능한 기능이 존재합니다. 해당 기능의 이름은 다음과 같습니다.",
  "1.http.incompatible_js.html_over_es5.result.s2.o1": "{0}",
  "1.http.incompatible_js.html_over_es5.result.s3.o0": "해당 기능은 일부 브라우저에서 지원하지 않습니다.",
  "1.http.incompatible_js.html_over_es5.solution.s0.o0": "{0} 기능을 제거하거나 다른 기능으로 대체하세요.",
  "1.http.incompatible_js.js_over_es5.attack.s0.o0": "다음과 같은 첫 번째 HTTP 요청을 전송했습니다.",
  "1.http.incompatible_js.js_over_es5.attack.s0.o1": "{0}",
  "1.http.incompatible_js.js_over_es5.attack.s0.o2": "{0}",
  "1.http.incompatible_js.js_over_es5.attack.s1.o0": "첫 번째 HTTP 응답을 수신했습니다.",
  "1.http.incompatible_js.js_over_es5.attack.s2.o0": "첫 번째 HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.incompatible_js.js_over_es5.attack.s3.o0": "첫 번째 HTTP 응답 본문에서 Javascript 문서로의 연결을 탐색했습니다.",
  "1.http.incompatible_js.js_over_es5.attack.s4.o0": "탐색한 연결을 따라가기 위해 다음과 같은 두 번째 HTTP 요청을 전송했습니다.",
  "1.http.incompatible_js.js_over_es5.attack.s4.o1": "{0}",
  "1.http.incompatible_js.js_over_es5.attack.s5.o0": "두 번째 HTTP 응답을 수신했습니다.",
  "1.http.incompatible_js.js_over_es5.attack.s6.o0": "두 번째 HTTP 응답 본문이 Javascript 문서인지를 검사했습니다.",
  "1.http.incompatible_js.js_over_es5.attack.s7.o0": "두 번째 HTTP 응답 본문에 대하여 Javascript 구문 분석을 수행했습니다.",
  "1.http.incompatible_js.js_over_es5.result.s0.o0": "첫 번째 HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.incompatible_js.js_over_es5.result.s1.o0": "첫 번째 HTTP 응답 본문에 Javascript 문서로의 연결에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.incompatible_js.js_over_es5.result.s1.o1": "{0}",
  "1.http.incompatible_js.js_over_es5.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "1.http.incompatible_js.js_over_es5.result.s2.o1": "{0}",
  "1.http.incompatible_js.js_over_es5.result.s3.o0": "두 번째 HTTP 응답 본문이 Javascript 문서에 해당합니다.",
  "1.http.incompatible_js.js_over_es5.result.s4.o0": "두 번째 HTTP 응답 본문에 대한 JavaScript 구문 분석 결과, JavaScript 버전이 {0}인 경우에만 사용 가능한 기능이 존재합니다. 해당 기능의 이름은 다음과 같습니다.",
  "1.http.incompatible_js.js_over_es5.result.s4.o1": "{0}",
  "1.http.incompatible_js.js_over_es5.result.s5.o0": "해당 기능은 일부 브라우저에서 지원하지 않습니다.",
  "1.http.incompatible_js.js_over_es5.solution.s0.o0": "{0} 기능을 제거하거나 다른 기능으로 대체하세요.",
  "1.http.invalid_css.css_error.attack.s0.o0": "다음과 같은 첫 번째 HTTP 요청을 전송했습니다.",
  "1.http.invalid_css.css_error.attack.s0.o1": "{0}",
  "1.http.invalid_css.css_error.attack.s0.o2": "{0}",
  "1.http.invalid_css.css_error.attack.s1.o0": "첫 번째 HTTP 응답을 수신했습니다.",
  "1.http.invalid_css.css_error.attack.s2.o0": "첫 번째 HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_css.css_error.attack.s3.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로의 연결을 탐색했습니다.",
  "1.http.invalid_css.css_error.attack.s4.o0": "탐색한 연결을 따라가기 위해 다음과 같은 두 번째 HTTP 요청을 전송했습니다.",
  "1.http.invalid_css.css_error.attack.s4.o1": "{0}",
  "1.http.invalid_css.css_error.attack.s5.o0": "두 번째 HTTP 응답을 수신했습니다.",
  "1.http.invalid_css.css_error.attack.s6.o0": "두 번째 HTTP 응답 본문이 CSS 문서인지를 검사했습니다.",
  "1.http.invalid_css.css_error.attack.s7.o0": "두 번째 HTTP 응답 본문에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "1.http.invalid_css.css_error.result.s0.o0": "첫 번째 HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_css.css_error.result.s1.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로 연결하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_css.css_error.result.s1.o1": "{0}",
  "1.http.invalid_css.css_error.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "1.http.invalid_css.css_error.result.s2.o1": "{0}",
  "1.http.invalid_css.css_error.result.s3.o0": "두 번째 HTTP 응답 본문이 CSS 문서에 해당합니다.",
  "1.http.invalid_css.css_error.result.s4.o0": "두 번째 HTTP 응답 본문에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '오류' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "1.http.invalid_css.css_error.result.s4.o1": "{0}",
  "1.http.invalid_css.css_error.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 두 번째 HTTP 응답 본문에 해당하는 CSS 문서를 수정하세요.",
  "1.http.invalid_css.css_warning.attack.s0.o0": "다음과 같은 첫 번째 HTTP 요청을 전송했습니다.",
  "1.http.invalid_css.css_warning.attack.s0.o1": "{0}",
  "1.http.invalid_css.css_warning.attack.s0.o2": "{0}",
  "1.http.invalid_css.css_warning.attack.s1.o0": "첫 번째 HTTP 응답을 수신했습니다.",
  "1.http.invalid_css.css_warning.attack.s2.o0": "첫 번째 HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_css.css_warning.attack.s3.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로의 연결을 탐색했습니다.",
  "1.http.invalid_css.css_warning.attack.s4.o0": "탐색한 연결을 따라가기 위해 다음과 같은 두 번째 HTTP 요청을 전송했습니다.",
  "1.http.invalid_css.css_warning.attack.s4.o1": "{0}",
  "1.http.invalid_css.css_warning.attack.s5.o0": "두 번째 HTTP 응답을 수신했습니다.",
  "1.http.invalid_css.css_warning.attack.s6.o0": "두 번째 HTTP 응답 본문이 CSS 문서인지를 검사했습니다.",
  "1.http.invalid_css.css_warning.attack.s7.o0": "두 번째 HTTP 응답 본문에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "1.http.invalid_css.css_warning.result.s0.o0": "첫 번째 HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_css.css_warning.result.s1.o0": "첫 번째 HTTP 응답 본문에서 CSS 문서로 연결하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_css.css_warning.result.s1.o1": "{0}",
  "1.http.invalid_css.css_warning.result.s2.o0": "해당 요소의 {0} 속성 값은 {1}이고, {2} 속성 값은 다음과 같습니다.",
  "1.http.invalid_css.css_warning.result.s2.o1": "{0}",
  "1.http.invalid_css.css_warning.result.s3.o0": "두 번째 HTTP 응답 본문이 CSS 문서에 해당합니다.",
  "1.http.invalid_css.css_warning.result.s4.o0": "두 번째 HTTP 응답 본문에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '경고' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "1.http.invalid_css.css_warning.result.s4.o1": "{0}",
  "1.http.invalid_css.css_warning.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 두 번째 HTTP 응답 본문에 해당하는 CSS 문서를 수정하세요.",
  "1.http.invalid_css.html_error.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.invalid_css.html_error.attack.s0.o1": "{0}",
  "1.http.invalid_css.html_error.attack.s0.o2": "{0}",
  "1.http.invalid_css.html_error.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_css.html_error.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_css.html_error.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.invalid_css.html_error.attack.s4.o0": "탐색한 요소의 내부 텍스트 값에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "1.http.invalid_css.html_error.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_css.html_error.result.s1.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_css.html_error.result.s1.o1": "{0}",
  "1.http.invalid_css.html_error.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '오류' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "1.http.invalid_css.html_error.result.s2.o1": "{0}",
  "1.http.invalid_css.html_error.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 HTTP 응답 본문에서 탐색한 {0} 요소의 내부 텍스트 값을 수정하세요.",
  "1.http.invalid_css.html_warning.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.invalid_css.html_warning.attack.s0.o1": "{0}",
  "1.http.invalid_css.html_warning.attack.s0.o2": "{0}",
  "1.http.invalid_css.html_warning.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_css.html_warning.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_css.html_warning.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.invalid_css.html_warning.attack.s4.o0": "탐색한 요소의 내부 텍스트 값에 대하여 W3C CSS 검사기 분석을 수행했습니다.",
  "1.http.invalid_css.html_warning.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_css.html_warning.result.s1.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_css.html_warning.result.s1.o1": "{0}",
  "1.http.invalid_css.html_warning.result.s2.o0": "해당 요소의 내부 텍스트 값에 대한 W3C CSS 검사기 분석 결과, 표준 CSS 문법 미준수에 대한 '경고' 항목이 발생했습니다. 해당 항목에 대한 분석 결과 메시지는 다음과 같습니다.",
  "1.http.invalid_css.html_warning.result.s2.o1": "{0}",
  "1.http.invalid_css.html_warning.solution.s0.o0": "W3C CSS 검사기 분석 결과를 참고하여 HTTP 응답 본문에서 탐색한 {0} 요소의 내부 텍스트 값을 수정하세요.",
  "1.http.invalid_html.error.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "1.http.invalid_html.error.attack.s0.o1": "{0}",
  "1.http.invalid_html.error.attack.s0.o2": "{0}",
  "1.http.invalid_html.error.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_html.error.attack.s2.o0": "HTTP 응답 본문이 (X)HTML 문서인지를 검사했습니다.",
  "1.http.invalid_html.error.attack.s3.o0": "HTTP 응답 본문에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "1.http.invalid_html.error.result.s0.o0": "HTTP 응답 본문이 (X)HTML 문서에 해당합니다.",
  "1.http.invalid_html.error.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '오류' 항목이 발생했습니다.",
  "1.http.invalid_html.error.result.s1.o1": "{0}",
  "1.http.invalid_html.error.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 HTTP 응답 본문에 해당하는 (X)HTML 문서를 수정하세요.",
  "1.http.invalid_html.fatal.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "1.http.invalid_html.fatal.attack.s0.o1": "{0}",
  "1.http.invalid_html.fatal.attack.s0.o2": "{0}",
  "1.http.invalid_html.fatal.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_html.fatal.attack.s2.o0": "HTTP 응답 본문이 (X)HTML 문서인지를 검사했습니다.",
  "1.http.invalid_html.fatal.attack.s3.o0": "HTTP 응답 본문에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "1.http.invalid_html.fatal.result.s0.o0": "HTTP 응답 본문이 (X)HTML 문서에 해당합니다.",
  "1.http.invalid_html.fatal.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '심각' 항목이 발생했습니다.",
  "1.http.invalid_html.fatal.result.s1.o1": "{0}",
  "1.http.invalid_html.fatal.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 HTTP 응답 본문에 해당하는 (X)HTML 문서를 수정하세요.",
  "1.http.invalid_html.warning.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "1.http.invalid_html.warning.attack.s0.o1": "{0}",
  "1.http.invalid_html.warning.attack.s0.o2": "{0}",
  "1.http.invalid_html.warning.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_html.warning.attack.s2.o0": "HTTP 응답 본문이 (X)HTML 문서인지를 검사했습니다.",
  "1.http.invalid_html.warning.attack.s3.o0": "HTTP 응답 본문에 대하여 W3C 마크업 검사기 분석을 수행했습니다.",
  "1.http.invalid_html.warning.result.s0.o0": "HTTP 응답 본문이 (X)HTML 문서에 해당합니다.",
  "1.http.invalid_html.warning.result.s1.o0": "W3C 마크업 검사기 분석 결과, 다음과 같은 '경고' 항목이 발생했습니다.",
  "1.http.invalid_html.warning.result.s1.o1": "{0}",
  "1.http.invalid_html.warning.solution.s0.o0": "W3C 마크업 검사기 분석 결과를 참고하여 HTTP 응답 본문에 해당하는 (X)HTML 문서를 수정하세요.",
  "1.http.invalid_link_text.a_blank.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.invalid_link_text.a_blank.attack.s0.o1": "{0}",
  "1.http.invalid_link_text.a_blank.attack.s0.o2": "{0}",
  "1.http.invalid_link_text.a_blank.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_link_text.a_blank.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_link_text.a_blank.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "1.http.invalid_link_text.a_blank.attack.s4.o0": "탐색한 링크의 내부 텍스트 값을 검사했습니다.",
  "1.http.invalid_link_text.a_blank.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_link_text.a_blank.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_link_text.a_blank.result.s1.o1": "{0}",
  "1.http.invalid_link_text.a_blank.result.s2.o0": "해당 요소의 내부 텍스트 값이 공백으로만 이루어진 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "1.http.invalid_link_text.a_blank.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 공백이 아닌 문자가 포함된 문자열로 설정하세요.",
  "1.http.invalid_link_text.a_empty.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.invalid_link_text.a_empty.attack.s0.o1": "{0}",
  "1.http.invalid_link_text.a_empty.attack.s0.o2": "{0}",
  "1.http.invalid_link_text.a_empty.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_link_text.a_empty.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_link_text.a_empty.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "1.http.invalid_link_text.a_empty.attack.s4.o0": "탐색한 링크의 내부 텍스트 값을 검사했습니다.",
  "1.http.invalid_link_text.a_empty.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_link_text.a_empty.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_link_text.a_empty.result.s1.o1": "{0}",
  "1.http.invalid_link_text.a_empty.result.s2.o0": "해당 요소의 내부 텍스트 값이 빈 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "1.http.invalid_link_text.a_empty.solution.s0.o0": "{0} 요소의 내부 텍스트 값을 비어있지 않은 문자열로 설정하세요.",
  "1.http.invalid_link_text.area_blank.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.invalid_link_text.area_blank.attack.s0.o1": "{0}",
  "1.http.invalid_link_text.area_blank.attack.s0.o2": "{0}",
  "1.http.invalid_link_text.area_blank.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_link_text.area_blank.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_link_text.area_blank.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "1.http.invalid_link_text.area_blank.attack.s4.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "1.http.invalid_link_text.area_blank.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_link_text.area_blank.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_link_text.area_blank.result.s1.o1": "{0}",
  "1.http.invalid_link_text.area_blank.result.s2.o0": "해당 요소의 {0} 속성 값이 공백으로만 이루어진 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "1.http.invalid_link_text.area_blank.solution.s0.o0": "{0} 요소의 {1} 값을 공백이 아닌 문자가 포함된 문자열로 설정하세요.",
  "1.http.invalid_link_text.area_empty.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.invalid_link_text.area_empty.attack.s0.o1": "{0}",
  "1.http.invalid_link_text.area_empty.attack.s0.o2": "{0}",
  "1.http.invalid_link_text.area_empty.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_link_text.area_empty.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_link_text.area_empty.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "1.http.invalid_link_text.area_empty.attack.s4.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "1.http.invalid_link_text.area_empty.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_link_text.area_empty.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_link_text.area_empty.result.s1.o1": "{0}",
  "1.http.invalid_link_text.area_empty.result.s2.o0": "해당 요소의 {0} 속성 값이 빈 문자열이므로 링크 텍스트로 사용하기에는 적절하지 않습니다.",
  "1.http.invalid_link_text.area_empty.solution.s0.o0": "{0} 요소의 {1} 값을 비어있지 않은 문자열로 설정하세요.",
  "1.http.invalid_link_text.area_none.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.invalid_link_text.area_none.attack.s0.o1": "{0}",
  "1.http.invalid_link_text.area_none.attack.s0.o2": "{0}",
  "1.http.invalid_link_text.area_none.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.invalid_link_text.area_none.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.invalid_link_text.area_none.attack.s3.o0": "HTTP 응답 본문에서 링크를 탐색했습니다.",
  "1.http.invalid_link_text.area_none.attack.s4.o0": "탐색한 링크의 {0} 속성을 탐색했습니다.",
  "1.http.invalid_link_text.area_none.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.invalid_link_text.area_none.result.s1.o0": "HTTP 응답 본문에서 링크에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.invalid_link_text.area_none.result.s1.o1": "{0}",
  "1.http.invalid_link_text.area_none.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 링크 텍스트가 누락되었습니다.",
  "1.http.invalid_link_text.area_none.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "1.http.local_file_include.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.local_file_include.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.local_file_include.custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.local_file_include.custom.attack.s0.o1": "{0}",
  "1.http.local_file_include.custom.attack.s0.o2": "{0}",
  "1.http.local_file_include.custom.attack.s0.o3": "설정한 값은 사용자 정의 공격 문자열에 해당합니다.",
  "1.http.local_file_include.custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.local_file_include.custom.attack.s1.o1": "{0}",
  "1.http.local_file_include.custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.local_file_include.custom.result.s0.o1": "{0}",
  "1.http.local_file_include.custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.local_file_include.custom.result.s1.o1": "{0}",
  "1.http.local_file_include.custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "1.http.local_file_include.custom.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "1.http.local_file_include.custom.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.http.local_file_include.custom.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "1.http.local_file_include.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.local_file_include.invocation.attack.s0.o1": "{0}",
  "1.http.local_file_include.invocation.attack.s0.o2": "{0}",
  "1.http.local_file_include.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.local_file_include.invocation.attack.s1.o1": "{0}",
  "1.http.local_file_include.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "1.http.local_file_include.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "1.http.local_file_include.invocation.result.s0.o2": "{0}",
  "1.http.local_file_include.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "1.http.local_file_include.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "1.http.local_file_include.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되고, 해당 메소드를 통해 서버의 해당 파일을 현재 페이지에 포함시킬 수 있습니다.",
  "1.http.local_file_include.invocation.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "1.http.local_file_include.invocation.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.http.local_file_include.invocation.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "1.http.local_file_include.jsp.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.local_file_include.jsp.attack.s0.o1": "{0}",
  "1.http.local_file_include.jsp.attack.s0.o2": "{0}",
  "1.http.local_file_include.jsp.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.local_file_include.jsp.attack.s1.o1": "{0}",
  "1.http.local_file_include.jsp.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.local_file_include.jsp.result.s0.o1": "{0}",
  "1.http.local_file_include.jsp.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.local_file_include.jsp.result.s1.o1": "{0}",
  "1.http.local_file_include.jsp.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값에 해당하는 {0} 폴더 내부의 {1} 파일의 내용을 발견했습니다.",
  "1.http.local_file_include.jsp.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 서버의 해당 파일을 현재 페이지에 포함시킬 수 있습니다.",
  "1.http.local_file_include.jsp.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "1.http.local_file_include.jsp.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.http.local_file_include.jsp.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "1.http.missing_alt_text.empty_alt.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "1.http.missing_alt_text.empty_alt.attack.s0.o1": "{0}",
  "1.http.missing_alt_text.empty_alt.attack.s0.o2": "{0}",
  "1.http.missing_alt_text.empty_alt.result.s0.o0": "HTTP 응답 메시지의 본문에서 {0} 웹 요소를 탐색했습니다.",
  "1.http.missing_alt_text.empty_alt.result.s0.o1": "해당 웹 요소의 XPath는 다음과 같습니다.",
  "1.http.missing_alt_text.empty_alt.result.s0.o2": "{0}",
  "1.http.missing_alt_text.empty_alt.result.s0.o3": "해당 웹 요소는 텍스트가 아닌 콘텐츠에 해당합니다.",
  "1.http.missing_alt_text.empty_alt.result.s0.o4": "해당 웹 요소의 {0} 속성 값이 빈 문자열입니다.",
  "1.http.missing_alt_text.empty_alt.result.s1.o0": "분석 결과, 대체 텍스트를 제공하지 않는 텍스트가 아닌 콘텐츠를 탐색했습니다.",
  "1.http.missing_alt_text.empty_alt.solution.s0.o0": "텍스트가 아닌 콘텐츠의 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 합니다.",
  "1.http.missing_alt_text.empty_alt.solution.s0.o1": "{0} 웹 요소의 {1} 속성을 지정하여 대체 텍스트를 제공할 수 있습니다.",
  "1.http.missing_alt_text.no_alt.attack.s0.o0": "다음과 같은 HTTP 요청 메시지를 전송했습니다.",
  "1.http.missing_alt_text.no_alt.attack.s0.o1": "{0}",
  "1.http.missing_alt_text.no_alt.attack.s0.o2": "{0}",
  "1.http.missing_alt_text.no_alt.result.s0.o0": "HTTP 응답 메시지의 본문에서 {0} 웹 요소를 탐색했습니다.",
  "1.http.missing_alt_text.no_alt.result.s0.o1": "해당 웹 요소의 XPath는 다음과 같습니다.",
  "1.http.missing_alt_text.no_alt.result.s0.o2": "{0}",
  "1.http.missing_alt_text.no_alt.result.s0.o3": "해당 웹 요소는 텍스트가 아닌 콘텐츠에 해당합니다.",
  "1.http.missing_alt_text.no_alt.result.s0.o4": "해당 웹 요소의 {0} 속성을 탐색할 수 없습니다.",
  "1.http.missing_alt_text.no_alt.result.s1.o0": "분석 결과, 대체 텍스트를 제공하지 않는 텍스트가 아닌 콘텐츠를 탐색했습니다.",
  "1.http.missing_alt_text.no_alt.solution.s0.o0": "텍스트가 아닌 콘텐츠의 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 합니다.",
  "1.http.missing_alt_text.no_alt.solution.s0.o1": "{0} 웹 요소의 {1} 속성을 지정하여 대체 텍스트를 제공할 수 있습니다.",
  "1.http.missing_default_language.html_without_lang.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.missing_default_language.html_without_lang.attack.s0.o1": "{0}",
  "1.http.missing_default_language.html_without_lang.attack.s0.o2": "{0}",
  "1.http.missing_default_language.html_without_lang.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.missing_default_language.html_without_lang.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.missing_default_language.html_without_lang.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.missing_default_language.html_without_lang.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "1.http.missing_default_language.html_without_lang.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.missing_default_language.html_without_lang.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.missing_default_language.html_without_lang.result.s1.o1": "{0}",
  "1.http.missing_default_language.html_without_lang.result.s2.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 HTML 문서의 기본 언어가 누락되었습니다.",
  "1.http.missing_default_language.html_without_lang.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "1.http.missing_default_language.xhtml_without_lang.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.missing_default_language.xhtml_without_lang.attack.s0.o1": "{0}",
  "1.http.missing_default_language.xhtml_without_lang.attack.s0.o2": "{0}",
  "1.http.missing_default_language.xhtml_without_lang.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.missing_default_language.xhtml_without_lang.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.missing_default_language.xhtml_without_lang.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.missing_default_language.xhtml_without_lang.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "1.http.missing_default_language.xhtml_without_lang.attack.s5.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "1.http.missing_default_language.xhtml_without_lang.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.missing_default_language.xhtml_without_lang.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.missing_default_language.xhtml_without_lang.result.s1.o1": "{0}",
  "1.http.missing_default_language.xhtml_without_lang.result.s2.o0": "해당 요소의 {0} 속성이 존재합니다.",
  "1.http.missing_default_language.xhtml_without_lang.result.s3.o0": "해당 요소의 {0} 속성이 존재하지 않습니다. 해당 속성이 없으므로 XHTML 문서의 기본 언어가 누락되었습니다.",
  "1.http.missing_default_language.xhtml_without_lang.solution.s0.o0": "{0} 요소의 {1} 속성을 추가하세요.",
  "1.http.missing_label.no_id.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.missing_label.no_id.attack.s0.o1": "{0}",
  "1.http.missing_label.no_id.attack.s0.o2": "{0}",
  "1.http.missing_label.no_id.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.missing_label.no_id.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.missing_label.no_id.attack.s3.o0": "HTTP 응답 본문에서 레이블이 필요한 요소를 탐색했습니다.",
  "1.http.missing_label.no_id.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "1.http.missing_label.no_id.attack.s5.o0": "탐색한 요소의 부모 요소 중 {0} 요소를 탐색했습니다.",
  "1.http.missing_label.no_id.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.missing_label.no_id.result.s1.o0": "HTTP 응답 본문에 레이블이 필요한 요소에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.missing_label.no_id.result.s1.o1": "{0}",
  "1.http.missing_label.no_id.result.s2.o0": "해당 요소의 {0} 속성 값이 존재하지 않습니다.",
  "1.http.missing_label.no_id.result.s3.o0": "해당 요소의 부모 요소 중, {0} 요소가 존재하지 않습니다. 따라서 레이블이 필요한 요소에 레이블이 누락되었습니다.",
  "1.http.missing_label.no_id.solution.s0.o0": "{0} 요소의 부모 요소로서 {1} 요소를 추가하세요. 또는 {1} 요소를 추가하고, 해당 요소의 {2} 속성 값을 {0} 요소의 {3} 속성 값으로 설정하세요.",
  "1.http.missing_label.no_label.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.missing_label.no_label.attack.s0.o1": "{0}",
  "1.http.missing_label.no_label.attack.s0.o2": "{0}",
  "1.http.missing_label.no_label.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.missing_label.no_label.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.missing_label.no_label.attack.s3.o0": "HTTP 응답 본문에서 레이블이 필요한 요소를 탐색했습니다.",
  "1.http.missing_label.no_label.attack.s4.o0": "탐색한 요소의 {0} 속성을 탐색했습니다.",
  "1.http.missing_label.no_label.attack.s5.o0": "탐색한 요소의 부모 요소 중 {0} 요소를 탐색했습니다.",
  "1.http.missing_label.no_label.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.missing_label.no_label.result.s1.o0": "HTTP 응답 본문에 레이블이 필요한 요소에 해당하는 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.missing_label.no_label.result.s1.o1": "{0}",
  "1.http.missing_label.no_label.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "1.http.missing_label.no_label.result.s2.o1": "{0}",
  "1.http.missing_label.no_label.result.s3.o0": "해당 요소의 부모 요소 중, {0} 요소가 존재하지 않습니다.",
  "1.http.missing_label.no_label.result.s4.o0": "HTTP 응답 본문에서 {0} 속성의 값이 다음과 같은 {1} 요소가 존재하지 않습니다.",
  "1.http.missing_label.no_label.result.s4.o1": "{0}",
  "1.http.missing_label.no_label.result.s5.o0": "따라서 레이블이 필요한 요소에 레이블이 누락되었습니다.",
  "1.http.missing_label.no_label.solution.s0.o0": "{0} 요소의 부모 요소로서 {1} 요소를 추가하세요. 또는 {1} 요소를 추가하고, 해당 요소의 {2} 속성 값을 {0} 요소의 {3} 속성 값으로 설정하세요.",
  "1.http.mixed_content.http.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.mixed_content.http.attack.s0.o1": "{0}",
  "1.http.mixed_content.http.attack.s0.o2": "{0}",
  "1.http.mixed_content.http.result.s0.o0": "HTTP 응답 본문에서 {0} 속성 값이 다음과 같은 요소가 존재합니다.",
  "1.http.mixed_content.http.result.s1.o0": "{0}",
  "1.http.mixed_content.http.result.s2.o0": "따라서 HTTPS 프로토콜 기반 페이지에서 HTTP 프로토콜 기반 콘텐츠를 사용하고 있습니다.",
  "1.http.mixed_content.http.solution.s0.o0": "혼합된 콘텐츠를 막기 위해서는 HTTP 콘텐츠를 사용하지 말아야 합니다.",
  "1.http.non_standard_technology.active_x.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.non_standard_technology.active_x.attack.s0.o1": "{0}",
  "1.http.non_standard_technology.active_x.attack.s0.o2": "{0}",
  "1.http.non_standard_technology.active_x.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.non_standard_technology.active_x.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.non_standard_technology.active_x.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.non_standard_technology.active_x.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "1.http.non_standard_technology.active_x.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.non_standard_technology.active_x.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.non_standard_technology.active_x.result.s1.o1": "{0}",
  "1.http.non_standard_technology.active_x.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "1.http.non_standard_technology.active_x.result.s2.o1": "{0}",
  "1.http.non_standard_technology.active_x.result.s3.o0": "해당 속성 값은 ActiveX 기술을 사용했음을 의미합니다.",
  "1.http.non_standard_technology.active_x.solution.s0.o0": "ActiveX 기술을 대체하는 표준 기술을 사용하세요.",
  "1.http.non_standard_technology.flash.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.non_standard_technology.flash.attack.s0.o1": "{0}",
  "1.http.non_standard_technology.flash.attack.s0.o2": "{0}",
  "1.http.non_standard_technology.flash.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.non_standard_technology.flash.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.non_standard_technology.flash.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.non_standard_technology.flash.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "1.http.non_standard_technology.flash.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.non_standard_technology.flash.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.non_standard_technology.flash.result.s1.o1": "{0}",
  "1.http.non_standard_technology.flash.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "1.http.non_standard_technology.flash.result.s2.o1": "{0}",
  "1.http.non_standard_technology.flash.result.s3.o0": "해당 속성 값은 Adobe Flash 기술을 사용했음을 의미합니다.",
  "1.http.non_standard_technology.flash.solution.s0.o0": "Adobe Flash 기술을 대체하는 표준 기술을 사용하세요.",
  "1.http.non_standard_technology.java_applet.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.non_standard_technology.java_applet.attack.s0.o1": "{0}",
  "1.http.non_standard_technology.java_applet.attack.s0.o2": "{0}",
  "1.http.non_standard_technology.java_applet.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.non_standard_technology.java_applet.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.non_standard_technology.java_applet.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.non_standard_technology.java_applet.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "1.http.non_standard_technology.java_applet.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.non_standard_technology.java_applet.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.non_standard_technology.java_applet.result.s1.o1": "{0}",
  "1.http.non_standard_technology.java_applet.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "1.http.non_standard_technology.java_applet.result.s2.o1": "{0}",
  "1.http.non_standard_technology.java_applet.result.s3.o0": "해당 속성 값은 Java Applet 기술을 사용했음을 의미합니다.",
  "1.http.non_standard_technology.java_applet.solution.s0.o0": "Java Applet 기술을 대체하는 표준 기술을 사용하세요.",
  "1.http.non_standard_technology.silverlight.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.non_standard_technology.silverlight.attack.s0.o1": "{0}",
  "1.http.non_standard_technology.silverlight.attack.s0.o2": "{0}",
  "1.http.non_standard_technology.silverlight.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.non_standard_technology.silverlight.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.non_standard_technology.silverlight.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.non_standard_technology.silverlight.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "1.http.non_standard_technology.silverlight.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.non_standard_technology.silverlight.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.non_standard_technology.silverlight.result.s1.o1": "{0}",
  "1.http.non_standard_technology.silverlight.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "1.http.non_standard_technology.silverlight.result.s2.o1": "{0}",
  "1.http.non_standard_technology.silverlight.result.s3.o0": "해당 속성 값은 Microsoft Silverlight 기술을 사용했음을 의미합니다.",
  "1.http.non_standard_technology.silverlight.solution.s0.o0": "Microsoft Silverlight 기술을 대체하는 표준 기술을 사용하세요.",
  "1.http.non_standard_technology.windows_media_player.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "1.http.non_standard_technology.windows_media_player.attack.s0.o1": "{0}",
  "1.http.non_standard_technology.windows_media_player.attack.s0.o2": "{0}",
  "1.http.non_standard_technology.windows_media_player.attack.s1.o0": "HTTP 응답을 수신했습니다.",
  "1.http.non_standard_technology.windows_media_player.attack.s2.o0": "HTTP 응답 본문이 HTML 문서인지를 검사했습니다.",
  "1.http.non_standard_technology.windows_media_player.attack.s3.o0": "HTTP 응답 본문에서 {0} 요소를 탐색했습니다.",
  "1.http.non_standard_technology.windows_media_player.attack.s4.o0": "탐색한 요소의 {0} 속성 값을 검사했습니다.",
  "1.http.non_standard_technology.windows_media_player.result.s0.o0": "HTTP 응답 본문이 HTML 문서에 해당합니다.",
  "1.http.non_standard_technology.windows_media_player.result.s1.o0": "HTTP 응답 본문에 {0} 요소가 존재합니다. 해당 요소의 XPath는 다음과 같습니다.",
  "1.http.non_standard_technology.windows_media_player.result.s1.o1": "{0}",
  "1.http.non_standard_technology.windows_media_player.result.s2.o0": "해당 요소의 {0} 속성 값은 다음과 같습니다.",
  "1.http.non_standard_technology.windows_media_player.result.s2.o1": "{0}",
  "1.http.non_standard_technology.windows_media_player.result.s3.o0": "해당 속성 값은 Windows Media Player 기술을 사용했음을 의미합니다.",
  "1.http.non_standard_technology.windows_media_player.solution.s0.o0": "Windows Media Player 기술을 대체하는 표준 기술을 사용하세요.",
  "1.http.options_method_enable.options.attack.s0.o0": "OPTIONS 메소드 허용 취약점은 웹 서버가 허용되지 않는 사용자에게 OPTIONS 메소드의 결과를 돌려주는 취약점입니다.",
  "1.http.options_method_enable.options.attack.s1.o0": "OPTIONS 메소드는 현재 웹 서버에서 지원하는 메소드의 종류를 확인할 때 사용할 수 있는 메소드입니다.",
  "1.http.options_method_enable.options.attack.s1.o1": "이러한 OPTIONS 메소드의 허용은 웹 서버의 민감한 정보를 노출할 수 있으며, 2차적 공격으로 이어질 수 있습니다.",
  "1.http.options_method_enable.options.attack.s2.o0": "비인가된 OPTIONS 메소드를 검출하기 위해 {0} 메소드를 설정한 다음의 HTTP 요청을 보냈습니다.",
  "1.http.options_method_enable.options.attack.s3.o0": "{0}",
  "1.http.options_method_enable.options.attack.s3.o1": "{0}",
  "1.http.options_method_enable.options.result.s0.o0": "HTTP 요청에 따른 HTTP 응답은 다음과 같습니다.",
  "1.http.options_method_enable.options.result.s1.o0": "{0}",
  "1.http.options_method_enable.options.result.s2.o0": "OPTIONS 메소드 HTTP 요청에 대하여 다음의 허용된 HTTP 메소드 목록이 포함되었음을 확인할 수 있습니다.",
  "1.http.options_method_enable.options.result.s3.o0": "{0}",
  "1.http.options_method_enable.options.solution.s0.o0": "임의의 사용자에 의한 OPTIONS 메소드 HTTP 요청은 허용하지 않도록 권장합니다.",
  "1.http.options_method_enable.options.solution.s0.o1": "이를 위하여 적절한 서버 설정이 필요합니다.",
  "1.http.parameter_tamper.error.attack.s0.o0": "매개변수 변조는 URL이나 FORM 태그 등의 매개변수를 탈취하여 값을 바꾸는 공격입니다.",
  "1.http.parameter_tamper.error.attack.s0.o1": "공격자는 매개변수 변조를 통해 쇼핑 웹 애플리케이션의 상품 가격 변경 등의 정상적인 값을 변경하여 악용할 수 있습니다.",
  "1.http.parameter_tamper.error.attack.s0.o2": "또한, 사용자의 세션이나 사용자가 입력한 값들을 쿠키나 헤더에 저장하도록 하여 탈취할 수도 있으며,",
  "1.http.parameter_tamper.error.attack.s0.o3": "이러한 매개변수 변조에 취약한 부분을 검출하기 위해 매개변수 값을 웹 애플리케이션에 오류를 발생시키는 {0} 공격 문자열로 변경한 HTTP 요청을 다음과 같이 보냅니다.",
  "1.http.parameter_tamper.error.attack.s1.o0": "{0}",
  "1.http.parameter_tamper.error.attack.s1.o1": "{0}",
  "1.http.parameter_tamper.error.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.parameter_tamper.error.result.s1.o0": "{0}",
  "1.http.parameter_tamper.error.result.s2.o0": "매개변수 변조로 보낸 {0} 공격 문자열로 인해 오류가 발생했음을 확인할 수 있습니다.",
  "1.http.parameter_tamper.error.solution.s0.o0": "매개변수 변조를 막기 위해서는 매개변수 값의 최대/최소 길이를 설정하거나, 허용되는 값의 범위, 패턴 등을 통해 매개변수 값을 제한하고 유효성을 확인해야 합니다.",
  "1.http.parameter_tamper.error.solution.s0.o1": "이러한 유효성 검사 이외에도 매개변수로 입력되는 값에 대한 화이트리스트를 만들어 승인된 것만 받아들이거나 블랙릭스트를 만들어 승인되지 않은 값을 차단해야 합니다.",
  "1.http.parameter_tamper.error.solution.s0.o2": "HTTP 요청의 헤더, 쿠키, URL의 매개변수, 폼 필드 값 등 HTTP 요청의 모든 부분에 대해 변조 가능성을 고려해야 합니다.",
  "1.http.passport_number_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.passport_number_disclosure.match.attack.s0.o1": "{0}",
  "1.http.passport_number_disclosure.match.attack.s0.o2": "{0}",
  "1.http.passport_number_disclosure.match.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.passport_number_disclosure.match.result.s0.o1": "{0}",
  "1.http.passport_number_disclosure.match.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.passport_number_disclosure.match.result.s1.o1": "{0}",
  "1.http.passport_number_disclosure.match.result.s1.o2": "해당 문자열은 여권번호에 해당합니다.",
  "1.http.passport_number_disclosure.match.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 여권번호를 발견했습니다.",
  "1.http.passport_number_disclosure.match.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 여권번호를 탈취할 수 있습니다.",
  "1.http.passport_number_disclosure.match.solution.s0.o0": "HTTP 응답 본문에 여권번호를 포함하지 않아야 합니다.",
  "1.http.passport_number_disclosure.match.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 여권번호 노출 여부를 점검해야 합니다.",
  "1.http.password_autocomplete.empty.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.password_autocomplete.empty.attack.s0.o1": "{0}",
  "1.http.password_autocomplete.empty.attack.s0.o2": "{0}",
  "1.http.password_autocomplete.empty.result.s0.o0": "HTTP 응답 본문에서 type 속성 값이 password에 해당하는 input 태그 요소 중, autocomplete 속성 값이 비어 있는 요소가 존재합니다.",
  "1.http.password_autocomplete.empty.result.s1.o0": "따라서 해당 페이지에서 비밀번호를 자동 완성할 수 있습니다.",
  "1.http.password_autocomplete.empty.solution.s0.o0": "Form 태그에서 비밀번호 자동 완성을 막기 위해서는 off 값을 가지는 autocomplete 속성을 Form 태그에 추가해야 합니다.",
  "1.http.password_autocomplete.empty.solution.s0.o1": "또는, 폼 태그 내부에 암호 등의 중요한 값이 입력되는 INPUT 태그에 off 값을 가지는 autocomplete 속성을 추가해야 합니다.",
  "1.http.password_autocomplete.invalid.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.password_autocomplete.invalid.attack.s0.o1": "{0}",
  "1.http.password_autocomplete.invalid.attack.s0.o2": "{0}",
  "1.http.password_autocomplete.invalid.result.s0.o0": "HTTP 응답 본문에서 type 속성 값이 password에 해당하는 input 태그 요소 중, autocomplete 속성 값이 다음과 같은 요소가 존재합니다.",
  "1.http.password_autocomplete.invalid.result.s0.o1": "{0}",
  "1.http.password_autocomplete.invalid.result.s1.o0": "따라서 해당 페이지에서 비밀번호를 자동 완성할 수 있습니다.",
  "1.http.password_autocomplete.invalid.solution.s0.o0": "Form 태그에서 비밀번호 자동 완성을 막기 위해서는 off 값을 가지는 autocomplete 속성을 Form 태그에 추가해야 합니다.",
  "1.http.password_autocomplete.invalid.solution.s0.o1": "또는, 폼 태그 내부에 암호 등의 중요한 값이 입력되는 INPUT 태그에 off 값을 가지는 autocomplete 속성을 추가해야 합니다.",
  "1.http.path_traversal.invocation.attack.s0.o0": "경로 조작은 공격자가 입력하는 값이 디렉토리 경로 문자열에 사용되어 공격자가 웹 애플리케이션의 최상단 디렉토리 밖의 파일 시스템에 접근하는 공격입니다.",
  "1.http.path_traversal.invocation.attack.s0.o1": "공격자는 파일 시스템에 접근하여 웹 애플리케이션의 코드나 시스템 파일 등의 중요 정보에 접근할 수 있습니다.",
  "1.http.path_traversal.invocation.attack.s0.o2": "예를 들어, 다음과 같이 URL에 있는 매개변수 값이 파일을 불러오는데 쓰이는 경우,",
  "1.http.path_traversal.invocation.attack.s1.o0": "{0}",
  "1.http.path_traversal.invocation.attack.s2.o0": "다음과 같이 대부분의 파일 시스템이 상위 디렉토리의 경로를 나타내는데 쓰는 '../'을 사용하여 웹 애플리케이션의 최상단 디렉토리 밖에 있는 파일에 접근할 수 있습니다.",
  "1.http.path_traversal.invocation.attack.s3.o0": "{0}",
  "1.http.path_traversal.invocation.attack.s4.o0": "이러한 경로 조작이 가능한지를 확인하기 위해, 경로 조작을 위한 {0} 공격 문자열을 담은 HTTP 요청을 다음과 같이 보냈습니다.",
  "1.http.path_traversal.invocation.attack.s5.o0": "{0}",
  "1.http.path_traversal.invocation.attack.s5.o1": "{0}",
  "1.http.path_traversal.invocation.result.s0.o0": "서버 내에서 파일 시스템 접근을 위한 {0} API가 호출되었습니다.",
  "1.http.path_traversal.invocation.solution.s0.o0": "경로 조작을 막기 위해서는 사용자 입력을 파일 시스템의 파일 및 디렉토리 접근에 사용하지 말아야 합니다.",
  "1.http.path_traversal.invocation.solution.s0.o1": "사용자 입력을 사용해야 한다면, 사용자 입력이 경로의 전체에 적용되지 못하게 해야 하며, 사용자 입력의 유효성을 검사해야 합니다.",
  "1.http.path_traversal.invocation.solution.s0.o2": "또한, JAVA의 URI.normalize()와 같이 경로 조작이 가능한 값을 인코딩하는 함수를 사용하여 사용자 입력을 수정한 후에 사용해야 합니다.",
  "1.http.path_traversal.match.attack.s0.o0": "경로 조작은 공격자가 입력하는 값이 디렉토리 경로 문자열에 사용되어 공격자가 웹 애플리케이션의 최상단 디렉토리 밖의 파일 시스템에 접근하는 공격입니다.",
  "1.http.path_traversal.match.attack.s0.o1": "공격자는 파일 시스템에 접근하여 웹 애플리케이션의 코드나 시스템 파일 등의 중요 정보에 접근할 수 있습니다.",
  "1.http.path_traversal.match.attack.s0.o2": "예를 들어, 다음과 같이 URL에 있는 매개변수 값이 파일을 불러오는데 쓰이는 경우,",
  "1.http.path_traversal.match.attack.s1.o0": "{0}",
  "1.http.path_traversal.match.attack.s2.o0": "다음과 같이 대부분의 파일 시스템이 상위 디렉토리의 경로를 나타내는데 쓰는 '../'을 사용하여 웹 애플리케이션의 최상단 디렉토리 밖에 있는 파일에 접근할 수 있습니다.",
  "1.http.path_traversal.match.attack.s3.o0": "{0}",
  "1.http.path_traversal.match.attack.s4.o0": "이러한 경로 조작이 가능한지를 확인하기 위해, 경로 조작을 위한 {0} 공격 문자열을 담은 HTTP 요청을 다음과 같이 보냈습니다.",
  "1.http.path_traversal.match.attack.s5.o0": "{0}",
  "1.http.path_traversal.match.attack.s5.o1": "{0}",
  "1.http.path_traversal.match.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.path_traversal.match.result.s1.o0": "{0}",
  "1.http.path_traversal.match.result.s2.o0": "{0} 공격 문자열에 의해 경로가 조작되어 HTTP 응답에 파일 내용이 포함되었음을 확인할 수 있습니다.",
  "1.http.path_traversal.match.solution.s0.o0": "경로 조작을 막기 위해서는 사용자 입력을 파일 시스템의 파일 및 디렉토리 접근에 사용하지 말아야 합니다.",
  "1.http.path_traversal.match.solution.s0.o1": "사용자 입력을 사용해야 한다면, 사용자 입력이 경로의 전체에 적용되지 못하게 해야 하며, 사용자 입력의 유효성을 검사해야 합니다.",
  "1.http.path_traversal.match.solution.s0.o2": "또한, JAVA의 URI.normalize()와 같이 경로 조작이 가능한 값을 인코딩하는 함수를 사용하여 사용자 입력을 수정한 후에 사용해야 합니다.",
  "1.http.phf_command_execution.phf.attack.s0.o0": "PHF CGI 원격 명령 실행 취약점을 검출하기 위해 {0} 경로로 HTTP 요청을 보냈습니다.",
  "1.http.phf_command_execution.phf.attack.s1.o0": "HTTP 요청은 다음과 같습니다.",
  "1.http.phf_command_execution.phf.attack.s2.o0": "{0}",
  "1.http.phf_command_execution.phf.attack.s2.o1": "{0}",
  "1.http.phf_command_execution.phf.result.s0.o0": "PHF CGI 원격 명령 실행 취약점은 CGI 프로그램인 PHF의 'escape_shell_cmd()' 함수를 사용하여 사용자의 운영 체제에서 명령어를 실행하는 것을 목적으로 하는 공격입니다.",
  "1.http.phf_command_execution.phf.result.s1.o0": "HTTP 요청에 대한 HTTP 응답 메시지는 다음과 같습니다.",
  "1.http.phf_command_execution.phf.result.s2.o0": "{0}",
  "1.http.phf_command_execution.phf.result.s3.o0": "위 HTTP 응답 메시지에서 {0} 패턴의 시스템 정보가 노출되었습니다.",
  "1.http.phf_command_execution.phf.solution.s0.o0": "이 취약점을 해결하기 위해서 다음과 같은 지침을 따르세요.",
  "1.http.phf_command_execution.phf.solution.s1.o0": "PHF와 같이 'escape_shell_cmd()' 함수를 사용하는 취약한 CGI 프로그램을 사용하지 않도록 합니다.",
  "1.http.phf_command_execution.phf.solution.s2.o0": "사용이 불가피한 경우, 'escape_shell_cmd()' 함수를 사용하지 않도록 CGI 프로그램을 수정하세요.",
  "1.http.private_address_disclosure.pattern.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.private_address_disclosure.pattern.attack.s0.o1": "{0}",
  "1.http.private_address_disclosure.pattern.attack.s0.o2": "{0}",
  "1.http.private_address_disclosure.pattern.result.s0.o0": "HTTP 응답 본문에 다음과 같은 문자열이 존재합니다.",
  "1.http.private_address_disclosure.pattern.result.s0.o1": "{0}",
  "1.http.private_address_disclosure.pattern.result.s1.o0": "따라서 해당 페이지로부터 내부망 IP 주소 노출이 발생했습니다.",
  "1.http.private_address_disclosure.pattern.solution.s0.o0": "개별 IP 주소 노출을 막기 위해서는 웹 애플리케이션 내에 개별 IP 주소를 사용하지 않아야 합니다.",
  "1.http.private_address_disclosure.pattern.solution.s0.o1": "개별 IP 주소가 노출 될 가능성이 있는 서비스 배너나 디버그 메시지들을 검증해야 합니다.",
  "1.http.private_address_disclosure.pattern.solution.s0.o2": "개별 IP 주소를 사용해야 한다면, 개별 IP 주소를 다른 식별자로 변경하여 노출되어도 공격자가 사용할 수 없도록 해야 합니다.",
  "1.http.remote_file_include.execute.attack.s0.o0": "원격 파일 포함 취약점은 웹 애플리케이션이 파일을 업로드하거나 실행할 때 사용자 입력을 사용함으로써 발생하는 취약점입니다.",
  "1.http.remote_file_include.execute.attack.s0.o1": "공격자는 원격 파일 포함 취약점을 통해 악의적인 코드가 포함된 파일을 실행시켜 중요 정보를 탈취하거나 웹 애플리케이션의 비정상적인 동작을 야기합니다.",
  "1.http.remote_file_include.execute.attack.s0.o2": "웹 애플리케이션의 서버에 다음과 같이 원격 파일 포함 취약점인 코드가 있을 경우,",
  "1.http.remote_file_include.execute.attack.s1.o0": "{0}",
  "1.http.remote_file_include.execute.attack.s2.o0": "공격자는 다음과 같이 웹 애플리케이션의 서버에 악의적인 파일인 {0}을 포함시킬 수 있습니다.",
  "1.http.remote_file_include.execute.attack.s3.o0": "{0}",
  "1.http.remote_file_include.execute.attack.s4.o0": "이러한 원격 파일 포함 취약점을 검출하기 위해서 구글 링크가 포함된 HTTP 요청을 다음과 같이 보냈습니다.",
  "1.http.remote_file_include.execute.attack.s5.o0": "{0}",
  "1.http.remote_file_include.execute.attack.s5.o1": "{0}",
  "1.http.remote_file_include.execute.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.remote_file_include.execute.result.s1.o0": "{0}",
  "1.http.remote_file_include.execute.result.s2.o0": "HTTP 요청에 구글 페이지 내용이 포함되어 있음을 확인할 수 있습니다.",
  "1.http.remote_file_include.execute.solution.s0.o0": "원격 파일 포함 취약점을 없애기 위해서는 파일 업로드 및 실행에 사용자 입력을 사용하지 말아야 합니다.",
  "1.http.remote_file_include.execute.solution.s0.o1": "만약 사용자 입력을 사용해야 한다면, 사용자 인증을 강화하고 화이트리스트를 만들어 인증된 파일만 포함 및 실행하거나, 블랙리스트를 만들어 인증되지 않은 파일을 제외해야 합니다.",
  "1.http.remote_file_include.execute.solution.s0.o2": "이외에도 웹 방화벽을 통해 원격 파일의 업로드 자체를 막을 수 있습니다.",
  "1.http.resident_registration_number_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.resident_registration_number_disclosure.match.attack.s0.o1": "{0}",
  "1.http.resident_registration_number_disclosure.match.attack.s0.o2": "{0}",
  "1.http.resident_registration_number_disclosure.match.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.resident_registration_number_disclosure.match.result.s0.o1": "{0}",
  "1.http.resident_registration_number_disclosure.match.result.s1.o0": "HTTP 응답의 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.resident_registration_number_disclosure.match.result.s1.o1": "{0}",
  "1.http.resident_registration_number_disclosure.match.result.s1.o2": "해당 문자열은 주민등록번호에 해당합니다.",
  "1.http.resident_registration_number_disclosure.match.result.s2.o0": "분석 수행 결과, HTTP 응답 본문으로부터 주민등록번호를 발견했습니다.",
  "1.http.resident_registration_number_disclosure.match.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 주민등록번호를 탈취할 수 있습니다.",
  "1.http.resident_registration_number_disclosure.match.solution.s0.o0": "HTTP 응답 본문에 주민등록번호를 포함하지 않아야 합니다.",
  "1.http.resident_registration_number_disclosure.match.solution.s0.o1": "일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 주민등록번호 노출 여부를 점검해야 합니다.",
  "1.http.sensitive_information_in_error_pages.was.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.sensitive_information_in_error_pages.was.attack.s0.o1": "{0}",
  "1.http.sensitive_information_in_error_pages.was.attack.s0.o2": "{0}",
  "1.http.sensitive_information_in_error_pages.was.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.sensitive_information_in_error_pages.was.result.s0.o1": "{0}",
  "1.http.sensitive_information_in_error_pages.was.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.sensitive_information_in_error_pages.was.result.s1.o1": "{0}",
  "1.http.sensitive_information_in_error_pages.was.result.s2.o0": "분석 수행 결과, 대상 페이지는 {0} WAS(Web Application Server)의 오류 페이지이며, 해당 페이지에서의 중요 정보 노출을 확인했습니다.",
  "1.http.sensitive_information_in_error_pages.was.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 오류 페이지에 존재하는 중요 정보를 탈취할 수 있습니다.",
  "1.http.sensitive_information_in_error_pages.was.solution.s0.o0": "해당 페이지에서 발생하는 애플리케이션 오류를 수정해야 합니다.",
  "1.http.sensitive_information_in_error_pages.was.solution.s0.o1": "또는 오류 페이지에서 중요 정보가 노출되지 않도록 오류 페이지를 수정해야 합니다.",
  "1.http.sensitive_information_in_meta_tag.wp_version.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.sensitive_information_in_meta_tag.wp_version.attack.s0.o1": "{0}",
  "1.http.sensitive_information_in_meta_tag.wp_version.attack.s0.o2": "{0}",
  "1.http.sensitive_information_in_meta_tag.wp_version.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.sensitive_information_in_meta_tag.wp_version.result.s0.o1": "{0}",
  "1.http.sensitive_information_in_meta_tag.wp_version.result.s1.o0": "HTTP 응답의 본문 중, 본문의 {0} 태그의 {1} 속성 값에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.sensitive_information_in_meta_tag.wp_version.result.s1.o1": "{0}",
  "1.http.sensitive_information_in_meta_tag.wp_version.result.s1.o2": "해당 문자열은 WordPress 버전 정보에 해당합니다.",
  "1.http.sensitive_information_in_meta_tag.wp_version.result.s2.o0": "분석 수행 결과, 응답 본문의 {0} 태그로부터 민감한 정보에 해당하는 WordPress 버전 정보를 발견했습니다.",
  "1.http.sensitive_information_in_meta_tag.wp_version.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 서버에 대한 중요 정보를 얻을 수 있습니다.",
  "1.http.sensitive_information_in_meta_tag.wp_version.solution.s0.o0": "서버 구성 요소의 버전 정보를 노출하지 않아야 합니다.",
  "1.http.sensitive_information_in_meta_tag.wp_version.solution.s0.o1": "{0} 태그의 경우 외부 사이트에서 참조할 수 있으므로, 민감한 정보를 포함하지 않아야 합니다.",
  "1.http.server_information_included_in_http_headers.included.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.server_information_included_in_http_headers.included.attack.s0.o1": "{0}",
  "1.http.server_information_included_in_http_headers.included.attack.s0.o2": "{0}",
  "1.http.server_information_included_in_http_headers.included.result.s0.o0": "HTTP 응답 헤더에 다음과 같이 서버의 버전 정보가 포함되어 있습니다.",
  "1.http.server_information_included_in_http_headers.included.result.s0.o1": "{0}",
  "1.http.server_information_included_in_http_headers.included.solution.s0.o0": "일반적으로 서버의 설정을 변경하여 버전 정보가 HTTP 응답 헤더에 포함되지 않도록 제한할 수 있습니다.",
  "1.http.server_information_included_in_http_headers.included.solution.s1.o0": "PHP의 경우 php.ini 파일의 설정을 아래와 같이 조정합니다.",
  "1.http.server_information_included_in_http_headers.included.solution.s1.o1": "{0}",
  "1.http.server_information_included_in_http_headers.included.solution.s2.o0": "Apache의 경우 httpd.conf 파일의 설정을 아래와 같이 조정합니다.",
  "1.http.server_information_included_in_http_headers.included.solution.s2.o1": "{0}",
  "1.http.server_information_included_in_http_headers.included.solution.s3.o0": "Nginx의 경우 fastcgi_hide_header 모듈을 사용하여 헤더를 숨기도록 지정합니다.",
  "1.http.server_information_included_in_http_headers.included.solution.s3.o1": "{0}",
  "1.http.server_information_included_in_http_headers.included.solution.s4.o0": "IIS의 경우 web.config 파일의 설정을 아래와 같이 조정합니다.",
  "1.http.server_information_included_in_http_headers.included.solution.s4.o1": "{0}",
  "1.http.server_information_included_in_http_headers.included.solution.s4.o2": "{0}",
  "1.http.server_side_include.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.server_side_include.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.server_side_include.custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.server_side_include.custom.attack.s0.o1": "{0}",
  "1.http.server_side_include.custom.attack.s0.o2": "설정한 값은 사용자 정의 공격 문자열에 해당합니다.",
  "1.http.server_side_include.custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.server_side_include.custom.attack.s1.o1": "{0}",
  "1.http.server_side_include.custom.attack.s1.o2": "{0}",
  "1.http.server_side_include.custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.server_side_include.custom.result.s0.o1": "{0}",
  "1.http.server_side_include.custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.server_side_include.custom.result.s1.o1": "{0}",
  "1.http.server_side_include.custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "1.http.server_side_include.custom.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "1.http.server_side_include.custom.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.http.server_side_include.exec_unix.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.server_side_include.exec_unix.attack.s0.o1": "{0}",
  "1.http.server_side_include.exec_unix.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.server_side_include.exec_unix.attack.s1.o1": "{0}",
  "1.http.server_side_include.exec_unix.attack.s1.o2": "{0}",
  "1.http.server_side_include.exec_unix.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.server_side_include.exec_unix.result.s0.o1": "{0}",
  "1.http.server_side_include.exec_unix.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.server_side_include.exec_unix.result.s1.o1": "{0}",
  "1.http.server_side_include.exec_unix.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값을 포함하는 SSI {0} 명령문이 서버에서 실행되었음을 발견했습니다.",
  "1.http.server_side_include.exec_unix.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 해당 SSI 명령문을 통해 UNIX 계열 운영 체제 기반 서버의 루트 경로에 존재하는 파일 목록을 열람할 수 있습니다.",
  "1.http.server_side_include.exec_unix.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "1.http.server_side_include.exec_unix.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.http.server_side_include.exec_win.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.server_side_include.exec_win.attack.s0.o1": "{0}",
  "1.http.server_side_include.exec_win.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.server_side_include.exec_win.attack.s1.o1": "{0}",
  "1.http.server_side_include.exec_win.attack.s1.o2": "{0}",
  "1.http.server_side_include.exec_win.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.server_side_include.exec_win.result.s0.o1": "{0}",
  "1.http.server_side_include.exec_win.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "1.http.server_side_include.exec_win.result.s1.o1": "{0}",
  "1.http.server_side_include.exec_win.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값을 포함하는 SSI {0} 명령문이 서버에서 실행되었음을 발견했습니다.",
  "1.http.server_side_include.exec_win.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 해당 SSI 명령문을 통해 Windows 계열 운영 체제 기반 서버의 루트 경로에 존재하는 파일 목록을 열람할 수 있습니다.",
  "1.http.server_side_include.exec_win.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "1.http.server_side_include.exec_win.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.http.server_side_include.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.server_side_include.invocation.attack.s0.o1": "{0}",
  "1.http.server_side_include.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.server_side_include.invocation.attack.s1.o1": "{0}",
  "1.http.server_side_include.invocation.attack.s1.o2": "{0}",
  "1.http.server_side_include.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "1.http.server_side_include.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "1.http.server_side_include.invocation.result.s0.o2": "{0}",
  "1.http.server_side_include.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "1.http.server_side_include.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "1.http.server_side_include.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되고, 해당 메소드를 통해 SSI {0} 명령문이 실행됩니다.",
  "1.http.server_side_include.invocation.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "1.http.server_side_include.invocation.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "1.http.session_id_url.url.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.session_id_url.url.attack.s0.o1": "{0}",
  "1.http.session_id_url.url.attack.s0.o2": "{0}",
  "1.http.session_id_url.url.result.s0.o0": "HTTP 요청의 URL이 다음과 같은 문자열을 포함합니다.",
  "1.http.session_id_url.url.result.s0.o1": "{0}",
  "1.http.session_id_url.url.result.s1.o0": "따라서 HTTP 요청으로 인하여 세션 정보 노출이 발생할 수 있습니다.",
  "1.http.session_id_url.url.solution.s0.o0": "세션 토큰의 노출을 막기 위해서는 가장 먼저, URL에 노출되지 않도록 만들어야 합니다.",
  "1.http.session_id_url.url.solution.s0.o1": "또한, 노출된 경우 손해를 방지하기 위해 세션의 만료기한을 두어 일정 시간 등의 조건이 되면 세션이 만료되도록 해야 합니다.",
  "1.http.snoop_disclosure.request.attack.s0.o0": "Snoop 서블릿 정보 노출 취약점은 IBM WebSphere 또는 Apache Tomcat 에서 사용되고 있는 Snoop 서블릿에서 정보가 노출되는 취약점입니다.",
  "1.http.snoop_disclosure.request.attack.s1.o0": "Snoop 서블릿은 HTTP 요청 변조 등에 의해 서버의 호스트 정보, 서버 타입, 서버 버전, 경로 등의 중요 정보가 유출되는 취약점을 가지고 있습니다.",
  "1.http.snoop_disclosure.request.attack.s1.o1": "이러한 Snoop 서블릿을 사용한 Apache Tomcat 3.0, 3.1과 IBM WebSphere 8.0 이하 버전도 마찬가지 취약점을 가지고 있습니다.",
  "1.http.snoop_disclosure.request.attack.s2.o0": "공격자는 이러한 취약점을 통해 서버 정보를 탈취하여 다른 공격에 사용할 수 있습니다.",
  "1.http.snoop_disclosure.request.attack.s3.o0": "Snoop 서블릿 정보 노출 취약점을 검출하기 위해 {0} Snoop 서블릿 경로를 포함한 다음의 HTTP 요청을 보냈습니다.",
  "1.http.snoop_disclosure.request.attack.s4.o0": "{0}",
  "1.http.snoop_disclosure.request.attack.s4.o1": "{0}",
  "1.http.snoop_disclosure.request.result.s0.o0": "Snoop 서블릿 정보 노출 취약점을 검출하기 위해 보낸 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.snoop_disclosure.request.result.s1.o0": "{0}",
  "1.http.snoop_disclosure.request.result.s2.o0": "위의 HTTP 응답에 Snoop 정보 노출을 의미하는 {0} 문자열이 포함되었음을 확인할 수 있습니다.",
  "1.http.snoop_disclosure.request.solution.s0.o0": "Snoop 서블릿 정보 노출 취약점을 해결하기 위해서는 취약한 Snoop 서블릿과 이러한 Snoop 서블릿을 사용하고 있는 웹 서버의 사용을 피해야 합니다.",
  "1.http.sql_injection.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청에 대하여 {0} 매개변수의 값을 다음과 같이 설정했습니다. {1}",
  "1.http.sql_injection.invocation.attack.s1.o0": "매개변수의 값을 설정한 후, 다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.sql_injection.invocation.attack.s2.o0": "{0}",
  "1.http.sql_injection.invocation.result.s0.o0": "트루스캔을 통한 분석 결과, 서버 내에서 SQL 쿼리문 처리를 위한 {0} API가 호출되었습니다.",
  "1.http.sql_injection.invocation.result.s1.o0": "해당 API의 인수는 처리할 SQL 쿼리문을 의미하며, 해당 인수의 값은 {0} 입니다.",
  "1.http.sql_injection.invocation.result.s2.o0": "해당 인수 값으로 인해 파일 SQL 삽입 취약점을 검출했습니다.",
  "1.http.sql_injection.invocation.solution.s0.o0": "사용자로부터 입력 받은 외부 데이터를 사용하여 SQL 쿼리문을 형성하는 경우, 해당 데이터에 대하여 검증이 필요합니다.",
  "1.http.sql_injection.invocation.solution.s1.o0": "사용자 입력 데이터 중 작은 따옴표(')와 같은 일부 문자가 존재하는지 검증하고, 해당하는 모든 문자를 다른 문자로 바꿀 수 있습니다.",
  "1.http.sql_injection.invocation.solution.s2.o0": "다음과 같이 예를 들 수 있습니다.",
  "1.http.sql_injection.invocation.solution.s3.o0": "{0}",
  "1.http.sql_injection.invocation.solution.s4.o0": "또는 SQL 쿼리문을 인자화하여 사용할 수 있습니다.",
  "1.http.temp_file_disclosure.access.attack.s0.o0": "디렉토리 내에 있는 웹 서비스에 불필요한 확장자가 존재하는지 확인하기 위해 {0} 공격 문자열이 포함된 아래의 URL에 접근을 시도했습니다.",
  "1.http.temp_file_disclosure.access.attack.s0.o1": "{0}",
  "1.http.temp_file_disclosure.access.result.s0.o0": "공격 문자열이 포함된 URL 접근 시도에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.temp_file_disclosure.access.result.s0.o1": "{0}",
  "1.http.temp_file_disclosure.access.result.s2.o0": "위 HTTP 응답 결과를 통해서 임시 파일 경로가 포함된 URL에 접근됨을 확인할 수 있습니다.",
  "1.http.temp_file_disclosure.access.solution.s0.o0": "임시 파일 노출 취약점을 해결하는 가장 좋은 방법은 불필요한 임시 파일을 제거하는 것입니다.",
  "1.http.temp_file_disclosure.access.solution.s0.o1": "임시 파일이 필요한 경우에는 권한이 없는 임의의 사용자가 임시 파일에 접근하지 못하도록 막아야 합니다.",
  "1.http.temp_file_disclosure.access.solution.s0.o2": "또한, Django, Spring 등의 웹 프레임워크를 사용하면 URL 패턴과 컨트롤러를 매핑하여 요청을 처리하므로 임시 파일이 노출되지 않도록 사전에 예방할 수 있습니다.",
  "1.http.tomcat_examples.access.attack.s0.o0": "Apache Tomcat 예제 취약점은 크로스 사이트 스크립팅 취약점을 가지고 있는 Apache Tomcat의 JSP 예제들이 노출되는 취약점입니다.",
  "1.http.tomcat_examples.access.attack.s1.o0": "Apache Tomcat의 /examples/ 아래에는 다양한 예제 코드들과 실행 환경이 제공되어 있습니다.",
  "1.http.tomcat_examples.access.attack.s1.o1": "하지만 이러한 예제들은 보안을 고려하지 않을 상태로 구현되어 있기 때문에 공격자가 이러한 예제들을 통해 크로스 사이트 스크립팅 등의 공격을 수행할 수 있습니다.",
  "1.http.tomcat_examples.access.attack.s2.o0": "이와 같이 보안에 취약한 Apache Tomcat 예제에 접근이 가능한지 확인하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "1.http.tomcat_examples.access.attack.s3.o0": "{0}",
  "1.http.tomcat_examples.access.attack.s3.o1": "{0}",
  "1.http.tomcat_examples.access.result.s0.o0": "Apache Tomcat 예제 접근을 위한 HTTP 요청에 대해 다음과 같은 HTTP 응답이 왔습니다.",
  "1.http.tomcat_examples.access.result.s1.o0": "{0}",
  "1.http.tomcat_examples.access.result.s2.o0": "위의 HTTP 응답 메시지를 통해 취약한 Apache Tomcat 예제 중에 하나인 세션 예제에 접근 가능함을 확인할 수 있습니다.",
  "1.http.tomcat_examples.access.solution.s0.o0": "Apache Tomcat 예제 취약점을 막기 위해서는 기본적으로 Apache Tomcat 기본 페이지에 대한 접근을 차단해야 합니다.",
  "1.http.unlimited_password_error.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.unlimited_password_error.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "1.http.unlimited_password_error.five_times.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.unlimited_password_error.five_times.attack.s0.o1": "{0}",
  "1.http.unlimited_password_error.five_times.attack.s0.o2": "{0}",
  "1.http.unlimited_password_error.five_times.attack.s1.o0": "로그인 시도를 위한 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.http.unlimited_password_error.five_times.attack.s1.o1": "{0}",
  "1.http.unlimited_password_error.five_times.attack.s1.o2": "{0}",
  "1.http.unlimited_password_error.five_times.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.http.unlimited_password_error.five_times.attack.s2.o1": "{0}",
  "1.http.unlimited_password_error.five_times.attack.s3.o0": "위와 같은 과정을 총 5번 반복했습니다.",
  "1.http.unlimited_password_error.five_times.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "1.http.unlimited_password_error.five_times.result.s0.o1": "{0}",
  "1.http.unlimited_password_error.five_times.result.s0.o2": "해당 HTTP 응답 본문에서 {0} 타입의 {1} 웹 요소를 발견했으며, 해당 웹 요소의 이름은 {2}입니다.",
  "1.http.unlimited_password_error.five_times.result.s0.o3": "발견한 웹 요소로 인해 해당 페이지에서 로그인이 가능함을 확인했습니다.",
  "1.http.unlimited_password_error.five_times.result.s1.o0": "로그인 시도를 위한 5번의 HTTP 요청에 대한 HTTP 응답 본문을 각각 비교했습니다.",
  "1.http.unlimited_password_error.five_times.result.s2.o0": "HTTP 응답 본문 비교 결과, 로그인 시도를 위한 HTTP 요청마다 동일한 HTTP 응답 본문을 수신했음을 확인했습니다.",
  "1.http.unlimited_password_error.five_times.result.s2.o1": "따라서 서버에서 클라이언트의 반복적인 로그인 시도를 제한하지 않게 됩니다.",
  "1.http.unlimited_password_error.five_times.solution.s0.o0": "특정 클라이언트의 인증 오류가 지나치게 연속적으로 발생하는 경우, 해당 클라이언트의 인증 시도를 제한해야 합니다.",
  "1.http.unlimited_password_error.five_times.solution.s0.o1": "최대 5번의 인증 오류 발생 이후에는 추가적인 인증 과정을 요구해야 합니다.",
  "1.http.weak_password.brute_force.attack.s0.o0": "취약한 비밀번호 취약점은 길이가 충분하지 않거나 지나치게 일반적인 비밀번호를 사용하여 공격자가 비밀번호를 유추할 수 있는 취약점입니다.",
  "1.http.weak_password.brute_force.attack.s1.o0": "{0}, {1}, {2}와 같은 비밀번호는 지나치게 일반적인 암호이어서 쉽게 유추할 수 있습니다.",
  "1.http.weak_password.brute_force.attack.s1.o1": "공격자는 이러한 암호를 유추하여 시도할 수 있으며, 인증에 성공하면 유저의 권한으로 서버에 접근할 수 있습니다.",
  "1.http.weak_password.brute_force.attack.s2.o0": "취약한 비밀번호 취약점을 검출하기 위해 {0} 매개변수에 {1} 공격 문자열을 포함한 HTTP 요청을 다음과 같이 보냈습니다.",
  "1.http.weak_password.brute_force.attack.s3.o0": "{0}",
  "1.http.weak_password.brute_force.attack.s3.o1": "{0}",
  "1.http.weak_password.brute_force.result.s0.o0": "취약한 비밀번호 취약점 검출을 위해 보낸 HTTP 요청에 대하여 다음과 같은 HTTP 응답이 왔습니다.",
  "1.http.weak_password.brute_force.result.s1.o0": "{0}",
  "1.http.weak_password.brute_force.result.s2.o0": "위 HTTP 응답 메시지를 통해 인증에 통과했음을 유추할 수 있습니다.",
  "1.http.weak_password.brute_force.solution.s0.o0": "취약한 비밀번호 취약점을 해결하기 위해서는 사용자가 충분히 긴 길이의 비밀번호를 사용하게 만들어야 합니다.",
  "1.http.weak_password.brute_force.solution.s0.o1": "또한, 알파벳 대소문자, 숫자, 특수문자 등을 조합하게 만들어 일반적이지 않은 비밀번호를 사용하게 만들어야 합니다.",
  "1.http.web_xml_disclosure.webxml.attack.s0.o0": "설정 파일 노출 취약점은 웹 애플리케이션에 대한 정보를 담고 있는 설정 파일이 노출되는 취약점입니다.",
  "1.http.web_xml_disclosure.webxml.attack.s1.o0": "설정 파일 중에서 WEB-INF 내의 web.xml 파일은 웹 애플리케이션의 배포 설명자로, 서버가 처음 로딩될 때 읽어들여 웹 애플리케이션의 환경을 설정합니다.",
  "1.http.web_xml_disclosure.webxml.attack.s1.o1": "web.xml에는 서블릿 콘텍스트의 초기 매개변수, 세션의 유효시간, 서블릿/JSP에 대한 정의, 서블릿/JSP 매핑, MIME 타입 매핑, 오류 페이지 처리, 리스너/필터 설정 등의 정보가 작성됩니다.",
  "1.http.web_xml_disclosure.webxml.attack.s2.o0": "이렇듯 web.xml에 서버의 중요 정보가 포함되어 있기 때문에 기본적으로 접근할 수 없어야 합니다.",
  "1.http.web_xml_disclosure.webxml.attack.s3.o0": "설정 파일 노출 취약점 검출을 위해 {0} 경로를 포함한 다음의 HTTP 요청을 보냈습니다.",
  "1.http.web_xml_disclosure.webxml.attack.s4.o0": "{0}",
  "1.http.web_xml_disclosure.webxml.attack.s4.o1": "{0}",
  "1.http.web_xml_disclosure.webxml.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.http.web_xml_disclosure.webxml.result.s1.o0": "{0}",
  "1.http.web_xml_disclosure.webxml.result.s2.o0": "HTTP 응답이 정상적으로 수신됨을 확인할 수 있습니다.",
  "1.http.web_xml_disclosure.webxml.solution.s0.o0": "설정 파일 노출 취약점을 막기 위해서는 해당 파일이 있는 경로에 접근하지 못하게 막아야 합니다.",
  "1.http.web_xml_disclosure.webxml.solution.s1.o0": "또한, 사용자 입력이 설정 파일 경로로 접근되지 못하도록 해야 하며, 사용자 입력을 사용해야 하는 경우에는 값을 인코딩하거나 검증한 후에 사용해야 합니다.",
  "1.http.xitami_information_leakage.testcgi.attack.s0.o0": "Xitami Web Server 정보 유출 취약점을 검출하기 위해 {0} 경로로 HTTP 요청을 보냈습니다.",
  "1.http.xitami_information_leakage.testcgi.attack.s1.o0": "HTTP 요청은 다음과 같습니다.",
  "1.http.xitami_information_leakage.testcgi.attack.s2.o0": "{0}",
  "1.http.xitami_information_leakage.testcgi.attack.s2.o1": "{0}",
  "1.http.xitami_information_leakage.testcgi.result.s0.o0": "Xitami Web Server 정보 유출 취약점은 CXitami Web Server 정보 유출 취약점은 2.5b 버전 이하의 Xitami에 포함된 tesgcgi.exe 파일의 경로가 기본값인 경우, 해당 프로그램을 임의의 사용자가 실행할 수 있는 취약점입니다.",
  "1.http.xitami_information_leakage.testcgi.result.s1.o0": "HTTP 요청에 대한 HTTP 응답 메시지는 다음과 같습니다.",
  "1.http.xitami_information_leakage.testcgi.result.s2.o0": "{0}",
  "1.http.xitami_information_leakage.testcgi.result.s3.o0": "위 HTTP 응답 메시지에서 예측 가능한 패턴을 발견했습니다.",
  "1.http.xitami_information_leakage.testcgi.solution.s0.o0": "이 취약점을 해결하기 위해서 다음과 같은 지침을 따르세요.",
  "1.http.xitami_information_leakage.testcgi.solution.s1.o0": "testcgi.exe 파일을 제거하세요.",
  "1.http.xitami_information_leakage.testcgi.solution.s2.o0": "혹은 해당 파일의 기본 설치 위치가 아닌 다른 위치에 해당 파일을 위치시켜야 합니다.",
  "1.http.xss.reflected.attack.s0.o0": "크로스 사이트 스크립팅(xss) 취약점은 웹 사이트에 대하여 악성 스크립트를 삽입할 수 있는 취약점입니다.",
  "1.http.xss.reflected.attack.s0.o1": "웹 애플리케이션 서버가 외부에서 입력되는 값을 검증 없이 사용하면, 공격자가 악의적인 스크립트를 입력하여 웹 애플리케이션 사용자의 정보를 탈취하거나 웹 애플리케이션이 의도치 않은 동작을 하도록 만들 수 있습니다.",
  "1.http.xss.reflected.attack.s0.o2": "비지속적 크로스사이트 스크립팅은 공격자가 입력한 악의적인 스크립트가 별도의 검증 없이 즉시 웹 페이지에 표시되는 취약점입니다.",
  "1.http.xss.reflected.attack.s0.o3": "이러한 비지속적 크로스 사이트 스크립팅 취약점을 검출하기 위해 {0} 파라미터에 {1} 공격 문자열을 포함한 HTTP 요청을 다음과 같이 보냈습니다.",
  "1.http.xss.reflected.attack.s1.o0": "{0}",
  "1.http.xss.reflected.attack.s1.o1": "{0}",
  "1.http.xss.reflected.result.s0.o0": "비지속적 크로스 사이트 스크립팅은 에러 메시지, 검색 결과, 기타 입력 데이터를 포함한 HTTP 응답 메시지 등으로 서버에 입력한 스크립트가 돌아옵니다.",
  "1.http.xss.reflected.result.s0.o1": "HTTP 요청에 대한 HTTP 응답 메시지는 다음과 같습니다.",
  "1.http.xss.reflected.result.s1.o0": "{0}",
  "1.http.xss.reflected.result.s2.o0": "위 HTTP 응답 메시지에서 {0} 공격 문자열이 포함되어 있는 것을 확인할 수 있습니다.",
  "1.http.xss.reflected.solution.s0.o0": "해결 방법은 다음과 같습니다.",
  "1.http.xss.reflected.solution.s1.o0": "비 지속적 크로스 사이트 스크립팅 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 검증 및 필터링해야 합니다.",
  "1.http.xss.reflected.solution.s2.o0": "기본적으로 태그의 이름이나 태그 속성의 이름, <script> 태그 사이, <style> 태그 사이 및 HTML 주석 사이와 허용되지 않은 위치에 사용자로부터 입력 받은 외부 데이터를 사용하지 않아야 합니다.",
  "1.http.xss.reflected.solution.s3.o0": "또는, 사용자로부터 입력 받은 외부 데이터를 사용해야 하는 경우에는 다음과 같이 데이터를 인코딩하여 사용하여야 합니다.",
  "1.http.xss.reflected.solution.s4.o0": "웹 페이지 요소 사용자로부터 입력 받은 외부 데이터를 사용할 때의 인코딩",
  "1.http.xss.reflected.solution.s4.o1": "{0}",
  "1.http.xss.reflected.solution.s5.o0": "이외에도 사용자로부터 입력 받은 외부 데이터를 HTML 속성값이나 URL 매개변수, JavaScript, CSS 값 등에 사용할 때에도 인코딩이 필요합니다.",
  "1.http.xss.reflected.solution.s6.o0": "Java :",
  "1.http.xss.reflected.solution.s6.o1": "{0}",
  "1.http.xss.reflected.solution.s7.o0": "JSP :",
  "1.http.xss.reflected.solution.s7.o1": "{0}",
  "1.http.xss.reflected.solution.s8.o0": "PHP :",
  "1.http.xss.reflected.solution.s8.o1": "{0}",
  "1.socket.ajp_enable.custom.attack.s0.o0": "TCP 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.ajp_enable.custom.attack.s0.o0 ": " TCP 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.ajp_enable.custom.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.ajp_enable.custom.attack.s0.o1 ": " 연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.ajp_enable.custom.attack.s0.o2": "포트 번호 {0}는 사용자 정의 포트 번호에 해당하는 포트 번호입니다.",
  "1.socket.ajp_enable.custom.attack.s0.o2 ": " 포트 번호 {0}는 사용자 정의 포트 번호에 해당하는 포트 번호입니다.",
  "1.socket.ajp_enable.custom.attack.s0.o3": "서버와 성공적으로 연결했습니다.",
  "1.socket.ajp_enable.custom.attack.s0.o3 ": " 서버와 성공적으로 연결했습니다.",
  "1.socket.ajp_enable.custom.attack.s1.o0": "다음과 같은 메시지를 TCP 소켓을 통해 전송했습니다.",
  "1.socket.ajp_enable.custom.attack.s1.o0 ": " 다음과 같은 메시지를 TCP 소켓을 통해 전송했습니다.",
  "1.socket.ajp_enable.custom.attack.s1.o1": "{0}",
  "1.socket.ajp_enable.custom.result.s0.o0": "메시지 전송 후, 서버로부터 다음과 같은 메시지를 TCP 소켓을 통해 수신했습니다.",
  "1.socket.ajp_enable.custom.result.s0.o0 ": "메시지를 전송한 후, 서버로부터 다음과 같은 메시지를 TCP 소켓을 통해 수신했습니다.",
  "1.socket.ajp_enable.custom.result.s0.o1": "{0}",
  "1.socket.ajp_enable.custom.result.s1.o0": "수신한 메시지에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.ajp_enable.custom.result.s1.o0 ": " 수신한 메시지에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.ajp_enable.custom.result.s1.o1": "{0}",
  "1.socket.ajp_enable.custom.result.s2.o0": "분석 결과, 서버로 전송한 AJP ping에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.ajp_enable.custom.result.s2.o0 ": " 분석 결과, 서버로 전송한 AJP ping에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.ajp_enable.custom.result.s2.o1": "따라서 {0} 포트를 통해 서버의 AJP 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개됩니다.",
  "1.socket.ajp_enable.custom.result.s2.o1 ": " 이는 {0} 포트를 통해 서버의 AJP 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개되어 있음을 의미합니다.",
  "1.socket.ajp_enable.custom.solution.s0.o0": "AJP 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.ajp_enable.custom.solution.s0.o0 ": " AJP 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.ajp_enable.custom.solution.s0.o1": "방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.ajp_enable.custom.solution.s0.o1 ": " 방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.ajp_enable.default.attack.s0.o0": "TCP 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.ajp_enable.default.attack.s0.o0 ": " TCP 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.ajp_enable.default.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.ajp_enable.default.attack.s0.o1 ": " 연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.ajp_enable.default.attack.s0.o2": "서버와 성공적으로 연결했습니다.",
  "1.socket.ajp_enable.default.attack.s0.o2 ": " 서버와 성공적으로 연결했습니다.",
  "1.socket.ajp_enable.default.attack.s1.o0": "다음과 같은 메시지를 TCP 소켓을 통해 전송했습니다.",
  "1.socket.ajp_enable.default.attack.s1.o0 ": " 다음과 같은 메시지를 TCP 소켓을 통해 전송했습니다.",
  "1.socket.ajp_enable.default.attack.s1.o1": "{0}",
  "1.socket.ajp_enable.default.result.s0.o0": "메시지 전송 후, 서버로부터 다음과 같은 메시지를 TCP 소켓을 통해 수신했습니다.",
  "1.socket.ajp_enable.default.result.s0.o0 ": "메시지를 전송한 후, 서버로부터 다음과 같은 메시지를 TCP 소켓을 통해 수신했습니다.",
  "1.socket.ajp_enable.default.result.s0.o1": "{0}",
  "1.socket.ajp_enable.default.result.s1.o0": "수신한 메시지에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.ajp_enable.default.result.s1.o0 ": " 수신한 메시지에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.ajp_enable.default.result.s1.o1": "{0}",
  "1.socket.ajp_enable.default.result.s2.o0": "분석 결과, 서버로 전송한 AJP ping에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.ajp_enable.default.result.s2.o0 ": "분석 결과, 서버로 전송한 AJP ping에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.ajp_enable.default.result.s2.o1": "따라서 {0} 포트를 통해 서버의 AJP 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개됩니다.",
  "1.socket.ajp_enable.default.result.s2.o1 ": " 이는 {0} 포트를 통해 서버의 AJP 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개되어 있음을 의미합니다.",
  "1.socket.ajp_enable.default.solution.s0.o0": "AJP 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.ajp_enable.default.solution.s0.o0 ": " AJP 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.ajp_enable.default.solution.s0.o1": "방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.ajp_enable.default.solution.s0.o1 ": " 방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.ajp_enable.default.solution.s1.o0": "AJP 서비스 포트 번호의 경우, 기본 포트 번호를 포함한 기본 설정값을 사용하지 않아야 합니다.",
  "1.socket.ajp_enable.default.solution.s1.o0 ": " AJP 서비스 포트 번호의 경우, 기본 포트 번호를 포함한 기본 설정값을 사용하지 않아야 합니다.",
  "1.socket.ajp_enable.default.solution.s1.o1": "AJP 서비스의 포트 번호 기본 설정값인 {0} 대신 다른 포트 번호를 사용해야 합니다.",
  "1.socket.ajp_enable.default.solution.s1.o1 ": " AJP 서비스의 포트 번호 기본 설정값인 {0} 대신 다른 포트 번호를 사용해야 합니다.",
  "1.socket.ajp_enable.scanned.attack.s0.o0": "TCP 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.ajp_enable.scanned.attack.s0.o0 ": " TCP 소켓을 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.ajp_enable.scanned.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.ajp_enable.scanned.attack.s0.o1 ": " 연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.ajp_enable.scanned.attack.s0.o2": "서버와 성공적으로 연결했습니다.",
  "1.socket.ajp_enable.scanned.attack.s0.o2 ": " 서버와 성공적으로 연결했습니다.",
  "1.socket.ajp_enable.scanned.attack.s1.o0": "다음과 같은 메시지를 TCP 소켓을 통해 전송했습니다.",
  "1.socket.ajp_enable.scanned.attack.s1.o0 ": " 다음과 같은 메시지를 TCP 소켓을 통해 전송했습니다.",
  "1.socket.ajp_enable.scanned.attack.s1.o1": "{0}",
  "1.socket.ajp_enable.scanned.result.s0.o0": "메시지 전송 후, 서버로부터 다음과 같은 메시지를 TCP 소켓을 통해 수신했습니다.",
  "1.socket.ajp_enable.scanned.result.s0.o0 ": "메시지를 전송한 후, 서버로부터 다음과 같은 메시지를 TCP 소켓을 통해 수신했습니다.",
  "1.socket.ajp_enable.scanned.result.s0.o1": "{0}",
  "1.socket.ajp_enable.scanned.result.s1.o0": "수신한 메시지에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.ajp_enable.scanned.result.s1.o0 ": " 수신한 메시지에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.ajp_enable.scanned.result.s1.o1": "{0}",
  "1.socket.ajp_enable.scanned.result.s2.o0": "분석 결과, 서버로 전송한 AJP ping에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.ajp_enable.scanned.result.s2.o0 ": " 분석 결과, 서버로 전송한 AJP ping에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.ajp_enable.scanned.result.s2.o1": "따라서 {0} 포트를 통해 서버의 AJP 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개됩니다.",
  "1.socket.ajp_enable.scanned.result.s2.o1 ": " 이는 {0} 포트를 통해 서버의 AJP 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개되어 있음을 의미합니다.",
  "1.socket.ajp_enable.scanned.solution.s0.o0": "AJP 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.ajp_enable.scanned.solution.s0.o0 ": " AJP 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.ajp_enable.scanned.solution.s0.o1": "방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.ajp_enable.scanned.solution.s0.o1 ": " 방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s0.o0": "JMX 커넥터를 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s0.o0 ": " JMX 커넥터를 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s0.o1 ": " 연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s0.o2": "포트 번호 {0}는 사용자 정의 포트 번호에 해당하는 포트 번호입니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s0.o2 ": " 포트 번호 {0}는 사용자 정의 포트 번호에 해당하는 포트 번호입니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s0.o3": "서버와 성공적으로 연결했습니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s0.o3 ": " 서버와 성공적으로 연결했습니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s1.o0": "오브젝트 이름이 {0}인 MBean의 {1} 속성값에 대한 쿼리를 JMX 커넥터를 통해 전송했습니다.",
  "1.socket.jmx_rmi_enable.custom.attack.s1.o0 ": " 오브젝트 이름이 {0}인 MBean의 {1} 속성값에 대한 쿼리를 JMX 커넥터를 통해 전송했습니다.",
  "1.socket.jmx_rmi_enable.custom.result.s0.o0": "쿼리 수행 후, 서버로부터 다음과 같은 응답을 JMX 커넥터를 통해 수신했습니다.",
  "1.socket.jmx_rmi_enable.custom.result.s0.o0 ": " 쿼리를 수행한 후, 서버로부터 다음과 같은 응답을 JMX 커넥터를 통해 수신했습니다.",
  "1.socket.jmx_rmi_enable.custom.result.s0.o1": "{0}",
  "1.socket.jmx_rmi_enable.custom.result.s1.o0": "수신한 응답에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.jmx_rmi_enable.custom.result.s1.o0 ": " 수신한 응답에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.jmx_rmi_enable.custom.result.s1.o1": "{0}",
  "1.socket.jmx_rmi_enable.custom.result.s2.o0": "분석 결과, 서버로 전송한 {0} 속성값 쿼리에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.jmx_rmi_enable.custom.result.s2.o0 ": " 분석 결과, 서버로 전송한 {0} 속성값 쿼리에 대해 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.jmx_rmi_enable.custom.result.s2.o1": "따라서 {0} 포트를 통해 서버의 JMX/RMI 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개됩니다.",
  "1.socket.jmx_rmi_enable.custom.result.s2.o1 ": " 이는 {0} 포트를 통해 서버의 JMX/RMI 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개되어 있음을 의미합니다.",
  "1.socket.jmx_rmi_enable.custom.solution.s0.o0": "JMX/RMI 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.jmx_rmi_enable.custom.solution.s0.o0 ": " JMX/RMI 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.jmx_rmi_enable.custom.solution.s0.o1": "방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.jmx_rmi_enable.custom.solution.s0.o1 ": " 방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.jmx_rmi_enable.default.attack.s0.o0": "JMX 커넥터를 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.jmx_rmi_enable.default.attack.s0.o0 ": " JMX 커넥터를 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.jmx_rmi_enable.default.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.jmx_rmi_enable.default.attack.s0.o1 ": " 연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.jmx_rmi_enable.default.attack.s0.o2": "서버와 성공적으로 연결했습니다.",
  "1.socket.jmx_rmi_enable.default.attack.s0.o2 ": " 서버와 성공적으로 연결했습니다.",
  "1.socket.jmx_rmi_enable.default.attack.s1.o0": "오브젝트 이름이 {0}인 MBean의 {1} 속성값에 대한 쿼리를 JMX 커넥터를 통해 전송했습니다.",
  "1.socket.jmx_rmi_enable.default.attack.s1.o0 ": " 오브젝트 이름이 {0}인 MBean의 {1} 속성값에 대한 쿼리를 JMX 커넥터를 통해 전송했습니다.",
  "1.socket.jmx_rmi_enable.default.result.s0.o0": "쿼리 수행 후, 서버로부터 다음과 같은 응답을 JMX 커넥터를 통해 수신했습니다.",
  "1.socket.jmx_rmi_enable.default.result.s0.o0 ": " 쿼리를 수행한 후, 서버로부터 다음과 같은 응답을 JMX 커넥터를 통해 수신했습니다.",
  "1.socket.jmx_rmi_enable.default.result.s0.o1": "{0}",
  "1.socket.jmx_rmi_enable.default.result.s1.o0": "수신한 응답에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.jmx_rmi_enable.default.result.s1.o0 ": " 수신한 응답에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.jmx_rmi_enable.default.result.s1.o1": "{0}",
  "1.socket.jmx_rmi_enable.default.result.s2.o0": "분석 결과, 서버로 전송한 {0} 속성값 쿼리에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.jmx_rmi_enable.default.result.s2.o0 ": " 분석 결과, 서버로 전송한 {0} 속성값 쿼리에 대해 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.jmx_rmi_enable.default.result.s2.o1": "따라서 {0} 포트를 통해 서버의 JMX/RMI 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개됩니다.",
  "1.socket.jmx_rmi_enable.default.result.s2.o1 ": " 이는 {0} 포트를 통해 서버의 JMX/RMI 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개되어 있음을 의미합니다.",
  "1.socket.jmx_rmi_enable.default.solution.s0.o0": "JMX/RMI 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.jmx_rmi_enable.default.solution.s0.o0 ": " JMX/RMI 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.jmx_rmi_enable.default.solution.s0.o1": "방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.jmx_rmi_enable.default.solution.s0.o1 ": " 방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.jmx_rmi_enable.default.solution.s1.o0": "JMX/RMI 서비스를 사용하는 경우, 기본 포트 번호를 포함한 기본 설정값을 사용하지 않아야 합니다.",
  "1.socket.jmx_rmi_enable.default.solution.s1.o0 ": " JMX/RMI 서비스를 사용하는 경우, 기본 포트 번호를 포함한 기본 설정값을 사용하지 않아야 합니다.",
  "1.socket.jmx_rmi_enable.default.solution.s1.o1": "JMX/RMI 서비스의 포트 번호 기본 설정값인 {0} 대신 다른 포트 번호를 사용해야 합니다.",
  "1.socket.jmx_rmi_enable.default.solution.s1.o1 ": " JMX/RMI 서비스의 포트 번호 기본 설정값인 {0} 대신 다른 포트 번호를 사용해야 합니다.",
  "1.socket.jmx_rmi_enable.scanned.attack.s0.o0": "JMX 커넥터를 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.jmx_rmi_enable.scanned.attack.s0.o0 ": " JMX 커넥터를 사용하여 서버로의 연결을 시도했습니다.",
  "1.socket.jmx_rmi_enable.scanned.attack.s0.o1": "연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.jmx_rmi_enable.scanned.attack.s0.o1 ": " 연결을 시도한 서버의 호스트 주소는 {0}, 포트 번호는 {1}입니다.",
  "1.socket.jmx_rmi_enable.scanned.attack.s0.o2": "서버와 성공적으로 연결했습니다.",
  "1.socket.jmx_rmi_enable.scanned.attack.s0.o2 ": " 서버와 성공적으로 연결했습니다.",
  "1.socket.jmx_rmi_enable.scanned.attack.s1.o0": "오브젝트 이름이 {0}인 MBean의 {1} 속성값에 대한 쿼리를 JMX 커넥터를 통해 전송했습니다.",
  "1.socket.jmx_rmi_enable.scanned.attack.s1.o0 ": " 오브젝트 이름이 {0}인 MBean의 {1} 속성값에 대한 쿼리를 JMX 커넥터를 통해 전송했습니다.",
  "1.socket.jmx_rmi_enable.scanned.result.s0.o0": "쿼리 수행 후, 서버로부터 다음과 같은 응답을 JMX 커넥터를 통해 수신했습니다.",
  "1.socket.jmx_rmi_enable.scanned.result.s0.o0 ": " 쿼리를 수행한 후, 서버로부터 다음과 같은 응답을 JMX 커넥터를 통해 수신했습니다.",
  "1.socket.jmx_rmi_enable.scanned.result.s0.o1": "{0}",
  "1.socket.jmx_rmi_enable.scanned.result.s1.o0": "수신한 응답에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.jmx_rmi_enable.scanned.result.s1.o0 ": " 수신한 응답에서 다음과 같은 문자열을 발견했습니다.",
  "1.socket.jmx_rmi_enable.scanned.result.s1.o1": "{0}",
  "1.socket.jmx_rmi_enable.scanned.result.s2.o0": "분석 결과, 서버로 전송한 {0} 속성값 쿼리에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.jmx_rmi_enable.scanned.result.s2.o0 ": " 분석 결과, 서버로 전송한 {0} 속성값 쿼리에 대하여 서버로부터 정상적인 응답을 수신했음을 발견했습니다.",
  "1.socket.jmx_rmi_enable.scanned.result.s2.o1": "따라서 {0} 포트를 통해 서버의 JMX/RMI 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개됩니다.",
  "1.socket.jmx_rmi_enable.scanned.result.s2.o1 ": " 이는 {0} 포트를 통해 서버의 JMX/RMI 서비스로의 접근이 가능하며, 해당 서비스가 외부에 공개되어 있음을 의미합니다.",
  "1.socket.jmx_rmi_enable.scanned.solution.s0.o0": "JMX/RMI 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.jmx_rmi_enable.scanned.solution.s0.o0 ": " JMX/RMI 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다.",
  "1.socket.jmx_rmi_enable.scanned.solution.s0.o1": "방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.jmx_rmi_enable.scanned.solution.s0.o1 ": " 방화벽 등의 도구를 통해 접근 권한 제어가 가능합니다.",
  "1.socket.slow_http_dos.custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.socket.slow_http_dos.custom.attack.s0.o1": "HTTP 요청에 대하여 헤더 정보의 끝을 의미하는 마지막 개행 문자(\"\\r\\n\")를 생략했습니다.",
  "1.socket.slow_http_dos.custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.socket.slow_http_dos.custom.attack.s1.o1": "{0}",
  "1.socket.slow_http_dos.custom.attack.s2.o0": "{0}ms 동안 대기한 뒤, 전송하지 않았던 개행 문자를 이어서 전송했습니다.",
  "1.socket.slow_http_dos.custom.attack.s2.o1": "미전송 개행 문자를 전송하기 전 대기 시간은 사용자 정의 요청 간 지연 시간에 해당합니다.",
  "1.socket.slow_http_dos.custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.socket.slow_http_dos.custom.result.s0.o1": "{0}",
  "1.socket.slow_http_dos.custom.result.s1.o0": "서버로부터 수신한 HTTP 응답은 정상적인 HTTP 응답에 해당합니다.",
  "1.socket.slow_http_dos.custom.result.s2.o0": "분석 결과, 헤더 정보의 마지막 개행 문자가 없는 HTTP 요청에 대하여 해당 요청이 완결될 때까지 대기함을 발견했습니다.",
  "1.socket.slow_http_dos.custom.result.s2.o1": "따라서 해당 HTTP 요청이 최소 {0}ms 동안 서버의 네트워크 리소스를 점유할 수 있습니다.",
  "1.socket.slow_http_dos.custom.solution.s0.o0": "각 HTTP 요청에 대한 제한시간 값을 적정한 수준으로 조정하여, 단일 HTTP 요청이 지나치게 긴 시간동안 세션을 점유하지 않도록 합니다.",
  "1.socket.slow_http_dos.custom.solution.s0.o1": "제한시간을 설정하기 어려운 경우 웹 캐시 소프트웨어를 통해 트래픽 장애 방지가 가능합니다.",
  "1.socket.slow_http_dos.waiting.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "1.socket.slow_http_dos.waiting.attack.s0.o1": "HTTP 요청에 대하여 헤더 정보의 끝을 의미하는 마지막 개행 문자(\"\\r\\n\")를 생략했습니다.",
  "1.socket.slow_http_dos.waiting.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "1.socket.slow_http_dos.waiting.attack.s1.o1": "{0}",
  "1.socket.slow_http_dos.waiting.attack.s2.o0": "{0}ms 동안 대기한 뒤, 전송하지 않았던 개행 문자를 이어서 전송했습니다.",
  "1.socket.slow_http_dos.waiting.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "1.socket.slow_http_dos.waiting.result.s0.o1": "{0}",
  "1.socket.slow_http_dos.waiting.result.s1.o0": "서버로부터 수신한 HTTP 응답은 정상적인 HTTP 응답에 해당합니다.",
  "1.socket.slow_http_dos.waiting.result.s2.o0": "분석 결과, 헤더 정보의 마지막 개행 문자가 없는 HTTP 요청에 대하여 해당 요청이 완결될 때까지 대기함을 발견했습니다.",
  "1.socket.slow_http_dos.waiting.result.s2.o1": "따라서 해당 HTTP 요청이 최소 {0}ms 동안 서버의 네트워크 리소스를 점유할 수 있습니다.",
  "1.socket.slow_http_dos.waiting.solution.s0.o0": "각 HTTP 요청에 대한 제한시간 값을 적정한 수준으로 조정하여, 단일 HTTP 요청이 지나치게 긴 시간동안 세션을 점유하지 않도록 합니다.",
  "1.socket.slow_http_dos.waiting.solution.s0.o1": "제한시간을 설정하기 어려운 경우 웹 캐시 소프트웨어를 통해 트래픽 장애 방지가 가능합니다.",
  "2.event.command_injection.conditional.apiReqInfo": "{0}",
  "2.event.command_injection.conditional.apiReqMsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "2.event.command_injection.conditional.apireqinfo": "{0}",
  "2.event.command_injection.conditional.apireqmsg": "공격 시도 중 {0} 이벤트를 실행한 결과, 다음과 같은 API 요청이 발생했습니다.",
  "2.event.command_injection.netstat.attack.s0.o0": "공격 대상 페이지에 도달하기 위해 다음과 같은 과정을 수행했습니다.",
  "2.event.command_injection.netstat.attack.s0.o1": "{0}",
  "2.event.command_injection.netstat.attack.s1.o0": "공격 대상 페이지의 모든 {0} 요소에 대하여 다음과 같이 입력했습니다.",
  "2.event.command_injection.netstat.attack.s1.o1": "{0}",
  "2.event.command_injection.netstat.attack.s2.o0": "{0}",
  "2.event.command_injection.netstat.attack.s3.o0": "XPath가 {0}인 요소에 대하여 {1} 이벤트를 수행했습니다.",
  "2.event.command_injection.netstat.result.s0.o0": "이벤트 수행 후, 공격 대상 페이지의 DOM에서 다음과 같은 문자열을 발견했습니다.",
  "2.event.command_injection.netstat.result.s0.o1": "{0}",
  "2.event.command_injection.netstat.result.s1.o0": "분석 수행 결과, 이벤트를 수행할 때 입력한 값에 해당하는 명령문의 실행 결과를 발견했습니다.",
  "2.event.command_injection.netstat.result.s1.o1": "따라서 수행한 이벤트로 인해 서버 운영 체제 내부에서 명령문이 실행되었습니다.",
  "2.event.command_injection.netstat.solution.s0.o0": "외부 입력값을 포함하여 운영 체제 명령어를 실행하는 경우, 외부 입력값에 대한 검증이 필요합니다.",
  "2.event.command_injection.netstat.solution.s1.o0": "{0} 계열 운영 체제의 경우, 다음과 같은 문자들에 대한 검증이 필요합니다.",
  "2.event.command_injection.netstat.solution.s1.o1": "{0}",
  "2.event.command_injection.netstat.solution.s2.o0": "{0} 계열 운영 체제의 경우, 다음과 같은 문자들에 대한 검증이 필요합니다.",
  "2.event.command_injection.netstat.solution.s2.o1": "{0}",
  "2.event.sql_injection.success.attack.s0.o0": "SQL 삽입을 확인하기 위해 로그인 페이지에 특수문자가 포함된 공격 문자열을 대입했습니다.",
  "2.event.sql_injection.success.attack.s1.o0": "공격 위치",
  "2.event.sql_injection.success.attack.s1.o1": "{0}",
  "2.event.sql_injection.success.attack.s2.o0": "공격 문자",
  "2.event.sql_injection.success.attack.s2.o1": "{0}",
  "2.event.sql_injection.success.result.s0.o0": "공격 문자열이 포함된 로그인 시도에 대한 결과는 다음과 같습니다.",
  "2.event.sql_injection.success.result.s1.o0": "{0}",
  "2.event.sql_injection.success.result.s2.o0": "SQL 삽입의 위험이 있는 특수 문자가 필터링되지 않아서 페이지가 변조되었습니다.",
  "2.event.sql_injection.success.result.s3.o0": "따라서 공격이 성공했거나 비정상적인 동작이 발생했음을 확인할 수 있습니다.",
  "2.event.sql_injection.success.solution.s0.o0": "악의적인 사용자가 입력한 SQL 쿼리로 DBMS 및 데이터를 열람하거나 조작할 수 있으므로 사용자의 입력값을 필터링하도록 구현해야 합니다.",
  "2.event.sql_injection.success.solution.s0.o1": "{0}, {1}, {2}, {3}, {4} 등의 특수문자는 SQL 삽입을 발생시킬 수 있는 대표적인 위험한 문자이므로 사용자 입력값에 사용하지 않도록 유의해야 합니다.",
  "2.event.xpath_injection.success.attack.s0.o0": "XPath 삽입을 확인하기 위해 로그인 페이지에 특수문자가 포함된 공격 문자열을 대입했습니다.",
  "2.event.xpath_injection.success.attack.s1.o0": "공격 위치",
  "2.event.xpath_injection.success.attack.s1.o1": "{0}",
  "2.event.xpath_injection.success.attack.s2.o0": "공격 문자",
  "2.event.xpath_injection.success.attack.s2.o1": "{0}",
  "2.event.xpath_injection.success.result.s0.o0": "공격 문자열이 포함된 로그인 시도에 대한 결과는 다음과 같습니다.",
  "2.event.xpath_injection.success.result.s1.o0": "{0}",
  "2.event.xpath_injection.success.result.s2.o0": "XPath 삽입의 위험이 있는 특수 문자가 필터링되지 않아서 페이지가 변조되었습니다.",
  "2.event.xpath_injection.success.result.s3.o0": "따라서 공격이 성공했거나 비정상적인 동작이 발생했음을 확인할 수 있습니다.",
  "2.event.xpath_injection.success.solution.s0.o0": "사용자가 XPath 쿼리에 값을 입력할 수 있는 경우, 엄격한 입력값 검증을 통해 필요한 문자만 허용하도록 합니다.",
  "2.event.xpath_injection.success.solution.s0.o1": "{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9} 등 Xpath 쿼리를 파괴하는 특수문자를 입력할 수 없도록 제한하고, 금지된 특수문자를 필터링하는 대신 허용된 문자만 허용하는 것이 안전합니다.",
  "2.http.absolute_path_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.absolute_path_disclosure.match.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.absolute_path_disclosure.match.attack.s1.o0": "{0}",
  "2.http.absolute_path_disclosure.match.attack.s1.o1": "{0}",
  "2.http.absolute_path_disclosure.match.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "2.http.absolute_path_disclosure.match.attack.s3.o0": "HTTP 응답의 상태 코드가 오류 코드에 해당하는지의 여부를 검사했습니다.",
  "2.http.absolute_path_disclosure.match.attack.s4.o0": "HTTP 응답 본문에서 파일 절대 경로에 해당하는 문자열을 탐색했습니다.",
  "2.http.absolute_path_disclosure.match.result.s0.o0": "HTTP 응답의 상태 코드는 다음과 같습니다.",
  "2.http.absolute_path_disclosure.match.result.s1.o0": "{0}",
  "2.http.absolute_path_disclosure.match.result.s2.o0": "HTTP 응답 본문에 다음과 같은 문자열이 존재합니다.",
  "2.http.absolute_path_disclosure.match.result.s3.o0": "{0}",
  "2.http.absolute_path_disclosure.match.result.s3.o1": "해당 문자열은 파일 절대 경로에 해당합니다.",
  "2.http.absolute_path_disclosure.match.solution.s0.o0": "발견한 파일 절대 경로를 노출할 필요가 없는 경우, 해당 파일 절대 경로를 HTTP 응답 본문에서 제거하세요.",
  "2.http.application_error.error.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.application_error.error.attack.s0.o1": "{0}",
  "2.http.application_error.error.attack.s0.o2": "{0}",
  "2.http.application_error.error.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.application_error.error.result.s0.o1": "{0}",
  "2.http.application_error.error.result.s0.o2": "{0}",
  "2.http.application_error.error.result.s1.o0": "HTTP 응답의 상태 코드가 다음과 같습니다.",
  "2.http.application_error.error.result.s1.o1": "{0}",
  "2.http.application_error.error.result.s2.o0": "분석 수행 결과, 해당 페이지에서 애플리케이션 오류가 발생함을 확인했습니다.",
  "2.http.application_error.error.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 애플리케이션 오류가 발생합니다.",
  "2.http.application_error.error.solution.s0.o0": "해당 페이지에서 발생하는 애플리케이션 오류를 수정해야 합니다.",
  "2.http.application_error.success.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.application_error.success.attack.s0.o1": "{0}",
  "2.http.application_error.success.attack.s0.o2": "{0}",
  "2.http.application_error.success.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.application_error.success.result.s0.o1": "{0}",
  "2.http.application_error.success.result.s0.o2": "{0}",
  "2.http.application_error.success.result.s1.o0": "HTTP 응답의 본문 중에서 다음 부분이 오류 페이지의 패턴을 충족합니다.",
  "2.http.application_error.success.result.s1.o1": "{0}",
  "2.http.application_error.success.result.s2.o0": "분석 수행 결과, 해당 페이지는 오류 페이지에 해당함을 확인했습니다.",
  "2.http.application_error.success.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 애플리케이션 오류가 발생합니다.",
  "2.http.application_error.success.solution.s0.o0": "해당 페이지에서 발생하는 애플리케이션 오류를 수정해야 합니다.",
  "2.http.blind_sql_injection.compare_different.attack.s0.o0": "원본 HTTP 요청을 서버로 전송했으며, 해당 HTTP 요청은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_different.attack.s0.o1": "{0}",
  "2.http.blind_sql_injection.compare_different.attack.s1.o0": "원본 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.compare_different.attack.s1.o1": "{0}",
  "2.http.blind_sql_injection.compare_different.attack.s2.o0": "첫 번째 수정한 HTTP 요청을 서버로 전송했으며, 해당 HTTP 요청은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_different.attack.s2.o1": "{0}",
  "2.http.blind_sql_injection.compare_different.attack.s3.o0": "원본 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.compare_different.attack.s3.o1": "{0}",
  "2.http.blind_sql_injection.compare_different.attack.s4.o0": "두 번째 수정한 HTTP 요청을 서버로 전송했으며, 해당 HTTP 요청은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_different.attack.s4.o1": "{0}",
  "2.http.blind_sql_injection.compare_different.result.s0.o0": "첫 번째 수정한 HTTP 요청에 대한 HTTP 응답 본문은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "2.http.blind_sql_injection.compare_different.result.s1.o0": "두 번째 수정한 HTTP 요청에 대한 HTTP 응답 본문은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일하지 않습니다.",
  "2.http.blind_sql_injection.compare_different.result.s2.o0": "HTTP 응답 본문 비교 결과, HTTP 요청의 매개변수 값에 포함된 논리식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "2.http.blind_sql_injection.compare_different.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 논리식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "2.http.blind_sql_injection.compare_different.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "2.http.blind_sql_injection.compare_different.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "2.http.blind_sql_injection.compare_expression.attack.s0.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_expression.attack.s0.o1": "{0}",
  "2.http.blind_sql_injection.compare_expression.attack.s0.o2": "{0}",
  "2.http.blind_sql_injection.compare_expression.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.compare_expression.attack.s1.o1": "{0}",
  "2.http.blind_sql_injection.compare_expression.attack.s2.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_expression.attack.s2.o1": "{0}",
  "2.http.blind_sql_injection.compare_expression.attack.s2.o2": "{0}",
  "2.http.blind_sql_injection.compare_expression.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.compare_expression.attack.s3.o1": "{0}",
  "2.http.blind_sql_injection.compare_expression.attack.s4.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_expression.attack.s4.o1": "{0}",
  "2.http.blind_sql_injection.compare_expression.attack.s4.o2": "{0}",
  "2.http.blind_sql_injection.compare_expression.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_expression.result.s0.o1": "{0}",
  "2.http.blind_sql_injection.compare_expression.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_expression.result.s1.o1": "{0}",
  "2.http.blind_sql_injection.compare_expression.result.s1.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "2.http.blind_sql_injection.compare_expression.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_expression.result.s2.o1": "{0}",
  "2.http.blind_sql_injection.compare_expression.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일하지 않습니다.",
  "2.http.blind_sql_injection.compare_expression.result.s3.o0": "HTTP 응답 본문 비교 결과, HTTP 요청의 매개변수 값에 포함된 표현식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "2.http.blind_sql_injection.compare_expression.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 SQL문 내부의 표현식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "2.http.blind_sql_injection.compare_expression.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "2.http.blind_sql_injection.compare_expression.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "2.http.blind_sql_injection.compare_increase.attack.s0.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_increase.attack.s0.o1": "{0}",
  "2.http.blind_sql_injection.compare_increase.attack.s0.o2": "{0}",
  "2.http.blind_sql_injection.compare_increase.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.compare_increase.attack.s1.o1": "{0}",
  "2.http.blind_sql_injection.compare_increase.attack.s2.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_increase.attack.s2.o1": "{0}",
  "2.http.blind_sql_injection.compare_increase.attack.s2.o2": "{0}",
  "2.http.blind_sql_injection.compare_increase.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.compare_increase.attack.s3.o1": "{0}",
  "2.http.blind_sql_injection.compare_increase.attack.s4.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_increase.attack.s4.o1": "{0}",
  "2.http.blind_sql_injection.compare_increase.attack.s4.o2": "{0}",
  "2.http.blind_sql_injection.compare_increase.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_increase.result.s0.o1": "{0}",
  "2.http.blind_sql_injection.compare_increase.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_increase.result.s1.o1": "{0}",
  "2.http.blind_sql_injection.compare_increase.result.s1.o2": "해당 HTTP 응답 본문 길이는 원본 HTTP 요청에 대한 HTTP 응답 본문 길이에 비하여 {0}% 더 증가했습니다.",
  "2.http.blind_sql_injection.compare_increase.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_increase.result.s2.o1": "{0}",
  "2.http.blind_sql_injection.compare_increase.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "2.http.blind_sql_injection.compare_increase.result.s3.o0": "HTTP 응답 비교 결과, HTTP 요청의 매개변수 값에 포함된 논리식에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "2.http.blind_sql_injection.compare_increase.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 SQL문 내부의 논리식 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "2.http.blind_sql_injection.compare_increase.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "2.http.blind_sql_injection.compare_increase.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "2.http.blind_sql_injection.compare_order_by.attack.s0.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_order_by.attack.s0.o1": "{0}",
  "2.http.blind_sql_injection.compare_order_by.attack.s0.o2": "{0}",
  "2.http.blind_sql_injection.compare_order_by.attack.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.compare_order_by.attack.s1.o1": "{0}",
  "2.http.blind_sql_injection.compare_order_by.attack.s2.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_order_by.attack.s2.o1": "{0}",
  "2.http.blind_sql_injection.compare_order_by.attack.s2.o2": "{0}",
  "2.http.blind_sql_injection.compare_order_by.attack.s3.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.compare_order_by.attack.s3.o1": "{0}",
  "2.http.blind_sql_injection.compare_order_by.attack.s4.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.compare_order_by.attack.s4.o1": "{0}",
  "2.http.blind_sql_injection.compare_order_by.attack.s4.o2": "{0}",
  "2.http.blind_sql_injection.compare_order_by.result.s0.o0": "서버로 전송한 원본 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_order_by.result.s0.o1": "{0}",
  "2.http.blind_sql_injection.compare_order_by.result.s1.o0": "HTTP 응답 비교를 위한 첫 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_order_by.result.s1.o1": "{0}",
  "2.http.blind_sql_injection.compare_order_by.result.s1.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일합니다.",
  "2.http.blind_sql_injection.compare_order_by.result.s2.o0": "HTTP 응답 비교를 위한 두 번째 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.compare_order_by.result.s2.o1": "{0}",
  "2.http.blind_sql_injection.compare_order_by.result.s2.o2": "해당 HTTP 응답은 원본 HTTP 요청에 대한 HTTP 응답 본문과 동일하지 않습니다.",
  "2.http.blind_sql_injection.compare_order_by.result.s3.o0": "HTTP 응답 비교 결과, HTTP 요청의 매개변수 값에 포함된 ORDER BY문에 따라 HTTP 응답 본문 간에 차이가 발생함을 발견했습니다.",
  "2.http.blind_sql_injection.compare_order_by.result.s3.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 HTTP 응답 본문 간의 차이를 기반으로, 서버의 SQL문 및 SQL문 내부의 ORDER BY문 처리 여부 및 처리 방식을 추정할 수 있습니다.",
  "2.http.blind_sql_injection.compare_order_by.solution.s0.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "2.http.blind_sql_injection.compare_order_by.solution.s0.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL 실행 이전에 필터링할 수 있습니다.",
  "2.http.blind_sql_injection.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.blind_sql_injection.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.blind_sql_injection.error_generic.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.error_generic.attack.s0.o1": "{0}",
  "2.http.blind_sql_injection.error_generic.attack.s1.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.error_generic.attack.s1.o1": "{0}",
  "2.http.blind_sql_injection.error_generic.attack.s1.o2": "{0}",
  "2.http.blind_sql_injection.error_generic.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.error_generic.result.s0.o1": "{0}",
  "2.http.blind_sql_injection.error_generic.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.blind_sql_injection.error_generic.result.s1.o1": "{0}",
  "2.http.blind_sql_injection.error_generic.result.s2.o0": "분석 수행 결과, 일반적인 DBMS에서 발생 가능한 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "2.http.blind_sql_injection.error_generic.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 DB 및 SQL문 관련 정보를 수집할 수 있습니다.",
  "2.http.blind_sql_injection.error_generic.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다.",
  "2.http.blind_sql_injection.error_generic.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "2.http.blind_sql_injection.error_specific.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.error_specific.attack.s0.o1": "{0}",
  "2.http.blind_sql_injection.error_specific.attack.s1.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.error_specific.attack.s1.o1": "{0}",
  "2.http.blind_sql_injection.error_specific.attack.s1.o2": "{0}",
  "2.http.blind_sql_injection.error_specific.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.error_specific.result.s0.o1": "{0}",
  "2.http.blind_sql_injection.error_specific.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.blind_sql_injection.error_specific.result.s1.o1": "{0}",
  "2.http.blind_sql_injection.error_specific.result.s2.o0": "분석 수행 결과, 일반적인 {0}에서 발생 가능한 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "2.http.blind_sql_injection.error_specific.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 DB 및 SQL문 관련 정보를 수집할 수 있습니다.",
  "2.http.blind_sql_injection.error_specific.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다.",
  "2.http.blind_sql_injection.error_specific.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "2.http.blind_sql_injection.error_union.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 수정했습니다.",
  "2.http.blind_sql_injection.error_union.attack.s0.o1": "{0}",
  "2.http.blind_sql_injection.error_union.attack.s1.o0": "다음과 같이 수정한 HTTP 요청을 서버로 전송했습니다.",
  "2.http.blind_sql_injection.error_union.attack.s1.o1": "{0}",
  "2.http.blind_sql_injection.error_union.attack.s1.o2": "{0}",
  "2.http.blind_sql_injection.error_union.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.blind_sql_injection.error_union.result.s0.o1": "{0}",
  "2.http.blind_sql_injection.error_union.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.blind_sql_injection.error_union.result.s1.o1": "{0}",
  "2.http.blind_sql_injection.error_union.result.s2.o0": "분석 수행 결과, {0}에서 UNION문을 사용할 때 발생 가능한 오류 메시지로 추정되는 문자열을 발견했습니다.",
  "2.http.blind_sql_injection.error_union.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 발생한 오류 메시지를 통해 공격 대상 페이지에서 사용하는 DB 및 SQL문 관련 정보를 수집할 수 있습니다.",
  "2.http.blind_sql_injection.error_union.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다.",
  "2.http.blind_sql_injection.error_union.solution.s0.o1": "오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "2.http.code_injection.script.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.code_injection.script.attack.s0.o1": "{0}",
  "2.http.code_injection.script.attack.s0.o2": "{0}",
  "2.http.code_injection.script.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.code_injection.script.result.s0.o1": "{0}",
  "2.http.code_injection.script.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 코드 삽입 공격이 성공했습니다.",
  "2.http.code_injection.script.solution.s0.o0": "서버 스크립트 코드 삽입을 막는 가장 좋은 방법은 사용자가 입력하는 값을 모두 검증하는 것입니다.",
  "2.http.code_injection.script.solution.s0.o1": "코드를 삽입해야 하는 경우에는 특수문자를 인코딩하여 웹 애플리케이션에 영향을 주지 않는 문자로 변경해야 합니다.",
  "2.http.command_injection.feedback.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.command_injection.feedback.attack.s0.o1": "{0}",
  "2.http.command_injection.feedback.attack.s0.o2": "{0}",
  "2.http.command_injection.feedback.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.command_injection.feedback.result.s0.o1": "{0}",
  "2.http.command_injection.feedback.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 운영체제 명령어를 실행할 수 있습니다.",
  "2.http.command_injection.feedback.solution.s0.o0": "HTTP 요청을 처리할 때 시스템 명령어로 의심 가능한 문자열을 검사해야 합니다.",
  "2.http.command_injection.timeout.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.command_injection.timeout.attack.s0.o1": "{0}",
  "2.http.command_injection.timeout.attack.s0.o2": "{0}",
  "2.http.command_injection.timeout.result.s0.o0": "HTTP 응답을 수신하기 위해 {0}초가 걸렸습니다. 이 값은 최소 시간인 {1}초보다 깁니다.",
  "2.http.command_injection.timeout.result.s0.o1": "따라서 서버로 전송한 HTTP 요청에 의해 발생하는 시간 지연을 통하여, 운영체제 명령어가 실행되었음을 추정할 수 있습니다.",
  "2.http.command_injection.timeout.solution.s0.o0": "HTTP 요청을 처리할 때 시스템 명령어로 의심 가능한 문자열을 검사해야 합니다.",
  "2.http.content_type_missing.empty.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.content_type_missing.empty.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.content_type_missing.empty.attack.s1.o0": "{0}",
  "2.http.content_type_missing.empty.attack.s1.o1": "{0}",
  "2.http.content_type_missing.empty.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "2.http.content_type_missing.empty.attack.s3.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더의 존재 여부를 검사했습니다.",
  "2.http.content_type_missing.empty.attack.s4.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더 값을 검사했습니다.",
  "2.http.content_type_missing.empty.result.s0.o0": "HTTP 응답 헤더가 다음과 같습니다.",
  "2.http.content_type_missing.empty.result.s1.o0": "{0}",
  "2.http.content_type_missing.empty.result.s2.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더가 하나 이상 존재합니다.",
  "2.http.content_type_missing.empty.result.s3.o0": "'Content-Type' 헤더 중 하나의 값이 빈 문자열입니다.",
  "2.http.content_type_missing.empty.result.s3.o1": "해당 헤더 값은 'Content-Type' 헤더 값으로 적절하지 않습니다.",
  "2.http.content_type_missing.empty.solution.s0.o0": "HTTP 응답 헤더에 올바른 'Content-Type' 헤더를 추가하세요.",
  "2.http.content_type_missing.no_header.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.content_type_missing.no_header.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.content_type_missing.no_header.attack.s1.o0": "{0}",
  "2.http.content_type_missing.no_header.attack.s1.o1": "{0}",
  "2.http.content_type_missing.no_header.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "2.http.content_type_missing.no_header.attack.s3.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더의 존재 여부를 검사했습니다.",
  "2.http.content_type_missing.no_header.result.s0.o0": "HTTP 응답 헤더가 다음과 같습니다.",
  "2.http.content_type_missing.no_header.result.s1.o0": "{0}",
  "2.http.content_type_missing.no_header.result.s2.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더가 존재하지 않습니다.",
  "2.http.content_type_missing.no_header.solution.s0.o0": "HTTP 응답 헤더에 올바른 'Content-Type' 헤더를 추가하세요.",
  "2.http.content_type_missing.param_only.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.content_type_missing.param_only.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.content_type_missing.param_only.attack.s1.o0": "{0}",
  "2.http.content_type_missing.param_only.attack.s1.o1": "{0}",
  "2.http.content_type_missing.param_only.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "2.http.content_type_missing.param_only.attack.s3.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더의 존재 여부를 검사했습니다.",
  "2.http.content_type_missing.param_only.attack.s4.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더 값을 검사했습니다.",
  "2.http.content_type_missing.param_only.result.s0.o0": "HTTP 응답 헤더가 다음과 같습니다.",
  "2.http.content_type_missing.param_only.result.s1.o0": "{0}",
  "2.http.content_type_missing.param_only.result.s2.o0": "HTTP 응답 헤더 중 'Content-Type' 헤더가 하나 이상 존재합니다.",
  "2.http.content_type_missing.param_only.result.s3.o0": "Content-Type' 헤더 중 하나의 값이 다음과 같습니다.",
  "2.http.content_type_missing.param_only.result.s4.o0": "{0}",
  "2.http.content_type_missing.param_only.result.s5.o0": "해당 헤더 값은 콘텐츠 타입 정보가 존재하지 않으며, 파라미터 정보만을 포함합니다.",
  "2.http.content_type_missing.param_only.result.s5.o1": "해당 헤더 값은 'Content-Type' 헤더 값으로 적절하지 않습니다.",
  "2.http.content_type_missing.param_only.solution.s0.o0": "HTTP 응답 헤더에 올바른 'Content-Type' 헤더를 추가하세요.",
  "2.http.cookie_attribute_test_http_only.exist.attack.s0.o0": "쿠키 속성 검사(HttpOnly)는 HTTP 응답에 Set-Cookie를 확인하여 HttpOnly 속성이 있는지 확인하는 체커입니다.",
  "2.http.cookie_attribute_test_http_only.exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "2.http.cookie_attribute_test_http_only.exist.attack.s1.o0": "{0}",
  "2.http.cookie_attribute_test_http_only.exist.attack.s1.o1": "{0}",
  "2.http.cookie_attribute_test_http_only.exist.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "2.http.cookie_attribute_test_http_only.exist.result.s1.o0": "{0}",
  "2.http.cookie_attribute_test_http_only.exist.solution.s0.o0": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "2.http.cookie_attribute_test_http_only.not_exist.attack.s0.o0": "쿠키 속성 검사(HttpOnly)는 HTTP 응답에 Set-Cookie를 확인하여 HttpOnly 속성이 있는지 확인하는 체커입니다.",
  "2.http.cookie_attribute_test_http_only.not_exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "2.http.cookie_attribute_test_http_only.not_exist.attack.s1.o0": "{0}",
  "2.http.cookie_attribute_test_http_only.not_exist.attack.s1.o1": "{0}",
  "2.http.cookie_attribute_test_http_only.not_exist.result.s0.o0": "HTTP 요청에 대한 응답에 Set-Cookie 정보가 존재하지 않습니다.",
  "2.http.cookie_attribute_test_http_only.not_exist.solution.s0.o0": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "2.http.cookie_attribute_test_same_site.exist.attack.s0.o0": "쿠키 속성 검사(SameSite)는 HTTP 응답에 Set-Cookie를 확인하여 SameSite 속성이 있는지 확인하는 체커입니다.",
  "2.http.cookie_attribute_test_same_site.exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "2.http.cookie_attribute_test_same_site.exist.attack.s1.o0": "{0}",
  "2.http.cookie_attribute_test_same_site.exist.attack.s1.o1": "{0}",
  "2.http.cookie_attribute_test_same_site.exist.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "2.http.cookie_attribute_test_same_site.exist.result.s1.o0": "{0}",
  "2.http.cookie_attribute_test_same_site.exist.solution.s0.o0": "사이트 간 요청 위조(CSRF)를 막기 위해 SameSite 속성을 Lax나 Strict로 설정하는 것이 좋습니다.",
  "2.http.cookie_attribute_test_same_site.exist.solution.s0.o1": "구글 크롬도 80 버전으로 업데이트되면서 SameSite 속성의 기본값을 None에서 Lax로 강화했습니다.",
  "2.http.cookie_attribute_test_same_site.exist.solution.s0.o2": "만약 None으로 사용해야 한다면 반드시 Secure 속성과 함께 사용해야 합니다.",
  "2.http.cookie_attribute_test_same_site.not_exist.attack.s0.o0": "쿠키 속성 검사(SameSite)는 HTTP 응답에 Set-Cookie를 확인하여 SameSite 속성이 있는지 확인하는 체커입니다.",
  "2.http.cookie_attribute_test_same_site.not_exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "2.http.cookie_attribute_test_same_site.not_exist.attack.s1.o0": "{0}",
  "2.http.cookie_attribute_test_same_site.not_exist.attack.s1.o1": "{0}",
  "2.http.cookie_attribute_test_same_site.not_exist.result.s0.o0": "HTTP 요청에 대한 응답에 Set-Cookie 정보가 존재하지 않습니다.",
  "2.http.cookie_attribute_test_same_site.not_exist.solution.s0.o0": "사이트 간 요청 위조(CSRF)를 막기 위해 SameSite 속성을 Lax나 Strict로 설정하는 것이 좋습니다.",
  "2.http.cookie_attribute_test_same_site.not_exist.solution.s0.o1": "구글 크롬도 80 버전으로 업데이트되면서 SameSite 속성의 기본값을 None에서 Lax로 강화했습니다.",
  "2.http.cookie_attribute_test_same_site.not_exist.solution.s0.o2": "만약 None으로 사용해야 한다면 반드시 Secure 속성과 함께 사용해야 합니다.",
  "2.http.cookie_attribute_test_secure.exist.attack.s0.o0": "쿠키 속성 검사(Secure)는 HTTP 응답에 Set-Cookie를 확인하여 Secure 속성이 있는지 확인하는 체커입니다.",
  "2.http.cookie_attribute_test_secure.exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "2.http.cookie_attribute_test_secure.exist.attack.s1.o0": "{0}",
  "2.http.cookie_attribute_test_secure.exist.attack.s1.o1": "{0}",
  "2.http.cookie_attribute_test_secure.exist.result.s0.o0": "HTTP 요청에 대한 응답은 아래와 같습니다.",
  "2.http.cookie_attribute_test_secure.exist.result.s1.o0": "{0}",
  "2.http.cookie_attribute_test_secure.exist.solution.s0.o0": "Secure 속성은 HTTP에서 동작하지 않으므로 HTTPS로 변경해야 합니다.",
  "2.http.cookie_attribute_test_secure.exist.solution.s0.o1": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "2.http.cookie_attribute_test_secure.not_exist.attack.s0.o0": "쿠키 속성 검사(Secure)는 HTTP 응답에 Set-Cookie를 확인하여 Secure 속성이 있는지 확인하는 체커입니다.",
  "2.http.cookie_attribute_test_secure.not_exist.attack.s0.o1": "이를 검출하기 위해 다음과 같은 HTTP 요청을 보냈습니다.",
  "2.http.cookie_attribute_test_secure.not_exist.attack.s1.o0": "{0}",
  "2.http.cookie_attribute_test_secure.not_exist.attack.s1.o1": "{0}",
  "2.http.cookie_attribute_test_secure.not_exist.result.s0.o0": "HTTP 요청에 대한 응답에 Set-Cookie 정보가 존재하지 않습니다.",
  "2.http.cookie_attribute_test_secure.not_exist.solution.s0.o0": "Secure 속성은 HTTP에서 동작하지 않으므로 HTTPS로 변경해야 합니다.",
  "2.http.cookie_attribute_test_secure.not_exist.solution.s0.o1": "쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "2.http.crlf_injection.cookie.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.crlf_injection.cookie.attack.s0.o1": "{0}",
  "2.http.crlf_injection.cookie.attack.s0.o2": "{0}",
  "2.http.crlf_injection.cookie.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.crlf_injection.cookie.result.s0.o1": "{0}",
  "2.http.crlf_injection.cookie.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 코드 삽입 공격이 성공했습니다.",
  "2.http.crlf_injection.cookie.solution.s0.o0": "사용자가 CRLF를 입력하지 못하도록 막거나, HTTP 헤더에 삽입되는 값을 검사해야 합니다.",
  "2.http.custom.active_custom.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.custom.active_custom.attack.s0.o1": "{0}",
  "2.http.custom.active_custom.attack.s0.o2": "{0}",
  "2.http.custom.active_custom.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.custom.active_custom.result.s0.o1": "{0}",
  "2.http.custom.passive_custom.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.custom.passive_custom.attack.s0.o1": "{0}",
  "2.http.custom.passive_custom.attack.s0.o2": "{0}",
  "2.http.custom.passive_custom.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.custom.passive_custom.result.s0.o1": "{0}",
  "2.http.directory_browsing.pattern.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.directory_browsing.pattern.attack.s0.o1": "{0}",
  "2.http.directory_browsing.pattern.attack.s0.o2": "{0}",
  "2.http.directory_browsing.pattern.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.directory_browsing.pattern.result.s0.o1": "{0}",
  "2.http.directory_browsing.pattern.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 서버의 특정 디렉토리 목록이 노출되었습니다.",
  "2.http.directory_browsing.pattern.solution.s0.o0": "디렉토리 목록화는 그 자체만으로 취약점이라기보다 이를 통해 유출되는 다른 정보들로 인해 취약점이 됩니다.",
  "2.http.directory_browsing.pattern.solution.s1.o0": "이러한 디렉토리 목록화를 해결하기 위해서는 웹 애플리케이션 서버의 디렉토리 내부에 중요한 정보를 두지 말아야 합니다.",
  "2.http.directory_browsing.pattern.solution.s2.o0": "또는, 웹 애플리케이션 서버의 구성 변경을 통해 웹 애플리케이션 서버 아래에 있는 모든 경로에 대해서 디렉토리 목록화를 막아야 합니다.",
  "2.http.email_address_disclosure.match.attack.s0.o0": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.email_address_disclosure.match.attack.s0.o1": "다음과 같은 HTTP 요청을 전송했습니다.",
  "2.http.email_address_disclosure.match.attack.s1.o0": "{0}",
  "2.http.email_address_disclosure.match.attack.s1.o1": "{0}",
  "2.http.email_address_disclosure.match.attack.s2.o0": "HTTP 응답을 수신했습니다.",
  "2.http.email_address_disclosure.match.attack.s3.o0": "HTTP 응답의 상태 코드가 오류 코드에 해당하는지의 여부를 검사했습니다.",
  "2.http.email_address_disclosure.match.attack.s4.o0": "HTTP 응답 본문에서 이메일 주소에 해당하는 문자열을 탐색했습니다.",
  "2.http.email_address_disclosure.match.result.s0.o0": "HTTP 응답의 상태 코드는 다음과 같습니다.",
  "2.http.email_address_disclosure.match.result.s1.o0": "{0}",
  "2.http.email_address_disclosure.match.result.s2.o0": "HTTP 응답 본문에 다음과 같은 문자열이 존재합니다.",
  "2.http.email_address_disclosure.match.result.s3.o0": "{0}",
  "2.http.email_address_disclosure.match.result.s3.o1": "해당 문자열은 이메일 주소에 해당합니다.",
  "2.http.email_address_disclosure.match.solution.s0.o0": "발견한 이메일 주소를 노출할 필요가 없는 경우, 해당 이메일 주소를 HTTP 응답 본문에서 제거하세요.",
  "2.http.external_redirect.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.external_redirect.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.external_redirect.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.external_redirect.invocation.attack.s0.o1": "{0}",
  "2.http.external_redirect.invocation.attack.s0.o2": "{0}",
  "2.http.external_redirect.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.external_redirect.invocation.attack.s1.o1": "{0}",
  "2.http.external_redirect.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "2.http.external_redirect.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "2.http.external_redirect.invocation.result.s0.o2": "{0}",
  "2.http.external_redirect.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "2.http.external_redirect.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "2.http.external_redirect.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되었으며, 해당 메소드를 통해 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "2.http.external_redirect.invocation.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "2.http.external_redirect.invocation.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증을 수행해야 합니다.",
  "2.http.external_redirect.redirect_header.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.external_redirect.redirect_header.attack.s0.o1": "{0}",
  "2.http.external_redirect.redirect_header.attack.s0.o2": "{0}",
  "2.http.external_redirect.redirect_header.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.external_redirect.redirect_header.attack.s1.o1": "{0}",
  "2.http.external_redirect.redirect_header.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.external_redirect.redirect_header.result.s0.o1": "{0}",
  "2.http.external_redirect.redirect_header.result.s1.o0": "HTTP 응답의 {0} 헤더의 값에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.external_redirect.redirect_header.result.s1.o1": "{0}",
  "2.http.external_redirect.redirect_header.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 헤더 값에 존재함을 발견했습니다.",
  "2.http.external_redirect.redirect_header.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "2.http.external_redirect.redirect_header.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "2.http.external_redirect.redirect_header.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "2.http.external_redirect.redirect_js.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.external_redirect.redirect_js.attack.s0.o1": "{0}",
  "2.http.external_redirect.redirect_js.attack.s0.o2": "{0}",
  "2.http.external_redirect.redirect_js.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.external_redirect.redirect_js.attack.s1.o1": "{0}",
  "2.http.external_redirect.redirect_js.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.external_redirect.redirect_js.result.s0.o1": "{0}",
  "2.http.external_redirect.redirect_js.result.s1.o0": "HTTP 응답의 본문 중, JavaScript 문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.external_redirect.redirect_js.result.s1.o1": "{0}",
  "2.http.external_redirect.redirect_js.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 JavaScript 문에 존재함을 발견했습니다.",
  "2.http.external_redirect.redirect_js.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "2.http.external_redirect.redirect_js.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "2.http.external_redirect.redirect_js.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "2.http.external_redirect.redirect_meta.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.external_redirect.redirect_meta.attack.s0.o1": "{0}",
  "2.http.external_redirect.redirect_meta.attack.s0.o2": "{0}",
  "2.http.external_redirect.redirect_meta.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.external_redirect.redirect_meta.attack.s1.o1": "{0}",
  "2.http.external_redirect.redirect_meta.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.external_redirect.redirect_meta.result.s0.o1": "{0}",
  "2.http.external_redirect.redirect_meta.result.s1.o0": "HTTP 응답의 본문 중, {0} 속성값이 {1}인 Meta 태그의 {2} 속성값에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.external_redirect.redirect_meta.result.s1.o1": "{0}",
  "2.http.external_redirect.redirect_meta.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 Meta 태그의 {0} 속성값에 존재함을 발견했습니다.",
  "2.http.external_redirect.redirect_meta.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "2.http.external_redirect.redirect_meta.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "2.http.external_redirect.redirect_meta.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "2.http.local_file_include.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.local_file_include.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.local_file_include.custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.local_file_include.custom.attack.s0.o1": "{0}",
  "2.http.local_file_include.custom.attack.s0.o3": "설정한 값은 사용자 정의 공격 문자열에 해당합니다.",
  "2.http.local_file_include.custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.local_file_include.custom.attack.s1.o1": "{0}",
  "2.http.local_file_include.custom.attack.s1.o2": "{0}",
  "2.http.local_file_include.custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.local_file_include.custom.result.s0.o1": "{0}",
  "2.http.local_file_include.custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.local_file_include.custom.result.s1.o1": "{0}",
  "2.http.local_file_include.custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "2.http.local_file_include.custom.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "2.http.local_file_include.custom.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "2.http.local_file_include.custom.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "2.http.local_file_include.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.local_file_include.invocation.attack.s0.o1": "{0}",
  "2.http.local_file_include.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.local_file_include.invocation.attack.s1.o1": "{0}",
  "2.http.local_file_include.invocation.attack.s1.o2": "{0}",
  "2.http.local_file_include.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "2.http.local_file_include.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "2.http.local_file_include.invocation.result.s0.o2": "{0}",
  "2.http.local_file_include.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "2.http.local_file_include.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "2.http.local_file_include.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되고, 해당 메소드를 통해 서버의 해당 파일을 현재 페이지에 포함시킬 수 있습니다.",
  "2.http.local_file_include.invocation.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "2.http.local_file_include.invocation.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "2.http.local_file_include.invocation.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "2.http.local_file_include.jsp.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.local_file_include.jsp.attack.s0.o1": "{0}",
  "2.http.local_file_include.jsp.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.local_file_include.jsp.attack.s1.o1": "{0}",
  "2.http.local_file_include.jsp.attack.s1.o2": "{0}",
  "2.http.local_file_include.jsp.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.local_file_include.jsp.result.s0.o1": "{0}",
  "2.http.local_file_include.jsp.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.local_file_include.jsp.result.s1.o1": "{0}",
  "2.http.local_file_include.jsp.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값에 해당하는 {0} 폴더 내부의 {1} 파일의 내용을 발견했습니다.",
  "2.http.local_file_include.jsp.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 서버의 해당 파일을 현재 페이지에 포함시킬 수 있습니다.",
  "2.http.local_file_include.jsp.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "2.http.local_file_include.jsp.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "2.http.local_file_include.jsp.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "2.http.parameter_tamper.error.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.parameter_tamper.error.attack.s0.o1": "{0}",
  "2.http.parameter_tamper.error.attack.s0.o2": "{0}",
  "2.http.parameter_tamper.error.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.parameter_tamper.error.result.s0.o1": "{0}",
  "2.http.parameter_tamper.error.result.s1.o0": "따라서 서버에서 파라미터를 변조한 HTTP 요청에 대한 처리 오류가 발생했고, 나아가 서버에서 해당 HTTP 요청을 차단하지 않았습니다.",
  "2.http.parameter_tamper.error.solution.s0.o0": "매개변수 변조를 막기 위해서는 매개변수 값의 최대/최소 길이를 설정하거나, 허용되는 값의 범위, 패턴 등을 통해 매개변수 값을 제한하고 유효성을 확인해야 합니다.",
  "2.http.parameter_tamper.error.solution.s0.o1": "이러한 유효성 검사 이외에도 매개변수로 입력되는 값에 대한 화이트리스트를 만들어 승인된 것만 받아들이거나 블랙릭스트를 만들어 승인되지 않은 값을 차단해야 합니다.",
  "2.http.parameter_tamper.error.solution.s0.o2": "HTTP 요청의 헤더, 쿠키, URL의 매개변수, 폼 필드 값 등 HTTP 요청의 모든 부분에 대해 변조 가능성을 고려해야 합니다.",
  "2.http.path_traversal.match.attack.s0.o0": "경로 조작은 공격자가 입력하는 값이 디렉토리 경로 문자열에 사용되어 공격자가 웹 애플리케이션의 최상단 디렉토리 밖의 파일 시스템에 접근하는 공격입니다.",
  "2.http.path_traversal.match.attack.s0.o1": "공격자는 파일 시스템에 접근하여 웹 애플리케이션의 코드나 시스템 파일 등의 중요 정보에 접근할 수 있습니다.",
  "2.http.path_traversal.match.attack.s0.o2": "예를 들어, 다음과 같이 URL에 있는 매개변수 값이 파일을 불러오는데 쓰이는 경우,",
  "2.http.path_traversal.match.attack.s1.o0": "{0}",
  "2.http.path_traversal.match.attack.s2.o0": "다음과 같이 대부분의 파일 시스템이 상위 디렉토리의 경로를 나타내는데 쓰는 '../'을 사용하여 웹 애플리케이션의 최상단 디렉토리 밖에 있는 파일에 접근할 수 있습니다.",
  "2.http.path_traversal.match.attack.s3.o0": "{0}",
  "2.http.path_traversal.match.attack.s4.o0": "이러한 경로 조작이 가능한지를 확인하기 위해, 경로 조작을 위한 {0} 공격 문자열을 담은 HTTP 요청을 다음과 같이 보냈습니다.",
  "2.http.path_traversal.match.attack.s5.o0": "{0}",
  "2.http.path_traversal.match.attack.s5.o1": "{0}",
  "2.http.path_traversal.match.result.s0.o0": "HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.path_traversal.match.result.s1.o0": "{0}",
  "2.http.path_traversal.match.result.s2.o0": "{0} 공격 문자열에 의해 경로가 조작되어 HTTP 응답에 파일 내용이 포함되었음을 확인할 수 있습니다.",
  "2.http.path_traversal.match.solution.s0.o0": "경로 조작을 막기 위해서는 사용자 입력을 파일 시스템의 파일 및 디렉토리 접근에 사용하지 말아야 합니다.",
  "2.http.path_traversal.match.solution.s0.o1": "사용자 입력을 사용해야 한다면, 사용자 입력이 경로의 전체에 적용되지 못하게 해야 하며, 사용자 입력의 유효성을 검사해야 합니다.",
  "2.http.path_traversal.match.solution.s0.o2": "또한, JAVA의 URI.normalize()와 같이 경로 조작이 가능한 값을 인코딩하는 함수를 사용하여 사용자 입력을 수정한 후에 사용해야 합니다.",
  "2.http.phf_command_execution.phf.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.phf_command_execution.phf.attack.s0.o1": "{0}",
  "2.http.phf_command_execution.phf.attack.s0.o2": "{0}",
  "2.http.phf_command_execution.phf.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.phf_command_execution.phf.result.s0.o1": "{0}",
  "2.http.phf_command_execution.phf.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 특정 명령어를 실행할 수 있습니다.",
  "2.http.phf_command_execution.phf.solution.s0.o0": "이 취약점을 해결하기 위해서 다음과 같은 지침을 따르세요.",
  "2.http.phf_command_execution.phf.solution.s1.o0": "PHF와 같이 'escape_shell_cmd()' 함수를 사용하는 취약한 CGI 프로그램을 사용하지 않도록 합니다.",
  "2.http.phf_command_execution.phf.solution.s2.o0": "사용이 불가피한 경우, 'escape_shell_cmd()' 함수를 사용하지 않도록 CGI 프로그램을 수정하세요.",
  "2.http.remote_file_include.execute.attack.s0.o0": "다음과 같은 원본 HTTP 요청을 서버로 전송했습니다.",
  "2.http.remote_file_include.execute.attack.s0.o1": "{0}",
  "2.http.remote_file_include.execute.attack.s0.o2": "{0}",
  "2.http.remote_file_include.execute.attack.s1.o0": "다음과 같은 공격 HTTP 요청을 서버로 전송했습니다.",
  "2.http.remote_file_include.execute.attack.s1.o1": "{0}",
  "2.http.remote_file_include.execute.attack.s1.o2": "{0}",
  "2.http.remote_file_include.execute.result.s0.o0": "공격 HTTP 요청에 대한 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.remote_file_include.execute.result.s0.o1": "{0}",
  "2.http.remote_file_include.execute.result.s0.o2": "해당 문자열은 원본 HTTP 요청에 대한 응답 본문 내에 존재하지 않습니다.",
  "2.http.remote_file_include.execute.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 원본 페이지 내에 존재하지 않았던 외부 사이트의 내용을 해당 페이지 내에 포함시킬 수 있습니다.",
  "2.http.remote_file_include.execute.solution.s0.o0": "원격 파일 포함 취약점을 없애기 위해서는 파일 업로드 및 실행에 사용자 입력을 사용하지 말아야 합니다.",
  "2.http.remote_file_include.execute.solution.s0.o1": "만약 사용자 입력을 사용해야 한다면, 사용자 인증을 강화하고 화이트리스트를 만들어 인증된 파일만 포함 및 실행하거나, 블랙리스트를 만들어 인증되지 않은 파일을 제외해야 합니다.",
  "2.http.remote_file_include.execute.solution.s0.o2": "이외에도 웹 방화벽을 통해 원격 파일의 업로드 자체를 막을 수 있습니다.",
  "2.http.server_side_include.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.server_side_include.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.server_side_include.custom.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.server_side_include.custom.attack.s0.o1": "{0}",
  "2.http.server_side_include.custom.attack.s0.o2": "설정한 값은 사용자 정의 공격 문자열에 해당합니다.",
  "2.http.server_side_include.custom.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.server_side_include.custom.attack.s1.o1": "{0}",
  "2.http.server_side_include.custom.attack.s1.o2": "{0}",
  "2.http.server_side_include.custom.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.server_side_include.custom.result.s0.o1": "{0}",
  "2.http.server_side_include.custom.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.server_side_include.custom.result.s1.o1": "{0}",
  "2.http.server_side_include.custom.result.s2.o0": "분석 수행 결과, 사용자 정의 검출 규칙 {0}에 부합하는 문자열을 발견했습니다.",
  "2.http.server_side_include.custom.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "2.http.server_side_include.custom.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "2.http.server_side_include.exec_unix.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.server_side_include.exec_unix.attack.s0.o1": "{0}",
  "2.http.server_side_include.exec_unix.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.server_side_include.exec_unix.attack.s1.o1": "{0}",
  "2.http.server_side_include.exec_unix.attack.s1.o2": "{0}",
  "2.http.server_side_include.exec_unix.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.server_side_include.exec_unix.result.s0.o1": "{0}",
  "2.http.server_side_include.exec_unix.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.server_side_include.exec_unix.result.s1.o1": "{0}",
  "2.http.server_side_include.exec_unix.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값을 포함하는 SSI {0} 명령문이 서버에서 실행되었음을 발견했습니다.",
  "2.http.server_side_include.exec_unix.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 해당 SSI 명령문을 통해 UNIX 계열 운영 체제 기반 서버의 루트 경로에 존재하는 파일 목록을 열람할 수 있습니다.",
  "2.http.server_side_include.exec_unix.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "2.http.server_side_include.exec_unix.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "2.http.server_side_include.exec_win.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.server_side_include.exec_win.attack.s0.o1": "{0}",
  "2.http.server_side_include.exec_win.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.server_side_include.exec_win.attack.s1.o1": "{0}",
  "2.http.server_side_include.exec_win.attack.s1.o2": "{0}",
  "2.http.server_side_include.exec_win.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "2.http.server_side_include.exec_win.result.s0.o1": "{0}",
  "2.http.server_side_include.exec_win.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.server_side_include.exec_win.result.s1.o1": "{0}",
  "2.http.server_side_include.exec_win.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값을 포함하는 SSI {0} 명령문이 서버에서 실행되었음을 발견했습니다.",
  "2.http.server_side_include.exec_win.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 해당 SSI 명령문을 통해 Windows 계열 운영 체제 기반 서버의 루트 경로에 존재하는 파일 목록을 열람할 수 있습니다.",
  "2.http.server_side_include.exec_win.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "2.http.server_side_include.exec_win.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "2.http.server_side_include.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.server_side_include.invocation.attack.s0.o1": "{0}",
  "2.http.server_side_include.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.server_side_include.invocation.attack.s1.o1": "{0}",
  "2.http.server_side_include.invocation.attack.s1.o2": "{0}",
  "2.http.server_side_include.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "2.http.server_side_include.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "2.http.server_side_include.invocation.result.s0.o2": "{0}",
  "2.http.server_side_include.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "2.http.server_side_include.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "2.http.server_side_include.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되고, 해당 메소드를 통해 SSI {0} 명령문이 실행됩니다.",
  "2.http.server_side_include.invocation.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "2.http.server_side_include.invocation.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "2.http.snoop_disclosure.request.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.snoop_disclosure.request.attack.s0.o1": "{0}",
  "2.http.snoop_disclosure.request.attack.s0.o2": "{0}",
  "2.http.snoop_disclosure.request.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.snoop_disclosure.request.result.s0.o1": "{0}",
  "2.http.snoop_disclosure.request.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 Snoop 정보 노출이 발생했습니다.",
  "2.http.snoop_disclosure.request.solution.s0.o0": "Snoop 서블릿 정보 노출 취약점을 해결하기 위해서는 취약한 Snoop 서블릿과 이러한 Snoop 서블릿을 사용하고 있는 웹 서버의 사용을 피해야 합니다.",
  "2.http.sql_injection.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.sql_injection.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.sql_injection.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.sql_injection.invocation.attack.s0.o1": "{0}",
  "2.http.sql_injection.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.sql_injection.invocation.attack.s1.o1": "{0}",
  "2.http.sql_injection.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "2.http.sql_injection.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "2.http.sql_injection.invocation.result.s0.o2": "{0}",
  "2.http.sql_injection.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "2.http.sql_injection.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "2.http.sql_injection.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되고, 해당 메소드를 통해 SQL문을 처리합니다.",
  "2.http.sql_injection.invocation.solution.s1.o0": "SQL문을 사용하는 경우, 해당 SQL문에 대하여 매개변수화한 후에 사용해야 합니다.",
  "2.http.sql_injection.invocation.solution.s1.o1": "매개변수화한 SQL문을 사용하는 경우, 삽입 공격에 사용할 수 있는 위험한 구문이나 키워드, 문자 등을 SQL문 실행 이전에 필터링할 수 있습니다.",
  "2.http.tomcat_examples.access.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.tomcat_examples.access.attack.s0.o1": "{0}",
  "2.http.tomcat_examples.access.attack.s0.o2": "{0}",
  "2.http.tomcat_examples.access.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.tomcat_examples.access.result.s0.o1": "{0}",
  "2.http.tomcat_examples.access.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 Apache Tomcat 예제 페이지에 접근할 수 있습니다.",
  "2.http.tomcat_examples.access.solution.s0.o0": "Apache Tomcat 예제 페이지 노출을 막기 위해서는 기본적으로 Apache Tomcat 기본 페이지에 대한 접근을 차단해야 합니다.",
  "2.http.unlimited_password_error.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.unlimited_password_error.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "2.http.unlimited_password_error.five_times.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.unlimited_password_error.five_times.attack.s0.o1": "{0}",
  "2.http.unlimited_password_error.five_times.attack.s0.o2": "{0}",
  "2.http.unlimited_password_error.five_times.attack.s1.o0": "로그인 시도를 위한 HTTP 요청을 다음과 같이 구성했습니다.",
  "2.http.unlimited_password_error.five_times.attack.s1.o1": "{0}",
  "2.http.unlimited_password_error.five_times.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.unlimited_password_error.five_times.attack.s2.o1": "{0}",
  "2.http.unlimited_password_error.five_times.attack.s2.o2": "{0}",
  "2.http.unlimited_password_error.five_times.attack.s3.o0": "위와 같은 과정을 총 5번 반복했습니다.",
  "2.http.unlimited_password_error.five_times.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답 본문은 다음과 같습니다.",
  "2.http.unlimited_password_error.five_times.result.s0.o1": "{0}",
  "2.http.unlimited_password_error.five_times.result.s0.o2": "해당 HTTP 응답 본문에서 {0} 타입의 {1} 웹 요소를 발견했으며, 해당 웹 요소의 이름은 {2}입니다.",
  "2.http.unlimited_password_error.five_times.result.s0.o3": "발견한 웹 요소로 인해 해당 페이지에서 로그인이 가능함을 확인했습니다.",
  "2.http.unlimited_password_error.five_times.result.s1.o0": "로그인 시도를 위한 5번의 HTTP 요청에 대한 HTTP 응답 본문을 각각 비교했습니다.",
  "2.http.unlimited_password_error.five_times.result.s2.o0": "HTTP 응답 본문 비교 결과, 로그인 시도를 위한 HTTP 요청마다 동일한 HTTP 응답 본문을 수신했음을 확인했습니다.",
  "2.http.unlimited_password_error.five_times.result.s2.o1": "따라서 서버에서 클라이언트의 반복적인 로그인 시도를 제한하지 않게 됩니다.",
  "2.http.unlimited_password_error.five_times.solution.s0.o0": "특정 클라이언트의 인증 오류가 지나치게 연속적으로 발생하는 경우, 해당 클라이언트의 인증 시도를 제한해야 합니다.",
  "2.http.unlimited_password_error.five_times.solution.s0.o1": "최대 5번의 인증 오류 발생 이후에는 추가적인 인증 과정을 요구해야 합니다.",
  "2.http.weak_password.brute_force.attack.s0.o0": "다음과 같은 원본 HTTP 요청을 서버로 전송했습니다.",
  "2.http.weak_password.brute_force.attack.s0.o1": "{0}",
  "2.http.weak_password.brute_force.attack.s0.o2": "{0}",
  "2.http.weak_password.brute_force.attack.s1.o0": "다음과 같은 공격 HTTP 요청을 서버로 전송했습니다.",
  "2.http.weak_password.brute_force.attack.s1.o1": "{0}",
  "2.http.weak_password.brute_force.attack.s1.o2": "{0}",
  "2.http.weak_password.brute_force.result.s0.o0": "원본 HTTP 요청에 대한 응답 본문과 공격 HTTP 요청에 대한 응답 본문 간에 유사도가 충분히 낮습니다.",
  "2.http.weak_password.brute_force.result.s0.o1": "또한, 공격 HTTP 요청에 대한 응답 내에 존재하는 Form 태그 요소 중, type의 값이 password에 해당하는 요소가 존재하지 않습니다.",
  "2.http.weak_password.brute_force.result.s1.o0": "따라서 공격 HTTP 요청에 의하여 인증이 성공했고, 나아가 비밀번호 검증 수준이 충분하지 않았습니다.",
  "2.http.weak_password.brute_force.solution.s0.o0": "취약한 비밀번호 취약점을 해결하기 위해서는 사용자가 충분히 긴 길이의 비밀번호를 사용하게 만들어야 합니다.",
  "2.http.weak_password.brute_force.solution.s0.o1": "또한, 알파벳 대소문자, 숫자, 특수문자 등을 조합하게 만들어 일반적이지 않은 비밀번호를 사용하게 만들어야 합니다.",
  "2.http.xitami_information_leakage.testcgi.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "2.http.xitami_information_leakage.testcgi.attack.s0.o1": "{0}",
  "2.http.xitami_information_leakage.testcgi.attack.s0.o2": "{0}",
  "2.http.xitami_information_leakage.testcgi.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "2.http.xitami_information_leakage.testcgi.result.s0.o1": "{0}",
  "2.http.xitami_information_leakage.testcgi.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 Xitami 관련 정보 노출이 발생했습니다.",
  "2.http.xitami_information_leakage.testcgi.solution.s0.o0": "testcgi.exe 파일을 제거하세요.",
  "2.http.xitami_information_leakage.testcgi.solution.s0.o1": "혹은 해당 파일의 기본 설치 위치가 아닌 다른 위치에 해당 파일을 위치시켜야 합니다.",
  "3.event.sql_injection.success.attack.s0.o0": "SQL 삽입을 확인하기 위해 로그인 페이지에 특수문자가 포함된 공격 문자열을 대입했습니다.",
  "3.event.sql_injection.success.attack.s1.o0": "공격 위치",
  "3.event.sql_injection.success.attack.s1.o1": "{0}",
  "3.event.sql_injection.success.attack.s2.o0": "공격 문자",
  "3.event.sql_injection.success.attack.s2.o1": "{0}",
  "3.event.sql_injection.success.result.s0.o0": "공격 문자열이 포함된 로그인 시도에 대한 결과는 다음과 같습니다.",
  "3.event.sql_injection.success.result.s1.o0": "{0}",
  "3.event.sql_injection.success.result.s2.o0": "SQL 삽입의 위험이 있는 특수 문자가 필터링되지 않아서 페이지가 변조되었습니다.",
  "3.event.sql_injection.success.result.s3.o0": "따라서 공격이 성공했거나 비정상적인 동작이 발생했음을 확인할 수 있습니다.",
  "3.event.sql_injection.success.solution.s0.o0": "악의적인 사용자가 입력한 SQL 쿼리로 DBMS 및 데이터를 열람하거나 조작할 수 있으므로 사용자의 입력값을 필터링하도록 구현해야 합니다.",
  "3.event.sql_injection.success.solution.s0.o1": "{0}, {1}, {2}, {3}, {4} 등의 특수문자는 SQL 삽입을 발생시킬 수 있는 대표적인 위험한 문자이므로 사용자 입력값에 사용하지 않도록 유의해야 합니다.",
  "3.event.sql_injection.success.solution.s1.o0": "Java :",
  "3.event.sql_injection.success.solution.s1.o1": "{0}",
  "3.event.sql_injection.success.solution.s2.o0": "JSP :",
  "3.event.sql_injection.success.solution.s2.o1": "{0}",
  "3.event.sql_injection.success.solution.s3.o0": "PHP :",
  "3.event.sql_injection.success.solution.s3.o1": "{0}",
  "3.http.application_error.error.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.application_error.error.attack.s0.o1": "{0}",
  "3.http.application_error.error.attack.s0.o2": "{0}",
  "3.http.application_error.error.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "3.http.application_error.error.result.s0.o1": "{0}",
  "3.http.application_error.error.result.s1.o0": "HTTP 응답의 상태 코드가 다음과 같습니다.",
  "3.http.application_error.error.result.s1.o1": "{0}",
  "3.http.application_error.error.result.s2.o0": "분석 수행 결과, 해당 페이지에서 애플리케이션 오류가 발생함을 확인했습니다.",
  "3.http.application_error.error.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 애플리케이션 오류가 발생합니다.",
  "3.http.application_error.error.solution.s0.o0": "해당 페이지에서 발생하는 애플리케이션 오류를 수정해야 합니다.",
  "3.http.application_error.success.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.application_error.success.attack.s0.o1": "{0}",
  "3.http.application_error.success.attack.s0.o2": "{0}",
  "3.http.application_error.success.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "3.http.application_error.success.result.s0.o1": "{0}",
  "3.http.application_error.success.result.s1.o0": "HTTP 응답의 본문 중에서 다음 부분이 오류 페이지의 패턴을 충족합니다.",
  "3.http.application_error.success.result.s1.o1": "{0}",
  "3.http.application_error.success.result.s2.o0": "분석 수행 결과, 해당 페이지는 오류 페이지에 해당함을 확인했습니다.",
  "3.http.application_error.success.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의해 애플리케이션 오류가 발생합니다.",
  "3.http.application_error.success.solution.s0.o0": "해당 페이지에서 발생하는 애플리케이션 오류를 수정해야 합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s0.o1": "해당 HTTP 요청은 대조군에 해당합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s0.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s0.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s1.o1": "해당 HTTP 요청은 1차 비교군에 해당하며, SQL문에 'AND FALSE' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s1.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s1.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s2.o1": "해당 HTTP 요청은 2차 비교군에 해당하며, SQL문에 'OR TRUE' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s2.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.attack.s2.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.result.s1.o0": "대조군 및 1차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.result.s1.o1": "또한, 대조군 및 2차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일하지 않습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.result.s2.o0": "HTTP 응답 본문 비교 결과, HTTP 요청이 포함하는 구문에 의한 HTTP 응답 본문 간 차이를 발견했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.result.s2.o1": "이는 HTTP 응답 본문 간 차이를 기반으로, 서버의 SQL문 처리 관련 정보를 추정할 수 있음을 의미합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_false.solution.s0.o0": "SQL문 처리 도중 발생하는 특정 구문 처리 결과로 인하여 응답 내용에 차이가 발생하지 않도록 해야 합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s0.o1": "해당 HTTP 요청은 대조군에 해당합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s0.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s0.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s1.o1": "해당 HTTP 요청은 1차 비교군에 해당하며, SQL문에 'AND TRUE' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s1.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s1.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s2.o1": "해당 HTTP 요청은 2차 비교군에 해당하며, SQL문에 'AND FALSE' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s2.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.attack.s2.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.result.s1.o0": "대조군 및 1차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.result.s1.o1": "또한, 대조군 및 2차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일하지 않습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.result.s2.o0": "HTTP 응답 본문 비교 결과, HTTP 요청이 포함하는 구문에 의한 HTTP 응답 본문 간 차이를 발견했습니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.result.s2.o1": "이는 HTTP 응답 본문 간 차이를 기반으로, 서버의 SQL문 처리 관련 정보를 추정할 수 있음을 의미합니다.",
  "3.http.blind_sql_injection.compare_boolean_and_first_true.solution.s0.o0": "SQL문 처리 도중 발생하는 특정 구문 처리 결과로 인하여 응답 내용에 차이가 발생하지 않도록 해야 합니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s0.o1": "해당 HTTP 요청은 대조군에 해당합니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s0.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s0.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s1.o1": "해당 HTTP 요청은 1차 비교군에 해당하며, SQL문에 'OR TRUE' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s1.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s1.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s2.o1": "해당 HTTP 요청은 2차 비교군에 해당하며, SQL문에 'AND FALSE' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s2.o2": "{0}",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.attack.s2.o3": "{0}",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.result.s1.o0": "대조군 HTTP 요청에 대한 응답 본문 크기에 비하여, 1차 비교군 HTTP 요청에 대한 응답 본문 크기가 {0}% 이상 크게 나타납니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.result.s1.o1": "또한, 대조군 및 2차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일합니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.result.s2.o0": "HTTP 응답 본문 비교 결과, HTTP 요청이 포함하는 구문에 의한 HTTP 응답 본문 간 차이를 발견했습니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.result.s2.o1": "이는 HTTP 응답 본문 간 차이를 기반으로, 서버의 SQL문 처리 관련 정보를 추정할 수 있음을 의미합니다.",
  "3.http.blind_sql_injection.compare_boolean_or_first_false.solution.s0.o0": "SQL문 처리 도중 발생하는 특정 구문 처리 결과로 인하여 응답 내용에 차이가 발생하지 않도록 해야 합니다.",
  "3.http.blind_sql_injection.compare_expression.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_expression.attack.s0.o1": "해당 HTTP 요청은 대조군에 해당합니다.",
  "3.http.blind_sql_injection.compare_expression.attack.s0.o2": "{0}",
  "3.http.blind_sql_injection.compare_expression.attack.s0.o3": "{0}",
  "3.http.blind_sql_injection.compare_expression.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_expression.attack.s1.o1": "해당 HTTP 요청은 1차 비교군에 해당하며, SQL문에 '+ 2 - 2' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_expression.attack.s1.o2": "{0}",
  "3.http.blind_sql_injection.compare_expression.attack.s1.o3": "{0}",
  "3.http.blind_sql_injection.compare_expression.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_expression.attack.s2.o1": "해당 HTTP 요청은 2차 비교군에 해당하며, SQL문에 '+ 3 - 2' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_expression.attack.s2.o2": "{0}",
  "3.http.blind_sql_injection.compare_expression.attack.s2.o3": "{0}",
  "3.http.blind_sql_injection.compare_expression.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "3.http.blind_sql_injection.compare_expression.result.s1.o0": "대조군 및 1차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일합니다.",
  "3.http.blind_sql_injection.compare_expression.result.s1.o1": "또한, 대조군 및 2차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일하지 않습니다.",
  "3.http.blind_sql_injection.compare_expression.result.s2.o0": "HTTP 응답 본문 비교 결과, HTTP 요청이 포함하는 구문에 의한 HTTP 응답 본문 간 차이를 발견했습니다.",
  "3.http.blind_sql_injection.compare_expression.result.s2.o1": "이는 HTTP 응답 본문 간 차이를 기반으로, 서버의 SQL문 처리 관련 정보를 추정할 수 있음을 의미합니다.",
  "3.http.blind_sql_injection.compare_expression.solution.s0.o0": "SQL문 처리 도중 발생하는 특정 구문 처리 결과로 인하여 응답 내용에 차이가 발생하지 않도록 해야 합니다.",
  "3.http.blind_sql_injection.compare_order_by.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_order_by.attack.s0.o1": "해당 HTTP 요청은 대조군에 해당합니다.",
  "3.http.blind_sql_injection.compare_order_by.attack.s0.o2": "{0}",
  "3.http.blind_sql_injection.compare_order_by.attack.s0.o3": "{0}",
  "3.http.blind_sql_injection.compare_order_by.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_order_by.attack.s1.o1": "해당 HTTP 요청은 1차 비교군에 해당하며, SQL문에 'ASC' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_order_by.attack.s1.o2": "{0}",
  "3.http.blind_sql_injection.compare_order_by.attack.s1.o3": "{0}",
  "3.http.blind_sql_injection.compare_order_by.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.compare_order_by.attack.s2.o1": "해당 HTTP 요청은 2차 비교군에 해당하며, SQL문에 'DESC' 구문을 포함한다고 가정합니다.",
  "3.http.blind_sql_injection.compare_order_by.attack.s2.o2": "{0}",
  "3.http.blind_sql_injection.compare_order_by.attack.s2.o3": "{0}",
  "3.http.blind_sql_injection.compare_order_by.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "3.http.blind_sql_injection.compare_order_by.result.s1.o0": "대조군 및 1차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일합니다.",
  "3.http.blind_sql_injection.compare_order_by.result.s1.o1": "또한, 대조군 및 2차 비교군에 해당하는 각 HTTP 요청에 대한 응답 본문이 동일하지 않습니다.",
  "3.http.blind_sql_injection.compare_order_by.result.s2.o0": "HTTP 응답 본문 비교 결과, HTTP 요청이 포함하는 구문에 의한 HTTP 응답 본문 간 차이를 발견했습니다.",
  "3.http.blind_sql_injection.compare_order_by.result.s2.o1": "이는 HTTP 응답 본문 간 차이를 기반으로, 서버의 SQL문 처리 관련 정보를 추정할 수 있음을 의미합니다.",
  "3.http.blind_sql_injection.compare_order_by.solution.s0.o0": "SQL문 처리 도중 발생하는 특정 구문 처리 결과로 인하여 응답 내용에 차이가 발생하지 않도록 해야 합니다.",
  "3.http.blind_sql_injection.error_generic.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.error_generic.attack.s0.o1": "{0}",
  "3.http.blind_sql_injection.error_generic.attack.s0.o2": "{0}",
  "3.http.blind_sql_injection.error_generic.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "3.http.blind_sql_injection.error_generic.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.blind_sql_injection.error_generic.result.s1.o1": "{0}",
  "3.http.blind_sql_injection.error_generic.result.s2.o1": "이는 해당 오류 메시지를 통해 서버에서 사용 중인 DBMS 혹은 SQL문 처리 관련 정보 노출이 발생함을 의미합니다.",
  "3.http.blind_sql_injection.error_generic.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 메세지를 출력해야 합니다.",
  "3.http.blind_sql_injection.error_generic.solution.s0.o1": "오류 메시지의 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하지만, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "3.http.blind_sql_injection.error_specific.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.error_specific.attack.s0.o1": "{0}",
  "3.http.blind_sql_injection.error_specific.attack.s0.o2": "{0}",
  "3.http.blind_sql_injection.error_specific.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "3.http.blind_sql_injection.error_specific.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.blind_sql_injection.error_specific.result.s1.o1": "{0}",
  "3.http.blind_sql_injection.error_specific.result.s2.o0": "해당 문자열은 {0} DBMS에서 발생 가능한 SQL문 처리 오류 메시지로 간주할 수 있습니다.",
  "3.http.blind_sql_injection.error_specific.result.s2.o1": "이는 해당 오류 메시지를 통하여 서버에서 사용 중인 특정 DBMS 혹은 SQL문 처리 관련 정보 노출이 발생함을 의미합니다.",
  "3.http.blind_sql_injection.error_specific.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 메세지를 출력해야 합니다.",
  "3.http.blind_sql_injection.error_specific.solution.s0.o1": "오류 메시지의 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하지만, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "3.http.blind_sql_injection.error_union.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.blind_sql_injection.error_union.attack.s0.o1": "{0}",
  "3.http.blind_sql_injection.error_union.attack.s0.o2": "{0}",
  "3.http.blind_sql_injection.error_union.result.s0.o0": "HTTP 응답을 서버로부터 수신했습니다.",
  "3.http.blind_sql_injection.error_union.result.s1.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.blind_sql_injection.error_union.result.s1.o1": "{0}",
  "3.http.blind_sql_injection.error_union.result.s2.o0": "해당 문자열은 {0} DBMS에서 발생 가능한 UNION절 처리 오류 메시지로 간주할 수 있습니다.",
  "3.http.blind_sql_injection.error_union.result.s2.o1": "이는 해당 오류 메시지를 통해 서버에서 사용 중인 DBMS 혹은 SQL문 처리 관련 정보 노출이 발생함을 의미합니다.",
  "3.http.blind_sql_injection.error_union.solution.s0.o0": "SQL문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 메세지를 출력해야 합니다.",
  "3.http.blind_sql_injection.error_union.solution.s0.o1": "오류 메시지의 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하지만, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "3.http.external_redirect.conditional.attack_form": "폼을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "3.http.external_redirect.conditional.attack_query_string": "쿼리 문자열을 통해 전송한 매개변수 {0}의 값을 다음과 같이 설정했습니다.",
  "3.http.external_redirect.invocation.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "3.http.external_redirect.invocation.attack.s0.o1": "{0}",
  "3.http.external_redirect.invocation.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.external_redirect.invocation.attack.s1.o1": "{0}",
  "3.http.external_redirect.invocation.attack.s1.o2": "{0}",
  "3.http.external_redirect.invocation.result.s0.o0": "트루스캔을 통해 서버 JVM 내부에서 {0} 메소드 호출 정보를 탐지했습니다.",
  "3.http.external_redirect.invocation.result.s0.o1": "해당 메소드의 {0} 매개변수에 대한 인수는 다음과 같습니다.",
  "3.http.external_redirect.invocation.result.s0.o2": "{0}",
  "3.http.external_redirect.invocation.result.s0.o3": "해당 메소드에 대한 자세한 정보는 다음 링크를 참조하세요. {0}",
  "3.http.external_redirect.invocation.result.s1.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 메소드의 {1} 매개변수에 존재함을 발견했습니다.",
  "3.http.external_redirect.invocation.result.s1.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 해당 메소드가 호출되었으며, 해당 메소드를 통해 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "3.http.external_redirect.invocation.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "3.http.external_redirect.invocation.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증을 수행해야 합니다.",
  "3.http.external_redirect.redirect_header.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "3.http.external_redirect.redirect_header.attack.s0.o1": "{0}",
  "3.http.external_redirect.redirect_header.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.external_redirect.redirect_header.attack.s1.o1": "{0}",
  "3.http.external_redirect.redirect_header.attack.s1.o2": "{0}",
  "3.http.external_redirect.redirect_header.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "3.http.external_redirect.redirect_header.result.s0.o1": "{0}",
  "3.http.external_redirect.redirect_header.result.s1.o0": "HTTP 응답의 {0} 헤더의 값에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.external_redirect.redirect_header.result.s1.o1": "{0}",
  "3.http.external_redirect.redirect_header.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 {0} 헤더 값에 존재함을 발견했습니다.",
  "3.http.external_redirect.redirect_header.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "3.http.external_redirect.redirect_header.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "3.http.external_redirect.redirect_header.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "3.http.external_redirect.redirect_js.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "3.http.external_redirect.redirect_js.attack.s0.o1": "{0}",
  "3.http.external_redirect.redirect_js.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.external_redirect.redirect_js.attack.s1.o1": "{0}",
  "3.http.external_redirect.redirect_js.attack.s1.o2": "{0}",
  "3.http.external_redirect.redirect_js.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "3.http.external_redirect.redirect_js.result.s0.o1": "{0}",
  "3.http.external_redirect.redirect_js.result.s1.o0": "HTTP 응답의 본문 중, JavaScript 문에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.external_redirect.redirect_js.result.s1.o1": "{0}",
  "3.http.external_redirect.redirect_js.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 JavaScript 문에 존재함을 발견했습니다.",
  "3.http.external_redirect.redirect_js.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "3.http.external_redirect.redirect_js.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "3.http.external_redirect.redirect_js.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "3.http.external_redirect.redirect_meta.attack.s0.o0": "서버에 전송할 HTTP 요청을 다음과 같이 구성했습니다.",
  "3.http.external_redirect.redirect_meta.attack.s0.o1": "{0}",
  "3.http.external_redirect.redirect_meta.attack.s1.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.external_redirect.redirect_meta.attack.s1.o1": "{0}",
  "3.http.external_redirect.redirect_meta.attack.s1.o2": "{0}",
  "3.http.external_redirect.redirect_meta.result.s0.o0": "서버로 전송한 HTTP 요청에 대한 HTTP 응답은 다음과 같습니다.",
  "3.http.external_redirect.redirect_meta.result.s0.o1": "{0}",
  "3.http.external_redirect.redirect_meta.result.s1.o0": "HTTP 응답의 본문 중, {0} 속성값이 {1}인 Meta 태그의 {2} 속성값에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.external_redirect.redirect_meta.result.s1.o1": "{0}",
  "3.http.external_redirect.redirect_meta.result.s2.o0": "분석 수행 결과, HTTP 요청을 구성할 때 설정한 값이 Meta 태그의 {0} 속성값에 존재함을 발견했습니다.",
  "3.http.external_redirect.redirect_meta.result.s2.o1": "따라서 서버로 전송한 HTTP 요청에 의하여 {0} 위치로 리다이렉션이 발생할 수 있습니다.",
  "3.http.external_redirect.redirect_meta.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "3.http.external_redirect.redirect_meta.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "3.http.local_file_include.jsp.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.local_file_include.jsp.attack.s0.o1": "{0}",
  "3.http.local_file_include.jsp.attack.s0.o2": "{0}",
  "3.http.local_file_include.jsp.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.local_file_include.jsp.result.s0.o1": "{0}",
  "3.http.local_file_include.jsp.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 서버의 해당 파일을 현재 페이지에 포함시킬 수 있습니다.",
  "3.http.local_file_include.jsp.solution.s0.o0": "페이지 내부에 특정 파일을 포함시키는 경우, 사용자 입력을 사용하지 않아야 합니다.",
  "3.http.local_file_include.jsp.solution.s1.o0": "사용자 입력에 해당하는 서버 내부의 특정 파일을 포함시켜야 하는 경우, 사용자 입력에 대한 검증을 수행해야 합니다.",
  "3.http.local_file_include.jsp.solution.s1.o1": "사용자 입력에 중요 정보의 경로에 해당하는 문자열 혹은 상위 경로로 이동할 수 있는 '../'와 같은 문자가 포함된 경우 해당 문자를 다른 문자로 바꾸거나 제거해야 합니다.",
  "3.http.path_traversal.match.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.path_traversal.match.attack.s0.o1": "{0}",
  "3.http.path_traversal.match.attack.s0.o2": "{0}",
  "3.http.path_traversal.match.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.path_traversal.match.result.s0.o1": "{0}",
  "3.http.path_traversal.match.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 서버의 특정 경로에 대한 접근이 성공했습니다.",
  "3.http.path_traversal.match.solution.s0.o0": "경로 조작을 막기 위해서는 사용자 입력을 파일 시스템의 파일 및 디렉토리 접근에 사용하지 말아야 합니다.",
  "3.http.path_traversal.match.solution.s0.o1": "사용자 입력을 사용해야 한다면, 사용자 입력이 경로의 전체에 적용되지 못하게 해야 하며, 사용자 입력의 유효성을 검사해야 합니다.",
  "3.http.path_traversal.match.solution.s0.o2": "또한, JAVA의 URI.normalize()와 같이 경로 조작이 가능한 값을 인코딩하는 함수를 사용하여 사용자 입력을 수정한 후에 사용해야 합니다.",
  "3.http.server_side_include.exec.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.server_side_include.exec.attack.s0.o1": "{0}",
  "3.http.server_side_include.exec.attack.s0.o2": "{0}",
  "3.http.server_side_include.exec.result.s0.o0": "HTTP 응답 본문에서 다음과 같은 문자열을 발견했습니다.",
  "3.http.server_side_include.exec.result.s0.o1": "{0}",
  "3.http.server_side_include.exec.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의해 해당 SSI 명령문을 실행하고, 루트 경로에 존재하는 파일 목록을 열람할 수 있습니다.",
  "3.http.server_side_include.exec.solution.s0.o0": "사용자 입력을 사용하여 SSI 명령문을 구성하지 않아야 합니다.",
  "3.http.server_side_include.exec.solution.s0.o1": "SSI 명령문을 구성하기 위해 사용자 입력을 사용하는 경우, 해당 사용자 입력에 대한 검증을 수행해야 합니다.",
  "3.http.unlimited_password_error.five_times.attack.s0.o0": "다음과 같은 원본 HTTP 요청을 서버로 전송했습니다.",
  "3.http.unlimited_password_error.five_times.attack.s0.o1": "{0}",
  "3.http.unlimited_password_error.five_times.attack.s0.o2": "{0}",
  "3.http.unlimited_password_error.five_times.attack.s1.o0": "5번의 다음과 같은 공격 HTTP 요청을 서버로 전송했습니다.",
  "3.http.unlimited_password_error.five_times.attack.s1.o1": "{0}",
  "3.http.unlimited_password_error.five_times.attack.s1.o2": "{0}",
  "3.http.unlimited_password_error.five_times.attack.s2.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "3.http.unlimited_password_error.five_times.attack.s2.o1": "{0}",
  "3.http.unlimited_password_error.five_times.attack.s2.o2": "{0}",
  "3.http.unlimited_password_error.five_times.attack.s3.o0": "위와 같은 과정을 총 5번 반복했습니다.",
  "3.http.unlimited_password_error.five_times.result.s0.o0": "원본 HTTP 요청에 대한 응답 본문에서 INPUT 태그 요소 중 type 값이 password인 요소를 발견했습니다.",
  "3.http.unlimited_password_error.five_times.result.s0.o1": "발견한 웹 요소로 인해 해당 페이지에서 로그인이 가능함을 확인했습니다.",
  "3.http.unlimited_password_error.five_times.result.s0.o2": "해당 HTTP 응답 본문에서 {0} 타입의 {1} 웹 요소를 발견했으며, 해당 웹 요소의 이름은 {2}입니다.",
  "3.http.unlimited_password_error.five_times.result.s0.o3": "발견한 웹 요소로 인해 해당 페이지에서 로그인이 가능함을 확인했습니다.",
  "3.http.unlimited_password_error.five_times.result.s1.o0": "모든 공격 요청에 대한 HTTP 응답 본문을 각각 비교했습니다.",
  "3.http.unlimited_password_error.five_times.result.s1.o1": "비교 결과, 모든 응답 본문이 동일합니다.",
  "3.http.unlimited_password_error.five_times.result.s2.o0": "따라서 서버에서 반복적인 로그인 시도를 제한하지 않게 됩니다.",
  "3.http.unlimited_password_error.five_times.result.s2.o1": "따라서 서버에서 클라이언트의 반복적인 로그인 시도를 제한하지 않게 됩니다.",
  "3.http.unlimited_password_error.five_times.solution.s0.o0": "특정 클라이언트의 인증 오류가 지나치게 연속적으로 발생하는 경우, 해당 클라이언트의 인증 시도를 제한해야 합니다.",
  "3.http.unlimited_password_error.five_times.solution.s0.o1": "최대 5번의 인증 오류 발생 이후에는 추가적인 인증 과정을 요구해야 합니다.",
  "4.http.external_redirect.redirect_header.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "4.http.external_redirect.redirect_header.attack.s0.o1": "{0}",
  "4.http.external_redirect.redirect_header.attack.s0.o2": "{0}",
  "4.http.external_redirect.redirect_header.result.s0.o0": "HTTP 응답의 Refresh 헤더 값에서 다음과 같은 문자열을 발견했습니다.",
  "4.http.external_redirect.redirect_header.result.s0.o1": "{0}",
  "4.http.external_redirect.redirect_header.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 리다이렉션이 발생할 수 있습니다.",
  "4.http.external_redirect.redirect_header.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "4.http.external_redirect.redirect_header.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "4.http.external_redirect.redirect_js.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "4.http.external_redirect.redirect_js.attack.s0.o1": "{0}",
  "4.http.external_redirect.redirect_js.attack.s0.o2": "{0}",
  "4.http.external_redirect.redirect_js.result.s0.o0": "HTTP 응답의 본문 중, JavaScript 문에서 다음과 같은 문자열을 발견했습니다.",
  "4.http.external_redirect.redirect_js.result.s0.o1": "{0}",
  "4.http.external_redirect.redirect_js.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 리다이렉션이 발생할 수 있습니다.",
  "4.http.external_redirect.redirect_js.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "4.http.external_redirect.redirect_js.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "4.http.external_redirect.redirect_meta.attack.s0.o0": "다음과 같은 HTTP 요청을 서버로 전송했습니다.",
  "4.http.external_redirect.redirect_meta.attack.s0.o1": "{0}",
  "4.http.external_redirect.redirect_meta.attack.s0.o2": "{0}",
  "4.http.external_redirect.redirect_meta.result.s0.o0": "HTTP 응답의 본문 중, http-equiv 속성값이 location 혹은 refresh인 Meta 태그의 content 속성값에서 다음과 같은 문자열을 발견했습니다.",
  "4.http.external_redirect.redirect_meta.result.s0.o1": "{0}",
  "4.http.external_redirect.redirect_meta.result.s1.o0": "따라서 서버로 전송한 HTTP 요청에 의하여 리다이렉션이 발생할 수 있습니다.",
  "4.http.external_redirect.redirect_meta.solution.s0.o0": "리다이렉션 수행 시 대상 위치 경로는 상수 문자열로서 정의하고, 사용자가 입력한 값은 사용하지 않아야 합니다.",
  "4.http.external_redirect.redirect_meta.solution.s0.o1": "사용자가 입력한 값에 해당하는 위치로의 리다이렉션 수행이 필요한 경우, 해당 입력값에 대한 검증이 필요합니다.",
  "ANALYSIS": "분석",
  "ARGUMENT_NUMBER_MISMATCH.description": "함수 매개 변수의 정의와 선언의 불일치 체커는 함수를 호출할 때 인자의 수가 정의된 매개 변수의 수와 일치하지 않는 코드를 검출합니다.\n.\n함수를 정의할 때 설정된 매개 변수 수와 해당 함수를 호출할 때 전달된 인자 수가 일치해야 합니다.",
  "ARRAY_ACCESS_ON_POINTER.description": "배열이 아닌 타입에 배열 접근 연산자 사용 체커는 배열이 안니 일반 포인터 타입 객체에 배열 접근 연산을 사용한 수식을 검출합니다.\n배열 접근 연산은 배열 타입 객체나 배열 타입 객체를 가리키는 포인터에만 사용하도록 합니다.",
  "AtLeastOneConstructor.description": "인터페이스가 아닌 비 정적 클래스에 생성자 정의도, 정적 메소드 정의도 없는 경우 이를 검출합니다.",
  "BOOLEAN_EXPR_IN_SWITCH.description": "switch 구문의 조건부에 Boolean 값 사용 체커는 조건부에 일반 변수가 아니라 Boolean 값이 나오는 switch 구문을 검출합니다.\nswitch 구문의 조건부에 Boolean 값이 오지 않도록 합니다. 만약 Boolean 값이 와야 하는 경우 switch 구문 대신 if 구문을 사용하도록 합니다.",
  "BRACE_OF_STATEMENT_SHOULD_OCCUPY_LINE.description": "개별 라인을 가지지 않은 중괄호 형식 체커는 조건문이나 반복문의 중괄호가 각각 한 라인을 가지지 않은 경우를 검출합니다.\n조건문이나 반복문의 중괄호가 각각 한 라인을 가지도록 소스 코드를 작성합니다.",
  "BooleanGetMethodName.description": "Boolean 타입을 반환하는 메소드가 'getX()'와 같이 이름 지어진 경우 이를 검출합니다. 해당 메소드는 관습적으로 'isX()'로 정의되어야 합니다.",
  "BooleanInstantiation.description": "불린 값을 정의하며 선언시 new 혹은 valueOf() 등의 구문 사용을 검출합니다.",
  "BooleanInversion.description": "비교할 때 =! pattern을 검출합니다.",
  "BoostForeachError.description": "BOOST_FOREACH는 end() 반복자를 저장하고 있습니다. 컨테이너 내부를 변형하는 것은 정의되지 않은 행동입니다.",
  "BrokenNullCheck.description": "널 검사를 수행하나, || 의 사용 등으로 인해 널 검사의 의미가 없어지는 경우 이를 검출합니다.",
  "ByteInstantiation.description": "'new Byte', 'new java.lang.Byte' 등의 allocation 구문을 검출합니다.",
  "CANONICALIZE_URL_RECEIVED_BY_PROVIDER.description": "컨텐트 프로바이더를 통한 파일 교환 전 정규화 누락 체커는 컨텐트 프로바이더를 통해 파일을 교환하기 전에 파일 이름을 정규화하지 않는 코드를 검출합니다.\n컨텐트 프로바이더 android.content.ContentProvider 클래스는 openFile() 메소드를 통해 다른 애플리케이션이 애플리케이션 데이터에 접근할 수 있는 기능을 제공합니다. 그러나 클래스의 구현에 따라 openFile() 메소드를 사용할 때 디렉토리 순회 취약점이 발생할 수 있습니다. 그러므로 컨텐트 프로바이더를 통해 파일을 교환할 때에는 파일의 경로를 사용하기 전에 정규화해야 합니다.\n컨텐트 프로바이더를 통한 파일 교환 전 File.getCanonicalPath()를 사용해서 파일의 경로를 정규화해야 합니다.",
  "CASE_ENDS_WITH_WHEN_OTHERS.ABAP.description": "부적절한 WHEN OTHERS 절 위치 체커는 CASE 구문 중간에 있는 WHEN OTHERS 절을 검출합니다.\nWHEN OTHERS 절의 위치를 CASE 구문의 맨 마지막으로 변경합니다.",
  "CATCH_ALL_EXCEPTIONS_THROWN_EXPLICITLY.description": "명시적인 예외 처리에 catch 문 미처리 체커는 코드에서 명시적으로 던져지는 각 예외가 해당 지점으로 이어질 수있는 모든 호출 경로에서 호환 가능한 유형의 핸들러를 가지지 않은 경우를 검출합니다.\n명시적으로 작성된 예외 처리는 반드시 catch를 통해서 처리해야 합니다.",
  "CATCH_EXCEPTIONS_BY_REFERENCE.description": "참조형이 아닌 타입을 예외로 받음 체커는 던진 예외를 참조형이 아닌 타입으로 받는 catch 구문을 검출합니다.\n예외를 받는 방법으로는 포인터를 통해 받는 방법, 값으로 받는 방법, 참조형으로 받는 방법이 있습니다.\ncatch 구문에서 항상 참조형으로 예외를 받도록 합니다.",
  "CATCH_EXCPETIONS_IN_HIERACHICAL_ORDER.description": "예외의 타입이 핸들러의 타입과 일치 하는지를 테스트 할 때, 하위 클래스 예외는 기초 클래스의 핸들러와 일치합니다. 기초 클래스 핸들러가 하위 클래스의 핸들러보다 먼저 발견되면 기초 클래스 핸들러가 사용됩니다. 하위 클래스 핸들러는 도달 할 수없는 코드이므로 실행할 수 없습니다.",
  "CHECK.DUPLICATED_PARAM.description": "중복 매개 변수 사용 체커는 특정 함수를 호출할 때 동일한 매개 변수 변수를 사용한 경우를 검출합니다.\n이때 특정 함수의 명칭은 옵션으로 입력할 수 있습니다. 특정 함수를 호출할 경우 동일한 매개 변수 값을 검사합니다. 일부 함수는 매개 변수로 동일한 변수를 다시 사용하는 것을 금지하고 있습니다.\n특정 함수 호출 시 동일한 변수를 연속하여 인자로 전달하지 않도록 합니다.",
  "CHECK.FIELD_ARRAY_LENGTH.description": "불충분한 필드 길이 체커는 특정 구조체의 특정 필드 길이가 지정한 길이보다 짧은 경우를 검출합니다.\n이때 특정 구조체와 필드의 명칭 및 길이는 옵션으로 입력할 수 있습니다. 해당 필드가 배열인 경우만 해당되며 할당하는 바이트 수가 아닌 원소의 개수를 셉니다.\n특정 구조체의 특정 필드 길이를 옵션에서 지정한 길이 이상으로 선언하도록 합니다.",
  "CHECK_ALIGNMENT_OF_MEMORY.description": "aligned_alloc() 함수로 할당한 메모리 재할당 체커는 aligned_alloc() 함수로 할당된 메모리를 realloc() 함수로 재할당하는 코드를 검출합니다.\naligned_alloc() 함수로 할당된 메모리를 realloc() 함수로 재할당하지 않도록 합니다.",
  "CHECK_EXIST_LINK_FILES.description": "심볼릭 링크 확인 없이 파일 열기 체커는 심볼릭 링크의 존재를 확인하지 않고 파일을 여는 경우를 검출합니다.\n파일을 열기 전에 심볼릭 링크의 존재를 확인하기 위해 open() 함수에서 O_NOFOLLOW 플래그를 설정해야 합니다.\n항상 심볼릭 링크를 확인하고 파일을 열도록 합니다.",
  "CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.description": "누락된 실수 입력에 대한 Infinity 검사 체커는 부동 소수점을 가질 수 있는 외부 입력값을 적절하게 검사하지 않는 코드를 검사합니다.\n외부 입력 값 val 변수에 대해 Double.isInfinite() 함수를 통해 유효성 검사를 수행합니다.",
  "CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_NAN.description": "누락된 실수 입력에 대한 NaN 검사 체커는 부동 소수점을 가질 수 있는 외부 입력값을 적절하게 검사하지 않는 코드를 검사합니다.\nDouble.isNaN 함수를 통해 외부 입력값 val 변수에 대해 유효성 검사를 수행합니다.",
  "CHECK_FOR_ASSIGNING_OBJECT_TO_ITSELF.description": "복사 대입 연산자에서 동일 포인터 미검사 체커는 인자로 넘어온 객체가 자기 자신과 같은지 비교하는 로직이 빠져 있는 복사 대입 연산자 선언을 검출합니다.\n단, 이러한 비교를 수행하는 로직은 다양하게 작성할 수 있습니다. 이 체커에서는 this == param과 같은 한정된 패턴만 검출합니다.\n복사 대입 연산자를 정의할 때 인자로 넘어온 객체가 자기 자신과 같은지 비교하는 수식을 추가합니다.",
  "CHROOT_JAIL_WITHOUT_CHANGE_WORK_DIR.description": "chroot() 함수 뒤에 chdir() 함수 누락 체커는 chroot() 함수로 루트 디렉토리를 변경한 후에 chdir() 함수로 디렉토리를 수정하지 않는 코드를 검출합니다.\nchroot() 함수로 루트 디렉토리를 변경한 후에 chdir() 함수로 이동할 디렉토리를 수정하지 않으면 원하지 않는 결과가 발생할 수 있습니다.",
  "CLASSCAST.description": "컬렉션 내 객체에 대한 위험한 다운캐스팅 체커는 컬렉션에 요소를 넣은 뒤, 그 컬렉션에서 다시 꺼낸 요소를 다른 타입으로 캐스팅하는 코드를 검출합니다.\n확실한 타입으로 캐스팅하거나 instanceof 연산자로 타입을 확인한 후 캐스팅하는 것이 좋습니다. Java 1.5 이상의 버전을 사용중이라면 컬렉션을 사용할 때 제네릭 타입을 제대로 명시하여 선언하면 잘못된 다운캐스팅의 위험성을 줄일 수 있습니다.",
  "CLASS_COMMENT.description": "클래스 주석의 형식 체커는 클래스에 해당하는 주석의 형식을 위반한 경우를 검출합니다.\n코드에 선언된 클래스에 대한 주석을 사전에 정의된 클래스 주석 형식에 따라 확인합니다. 추가적으로 주석 내에 클래스 이름을 기재하는 형식의 경우 올바른 클래스 이름을 기재했는지 확인합니다.\n사전에 정의된 형식에 맞게 클래스의 주석을 작성합니다.",
  "CLASS_MEMBER_SHOULD_NOT_BE_PUBLIC.description": "public으로 정의한 필드 체커는 클래스 선언에서 public 접근 한정자를 가지는 필드를 검출합니다.\n클래스 필드는 항상 private 접근 한정자를 부여합니다.",
  "CLASS_SHOULD_DECLARE_ASSIGNMENT_OPERATOR.description": "복사 대입 연산자를 정의하지 않은 클래스 체커는 명시적인 복사 대입 연산자를 정의하지 않은 클래스 선언을 검출합니다.\n항상 클래스 선언 시 명시적인 복사 대입 연산자를 정의하도록 합니다.",
  "CLASS_SHOULD_DECLARE_CONSTRUCTOR.description": "생성자를 정의하지 않은 클래스 체커는 다만 1개의 명시적인 생성자도 정의하지 않은 클래스 선언을 검출합니다.\n항상 클래스 선언 시 명시적인 생성자를 정의하도록 합니다.",
  "CLASS_SHOULD_DECLARE_COPY_CONSTRUCTOR.description": "복사 생성자를 정의하지 않은 클래스 체커는 명시적인 복사 생성자를 정의하지 않은 클래스 선언을 검출합니다.\n항상 클래스 선언 시 명시적인 복사 생성자를 정의하도록 합니다.",
  "CLASS_SHOULD_DECLARE_DESTRUCTOR.description": "소멸자를 정의하지 않은 클래스 체커는 명시적인 소멸자를 정의하지 않은 클래스 선언을 검출합니다.\n항상 클래스 선언 시 명시적인 소멸자를 정의하도록 합니다.",
  "CLEANUP_THREAD_SPECIFIC_STORAGE.description": "tss_create() 함수 사용 후 메모리 해제 확인 체커는 스레드 한정 저장소를 할당 한 후 해제 하지 않은 경우를 검출합니다.\ntss_create() 함수로 스레드 한정 저장소를 할당한 뒤 해제해야 합니다.",
  "CLEARTEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.description": "주요 보안 정보 및 차량 정보의 평문 전송 체커는 주요 보안 정보, 혹은 차량 정보를 암호화나 무결성 검증 없이 평문으로 전송하는 경우를 검출합니다.\n공개 키 알고리즘에 적용되는 개인 키나 대칭 키 알고리즘에 적용되는 비밀 키 등과 같은 주요 보안 정보는 절대로 제어기 외부에 평문의 형태로 전송되거나 노출되어서는 안됩니다. 개인 키는 소유한 개체 자신이 직접 생성하고 보관해야 하며, 비밀 키를 분배할 때에는 반드시 암호문의 형태로 전송되어야 합니다. 암호문을 생성하는 방법은 AES, TDES와 같은 블록 암호화 알고리즘과 RSA, ECC와 같은 비대칭 키 암호화 알고리즘을 적용할 수 있습니다. 만약 암호문을 생성할 수 없는 상황이라면 유/무선 네트워크가 아닌 직접적인 물리적 연결(예: USB, JTAG)을 통해 보안 정보를 전달해야 합니다. 또한 소유 중인 주요 보안 정보는 USB 메모리, SD 카드와 같은 외부 저장매체에 평문의 형태로 보관되어서는 안되며, 외부 저장매체에 보안 정보를 저장해야 한다면 반드시 쉽게 알아낼 수 없는 형태로 보관되어야 합니다.\n\n보안 정보와 마찬가지로, 차량 내의 민감한 정보, 공격자에 의해 악용될 수 있는 정보는 모두 무결성이 보존되어야 합니다. 무결성이 보장되지 않은 주행 관련 민감한 정보가 공격자에 의해 변조 및 악용될 경우 치명적인 사고를 유발할 수도 있습니다. 무결성을 보존하기 위해서는 MAC과 같은 인증 정보가 추가되거나 메시지와 해시 값을 암호화하는 형태로 외부에 전송되어야 하며, 해당 정보의 접근 권한을 가진 개체만이 메시지 인증과 무결성을 검증할 수 있어야 합니다.\n민감한 정보를 암호화하거나 무결성 검증을 진행한 후 전달하도록 합니다.",
  "CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.description": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.\n민감한 정보를 통신 채널을 통해 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION_ASPNET.description": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.\n민감한 정보를 통신 채널을 통해 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "CND_WAIT_SHOULDE_BE_IN_LOOP.description": "반복문 없이 cnd_wait 사용 체커는 반복문으로 제어하지 않고 cnd_wait() 함수를 호출하는 경우를 검출합니다.\ncnd_wait() 함수를 반복문으로 제어하도록 합니다.",
  "CODED_ERROR_ANALYSIS_URL_QUEUE_UNEXPECTED_ERROR": "Unexpected error is occurred while analyzing the target : {0}",
  "CODED_ERROR_ANALYZER_APPLY_ISSUE_FAIL": "Failed to apply issues detected by '{0}' in {1}",
  "CODED_ERROR_ANALYZER_CHECKER_EMPTY": "Cannot start analyzing since there is no checker. Please check the checker list of this project.",
  "CODED_ERROR_ANALYZER_LOAD_CRAWLING_RESULT_FAIL": "Failed to load crawling results.",
  "CODED_ERROR_ANALYZER_RECHECK_FAIL": "At least one recheck target was failed to analyze.",
  "CODED_ERROR_ANALYZER_TARGET_NO_CRAWLING_RESULT": "Cannot start analyzing since there is no target to analyze. Please check crawling results.",
  "CODED_ERROR_BROWSER_CANNOT_EXECUTE": "Failed to load the browser. Please check the browser files: {0}",
  "CODED_ERROR_CRAWLER_SAVE_RESULT_FAIL": "Failed to save crawling results.",
  "CODED_ERROR_CRAWLER_TARGET_NO_SEED": "Cannot start crawling. Please check the seed URLs entered when you created the project.",
  "CODED_ERROR_CRAWLER_WORKER_LOAD_FAIL": "Failed to load the crawling worker.",
  "CODED_ERROR_CRAWL_URL_QUEUE_UNEXPECTED_ERROR": "Unexpected error is occurred while crawling the target : {0}",
  "CODED_ERROR_FATAL_UNEXPECTED_ERROR": "Unexpected fatal error is occurred.",
  "CODED_ERROR_INACCESSIBLE_EB_TARGET": "Cannot access the seed URL by embedded browser.",
  "CODED_ERROR_INACCESSIBLE_ENDPOINT": "Cannot access the endpoints.",
  "CODED_ERROR_INACCESSIBLE_HB_TARGET": "Cannot access the seed URL by the HTTP client.",
  "CODED_ERROR_INVALID_OPENAPI_SPEC_FILE": "Cannot parse the OpenAPI specification file.",
  "CODED_ERROR_INVALID_RECORD_FILE": "Cannot play the event clipboard file.",
  "CODED_ERROR_INVALID_SCREENSHOT": "Cannot capture the target screen.",
  "CODED_ERROR_LOAD_RESUME_DATA_FAIL": "Failed to load the resume data.",
  "CODED_ERROR_MANAGER_NOT_READY": "Failed to ready the manager.",
  "CODED_ERROR_MEMORY_OUT_OF_MEMORY": "Out of memory. Please check memory usage or memory setting in install.properties file.",
  "CODED_ERROR_SAVE_PAUSE_DATA_FAIL": "Failed to save the paused data.",
  "CODED_ERROR_UNEXPECTED_ERROR_ON_CRAWL": "Unexpected error has been occurred while crawling.",
  "CODED_ERROR_UNEXPECTED_ERROR_ON_PRE": "Unexpected error has been occurred while pre-crawling.",
  "CODED_ERROR_UNEXPECTED_PATH": "Cannot expect the analysis paths.",
  "CODE_INJECTION.RETURN_ADDRESS.description": "반환 주소 수정에 의한 코드 삽입 체커는 함수의 반환 주소를 바꿔치기 할 수 있는 코드를 검출합니다.\n구체적으로 다음과 같습니다. 지역 변수를 선언하여 스택 영역에 버퍼를 할당하는 경우 외부 입력값이 언더플로우를 발생시키고 이로 인해 함수의 반환 주소를 다른 값으로 변경하게 됩니다.\n외부 입력값을 통해 스택 영역에 언더플로우가 발생하고, 이로 인해 반환 주소가 변경되지 않도록 합니다. 예를 들어, 오프셋 값을 검사하거나, 입력 받은 값을 스택 영역이 아닌 힙 영역에 저장하여 해당 문제를 방지할 수 있습니다.",
  "CODE_INJECTION.description": "공격자가 소프트웨어의 의도된 동작을 변경하도록 임의 코드를 삽입하여 소프트웨어가 비정상적으로 동작하도록 하는 보안약점을 말합니다.",
  "COMBINED_INCREMENT_AND_DECREMENT_OPERATOR.description": "증감 연산자의 부적절한 사용 체커는 증감 연산자를 다른 연산자와 함께 사용하는 경우를 검출합니다.\n증감 연산자의 작동 순서가 헷갈리지 않도록 별도의 구문으로 분리합니다.",
  "COMMAND_INJECTION.description": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "COMMAND_INJECTION_ASPNET.description": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "COMMENT_IN_CODE.description": "한 줄 코드 중간에 주석 사용 체커는 한 줄 소스 코드의 앞 혹은 중간에 주석이 끼어들어가있는 경우를 검출합니다.\n주석은 한 라인 안에서 소스 코드가 끝난 맨 뒤에 작성하거나 별도의 라인에 작성합니다.",
  "COMPARE_LOOP_COUNTER.description": "잘못된 루프 카운터 비교 체커는 잘못된 방법으로 루프 카운터를 사용한 for 구문을 검출합니다.\n이 문제는 루프 카운터의 증감이 2 이상이며 일정한 숫자의 영역으로 비교하지 않았을때 발생합니다. 잘못된 방법이란 구체적으로 아래 조건을 모두 충족할 경우를 의미합니다. 루프 카운터가 증감문에서 ++ 연산자 혹은 -- 연산자로 변경되지 않습니다. 루프 카운터가 조건문에서 <=, <, >, >=로 비교되지 않습니다.\n루프 카운터를 ++ 연산자나 -- 연산자로 변경합니다. 만약 루프 카운터를 ++ 연산자 혹은 -- 연산자로 변경하지 않을 경우, 반드시 조건문에서 <=, <, >, >= 연산자로 비교합니다.",
  "COMPLEX_CONTROL_IN_SWITCH.description": "다른 구문과 중첩된 switch 구문 체커는 switch 구문 내에서 for 구문이나 if 구문의 본문이 case 구문과 중첩되어 있는 경우를 검출합니다.\n본문이 있는 다른 구문과 switch 구문을 중첩하지 않도록 합니다.",
  "COMPLEX_FUNC_DECL.description": "복잡한 함수 선언 체커는 함수가 매우 복잡한 방법으로 선언되어 있는 경우를 검출합니다.\n여기서 복잡한 방법이란 반환 타입이나 하나 이상의 매개 변수에 typedef를 사용하지 않고 함수 포인터를 선언하는 것을 가리킵니다.\n복잡한 함수 선언에서 typedef를 사용하여 반환 타입이나 매개 변수를 분리하거나, 함수 포인터를 사용하지 않도록 합니다.",
  "COMPLY_WITH_MODIFIER_ORDER.description": "한정자 나열 순서 위반 체커는 여러 한정자를 동시에 사용할 때 정해진 순서를 지키지 않은 경우를 검출합니다.\n사용할 한정자 순서를 옵션으로 지정할 수 있습니다.\n순서에 맞게 한정자를 나열합니다.",
  "COMPONENT.ORIGINALVERSION.FALSE": "원본 버전이 없습니다. 따라서 컴포넌트의 최신 버전을 표시합니다.",
  "COMPONENT.ORIGINALVERSION.TRUE": "원본 버전은 {0}입니다.",
  "COMPOUND_LITERAL_ADDRESS_INSIDE_LOOP.description": "반복문에서 복합 리터럴 잘못 사용 체커는 복합 리터럴(Compound Literal)을 해석하는 방식을 제대로 이해하지 못하고 반복문에서 잘못 사용하는 경우를 검출합니다.\n복합 리터럴로부터 생성되는 임시 객체는 해당 구문 내에서만 사용되고 폐기된다고 가정하는 것이 안전합니다. 임시 객체를 사용하여 다른 객체를 초기화하면 임시 객체의 주소를 참조하는 대신 임시 객체의 값을 복사하는 방식으로 전달해야 합니다.",
  "COMPRESS": "압축",
  "CONCATENATE_DIFF_TYPE_STR.description": "와이드 문자열과 일반 문자열 연결 체커는 와이드 문자열 상수와 일반 문자열 상수를 연결하는 수식을 검출합니다.\n와이드 문자열과 일반 문자열을 연결하여 사용하지 않도록 합니다.",
  "CONDITIONAL_OPERATION_WITHOUT_PARENTHESIS.description": "괄호 없이 조건 연산 사용 체커는 삼항 조건 연산식에서 ? 연산자 앞에 괄호 없이 다른 이항 연산자가 존재하는 경우를 검출합니다.\n조건 부분이 연산식일 경우 조건 전체를 괄호로 감싸고, 조건 연산식 전체가 이항 연산의 대상인 경우 조건 연산식 전체를 괄호로 감싸서 읽을 때 헷갈리지 않도록 해줍니다.",
  "CONFIG": "구성",
  "CONFIGURATION_SETTING.description": "시스템 혹은 구성 설정의 외부 제어 체커는 적절한 처리 없이 외부 입력값을 sethostid() 함수의 인자로 직접 사용하는 코드를 검출합니다.\nsethostid() 함수의 인자에 외부 입력값을 직접 사용하지 않도록 합니다.",
  "CONSTANT_ON_LEFT_HANDSIDE.description": "비교 연산자 우측에 위치한 상수 체커는 변수와 상수를 비교할 때 상수가 오른쪽 피연산자로 사용된 경우를 검출합니다.\n변수와 상수를 비교할 때 상수값을 좌측에 두도록 합니다. C++에서는 종종 비교식에서 비교 연산자와 대입 연산자를 혼동하여 잘못 사용하기도 합니다. 상수값을 좌측에 둘 경우, 만약 비교 연산자를 사용해야 될 부분에서 대입 연산자를 사용해도 컴파일러가 이 오류를 검출하여 줍니다.\n변수와 상수를 비교할 때 상수값을 좌측에 두도록 합니다.",
  "CONSTEXPR_IN_SWITCH.description": "switch 구문에서 constexpr 사용 체커는 switch 구문 및 case 구문에서 constexpr을 사용한 수식을 검출합니다.\nswitch 구문에서 constexpr을 사용하지 않도록 합니다. 대신 미리 계산해둔 상수값을 사용합니다.",
  "CONST_IN_LOOP_TEST.description": "반복문 제어부에 상수 사용 체커는 반복문 제어부에 상수를 사용하는 코드를 검출합니다.\n옵션에서 검사 항목에 제외할 값을 설정할 수 있습니다.\n반복문 제어부에 상수를 사용하지 않도록 합니다.",
  "CONST_MEMBER_FUNCTION_SHOULD_NOT_RETURN_NONCONST.description": "const 메소드의 비 상수 핸들 반환 체커는 const로 선언되어 있으나 반환 타입이 비상수 핸들인 메소드를 검출합니다.\n여기에서 핸들이란 복사된 객체가 아닌 포인터나 참조형으로 되어 있는 클래스 내부 데이터를 의미합니다.\nconst 메소드에서 클래스 내부 데이터를 조작할 수 있는 비 상수 핸들을 반환하지 않도록 합니다.",
  "CONST_VALUE_MODIFICATION.description": "const 객체 수정 체커는 const로 선언된 변수의 값을 수정하는 경우를 검출합니다.\nconst로 선언된 변수의 값은 어떤 식으로든 변경되지 않도록 합니다.",
  "CONTRACT_REQUIRED": "별도의 계약이 필요한 경우",
  "CONVERSION_OPERATOR_CLASS_TYPE.description": "클래스 타입에 대한 변환 연산자 선언 체커는 클래스 내부에서 선언된 다른 클래스 타입의 변환 연산자를 검출합니다.\n변환 연산자란 클래스 객체를 특정 타입으로 변환할 때 사용하는 특수한 메소드입니다.\n다른 클래스 타입의 변환 연산자를 선언하지 않도록 합니다. 다른 클래스 타입을 반환하는 일반적인 메소드를 선언하고 사용하는 것을 권장합니다.",
  "CONVERSION_OPERATOR_FUNDAMENTAL_TYPE.description": "기본 타입에 대한 변환 연산자 선언 체커는 클래스 내부에서 선언된 기본 타입의 변환 연산자를 검출합니다.\n변환 연산자란 클래스 객체를 특정 타입으로 변환할 때 사용하는 특수한 메소드입니다.\n기본 타입의 변환 연산자를 선언하지 않도록 합니다. 기본 타입을 반환하는 일반적인 메소드를 선언하고 사용하는 것을 권장합니다.",
  "CONVERT_FLOATING_POINT_IN_FLOATING_OPERATION.description": "부동소수점 연산에 정수를 사용하지 말아야 합니다.",
  "CONVERT_INT_TO_FLOAT_FOR_FLOAT_OPERATION.description": "부동 소수점 연산 이전의 캐스팅 누락 체커는 부동 소수점을 연산 하기 전에 정수를 부동 소수점으로 캐스팅하지 않은 수식을 검출합니다.\n부동 소수점 연산 전에 정수를 부동 소수점으로 캐스팅합니다.",
  "COPY": "복사",
  "CORRECT_DECLARE_FLEXIBLE_ARRAY_MEMBER.description": "잘못된 가변형 배열 선언 체커는 올바르지 않은 문법으로 가변형 배열을 선언한 경우를 검출합니다.\n가변형 배열(Variable Array Length)이란 배열의 크기를 컴파일 타임에 명시하지 않는 배열로써 런타임에서 배열 크기를 지정할 수 있습니다. 여기서 올바르지 않은 문법이란 가변형 배열을 표현할 때 [1]과 같이 배열의 크기를 1로 명시하는 것을 가리킵니다.\n가변형 배열을 사용하는 경우 크기를 명시하지 않도록 합니다.",
  "CREATE": "생성",
  "CRITICAL_PUBLIC_VARIABLE_WITHOUT_CONST_MODIFIER.description": "const 한정자 없는 중요 public 변수 체커는 클래스에서 const 한정자 없이 public으로 선언한 중요한 필드를 검출합니다.\n일반적으로 필드는 private으로 선언합니다. 하지만 특별한 경우에 외부에서 직접 접근할 수 있는 중요한 필드를 public으로 선언하는 경우가 있습니다. 이때 모든 public 필드가 중요한 필드는 아닙니다. 이 체커는 중요한 필드를 판별하기 위해 필드의 이름을 옵션으로 지정할 수 있습니다.\npublic으로 선언한 중요한 필드는 반드시 const 한정자를 붙여 선언합니다.",
  "CRITICAL_PUBLIC_VARIABLE_WITHOUT_FINAL_MODIFIER.description": "final 한정자 없는 중요 public static 변수 체커는 임의로 변경되면 안되는 중요한, final 없이 선언된 public static 멤버 변수를 검출합니다.\n변수의 중요도 여부를 작성자의 의도 없이 기계적으로 판단하기 어려우므로, 일반적으로 전역 상수의 역할을 할 가능성이 높은 원시 타입 변수들을 중요한 변수로 간주합니다.\n원시 타입 변수를 public static으로 선언할 경우 final 한정자를 함께 부여합니다. 값이 변할 수 있는 중요 변수는 public으로 공개하지 말고 정적 메소드를 통해 접근하도록 설계합니다.",
  "CRITICAL_VARIABLE_IN_PUBLIC.description": "중요 public 변수 체커는 클래스에서 public으로 선언한 중요한 필드를 검출합니다.\n일반적으로 필드는 private으로 선언합니다. 하지만 특별한 경우에 외부에서 직접 접근할 수 있는 중요한 필드를 public으로 선언하는 경우가 있습니다. 이때 모든 public 필드가 중요한 필드는 아닙니다. 이 체커는 중요한 필드를 판별하기 위해 필드의 이름을 옵션으로 지정할 수 있습니다.\npublic으로 선언한 중요한 필드는 반드시 private으로 선언합니다.",
  "CROSS_SITE_REQUEST_FORGERY.description": "사이트 간 요청 위조 체커는 폼 데이터 전달에 있어서 POST 방식을 사용하지 않았을 경우를 검출합니다.\n입력 폼 작성시 GET 방식보다는 POST 방식을 사용하고 입력 폼과 해당 입력을 처리하는 프로그램 사이에 토큰을 사용하여, 공격자의 직접적인 URL 사용이 동작하지 않도록 처리합니다. 특히 중요한 기능에 대해서는 세션 검증과 더불어 재인증을 유도합니다.",
  "CROSS_SITE_REQUEST_FORGERY_ASPNET.description": "폼 형식으로 사이트에 요청 시 사이트 간 요청 위조(Cross Site Request Forgery) 방지 토큰을 생성, 전달하지 않을 경우 사이트 간 요청 위조 공격에 취약합니다.",
  "CROSS_SITE_REQUEST_FORGERY_CSHARP.description": "사이트 간 요청 위조 체커는 폼 데이터 전달에 있어서 POST 방식을 사용하지 않았을 경우를 검출합니다.\n입력 폼 작성시 GET 방식보다는 POST 방식을 사용하고 입력 폼과 해당 입력을 처리하는 프로그램 사이에 토큰을 사용하여, 공격자의 직접적인 URL 사용이 동작하지 않도록 처리합니다. 특히 중요한 기능에 대해서는 세션 검증과 더불어 재인증을 유도합니다.",
  "CTORS_SHOULD_NOT_HAVE_SIDE_EFFECT.description": "복사 생성자는 생략되지 않는다고 가정하지 마십시오. 복사 생성자가 호출되는 회수는 컴파일러 구현에 의존적입니다.",
  "CYCLOMATIC_COMPLEXITY_METRIC.description": "함수 내 결정점 개수 확인 체커는 함수 내에 결정점(if, while, 케이스 구문)의 개수가 옵션에 지정된 수 이상인 경우를 검출합니다.\n옵션에서 함수 내 결정점 개수를 설정할 수 있습니다.\n복잡도가 증가할 경우 유지 및 보수 비용이 증가하므로 일정 개수(기본 개수: 20)의 분기점을 사용해야 합니다.",
  "CallSuperFirst.description": "메소드의 처음에 super()를 호출하지 않을 경우 이를 검출합니다.",
  "CallSuperInConstructor.description": "특정 생성자 안에서 super()이 호출되지 않지만, 다른 생성자(예: 오버로딩된 생성자)에서는 호출할 경우 이를 검출합니다.",
  "CallSuperLast.description": "메소드의 마지막에 super()를 호출하지 않을 경우 이를 검출합니다.",
  "CastAddressToIntegerAtReturn.description": "반환 형식이 정수인 함수에서 포인터를 반환하는 것은 다른 플랫폼과 컴파일러에서 호환되지 않습니다.\n최악의 경우, 64비트 주소가 32비트 포인터로 잘려져서 반환됩니다.",
  "CastIntegerToAddressAtReturn.description": "반환 형식이 포인터인 함수에서 정수형을 반환하는 것은 다른 플랫폼과 컴파일러에서 호환되지 않습니다.\n최악의 경우, 64비트 정수형을 32비트 포인터로 잘려져서 반환됩니다.",
  "CatchExceptionByValue.description": "예외가 값으로 처리됩니다. C++에서는 예외가 레퍼런스 형식으로 처리되는 것을 권장합니다.",
  "CheckResultSet.description": "ResultSet의 네비게이션 메소드(next, previous, first 및 last)를 사용할 경우 결과값에 대해 검사를 수행하지 않을 때을 검출합니다.",
  "CheckSkipResult.description": "skip() 메소드를 사용할 시 요청받은 바이트 보다 작은 크기를 무시할 수 있습니다. 반환 값을 확인 하여 위와 같은 상황을 피해야 합니다.",
  "ClarifyCondition.description": "할당문과 비교문이 혼동됩니다. 괄호를 이용하여 수식을 명확히 하십시오.",
  "ClassCastExceptionWithToArray.description": "프로그램에서 컬렉션 타입의 객체들의 메소드 인 toArray() 를 잘 못된 방법으로 사용하여 프로그램 실행 중에 ClassCastExcption 을 발생 시키는 코드를 검출하기 위한 규칙입니다. 거의 모든 컬렉션 타입의 객체들의 toArray() 메소드는 객체 [] 를 반환 하기 때문에, 아래의 잘못된 코드처럼 코딩을 하게 되면 프로그램 실행 중에 오류를 발생시키게 됩니다.",
  "ClassNamingConventions.description": "클래스 이름 표준 위반을 검출합니다. 클래스는 항상 영문 대문자로 시작해야 합니다.",
  "ClassWithOnlyPrivateConstructorsShouldBeFinal.description": "private 생성자만을 가지는 클래스는 내부 클래스에 의해 생성자가 호출되는 경우가 아니라면 반드시 final로 선언되어야 합니다.",
  "CloneMethodMustImplementCloneable.description": "Cloneable 을 상속받지 않은 클래스에 대하여, clone() 메소드는 throw new CloneNotSuportException와 같이 단 하나의 줄으로 구성되어야 하며, clone() 메소드 자체 혹은 클래스 중 적어도 하나는 final 로 정의되어야 합니다.",
  "CloneThrowsCloneNotSupportedException.description": "Final로 선언되지 않은 클래스 내의 clone() 메소드에서 파라미터를 받지 않고, CloneNotSupportedException을 상속하지 않는 경우 이를 검출합니다.",
  "CloseResource.description": "지정한 resource(기본은 Connection, Statement, ResultSet)의 사용 후 자원 해제 구문이 없는 경우 이를 검출합니다.",
  "CollapsibleIfStatements.description": "불린 short-circuit 연산자를 이용하여 하나로 묶을 수 있는 두개의 if 조건을 검출합니다.",
  "CommentSize.description": "정의한 주석 크기를 초과한 경우를 검출 합니다.",
  "CompareBoolExpressionWithInt.description": "부울 자료형 변수를 0 또는 1이 아닌 다른 정수형 값과 비교합니다.",
  "CompareObjectsWithEquals.description": "객체 비교에 == 사용을 검출합니다. 비교를 위해서는 == 대신 equals()를 사용할 것을 권장합니다.",
  "ComparisonError.description": "항상 거짓인 수식입니다.",
  "ComparisonOfBoolWithBoolError.description": "부울 타입인 변수를 관계 연산자(<, >, <= or >=)를 이용하여 비교하는 것은 예상치 못한 결과를 야기합니다.",
  "ComparisonOfFuncReturningBoolError.description": "부울 값을 반환하는 함수들을 관계 연산자(<, >, <= or >=)를 이용하여 비교하는 것은 예상치 못한 결과를 야기합니다.",
  "ComparisonOfTwoFuncsReturningBoolError.description": "부울 값을 반환하는 함수들을 관계 연산자(<, >, <= or >=)를 이용하여 비교하는 것은 예상치 못한 결과를 야기합니다.",
  "ConfusingTernary.description": "Ternary 연산자의 조건절의 !=을 검출합니다.",
  "ConsecutiveLiteralAppends.description": "StringBuffer의 append() 중첩 호출을 검출합니다.",
  "ConsistentReturn.description": "Javascript에서 모든 반환 값이 존재하거나 존재하지 않아야 합니다. 반환 값이 있는 경우와 없는 경우가 섞이게 되면 버그가 발생합니다.",
  "ConstructorCallsOverridableMethod.description": "부모 클래스의 생성자 안에서 가상 메소드를 호출하게 되면 자식클래스의 필드가 초기화되기 전에 읽게 되는 문제가 발생합니다.",
  "CopyCtorAndEqOperator.description": "클래스가 복사 연산자, 복사 생성자 둘 중에 하나만 있습니다.",
  "CopyCtorPointerCopying.description": "포인터가 복사 생성자에서 새로운 메모리를 할당받는 대신 복사됩니다.",
  "CouplingBetweenObjects.description": "서로 다른 많은 수의 객체가 멤버로서 존재할 경우 이를 검출합니다. 기본적으로 20개 이상의 서로 다른 타입이 존재할 경우 이슈를 검출합니다.",
  "CoutCerrMisusage.description": "출력 스트림을 잘못 사용했습니다.",
  "CyclomaticComplexity.description": "코드 복잡도를 발생시키는 if, while, for, 케이스 구문을 지정한 개수 이상 사용하는 경우 이슈를 검출합니다.",
  "DANGEROUS_DOWNCAST.description": "정수값에 대한 위험한 다운캐스팅 체커는 확인 없이 정수값을 표현범위가 줄어드는 방향으로 캐스팅하는 경우를 검출합니다.\n정수값을 다운캐스팅하기 전에 대상 타입의 표현 범위 안에 들어갈 수 있는 값인지 확인해야 합니다. 만약 다운캐스팅을 통해 상위 비트를 잘라내고자 하는 의도가 뚜렷하다면 다운캐스팅을 하기 전에 비트 연산을 통해 상위 비트를 먼저 제거한 후 캐스팅 해야 의도를 더 명확히 드러낼 수 있습니다.",
  "DANGEROUS_FUNCTION.ASP.description": "보안에 취약한 함수를 검출합니다.",
  "DANGEROUS_FUNC_CAST.description": "위험한 함수 포인터의 캐스팅 체커는 서명이 충돌하거나 반환 타입이 다른 함수 포인터로 캐스팅되는 코드를 검출합니다.\n가변 인자 함수 포인터를 인자나 반환 타입이 다른 함수 포인터로 캐스팅하는 경우도 포함됩니다.\n함수 포인터의 경우 서명과 타입이 동일하도록 캐스팅해야 합니다.",
  "DANGEROUS_USE_OF_TAINTED_VALUES.description": "오염된 값의 위험한 사용 체커는 오염된 값을 검사 없이 위험한 방식으로 사용한 경우 이슈를 검출합니다.\n이 때 위험한 방식이란 오염된 값을 위험한 함수의 인자로 사용하거나 배열의 인덱스, 반복문의 제어 변수로 사용하는 것 등을 의미합니다. 단 위험한 함수의 인자로 포인터 타입을 사용할 경우에는, 객체 자체가 오염된 것은 문제되지 않으며 포인터 타입의 오프셋이 오염된 경우를 위험한 사용 방식으로 간주합니다.\n오염된 값을 위험한 방식으로 사용하지 않도록 합니다. 구체적으로는 오염된 값의 범위를 검사하거나 적절한 필터 함수를 호출하여 값을 안전하게 만든 뒤 사용하도록 합니다.",
  "DATA": "데이터 자체",
  "DATA_LEAK_BETWEEN_SESSIONS.description": "세션 간 데이터 누출 체커는 다중 스레드 환경에서 서블릿에 필드 변수가 사용되는 경우를 검출합니다.\n가급적 HttpServlet 클래스의 하위 클래스에 멈버 필드를 선언하여 정보를 저장하지 않도록 하고 최대한 지역 변수를 선언하여 사용해야 합니다.",
  "DEALLOCATORS_MUST_NOT_THROW_EXCEPTIONS.description": "메모리 해제 연산자에서 예외 던짐 체커는 메모리 해제 연산자 내부에서 예외를 던지는 수식을 검출합니다.\n메모리 해제 연산자란 delete와 같은 메모리 해제 연산자를 오버로딩한 것을 의미 합니다.\n메모리 해제 연산자 내에서는 예외를 던지지 않도록 합니다.",
  "DEBUG_INFORMATION.WEB.CONFIG.description": "디버그 정보 노출 체커는 디버그 정보를 노출하도록 설정한 경우를 검출합니다.\n디버그 정보를 노출하지 않도록 설정을 비활성화합니다. 혹은 RemoveAttributes(debug) 속성을 사용하여 릴리즈 시에만 디버그 정보가 노출되지 않도록 합니다.",
  "DECLARE_AT_THE_BEGINNING_OF_BLOCK.description": "함수 상단에 선언되지 않은 지역 변수 체커는 지역 변수가 함수 상단에 선언되지 않은 경우를 검출합니다.\n단, for 구문의 루프 카운터는 예외로 합니다.\n지역 변수는 반드시 함수 상단에 선언하도록 합니다.",
  "DECLARE_CONST_MEMBER_FUNCTION.description": "메소드의 const 선언 누락 체커는 상태를 변경하지 않으며 const 선언이 없는 클래스 메소드를 검출합니다.\n메소드를 const로 선언하는 것은 외부에서 보았을 때 이 메소드가 내부 상태를 변경하지 않는다는 보장입니다. 만약 위 사항을 위반하면 컴파일러는 컴파일 오류를 발생시킵니다.\n상태를 변경하지 않는 메소드는 반드시 const로 선언하도록 합니다. 다만 내부적으로 사용하는 제어 변수 등을 const로 선언된 함수에서 변경이 필요한 경우가 있습니다. 이 경우에는 대상 변수를 mutable로 선언합니다. mutable로 선언한 변수는 const로 선언된 함수 내에서 상태를 변경할 수 있습니다.",
  "DECLARE_CONTROL_VARIABLES_WITHIN_FOR.description": "for 문에서 선언되지 않은 루프 제어 변수 체커는 루프 제어 변수를 for 문에서 선언하지 않고 기존 변수를 사용한 경우를 검출합니다.\n루프 제어 변수는 기존의 변수를 사용하는 대신 for 문장에서 선언하도록 합니다. 이와 같은 방법을 사용하는 가장 큰 장점은 자동적으로 루프 제어 변수의 범위가 루프 범위 안으로 한정된다는 점입니다.\n루프 제어 변수를 for 문에서 선언하도록 합니다.",
  "DECLARE_COPY_CONSTRUCTOR_PROTECTED.description": "추상 클래스 복사 대입 연산자를 public으로 선언 체커는 public 접근 권한을 가진 추상 클래스의 복사 대입 연산자를 검출합니다.\n추상 클래스의 복사 대입 연산자 접근 권한을 protected로 설정합니다.",
  "DECLARE_DESTRUCTOR_FOR_RESOURCE_CLASS.description": "복잡한 클래스에서의 소멸자 미정의 체커는 소멸자의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.\n특정 클래스란 멤버 변수로 포인터가 있는 클래스입니다.\n직접 소멸자를 선언하고 정의해야 합니다.",
  "DECLARE_DESTRUCTOR_USING_NEW.description": "동적 할당을 사용한 클래스에서의 소멸자 미정의 체커는 소멸자의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.\n특정 클래스란 클래스 생성자에서 동적 할당으로 필드값을 초기화한 클래스입니다.\n직접 소멸자를 선언하고 정의해야 합니다.",
  "DECLARE_EXPLICIT.description": "explicit 선언 누락 체커는 explicit 선언이 빠져있는 인자가 1개인 생성자를 검출합니다.\n인자가 1개인 생성자란 기본값을 가지고 있는 인자로 인해 인자가 1개인 생성자처럼 사용할 수 있는 모든 생성자를 의미합니다.\n인자가 1개인 생성자는 반드시 explicit 키워드를 사용하여 선언합니다.",
  "DECLARE_EXPLICIT_ASSIGNMENT_OPERATOR_WHEN_TEMPLATED.description": "복사 대입 연산자를 정의하지 않은 템플릿을 포함한 클래스 체커는 명시적인 복사 대입 연산자를 정의하지 않은 템플릿을 포함한 클래스 선언을 검출합니다.\n템플릿을 포함한 클래스란 템플릿 매개 변수를 사용하는 제너릭한 복사 대입 연산자를 선언한 클래스를 의미합니다.\n항상 클래스 선언 시 명시적인 복사 대입 연산자를 정의하도록 합니다.",
  "DECLARE_EXTERNAL_OBJECT_ONLY_ONCE.description": "중복 선언된 extern 객체 및 함수 체커는 여러 헤더 파일에서 선언된 extern 객체 및 함수를 검출합니다.\nextern 객체나 함수의 하나의 헤더 파일에서 한 번만 선언하도록 합니다.",
  "DECLARE_EXTERN_IN_HEADER_FILES.description": "잘못된 헤더 파일에서 선언 체커는 헤더 파일 선언 규칙대로 헤더 파일에서 선언을 구성하지 않은 경우를 검출합니다.\n헤더 파일 선언 규칙은 다음과 같습니다. 모든 인라인되지 않은 함수, 클래스, 변수, 열거형 및 열거형 상수, 이름이 있는 네임스페이스 영역, 외부 링크를 포함한 객체는 헤더 파일에서 선언되어야 합니다. 객체 정의 및 이름이 없는 네임스페이스에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n헤더 파일 선언 규칙대로 헤더 파일을 구성하도록 합니다.",
  "DECLARE_NON_MEMBER_GENERIC_FUNC_IN_UNASSOCIATED_NAMESPACE.description": "네임스페이스에서 비멤버 템플릿 함수 선언 체커는 연관된 네임스페이스에서 선언된 비멤버 템플릿 함수를 검출합니다.\n함수 호출을 명확하게 하기 위해 연관된 네임스페이스에서 비멤버 템플릿 함수를 선언하지 않습니다.",
  "DECLARE_OBJECTS_SHARED_BETWEEN_THREADS.description": "저장 기간이 끝난 공유 객체 체커는 스레드간에 공유하는 객체의 저장 기간이 스레드 유지시간보다 짧은 경우를 검출합니다.\n저장 기간이 짧은 객체는 지역 변수등도 포함될 수 있습니다.\n저장 기간이 짧은 지역 변수 대신 프로그램이 종료되기 전까지 유지되는 정적 객체를 사용하도록 합니다.",
  "DECLARE_ONE_NAME_ONLY_IN_EACH_TYPEDEF.description": "typedef로 여러 타입 선언 체커는 typedef 선언 시 하나 이상의 타입을 선언한 경우를 검출합니다.\ntypedef 선언 시 하나의 타입만 선언하도록 합니다. '&'나 '*'의 경우 인접한 선언자에만 적용되게 됩니다. 따라서 typedef시 여러 개의 타입을 선언하는 것은 혼란스럽고 유지보수에 어려움이 있을 수 있습니다.\ntypedef 선언 시 하나의 타입만 선언하도록 합니다.",
  "DECLARE_READ_ONLY_PARAMETERS.description": "const 참조형으로 선언하지 않은 클래스 타입 매개 변수 체커는 매개 변수로 사용할 클래스 타입을 const 참조형으로 선언하지 않은 경우를 검출합니다.\n클래스 타입을 제외한 기본 타입은 값으로 전달합니다.\n클래스 타입 매개 변수를 const 참조형으로 전달하도록 합니다.",
  "DECLARE_SPECIAL_METHOD_FOR_RESOURCE_CLASS.description": "복잡한 클래스에서의 특수 메소드 미정의 체커는 특수한 메소드의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.\n특정 클래스란 멤버 변수로 포인터가 있거나 소멸자가 복잡한 클래스입니다.\n직접 특수한 메소드(복사 생성자, 복사 대입 연산자)를 선언하고 정의해야 합니다.",
  "DECLARE_SPECIAL_METHOD_USING_NEW.description": "동적 할당을 사용한 클래스에서의 특수 메소드 미정의 체커는 특수한 메소드의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.\n특정 클래스란 클래스 생성자에서 동적 할당으로 필드값을 초기화한 클래스입니다.\n직접 특수한 메소드(복사 생성자, 복사 대입 연산자)를 선언하고 정의해야 합니다.",
  "DECLARE_STATIC_WHEN_UNLESS_EXTERNAL_LINKAGE.description": "외부 참조가 필요없는 파일 범위의 extern 객체 및 함수 체커는 외부에서 접근할 필요가 없으며 파일 범위에 extern으로 선언되어 있는 객체 및 함수를검출합니다.\n하나의 파일에서만 사용하는 파일 범위 객체나 함수는 정적으로 선언하도록 합니다.",
  "DECLARE_TYPE_IN_HEADER_FILES.description": "헤더에서 해야 하는 정의 체커는 소스 파일이 아닌 헤더 파일에 정의하도록 규정된 것들을 소스 파일에서 선언한 경우를 검출합니다.\n객체 정의 및 이름이 없는 네임스페이스에서의 선언과 정의를 제외한 모든 것을 헤더 파일에 선언하도록 합니다. 구체적으로는 다음의 항목들을 헤더 파일에서 선언해야 합니다: 모든 인라인되지 않은 함수, 클래스, 변수, 열거형 및 열거형 상수, 이름이 있는 네임스페이스 영역 부분, 외부 링크를 가지는 것들.",
  "DECLARE_VARIABLE_INSIDE_SWITCH.description": "switch 문장 내에서, 첫번째 케이스구문 전에 변수를 선언하지 않도록 합니다. 프로그래머가 변수를 선언한 후 해당 변수를 케이스문 전에서 초기화를 수행해도 케이스문 내에서는 초기화 되지 않습니다. 결과적으로 초기화 되지 않은 값이 사용됩니다.",
  "DECLARE_VARIABLE_IN_MIDDLE_OF_BLOCK.description": "블록 초반에 변수 선언 체커는 변수가 블록의 초반부에 선언되지 않은 경우를 검출합니다.\n라벨(Label) 문장, 빈(Empty) 문장이 들어간 경우는 예외로 합니다. 옵션에서 프로프레임 지원 여부, 무시할 변수 이름을 설정할 수 있습니다.\n변수 선언은 블록의 초반에 하도록 합니다.",
  "DECREMENT_ON_BOOLEAN.description": "bool 형식에 감소 연산자 사용 체커는 bool 형식의 변수에 감소 연산자('--')를 사용하는 경우를 검출합니다.\nbool 형식의 변수에 감소 연산자를 사용하지 않습니다. 직접적인 참, 거짓을 대입하거나 toggle()이나 set(), clear() 같은 사용자 정의 함수를 만들어 사용하도록 합니다.",
  "DEEPLY_NESTED.ABAP.description": "깊게 중첩된 제어문 체커는 과도하게 중첩된 제어문을 검출합니다.\n제어 흐름과 관련된 구문인 IF, DO, LOOP, CASE, WHILE,SELECT, PROVIDE 구문이 옵션에서 지정한 중첩도 제한 이상으로 중첩되는 경우를 검출합니다.\nAND 또는 OR 절을 사용하여 의미 없는 중첩을 제거합니다.",
  "DEEP_NESTING_BLOCKS.description": "너무 깊은 중첩 블록 체커는 중첩 블록 깊이가 지나치게 깊게 작성된 함수를 검출합니다.\n해당 함수가 너무 많은 기능을 수행하고 있을 가능성이 있으므로 더 작은 여러 개의 함수로 쪼갤 수 있는지 검토해봅니다. 혹은 깊은 블록이 없어질 수 있도록 코드를 리팩토링합니다.",
  "DEFAULT_ARGUMENT_CONSISTENCY_WHEN_OVERRIDING.description": "오버라이드 하는 함수의 기본 인자 값 일치 여부 체커는 오버라이드 하는 함수의 기본 인자(default argument)의 값이 오버라이드 대상 함수와 일치하지 않은 경우를 검출합니다.\n오버라이딩하는 함수의 기본 인자 값은 같아야 합니다.",
  "DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.description": "변할 수 있는 입력 및 내부 구성 요소의 직접 사용 체커는 변할 수 있는(mutable) 객체에 내부의 구성 요소를 저장하고 반환하기 전에 구성 요소의 복사본을 생성하지 않는 코드를 검출합니다.\n내부 구성 요소의 mutable 객체인 cookie의 복사본을 생성하여 유효성 검사나 함수 호출에 사용함으로써 인자값이 외부에 의해 변경되지 않도록 합니다.",
  "DEFINE_INLINE_IN_HEADER_FILES.description": "잘못된 헤더 파일에서의 인라인 정의 체커는 헤더 파일 인라인 정의 규칙대로 헤더 파일에서 인라인 정의를 수행하지 않은 경우를 검출합니다.\n헤더 파일 인라인 정의 규칙은 다음과 같습니다. 인라인 함수는 헤더 파일에서 선언하고 정의해야 합니다. 이름이 없는 네임스페이스에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n헤더 파일 인라인 정의 규칙대로 헤더 파일을 구성하도록 합니다.",
  "DEFINE_OBJECT_AT_BLOCK_SCOPE.description": "단일 함수의 전역 변수 체커는 한 개의 함수에서만 전역 변수를 사용하는 경우를 검출합니다.\n전역 변수가 한 개의 함수에서만 사용되는 경우 해당 함수의 지역 변수로 선언하도록 합니다.",
  "DEFINE_SET_NEW_HANDLER.description": "동적 할당 핸들러의 미설정 체커는 동적 할당을 사용하였으나 동적 할당 핸들러의 정의되어 있지 않는 프로그램을 검출합니다.\n동적 할당 핸들러란 C++ 로 개발한 프로그램에서 동적 할당이 실패했을 때 마지막으로 호출해주는 함수입니다.\n동적할당을 사용하는 모든 C++ 프로그램은 set_new_handler() 함수를 사용하여 메모리 할당이 실패했을 때 불리는 핸들러를 설정해야 합니다. 핸들러 함수를 정의하고 set_new_handler() 함수에 정의한 핸들러의 함수 포인터를 전달합니다.",
  "DEFINE_TEMPLATE_IN_HEADER_FILES.description": "잘못된 헤더 파일에서의 템플릿 정의 체커는 헤더 파일 템플릿 정의 규칙대로 헤더 파일에서 템플릿 정의를 하지 않은 경우를 검출합니다.\n헤더 파일 템플릿 정의 규칙은 다음과 같습니다. 템플릿 클래스나 함수는 헤더 파일에서 선언 및 정의를 해야 합니다. 이름이 없는 네임스페이서에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n헤더 파일 템플릿 정의 규칙대로 헤더 파일을 구성하도록 합니다.",
  "DEFINE_WRAPPERS_AROUND_NATIVE_METHODS.description": "래핑되지 않은 네이티브 메소드 체커는 네이티브 메소드의 접근 제한자가 private로 선언된 경우 래퍼 메소드를 거치지 않고 직접 호출되는 코드를 검출합니다.\n네이티브 메소드는 C와 C++ 언어로 작성되며 Java 코드 내에 정의됩니다. 이러한 확장을 통해 네이티브 메소드 코드는 Java에만 종속적이지 않고 유연성과 이식성을 갖습니다. 네이티브 메소드는 플랫폼에 관련된 작업을 수행하고, 기존 라이브러리 코드와의 인터페이스 및 프로그램 성능을 향상시키기 위해 사용됩니다. 네이티브 메소드의 래퍼(wrapper) 메소드를 정의하면, 네이티브 코드로 전달된 인수를 확인하고, 반환 값의 유효성을 검사하고, 가변 입력에 대해 방어적인 복사(defensive copy) 및 신뢰할 수 없는 데이터 필터링을 수행할 수 있습니다. 래퍼 메소드를 사용하기 위해 모든 네이티브 메소드는 private 이어야 하며 반드시 래퍼 메소드에 의해서만 호출되어야 합니다.\n이 체커는 다음 두가지 경우를 검출합니다.\n1: native 제한자를 사용하여 선언된 메소드 중 private 제한자가 사용되지 않은 선언을 검출합니다.\n2: public 제한자로 선언된 메소드 중 다음 조건을 모두 만족하는 메소드 선언을 검출합니다.\n 1) 동일한 객체에 native 제한자로 선언된 메소드 N이 존재합니다.\n 2) 메소드 내에서 메소드 N을 호출하는 구문 F가 존재합니다.\n 3) 모든 실행 경로에서 구문 F가 실행됩니다.\nprivate인 native 메서드를 선언하고, native 메서드를 호출하기 전에 조건문으로 보안 검사를 수행하도록 합니다.",
  "DELETE": "삭제",
  "DEPRECATED.DATA_BEGIN_OF_OCCURS.ABAP.description": "DATA BEGIN OF OCCURS 구문 사용 체커는 DATA BEGIN OF OCCURS 구문을 검출합니다.\nDATA BEGIN OF OCCURS 구문 대신 DATA BEGIN OF 구문을 사용합니다.",
  "DEPRECATED.FORM.ABAP.description": "FORM 구문 사용 체커는 FORM을 검출합니다.\n코드 재사용성을 위해 METHOD 또는 FUNCTION을 대신 사용하십시오.",
  "DEPRECATED.REFRESH_ITAB_FROM_TABLE.ABAP.description": "REFRESH FROM TABLE 구문 사용 체커는 REFRESH FROM TABLE 구문을 검출합니다.\nREFRESH 구문을 SELECT 구문 안에 INTO 절로 대체합니다.",
  "DEREFERENCING_DOES_NOT_EXCEED_TWO_LEVELS.description": "두 단계를 넘는 역참조 체커는 한 문장 안에서 역참조가 2단계를 초과하여 중첩 사용된 경우를 검출합니다.\n두 단계를 초과하는 역참조를 수행하려면 임시 변수에 중간 결과를 저장하는 등의 방법으로 역참조 중첩을 분리해야 합니다.",
  "DERIVATIVE_WORK": "법적으로 파생 저작물의 범위",
  "DESTRUCTORS_MUST_NOT_THROW_EXCEPTIONS.description": "소멸자에서 예외 던짐 체커는 예외를 외부로 던지는 소멸자를 검출합니다.\n소멸자에서 예외를 던지지 않도록 합니다.",
  "DESTRUCTOR_SHOULD_BE_VIRTUAL.description": "가상 함수를 포함한 클래스 소멸자를 비 가상으로 선언 체커는 가상 함수를 포함하고 있으며 소멸자를 가상으로 선언하지 않은 클래스를 검출합니다.\n가상 함수를 포함한 클래스의 소멸자를 가상으로 선언합니다.",
  "DESTRUCTOR_SHOULD_BE_VIRTUAL_IF_CLASS_HAS_VIRTUAL.description": "클래스가 가상 멤버 함수를 포함하고 있으면 소멸자를 가상으로 선언해야 합니다. 만약 이를 어길 시 결함으로 검출합니다.",
  "DIFFERENT_EXCEPTION_SPECIFICATION.description": "서로 다른 예외 명세 체커는 다른 번역 단위를 포함한 같은 함수의 예외 명세가 서로 다른 경우를 검출합니다.\n같은 함수간에 서로 다른 예외 명세를 동일하게 맞추도록 합니다. 어느 한쪽의 예외 명세를 수정하면 됩니다.",
  "DIFFERENT_FUNCTION_PTR_ASSIGN.description": "다른 타입의 함수 포인터를 대입했습니다.",
  "DIFFERENT_MUTEX_ON_CONDITION_VARIABLE.description": "pthread_cond_wait()와 pthread_cond_timedwait()은 조건 변수와 잠긴 mutex를 인자로 받습니다. 이 함수들은 mutex를 잠금 해제하고 대기하다 조건 변수가 신호를 보낼 때, 다시 mutex를 잠그고 반환합니다. 특정 조건 변수에 의해 최소 하나 이상의 쓰레드가 잠겨있을 때, 같은 조건 변수로 묶인 다른 쓰레드들이 동작하면 예기치 못한 동작을 야기할 수 있습니다.",
  "DIFFERENT_TYPE_DECLARATIONS.description": "동일한 라인에 다른 자료형 선언 체커는 하나의 라인에서 다른 자료형을 사용하는 복수의 변수를 선언하는 코드를 검출합니다.\n해당 체커는 포인터형이나 기본 자료형 등을 사용하는 여러 개의 변수를 동일한 줄에 선언하는 코드를 검출합니다.\n하나의 라인에서 다른 자료형을 선언하지 않도록 합니다.",
  "DIRECTLY_APPEND_POINTER_AND_AMPERSAND.description": "변수명에 붙은 포인터 및 참조자 연산자 체커는 포인터 또는 참조자 선언 시 '*'와 '&'를 변수명에 붙인 경우를 검출합니다.\n포인터 또는 참조자 선언 시 '*'와 '&'는 변수명 대신 타입명에 붙이도록 합니다. 이렇게 할 경우 각각의 토큰이 주는 의미가 타입의 일부임을 강조하는데 도움이 됩니다.\n포인터 또는 참조자 선언 시 '*'와 '&'는 변수명 대신 타입명에 붙이도록 합니다.",
  "DIRECT_MANAGEMENT_OF_CONNECTIONS.description": "연결의 직접 관리 체커는 J2EE 프로그램에서 연결을 직접 관리하는 DriverManager.getConnection() 메소드를 호출할 경우를 검출합니다.\n연결을 관리해주는 다른 메소드를 사용합니다.",
  "DIRECT_USE_OF_INTEGER_LITERAL.description": "정수 리터럴 직접 사용 체커는 -1, 0, 1을 제외한 정수 리터럴을 직접 사용한 경우를 검출합니다.\n-1, 0, 1은 for 구문의 카운터 값으로 사용될 수도 있어 제외됩니다.\n-1, 0, 1 이외의 정수 리터럴은 일단 변수에 저장한 후 그 변수를 사용하는 것을 권장합니다.",
  "DIRECT_USE_OF_SOCKETS.description": "소켓의 직접 사용 체커는 J2EE 프로그램에서 java.net.Socket 클래스를 통해 소켓을 직접 사용하는 경우를 검출합니다.\n소켓을 관리해주는 다른 메소드를 사용합니다.",
  "DIRECT_USE_OF_THREADS.description": "스레드의 직접 사용 체커는 J2EE 웹 애플리케이션에서 직접적으로 스레드를 사용하는 경우를 검출합니다.\nEJB 일 경우, 동시 실행을 위해서 스레드를 직접 사용하지 말고, 프레임워크 사용을 고려하는 것이 좋습니다.",
  "DIRECT_USE_OF_UNSAFE_JNI.description": "안전하지 않은 JNI의 직접 사용 체커는 다른 언어로 작성된 프로그램을 JNI를 통해 사용하는 경우를 검출합니다.\nnative 변경자를 사용하여 정의된 메소드는 안전을 위해 무조건 취약할 수 있다고 판정합니다.\nJNI 사용을 최대한 자제합니다. JNI를 반드시 써야할 경우 다른 언어로 작성된 프로그램에 대해서도 검증해야 하고, 다른 언어로 작성된 부분과 이를 JNI를 통해 호출하는 Java 프로그램 부분간의 상호작용으로 인해 발생할 수 있는 취약점에 대해서도 검증해야 합니다.",
  "DISABLE_STRUTS_INPUT_VALIDATION_FRAMEWORK.CONFIG.description": "Struts 입력 유효성 검사 프레임워크 미사용 체커는 입력 유효성 검사를 위한 Struts의 프레임워크를 사용하지 않는 코드를 검출합니다.\nStruts 환경 설정 파일(XML 형식)에 ValidatorPlugin과 같은 입력 검증 프레임워크를 설정합니다.",
  "DIVIDE_BY_ZERO.RUST.description": "나눗셈은 기본적인 연산으로 분모가 0인 경우에는 정의되지 않으며 대부분의 경우 이를 처리하기 위해 실행 시간 에러나 패닉을 발생시킵니다.",
  "DIVIDE_BY_ZERO.description": "0으로 나누기 연산 체커는 0으로 나누기를 수행하는 코드를 검출합니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다.",
  "DIVIDE_BY_ZERO_CSHARP.description": "0으로 나누기 연산 체커는 0으로 나누기를 수행하는 코드를 검출합니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다.",
  "DIV_BY_ZERO.MISSING_CHECK.description": "미확인한 0으로 나눗셈 연산 체커는 나눗셈의 제수인 함수 인자 혹은 반환값을 이전에는 0 확인 후 사용했지만 이번에는 0 확인 없이 사용하는 코드를 검출합니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다. 함수의 인자로 전달되거나 다른 함수에서 반환된 값은 0이 아니라고 확신할 수 없으므로 0인지 확인한 후에 나누기에 사용하는 것이 안전합니다.",
  "DIV_BY_ZERO.description": "0으로 나누기 연산 체커는 0으로 나누기를 수행하는 코드를 검출합니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다.",
  "DJANGO_DEBUG_ENABLED.description": "Django 디버그 설정에 의한 정보 노출 체커는 Django 프레임워크를 통해 생성된 애플리케이션 설정 파일에서 디버그 모드를 켜놓은 경우를 검출합니다.\nsettings.py 파일의 DEBUG 변수에 할당되는 값을 False로 수정합니다. 개발 과정에서는 이 설정이 크게 문제가 되지 않지만 서비스가 시작되기 전까지 반드시 수정해야 합니다.",
  "DOUBLE_CHECKED_LOCKING.description": "무의미한 잠금 중복 검사 체커는 불필요하게 잠금을 여러 번 검사하는 경우를 검출합니다.\n불필요한 검사를 반복하는 대신 원하는 코드 영역 전체가 제대로 동기화되도록 코드를 작성합니다.",
  "DOUBLE_CLOSE.CURSOR.description": "DOUBLE_CLOSE.CURSOR 오류는 이미 해제된 자원(Sql Cursor)을 다시 해제할 때 발생합니다.",
  "DOUBLE_CLOSE.CURSOR_ARRAY.description": "DOUBLE_CLOSE.CURSOR_ARRAY 오류는 이미 해제된 자원(Sql Cursor Array)을 다시 해제할 때 발생합니다.",
  "DOUBLE_CLOSE.RECORD.description": "DOUBLE_CLOSE.RECORD 오류는 이미 해제된 자원(Record)을 다시 해제할 때 발생합니다.",
  "DOUBLE_CLOSE.description": "리소스 이중 해제 체커는 이미 해제된 리소스를 다시 해제하려는 코드를 검출합니다.\n여기서 리소스는 파일, 네트워크 소켓 등을 가리킵니다.\n할당된 리소스를 해제하기 전에 이미 해제되었는지를 확인해야 합니다.",
  "DOUBLE_CLOSE_THREAD.description": "스레드 이중 해제 체커는 하나의 스레드에 join 및 detach 동작을 모두 수행하는 경우를 검출합니다.\n하나의 스레드에서 join 혹은 detach 중 하나의 동작만을 수행하도록 합니다.",
  "DOUBLE_FREE.description": "메모리 이중 해제 체커는 이미 해제된 메모리를 다시 해제하려는 코드를 검출합니다.\n메모리를 이중으로 해제하면 잠재적으로 메모리 위치를 예상하지 않게 수정하게 되어 프로그램이 비정상적으로 종료될 수 있습니다.\n할당된 메모리 혹은 리소스를 해제하기 전에 이미 해제되었는지 확인해야 합니다.",
  "DOUBLE_LOCK.description": "이중 잠금 체커는 이미 잠궈진 리소스에 다시 잠금을 거는 코드를 검출합니다.\n리소스의 잠금을 걸기 전에 이미 잠궈진 리소스가 아닌지 확인해야 합니다.",
  "DOUBLE_OPEN.description": "이중 리소스 접근 체커는 이미 열려 있는 파일을 다시 열려고 하면 이슈를 검출합니다.\n이미 열려 있는 파일을 다시 열지 않도록 주의해야 합니다.",
  "DOUBLE_UNLOCK.description": "이중 잠금 해제 체커는 이미 잠금이 해제된 리소스의 잠금을 다시 해제하려고 시도하는 코드를 검출합니다.\n리소스가 이미 잠금 해제되어 있다면 다시 잠금 해제하지 않도록 주의합니다.",
  "DOWNLOAD": "다운로드",
  "DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK_CSHARP.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "DO_DECL_VARS_AT_TOP_OF_FUNC.description": "함수 중간에 변수 선언 체커는 함수의 앞부분이 아닌 중간에 일부 변수를 선언하거나 초기화하는 코드를 검출합니다.\n옵션에서 초기화 여부 검사 유무, 검사를 무시할 함수 및 변수 이름을 설정할 수 있습니다.\n함수 초반부에 함수에서 사용하는 변수를 선언하고 초기화해야 합니다.",
  "DO_NOT_ABRUPTLY_TERMINATE_THE_PROGRAM.description": "atexit() 함수로 등록한 핸들러에서 예외 발생 체커는 atexit() 함수로 등록한 함수에서 예외가 발생하는 경우를 검출합니다.\natexit()로 등록한 함수 내에서 예외가 외부로 전파되지 않도록 해야 합니다.",
  "DO_NOT_ACCESS_ACCOUNT_INFORMATION.description": "계정 관련 데이터나 패스워드 등에 접근하는 것은 보안상 제한됩니다.",
  "DO_NOT_ACCESS_OVERLAPPING_STORAGE.description": "공용체 필드 간의 대입 연산 체커는 수식을 평가하면서 서로 메모리 영역이 겹치는 공용체 필드 간에 대입이 발생하는 수식을 검출합니다.\n같은 공용체 객체의 필드 간에는 대입 연산을 수행하지 않도록 합니다.",
  "DO_NOT_ACCESS_PRIVATE_MEMBER_OF_OUTER_CLASS.description": "외부 클래스의 private 멤버에 접근 체커는 내부 클래스에서 외부 클래스의 private 멤버에 접근하는 경우를 검출합니다.\n외부 클래스의 private 멤버에 직접 접근하지 않고 public 메소드를 통해 접근합니다. 내부 클래스에 공개해야 할 멤버는 private으로 선언하지 않고 public이나 protected로 선언합니다.",
  "DO_NOT_ACCESS_SHARED_OBJECT_IN_HANDLER.description": "시그널 핸들러의 공유 객체 접근 체커는 시그널 핸들러가 공유 객체에 접근하는 경우를 검출합니다.\n시그널 핸들러에서는 공유 객체에 접근하지 않도록 합니다.",
  "DO_NOT_ALTER_CONTROL_VARIABLE_MORE_THAN_ONCE.description": "반복문 제어 변수를 두 번 이상 변경 체커는 반복문 내에서 반복 제어 변수를 두 번 이상 변경하는 경우를 검출합니다.\n반복 제어 변수는 반복문의 다만 한 군데에서만 변경하도록 합니다.",
  "DO_NOT_APPEND_STRINGS.description": "문자열을 + 연산자 및 += 연산자로 더함 체커는 문자열에 대해 + 연산을 수행하는 경우를 검출합니다.\n이항 연산자 +에 대해서는 피연산자 둘 중 하나라도 문자열이면 문자열 덧셈으로 인식합니다. 복합 대입 연산자 +=에 대해서는 좌변의 대입 대상이 문자열인 경우를 문자열 덧셈으로 인식합니다.\n문자열 덧셈 대신 StringBuilder 혹은 StringBuffer 클래스를 사용합니다. 특히 문자열들이 3개 이상 더해질 때, 이 방식으로 성능도 향상시킬 수 있습니다.",
  "DO_NOT_ASSERT_AFTER_ATEXIT.description": "잘못된 종료 함수 핸들러 체커는 atexit() 함수를 사용하여 핸들러를 등록한 후에 assert() 함수를 사용하는 경우를 검출합니다.\natexit() 함수를 사용하여 핸들러를 등록한 후에 assert() 함수를 사용하지 않도록 합니다. 아니면 assert() 함수를 사용하기 위해 종료 프로세스를 다른 방법으로 처리하도록 합니다.",
  "DO_NOT_ASSUME_CONSTANT_WITH_EXPR.description": "명명된 상수값 가정 체커는 이미 명명된 상수를 매크로로 가정하여 사용하는 수식을 검출합니다. BUFSIZE와 같은 알려진 상수 값을 수식으로 표현하지 않도록 합니다.\n대표적으로 stdio.h 헤더 파일에 정의되는 BUFSIZE와 같은 명명된 상수가 있습니다. 해당 상수의 값은 기본적으로 512입니다.\n명명된 상수인 경우 가정하지 않고 그대로 사용하도록 합니다.",
  "DO_NOT_ASSUME_ENV.description": "환경 변수의 값이 일정한 크기의 배열에 strcpy로 복사할 경우를 검출합니다.",
  "DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES.description": "신뢰할 수 없는 출처에 대한 보안 검사 체커는 신뢰할 수 없는 출처의 객체나 인수를 복사하지 않고 바로 보안 검사를 수행하는 코드를 검출합니다.\n신뢰할 수 없는 객체 혹은 인수의 경우 보안 검사를 수행하기 전에 복사해야 합니다. 복사 작업은 깊은 복사(deep copy)여야 합니다. 특히 clone() 메소드를 이용하면 얕은 복사가 이루어질 수 있으며, 또한 clone() 메소드 자체가 공격자에 의해 제공될 수 있습니다. 검출 대상과 검출 규칙은 다음과 같습니다.\n\n검출 대상\njava.security.AccessController.doPrivileged()의 인자\njava.security.AccessController.doPrivilegedWithCombiner()의 인자\n\n검출 규칙\n1) 대상 메서드 파라미터 내에 클래스 타입이 final이 아니라 PARAM인 객체를 참조하면 경우\n2) 클래스 타입이 final이고 PARAM인 객체를 clone()하여 생성한 객체 P가 대상 메서드의 파라미터로 사용되는 경우\n파라미터로 넘어온 final이 아닌 타입의 변수를 대상 메서드에서 사용하지 않도록 합니다. 또한 해당 변수의 clone()를 통해 객체를 복사한 후 복사한 객체를 doPrivileged 나 doPrivilegedWithCombiner 함수에서 사용하지 않도록 합니다.",
  "DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES_BAK.description": "믿을 수 없는 소스를 사용한 보안검사는 위험합니다.",
  "DO_NOT_CALCULATE_SCALED_INT_TO_POINTER.description": "포인터 연산을 위한 포인터 크기 조정 금지 체커는 포인터 연산을 위해서 사용자가 임의로 포인터 크기를 조정한 경우를 검출합니다.\n포인터 크기를 임의로 조절하지 않도록 합니다.",
  "DO_NOT_COMMENT_IN_CODE_SECTION.description": "코드 영역에서 사용한 주석 체커는 코드와 코드 사이에서 사용한 주석을 검출합니다.\n코드와 코드 사이에서 주석을 사용하지 않도록 합니다.",
  "DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.description": "부동 소수점 값을 문자열 표현으로 비교 체커는 double이나 float 값을 문자열로 변환하여 다른 문자열과 비교하는 경우를 검출합니다.\n두 부동 소수점 값이 같은지 비교하고 싶다면 두 값의 차가 미리 정해둔 충분히 작은 값 이내인지 확인하는 방식으로 비교해야 합니다. 만약 10진법으로 정확한 값을 갖는 실수를 표현하고 싶다면 BigDecimal 클래스를 사용합니다.",
  "DO_NOT_CONTAIN_UNUSED_LABEL_IN_FUNCTION.description": "불필요한 레이블 체커는 함수 내에서 사용되지 않는 레이블을 검출합니다.\n사용되지 않는 레이블은 삭제합니다.",
  "DO_NOT_CONVERT_FLOATING_TO_INTEGRAL.description": "실수형을 정수형으로 변환 체커는 표준 라이브러리를 사용하지 않고 실수형 타입을 정수형 타입으로 캐스팅하는 경우를 검출합니다.\n표준 라이브러리를 사용하지 않고 실수형 타입을 정수형 타입으로 캐스팅하지 않도록 합니다. 산술 정밀도가 혼합된 식을 계산하는 것은 정의되지 않은 동작입니다. 단, 다음과 같은 변환 함수의 경우 개발자의 의도를 명확히 할 수 있으며 안전하다고 판단합니다. 관련 함수는 ceil(), floor(), round() 이며 각각 소수점 이하를 올림, 버림, 반올림합니다.\n실수형을 정수형으로 변환하는 경우 표준 라이브러리를 사용하도록 합니다.",
  "DO_NOT_CREATE_INSTANCE_IN_LOOP.description": "반복문 안에서 인스턴스 생성 체커는 반복문 안에서 생성자를 사용하여 인스턴스를 생성하는 경우를 검출합니다.\n반복문 안에서 인스턴스를 꼭 생성해야만 하는지, 반복문 시작 전에 한 번만 생성한 후 재사용할 방법이 없는지 생각해봅니다.",
  "DO_NOT_DECLARED_INLINE_WITHIN_CLASS_DECLARATION.description": "클래스 선언에서 정의된 메소드 체커는 클래스 선언 내부에서 정의된 인라인 메소드를 검출합니다.\n컴파일러는 클래스 내부에서 정의된 메소드는 기본적으로 인라인 메소드로 인식합니다. 개발자가 인라인 메소드를 정의하고 싶을 경우 다음과 같은 3가지 방법이 있습니다. 클래스 내부에서 inline 키워드를 사용하여 메소드를 선언 및 정의합니다. 클래스 내부에서 메소드를 선언 및 정의합니다. 클래스 외부에서 inline 키워드를 사용하여 메소드를 정의합니다. 이 체커는 이중에서 클래스 내부에서 선언된 명시적인 인라인 메소드와 암시적인 인라인 메소드를 검출합니다.\n인라인 메소드의 정의는 클래스 선언 다음에 나타내거나, 헤더 파일을 포함시킨 별도의 구현파일에 두도록 합니다.",
  "DO_NOT_DECLARE_CONFLICTING_LINKAGE_CLASSIFICATIONS.description": "스토리지 클래스 충돌 체커는 동일한 함수나 객체의 스토리지 클래스가 선언 및 정의에서 서로 일치하지 않고 충돌하는 경우를 검출합니다.\n함수나 객체의 선언 및 정의에서 스토리지 클래스가 항상 일치하도록 코드를 작성합니다.",
  "DO_NOT_DECLARE_IN_LOOPS.description": "반복문에서 객체 선언 체커는 반복문에서 객체를 선언하는 코드를 검출합니다.\n옵션에서 무시할 객체 타입, 무시할 변수 이름을 설정할 수 있습니다.\n반복문에서 객체를 선언하지 않도록 합니다.",
  "DO_NOT_DECLARE_OR_DEFINE_RESERVED_ID.description": "예약어를 식별자로 사용 체커는 예약어일 수 있는 단어를 식별자로 사용하는 경우를 검출합니다.\n밑줄로 시작하는 이름을 사용하지 않도록 합니다.",
  "DO_NOT_DEFINE_VARIADIC_FUNCTIONS.description": "가변 인자 사용 체커는 함수를 선언할 때 가변 인자를 사용하는 코드를 검출합니다.\n함수를 선언할 때 가변 인자를 사용하지 않도록 합니다.",
  "DO_NOT_DERIVE_FROM_VIRTUAL_BASE.description": "가상 상속 사용 체커는 부모 클래스를 가상 상속한 자식 클래스를 검출합니다.\n부모 클래스를 상속할 때 가상 상속을 사용하지 않도록 합니다.",
  "DO_NOT_DESTROY_A_MUTEX.description": "잠겨 있는 뮤텍스 파괴 체커는 잠긴 상태인 뮤텍스를 파괴하는 수식을 검출합니다.\n뮤텍스는 동시에 액세스 되는 공유 데이터를 보호하는데 사용합니다.\n뮤텍스가 잠겨있는 동안에는 뮤텍스를 파괴하지 않도록 합니다.",
  "DO_NOT_DISCARD_FUNCTION_RETURN_VALUE.description": "C++에서 함수 반환 결과 미사용 체커는 일부 예외를 제외하고 반환 값을 사용하지 않은 함수 호출 수식을 검출합니다.\n이때 일부 예외란 반환 타입이 void인 함수와 연산자 오버로딩 메소드입니다. 반환 타입이 void인 함수는 반환 값이 없으며, 연산자 오버로딩 메소드들의 반환 값은 반드시 사용하지 않아도 됩니다.\n연산자 오버로딩 메소드를 제외한 함수의 반환 값을 항상 사용하도록 합니다. 혹은 함수 반환 결과를 void로 캐스팅하여 이 값을 사용할 필요가 없다는 것을 명시적으로 나타냅니다.",
  "DO_NOT_EXPLICIT_FLOATING_INTEGRAL_CONVERSION.description": "cvalue 식을 캐스팅 체커는 cvalue로 판단되는 수식을 캐스팅한 경우를 검출합니다.\ncvalue 식이란 암시적, 또는 명시적으로 캐스팅을 수행하지 말아야 하는 수식을 의미합니다. 예를 들어 정수형 타입들을 나누기 연산하여 실수형 타입의 변수에 담을때 나눗셈 계산 결과는 cvalue 식입니다. 이때 이 계산 결과를 실수형 타입으로 명시적으로 캐스팅을 수행하는 수식을 검출합니다.\ncvalue 식을 명시적으로 캐스팅하지 않도록 합니다. 일반적으로 이 경우 캐스팅의 위치가 잘못되었을 가능성이 높습니다. 캐스팅 위치를 조절하도록 합니다.",
  "DO_NOT_EXTERND_VALIDATION_CLASS.description": "Validation 클래스 상속 금지 체커는 클래스가 ActionForm 또는 DynaActionForm 클래스를 상속 받는 코드를 검출합니다.\nForm Bean이 Validator 프레임워크의 ActionForm 서브 클래스를 확장하지 않습니다. 따라서 애플리케이션이 입력을 충분히 검증하지 않는 다른 취약점에 노출될 수 있습니다.\nActionForm 또는 DynaActionForm 클래스를 상속 받지 않아야 합니다. 스트럿츠 밸리데이터를 사용하려면 ValidatorForm, ValidatorActionForm, DynaValidatorActionForm 및 DynaValidatorForm 중 하나의 양식을 확장하도록 합니다. 스트럿츠 밸리데이터가 앞서 언급한 클래스에서 validate() 메소드를 구현하여 애플리케이션에 연결되기 때문에 해당 클래스 중 하나를 확장해야 합니다.",
  "DO_NOT_GET_DEVICE_ID.description": "앱이 IMEI를 기기 식별에 이용하면 기기 보안에 문제가 생길 수 있으므로 제한합니다.",
  "DO_NOT_GET_USIM_UNIQUE_ID.description": "앱이 기기와 USIM의 고유 정보에 접근하면 보안 문제를 일으킬 수 있습니다.",
  "DO_NOT_HIDE_DEREFERENCE_OP.description": "매크로로 역참조 숨김 체커는 매크로 정의를 사용하여 포인터 역참조 연산을 보이지 않게 숨기는 경우를 검출합니다.\n포인터 역참조 연산은 매크로로 정의하지 말고 겉으로 드러나게 사용합니다.",
  "DO_NOT_HIDE_DEREFERENCE_OP_IN_TYPEDEF.description": "사용자 정의 타입으로 역참조 숨김 체커는 사용자 정의 타입을 사용하여 포인터 역참조 연산을 보이지 않게 숨기는 경우를 검출합니다.\n포인터 역참조 연산은 사용자 정의 타입으로 정의하지 말고 겉으로 드러나게 사용합니다.",
  "DO_NOT_IMPORT_ON_DEMAND.description": "온디맨드 방식으로 import 체커는 '*' 형태로 import 하는 경우를 검출합니다.\n온디맨드 방식으로 import 하지 말고 개별 클래스나 정적 멤버를 모두 나열하는 방식으로 import 합니다.",
  "DO_NOT_INCLUDE_COMMENT_IN_MACRO.description": "매크로에 주석 포함 체커는 매크로 정의 중간에 주석이 포함된 경우를 검출합니다.\n매크로에 주석을 포함하지 않도록 합니다.",
  "DO_NOT_INCLUDE_PATH_SPECIFIER.description": "include 지시자에 경로문자 포함 체커는 #include 지시자에서 파일 이름에 경로 문자가 포함된 경우를 검출합니다.\n#include 지시자에서 파일 이름에 경로 문자를 포함하지 않도록 합니다.",
  "DO_NOT_INC_ITER_WITH_VALUE_GREATER_THAN_ONE.description": "반복자에서 1보다 큰 값으로 증감 금지 체커는 반복문의 반복자에서 1보다 큰 상수값으로 증감 연산을 수행하는 코드를 검출합니다.\n배열을 가리킬 때 포인터가 마지막 인덱스를 지나치는 주소를 가리키는 표현을 할 수 있습니다. 반복자 형식 역시 마찬가지로 마지막 원소를 지나친 주소를 가리킬 수 있습니다.\n2이상 가산 또는 감산하는 정수 타입의 표현식을 사용하지 않아야 합니다.",
  "DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.description": "입출력 버퍼로 인한 외부 프로세스 무한 대기 체커는 입출력 버퍼를 제대로 관리하지 않아서 멈출 수도 있는 외부 프로세스 사용을 검출합니다.\nredirectErrorStream() 등의 메소드를 통해 각종 입출력 버퍼를 자동 연결하고 적절히 처리해줍니다.",
  "DO_NOT_LOCK_OR_UNLOCK_IN_LOOP.description": "반복문 안에서 잠금 상태 변경 체커는 반복문 안에 잠금 및 잠금 해제 역할을 하는 메소드가 호출되는 경우를 검출합니다.\n옵션을 통해 잠금 관련 메소드 이름을 지정할 수 있습니다.\n반복문 안에서 잠금 상태를 변경하지 않습니다.",
  "DO_NOT_LOG_UNSANITIZED_USER_INPUT.description": "로그 조작 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.\n로그에 출력하기 전에 외부 입력값을 검사합니다. 특히 줄 바꿈 문자는 제거하는 것이 좋습니다.",
  "DO_NOT_MANIPULATE_TIME_T_DIRECTLY.description": "시간 관련 변수 직접 조작 체커는 time_t 타입의 변수를 직접 조작하는 수식을 검출합니다.\n따라서 산술 연산으로 time_t 타입의 변수를 직접 조작하지 않도록 합니다. 대신 적절한 시간 관련 함수를 사용하는 것이 좋습니다.",
  "DO_NOT_MIX_ARITHMETIC_PRECISION.description": "산술 정밀도 혼용 수식 체커는 수식에서 산술 정밀도를 혼용하는 경우를 검출합니다.\n산술 정밀도를 혼용하기 위해 명시적인 캐스팅을 수행하고 항상 주의를 기울여야 합니다.\n수식에서 산술 정밀도를 혼용하지 않도록 합니다.",
  "DO_NOT_MIX_SIGNED_AND_UNSIGNED.description": "부호 혼용 수식 체커는 수식에서 부호를 혼용하는 경우를 검출합니다.\n수식에서 부호를 혼용하지 않도록 합니다. 부호를 혼용하면 잘못된 계산으로 인한 문제가 발생할 수 있습니다.\n수식에서 부호를 혼용하지 않도록 합니다.",
  "DO_NOT_MODIFY_KEY_OF_SET.description": "컨테이너의 키 수정 체커는 set이나 multiset 컨테이너 객체의 키를 수정하는 수식을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 여기서 언급하는 set과 multiset 컨테이너는 데이터를 삽입시 자동으로 정렬하는 특징이 있습니다.\nset이나 multiset의 키를 수정하지 않습니다. set과 multiset에 한 번 넣은 데이터는 직접 수정하지 말고 오로지 삽입과 삭제만으로 관리하도록 합니다.",
  "DO_NOT_MODIFY_PRIVATE_IN_PUBLIC_FUNCTION.description": "외부 데이터를 private 필드에 저장 체커는 외부에서 접근 가능한 객체를 private 필드에 저장하는 경우를 검출합니다.\npublic 필드 변수 혹은 public 메소드에서 인자로 전달된 변수에 담긴 객체는 외부에서 접근 가능합니다.\nprivate 필드에는 클래스 내부에서 직접 생성한 객체만을 저장합니다. 혹은 private 메소드를 통해서 값을 저장하도록 합니다.",
  "DO_NOT_MODIFY_STATIC_MEMBER_IN_COPY_CONSTRUCTOR.description": "복사 생성자에서 정적 필드값 변경 체커는 복사 생성자 내부에서 정적 필드의 값을 변경하는 수식을 검출합니다.\n복사 생성자에서 정적 멤버의 값을 변경하지 않도록 합니다.",
  "DO_NOT_MODIFY_THE_STANDARD_NAMESPACES.description": "표준 네임스페이스 변경 체커는 사용자가 임의로 std 네임스페이스를 정의한 경우를 검출합니다.\n사용자가 임의로 std 네임스페이스를 정의하지 않도록 합니다. 다른 네임스페이스 이름을 사용하거나 std 네임스페이스에 속한 라이브러리를 호출하는 코드를 작성하는 방식으로 사용합니다.",
  "DO_NOT_NOTIFY_IN_SYNCHRONIZED.description": "동기화 블록 내에서 notify 사용 체커는 synchronized 블록 내에서 notify() 메소드를 호출하는 경우를 검출합니다.\nnotifyAll() 메소드로 모든 스레드를 깨우고 어떤 스레드가 실제로 다음 단계로 넘어갈지를 제어합니다.",
  "DO_NOT_OPERATE_ENUMERATOR.description": "잘못된 열거자 연산 체커는 산술 연산자의 피연산자로 열거자를 사용하는 코드를 검출합니다.\n열거자는 비교 연산자에서만 사용하도록 합니다. 열거자를 계산에 사용하는 +, -와 같은 산술 연산자의 피연산자로 사용하면 안됩니다.\n열거자를 계산에 사용하는 산술 연산자의 피연산자로 사용하지 않도록 합니다.",
  "DO_NOT_OPERATE_ON_FILES_IN_SHARED_DIRECTORIES.description": "공유 디렉토리 안의 파일은 주의하여 사용해야 합니다.",
  "DO_NOT_OPERATE_ON_UNTRUSTED_FILE_LINKS.description": "신뢰할 수 없는 파일 링크 사용 체커는 파일 경로가 일반 파일이 아닌 링크 파일인지 확인하지 않고 접근하는 경우를 검출합니다.\n파일에 접근하기 전에 링크 여부를 확인하고 의도하지 않은 링크 파일임이 확인되면 작동을 중단합니다.",
  "DO_NOT_OVERLOAD_FUNCTION_WITH_SPECIALIZATION.description": "템플릿 특수화된 함수의 모호한 호출 체커는 템플릿 특수화가 존재하고 일반 함수와 모호성이 발생하는 호출 수식을 검출합니다.\n템플릿 특수화(Template Specialization)은 템플릿 인자를 실제 타입으로 치환하여 템플릿 요소에서 일반적인 클래스나 함수, 메소드로 변환한 결과물을 의미합니다.\n함수 호출이 모호하지 않도록 호출 시점에서 명시적으로 템플릿 특수화 함수 호출을 사용합니다. 템플릿 특수화 함수 호출은 호출하는 함수명과 괄호 사이에 <>를 붙여 사용하는 것입니다.",
  "DO_NOT_OVERLOAD_LAND_LOR_COMMA.description": "콤마 및 논리 연산자 오버로딩 체커는 콤마 및 논리 연산자를 오버로딩 한 클래스를 검출합니다.\nC++ 클래스는 연산자의 오버로딩이 가능하며, operator,(), operator&&(), operator||()와 같이 콤마 및 논리 연산자의 오버로딩도 가능합니다.\n오버로딩을 할 경우 표현식 순서가 달라지는 연산자는 오버로딩하지 않도록 합니다.",
  "DO_NOT_OVERLOAD_NONVIRTUAL_FUNCTION.description": "부모 클래스의 비가상 함수를 숨김 체커는 부모 클래스에서 선언된 비가상 함수를 사용할 수 없는 자식 클래스 선언을 검출합니다.\n부모 클래스의 비가상 함수를 숨기지 않도록 합니다. 다른 동작이 필요한 경우 이름을 바꾸도록 합니다.",
  "DO_NOT_OVERLOAD_NUMERIC_AND_POINTER.description": "모호한 타입 간의 오버로딩 함수 선언 체커는 오버로딩 함수들의 인자 타입이 포인터와 숫자같이 서로 모호한 함수를 검출합니다.\n오버로딩 함수들의 인자 타입이 서로 모호한 경우 서로를 구분할 수 있도록 다른 이름을 지어주거나 인자 개수를 다르게 합니다.",
  "DO_NOT_OVERRIDE_ADDRESSOF.description": "주소 연산자 오버로딩 체커는 클래스에서 주소 연산자를 오버로딩한 메소드 선언을 검출합니다.\n주소 연산자를 오버로딩하지 않도록 합니다.",
  "DO_NOT_READ_STREAM_IN_LOOP.description": "반복문 안에서 스트림 읽기 체커는 반복문 안에 스트림에 대한 read() 메소드가 호출되는 경우를 검출합니다.\n반복문 안에서 스트림을 읽지 않습니다.",
  "DO_NOT_RECORD_MEDIA.description": "오디오나 비디오를 녹화하면 사생활을 침해할 수 있습니다.",
  "DO_NOT_RECURSIVELY_REENTER_DURING_INIT_STATIC.description": "정적 변수 초기화에서 재귀 함수 호출 체커는 정적 변수를 초기화할 때 재귀 함수 호출이 들어있는 수식을 검출합니다.\n정적 변수를 초기화할 때 재귀 함수 호출을 사용하지 않습니다.",
  "DO_NOT_REDEFINE_ERRNO.description": "errno 변수 재정의 체커는 errno 변수를 개별 소스 파일에서 직접 재정의하는 경우를 검출합니다.\nerrno 변수를 직접 선언하는 대신 errno.h 등의 표준 헤더에 포함하도록 합니다.",
  "DO_NOT_RELY_ON_ENUM_VALUE.description": "열거형의 정수값 의존 체커는 열거형을 내부적인 정수 표현값을 사용하여 명시적으로 비교하는 경우를 검출합니다.\n열거형의 정수값에 의존하지 않고 각 열거형 항목과 비교하도록 합니다.",
  "DO_NOT_RELY_ON_THE_DEFAULT_AUTOMATIC_SIGNATURE_VERIFICATION.description": "기본 자동 서명 인증 사용 체커는 서명이 올바른지 추가로 확인을 수행하지 않고 기본 자동 서명 확인 프로세스만 사용하는 코드를 검출합니다.\njava.security.cert.Certificate.verify 함수를 사용하여 서명을 확인한 후 사용합니다.",
  "DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.description": "write를 통한 부적절한 정수값 출력 체커는 0 에서 255 에 속하지 않은 정수값을 write 메소드를 사용하여 출력하는 경우를 검출합니다.\nwrite() 메소드에는 항상 0에서 255까지의 정수값만 전달합니다. 범위를 넘어서는 정수에서 하위 8비트만을 출력하는 것이 의도라면 비트 연산을 통해 하위 8비트만을 먼저 선택한 후 그 값을 전달하여 의도를 명확히 하는 것이 좋습니다.",
  "DO_NOT_REMOVE_CONST.description": "캐스팅으로 const 한정자 제거 체커는 const형 객체를 캐스팅하여 const 한정자를 제거하는 수식을 검출합니다.\nconst 형 객체를 캐스팅하여 const 한정자를 제거하지 않도록 합니다.",
  "DO_NOT_REMOVE_VOLATILE.description": "캐스팅으로 volatile 한정자 제거 체커는 volatile 형 객체를 캐스팅하여 volatile 한정자를 제거하는 수식을 검출합니다.\nvolatile 형 객체를 캐스팅하여 volatile 한정자를 제거하지 않도록 합니다.",
  "DO_NOT_RETURN_PRIVATE_FIELD_OF_OUTER_CLASS.description": "외부 클래스의 private 필드 반환 체커는 내부 클래스에서 외부 클래스의 private 멤버에 접근하여 직접 값을 반환하는 경우를 검출합니다.\n외부 클래스의 private 멤버에 직접 접근하지 않고 public 메소드를 통해 접근합니다. 내부 클래스에게 공개해야 할 멤버는 private으로 선언하지 않고 public이나 protected로 선언합니다.",
  "DO_NOT_RETURN_SIGNAL_HANDLERS.description": "치명적 오류 시그널 핸들러에서 반환 체커는 프로그램이 종료되어야 하는 치명적인 오류 시그널 핸들러에서 암시적 혹은 명시적으로 값을 반환하는 경우를 검출합니다.\nSIGSEGV, SIGILL, SIGFPE와 같은 치명적인 오류 시그널 핸들러의 경우 값을 반환하는 대신 abort(), quick_exit(), _Exit() 등 특정한 함수를 호출하여 프로그램을 종료해야 합니다.\n치명적 오류 시그널 핸들러 함수에서는 값을 반환하는 대신 abort(), quick_exit(), _Exit()와 같은 함수를 호출하여 프로그램을 종료해야 합니다.",
  "DO_NOT_REUSE_IDENTIFIER_NAME.description": "이름이 같은 식별자 체커는 어떠한 식별자라도 이름이 같은 경우를 검출합니다.\n이름 공간이 다를 경우 실제로 두 공간에 존재하는 이름이 겹치거나 가려지는 현상이 발생하지는 않습니다. 하지만 이 체커는 그것과 관계 없이 모든 식별자에서 이름을 재사용하는 것을 금지합니다. 여기서 식별자는 함수, 레이블, 열거형 상수, 변수, 매개 변수, 태그, 필드 등의 이름을 포함합니다.\n이전에 사용한 식별자를 다시 사용하지 않도록 합니다.",
  "DO_NOT_REUSE_IDENTIFIER_WITH_EXTERNAL_LINKAGE.description": "외부 연결 식별자 중복 선언 체커는 링크 단계에서 다른 소스 파일에 선언된 동일한 식별자와 연결된 전역 식별자를 다른 범위에서 중복 선언한 경우를 검출합니다.\n중복 선언된 식별자를 삭제하거나 이름을 변경합니다.",
  "DO_NOT_REUSE_IDENTIFIER_WITH_STATIC_STORAGE.description": "이름이 같은 정적 객체 체커는 정적 객체로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n여기서 정적 객체란 정적 저장(Static Storage) 기간을 가진 모든 객체의 식별자를 의미합니다. 여기에는 함수도 포함됩니다.\n정적 객체를 선언할 때 이전에 사용한 이름을 다시 사용하지 않도록 합니다.",
  "DO_NOT_REUSE_PUBLIC_IDENTIFIERS.description": "Java 표준 라이브러리의 공용 식별자 재사용 체커는 표준 라이브러리의 공용 식별자와 동일하게 클래스나 인터페이스의 식별자를 정의하는 코드를 검출합니다.\nJava Language Specification (JLS)의 6.3.2, Obscured Declarations [JLS 2005]에 명시된 바와 같이, 커스텀 타입의 Vector는 java.util.Vector의 클래스 이름을 가릴(shadow) 수 있으며, 이로 인해 예상치 않은 동작이 발생할 수 있습니다. 잘 정의된 import 문은 이러한 문제를 해결할 수도 있습니다. 하지만 재사용된 이름을 다른 패키지에서 가져온 경우 type-import-on-demand 선언을 사용하면 프로그래머가 어떤 정의를 사용하려는 것인지 의도를 파악하기가 어려울 수 있습니다.\n\n또한 오류가 발생할 수 있는 일반적 관행 중 하나가 코드를 작성한 후 import 문을 생성하는 것입니다. 이 오류는 종종 IDE가 import 문을 자동으로 포함하면서 발생하기도 하는데, 이로 인해 이름과 관련해서 더 많은 모호성이 생길 수 있습니다.\n\n추가적으로 Java의 include 경로에 있는 타입보다 커스텀 타입이 먼저 발견되면 더 이상 검색이 수행되지 않으므로 잘못된 타입이 자동으로 채택될 수 있습니다.\n클래스나 인터페이스의 식별자를 표준 라이브러리의 공용 식별자와 동일하게 정의하지 않도록 합니다.\n식별자 리스트는 rt.jar 내부에서 참고할 수 있습니다.",
  "DO_NOT_SEND_SMS.description": "소스 코드에서 SMS를 전송하는 것은 코드 정보를 외부로 유출할 수 있어 위험하므로 금지합니다.",
  "DO_NOT_SLEEP_OR_YIELD_WITHOUT_CONTROL.description": "제어 없이 sleep 혹은 yield 사용 체커는 조건에 의한 제어 없이 sleep() 혹은 yeidl() 메소드를 호출하는 경우를 검출합니다.\n해당 메소드가 반드시 조건부로 호출되도록 제어 구문을 작성합니다.",
  "DO_NOT_SPECIFY_BOUND_OF_ARRAY_FOR_STRING_LITERAL.description": "문자열로 초기화된 배열에 크기 지정 체커는 문자열 리터럴로 초기화되는 배열 선언에서 배열의 크기를 지정하는 경우를 검출합니다.\n문자열로 초기화되는 배열의 크기를 명시하지 않도록 합니다.",
  "DO_NOT_STORE_RETURNED_POINTERS.description": "특정 함수의 반환 포인터 저장 체커는 특정 표준 라이브러리 함수에서 반환된 포인터를 역참조 수정이 가능한 변수에 저장하는 경우를 검출합니다.\n이 체커는 getenv(), asctime(), localeconv(), setlocale(), strerror() 함수의 반환 값이 변수에 저장되는 것을 검사합니다.\n만약 한 번 반환된 포인터를 여러 번 사용할 필요가 있다면 상수형 포인터 변수에 저장하여 역참조된 메모리에 있는 값이 수정되지 않게 합니다.",
  "DO_NOT_THROW_ITSELF_CAUSE_EXCEPTION.description": "throw 구문의 수식에서 예외 발생 체커는 예외를 던질때 사용하는 throw 구문의 수식을 평가한 결과가 예외를 발생시키는 수식인 경우를 검출합니다.\nthrow 구문의 수식은 예외를 발생시키지 않도록 합니다.",
  "DO_NOT_TREAT_ARRAYS_POLYMORPHICALLY.description": "배열을 다형성으로 취급 금지 체커는 객체의 동적 포인터 형식과 다른 정적 포인터 형식으로 할당하면 이슈를 검출합니다.\n클래스 객체를 배열로 할당할 때는 선언한 클래스 타입 그대로 할당하도록 합니다. 만약 선언한 클래스 타입의 상속 클래스를 할당할 필요가 있을 경우 변수의 클래스 선언 타입을 바꾸도록 합니다.",
  "DO_NOT_TYPEDEF_ARRAYTYPE.description": "typedef을 사용한 배열 타입 선언 체커는 배열 타입을 typedef로 선언한 경우를 검출합니다.\n배열 타입을 typedef로 선언하지 않도록 합니다. 배열 형식을 typedef로 선언하여 사용할 경우, 경계값의 확인 및 delete시 잘못 사용할 수 있습니다.\ntypedef로 배열 타입을 선언하지 않습니다.",
  "DO_NOT_USE_ABORT_STREAM_OPENED.description": "적절하지 않은 종료 체커는 fopen() 함수를 사용한 후에 적절하지 않은 종료 함수를 호출하는 경우를 검출합니다.\n여기서 적절한 종료란 exit() 함수를 호출하는 것입니다. 그 외에 다른 종료 방법으로는 abort(), _Exit() 함수 등이 있습니다.\nfopen() 함수를 호출하면 종료하기 위해 exit() 함수를 사용하도록 합니다.",
  "DO_NOT_USE_ADJACENT_BINARY_OPERATOR.description": "이항 연산자 주위 공백 규칙 위반 체커는 접근 이항 연산자를 제외한 이항 연산자들과 전후 피연산자들 사이에 공백이 없는 수식을 검출합니다.\n이 때 제외하는 접근 이항 연산자란 배열참조 ([]), 구조체 참조 (.), 구조체 포인터 참조 (->) 등을 의미합니다.\n접근 이항 연산자를 제외한 모든 이항 연산자는 반드시 사이에 공백을 넣도록 합니다.",
  "DO_NOT_USE_ARRAY.description": "배열 자료형 변수 선언 체커는 옵션에 지정된 변수를 배열 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 배열 변수 검사 범위를 지정할 수 있습니다.\n변수를 배열 자료형으로 선언하지 않습니다.",
  "DO_NOT_USE_ARRAY_ACCESS.description": "배열 수식으로 배열 접근 체커는 배열 객체에 접근할 때 배열 연산자([])를 사용하는 코드를 검출합니다.\n배열에 접근할 때 배열 수식 대신 포인터를 사용해야 합니다.",
  "DO_NOT_USE_AUTO.description": "auto 키워드 사용 체커는 auto 키워드를 사용한 경우를 검출합니다.\nauto 키워드를 사용하지 않도록 합니다. auto 키워드는 변수 선언에 사용할 경우 스택에 메모리를 할당한다는 의미입니다. 또한 아무것도 표시하지 않은 변수는 auto와 같은 의미를 가집니다. auto나 register 키워드를 사용하여 프로그래머가 메모리 할당을 조정하는 것보다 현대적인 컴파일러에게 맡겨두는 것이 더 났습니다. 이와 별개로, C++11 표준에서 auto 키워드는 자동으로 변수의 타입을 추론하는데 사용됩니다.\nauto 키워드를 사용하지 않습니다.",
  "DO_NOT_USE_BOOLEAN_VECTOR.description": "bool 타입의 벡터 생성 체커는 벡터에 bool 타입을 담는 변수 선언을 검출합니다.\n반드시 벡터에 bool 타입을 담지 않습니다. 만약 bool 타입의 집합이 필요한 경우에는 비트셋을 사용합니다.",
  "DO_NOT_USE_BREAK_CONTINUE.description": "break문이나 continue 문이 사용될 경우를 검출합니다.",
  "DO_NOT_USE_BREAK_EXCEPT_SWITCH_STMT.description": "switch 구문이 아닌 곳에서 break 구문 사용 체커는 switch 구문을 제외한 다른 문장에서 break 구문을 사용한 경우를 검출합니다.\nbreak 구문은 switch 구문에서만 사용하도록 합니다. 꼭 break 구문이 필요한 경우, 조건식을 변경하여 break 구문이 없어도 제어 흐름을 벗어날 수 있도록 코드를 수정합니다.",
  "DO_NOT_USE_BREAK_WITH_LABEL.description": "레이블을 사용한 break 구문 체커는 반복문 내에서 레이블을 사용해 특정 반복문을 지정해 중단하도록 하는 경우를 검출합니다.\n레이블을 사용한 break 구문 대신 다른 방법을 사용합니다. 동일한 의도를 달성할 수 있는 다른 방법은 항상 존재합니다.",
  "DO_NOT_USE_COMMA_OPERATOR.description": "콤마 연산자 사용 체커는 콤마 연산을 사용한 수식을 검출합니다.\n이때 기본적으로 콤마가 들어가는 함수 호출의 인자 값 등은 제외합니다.\n콤마 연산자를 사용하지 않도록 합니다.",
  "DO_NOT_USE_CONSTANT_OF_INNER_CLASS.description": "내부 클래스의 상수 체커는 내부 클래스에 정적 final로 선언된 상수 변수를 외부 클래스에서 직접 참조하는 경우를 검출합니다.\n외부 클래스에서 사용될 수 있는 상수 변수는 내부 클래스에 선언하지 말고 외부 클래스로 옮깁니다.",
  "DO_NOT_USE_CONST_FOR_SYMBOLIC_CONSTANT.description": "상수 대신 매직 넘버 또는 문자열 사용 체커는 코드에 심볼릭 상수가 아닌 매직 넘버나 문자열들을 사용하는 경우를 검출합니다.\n매직 넘버 또는 문자열 대신 상수를 사용하도록 합니다.",
  "DO_NOT_USE_CSTDIO.description": "cstdio 헤더 사용 체커는 cstdio 헤더 파일을 포함하는 전처리 구문을 검출합니다.\n소스 코드에서 cstdio 헤더를 포함하지 않도록 합니다. C++에서 스트림 및 파일 입출력 라이브러리가 필요한 경우에는 iostream 와 같은 헤더를 포함하도록 합니다.",
  "DO_NOT_USE_CSTRING.description": "cstring 헤더 사용 체커는 cstring 헤더 파일을 포함하는 전처리 구문을 검출합니다.\n소스 코드에서 cstring 헤더를 포함하지 않도록 합니다. C++에서 문자열 관련 라이브러리가 필요한 경우에는 string 헤더를 포함하도록 합니다.",
  "DO_NOT_USE_CTIME.description": "ctime 헤더 사용 체커는 ctime 헤더 파일을 포함하는 전처리 구문을 검출합니다.\n소스 코드에서 ctime 헤더를 포함하지 않도록 합니다. C++에서 시간 관련 라이브러리가 필요한 경우에는 chrono 헤더를 포함하도록 합니다.",
  "DO_NOT_USE_C_STYLE_ALLOCATION.description": "C 스타일 메모리 관련 함수 사용 체커는 클래스 타입을 할당하거나 해제할 때, C 스타일 메모리 관련 함수를 사용한 수식을 검출합니다.\nC 스타일 메모리 관련 함수 대신 각 함수에 대응하는 C++ 메모리 연산자를 사용합니다. 구체적으로는 malloc() 함수 대신 new 연산자를 사용하고, free() 함수 대신 delete 연산자를 사용합니다.",
  "DO_NOT_USE_C_STYLE_CASTING.description": "C 스타일 캐스팅 사용 체커는 소스 코드에서 C 스타일 캐스팅을 사용한 수식을 검출합니다.\nC++에 새롭게 추가된 캐스팅(static_cast, const_cast, dynamic_cast, reinterpret_cast)을 사용합니다. C++ 캐스팅은 C캐스팅보다 가독성이 좋으며, 더 강력한 타입 검사를 지원합니다. static_cast는 보편적으로 허용하는 캐스팅이 필요할 때 사용하며, 컴파일 타임에 캐스팅 타입 오류를 잡아줍니다. const_cast는 수식의 한정자(const, volatile 등)을 추가하거나 제거할 때 사용합니다. dynamic_cast는 캐스팅을 수행하는 사용자 정의 타입들을 안전하게 다운캐스팅해야 할 때 사용합니다. 이 캐스팅은 캐스팅하려는 타입과 수식이 서로 상속 관계가 아닐 경우 널 포인터 혹은 예외를 발생시킵니다. reinterpret_cast는 포인터를 다른 포인터 형식으로 캐스팅할 때 사용합니다.",
  "DO_NOT_USE_DANGEROUS_FUNCTIONS.description": "위험한 함수 사용 체커는 옵션에 지정된 위험하다고 알려진 함수를 사용하는 코드를 검출합니다.\n옵션에서 사용 금지 함수를 설정할 수 있습니다. atof(), atoi(), atol() 함수는 각각의 타입(f, i, l)으로 변환할 수 없는 값에 대한 예외를 처리하지 않습니다. 예외 처리가 정의되지 않았기 때문에 반환값을 예측할 수 없습니다. 예를 들어, atof(), atoi(), atol() 함수를 사용하여 버퍼 크기를 설정하는 경우 버퍼 오버플로우가 발생할 수 있습니다. C 표준 라이브러리에서 예외 처리를 수행하는 strtof(atof), strtol(atoi, atol) 함수를 사용하세요. strcpy() 함수는 대상 문자열에 복사되는 원본 문자열의 크기를 검사하지 않습니다. 원본 문자열이 대상 문자열보다 큰 경우 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 복사되는 크기 상한을 지정하는 strncpy() 함수를 사용하세요. strcat() 함수는 결과물의 크기를 검사하지 않습니다. 합쳐진 결과물이 대상 문자열이 할당 받은 크기보다 큰 경우, 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 합쳐지는 크기 상한을 지정하는 strncat() 함수를 사용하세요. fopen() 함수는 오류가 발생할 때 원인을 찾기 힘듭니다. C 표준 라이브러리에서 오류 원인을 반환하는 fopen_s() 함수를 사용하세요. gets() 함수는 대상 문자열에 삽입되는 입력의 크기를 검사하지 않습니다. 표준 입력 스트림으로 삽입되는 배열이 대상 문자열보다 큰 경우 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 입력 크기를 지정하는 fgets() 혹은 gets_s() 함수를 사용하십시오.\n위험하다고 알려진 함수를 사용하지 않도록 합니다.",
  "DO_NOT_USE_DEFAULT_ARGUMENT_WITH_OVERLOADED.description": "오버로딩된 함수에서 기본 인자 값 사용 체커는 오버로딩으로 정의된 함수에 기본 인자 값이 사용된 경우를 검출합니다.\n오버로딩된 함수들에서 기본 인자 값을 사용하지 않도록 합니다. 만약 오버로딩된 함수에서 기본 인자 값을 사용할 경우 함수 호출 시 모호성이 발생할 수 있습니다.\n오버로딩된 함수에서 기본 인자 값을 사용하지 않습니다.",
  "DO_NOT_USE_DEF_WITHIN_A_BLOCK.description": "블록 내에서 define 및 undef 전처리 구문 사용 체커는 함수 본문과 같은 블록 내에서 define 이나 undef 전처리 구문을 사용한 경우를 검출합니다.\ndefine 이나 undef와 같은 전처리 구문은 항상 블록 범위 바깥에서 사용하도록 합니다.",
  "DO_NOT_USE_DEPRECATED_API.description": "사용 자제 API를 사용 체커는 사용을 자제할 것이 권고되는(deprecated) API를 사용하는 경우를 검출합니다.\n사용을 자제할 API 목록은 옵션으로 지정할 수 있습니다.\n다른 허용된 API를 사용하는 것을 고려해보도록 합니다.",
  "DO_NOT_USE_DEPRECATED_FUNCTIONS.description": "더 이상 사용되지 않는 함수 호출 체커는 중요도가 떨어져서 더 이상 사용되지 않는 함수를 호출하는 경우를 검출합니다.\n더 이상 사용되지 않는 함수는 다음과 같습니다. asctime(), asctime_s(), atof(), strtod(), atoi(), strtol(), atol(), strtol(), atoll(), strtoll(), ctime(), ctime_s(), gets(), gets_s(), fopen(), fmemopen|open_memstream(), fopen_s(), freopen(), freopen_s(), rewind(), fseek(), setbuf(), vsetbuf(), strtok(), strtok_r(), strtok_s(), vsprintf(), vsnprintf(), strcpy(), strcpy_s(), strcat(), strcat_s().\n더 이상 사용되지 않는 함수를 사용하지 않도록 합니다.",
  "DO_NOT_USE_DIGRAPH.description": "이중자 사용 체커는 이중자(digraph)를 사용하는 경우를 검출합니다.\n이중자(digraph)를 사용하지 않도록 합니다. 이중자의 사용은 코드의 가독성을 떨어트릴 수 있습니다.\n이중자를 사용하지 않도록 합니다.",
  "DO_NOT_USE_DOWHILE.description": "Do-while 문은 사용하지 않으며, while 또는 for문장을 대신 사용합니다.",
  "DO_NOT_USE_DO_WHILE.description": "Do-While 문 사용 체커는 Do-While 문을 사용하는 코드를 검출합니다.\nDo-While 문 대신 While 문을 사용하도록 합니다.",
  "DO_NOT_USE_DYNAMICALLY_ALLOCATED_ARRAYS.description": "동적 할당한 배열 사용 체커는 동적으로 할당한 배열 타입의 변수 선언을 검출합니다.\n이것은 일반적인 객체의 동적 할당은 해당 하지 않습니다. 오로지 배열 타입의 동적 할당을 수행했을 때 검출합니다.\n동적 할당한 배열을 사용하는 대신 벡터나 문자열을 사용하도록 합니다. 벡터와 문자열은 자동적으로 저장소와 관련된 요구사항을 관리해주며, 프로그래머는 직접 동적할당 메모리를 관리할 필요가 없습니다. 이것은 잠재적으로 메모리와 관련된 버그 및 비효율성 문제가 일어나지 않도록 할 수 있습니다.",
  "DO_NOT_USE_DYNAMIC_ALLOCATION.description": "동적 할당 사용 체커는 동적 할당을 사용한 수식을 검출합니다.\n동적 할당을 사용하지 않도록 합니다.",
  "DO_NOT_USE_ERRNO.description": "errno 지시자 사용 체커는 errno 지시자를 사용하는 코드를 검출합니다.\nerrno 지시자를 사용하지 않도록 합니다.",
  "DO_NOT_USE_EXTERN_OR_STATIC.description": "금지된 정적 및 외부 키워드 사용 체커는 옵션에 지정된 범위의 변수나 함수를 선언할 때 static 혹은 extren 키워드를 사용하는 코드를 검출합니다.\n옵션에서 extren 키워드 검사 여부, static 키워드 검사 여부 및 검사 범위를 설정할 수 있습니다.\n옵션에 지정된 범위에서 extern 혹은 static 키워드를 사용하지 않도록 합니다.",
  "DO_NOT_USE_EXTRA_CHARACTER_AFTER_PREPROCESSOR.description": "전처리 구문 뒤에 불필요한 문자 작성 체커는 정상적인 전처리 구문 형식 뒤에 공백을 제외한 불필요한 문자가 오는 경우를 검출합니다.\n전처리 구문 뒤에는 공백을 제외한 불필요한 문자가 오지 않도록 합니다.",
  "DO_NOT_USE_FENV_EXCEPTIONS.description": "금지된 fenv.h 헤더의 예외 처리 사용 체커는 fenv.h 헤더에 포함된 예외 처리 기능을 사용한 경우를 검출합니다.\nfenv.h 헤더가 제공하는 예외 처리 기능을 사용하지 않습니다.",
  "DO_NOT_USE_FINDDOMNODE.REACT.description": "React에는 주어진 클래스 인스턴스를 바탕으로 트리를 탐색해 DOM 노드를 찾을 수 있는 \"findDOMNode\"를 지원합니다. 하지만 \"findDOMNode\"는 부모가 특정 자식을 렌더링하는 것이 허용되어 추상화가 깨지는 원인이 됩니다.\nReact 공식 문서에서 더 이상 지원하지 않고 이를 사용하지 않도록 권장하고 있습니다.",
  "DO_NOT_USE_FLOAT_AS_LOOP_COUNTERS.description": "루프 카운터에 실수 타입 사용 체커는 실수형 변수를 루프 카운터로 사용하는 경우를 검출합니다.\n루프 카운터에 실수형이 아닌 정수형 변수만을 사용하도록 합니다.",
  "DO_NOT_USE_FORBIDDEN_FUNC.description": "금지된 함수가 사용될 경우를 검출합니다.",
  "DO_NOT_USE_FORBIDDEN_TYPE.description": "금지된 자료형이 사용될 경우를 검출합니다.",
  "DO_NOT_USE_FUNCTION_LIKE_MACRO.description": "매크로 함수 사용 체커는 매크로 함수를 정의하여 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 함수를 사용하지 않도록 합니다. 성능의 문제로 인해 일반 함수를 사용하지 않는 경우 대신 인라인 함수를 사용하도록 합니다.",
  "DO_NOT_USE_GETLOGIN_IN_MULTI_THREAD.description": "다중 스레드 환경에서 getlogin() 함수 사용 체커는 다중 스레드 환경에서 사용자 계정을 가져오기 위해 getlogin() 함수를 사용하는 코드를 검출합니다.\n옵션에서 다중 스레드 환경에서 사용하지 말아야 할 함수를 설정할 수 있습니다.\n다중 스레드 환경에서 getlogin() 함수를 사용하지 않습니다.",
  "DO_NOT_USE_GOTO_STATEMENT.description": "goto 구문 사용 금지 체커는 goto 구문이 정해진 제한을 어기고 사용되는 경우를 검출합니다.\n옵션에서 함수당 허용하는 goto 구문의 최대 개수 및 매크로 내 goto 구문 검출 여부를 설정할 수 있습니다.\ngoto 문을 사용하지 않습니다.",
  "DO_NOT_USE_HARD_CODING.INITIALIZATION.description": "변수 초기화 시 하드코딩된 값 사용 체커는 옵션에 지정된 변수를 초기화할 때 하드코딩된 값을 사용하는 코드를 검출합니다.\n옵션에서 분석 대상 수식, 분석 대상의 자료형, 분석 제외 대상 수식을 설정할 수 있습니다.\n옵션에 지정된 변수를 초기화할 때 하드코딩된 값을 사용하지 않도록 합니다.",
  "DO_NOT_USE_HARD_CODING.NUMBER.description": "숫자 상수 하드코드 체커는 정수나 실수 상수가 함수 인자나 수식 등에 직접 사용되는 경우를 검출합니다.\n한 번 이상 사용할 특정 상수는 상수 변수에 저장해두고 이 변수를 통해 사용합니다.",
  "DO_NOT_USE_HARD_CODING.PASSWORD.description": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호가 SQLConnect() 함수에 포함되어 있는 경우를 검출합니다.\n옵션에서 하드코딩된 비밀번호 형식을 지정할 수 있습니다.\n비밀번호를 SQLConnect() 함수 내부에 작성하지 않도록 합니다.",
  "DO_NOT_USE_HARD_CODING.USERNAME.description": "하드코딩된 사용자 계정 체커는 하드코딩된 사용자 계정이 SQLConnect() 함수에 포함되어 있는 코드를 검출합니다.\n사용자 계정을 SQLConnect() 함수 내부에 작성하지 않도록 합니다.",
  "DO_NOT_USE_HARD_CODING.description": "금지된 하드코드 사용 체커는 옵션에 지정된 변수 중 하나를 하드코딩하는 코드를 검출합니다.\n분석 대상 수식, 분석 제외 대상 수식, 정수형 하드코딩 검사 여부, 부동소수형 하드코딩 검사 여부, 문자 하드코딩 검사 여부, 문자열 하드코딩 검사 여부, 상수 하드코딩 검사 여부, 비상수 하드코딩 검사 여부, 조건문 하드코딩 검사 여부, 대입문 하드코딩 검사 여부, 호출 하드코딩 검사 여부, 반환 구문 하드코딩 검사 여부를 옵션에 지정할 수 있습니다.\n지정된 옵션에 따라 소스 코드를 하드코드로 작성하지 않도록 합니다.",
  "DO_NOT_USE_HEXADECIMAL_ESCAPE.description": "16진수 이스케이프 시퀀스 사용 체커는 16진수 이스케이프 시퀀스를 사용한 수식을 검출합니다.\n역슬러시 뒤에 영문자 x와 숫자값이 오는 것은 16진수로 취급됩니다.\n16진수 이스케이프 시퀀스는 사용하지 않도록 합니다.",
  "DO_NOT_USE_HTTP_PROTOCOL.description": "HTTP(HyperText Transfer Protocol)를 통한 통신은 패킷의 도청 위험이 있습니다. 이를 막기 위해 HTTP에 보안 통신인 SSL을 추가하여 사용하는 것이 HTTPS입니다.",
  "DO_NOT_USE_IF_DIRECTIVE.description": "if 전처리 구문 사용 체커는 if 전처리 구문가 사용된 경우를 검출합니다.\nif 전처리 구문 대신 ifdef, ifndef 전처리 구문을 사용하도록 합니다.",
  "DO_NOT_USE_IMPLICIT_DECLARED_FUNCTION.description": "암시적 함수 선언 체커는 함수가 암시적으로 선언된 경우를 검출합니다.\n함수를 항상 인자 타입과 반환 타입을 포함하여 명시적으로 사전에 선언한 후 사용합니다.",
  "DO_NOT_USE_INLINE.description": "메소드의 인라인 선언 체커는 인라인으로 선언된 클래스 메소드를 검출합니다.\n이 검출 조건은 클래스 선언부에서 메소드를 선언과 동시에 정의하는 케이스와 클래스 바깥에서 메소드를 정의하는 케이스 모두 적용됩니다.\n클래스 메소드 정의 시 inline 키워드를 사용하지 않습니다. 인라인으로 처리되길 원하는 메소드는 클래스 선언부에서 메소드 선언과 동시에 정의합니다.",
  "DO_NOT_USE_LABEL_STATEMENT.description": "레이블 구문 사용 금지 체커는 레이블 구문을 사용하는 코드를 검출합니다.\n레이블 구문을 사용하지 않도록 합니다.",
  "DO_NOT_USE_LONGJMP.description": "longjmp() 함수 사용 체커는 longjmp() 함수를 사용하는 수식을 검출합니다.\nlongjmp() 함수를 사용하지 않도록 합니다. 가능하면 점프 구문이 필요하지 않도록 제어 흐름을 구성하는 것이 바람직합니다.",
  "DO_NOT_USE_MODULAR.description": "나머지 연산 금지 체커는 나머지 연산(%)을 사용하는 코드를 검출합니다.\n옵션에서 나머지 연산의 예외 사항 사용 여부를 설정할 수 있습니다. 예외 상황이란 나머지 연산을 수행하기 전에 동일한 피연산자에 먼저 나누기 연산을 수행하는 경우를 가리킵니다.\n나머지 연산을 사용하지 않도록 합니다.",
  "DO_NOT_USE_MULTILINE_IN_SINGLECOMMENT.description": "한 줄 주석문을 여러 줄로 작성 체커는 \"//\"으로 시작되는 한 줄 주석문에 역슬래시를 사용한 줄 분할이 존재하는 경우를 검출합니다.\nC 언어에서 임의의 라인 맨 뒤에 역슬래시가 존재하면 겉으로 보기에는 줄 바꿈이 있는 것으로 보이지만 컴파일러는 해당 줄과 다음 줄을 한 줄처럼 해석합니다.\n여러 줄로 주석문을 작성하고 싶다면 여러 줄 주석문을 위한 방법(/* */)을 사용합니다.",
  "DO_NOT_USE_NESTED_TRY.description": "중첩된 try 구문 사용 체커는 try 구문의 블록 안에 또 다른 try 구문을 중첩해서 사용하는 경우를 검출합니다.\n완전히 별도의 try 구문으로 분리하거나 하나의 try 구문으로 합칩니다.",
  "DO_NOT_USE_NON_CONST_FUNCTION_POINTER.description": "상수가 아닌 함수 포인터는 사용하지 않도록 합니다. 상수 함수 포인터는 선언과 동시에 초기화를 수행해야 하지만, 상수가 아닌 함수 포인터는 특정 시점에 동일한 형식을 가진 함수를 대입할 수 있으며 이로 인해 문제가 발생할 수 있습니다.",
  "DO_NOT_USE_NON_STANDARD_CHARACTERS.description": "include 전처리 구문의 파일 이름에 비표준 문자 사용 체커는 include 전처리 구문으로 포함시키는 파일의 이름에 비표준 문자가 있는 경우를 검출합니다.\ninclude 전처리 구문으로 포함시킬 파일 이름은 표준 문자로만 구성하도록 합니다.",
  "DO_NOT_USE_NOTIFY.description": "notify 사용 금지 체커는 notifiy()를 직접 호출하는 경우를 검출합니다.\nnotify() 없이 어떤 스레드를 깨울지 명시할 수 있는 방법을 구상해봅니다.",
  "DO_NOT_USE_NULL_MACRO.description": "널 매크로 사용 체커는 널 매크로를 사용한 수식을 검출합니다.\n널 매크로 대신 0을 사용합니다. 만약 C++11을 지원하는 컴파일러를 사용하고 있는 경우 널ptr을 사용합니다.",
  "DO_NOT_USE_OCTAL.description": "8진수 사용 체커는 8진수를 사용하는 수식을 검출합니다.\n숫자 0으로 시작하는 상수는 8진수로 간주됩니다.\n8진수로 된 값을 상수로 사용하지 않도록 합니다.",
  "DO_NOT_USE_OCTAL_ESCAPE.description": "8진수 이스케이프 시퀀스 사용 체커는 8진수 이스케이프 시퀀스를 사용하는 수식을 검출합니다.\n역슬래쉬 뒤에 0~7 사이의 3자리 숫자가 있는 경우 8진수로 취급합니다.\n8진수 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "DO_NOT_USE_OFFSETOF_MACRO.description": "offsetof 매크로 사용 체커는 offsetof 매크로를 사용하는 경우를 검출합니다.\n표준 라이브러리 \"stddef.h\" 에 있는 offsetof 매크로를 사용하면 안됩니다. offsetof 매크로를 표준 레이아웃이 아닌 클래스에 사용하면 정의되지 않은 동작이 발생할 수 있으므로 offsetof 매크로를 사용하지 않는 것이 좋습니다. 표준 레이아웃 타입은 C와 같은 레이아웃을 가진 타입을 의미하며, 아래 특성을 만족합니다. 1. 가상 함수나 가상 기저 클래스를 갖지 않는다. 2. 비정적 데이터 멤버가 동일한 접근 제어를 가진다. 3. 모든 비정적 데이터 멤버가 표준 레이아웃이다. 4. 모든 기저 클래스가 표준 레이아웃이다. 5. 첫 번째 비정적 멤버로 기저 클래스와 동일한 타입의 데이터를 갖지 않는다. 6. 레퍼런스 멤버를 갖지 않는다. 7. 한 개 이상의 기저 클래스 혹은 파생 및 기저 클래스 둘 다에서 비정적 데이터를 갖지 않는다. 표준 레이아웃 타입인지 확인하려면 <type_traits>의 std::is_standard_layout을 사용하도록 합니다.\noffsetof 메크로를 사용하지 않습니다.",
  "DO_NOT_USE_POINTER_ARITHMETIC.description": "포인터 연산 사용 체커는 포인터 연산을 하는 경우를 검출합니다.\n포인터 연산을 사용하지 않습니다.",
  "DO_NOT_USE_PRAGMA.description": "컴파일러에 종속적인 pragma 사용 체커는 컴파일러나 플랫폼 별로 고유한 지시사항을 전달하는 데 사용되는 #pragma의 사용을 검출합니다.\n컴파일러에 종속적인 #pragma 구문을 사용하지 않도록 합니다.",
  "DO_NOT_USE_PRINTF.description": "출력 함수 사용 체커는 printf() 함수를 사용하는 코드를 검출합니다.\nprintf() 함수를 사용하지 않습니다.",
  "DO_NOT_USE_PTHREAD_KILL.description": "pthread_kill() 함수 사용 체커는 pthread_kill() 함수를 호출하는 수식을 검출합니다.\n만약 스레드를 종료할 목적이라면 pthread_cancel() 함수를 사용하도록 합니다.",
  "DO_NOT_USE_PUBLIC_FIELD.description": "public 필드 사용 체커는 필드 변수에 public 한정자를 사용한 경우를 검출합니다.\n옵션을 통해 검출 조건을 조정할 수 있습니다. 검출 대상 변수 이름의 패턴을 지정하면 해당되는 변수만을, 검출 대상 변수 이름 패턴을 비워두면 모든 변수를 검사합니다. 제외 대상 변수 이름 패턴은 존재할 경우 해당되는 변수를 검사에서 제외합니다.\n옵션으로 지정된 변수에 대해 public 한정자를 사용하지 않습니다.",
  "DO_NOT_USE_RECURSION.description": "금지된 재귀 호출 체커는 함수 정의에 재귀 호출을 사용한 경우를 검출합니다.\n이론적으로 모든 재귀 호출 함수는 같은 동작을 하는 코드를 반복문으로 작성 가능하므로 해당 함수를 반복문을 사용하여 다시 구현합니다. 이 때 함수의 1회 호출 안에서 재귀 호출이 두 번 이상 일어날 수 있다면 반복문으로 구현할 때 주요 정보를 저장해둘 스택을 직접 구현해야 할 수도 있습니다.",
  "DO_NOT_USE_REGISTER.description": "register 키워드 사용 체커는 register 키워드를 사용한 경우를 검출합니다.\nregister 키워드를 사용하지 않도록 합니다. register 키워드는 가능할 경우, 변수를 프로세서의 레지스터에 적재시키도록 하는 힌트입니다. auto나 register 키워드를 사용하여 프로그래머가 메모리 할당을 조정하는 것보다 현대적인 컴파일러에게 맡겨두는 것이 더 낫습니다.\nregister 키워드를 사용하지 않습니다.",
  "DO_NOT_USE_RESERVED_IN_MACRO.description": "예약어를 매크로 이름으로 사용 체커는 매크로 정의에서 예약어를 이름으로 지정한 경우를 검출합니다.\n예약어는 if, while 등의 키워드는 아니지만 시스템 용도나 추후 사용을 목적으로 사용자가 사용할 수 없도록 약속해놓은 것입니다.\n매크로 이름을 예약어가 아닌 것으로 바꿉니다.",
  "DO_NOT_USE_RESTRICT.description": "금지된 한정자 restrict 사용 체커는 restrict 타입 한정자 사용을 검출합니다.\nrestrict 타입 한정자를 사용하지 않습니다.",
  "DO_NOT_USE_SAME_NAME_IN_NESTED.description": "다른 범위의 이름이 같은 식별자 체커는 서로 다른 범위에 있는 식별자의 이름이 동일한 경우를 검출합니다.\n컴파일러에서는 기본적으로 동일한 이름을 가진 식별자를 허용합니다. 단, 같은 이름을 가진 식별자의 경우 나중에 선언된 식별자가 먼저 선언된 식별자를 덮어씁니다.\n범위와 관계 없이 식별자 이름을 구별하도록 합니다.",
  "DO_NOT_USE_SAME_SPELLING_IN_ANOTHER_NAMESPACE.description": "이름이 같은 서로 다른 이름 공간(name space)의 식별자 체커는 어떠한 이름 공간에 속한 식별자가 다른 이름 공간에 속한 식별자와 이름이 같은 경우를 검출합니다.\n이름 공간이 다를 경우 실제로 두 공간에 존재하는 이름이 겹치거나 가려지는 현상이 발생하지는 않습니다. 하지만 이 체커는 그것과 관계 없이 이름 공간이 다른 경우에도 식별자의 이름이 같은 경우를 검출합니다. 다만 검출 규칙 중에서 구조체와 공용체의 필드 이름은 예외로 하도록 합니다.\n구조체와 공용체의 필드를 제외하고, 서로 다른 이름 공간에 속했더라도 동일한 식별자 이름을 사용하지 않도록 합니다.",
  "DO_NOT_USE_SEMICOLON_AFTER_PREPROCESSOR.description": "전처리 구문 뒤에 세미콜론 작성 체커는 정상적인 전처리 구문 형식 뒤에 세미콜론이 오는 경우를 검출합니다.\n전처리 구문 뒤에는 세미콜론이 오지 않도록 합니다.",
  "DO_NOT_USE_SERVERSOCKET.description": "Socket 클래스 사용 금지 체커는 java.net.Socket 혹은 java.net.ServerSocket 클래스를 사용하는 경우를 검출합니다.\n안전하지 않은 커뮤니케이션 채널을 통해 민감한 데이터를 전송할 때는 java.net.Socket 클래스가 아닌 javax.net.ssl.SSLSocket 클래스를 사용해야 합니다. SSLSocket 클래스는 SSL/TLS(Secure Sockets Layer/Transport Layer Security)와 같은 시큐리티 프로토콜을 제공하여 채널이 도청이나 악의적인 조작 공격에 취약하지 않도록 만듭니다.\njava.net.Socket 혹은 java.net.ServerSocket 클래스 대신 javax.net.ssl.SSLSocket 클래스를 사용하도록 합니다.",
  "DO_NOT_USE_SETJMP.description": "setjmp 매크로 사용 체커는 setjmp 매크로를 사용하는 수식을 검출합니다.\nsetjmp 매크로를 사용하지 않도록 합니다. 가능하면 점프 구문이 필요하지 않도록 제어 흐름을 구성하는 것이 바람직합니다.",
  "DO_NOT_USE_SETLOCALE.description": "setlocale 함수 사용 체커는 locale.h 라이브러리의 setlocale() 함수를 호출하는 경우를 검출합니다.\nsetlocale을 사용하지 않습니다.",
  "DO_NOT_USE_SHARP_OPERATOR.description": "# 및 ## 연산으로 매크로 정의 체커는 # 연산이나 ## 연산을 사용하여 매크로를 정의하는 경우를 검출합니다.\n매크로를 정의하는 경우 # 연산이나 ## 연산을 사용하지 않도록 합니다.",
  "DO_NOT_USE_SHIFT_ON_SIGNED_VALUE.description": "short, int, long, float, double 등과 같이 부호가 있는 타입들을 대상으로 시프트(shift) 연산을 수행한 경우를 검출합니다.",
  "DO_NOT_USE_SHORT.description": "short 타입 사용 체커는 모든 short 타입 사용을 검출합니다.\nshort 타입은 JVM 내부적으로 int로 변환하여 계산한 후 다시 short 타입으로 변환되므로 성능을 저하시킵니다.\nshort 타입을 사용하지 않습니다.",
  "DO_NOT_USE_SIGNAL.description": "금지된 시그널 함수 사용 체커는 signal() 함수 호출을 검출합니다.\nsignal() 함수를 사용하지 않습니다.",
  "DO_NOT_USE_SIGNAL_HANDLING.description": "시그널 핸들링 사용 체커는 signal.h의 시그널 핸들링 기능을 사용하는 경우를 검출합니다.\nsignal.h의 시그널 핸들링 기능을 사용하면 안됩니다. 시그널 핸들링은 플랫폼마다 다르고, 정의되지 않은 동작을 발생시킬 수 있습니다.\nsignal.h의 시그널 핸들링 기능을 사용하지 않습니다.",
  "DO_NOT_USE_SIZEOF_ON_ARRAY_PARAM.description": "배열 타입의 인자에 sizeof 연산자 사용 체커는 함수의 인자로 전달된 배열 타입의 변수에 sizeof 연산자를 사용하는 코드를 검출합니다.\n배열 타입의 인자에 sizeof 연산자를 사용하지 않도록 합니다.",
  "DO_NOT_USE_SIZEOF_ON_PTR.description": "포인터 타입에 sizeof 연산자 사용 체커는 포인터 타입에 sizeof 연산자를 사용하는 코드를 검출합니다.\n포인터 타입은 타입에 관계없이 항상 같은 크기를 갖습니다.\n포인트 타입에 sizeof 연산자를 사용하지 않도록 합니다.",
  "DO_NOT_USE_STATIC_IN_HEADER.description": "헤더 파일에서 정적 한정자 사용 체커는 헤더 파일에서 함수 또는 변수 속성으로 정적 한정자를 사용하는 코드를 검출합니다.\n옵션에서 정적 함수 사용 가능 여부, 정적 변수 사용 가능 여부를 설정할 수 있습니다.\n헤더 파일에서 정적 한정자를 사용하지 않도록 합니다.",
  "DO_NOT_USE_STDARG_FEATURE.description": "금지된 stdarg.h 헤더의 기능 사용 체커는 stdarg.h 헤더를 사용한 경우를 검출합니다.\nstdarg.h 헤더를 사용하지 않습니다.",
  "DO_NOT_USE_STDIO_H.description": "stdio 사용 체커는 stdio.h를 사용하는 경우를 검출합니다.\n양산 코드에는 C의 표준 라이브러리의 stdio.h를 사용하지 말아야 합니다. C의 표준 라이브러리 stdio.h 는 결함이 많고 오류 발생이 쉽습니다. 해당 라이브러리를 대체할 다른 라이브러리를 사용하십시오.\nstdio 헤더를 사용하지 않습니다.",
  "DO_NOT_USE_STL_CONTAINER_AS_PUBLIC_BASE_CLASSES.description": "STL 컨테이너를 상속 체커는 STL 컨테이너를 부모 클래스로 상속한 클래스를 검출합니다.\nSTL 컨테이너를 베이스 클래스로 상속하지 않도록 합니다.\n클래스를 선언할 때 STL 컨테이너를 상속하지 않습니다. STL 컨테이너가 필요한 경우 상속이 아닌 필드를 선언하여 사용하도록 합니다.",
  "DO_NOT_USE_SYNCHRONIZED_STATEMENT.description": "동기화 구문 사용 체커는 모든 synchronized 구문을 검출합니다.\nsynchronized 구문이 아닌 synchronized 메소드를 사용할 것을 권장합니다.",
  "DO_NOT_USE_SYSTEM.description": "금지된 system() 함수 사용 체커는 사용이 금지된 system() 함수를 호출하는 코드를 검출합니다.\n시스템 함수의 이름을 옵션에 지정할 수 있습니다.\n옵션에 지정된 시스템 함수를 사용하지 않도록 합니다.",
  "DO_NOT_USE_TERNARY_OPERATOR.description": "삼항 연산자 사용 체커는 삼항 연산자를 사용하는 경우를 검출합니다.\n삼항 연산자를 사용하지 않도록 합니다. 복잡한 조건식을 평가하는데 가장 좋은 방법은 명시적으로 조건문을 사용하는 것입니다.\n삼항 연산자를 사용하지 않습니다.",
  "DO_NOT_USE_TGMATH_H.description": "금지된 헤더 tgmath.h 사용 체커는 표준 헤더 tgmath.h를 사용한 경우를 검출합니다.\ntgmath.h 헤더 대신 math.h 헤더를 사용하도록 합니다.",
  "DO_NOT_USE_THROWABLE_FUNCTION_IN_COPY_ASSIGNMENT.description": "예외가 발생하는 복사 대입 연산자 체커는 예외를 던지는 swap 로직을 구현한 복사 대입 연산자 선언을 검출합니다.\n복사 대입 연산자의 swap 로직에서 예외를 발생시키지 않도록 합니다.",
  "DO_NOT_USE_THROW_IN_CTOR_OR_DTOR.description": "생성자 및 소멸자에서 예외 던짐 체커는 직접적으로 throw 구문을 메소드 내부에서 사용하는 생성자 및 소멸자를 검출합니다.\n생성자 및 소멸자에서 throw 구문을 사용하지 않도록 합니다.",
  "DO_NOT_USE_TRIGRAPH.description": "삼중자 사용 체커는 소스 코드 내에서 삼중자를 사용하는 수식을 검출합니다.\n삼중자(Trigraph)란 두 개의 물음표로 시작하고 한 개의 식별 문자로 끝나는 문자셋입니다. 삼중자는 C 언어 문자셋을 모두 받아들이지 못하는 일부 언어권의 문자셋을 보완하기 위해 만들어졌습니다.\n삼중자를 사용하지 않도록 합니다. 삼중자로 표현하는 문자셋은 모두 일반적인 문자셋으로 표현할 수 있습니다.",
  "DO_NOT_USE_UNBOUNDED_AGGREGATE_TYPE.description": "C 스타일 배열 사용 체커는 C 스타일의 배열을 사용한 변수 선언을 검출합니다.\nC 스타일 배열 대신 벡터와 같은 STL 컨테이너를 사용하는 것이 좋습니다.",
  "DO_NOT_USE_UNDEF.description": "undef 전처리 구문 사용 체커는 undef 전처리 구문을 사용한 경우를 검출합니다.\nundef 전처리 구문은 최대한 사용하지 않도록 합니다.",
  "DO_NOT_USE_UNDEFINED_MACRO_IDENTIFIERS.description": "정의되지 않은 매크로 식별자 사용 체커는 미리 정의되지 않은 매크로 식별자를 사용한 전처리 구문을 검출합니다.\n이때 검출 대상인 전처리 구문은 #if, #elif입니다. #ifdef, #ifndef 및 defined는 매크로가 있는지 테스트하기 위해 제공되므로 제외합니다.\n매크로 식별자를 검출 대상인 전처리 구문에서 사용할 경우 반드시 미리 정의하여 사용합니다.",
  "DO_NOT_USE_UNION.description": "공용체 사용 체커는 공용체를 선언한 경우를 검출합니다.\n공용체를 사용하지 않도록 합니다. 다소의 퍼포먼스를 희생하더라도 구조체를 사용합니다.",
  "DO_NOT_USE_UNUSED_MACRO_GLOBAL.description": "불필요한 매크로 선언 체커는 프로젝트 어디에서도 사용되지 않는 매크로 선언을 검출합니다.\n사용되지 않는 매크로는 삭제합니다.",
  "DO_NOT_USE_UNUSED_TAG_GLOBAL.description": "불필요한 태그 선언 체커는 프로젝트 어디에서도 사용되지 않는 태그 선언을 검출합니다.\n사용되지 않는 태그는 삭제합니다.",
  "DO_NOT_USE_UNUSED_TYPE_GLOBAL.description": "불필요한 타입 선언 체커는 프로젝트 어디에서도 사용되지 않는 타입 선언을 검출합니다.\n사용되지 않는 타입은 삭제합니다.",
  "DO_NOT_USE_USING_DIRECTIVE.description": "using 지시자 사용 체커는 명시적인 네임스페이스 한정자를 쓰거나, using 선언을 사용하지 않고 using 지시자를 사용한 경우를 검출합니다.\nusing 지시문은 이름 조회 중에 검색된 범위 집합에 추가 범위를 추가합니다. 이러한 범위의 모든 식별자가 표시되므로 컴파일러에서 찾은 식별자가 개발자의 예상과 다를 가능성이 커집니다. using-declarations 또는 fully qualified names는 명시적으로 지정된 이름으로 간주되는 이름 집합으로 제한하므로 더 안전한 옵션입니다.\nusing 지시자 대신 명시적인 네임스페이스 한정자를 사용하거나 using 선언을 사용합니다.",
  "DO_NOT_USE_VARIABLE_LENGTH_ARRAY.description": "가변 길이 배열 사용 체커는 정적 배열을 선언할 때 정해지지 않은 크기로 선언한 경우를 검출합니다.\n실행 도중 크기가 결정되는 배열이 필요하면 동적 할당을 사용하도록 합니다.",
  "DO_NOT_USE_VFORK.description": "vfork() 함수 사용 체커는 vfork() 함수를 호출한 후에 execve() 함수를 호출하는 경우를 검출합니다.\nvfork() 함수를 사용하는 대신 fork() 함수와 같이 경쟁 상태를 갖지 않는 함수를 사용하도록 합니다.",
  "DO_NOT_USE_VOLATILE.description": "volatile 사용 체커는 모든 volatile 한정자 사용을 검출합니다.\nvolatile 한정자를 사용하지 않습니다.",
  "DO_NOT_USE_VOLATILE_IN_COMPLEX_EXPRESSION.description": "복합 수식절에서 volatile 변수 사용 체커는 복합 수식절에서 volatile 한정자를 가진 변수를 피연산자로 두 번 이상 사용하는 수식을 검출합니다.\n복합 수식절에서는 volatile 한정자를 가진 변수를 최대 한 번만 사용하도록 합니다.",
  "DO_NOT_USE_WIDE_CHARACTER.description": "와이드 문자열 사용 체커는 와이드 문자열을 사용하는 경우를 검출합니다.\n와이드 문자열을 사용하지 않습니다.",
  "DO_NOT_USE_WITH.SQL.CONFIG.description": "WITH 절 사용 금지 체커는 SQL 쿼리 내에서 WITH 절을 사용할 경우 이슈를 검출합니다.",
  "DO_NOT_USE_WITH.SQL.description": "WITH 절 사용 금지 체커는 SQL 쿼리 내에서 WITH 절을 사용할 경우 이슈를 검출합니다.",
  "DO_NOT_VIOLATE_CONSTRAINTS.description": "extern inline 함수의 제약 조건 위반 체커는 extern inline으로 선언된 함수에서 접근해선 안되는 객체에 접근하는 경우를 검출합니다.\nextern inline 함수에서는 static으로 선언된 전역 객체에 접근하지 않아야 합니다. extern inline 함수가 접근해야 하는 전역 객체는 static으로 선언하지 않아야 합니다.",
  "DO_NOT_WAIT_IN_SYNCHRONIZED_WITHOUT_CONTROL.description": "동기화 블록 내에서 제어 없이 wait 사용 체커는 synchronized 블록 내에서 wait() 메소드를 호출할 때 아무런 제어가 없을 경우를 검출합니다.\nwait() 메소드를 적절한 조건문 혹은 반복문으로 제어합니다.",
  "DO_NOT_WRITE_CONFUSED_CHARACTER.description": "동일한 식별자에서 혼란스러운 문자 사용 체커는 동일한 식별자에서 숫자 '1'와 소문자 'l', 숫자 '0'과 대문자 'O'를 같이 쓰면 검출합니다.\n동일한 식별자에서 숫자 '1'와 소문자 'l', 숫자 '0'과 대문자 'O'를 같이 쓰지 않도록 합니다. 식별자를 읽을 때 혼동을 줄 수 있습니다.\n동일한 식별자에서 숫자 '1'와 소문자 'l', 숫자 '0'과 대문자 'O'를 같이 쓰지 않도록 합니다.",
  "DUPLICATED.DESIGNATED_INIT.description": "지정 초기화 리스트에서 중복 초기화 체커는 지정 초기화 리스트에서 같은 항목이 두 번 이상 표시된 경우를 검출합니다.\n지정 초기화 리스트에서 한 항목은 한 번만 초기화합니다.",
  "DUPLICATED_SECURITY_ROLE.CONFIG.description": "중복된 보안 역할 체커는 보안 역할이 중복되어 있는 경우를 검출합니다.\n보안 역할을 중복하여 작성하지 않도록 합니다.",
  "DUPLICATED_SERVLET_MAPPING.CONFIG.description": "중복된 서블릿 매핑 체커는 서블릿 매핑이 중복되어 있는 경우를 검출합니다.\n서블릿 매핑을 중복하여 작성하지 않도록 합니다.",
  "DYNAMIC_CODE_MANIPULATION.description": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 이슈를 검출합니다.\nServletRequest.getParameter() 메소드를 통해 받은 외부 입력 값을 별도로 정의된 검증 메소드를 통해서 확인해야 합니다.",
  "DYNAMIC_CODE_MANIPULATION_CSHARP.description": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 이슈를 검출합니다.\nServletRequest.getParameter() 메소드를 통해 받은 외부 입력 값을 별도로 정의된 검증 메소드를 통해서 확인해야 합니다.",
  "DYNAMIC_TYPE_IN_CTOR_OR_DTOR.description": "객체의 생성과 소멸 중에 최종 타입은 완전히 구성된 객체의 타입과 다를 수 있습니다. 생성자 또는 소멸자에서 객체의 동적 타입을 사용하면 개발자의 예상과 다를 수 있습니다.\n객체의 동적 타입은 다음과 같은 구조로 사용됩니다.\n1. 기초 클래스에 가상 함수 또는 가상 함수가 있는 클래스의 typeid.\n2. dynamic_cast\n3. 가상 함수에 대한 가상 호출.\n또한 이 규칙은 생성자 또는 소멸자 내에서 순수 가상 함수에 대한 호출을 금지합니다. 그러한 호출은 불확실한 행동으로 이어집니다.",
  "DataflowAnomalyAnalysis.description": "해당 규칙은 변수의 지역적 정의, 정의 해제 및 참조를 추적합니다. 만일 정의되지 않은 변수를 참조하거나(UR-Anomaly), 최근에 정의된 변수가 정의 해제되는 경우(DU-Anomaly), 또한 최근에 정의된 변수가 재정의 되는 경우(DD-Anomaly)를 검출합니다.",
  "DefaultLabelNotLastInSwitchStmt.description": "switch 구문에 default 구문이 있으나, 케이스들의 마지막에 위치하지 않는 경우 이를 검출합니다.",
  "DefaultPackage.description": "명시적인 범위를 사용하지 않고 기본 package private 수준을 사용할 경우 이를 검출합니다.",
  "DoNotCallGarbageCollectionExplicitly.description": "System.gc() 호출, Runtime.gc() 호출 및 System.runFinalization() 호출을 검출합니다.",
  "DoNotExtendJavaLangError.description": "예외를 java.lang.Error로부터 상속받은 경우를 검출합니다. java.lang.Error는 시스템 예외를 의미하는 것으로 상속받아서는 안됩니다.",
  "DoNotHardCodeSDCard.description": "SD카드의 저장 위치를 얻기 위해 Environment.getExternalStorgeDirectory() 대신 /sdcard를 직접 사용하는 경우 이를 검출합니다.",
  "DoNotThrowExceptionInFinally.description": "finally 블록에서의 예외 throw을 검출합니다.",
  "DontCallThreadRun.description": "외부에서 Thread.run() 메소드를 직접 호출하는 경우 이를 검출합니다.(Thread.start() 메소드를 호출하여야 함) 프로그램에서 스레드의 start() 대신에 run()을 호출하면 스레드가 생성되지 않고, 해당 run() 함수를 직접 호출하여 해당 run() 함수의 종료를 대기하게 됩니다.",
  "DontImportJavaLang.description": "java.lang... import을 검출합니다.",
  "DontImportSun.description": "sun.* 패키지 import를 검출합니다. 해당 패키지는 휴대가 용이하지 않으며 변화될 가능성이 존재합니다.",
  "DontNestJsfInJstlIteration.description": "JSF 구성 요소의 custom action이 해당 body의 반복문에 포함되어 있는 경우 이를 검출합니다.",
  "DontUseFloatTypeForLoopIndices.description": "float 자료형을 사용하여 반복문의 인덱스로 사용하는 것을 검출 합니다. 부득이하게 사용해야 한다면 float형 대신 double 형을 사용할 것을 권장합니다.",
  "DoubleCheckedLocking.description": "부분적으로 생성된 객체가 중복 검사된 잠금 패턴에 의해 반환되는 경우, 스레드 안전하지 않으므로 이를 검출합니다.",
  "DuplInheritedMember.description": "부모 클래스에서 정의된 변수 이름과 충돌합니다.",
  "DuplicateImports.description": "중첩된 import 구문을 검출합니다.",
  "DuplicateJspImports.description": "import구문에 중복된 클래스을 사용한 경우 이를 검출합니다.",
  "EACH_COMMENT_LINE_LENGTH.description": "블록 주석의 길이 불일치 체커는 특정한 형태로 작성된 여러 줄 주석문에서 각 라인의 길이가 다르게 작성된 경우를 검출합니다.\n지정된 형태의 여러 줄 주석문을 작성할 때에는 각 줄의 길이를 통일하여 네모 모양으로 반듯한 블록 주석이 되도록 해야 합니다.",
  "ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.description": "비 문자가 포함된 채 입력 검증 체커는 입력 문자열을 검증하기 전에 정상 문자열이 아닌 것을 제거하지 않은 경우를 검출합니다.\n비 문자 제거를 수행할 예정이라면 문자열 검증을 하기 전에 비 문자 제거를 먼저 수행해야 합니다.",
  "EMPTY": "빈값",
  "EMPTY_ARRAY_SIZE.MISRA2012.description": "extern으로 선언된 빈 배열의 크기 미지정 체커는 extern으로 선언된 배열 변수의 크기를 명시하지 않는 코드를 검출합니다.\n세부 검출 대상은 옵션에 지정할 수 있습니다.\n배열 변수를 선언하는 경우 크기를 명시하도록 합니다.",
  "EMPTY_ARRAY_SIZE.description": "빈 배열 크기 체커는 크기를 명시하지 않고 배열 변수를 선언하는 경우를 검출합니다.\n세부 검출 대상은 옵션에 지정할 수 있습니다.\n배열 변수를 선언하는 경우 크기를 명시하도록 합니다.",
  "EMPTY_BRANCH.ELSE.ABAP.description": "빈 else 분기 체커는 ELSE 절로 끝나지 않는 IF-ELSEIF 구문을 검출합니다.\n예외 상황을 처리할 수 있는 적절한 ELSE 구문을 추가합니다.",
  "EMPTY_BRANCH.MISSING_ELSE.description": "if-else 문에서 else 누락 체커는 else 절로 끝나지 않는 if-else 구문을 검출합니다.\nif-else 조건문은 else 절로 끝나야 합니다.\nif-else 조건문에는 else 가 있어야 합니다.",
  "EMPTY_BRANCH.WHEN_OTHERS.ABAP.description": "누락된 WHEN OTHERS 분기 체커는 WHEN OTHERS 절이 없는 CASE 구문을 검출합니다.\nCASE 구문 안에 WHEN OTHERS 절을 추가합니다.",
  "EMPTY_BRANCH.description": "빈 분기 체커는 if 구문의 거짓 분기 혹은 switch 구문의 case 및 default 블록에 실행할 코드가 없는 경우를 검출합니다.\n규칙에 맞게 각 분기에 실행할 코드를 삽입합니다.",
  "EMPTY_CATCH_BLOCK.ABAP.description": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "EMPTY_CATCH_BLOCK.description": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "EMPTY_EXTERN_ARRAY_SIZE.description": "extern 키워드로 배열을 선언 할 경우 배열의 크기를 정해야 합니다.",
  "EMPTY_PASSWORD.CONFIG.description": "비어 있는 비밀번호 체커는 설정 파일에 암호를 빈 문자열로 저장하는 경우를 검출합니다.\n비밀번호를 암호화하여 설정 파일에 저장하도록 합니다.",
  "EMPTY_WHILE.description": "빈 while 구문 체커는 본문에 아무런 내용이 없는 while 구문을 검출합니다.\nwhile 구문의 본문을 비워두지 않도록 합니다.",
  "EMPTY_WHILE_STATEMENT.description": "빈 while 구문 체커는 while 구문이 비어 있는 코드를 검출합니다.\nwhile 구문의 실행문이 없는 경우 중괄호를 사용하는 복합문을 사용하지 않도록 합니다.\nwhile 구문이 비어 있을 때는 중괄호를 사용하지 않도록 합니다.",
  "ENCAPSULATE_ASSEMBLER.description": "캡슐화 되지 않은 어셈블리어 코드 체커는 따로 함수로 분리되지 않고 사용하는 어셈블리어 코드를 검출합니다.\n만약 꼭 필요할 경우 어셈블리어 부분은 특정 함수로 캡슐화하도록 합니다.",
  "ENCLOSE_FUNCTIONS_IN_THE_UNNAMED_NAMESPACE.description": "소스 파일 전용 함수의 잘못된 선언 체커는 외부 인터페이스에 속해있지 않은 비 멤버 함수가 소스 파일에서 이름이 없는 네임스페이스 안에 들어있지 않은 경우를 검출합니다.\n소스 파일 전용 함수를 선언할 때 static 키워드를 사용하는 대신 이름 없는 네임스페이스를 사용합니다.",
  "ENGINE": "엔진",
  "ENSURE_EACH_IDENTIFIER_IS_DISTINCT.description": "고유하지 않은 식별자 체커는 고유하지 않은 식별자를 사용할 때 검출합니다.\n각각의 식별자가 고유한지 확인하도록 합니다. 식별자의 유사성은 가독성을 떨어트리게 되며 이로 인한 실수가 발생할 수 있습니다.\n각 식별자를 고유하게 사용합니다.",
  "ENSURE_LAST_LINE_IS_EMPTY.description": "비어 있지 않은 마지막 줄 체커는 소스 코드가 포함된 모든 파일의 마지막 줄이 빈 줄이 아닌 경우를 검출합니다.\n소스 코드가 포함된 모든 파일의 마지막 줄은 빈 줄로 작성합니다.",
  "ENSURE_MEMBER_TYPE_OF_STRUCT.description": "구조체의 멤버 변수들은 제한된 타입만 사용되어야 합니다. int나 포인터 타입은 사용하지 않도록 합니다.",
  "ENSURE_PASSING_VECTOR_TYPE_TO_C_STYLE.description": "C 스타일 함수에 벡터 객체 전달 체커는 C 스타일을 사용하는 함수의 배열 인자에 올바른 방식으로 전달하지 않은 벡터 객체를 검출합니다.\nC 스타일 함수란 인자로 받는 타입에 배열이 있는 함수를 의미합니다. STL 컨테이너 중 벡터는 연속된 메모리 공간에 데이터를 저장하도록 표준에 명시되어 있습니다. 따라서 기본적으로는 C 스타일의 배열과 호환 가능합니다. 다만 이와 같은 C 스타일 함수의 배열 인자에 벡터 객체를 전달하려면 올바른 방식을 따라야 합니다.\nC 스타일 함수에 벡터 타입을 전달할 경우 '&v[0]'을 사용하도록 합니다. '&v[0]'을 사용하여 첫 번째 요소의 주소 값을 넘기는 것으로 기존 C 스타일 배열을 인자로 요구하는 함수에서 사용할 수 있습니다.",
  "ENSURE_PRIVILEGE_RELINQUISHMENT.description": "setuid() 함수의 잘못된 사용 체커는 setuid(getuid()) 함수를 호출한 후에 setuid(0) 함수를 호출하지 않는 코드를 검출합니다.\nseteuid(getuid()) 함수를 호출한 후에 setuid(0) 함수를 호출해야 합니다.",
  "ENSURE_RETURN_VALUE_COMPARE.description": "반환 값이 적절한 타입과 비교되는지 확인해야 합니다. 함수는 표준에서 반환 타입을 부분적으로 지정한 경우 동일한 타입의 리터럴 상수 값으로 비교되야 합니다.",
  "ENSURE_SINGLE_ENTRY_AND_EXIT_POINT.description": "복합 구문의 복잡한 진입 및 탈출 체커는 switch 구문을 제외한 복합 구문에 진입 및 탈출 지점이 각기 한 개를 초과하는 경우를 검출합니다.\n예외 처리에 의한 탈출은 제외합니다.\n복합 구문의 진입 및 탈출 지점을 1개로 줄입니다.",
  "ENSURE_USING_NAMESPACE_POSITION.description": "잘못된 위치에 있는 using 지시자 체커는 using 지시자가 메인 소스 파일에서, 모든 #include 이후에 있지 않은 경우를 검출합니다.\nusing 지시자는 메인 소스 파일에서, 모든 #include 이후에 있어야 합니다. 예를 들어 #include 사이에 using 지시자를 사용하게 될 경우, 포함한 헤더 파일 사이에서 이름 충돌의 가능성이 생기게 됩니다.\nusing 지시자를 메인 소스 파일의 모든 #include 이후에 작성합니다.",
  "EQUALS_METHOD_IS_OVERLOADED.description": "오버로딩된 equals 메소드 체커는 인자 타입을 java.lang.Object 대신 다른 타입으로 변경하여 정의한 equals() 메소드를 검출합니다.\nequals() 메소드의 인자 타입으로는 java.lang.Object 만을 사용하도록 합니다. 실수로 equals() 메소드를 오버로딩하는 것을 방지하고자 한다면 @Override 라는 annotation을 메소드 선언 앞에 사용하는 방법이 있습니다. 그러면 실수했을 때 컴파일러가 컴파일 타임 오류를 발생시켜줄 것입니다.",
  "ERROR_WITHOUT_ACTION.description": "대응하지 않은 반환 값 체커는 반환 값을 사용하지 않거나 반환 값을 검사했으나 아무런 방어 코드도 넣지 않은 경우를 검출합니다.\n옵션에서 검사할 대상 함수를 지정할 수 있습니다.\n반드시 대상 함수들의 반환 값을 검사하고 방어 코드를 추가하도록 합니다.",
  "EUGENE_NAMING_CONVENTION.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_TOO_LONG_FUNCTION_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_TOO_LONG_VARIABLE_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_BSNAME_IN_FILENAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_BSNAME_IN_FUNCTION_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_CMNAME_IN_FILE_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_CMNAME_IN_FUNCTION_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_DATA_FILE_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_DEFAULT_DBIO.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_DSNAME_IN_FILE_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_FUNCTION_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_OSNAME_IN_FILE_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_OSNAME_IN_FUNCTION_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_STRUCTURE_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_UMNAME_IN_FILE_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_UMNAME_IN_FUNCTION_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_USER_DBIO.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EUGENE_WRONG_VARIABLE_NAME.description": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "EVAL_INJECTION.description": "동적 계산 코드 삽입 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.\n프로그램 실행 중 eval() 함수에 전달되는 문자열은 그 시점에 코드로 해석되어 직접 실행됩니다.\n동적으로 계산되는 코드가 프로그램 설계에 꼭 필요한지 한 번 더 확인하고 가능하다면 같은 동작을 정적 코드를 사용한 다른 방법으로 구현합니다. 대부분의 평범한 프로그램의 동작은 동적으로 계산되는 코드 없이도 구현이 가능하며, 많은 경우에 동적 코드는 단지 코드 작성자의 사소한 귀찮음을 회피하려는 의도로 사용됩니다. 동적 코드 사용이 불가피하다면, 외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "EXCEPTION": "예외",
  "EXCESSIVE_FUNCTION_CALLS.description": "함수 호출 개수 초과 체커는 옵션에 지정된 함수 호출의 개수를 초과하여 함수 호출을 한 경우를 검출합니다.\n옵션에서 최대 함수 호출 개수를 설정할 수 있습니다.\n옵션에 지정된 최대 함수 호출 개수를 초과하지 않도록 합니다.",
  "EXCESSIVE_IFS.description": "연속된 if 문 사용 체커는 If 구문을 연속적으로 사용하는 코드를 검출합니다.\n옵션에서 최대 if 문 연속 사용 수를 설정할 수 있습니다.\nif 문을 연속적으로 사용하지 않고 다른 조건문을 사용하도록 합니다.",
  "EXCESSIVE_SERVLET_MAPPING.CONFIG.description": "과도한 서블릿 매핑 체커는 여러 URL 패턴이 단일 서블릿에 매핑되어 있는 경우를 검출합니다.\n서블릿이 여러 URL 패턴에 정의되지 않도록 합니다.",
  "EXCESSIVE_SESSION_TIMEOUT.CONFIG.description": "과도한 세션 유지 시간 체커는 세션 유지 시간을 지나치게 길게 설정한 경우를 검출합니다.\n세션 유지 시간은 적절하게 유지하도록 합니다.",
  "EXCESSIVE_STACK_DEPTH.description": "스택에 너무 큰 버퍼 할당 체커는 지정된 크기를 초과하는 버퍼를 스택에 할당하는 코드를 검출합니다.\n65535 바이트를 넘는 버퍼를 스택에 할당하지 않도록 합니다.",
  "EXCLUDE_UNSANITIZED_USER_INPUT_FROM_FORMAT_STRINGS.description": "검증되지 않은 유저 입력을 포맷 스트링에 사용하면 안됩니다.",
  "EXECL_REVEALS_DATA.description": "exec 시스템 함수 호출 시 사용자 입력 인자에 문자열 누락 체커는 사용자 입력을 인자로 전달하는 exec 시스템 함수를 호출할 때 해당 인자에 \"--\" 문자열이 포함되지 않는 코드를 검출합니다.\nexec 시스템 함수를 호출할 때 사용자 입력을 인자로 전달하면 해당 인자에 \"--\" 문자열을 포함하도록 합니다.",
  "EXECUTABLE": "실행 파일을 구성하는 부분의 소스 코드",
  "EXPLICIT_COPY_CONSTRUCTOR_WHEN_TEMPLATED_CONSTRUCTOR.description": "복사 생성자를 정의하지 않은 템플릿을 포함한 클래스 체커는 명시적인 복사 생성자를 정의하지 않은 템플릿을 포함한 클래스 선언을 검출합니다.\n템플릿을 포함한 클래스란 템플릿 매개 변수를 사용하는 제너릭한 복사 생성자를 선언한 클래스를 의미합니다.\n항상 클래스 선언 시 명시적인 복사 생성자를 정의하도록 합니다.",
  "EXPLICIT_NAME_QUALIFIER_WHEN_TEMPLATED_BASE.description": "모호한 템플릿 부모 클래스 메소드 호출 체커는 템플릿 부모 클래스의 메소드 호출이 모호한 수식을 검출합니다.\n모호한 상황은 다음과 같은 경우에 발생합니다. 템플릿 부모 클래스를 선언합니다. 템플릿 부모 클래스를 상속받은 자식 클래스를 선언합니다. 자식 클래스에서 템플릿 부모 클래스의 변수, 혹은 메소드를 접근합니다. 이때 명시적인 한정자를 붙이지 않고 호출합니다.\n한정자를 사용하거나 식별자 앞에 this-> 접두어를 붙여 원하는 메소드를 호출합니다. 명확하게 메소드를 호출할 경우 호출 결과가 개발자의 예상과 일치합니다.",
  "EXPLICIT_NULL_TYPE.CONFIG.description": "null과 undefined를 구분하는 이슈는 수많은 버그의 원인이 됩니다. Typescript에서는 이를 해결하기 위해 strictNullChecks를 지원합니다. strictNullChecks는 이를 명확하게 구분하여 개발자가 null 혹은 undefined 값을 참조하는 것을 방지합니다.\nTypescript 설정 파일인 tsconfig.json혹은 jsconfig.json파일에 compilerOptions 섹션 내부 strict 속성을 true로 선언하도록 합니다. 혹은 strictNullChecks 속성을 true로 선언하여 활성화합니다.",
  "EXPLICIT_RETURN_WHEN_NON_VOID_RETURN_FUNCTION.description": "이 식은 함수가 반환하는 값을 제공합니다. 식의 부재는 정의되지 않은 동작이 발생합니다 (컴파일러에서 오류가 발생하지 않을 수도 있음).\n이 규칙은 함수 종료가 예외 처리 (즉 throw 문)로 인해 발생하는 경우에는 적용되지 않습니다.",
  "EXPLICIT_VIRTUAL_KEYWORD.description": "가상으로 선언하지 않은 오버라이딩 메소드 체커는 자식 클래스에서 virtual 키워드 없이 오버라이딩한 메소드를 검출합니다.\n부모 클래스의 가상 함수는 virtual로 선언되어 있습니다. 자식 클래스에서 이 가상 함수를 오버라이딩하겠다고 결정하였을 때, 오버라이딩 메소드를 선언하는 과정에서 virtual 키워드가 누락될 수 있습니다.\n자식 클래스에서 다형성을 가진 메소드는 항상 명시적으로 가상 함수임을 선언하도록 합니다.",
  "EXPOSURE_OF_ADMINISTRATION_PAGE.description": "관리자 페이지 노출 체커는 쉽게 유추할 수 있는 이름으로 관리자 페이지를 작성한 경우를 검출합니다.\n금지할 관리자 페이지 이름 형식은 옵션에서 지정할 수 있습니다. 예를 들어 admin.jsp와 같은 이름은 쉽게 유추 가능합니다.\n관리자 페이지의 이름을 유추하기 어려운 이름으로 변경합니다.",
  "EXPOSURE_OF_DANGEROUS_METHOD.description": "위험한 메소드 노출 체커는 지정된 메소드가 public으로 선언되어 있거나, 혹은 public으로 선언된 메소드 내에서 지정된 메소드를 호출하는 경우를 검출합니다.\n옵션을 통해 노출을 금지할 메소드 이름을 지정할 수 있습니다.\n해당되는 메소드는 private으로 선언하고 클래스 내부에서만 호출하도록 합니다.",
  "EXPOSURE_OF_SYSTEM_DATA.description": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "EXPOSURE_OF_SYSTEM_DATA_ASPNET.description": "시스템 정보 노출 체커는 시스템 정보를 출력하는 경우를 검출합니다.\n시스템 관련 정보가 출력 스트림이나 로깅을 통해 새어나가는 경우 악의적인 공격의 대상이 될 수 있습니다.\n시스템 정보가 노출되지 않도록 합니다.",
  "EXPR_NOT_BOOLEAN.description": "Boolean 값을 암시적으로 비교 체커는 조건문 등에서 Boolean 값을 암시적으로 비교한 경우를 검출합니다.\n구체적으로는 단순 변수를 0이나 널 값과 비교하기 위해 비교 구문 없이 사용하는 경우를 의미합니다.\n조건문 등에서 수식이 Boolean 값으로 끝나야 하는 경우 항상 명시적인 비교 구문을 작성하도록 합니다.",
  "EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.description": "시스템 혹은 구성 설정의 외부 제어 체커는 검증되지 않은 외부 입력값으로 시스템 설정이나 구성 설정을 변경하는 경우를 검출합니다.\n외부 입력을 Connection.setCatalog() 메소드의 인자 값을 생성하는데 사용하지 않도록 합니다.",
  "EXTERN_VAR_AND_FUNC_SHOULD_BE_IN_INTERFACE_FILE.description": "인터페이스 파일이 아닌 곳에 선언된 extern 변수와 함수 체커는 extern 변수와 함수 정의가 인터페이스 파일이 아닌 곳에 선언된 경우를 검출합니다.\nextern 변수와 함수 정의를 인터페이스 파일에서만 표현하도록 합니다.",
  "EXTRACT": "추출",
  "EmptyCatchBlock.description": "Catch 블록이 비어있습니다. 예외 처리 구문이 들어가야 합니다.",
  "EmptyFinalizer.description": "파라미터가 없고 블록이 비어있는 finalize() 메소드를 검출합니다.",
  "EmptyFinallyBlock.description": "Finally 블록이 비어있는 경우, 삭제 가능하므로 이를 검출합니다.",
  "EmptyIfStmt.description": "If 블록이 비어있어 조건이 만족하여도 아무런 동작을 수행하지 않는 경우 이를 검출합니다.",
  "EmptyInitializer.description": "비어있는 초기자를 검출합니다.",
  "EmptyStatementBlock.description": "블록 안에 아무 내용이 없을 경우 삭제해야 합니다.",
  "EmptyStatementNotInLoop.description": "Loop 문 이외에서 발견되는 비어있는 구문(단일 세미콜론)을 검출합니다.",
  "EmptyStaticInitializer.description": "정적 초기자가 비어있는 경우 이를 검출합니다.",
  "EmptySwitchStatements.description": "Switch 블록이 비어있어 아무런 동작을 수행하지 않는 경우 이를 검출합니다.",
  "EmptySynchronizedBlock.description": "Synchronized 블록이 비어있는 경우 이를 검출합니다.",
  "EmptyTryBlock.description": "Try 블록이 비어있어 아무런 동작을 수행하지 않는 경우 이를 검출합니다.",
  "EmptyTryOrFinallyBlock.description": "try나 finally 구문이 비어있습니다.",
  "EmptyWhileStmt.description": "While 블록이 비어있어 조건이 만족하여도 아무런 동작을 하지 않는 경우 이를 검출합니다.",
  "EqualComparison.description": "Javascript에서 '==' 대신 '===', '!=' 대신 '!=='를 사용해야 합니다. '=='을 사용할 시 자동적으로 변수의 형변환이 발생하여 의도치 않은 결과를 초래합니다. '==='는 그런 자동 형변환을 피합니다.",
  "EqualsNull.description": "equals(null) 패턴을 검출합니다.",
  "ExceptDeallocThrow.description": "유효하지 않은 상태에서 예외 처리로 흐름이 변경됩니다.",
  "ExceptRethrowCopy.description": "발견된 예외의 원본이 아닌 복사본이 다시 throw합니다. 'throw 변수' 방식으로 다시 throw하는 것은 불필요한 복사가 발생합니다. 다시 throw를 할 경우 그냥 'throw'만 사용하십시오.",
  "ExceptThrowInDestructor.description": "해당 클래스는 안전하지 않습니다. 소멸자에서 예외 처리로 흐름을 변경합니다. 예외 처리가 없는 구역에서 클래스가 사용될 경우 프로그램이 종료될 수 있습니다.",
  "ExceptionAsFlowControl.description": "Try-catch 구문을 이용한 flow control을 검출합니다.",
  "ExcessiveClassLength.description": "지정한 수 이상의 줄을 포함하는 클래스를 검출합니다.",
  "ExcessiveImports.description": "지정한 개수 이상의 import 구문을 검출합니다.",
  "ExcessiveMethodLength.description": "지정한 수 이상의 줄을 포함하는 메소드를 검출합니다.",
  "ExcessiveParameterList.description": "지정한 수 이상의 파라미터를 입력받는 메소드를 검출합니다.",
  "ExcessivePublicCount.description": "지정한 개수 이상의 필드를 사용한 클래스를 검출합니다.",
  "ExtendsObject.description": "표기하지 않아도 될 상속을 명시적으로 표기한 경우 이슈를 검출합니다.",
  "FAIL": "실패",
  "FAIL_TO_HEALTH_CHECK_WITH_DATA_WAREHOUSE": "데이터 웨어하우스 서비스의 상태 확인에 실패했습니다.",
  "FALSE": "고지 의무 없음",
  "FIELD_ASSIGNED_IN_CONSTRUCTOR_SHOULD_BE_FINAL.description": "생성자를 통해 할당하는 변수는 final 로 선언해야 합니다.",
  "FIELD_COMMENT.description": "필드 변수 주석의 형식 체커는 필드 변수에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n사전에 정의된 필드 주석 형식에 따라 코드에 선언된 필드에 대한 주석을 작성하였는지 확인합니다. 추가적으로 주석 내에 필드 이름 및 필드 타입을 올바른 형식의 값으로 입력하였는지 확인합니다.\n사전에 정의된 형식에 맞게 필드 변수 주석을 작성합니다.",
  "FILE": "파일 단위 소스 코드",
  "FILENAME_IN_ANGLE_BRACKET_OR_DOUBLE_QUOTATION.description": "형식이 맞지 않은 include 전처리 구문 체커는 include 전처리 구문 뒤에 오는 파일 이름이 지정된 형식을 벗어난 경우를 검출합니다.\n여기서 지정된 형식이란 \"파일 이름\" 이나 <파일 이름>을 의미합니다.\ninclude 전처리 구문으로 파일을 포함시키는 경우 항상 지정된 형식을 사용하도록 합니다.",
  "FILE_COMMENT.description": "파일 주석의 형식 체커는 파일에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n코드에 작성된 파일 내 가장 첫 주석을 사전에 정의된 파일 주석 형식에 따라 확인합니다.\n사전에 정의된 형식에 맞게 파일 주석을 작성합니다.",
  "FILE_PARSING_ERROR": "파일 파싱 에러가 발생했습니다.",
  "FIND": "검색",
  "FIND_STRING_IN_CONTENT.description": "지정한 문자열 사용 체커는 소스 코드 내에서 지정한 문자열이 있는 경우를 검출합니다.\n지정한 문자열은 옵션을 통해 입력할 수 있습니다.\n지정한 문자열을 사용하지 않도록 합니다.",
  "FIRST_COLUMN.FUNCTION.description": "함수는 첫 번째 열에서 시작해야 합니다.",
  "FIRST_COLUMN.GLOBAL.description": "전역 변수 선언은 첫 번째 열에서 시작해야 합니다.",
  "FIRST_COLUMN.LOCAL.description": "함수가 선언된 첫번째 열로부터 하나의 들여쓰기를 하고 지역 변수 선언을 해야만 합니다.",
  "FIRST_COLUMN.PREPROCESSING.description": "전처리문은 첫 번째 열에서 시작해야 합니다.",
  "FLEXIBLE_ARRAY_MEMBER.description": "구조체 내 가변 길이 배열 사용 체커는 구조체의 멤버 변수로 가변 길이 배열을 포함시키는 경우를 검출합니다.\n구조체의 멤버로 가변 길이 배열을 사용하지 않습니다. 대신 고정 길이 배열을 사용하거나 포인터를 사용하고 별도로 해당 포인터에 배열을 동적할당하도록 합니다.",
  "FLOAT_BIT_REPRESENTATION.description": "실수형 값을 비트 단위로 접근 체커는 실수형으로 선언한 값을 비트 단위로 접근하는 캐스팅이나 선언 등을 검출합니다.\n실수형 값을 비트 단위로 접근하지 않습니다. 구체적으로는 실수형 값을 비트 단위로 접근 가능한 다른 타입으로 캐스팅하거나 공용체에서 정수형과 같이 사용하지 않도록 합니다.",
  "FOLDER": "폴더",
  "FORBIDDEN.ARITHMETIC_OPERATION.SQL.description": "수식에서 +,-,*,/ 등의 사칙 연산을 사용하는 경우를 검출합니다.",
  "FORBIDDEN.ASTERISK.SELECT.ABAP.description": "SELECT 구문 내 * 사용 체커는 *를 사용하여 모든 컬럼을 읽어들이는 SELECT 구문을 검출합니다.\nSELECT 문을 사용할 때 구체적인 컬럼을 명시합니다.",
  "FORBIDDEN.ASTERISK.SELECT.SQL.description": "SELECT 쿼리문에서 '*'을 사용한 경우를 검출합니다. 필요한 컬럼명을 명기하는 것을 권장합니다.",
  "FORBIDDEN.BINDING_VARIABLE.SQL.description": "SELECT 절, FROM 절에 바인딩 변수를 사용하는 경우를 검출합니다.",
  "FORBIDDEN.BYPASSING_BUFFER.ABAP.description": "BYPASSING BUFFER 절 사용 체커는 BYPASSING BUFFER 절을 사용한 SELECT 구문을 검출합니다.\nSELECT 구문에서 BYPASSING BUFFER 절을 제거합니다.",
  "FORBIDDEN.DIRECT_JSP_ACCESS.CONFIG.description": "JSP 직접 접근 체커는 설정에서 JSP에 직접 접근하도록 하는 경우를 검출합니다.\n설정에서 JSP에 직접 접근하지 않도록 합니다.",
  "FORBIDDEN.DISTINCT.ABAP.description": "DISTINCT 연산자 사용 체커는 DISTINCT 연산자를 사용한 SELECT 구문을 검출합니다.\nSELECT 구문에서 DISTINCT 연산자를 제거합니다.",
  "FORBIDDEN.DISTINCT.SQL.description": "DISTINCT 사용을 검출합니다. DISTINCT대신 GROUP BY 사용을 권장합니다.",
  "FORBIDDEN.DYNAMIC_CLAUSES.SELECT.ABAP.description": "동적 조건 SELECT 사용 체커는 동적 조건을 포함한 SELECT 구문을 검출합니다.\nSQL 쿼리에 동적 조건 대신 필터링할 고정된 조건을 명시합니다.",
  "FORBIDDEN.EQUALITY_FOR_BOXED_PRIMITIVES.description": "박스형 프리미티브의 값 비교 금지 체커는 객체형 타입인 변수가 equality 연산자의 피연산자로 사용되는 경우를 검출합니다.\n박스형 프리미티브(객체형)는 ==와 != 연산자를 사용하여 직접 비교할 수 없습니다. 객체형 간의 == 혹은 != 연산은 비교가 아니라 레퍼런스의 비교입니다. 래퍼런스 비교임에도 불구하고 캐싱을 수행하기 때문에 일부 범위에서는 예상하지 못한 결과가 나오게 됩니다. \n박스형 프리미티브(객체형)는 ==와 != 연산자를 사용하여 비교하지 않고, equals() 메소드를 사용하여 비교하도록 합니다.",
  "FORBIDDEN.FROM_DUAL.SQL.description": "FROM DUAL 사용을 검출합니다.",
  "FORBIDDEN.INET_ADDRESS.description": "InetAddress 클래스 내의 금지된 메소드를 사용했습니다. 네트워크 주소를 획득하는 getByname, getAllByName, getByAddress 함수를 사용하지 않는 것을 권장합니다.",
  "FORBIDDEN.INSTANCE_ACCESSING.description": "객체를 통한 정적 멤버 접근 체커는 클래스가 아닌 객체를 통해서 클래스의 정적 멤버에 접근하는 경우를 검출합니다.\n정적 멤버에 접근할 때는 클래스를 명시하여 접근합니다.",
  "FORBIDDEN.INTERNAL_STMT.ABAP.description": "내부 소스 코드 처리 구문 사용 체커는 내부적으로만 사용되어야 하는 구문을 검출합니다.\n해당 구문은 다음과 같습니다. DELETE REPORT, GENERATE REPORT, LOAD REPORT, SCAN, DELETE TEXTPOOL, EXPORT DYNPRO, IMPORT DYNPRO, DELETE DYNPRO, SYNTAX-CHECK FOR DYNPRO,GENERATE DYNPRO\n내부적으로만 사용되는 구문을 삭제합니다.",
  "FORBIDDEN.LOWERCASE_KEYWORD.SQL.description": "특정 키워드에 대해 소문자로 사용된 경우를 검출합니다. 다음 키워드에 대해 검사를 수행합니다. SELECT, FROM, WHERE, AND, OR, UPDATE, SET, DELETE, INSERT, INTO, VALUES.",
  "FORBIDDEN.MERGE.SQL.description": "금지된 Merge 문을 사용했습니다.",
  "FORBIDDEN.MODIFY_PARAMETER.description": "값 전달 호출 함수에서 매개 변수 수정 체커는 함수의 본체에서 전달받은 매개 변수에 값을 대입한 경우를 검출합니다.\n매개 변수에는 값을 대입하지 않습니다. 함수를 호출한 측의 인자에 영향을 미치고 싶다면 매개 변수 타입을 포인터 타입으로 바꾸고 함수를 호출할 때는 인자 변수를 직접 전달하는 대신 그 참조를 전달해야 합니다.",
  "FORBIDDEN.MULTI_DIMENSION_ARRAY.description": "다차원 배열 사용 금지 체커는 옵션에 설정된 최대 배열 단계수 이상으로 배열을 사용한 경우를 검출합니다.\n옵션에서 최대 제한할 배열 단계 수를 설정할 수 있습니다.\n다차원 배열을 사용하지 마십시오.",
  "FORBIDDEN.NATIVE.SQL.ABAP.description": "Native SQL 사용 체커는 EXEC 구문을 검출합니다.\nOpen SQL로 대체할 수 있는 경우에는 Open SQL을 사용하십시오. 대체할 수 없는 경우(다른 DB 호환)에만 Native SQL을 사용합니다.",
  "FORBIDDEN.NEGATION_IN_CONDITION.SQL.description": "부정형 조건을 사용하는 경우를 검출합니다.",
  "FORBIDDEN.NESTED_DECODE.SQL.description": "DECODE 문 중첩 사용을 검출합니다.",
  "FORBIDDEN.NOT_IN_COND.ABAP.description": "NOT IN 사용 체커는 NOT IN을 사용한 SQL 쿼리문을 검출합니다.\nNOT IN 대신 NO EXIST를 사용합니다.",
  "FORBIDDEN.NULL_IN_SECURITY_MANAGER.description": "setSecurityManager 함수의 인자에 null을 사용해서는 안됩니다. 인자에는 보안 정책을 관리할 Security Manager를 입력해야 합니다.",
  "FORBIDDEN.OVERRIDING_FINALIZE.description": "java.lang.Object.finalize() 메소드는 Garbage Collector에 의해서 호출되는 메소드로서, 호출이 될 수도 되지 않을 수도 있습니다. 본 메소드의 재정의 시 반드시 수행해야 하는 로직을 포함하는 것은 위험할 수 있으니 주의해야 합니다.",
  "FORBIDDEN.PARALLEL.SQL.description": "PARALLEL 사용을 검출합니다.",
  "FORBIDDEN.PROPERTY_METHOD.description": "다음과 같은 메소드는 System property를 변경할 수 있어 신뢰할 수 없는 입력으로부터 얻은 값이 사용될 수 있고, 이를 이용한 침입자의 공격으로 인한 잠재적인 위험이 있으니 주의해야 합니다. (java.lang.System.setProperty(java.lang.String, java.lang.String), java.lang.System.setProperties(java.util.Properties))",
  "FORBIDDEN.QUERY_IN_LOOP.ABAP.description": "반복문 내에서의 SELECT 구문 사용 체커는 LOOP 나 WHILE 구문 내에서 사용된 SELECT 구문을 검출합니다.\nUP TO 1 ROWS와 같이 사용하지 않는 이상 LOOP나 WHILE 구문 안에 SELECT 구문을 사용하지 마십시오.",
  "FORBIDDEN.RACE_CONDITION_METHOD.description": "다음과 같은 메소드는 Race Condition을 일으킬 수 있다고 알려져 있어 fixed thread pool 등의 다른 방법을 사용하는 것이 더 안전합니다.\n(java.lang.ThreadGroup.activeCount(), java.lang.ThreadGroup.activeGroupCount(), java.lang.ThreadGroup.checkAccess(), java.lang.ThreadGroup.enumerate(java.lang.Thread[]), java.lang.ThreadGroup.enumerate(java.lang.Thread[], boolean), java.lang.ThreadGroup.enumerate(java.lang.ThreadGroup[]), java.lang.ThreadGroup.enumerate(java.lang.ThreadGroup[], boolean), java.lang.ThreadGroup.interrupt(), java.lang.ThreadGroup.destroy(), java.lang.ThreadGroup.list(), java.lang.ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable), java.lang.ThreadGroup.getParent(), java.lang.ThreadGroup.toString(), java.lang.ThreadGroup.getName(), java.lang.ThreadGroup.getMaxPriority(), java.lang.ThreadGroup.isDaemon(), java.lang.ThreadGroup.isDestroyed(), java.lang.ThreadGroup.setDaemon(boolean), java.lang.ThreadGroup.setMaxPriority(int), java.lang.ThreadGroup.parentOf(java.lang.ThreadGroup), java.lang.ThreadGroup.allowThreadSuspension(boolean))",
  "FORBIDDEN.REPLACING_EMAIL_ADDRESS.description": "이메일 주소 변수에 대입 체커는 지정된 이메일 주소 변수에 값을 대입하는 경우를 검출합니다.\n옵션을 통해 이메일 주소에 해당하는 변수 이름을 지정할 수 있습니다.\n해당 변수에 값을 대입하지 않도록 합니다.",
  "FORBIDDEN.STATEMENT_EXECUTE_QUERY.description": "java.sql.Statement.executeQuery는 사용되는 쿼리문의 argument 보안에 취약해서 SQL Injection 공격에 노출될 가능성이 있습니다.. Statement.excuteQuery() 대신에 PreparedStatement.executeQuery()를 사용하는 것이 더 안전합니다.",
  "FORBIDDEN.STATIC_KEYWORD_IN_PARAM.description": "배열 타입 매개 변수에 static 키워드 사용 체커는 함수 선언에서 배열 타입 매개 변수의 중괄호 사이에 static 키워드를 사용한 경우를 검출합니다.\n배열 매개 변수 선언에 static 키워드를 사용하지 않습니다.",
  "FORBIDDEN.SYSDATE.SQL.description": "SYSDATE 사용을 검출합니다.",
  "FORBIDDEN.TABLE.SQL.description": "금지된 테이블 사용 체커는 옵션으로 금지한 테이블 사용을 검출합니다.\n금지된 테이블은 사용하지 않습니다.",
  "FORBIDDEN.TABLE_COLUMN.SQL.description": "금지된 테이블 컬럼 사용 체커는 옵션으로 금지한 테이블 컬럼 사용을 검출합니다.\n금지된 테이블 컬럼은 사용하지 않습니다.",
  "FORBIDDEN.TRIM_LENGTH.description": "빈 문자열 확인을 위해 String.trim().length() 을 사용하는 것은 피하도록 합니다. whitespace/Non-whitespace 확인을 위한 별도의 로직 구현을 권장합니다.",
  "FORBIDDEN.WITH.SQL.description": "WITH문은 사용하지 않는다.",
  "FORBIDDEN_CALL.BEFORE_CALL.description": "잘못된 순서로 함수 호출 체커는 옵션에 지정된 함수의 호출 순서를 지키지 않는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 먼저 호출되어야 하는 함수, 이후 호출되어야 하는 함수를 설정할 수 있습니다.\n옵션에 지정된 함수 호출 순서를 따라야 합니다.",
  "FORBIDDEN_CALL.LOOP.description": "반복문에서 호출 금지 함수 사용 체커는 반복문에서 사용하지 않도록 옵션에 지정된 함수를 사용하는 코드를 검출합니다.\n옵션에서는 특정 반복문에서 호출을 금지하는 함수를 설정할 수 있습니다.\n반복문 안에서 옵션에 지정된 호출 금지 함수를 사용하지 않도록 합니다.",
  "FORBIDDEN_DYNAMIC_TYPE_IN_CTOR_DTOR.description": "생성자와 소멸자에서 RTTI 사용 체커는 메소드 내부 구현에서 동적 타입 정보를 필요로 하는 명령어를 사용한 생성자나 소멸자를 검출합니다.\nRTTI(RunTime Type Information) 이란 실행시간에 얻을 수 있는 객체들의 정보를 의미합니다. C++의 몇몇 명령어들은 RTTI 정보를 필요로 합니다. 대표적으로 typeid나 dynamic_cast, 가상 함수 호출 등이 있습니다.\n생성자와 소멸자에서 동적 타입 정보를 필요로 하는 명령어를 사용하지 않습니다.",
  "FORMAT_STRING.description": "포맷 스트링 체커는 포맷 명세와 실제 인자의 타입이 일치하지 않는 코드를 검출합니다.\nC 프로그램에서 사용하는 포맷 명세는 아래와 같습니다. int 타입: d, i unsigned int 타입: u double 타입: f, F, e, E, g, G, a, A unsigned int 타입: x, X, o char 포인터 혹은 문자열 타입: s char 타입: c void 포인터 타입: p Length 필드 정보는 아래와 같습니다. hh: char 타입을 int 타입으로 promote h: short 타입을 int 타입으로 promote l: 정수형인 경우 long 타입을 예상하거나 floating point 타입의 경우 double 타입을 예상함 정수형인 경우 long 타입을 예상하거나 floating point 타입의 경우 double 타입을 예상함\n포맷 스트링과 나중에 입력하는 인자 타입이 일치하도록 해당 포맷 스트링을 변경하거나 인자의 타입을 변경해야 합니다.",
  "FORMAT_STRING_ARGUMENT_NUMBER_MISMATCH.description": "포맷 스트링과 대상 인자 개수 불일치 체커는 특정 인자 위치로 문자열 형을 반환하는 함수에서 문자열 형태(%s, %x, %c등)와 그 대상 인자의 개수가 다른 경우를 검출합니다.\n문자열 형태와 대상 인자의 개수가 다르지 않게 합니다.",
  "FORMAT_STRING_OVERFLOW.description": "포맷 스트링 길이 제한 누락 체커는 포맷 스트링을 통해 생성되는 문자열의 크기를 제한하지 않는 경우를 검출합니다.\n포맷 스트링을 사용할 때 생성될 문자열의 길이를 제한해야 합니다.",
  "FORM_CSRF_ATTR.HTML.description": "폼 태그 내에 csrf 속성이 있는지를 검사합니다.",
  "FORWARD_NULL.description": "널 값 역참조 체커는 널 상수나 널이 할당된 변수를 역참조하는 경우를 검출합니다.\n널일 수도 있는 값을 검사 없이 역참조하면 프로그램 실행 중에 NullPointerException 예외가 발생합니다. 프로그램 실행이 비정상적으로 종료될 수 있습니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다.",
  "FORWARD_NULL_CSHARP.description": "널 값 역참조 체커는 널 상수나 널이 할당된 변수를 역참조하는 경우를 검출합니다.\n널일 수도 있는 값을 검사 없이 역참조하면 프로그램 실행 중에 NullReferenceException 예외가 발생합니다. 프로그램 실행이 비정상적으로 종료될 수 있습니다.\n널일 수도 있는 값은 반드시 널인지 확인한 후 사용합니다.",
  "FOR_LOOP_CONTROL_CHANGE_COND.description": "조건 혹은 증감절에 의해 루프 제어 변수값 변동 체커는 루프 제어 변수의 값이 조건절 혹은 증감절에서 변환된 경우를 검출합니다.\n이때 루프 제어 변수란 루프 카운터를 제외하고 for 문의 초기화 절에서 초기화되지 않거나 증감절에서 변화하지 않는 조건절 변수를 의미합니다.\n루프 제어 변수가 증감절이나 조건절에서 변동되지 않도록 주의합니다.",
  "FOR_LOOP_NONBOOL_CONTROL_CHANGED.description": "Boolean 타입이 아닌 루프 제어 변수 체커는 루프 제어 변수가 반복문의 본문에서 값이 변할 경우 그 타입이 Boolean 타입이 아닌 경우를 검출합니다.\n이때 루프 제어 변수란 루프 카운터를 제외하고 for 문의 초기화 절에서 초기화되지 않거나 증감절에서 변화하지 않는 조건절 변수를 의미합니다.\n루프 제어 변수는 Boolean 타입을 가지도록 선언합니다.",
  "FREE_NON_HEAP.description": "스택 영역의 메모리 해제 체커는 힙 영역이 아닌 스택 영역에 할당된 메모리를 해제하는 코드를 검출합니다.\n해당 오류는 주로 지역 변수의 주소를 해제하는 경우에 발생합니다.\n스택 영역이 아닌 힙 영역에 할당된 메모리를 해제해야 합니다.",
  "FREE_NULL_POINTER.description": "동적할당을 받지 못한 널 포인터를 free()함수로 해제하려고 시도하는 경우에 검출되는 오류입니다.",
  "FUNCTION_COMMENT.description": "함수 주석의 형식 체커는 함수에 해당하는 주석의 형식을 위반한 경우를 검출합니다.\n사전에 정의된 함수 주석 형식에 따라 코드에 선언된 함수에 대한 주석을 작성하였는지 확인합니다. 추가적으로 주석 내에 함수 이름, 함수 반환 타입 및 함수 인자들의 이름, 타입, 그리고 개수를 올바른 형식의 값으로 입력하였는지 확인합니다.\n사전에 정의된 형식에 맞게 함수 주석을 작성합니다.",
  "FUNCTION_DEFINITION_TYPE_MISMATCH.description": "함수 정의와 선언 불일치 체커는 함수 정의와 선언에서 타입 이름이 일치하지 않는 경우를 검출합니다.\n함수는 선언된 대로 정의되어야 합니다.",
  "FUNCTION_SHALL_BE_DECL_FILE_SCOPE.description": "함수 내부에서의 함수 선언 체커는 함수가 파일 영역에서 선언되지 않고 함수 내부에서 선언된 경우를 검출합니다.\n함수는 반드시 파일 영역에서 선언하도록 합니다.",
  "FUNCTION_TRY_BLOCK_SHOULD_NOT_REFERENCE_CLASS_DATA.description": "생성자 혹은 소멸자 catch 절에서 필드 접근 체커는 catch 절에서 내부 필드를 접근하는 function-try-block 으로 이루어진 생성자와 소멸자를 검출합니다.\nfunction-try-block 이란 메소드의 본문을 대체할 수 있는 구문 형식 중 하나입니다. 함수 본문 대신 try와 catch 문으로 대체할 수 있습니다.\n생성자 혹은 소멸자가 function-try-block 구문으로 이루어져 있을 경우, catch 절에서 필드를 접근하지 않도록 합니다.",
  "FUNCTION_WITHOUT_DEFINITION.description": "함수 선언 후 함수 정의 누락 체커는 함수를 선언한 후에 같은 파일에서 해당 함수를 정의하지 않은 코드를 검출합니다.\n옵션에서 extren 함수의 검사 여부를 설정할 수 있습니다.\n함수를 선언한 후에 정의하도록 합니다.",
  "FUNCTION_WITH_VOID_RETURN_TYPE_SHOULD_HAVE_EXTERNAL_SIDE_EFFECT.description": "외부 부수 효과를 가지지 않은 함수 선언 체커는 반환 타입이 void이고 외부에 아무런 영향을 미치지 않는 함수 선언을 검출합니다.\n외부 부수 효과(External Side Effect)란 함수 외부에 어떠한 영향을 발휘하는 것을 의미 합니다. 예를 들어 파일 읽기 또는 쓰기, 전역 변수의 값 변경, 참조 타입을 가지는 인자 값의 변경, volatile 객체 사용, 예외 발생이 외부 부수 효과에 해당하는 항목입니다.\n반환 타입이 void인 함수는 반드시 외부 부수 효과를 일으켜야 합니다.",
  "FieldDeclarationsShouldBeAtStartOfClass.description": "필드는 클래스의 최상단 또는 메소드, 생성자, 초기자, 내부 클래스 뒤에 선언해야 합니다.",
  "FinalFieldCouldBeStatic.description": "인터페이스가 아닌 클래스 내부에서 필드를 상수값을 할당하며 final로 선언하는 코드을 검출합니다.",
  "FinalizeDoesNotCallSuperFinalize.description": "파라미터가 없는 finalize() 메소드의 블록의 마지막 문장이 super.finalize() 가 아니거나, finally 블록 안의 super.finalize() 인 경우 이를 검출합니다.",
  "FinalizeOnlyCallsSuperFinalize.description": "파라미터가 없고 super.finalize() 구문 하나만으로 이루어진 finalize() 메소드를 검출합니다.",
  "FinalizeOverloaded.description": "finalize() 메소드에 파라미터 입력이 있는 경우 이를 검출합니다.",
  "FinalizeShouldBeProtected.description": "finalize 메소드가 public으로 선언된 경우 취약하다고 판정합니다. finalize() 구현 내부에서 super.finalize() 호출 시를 제외하고는 finalize() 메소드는 명시적으로 호출 되어서는 안되므로 public으로 선언하면 안 됩니다.",
  "ForLoopShouldBeWhileLoop.description": "For 구문의 인덱스 초기화 및 업데이트 구문이 없는 경우 이를 검출합니다.",
  "ForLoopsMustUseBraces.description": "중괄호를 사용하지 않은 for 구문을 검출합니다.",
  "FunctionConst.description": "기술적으로 이 멤버 함수는 const로 만들 수 있습니다. 이 함수를 const로 변경해도 컴파일 에러가 발생하지 않습니다. 다만 기술적으로 변경할 수 있다고 해서 개념적으로 올바른 것은 아닙니다. 해당 함수가 반드시 변경되지 않아야 할 필요가 있는지 확인해보십시오.",
  "FunctionStatic.description": "기술적으로 이 멤버 함수는 static으로 만들 수 있습니다. 함수를 static으로 만드는 것은 함수에 'this' 인스턴스를 넘겨주지 않아도 되어, 성능상의 이점이 있습니다. 이러한 변경은 오류를 발생하지 않지만 개념적으로 반드시 올바른 것은 아닙니다. 해당 함수가 하는 일을 먼저 고려하십시오.",
  "GENERAL_COMMENT.description": "주석의 형식 체커는 일반 주석에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n코드에 작성된 일반 주석을 사전에 정의된 일반 주석 형식에 따라 확인합니다.\n사전에 정의된 형식에 맞게 일반 주석을 작성하여 ////으로 선언된 주석을 //으로 변경해야 합니다.",
  "GET": "받기",
  "GETCHAR_TO_INT.description": "잘못된 타입의 getchar 함수 반환값 사용 체커는 getchar() 함수의 반환값을 int보다 작은 타입에 대입하는 경우를 검출합니다.\ngetchar() 함수의 반환값은 일단 int 타입 변수에 저장하여 EOF인지 여부를 확인한 후에 사용해야 합니다.",
  "GOTO_JUMP_LATER_DECLARED_LABEL_ONLY.description": "되돌아가는 goto 구문 체커는 함수 안에서 goto 구문보다 먼저 등장하는 레이블로 점프하는 경우를 검출합니다.\ngoto 구문의 사용을 자제합니다. 대부분의 상상할 수 있는 계산은 goto 구문 없이 분기문과 반복문만 사용하여 구현해낼 수 있습니다. 분기문과 반복문만으로 구현하면 코드가 지나치게 복잡해져서 어쩔 수 없이 goto 구문을 사용하게 되더라도 역방향으로 점프하는 goto 구문은 사용하면 안됩니다.",
  "GUARANTEE_EXCEPTION_SAFETY.description": "예외 안정성을 보장하지 않는 코드 체커는 프로그램이 예외에 의해 종료되는 경우 프로그램에 비정상적인 영향을 줄 가능성이 존재하는 코드를 검출합니다.\n에러와 예외 상황을 적절하게 처리하는 것은 소프트웨어에서 필수적이며 예외가 발생했을 때 프로그램에 비정상적인 영향을 끼칠 수 있는 가능성은 사전에 제거되어야 합니다. 이러한 비정상적인 영향을 피하는 코드를 \"예외 안전성\"을 보장한다고 표현합니다. 예외 안전성은 다음과 같이 세 가지로 나뉩니다:\n\n강한 예외 안정성: 기본 예외 안정성을 보장하는 동시에 예외에 의해 작업이 종료되었을 때 프로그램 상태에 관찰 가능한 영향이 발생하지 않습니다.\n기본 예외 안정성: 프로그램이 예외에 의해 종료되었을 때 리소스 누수를 방지하고 프로그램 상태를 변하지 않게 합니다.\n예외 안전성 없음: 강한 예외 안정성과 기본 예외 안정성을 모두 보장하지 않습니다.\n지역 변수가 아닌 변수의 값이 예외가 발생할 수 있는 시점 이후에 변경될 수 있도록 코드를 수정합니다.",
  "GenericsNaming.description": "제네릭명이 한 글자가 아니거나, 혹은 대문자가 아닌 경우 이를 검출합니다.",
  "GlobalVariable.description": "단순히 \"var\" 선언문을 사용하지 않았을 경우를 검출합니다. 전역변수의 사용은 디버깅을 어렵게 만들기 때문에 최소한으로 사용해야 합니다.",
  "GodClass.description": "작게 나눠지지 않고 덩치가 큰 클래스를 God 클래스라고 합니다. 유지보수 측면에서 복잡한 God 클래스는 비효율적 클래스입니다.",
  "GuardDebugLogging.description": "Log 메시지를 여러개의 문자열을 이어서 생성하는 경우, 성능 및 메모리 문제를 방지하기 위해 isDebugEnabled() 검사를 사용하여 보호하여야 합니다.",
  "HANDLE_ALL_EXCEPTIONS_BEFORE_MAIN_BEGINS_EXECUTE.description": "정적 범위의 객체 선언에서 발생하는 처리되지 않는 예외 체커는 객체를 함수 블록 범위 혹은 생성자 내에 선언하지 않고 정적 혹은 스레드 존속 범위에 선언했을 때, 처리되지 않는 예외가 발생하는 코드를 검출합니다.\nC++에서 모든 예외를 처리할 수는 없습니다. 특히 정적 범위에 있는 객체들의 생성자에서 발생한 예외는 function-try-block에서 catch할 수 없습니다. 객체를 함수 블록 범위 혹은 생성자 내에 선언하지 않고 정적 범위에 선언했을 때에는 처리되지 않는 예외를 발생시켜서는 안됩니다.\n정적 범위에서 생성되는 객체 O가 존재하고, O가 생성될 때 호출되는 함수 목록 F가 있을 때 함수 목록 F 중 아래 조건을 모두 만족하지 않는 함수 G가 포함된다면 객체 O가 생성되는 위치를 검출합니다.\nnoexcept 키워드를 사용하여 선언됩니다.\nnoexcept(true) 키워드를 사용하여 선언됩니다.",
  "HANDLE_ALL_EXCEPTIONS_IF_SPECIFIED.description": "예외 명세에 포함되지 않은 예외 던짐 체커는 함수 내부에서 예외 명세에 포함되어 있지 않은 예외를 던지는 구문을 검출합니다.\n예외 명세에 포함되어 있는 타입만 예외로 던지도록 합니다. 혹은 예외 명세에 던져야 하는 타입을 추가하도록 합니다.",
  "HANDLE_ALL_EXCEPTIONS_NOT_IN_SPEC.description": "예외 사양의 불일치 체커는 예외 사양 기술과 실제로 던지는 예외의 타입이 다른 함수 선언을 검출합니다.\n예외 사양은 함수 선언 시 이 함수가 던질 수 있는 예외의 타입을 명시하는 것입니다.\n예외 사양에 기술되지 않은 모든 예외 던짐을 처리해야 합니다.",
  "HANDLE_FLOATING_POINT_ERRORS.description": "부동 소수점 오류 처리 누락 체커는 부동 소수점 연산을 수행한 후 오류를 처리하지 않는 경우를 검출합니다.\n부동 소수점 연산을 수행하고나면 fetestexcept() 등의 부동 소수점 연산 오류 처리 함수를 호출하여 오류를 검사해야 합니다.",
  "HANDLE_STANDARD_LIBRARY_ERROR.description": "사용되지 않은 표준라이브러리 반환 값 체커는 표준라이브러리의 반환 값을 사용하지 않은 수식을 검출합니다.\n표준 라이브러리 반환 값을 항상 점검하고 실패에 대응하도록 합니다.",
  "HANWHA_NAMING_CONVENTION.description": "규칙에 맞는 프로그램, 함수, DM, 변수의 이름을 사용하지 않았을 경우를 검출합니다.",
  "HARDCODED_SET_FUNCTION.description": "Set함수 하드코딩 체커는 하드코딩된 정보를 사용하는 코드를 검출합니다. 사용할 특정 상수는 상수 변수에 저장해두고 이 변수를 통해 사용합니다.",
  "HARD_CODED_CRYPTOGRAPHIC_KEY.description": "암호화를 수행하기 위해 소스코드 내에 하드코드된 암호화키를 사용할 경우 암호화된 정보가 유출되면 이를 역계산을 하여 원본 정보를 알아낼 수 있습니다.",
  "HARD_CODED_CRYPTOGRAPHIC_KEY_CSHARP.description": "하드코딩된 암호화 키 체커는 소스 코드 내에서 하드코딩된 암호화 키를 사용하는 경우를 검출합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "HARD_CODED_DOMAIN_IN_HTML.description": "다른 사이트의 스크립트 포함 체커는 HTML 내에서 외부 사이트의 스크립트를 포함한 경우를 검출합니다.\nJavaScript에서 포함하는 스크립트의 경우 서비스를 제공하는 사이트에서 관리하는 JavaScript만을 사용하도록 합니다.",
  "HARD_CODED_PASSWORD.CONFIG.description": "설정 파일에 하드코딩된 비밀번호 체커는 설정 파일에 일반 텍스트 암호를 저장하는 경우를 검출합니다.\n설정 파일에서는 암호를 저장하지 않도록 합니다.",
  "HARD_CODED_USER_NAME_AND_PASSWORD.description": "하드코딩된 사용자 이름과 비밀번호 체커는 사용자 이름과 비밀번호 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.\njava.sql.DriverManager.getConnection() 메소드의 사용자 이름과 암호에 해당하는 매개 변수가 검사 대상입니다.\n별도의 공간에 비밀번호를 암호화하여 저장해두고 이를 읽고 복호화하여 사용하는 것이 좋습니다.",
  "HEAP_INSPECTION.description": "힙 메모리 조사 체커는 릴리즈 전 힙 메모리를 깨끗하게 삭제하지 않은 경우를 검출합니다.\n릴리즈 전 힙 메모리를 깨끗하게 삭제해야 합니다.",
  "HUNGARIAN_NOTATION.description": "헝가리안 명명법 미사용 체커는 헝가리안 명명법을 사용하지 않은 식별자를 검출합니다.\n옵션에서 헝가리안 표기법에 사용할 접두사의 목록을 설정할 수 있습니다.\n헝가리안 명명법을 준수합니다.",
  "IGNORED_RETURN_VALUE.description": "사용되지 않는 반환값 체커는 함수를 호출한 후에 반환값을 사용하지 않는 코드를 검출합니다.\n함수를 호출한 후에 반환된 값을 사용하지 않은 경우에 발생하는 오류입니다.\n반환값을 사용하여 예외 처리와 같이 적절한 함수 후처리를 수행합니다.",
  "IMPLEMENT_ABSTRACT_DATA_TYPES.description": "추상화되지 않은 데이터 타입 체커는 헤더 파일에서 구조체 등의 내부 구성이 직접 노출되는 경우를 검출합니다.\n구조체 등을 정의할 때 헤더 파일에는 프로토타입 선언만 남기고 상세한 구현은 개별 소스 파일에 숨기는 것이 좋습니다.",
  "IMPLICIT_ANY_TYPE.CONFIG.description": "Typescript는 Compiler Options으로 noImplicitAny를 제공합니다. noImplicitAny는 암묵적으로 any로 유추되는 모든 변수에 대해 오류를 발생시킵니다. 타입을 유추하지 않고 any타입을 사용한다면 Typescript는 평범한 Javascript의 동작과 같습니다.\nTypescript 설정 파일인 tsconfig.json 혹은 jsconfig.json파일에 compilerOptions 섹션 내부 strict 속성을 true로 선언하도록 합니다. 혹은 noImplicitAny 속성을 true로 선언하여 활성화합니다.",
  "IMPLICIT_CASTING.ASSIGNMENT.description": "대입 시 암시적 캐스팅 체커는 대입 연산의 좌변과 우변 사이 타입이 달라서 암시적 캐스팅이 일어나는 경우를 검출합니다.\n정수형 변수에 실수형 값을 대입하거나 반대로 실수형 변수에 정수형 값을 대입하는 것이 검출 대상입니다.\n명시적 캐스팅을 사용합니다.",
  "IMPLICIT_CASTING.RETURN.description": "반환 시 암시적 캐스팅 체커는 메소드의 반환 타입과 실제 반환하는 값의 타입이 달라서 암시적 캐스팅이 일어나는 경우를 검출합니다.\n반환 타입이 실수형인데 정수형 값을 반환하거나 반대로 반환 타입이 정수형인데 실수형 값을 반환하는 것이 검출 대상입니다.\n명시적 캐스팅을 사용합니다.",
  "IMPLICIT_CONVERSION_FLOAT_PARAM.description": "실수형 인자를 더 큰 타입으로 암시적 캐스팅 체커는 함수의 인자로 전달되는 실수형 값이 암시적으로 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "IMPLICIT_CONVERSION_INT_PARAM.description": "정수형 인자를 더 큰 타입으로 암시적 캐스팅 체커는 함수의 인자로 전달되는 정수형 값이 암시적으로 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "IMPLICIT_NARROW_FLOAT_CONVERSION.description": "실수형을 더 작은 타입으로 암시적 캐스팅 체커는 실수형 복합 수식절이 암시적으로 더 작은 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "IMPLICIT_NARROW_INTEGER_CONVERSION.description": "정수형을 더 작은 타입으로 암시적 캐스팅 체커는 정수형 복합 수식절이 암시적으로 더 작은 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "IMPLICIT_UNSIGNED_CHAR_TO_CHAR_HANDLING_INT.description": "문자 함수에 signed 문자형 전달 체커는 문자를 다루는 함수의 인자로 unsigned char 타입이 아닌 값을 전달한 경우를 검출합니다.\n타입이 다른 값의 경우 명시적 캐스팅을 통해 unsigned char 타입으로 변환한 후에 전달합니다.",
  "INCLUDE_STATIC_SPECIFIER_ON_REDECLARATION.description": "정적 스토리지 클래스를 가지지 않은 내부 링크 함수 체커는 내부 링크를 가지는 함수를 재선언할 때 정적 스토리지 클래스를 지정하지 않은 정의를 검출합니다.\n내부 링크를 가지는 함수 선언은 재선언 시에도 정적 스토리지 클래스를 지정하도록 합니다.",
  "INCLUDE_STDLIB_WITH_BRACKETS.description": "잘못된 헤더 포함 방법 체커는 헤더를 포함할 때 표준 라이브러리 헤더를 <>로, 다른 라이브러리를 \"\"로 포함하지 않는 경우를 검출합니다.\n표준 라이브러리는 <>를, 그 외의 헤더는 \"\"를 사용해 포함합니다.",
  "INCOMPLETE_STRUCT_UNION.description": "완전한 타입이 아닌 구조체 및 공용체 체커는 구조체 및 공용체가 완전한 타입이 아닌 경우를 검출합니다.\n여기서 완전하지 않은 타입이란 구조체 및 공용체가 아직 정의되지 않은 타입을 필드로 사용하여 불명확한 상태인 타입을 의미합니다.\n구조체 및 공용체는 완전한 타입으로 선언합니다.",
  "INCOMPLETE_VALIDATE_METHOD_DEFINITION.description": "불완전한 validate 메서드 정의 체커는 특정 클래스를 상속 받는 클래스에서 validate 메서드를 정의하지 않거나 잘못 정의하는 코드를 검출합니다.\n다음 클래스를 상속 받을 때 validate 메서드를 정의하지 않거나, 정의된 validate 메서드 안에서 super.validate 메서드를 호출하여 유효성을 검사하지 않으면 결과적으로 취약점이 발생할 수 있습니다. 상속 클래스 항목은 org.apache.struts.validator.ValidatorForm, org.apache.struts.validator.ValidatorActionForm, org.apache.struts.validator.DynaValidatorForm, org.apache.struts.validator.DynaValidatorActionForm 등 모두 네 개입니다.\n다음과 같은 네 개의 클래스를 상속 받는 클래스에서는 validate 메서드를 정의하고, 정의된 validate 메서드 안에서는 super.validate 메서드를 호출해야 합니다. \norg.apache.struts.validator.ValidatorForm, org.apache.struts.validator.ValidatorActionForm, org.apache.struts.validator.DynaValidatorForm, org.apache.struts.validator.DynaValidatorActionForm.",
  "INCONSISTENT_GLOBAL_VARIABLE_TYPE.description": "선언된 전역 변수명 재사용 시 extern 키워드 누락 체커는 이미 선언된 전역 변수와 동일한 변수 이름을 재사용할 때 extern 키워드를 사용하지 않은 코드를 검출합니다.\n다른 파일에서 전역 변수로 선언되어 있는 동일한 변수를 재사용하려면 extern 키워드를 사용해야 합니다.",
  "INCORRECT_CONVERSION.NUMERIC_TYPES.description": "숫자 타입 간의 잘못된 캐스팅 체커는 정수형과 실수형 객체 사이에 검증 없이 캐스팅한 수식을 검출합니다.\n캐스팅 후 정상적으로 변환되었는지 범위 값을 점검하도록 합니다.",
  "INCORRECT_ORDER_OF_CONSTRUCTOR_INITIALIZERS.description": "순서가 올바르지 않은 초기화 리스트 목록 체커는 초기화 해야 할 필드들의 순서가 올바르지 않은 초기화 리스트 목록을 검출합니다.\n초기화 리스트의 필드들은 반드시 선언한 순서대로 초기화를 수행합니다.",
  "INCORRECT_PERMISSION.description": "잘못된 권한 부여 체커는 사용자에게 읽기 또는 수정 권한을 잘못 부여하는 코드를 검출합니다.\n권한을 부여하는 도중 시스템 정보가 노출되지 않도록 주의해야 합니다.",
  "INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.description": "중요한 리소스에 대한 잘못된 권한 할당 체커는 설정 파일, 실행 파일, 라이브러리 등을 SW 관리자가 아닌 사용자가 읽고 쓸 수 있는 코드를 검출합니다.\n옵션으로 지정된 중요 리소스 파일에 대해 과도한 권한을 부여하는 코드를 검출합니다.\n중요한 리소스에 대해서는 특정 사용자에게만 권한을 부여하도록 수정합니다.",
  "INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE_CSHARP.description": "중요한 리소스에 대한 잘못된 권한 할당 체커는 설정 파일, 실행 파일, 라이브러리 등을 SW 관리자가 아닌 사용자가 읽고 쓸 수 있는 코드를 검출합니다.\nDirectorySecurity.AddAccessRule() 메소드 등을 잘못 사용하면, 설정 파일, 실행파일, 라이브러리 등을 SW 관리자외의 사용자가 읽고 쓰기가 가능하도록 권한을 부여하는 위험한 결과를 초래할 수 있습니다.\n중요한 리소스에 대해서는 특정 사용자에게만 권한을 부여하도록 수정합니다.",
  "INCORRECT_POINTER_SCALING.description": "부정확한 포인터 연산 체커는 포인터의 연산이 정확하지 않게 수행되는 경우를 검출합니다.\n포인터의 연산이 정확히 수행되도록 보장해야 합니다. 포인터 연산 시 개발자가 의도하지 않게 포인터가 잘못된 주소를 가리킬 수 있습니다.\n포인터 연산을 올바르게 수행하도록 합니다.",
  "INCORRECT_SERIAL_PERSISTENT_FIELDS_MODIFIER.description": "잘못된 serialPersistentFields 필드 한정자 체커는 private static final로 선언하지 않은 serialPersistentFields 필드를 검출합니다.\n해당 필드의 한정자를 private static final로 지정합니다.",
  "INCORRECT_USE_OF_PLACEMENT_NEW.description": "적절하지 않은 객체를 대상으로 하는 메모리 지정 new 연산 체커는 충분한 공간이 있는지 확인되지 않았거나 적절하게 정렬되지 않은 객체에 대해 메모리 지정 new (Placement new) 연산이 수행되는 코드를 검출합니다.\n주어진 타입에 new 표현식이 새로 호출될 때 전역의 기본 new 연산자는 충분한 저장 공간을 할당하려고 시도하고, 성공할 경우 적절한 포인터를 반환합니다. 하지만 이와 달리 메모리 지정 new(Placement new) 연산자는 객체를 생성할 충분한 공간이 있는지 확인하지 않고 주어진 포인터를 호출자에게 반환합니다.\n메모리 지정 new 연산을 사용할 때 충분한 버퍼의 공간을 할당하도록 합니다. 또한 버퍼를 적절하게 정렬할 수 있도록 alignas 와 같은 선언 지정자를 사용하도록 합니다.",
  "INCREMENT_ON_BOOLEAN.description": "bool 형식에 증가 연산자 사용 체커는 bool 형식의 변수에 증가 연산자('++')를 사용하는 경우를 검출합니다.\nbool형식의 변수에 증가 연산자를 사용하지 않습니다. 직접적인 참, 거짓을 대입하거나 toggle()이나 set(), clear() 같은 사용자 정의 함수를 만들어 사용하도록 합니다.",
  "INDICATE_SIGNEDNESS_TYPEDEF.description": "typedef로 부호 없는 숫자 타입 선언 체커는 typedef 선언 시 부호를 명시하지 않은 숫자 타입을 선언하는 코드를 검출합니다.\nchar, short, int, long, long long 타입을 대상으로 검사합니다.\ntypedef로 char, short, int, long, long long 타입을 선언할 때 singed 혹은 unsinged를 명시해야 합니다.",
  "INEFFECTIVE_BOOLEAN_LOGICAL_OP.description": "Boolean 타입이 아닌 논리 연산자의 피연산자 체커는 논리 연산자들의 피연산자 타입이 Boolean이 아닌 수식을 검출합니다.\n여기서 논리 연산자란 !, &&, || 연산자 등을 의미합니다.\n논리 연산자의 피연산자 타입은 항상 Boolean이 오도록 수식을 수정합니다.",
  "INFINITE_RECURSIVE_CALL.description": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.\n재귀 호출 구문을 올바른 제어 구문 아래에 둡니다. 재귀 호출의 종료 조건을 제대로 지정할 자신이 없다면 같은 기능을 재귀 호출 대신 반복문을 사용해 작성하는 것을 고려해보는 것도 좋습니다.",
  "INLINE_FUNCTION_SHALL_BE_STATIC.description": "inline 함수 선언에서 static 누락 체커는 inline 함수가 static으로 선언되지 않은 경우를 검출합니다.\ninline 함수는 항상 static으로 선언합니다.",
  "INPUT_FUNCTION_ERROR_HANDLING.description": "입력 함수의 오류 처리 누락 체커는 문자 데이터를 변환하기 위한 입력 함수에서 발생한 오류를 처리하지 않는 경우를 검출합니다.\n여기서 입력 함수란 scanf() 함수 등을 가리킵니다.\n문자 데이터를 변환하기 위해 입력 함수를 사용하는 경우 해당 입력에서 발생하는 오류를 처리하도록 합니다. 예를 들어, errno 값 등을 검사해야 합니다.",
  "INSERT_DERIVED_INTO_CONTAINER_HOLDING_BASE.description": "자식 클래스 객체를 컨테이너에 삽입 체커는 부모 클래스 객체를 저장하는 컨테이너에 자식 클래스 객체를 저장하는 수식을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다.\n부모 클래스 객체를 저장하는 컨테이너에 자식 클래스 객체를 저장하지 않도록 합니다. 만약 이러한 동작이 필요하다면 객체를 값이 아닌 포인터로 저장하도록 합니다.",
  "INSTANTIATE_TEMPLATES.description": "인스턴스화되지 않은 템플릿 체커는 한 번도 인스턴스화되지 않은 템플릿 요소를 검출합니다.\n여기서 템플릿 요소란 클래스 템플릿, 함수 템플릿, 클래스 템플릿 메소드, 클래스 템플릿 정적 필드를 의미합니다.\n인스턴스화되지 않은 템플릿 요소를 인스턴스화 합니다. 만약 앞으로도 인스턴스화 될 일이 없는 템플릿 요소는 제거하도록 합니다.",
  "INSUFFICIENT_INIT_ARRAY.description": "구조체 및 배열의 중괄호 초기화 요소 부족 체커는 명시된 구조체나 배열의 크기보다 중괄호 초기화 데이터가 부족한 정의를 검출합니다.\n구조체나 배열의 크기와 중괄호 초기화의 항목 수를 동일하게 맞추도록 합니다.",
  "INSUFFICIENT_PUBLIC_EXPONENT.description": "최적화되지 않은 공개 키 지수 체커는 비대칭 키 RSA 사용 시 공개 키 지수가 65537이 아닌 경우를 검출합니다.\n비대칭 키 RSA 사용 시 공개 키 지수의 값을 65537로 입력합니다.",
  "INSUFFICIENT_SESSION_EXPIRATION.description": "과도한 세션 유지 시간 체커는 HttpSession.setMaxInactiveInterval()의 인자로 -1이 전달되는 경우를 검출합니다.\n세션의 만료시간을 정해줄 때에는 적당한 양수를 사용하여 일정 시간이 흐르면 세션이 종료되도록 해야 합니다.",
  "INSUFFICIENT_SESSION_ID.CONFIG.description": "불충분한 세션 ID 길이 체커는 세션 ID 길이가 너무 짧은 경우를 검출합니다.\n세션 ID 길이는 충분히 길게 작성하도록 합니다. 이 규칙에서는 최소 16자 이상을 설정하는 것을 권장하고 있습니다.",
  "INTEGER_OVERFLOW.description": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.\n해당 체커는 덧셈이나 뺄셈, 곱셈에서 다음 조건이 충족되는 경우를 검출합니다. 1. 외부로부터 입력된 위험한 값이 계산에 사용되는 경우 2. 계산의 결과값이 각 타입에 허용된 최소값보다 작거나 최대값보다 큰 경우\n언어 및 플랫폼에 따라 정수형의 범위를 확인하고 사용하도록 합니다. 정수형 변수를 연산에 사용하는 경우 먼저 결과값의 범위를 확인하도록 합니다. 외부 입력값을 동적 메모리 할당에 사용하는 경우 변수가 적절한 범위 내에 존재하는지 확인해야 합니다.",
  "INTEGER_OVERFLOW_CSHARP.description": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.\n언어 및 플랫폼에 따라 정수형의 범위를 확인하고 사용하도록 합니다. 정수형 변수를 연산에 사용하는 경우 먼저 결과값의 범위를 확인하도록 합니다. 외부 입력값을 동적 메모리 할당에 사용하는 경우 변수가 적절한 범위 내에 존재하는지 확인해야 합니다.",
  "INTEGER_PRECISION.description": "부적절한 정수 정밀도 체커는 부적절한 상수 정밀도를 사용한 경우를 검출합니다.\n적절한 정수 정밀도를 사용합니다.",
  "INTEGER_UNDERFLOW.description": "정수 언더플로우 체커는 덧셈이나 뺄셈, 곱셈을 하는 곳에서 계산의 결과값이 각 타입에 맞게 허용된 최소값보다 작은 값으로 내려가면 검출합니다.\n정수 연산 시 계산 결과값을 비교하여 정수 표현의 최소값 미만으로 떨어지지 않도록 합니다.",
  "INTERNAL_USE_ONLY": "사내 사용만 가능",
  "INT_TO_CHAR.description": "정수형을 문자형으로 변환 체커는 정수형을 문자형으로 변환하는 코드를 검출합니다.\nint 타입을 char 타입으로 변환하면 표현할 수 없는 범위의 값이 잘려나갈 위험이 있습니다.\nint 타입을 char 타입으로 변환하면 표현할 수 없는 범위의 값이 잘릴 수 있으므로 변환하지 않도록 합니다.",
  "INVALID.CVSS_FORMAT": "CVSS 점수는 0.0 이상 10.0 이하이며, 소수점 이하 한 자리까지 표현해야 합니다.",
  "INVALID_DATA_TO_ASCTIME.description": "asctime() 함수에 유효하지 않은 입력값 사용 체커는 asctime() 함수에서 유효하지 않거나 검증되지 않는 입력값을 사용하는 코드를 검출합니다.\nasctime() 함수에 유효하지 않은 인자를 전달했을 때 버퍼 오버플로우 문제가 발생할 수 있으므로 더 안전한 strftime() 함수를 사용하도록 합니다.",
  "INVALID_ITERATOR.description": "반복자는 특정 컨테이너의 메소드에서 사용한 뒤 종종 무효화 됩니다. 이렇게 무효화된 반복자를 접근할 경우 런타임 오류가 발생할 수 있습니다.\n\n무효화된 반복자를 사용하지 않도록 합니다.\n",
  "INVALID_SERVLET.CONFIG.description": "잘못 설정한 서블릿 사용 체커는 설정이 잘못된 서블릿이 있는 경우를 검출합니다.\n잘못 설정된 서블릿이란 서블릿의 이름을 설정하지 않았거나 중복된 경우 등을 의미합니다.\n서블릿 설정을 문제 없이 잘 설정하도록 합니다.",
  "INVOCATION_OF_EQUALS_ON_ARRAY.description": "배열들 간의 equals 사용 체커는 두 비교 대상 객체가 배열 타입인 equals() 메소드 호출을 검출합니다.\n두 배열의 내용이 동일한지 알고 싶다면 직접 배열의 내용을 상세히 비교하는 코드를 작성하거나 Arrays 클래스의 equals()를 사용하면 됩니다.",
  "INVOKE_VIRTUAL_FUNCTION_FROM_CTOR_OR_DTOR.description": "생성자 혹은 소멸자에서 가상 함수 호출 체커는 가상 함수를 호출한 생성자나 소멸자를 검출합니다.\n생성자와 소멸자에서 반드시 가상 함수를 호출하지 않도록 합니다.",
  "IOWithoutPositioning.description": "IO 작업들 사이에는 positioning 작업이 없을 경우, 정의 되지 않은 동작을 할 수 있습니다.",
  "ISSUE": "이슈",
  "ISSUE.AFFECTEDVERSION.EQUAL": "{0}",
  "ISSUE.AFFECTEDVERSION.GT.OR.EQUAL": "{0} 이상",
  "ISSUE.AFFECTEDVERSION.GT.OR.EQUAL.AND.LT.OR.EQUAL": "{0} 이상 {1} 이하",
  "ISSUE.AFFECTEDVERSION.LT.OR.EQUAL": "{0} 이하",
  "ISSUE.REMEDIATION.NONE": "검색된 조치 방안이 없습니다.",
  "ISSUE.REMEDIATION.UPDATE": "컴포넌트 {0}의 버전을 {1}(으)로 업데이트합니다.",
  "ISSUE.REMEDIATION.UPDATE.VERSION.EQUAL": "{0} 버전으로 업데이트하세요.",
  "ISSUE.REMEDIATION.UPDATE.VERSION.GT.OR.EQUAL": "{0} 이상 버전으로 업데이트하세요.",
  "ISSUE.REMEDIATION.UPDATE.VERSION.GT.OR.EQUAL.AND.LT.OR.EQUAL": "{0} 이상 {1} 이하 버전으로 업데이트하세요.",
  "ISSUE.REMEDIATION.UPDATE.VERSION.LT.OR.EQUAL": "{0} 이하 버전으로 업데이트하세요.",
  "ISSUE.REMEDIATION.WARNING.EOL": "공식 지원이 종료된 컴포넌트입니다. 사용에 유의하세요.",
  "ISSUE.REMEDIATION.WARNING.TOO_OLD": "마지막 버전 출시 이후 2년 이상 경과한 컴포넌트입니다. 사용에 유의하세요.",
  "ITERATOR.description": "Iterator 및 ListIterator 에서 next() 혹은 previous() 를 호출할 때, 진행할 element가 없을 경우, NoSuchElementException 을 발생시키게 됩니다. 이럴 경우, 프로그램이 비정상적으로 종료될 수도 있기 때문에 경고를 합니다. 이런 일이 일어나는 경우는 대부분 아래와 같습니다. -next(), 또는 remove()를 호출하기 전에, hasNext() 혹은 previous() 을 호출하지 않을 경우 -previous()를 호출하기 전에, hasPrevious(), add(), 혹은 next() 를 호출하지 않을 경우",
  "IdempotentOperations.description": "항등식(예: x=x)은 아무런 효과가 없기 때문에 이를 검출합니다.",
  "IdenticalConditionAfterEarlyExit.description": "동일한 조건문이 존재합니다. 첫번째 조건문에 함수가 종료되어 두번 째 조건문은 사용되지 않는 코드입니다.",
  "IfStmtsMustUseBraces.description": "중괄호로 코드 브록을 둘러싸지 않는 if statement을 검출합니다.",
  "IframeMissingSrcAttribute.description": "IFrame은 반드시 src 속성을 가져야 합니다. 만일 Internet Explorer를 이용하여 SSL을 통해 페이지에 접근하는 경우, src가 유실된 IFrame의 경우 보안 안내 팝업창을 생성시킬 수 있습니다.",
  "IgnoredReturnValue.description": "함수의 반환값이 사용되지 않습니다.",
  "ImmutableField.description": "private 필드 중 초기화 이후 값이 한 번도 변화하지 않은 경우 이를 검출합니다.",
  "ImportFromSamePackage.description": "package로 정한 후 같은 package import을 검출합니다.",
  "IncorrectLogicOperator.description": "논리합이 항상 참을 반환합니다(ex. foo > 3 || foo < 4). 이러한 조건문은 필요하지 않습니다. &&를 사용하려는 의도인지 확인해야 합니다.",
  "Incrementboolean.description": "부울 자료형 변수를 증가시킬 때 ++ 연산자를 이용하는 것은 C++ 표준에서 더 이상 사용되지 않습니다. 대신 true를 직접 대입해야 합니다.",
  "InefficientEmptyStringCheck.description": "String.trim().length()를 빈 문자열 검사 방식으로 사용하는 경우 이를 검출합니다. 대신 문자열을 순회하면서 각각의 character 별로 Characer.isWhitespace()를 사용할 것을 권장합니다.",
  "InitializerList.description": "멤버 변수가 초기화 목록에서 잘못된 위치에 있습니다. 멤버들은 선언된 순서대로 초기화되어야 합니다.",
  "InnaccurateNumericLiteral.description": "변수에 범위를 초과한 수를 정의한 경우 의도치 않게 변경되어 동작할 수 있습니다.",
  "InsecureCmdLineArgs.description": "커맨드 라인 인자가 너무 긴 경우 버퍼 오버런이 발생할 수 있습니다.",
  "InstantiationToGetClass.description": "PrimarySuffix에 getClass를 찾아서 그 형제 노드에 PrimaryPrefix/AllocationExpression이 있고, PrimarySuffix 가 2개인 경우 이를 검출합니다.",
  "IntegerInstantiation.description": "'new Integer', 'new java.lang.Integer' 등의 allocation 구문을 검출합니다.",
  "InvalidFunctionArg.description": "함수의 n번째 인자가 유효하지 않습니다. 특정 값을 가지고 있지만 해당 값의 범위가 올바르지 않습니다.",
  "InvalidFunctionArgBool.description": "함수의 n번째 인자가 유효하지 않습니다. 부울 형식이 아닌 다른 값이 필요합니다.",
  "InvalidTestForOverflow.description": "오버플로우는 정의되지 않은 행동입니다. 오버플로우를 이용한 검사는 유효하지 않습니다. 조건문 'x + u < x'은 오버플로우가 발생하지 않는 한 항상 거짓입니다.",
  "JUMP_OVER_SCOPE.description": "블록 간 점프 체커는 goto 구문과 대상 레이블이 서로 무관한 블록에 분리되어 있는 경우를 검출합니다.\ngoto 구문은 같은 블록 안에서 사용되거나 블록을 빠져나가는 용도로만 사용해야 합니다.",
  "JspEncoding.description": "meta 태그가 유실되었거나 페이지 내에 인코딩 정보가 명시가 되어있지 않은 경우 이를 검출합니다.",
  "JumbledIncrementer.description": "Loop incrementer들을 섞어서 쓰면 안 됩니다. 보통 이것은 실수에 의해서 만들어지는 것이고, 프로그램이 의도하지 않은 방향으로 수행되도록 문제를 발생시킵니다.",
  "KEYWORD_AS_IDENTIFIER.ABAP.description": "키워드를 변수 이름으로 사용하지 마십시오. ABAP에서는 키워드를 변수 이름으로 사용하는 것을 금지하지는 않지만, 가능하면 피해야 합니다.",
  "KOSCOM.NAMING_CONVENTION.FUNCTION.description": "함수 이름이 명명규칙에 맞지 않습니다. Pascal Casing 이거나 Camel Casing 이어야만 합니다. 예외로 뒷부분에 함수 종류 표기는 허용합니다. (_APS, _BSM 등과 같이 \"_\" + 대문자)",
  "KnownConditionTrueFalse.description": "조건문의 결과가 정해져 있습니다.",
  "LANGUAGE_EXTENSION_SHOULD_NOT_BE_USED.description": "특정 컴파일러 전용 확장 코드 사용 체커는 특정 환경 및 컴파일러에서만 사용할 수 있는 확장 코드를 사용한 경우를 검출합니다.\n최대한 언어의 공통 표준을 지켜서 이식성 높은 소스 코드를 작성합니다.",
  "LEAST_PRIVILEGE_VIOLATION.W32.description": "윈도우 함수 사용 중 최소 권한 위반 체커는 윈도우 함수 CreateProcess*(), RegCreateKey*(), SHRegCreate*(), SHRegOpen*() 등을 사용할 때 권한에 유의 하지 않고 사용하는 경우를 검출합니다.\n윈도우 함수 CreateProcess*(), RegCreateKey*(), SHRegCreate*(), SHRegOpen*() 등의 사용에 유의하십시오. \"CreateProcess\"로 시작하는 윈도우 함수는 실행 경로를 따옴표로 감싸지 않으면 잘못된 바이너리를 실행할 위험성이 있습니다. \"RegCreateKey\"로 시작하는 윈도우 함수는 HKEY_LOCAL_MACHINE 대신 HKEY_CURRENT_USER를 사용해야 합니다. \"SHRegCreate\"로 시작하는 윈도우 함수는 SHREGSET_HKLM 대신 SHREGSET_HKCU를 사용해야 합니다.\n윈도우 함수를 사용할 때 함수 별 유의사항을 지켜 사용합니다.",
  "LEAST_PRIVILEGE_VIOLATION.description": "회수되지 않은 작업 권한 체커는 높은 권한을 부여하여 작업을 수행한 후에 해당 권한을 회수하지 않는 코드를 검출합니다.\n분석 대상 함수 및 함수 사용 순서를 옵션에 지정할 수 있습니다.\n작업을 위해 상승된 권한은 작업을 수행한 후에 회수되어야 합니다.",
  "LEFTOVER_DEBUG_CODE.description": "남겨둔 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "LIBRARY": "라이브러리 단위 소스 코드",
  "LIMIT_OPERATOR_PRECEDENCE.description": "괄호 없는 복합 수식 연산자 체커는 복합 수식에서 우선순위가 다른 연산자를 괄호 없이 사용하는 경우를 검출합니다.\n복합 수식에서 우선순위가 다른 연산자가 있다면 괄호를 사용하도록 합니다.",
  "LOAD_LIBRARY_USING_ABSOLUTE_PATH.description": "프로그램에서 라이브러리를 적재하는 경우, 상대 경로이면 공격자가 라이브러리 위치를 변경하여 악의적인 코드의 실행이 가능하기 때문에 절대경로를 사용하는 것이 좋습니다.",
  "LOG": "로그",
  "LOGGER_ERROR_IN_CATCH.description": "예외 발생 시 logger.error를 이용하여 오류 로그를 남겨야 합니다.",
  "LOGICAL_OP_SHALL_BE_PRIMARY_EXPR.description": "논리 연산자에서 허용되지 않은 피연산자 사용 체커는 논리 연산자의 피연산자로 변수나 상수, 괄호 수식을 제외한 수식을 사용한 경우를 검출합니다.\n논리 연산자의 피연산자로 변수나 상수, 괄호 수식와 같은 기본 수식만을 사용합니다.",
  "LOG_SENSITIVE_INFORMATION.description": "로그에 민감한 정보 기록 체커는 개인 식별 정보 같은 민감한 정보를 로그에 기록하는 코드를 검출합니다.\n민감한 데이터를 로그에 기록하면 개인 정보 보호, 개인 정보 수집에 대한 법률의 제한, 내부자의 데이터 노출에 대한 가능성과 같은 문제가 발생할 수 있습니다.\n로그에 IP 주소, 사용자 이름 및 암호, 전자 메일 주소, 신용 카드 번호 및 사회 보장 번호와 같은 개인 식별 정보를 기록할 경우 해당 라인을 삭제합니다.",
  "LawOfDemeter.description": "Coupling 이 발생할 instance 들의 메소드 사용을 금지합니다. 다른 instance를 생성하지 않고 연관된 instance에서 메소드를 사용할 시 coupling이 발생합니다.",
  "LocalHomeNamingConvention.description": "Session EJB의 Local Home 인터페이스의 이름은 LocalHome으로 끝나야 합니다.",
  "LocalInterfaceSessionNamingConvention.description": "Session EJB의 Local 인터페이스의 이름은 Local로 끝나야 합니다.",
  "LocalVariableCouldBeFinal.description": "할당이 한번만 진행된 변수가 final이 아닌 경우 이를 검출합니다.",
  "LoggerIsNotStaticFinal.description": "정적 final로 선언되지 않은 로거를 검출합니다.",
  "LogicInversion.description": "식에 ! 가 붙었을때 반대의 비교연산을 했을 경우를 검출합니다.",
  "LongInstantiation.description": "'new Long', 'new java.lang.Long' 등의 allocation 구문을 검출합니다.",
  "LongVariable.description": "변수 길이가 정해진 수, $minimum 보다 긴 경우 이를 검출합니다.",
  "LooseCoupling.description": "인터페이스(예: Set)가 아닌 구현 타입(예: HashSet)을 사용하는 경우 이를 검출합니다.",
  "MACRO_IF_EXPRESSION_SHALL_EVAL_TO_BOOLEAN.description": "전처리 구문 조건식의 결과값 제약 위반 체커는 전처리 구문의 #if 와 #elif의 표현식의 결과값이 0 또는 1이 아닌 경우를 검출합니다.\n전처리 구문의 조건식으로는 계산 결과가 정확히 0이나 1로 결정되는 식만 사용합니다.",
  "MAIN_IN_GLOBAL_NAMESPACE.description": "메인 함수가 아닌 함수의 이름을 main으로 사용 체커는 함수 이름을 main으로 사용하였으나 프로그램의 맨 처음에 호출되는 메인 함수가 아닌 일반 함수를 검출합니다.\nmain 이라는 이름을 가진 함수는 전역 네임스페이스가 아닌 다른 네임스페이스에도 정의할 수 있습니다.\nmain 식별자를 사용하여 함수를 정의하는 것은 반드시 전역 네임스페이스에서 하나의 함수에만 사용하도록 합니다. 이 함수는 프로그램의 진입접이 되는 메인 함수입니다.",
  "MAKE_BINARY_OPERATORS_NONMEMBERS.description": "멤버 산술 연산자의 오버로딩 체커는 산술 연산을 오버로딩한 메소드 정의를 검출합니다.\nC++에서는 산술 연산도 오버로딩을 지원합니다. 이러한 오버로딩은 클래스의 메소드로 오버로딩하는 방법과 일반 함수로 오버로딩 두가지가 존재합니다.\n만약 산술 연산을 사용할 필요가 있는 클래스인 경우 이항 연산자를 메소드로 구현하지 않습니다. 대신 좌측 피연산자의 암시적 변환을 허용하는 일반적인 이항 연산자 함수를 구현해야 합니다. 이 방법을 사용할 경우 정수나 실수 값이 산술 연산을 필요로 하는 클래스 타입으로 암시적으로 캐스팅됩니다. 암시적으로 캐스팅된 결과는 일반 이항 연산자 함수에서 위치의 제약 없이 사용할 수 있습니다.",
  "MAKE_MEMBER_DATA_PRIVATE.description": "멤버 변수를 private 접근 권한으로 만듭니다. 멤버 변수를 직접 조작할 수 있게 하는것은 객체지향 관점 중 캡슐화를 위배하게 됩니다.",
  "MAKE_PREDICATES_PURE_FUNCTIONS.description": "인자에 의존하지 않는 조건자 체커는 반환 결과가 인자에 의존하지 않는 조건자 선언을 검출합니다.\n조건자는 STL에 속한 알고리즘 함수들의 술어부에 쓰이는 특별한 클래스 타입입니다. 일반적으로 클래스의 선언과 함께 operator()() 메소드를 구현한 형태로 이루어져 있습니다.\n조건자 반환 결과가 인자에만 의존하도록 구현합니다.",
  "MALICIOUS.CODE.PATTERN.description": "공격자가 직접 입력한 악성 코드 패턴을 검출합니다.",
  "MALICIOUS.URL.description": "악성 URL 코드를 검출합니다.",
  "MAX_LINE_LENGTH.description": "최대 줄길이 제한 체커는 규정된 소스 라인의 최대 길이를 넘긴 경우를 검출합니다.\n너무 긴 줄을 적절한 위치에서 줄 바꿈하여 한 화면에 보기 좋게 만들어 줍니다.",
  "MAY_OVERFLOW_WRAP.RUST.description": "산술 연산이 오버플로우를 발생시킬 가능성이 있을 때 특수화된 함수나 타입을 사용해야 합니다. 산술 연산 중 오버플로우가 발생하면 예기치 않은 결과를 초래할 수 있으며 이는 종종 보안 취약점으로 이어질 수 있습니다. 따라서, 오버플로우 가능성이 있는 산술 연산에서는 이를 적절히 처리해야 합니다.",
  "MDBAndSessionBeanNamingConvention.description": "EJB 사양에서는 MessageDriveBean이나 SessionBean의 경우 'Bean'으로 끝나는 이름을 사용하도록 명시하고 있다.",
  "MEMBER_FUNCTION_SHOULD_NOT_RETURN_NON_CONST_HANDLER.description": "non-const 핸들러를 클래스 데이터로 반환 금지 체커는 멤버 함수가 non-const 핸들러를 클래스 데이터로 반환한 경우를 검출합니다.\n멤버 함수에서 클래스 데이터를 반환하지 않도록 합니다.",
  "MEMCPY_WITH_OVERLAPPING_REGIONS.description": "메모리 영역이 겹치는 인자 체커는 함수에 겹치는 메모리 영역을 가리키는 다수의 인자를 전달하는 코드를 검출합니다.\n대상 함수는 다음과 같습니다. memccpy(), memcpy(), strcpy(), strncpy().\nrestrict 포인터가 참조하는 소스 객체에서 대상 객체로 메모리를 복사하는 C 표준 라이브러리 함수를 사용할 때 다수의 인자에 겹치는 메모리 영역을 전달 받지 않아야 합니다.",
  "MESSAGE": "메시지",
  "METHOD_COMMENT.description": "메소드 주석의 형식 체커는 형식에 어긋난 메소드 주석을 검출합니다.\n세부적인 주석 형식은 옵션으로 조정할 수 있습니다.\n사전에 정의된 형식에 맞게 패키지 주석을 작성합니다.",
  "METHOD_IGNORES_RETURN_VALUE.description": "누락된 문자열 메소드 반환 값 사용 체커는 지정된 문자열 변환 메소드가 반환하는 값을 무시하는 호출을 검출합니다.\n문자열 클래스의 trim(), toLowerCase(), substring(), toString(), toUpperCase() 메소드가 검출 대상입니다.\n메소드 호출식이 의도대로 사용되고 있는지 점검합니다. 불필요한 식이 편집 과정에서 삭제되지 않고 남아 있는 경우거나, 반환 값으로 더 해야 할 일을 하지 않았거나, 문자열 객체 자체가 변하지 않고 새 객체가 생긴다는 사실을 모르고 작성한 코드일 가능성이 있습니다.",
  "METHOD_NAME_IS_NOT_INTENDED.description": "의심스러운 메소드 이름 체커는 이름을 실수로 잘못 쓴 것으로 보이는 메소드 정의를 검출합니다.\n이름이 equal(), tostring(), hashcode()인 메소드는 equals(), toString(), hashCode() 메소드를 오버라이딩하려다 실수로 잘못 썼을 가능성이 높습니다.\n실수로 이름을 잘못 쓴 것이라면 원래의 의도대로 Object 클래스로부터 상속받은 메소드 이름으로 정정합니다. 실수를 방지하고자 한다면 @Override 라는 annotation을 메소드 선언 앞에 사용하는 방법이 있습니다. 실수했을 때 컴파일러가 컴파일 타임 오류를 발생시켜줄 것입니다. 만약 의도적으로 지은 이름이라 해도 추후 본인 혹은 다른 개발자의 혼란을 일으킬 수 있으므로 명확히 다른 이름으로 바꾸는 것이 좋습니다.",
  "MINIMAL_SCOPE.description": "변수의 최소 유효범위 체커는 변수가 특정 파일(또는 함수)에서만 사용되는 경우 그 해당 파일(또는 함수)에 대해서 정적으로 선언되지 않은 경우를 검출합니다.\n구체적으로는 다음과 같은 경우를 검출합니다. 파일 내에서 선언된 전역 변수를 하나의 함수에서만 사용했습니다. extern 식별자로 선언한 전역 변수를 하나의 파일에서만 사용했습니다..\n전역 변수를 지역 변수로 변경하여 알맞은 범위 내에서 변수가 사용되도록 합니다.",
  "MINIMISE_MIXING_OF_ITERATOR.description": "반복자 타입을 혼합하여 사용 체커는 반복자 타입을 혼합해서 사용한 선언을 검출합니다.\n반복자는 C++의 컨테이너에 속한 각각의 요소들을 순회할 때 사용하는 특별한 객체입니다. 반복자의 종류에는 iterator, const_iterator, reverse_iterator, const_reverse_iterator가 있습니다.\n반복자는 일반적인 iterator만을 사용하는 것을 권장합니다.",
  "MINIMISE_USE_AUTOPTR.description": "auto_ptr의 잘못된 사용 체커는 몇가지 상황을 충족 했을 경우 auto_ptr로 선언한 변수를 검출합니다.\nauto_ptr은 C++ 표준에 속한 스마트 포인터의 한 종류입니다. 이 체커는 구체적으로 다음 상황을 검출 합니다. auto_ptr을 배열 타입에 사용했습니다. 동적 할당되지 않은 객체를 auto_ptr로 감쌌습니다. auto_ptr 객체를 값에 의한 전달로 사용했습니다. auto_ptr 객체를 다른 auto_ptr 객체로 대입했습니다.\nauto_ptr을 꼭 사용할 경우에는 충분히 주의하여 사용하도록 합니다. 개발 환경이 C++11 이상을 지원하는 컴파일러의 경우 auto_ptr 자체를 사용하지 않는 것이 좋습니다.",
  "MINIMIZE_VARIABLE_LIVE_RANGE.description": "너무 넓은 변수 활성 범위 체커는 지역 변수를 사용 직전보다 이르게 선언하여 오랫동안 범위에 살아있게 되는 경우를 검출합니다.\n지역 변수를 최대한 사용 직전에 선언하여 활성 범위(live range)를 최소화합니다.",
  "MIPLATFORM_FORM_DATASET_ID_PREFIX.KEUMKAMWON.description": "금융감독원 규칙에서는 MIPLATFORM의 Form Dataset ID prefix가 \"ds_\" 이어야 합니다.",
  "MIPLATFORM_GLOBAL_DATASET_ID_PREFIX.KEUMKAMWON.description": "금융감독원 규칙에서는 MIPLATFORM의 Global Dataset ID prefix가 \"USD_\" 이어야 합니다.",
  "MIPLATFORM_GLOBAL_VAR_ID_PREFIX.KEUMKAMWON.description": "금융감독원 규칙에서는 MIPLATFORM의 Global 변수 ID prefix가 \"U_\" 이어야 합니다.",
  "MISMATCH.COLUMN_VALUE.INSERT.SQL.description": "일치하지 않는 컬럼 입력 갯수 체커는 테이블 컬럼의 수와 입력의 수가 일치하지 않는 INSERT 구문을 검출합니다.\n컬럼의 수와 입력의 수를 일치시켜야 합니다. 빈 값을 의도한 경우 널을 대신 사용합니다.",
  "MISMATCH.MALLOC_TO_DELETE.description": "동적 메모리 할당 함수로 할당된 메모리를 delete로 해제 시도 체커는 malloc() 과 같은 함수로 할당된 메모리 영역을 delete로 해제하려고 시도하는 코드를 검출합니다.\n동적 메모리 할당 함수로 할당된 메모리는 free() 함수로 해제합니다.",
  "MISMATCH.MALLOC_TO_DELETE_ARRAY.description": "동적 메모리 할당 함수로 할당된 메모리를 delete[]로 해제 시도 체커는 malloc 같은 함수로 할당된 메모리 영역을 delete[]로 해제하려고 시도하는 코드를 검출합니다.\n동적 메모리 할당 함수로 할당된 메모리는 free() 함수로 해제합니다.",
  "MISMATCH.NEW_ARRAY_TO_DELETE.description": "new[]로 할당된 메모리를 delete로 해제 시도 체커는 new[] 연산자로 할당된 메모리 영역을 delete로 해제하려고 시도하는 코드를 검출합니다.\nnew[]로 할당된 메모리 영역을 delete[]로 해제합니다.",
  "MISMATCH.NEW_ARRAY_TO_FREE.description": "new[]로 할당된 메모리를 free로 해제 시도 체커는 new[] 연산자로 할당된 메모리 영역을 free()로 해제하려고 시도하는 코드를 검출합니다.\nnew[]로 할당된 메모리 영역을 delete[]로 해제합니다.",
  "MISMATCH.NEW_TO_DELETE_ARRAY.description": "new로 할당된 메모리를 delete[]로 해제 시도 체커는 new 연산자로 할당된 메모리 영역을 delete[]로 해제하려고 시도하는 코드를 검출합니다.\nnew로 할당된 메모리는 delete로 해제합니다.",
  "MISMATCH.NEW_TO_FREE.description": "new로 할당된 메모리를 free로 해제 시도 체커는 new 연산자로 할당된 메모리 영역을 free로 해제하려고 시도하는 코드를 검출합니다.\nnew로 할당된 메모리는 delete로 해제합니다.",
  "MISMATCH.RESOURCE.description": "리소스 할당 및 해제 함수의 불일치 체커는 리소스의 할당과 해제가 서로 일치하는 함수로 처리하지 않은 경우를 검출합니다.\n여기서 리소스는 파일과 핸들, 소켓 등을 의미합니다.\n리소스 할당 및 해제 시 대상 리소스 타입에 맞는 함수를 사용하도록 합니다. 구체적으로는 다음과 같은 할당 및 해제 함수를 사용합니다. 파일 리소스는 fopen() 함수로 할당하고 fclose() 함수로 해제하도록 합니다. 핸들 리소스는 CreateFile() 함수로 할당하고 CloseHandle() 함수로 해제하도록 합니다. 소켓 리소스는 open() 함수로 할당하고 close() 함수로 해제하도록 합니다.",
  "MISMATCH.WINAPI.description": "메모리 할당을 하는 Windows API를 사용할 때 할당과 해제의 짝이 맞지 않는 경우에 발생하는 오류입니다.",
  "MISMATCH_RETURN_TYPE.description": "반환 타입과 값의 불일치 체커는 함수 선언 반환 타입과 실제 반환하는 값의 타입이 다른 수식을 검출합니다.\n반환하는 값의 타입을 반환 타입에 맞추어 캐스팅하거나 반환하는 값 자체를 반환 타입에 맞추어 조정하도록 합니다.",
  "MISMATCH_STORAGE_CLASS.description": "스토리지 클래스 불일치 체커는 동일한 함수나 객체가 외부 링크와 정적 링크 두가지를 동시에 가진 경우를 검출합니다.\n동일한 함수나 객체는 동일한 스토리지 클래스를 가지도록 코드를 작성합니다.",
  "MISSING.ALIAS.TABLE.SQL.description": "테이블 명에 alias 가 생략되어 있는 경우를 검출합니다.",
  "MISSING.ASC_DESC.ORDER_BY.SQL.description": "ORDER BY 절에서 ASC/DESC를 명기하지 않은 경우를 검출합니다. ASC 또는 DESC를 명기하는 것을 권장합니다.",
  "MISSING.COLUMN.INSERT.SQL.description": "INSERT 쿼리문에서 테이블의 컬럼이 명기되어 있지 않은 경우를 검출합니다. 컬럼을 모두 명기하는 것을 권장합니다.",
  "MISSING.COMMENT.BINDING_VARIABLE.SQL.description": "바인딩 변수에 대한 주석이 존재하지 않습니다.",
  "MISSING.COMMENT.COLUMN_IN_SELECT.SQL.description": "누락된 조회 컬럼 주석 체커는 조회 컬럼 뒤 주석이 누락된 SELECT 구문을 검출합니다.\nSELECT 구문 안 조회 컬럼 뒤에 컬럼을 설명하는 주석을 추가합니다.",
  "MISSING.DESIGNATED_INIT.description": "지정 초기화 리스트에서 일부 항목 누락 체커는 지정 초기화 리스트에서 초기값이 주어지지 않은 일부 요소가 존재하는 경우를 검출합니다.\n지정 초기화 리스트에서 모든 요소가 초기화되도록 수정합니다.",
  "MISSING.FUNCTION_DECLARATION.description": "선언 없는 함수 호출 체커는 함께 컴파일 되는 모든 소스 안에서 선언을 찾을 수 없는 이름의 함수가 호출된 경우를 검출합니다.\n함수의 선언을 깜빡 했거나 호출할 함수 이름을 잘못 작성하지 않았는지 확인하고 수정합니다.",
  "MISSING.INDEX_HINT.SQL.description": "SELECT, INSERT 또는 DELETE 쿼리문에서 인덱스 HINT를 사용하지 않은 경우를 검출합니다. 인덱스 HINT를 포함시키는 것을 권장합니다.",
  "MISSING.ORDER_BY.SELECT.ABAP.description": "SELECT 구문에서 누락된 ORDER BY 절 체커는 ORDER BY 절 없이 사용된 SELECT 구문을 검출합니다.\nSELECT 구문을 ORDER BY 절과 함께 사용합니다.",
  "MISSING.SORT_KEY.ABAP.description": "누락된 SORT 키 체커는 정렬에 사용될 필드를 명시하지 않는 SORT 구문을 검출합니다.\n정렬할 때 사용할 필드를 명시합니다.",
  "MISSING.TABLE_ALIAS.JOIN.SQL.description": "테이블을 JOIN하는 경우 FROM 절에 지정된 테이블에 ALIAS가 명기되어 있지 않는 경우를 검출합니다. 테이블 ALIAS를 명기하는 것을 권장합니다.",
  "MISSING.WHERE.DELETE.ABAP.description": "DELETE 구문에서 누락된 WHERE 절 체커는 WHERE 절이 없는 DELETE 구문을 검출합니다.\nDELETE 구문을 사용할 때 WHERE 절을 명시합니다.",
  "MISSING.WHERE.DELETE_UPDATE.SQL.description": "DELETE 또는 UPDATE 구문에서 누락된 WHERE 절 체커는 WHERE 절을 포함하지 않은 DELETE 또는 UPDATE 구문을 검출합니다.\n특정 조건에 해당하는 레코드를 삭제 또는 갱신하도록 WHERE 절 추가를 권장합니다.",
  "MISSING.WHERE.SELECT.ABAP.description": "SELECT 구문에서 누락된 WHERE 절 체커는 WHERE 절 없이 사용된 SELECT 구문을 검출합니다.\nSELECT 구문을 WHERE 절과 함께 사용합니다.",
  "MISSING.WHERE.SELECT.SQL.description": "SELECT 구문에서 누락된 WHERE 절 체커는 WHERE 절이 존재하지 않는 SELECT 구문을 검출합니다.\n특정 조건에 해당하는 컬럼을 조회하도록 WHERE 절 추가를 권장합니다.",
  "MISSING.WHERE.UPDATE.ABAP.description": "UPDATE 구문에서 누락된 WHERE 절 체커는 WHERE 절이 누락된 UPDATE 구문을 검출합니다.\nWHERE 절을 추가하여 모든 레코드 값이 갱신되는 것을 방지합니다.",
  "MISSING_AUTHENTICATION_CONTROL.description": "인증 제어 누락 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.\n호출이 필요한 인증 제어 루틴의 이름과 제어 루틴을 호출해야 하는 함수의 이름은 옵션으로 입력할 수 있습니다.\n반드시 인증 제어 루틴을 적절한 위치에서 호출해야 합니다.",
  "MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.description": "중요 기능에 대한 인증 제어 누락 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.\n검사할 중요 기능과 필요한 인증 제어 방식을 옵션으로 지정할 수 있습니다.\n중요 기능에 접근하기 전 인증 과정을 거칩니다.",
  "MISSING_BLANK_LINE.IMPORT.description": "import 구문 사이 줄 바꿈 규칙 위반 체커는 서로 다른 성격의 import 구문 사이에 빈 줄이 없는 경우를 검출합니다.\n서로 비슷한 연속적인 import 그룹 안에서는 줄을 붙여서 쓰고, 서로 구분되는 그룹간에는 빈 줄을 넣어줍니다.",
  "MISSING_BLANK_LINE.SECTION.description": "메소드 안에서 구역 별 빈 줄 규칙 위반 체커는 메소드 안에서 섹션 별로 적절한 빈 줄이 삽입되지 않은 경우를 검출합니다.\n가독성을 높이기 위해서 섹션 사이에 빈 줄을 삽입합니다.",
  "MISSING_BLANK_LINE.description": "빈 줄 누락 체커는 빈 줄을 집어넣도록 약속되어 있는 곳에 적절한 빈 줄이 들어가있지 않은 곳을 검출합니다.\n코드 단위 별 공백이 존재하지 않을 경우를 검출합니다. 코드 단위 별 공백의 정의는 다음과 같습니다. 1. 클래스, 인터페이스 : 2줄 공백 2. 패키지, import 선언 이 후 : 1줄 공백 3. 메소드와 메소드 사이 : 1줄 공백 4. 메소드 내부의 변수 선언 후 : 1줄 공백\n정해진 규칙에 맞게 빈 줄을 삽입합니다.",
  "MISSING_BLANK_LINE_BEFORE_COMMENT.description": "주석 시작 전 누락된 빈 줄 체커는 주석이 시작하기 전 소스 코드와 주석 사이에 빈 줄이 없는 경우를 검출합니다.\n주석이 시작하기 전 소스 코드와 주석 사이에 빈 줄을 삽입해야 합니다.",
  "MISSING_BLOCK_IN_CONTROL_STATEMENT.description": "복합 구문에서 중괄호 누락 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\n중괄호를 필수적으로 사용해야 하는 복합 구문의 종류를 옵션으로 지정할 수 있습니다.\n지정된 복합 구문에서 한 줄짜리 코드라 해도 규정에 맞게 항상 중괄호를 사용합니다.",
  "MISSING_BRACE_IN_IF_STATEMENT.description": "if 구문 중괄호 누락 체커는 if 구문의 각 분기별 코드를 중괄호 없이 작성한 경우를 검출합니다.\n각 분기별 코드가 한 줄 구문이라 해도 일관성을 위해 항상 중괄호로 감싸줍니다.",
  "MISSING_BREAK_IN_CASE.MISRA2008.description": "case 문에서 break 구문 누락(Misra2008) 체커는 break 구문으로 끝나지 않는 case 문을 검출합니다.\nbreak 대신에 return, continue, goto 문을 사용하는 것도 허용됩니다. default 문도 break를 사용해야 합니다.\ncase 문에는 break, return, continue, goto 문 중 하나가 포함되어야 합니다. default 문도 break를 사용해야 합니다.",
  "MISSING_BREAK_IN_CASE.description": "case 문에서 break 구문 누락 체커는 break 구문으로 끝나지 않는 case 문을 검출합니다.\nbreak 대신에 return, continue, goto 문을 사용하는 것도 허용됩니다.\ncase 문에는 break, return, continue, goto 문 중 하나가 포함되어야 합니다.",
  "MISSING_BREAK_OR_THROW_IN_CASE.description": "case문 종료 누락 체커는 switch-case 문에서 내용이 있는 case문이 throw 또는 break 문으로 종료되지 않은 경우를 검출합니다.\nswitch-case문의 마지막 case문과 default문은 항상 break 혹은 throw로 종료되어야 합니다.",
  "MISSING_CHECK_OF_INPUT.description": "입력 검사 누락 체커는 입력으로 지정된 변수를 if 등의 조건문으로 검사를 수행하지 않고 사용하는 경우를 검출합니다.\n옵션을 통해 입력에 해당하는 변수 이름을 지정할 수 있습니다.\n외부 입력은 항상 검증 및 필터를 거친 후 사용합니다.",
  "MISSING_CLASS_IN_SOURCE_FILE.description": "public 클래스 혹은 인터페이스 선언이 없는 파일 체커는 소스 파일내에 올바른 이름의 public 클래스 혹은 인터페이스가 존재하지 않는 경우를 검출합니다.\npublic이 아닌 클래스 혹은 인터페이스는 반드시 public 클래스 혹은 인터페이스 내부에 선언되어야 합니다. 또한 가장 바깥에 위치한 public 클래스의 이름은 파일 이름과 일치해야 합니다.",
  "MISSING_COMPOUND_STATEMENT.description": "복합 구문에서 중괄호 누락 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\n복합 구문 사용 시 구문 한 개로 이루어진 한 줄 짜리 코드라도 일관성을 위해 항상 중괄호로 감싸줍니다.",
  "MISSING_CUSTOM_ERROR_PAGE.WEB.CONFIG.description": "기본 오류 페이지 사용 체커는 오류가 발생했을 때 사용하는 오류 페이지가 기본 오류 페이지인 경우를 검출합니다.\n기본 오류 페이지 대신 상황에 맞게 커스텀된 오류 페이지를 사용하도록 합니다. 이와 같은 방법으로 커스텀 오류 페이지 모드를 RemoteOnly로 설정하거나 직접 오류 페이지를 지정하도록 합니다.",
  "MISSING_DEBUG_CHECK.description": "디버깅 모드 확인 누락 체커는 디버깅 함수를 호출하기 전에 디버깅 모드인지를 확인하지 않는 코드를 검출합니다.\n옵션에서 디버깅 함수 목록, 디버깅 함수 사용 확인 함수를 설정할 수 있습니다.\n디버깅 함수를 사용하기 전에 해당 함수가 디버깅 모드인지를 확인하는 함수를 호출해야 합니다.",
  "MISSING_DEFAULT_IN_SWITCH.description": "Switch 문에서 Default 미사용 체커는 Switch 문에서 Default를 사용하지 않는 코드를 검출합니다.\nSwitch 문에서 Default를 사용하지 않으면 예상하지 못한 동작을 대비할 수 없습니다. \nSwitch 문에서 Default를 사용해야 합니다.",
  "MISSING_EXPLICIT_TYPE.description": "함수 선언 시 명시적으로 반환 타입을 적어야 합니다.",
  "MISSING_FILTER_DEFINITION.CONFIG.description": "존재하지 않는 필터 사용 체커는 존재하지 않는 필터를 가리키는 필터 매핑을 검출합니다.\n필터 매핑을 할 경우 존재하는 필터만을 사용하도록 합니다.",
  "MISSING_FINALLY_IN_TRY_CATCH.description": "finally 블록 누락 체커는 try 구문에 finally 블록이 없는 경우를 검출합니다.\n모든 try 구문에 항상 finally 블록을 덧붙입니다.",
  "MISSING_FUNCTION_DEFINITION_PARAMETER.description": "함수 정의에 인자의 타입 정보가 누락된 경우를 검출합니다.",
  "MISSING_FUNCTION_RETURN_TYPE.description": "함수의 반환 타입 정의 누락 체커는 함수의 반환 타입을 정의하지 않는 코드를 검출합니다.\n함수를 정의할 때 반환 타입을 누락하지 않도록 합니다.",
  "MISSING_INPUT_VALIDATION.description": "입력 검증이 필요합니다.",
  "MISSING_INTEGRITY_CHECK.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "MISSING_LOGIN_CONTROL.description": "로그인 시도 횟수 제한 누락 체커는 로그인 시도 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n이 때 로그인 루틴의 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 로그인 루틴이 호출되기 전 로그인 시도를 반복문에서 제어합니다. 다만 조건문이 언제나 참인 경우 로그인 시도를 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 비교 연산자를 사용하고 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "MISSING_MESSAGE_ID_WHEN_GENERATING_MAC.description": "MAC 생성 시 누락된 메시지 식별 값 체커는 MAC을 생성할 때 메시지 식별 값을 포함시키지 않아 공격자가 인증 값을 재사용할 수 있는 경우를 검출합니다.\nMAC 태그는 메시지의 인증과 무결성을 보장하기 위해 메시지 값과 비밀 키를 사용하여 생성됩니다. 만약 공격자가 해당 메시지와 MAC 값을 중간에 가로채 그대로 전송하게 된다면 정상 개체처럼 인증을 우회할 수 있게 됩니다. 이러한 재사용 공격을 막기 위해서는 동일한 메시지라도 다른 MAC 값이 생성될 수 있도록 메시지를 식별할 수 있는 값이 메시지와 함께 포함되어 MAC을 생성해야 합니다.\nMAC을 생성할 때 기본 텍스트에 타임스탬프나 랜덤 값 등을 포함합니다. 이 방법을 사용하여 동일한 메시지에 대해 매번 다른 MAC을 생성할 수 있습니다.",
  "MISSING_NORMALIZATION_BEFORE_VALIDATION.description": "유효성 검사 전 정규화 누락 체커는 경로에 대해 유효성을 검증하기 전에 파일 이름을 정규화하지 않은 코드를 검출합니다.\n경로에 대해 유효성을 검증하기 전에 파일 이름을 정규화합니다.",
  "MISSING_PACKAGE_DECLARATION.description": "패키지 선언 누락 체커는 소스 파일 맨 위에 패키지 선언이 없는 경우를 검출합니다.\n모든 소스 파일에 소속 패키지를 명시적으로 선언합니다.",
  "MISSING_PARENTHESIS_IN_EXPRESSION.description": "괄호 없이 복잡한 식 체커는 연산이 지정한 크기보다 클 때 괄호를 통해 우선순위를 정해주지 않은 경우를 검출합니다.\n복잡한 수식을 사용할 때 혼란을 피하기 위해 괄호로 우선순위를 명시해줍니다.",
  "MISSING_REQUIRE_CRYPTO_STEP.description": "암호화에 필요한 함수 호출 누락 체커는 암호화에 필요한 함수들의 호출이 누락된 경우를 검출합니다.\n이 규칙에서 암호화에 필요한 함수들은 다음과 같습니다. 또한 이 함수들을 정해진 순서대로 호출해야 합니다. CryptAcquireContext(); CryptCreatehash(); CryptHasData();\n암호화에 필요한 함수들을 누락하지 않고 전부 호출하도록 합니다.",
  "MISSING_RETURN.description": "반환 구문 누락 체커는 반환 타입이 void가 아닌 함수 중 반환 구문이 포함되지 않는 함수를 검출합니다.\n반환 타입이 void가 아닌 함수에는 반환 구문이 포함되어야 합니다.",
  "MISSING_SYNCHRONIZED_FOR_OVERRIDING.description": "Synchronized 메소드를 오버라이딩 할 때 synchronized 제어자를 사용하지 않을 경우를 검출합니다.",
  "MISSING_VALIDATION_OF_ARRAY_INDEX.description": "배열의 인덱스로 사용된 매개변수의 유효성 검증 누락 체커는 매개변수를 배열의 인덱스로 사용할 때 해당 인덱스에 대한 유효성을 검증하지 않은 코드를 검출합니다.\n매개변수를 배열의 인덱스로 사용하기 전에 인덱스의 유효성 검증을 수행해야 합니다.",
  "MISSING_WRAPPER_ON_VARIABLE.description": "함수 호출 시 명시된 함수가 아닌 인자 사용 체커는 옵션에 지정된 함수에서 특정 인자 위치에 지정된 자료형 함수가 아닌 값을 인자로 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 함수 인자 위치와 함수 이름을 설정할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 지정된 함수를 사용해야 합니다.",
  "MISSING_XML_VALIDATION_CSHARP.description": "XML 검증 누락 체커는 외부로부터 생성된 XML 문서를 검증 없이 사용하는 경우를 검출합니다.\n외부로부터 생성된 XML 문서를 검증하고 사용합니다.",
  "MISUSE_OF_TRY_CATCH.description": "잘못 사용한 예외 던짐 체커는 조건문 내에서 사용한 throw 구문을 검출합니다.\n조건문 내에서 throw 구문을 사용하지 않도록 합니다.",
  "MODIFICATION_CONTROL_VAR_IN_LOOP.description": "for 구문의 본문에서 루프 카운터 변경 체커는 for 구문의 증감부가 아닌 본문에서 루프 카운터를 변경하는 수식을 검출합니다.\nfor 구문의 본문에서는 루프 카운터의 증감 연산을 수행하지 않도록 합니다. 루프 카운터는 오로지 증감부에서 변경되어야 합니다.",
  "MODULE": "모듈 단위 소스 코드",
  "MULTIPLE_ALLOC_IN_SINGLE_STMT.description": "한 문장에 두 번 이상 메모리 할당을 하지 말아야 합니다.",
  "MULTIPLE_BINDS_TO_SAME_PORT.description": "동일 포트에 다수의 서비스 사용 체커는 여러 개의 서비스에서 하나의 포트를 사용하는 코드를 검출합니다.\n여러 서비스가 동일한 포트를 사용하지 않도록 합니다.",
  "MULTIPLE_BINDS_TO_THE_SAME_PORT.description": "동일 포트에 여러 개의 바인딩 체커는 하나의 포트를 여러 개의 서비스에 사용하는 경우를 검출합니다.\n포트 재사용 옵션을 해제합니다.",
  "MULTIPLE_DECLARATION_IN_NAMESPACE.description": "같은 네임스페이스에서의 함수 오버로딩 체커는 동일한 네임스페이스 내에서 오버로딩한 함수 선언을 검출합니다.\n이 문제는 특히 함수 오버로딩이 후속 네임스페이스에서 이루어졌을 때 발생합니다.\n함수를 동일한 네임스페이스에서 오버로딩하지 않도록 합니다.",
  "MULTIPLE_ENV_WITH_SAME_NAME.description": "대소문자 구분 없이 동일한 환경 변수 이름 체커는 대소문자 구분이 없으면 동일한 이름으로 식별되는 환경 변수를 사용하는 수식을 검출합니다.\n여기서 환경 변수 이름은 getenv() 함수나 putenv() 함수로 전달되는 문자열을 의미합니다.\n이식성을 보장하기 위해서 대소문자 구분이 없더라도 다른 이름으로 식별되도록 환경 변수 이름을 설정하도록 합니다.",
  "MULTIPLE_FILE_ATTRIBUTES.description": "불확실한 파일 식별 체커는 한가지 방법으로만 파일을 식별하는 경우를 검출합니다.\n파일을 식별하기 위해 파일 이름, 생성 시간, 소유자 등 여러 가지 파일 속성을 확인합니다.\n파일 속성을 확인하여 해당 파일을 식별한 후에 열도록 합니다.",
  "MULTIPLE_SIGNAL_TO_SAME_HANDLER.description": "하나의 시그널 핸들러에 여러 시그널 연결 체커는 하나의 시그널 핸들러에 여러 시그널이 연결된 경우를 검출합니다.\n하나의 시그널 핸들러에는 하나의 시그널만 연결해야 합니다.",
  "MUST_CATCH_ALL_EXCEPTION_IN_DTOR.description": "소멸자에서 처리 불가능한 예외 발생 체커는 소멸자 내부에서 처리할 수 없는 예외가 발생하는 수식을 검출합니다.\n소멸자에서 처리할 수 없는 예외를 발생시키는 수식을 사용하지 않습니다. 또는 발생하는 모든 예외를 처리할 수 있도록 적절한 예외 처리 구문을 추가합니다.",
  "MUST_CATCH_ALL_EXCEPTION_IN_MAIN.description": "메인 함수에서 처리 불가능한 예외 발생 체커는 메인 함수 내부에서 처리할 수 없는 예외가 발생하는 수식을 검출합니다.\n메인 함수에서 처리할 수 없는 예외를 발생시키는 수식을 사용하지 않습니다. 또는 발생하는 모든 예외를 처리할 수 있도록 적절한 예외 처리 구문을 추가합니다.",
  "MUST_HAVE_AN_IDENTIFIER.description": "식별자를 가지지 않은 매개 변수 체커는 식별자를 가지지 않은 매개 변수가 있는 함수 프로토타입 선언을 검출합니다.\n함수 프로토타입 선언 시 모든 매개 변수가 식별자를 가지도록 작성합니다.",
  "MUST_NOT_BE_MUTATE_SRC_OBJ.description": "복사 연산자 내에서 원본 객체 수정 체커는 복사 생성자 혹은 복사 할당 연산자 내에서 인자로 받은 원본 객체의 멤버 변수 값이 변경되는 경우를 검출합니다.\n복사 연산(복사 생성자 및 복사 대입 연산자)은 소스 객체의 주요 속성을 대상 객체에 복사하고 그 결과 객체는 원본의 사본이 됩니다. 복사 연산자를 구현할 때는 원본 객체의 변수 정보를 변경해서는 안됩니다.\n복사 연산자 내에서 원본 객체를 수정하지 않도록 합니다.",
  "MUTABLE_EQUALS.description": "equals 내에서 변할 수 있는 필드 사용 체커는 객체를 비교하는 메소드를 실행할 때 변경 가능한 필드를 사용하는 코드를 검출합니다.\n일부 필드가 변경 가능(mutable)한 경우에도 java.lang.Object.equals()는 변경 불가능(immutable) 상태에서만 객체를 비교해야 합니다. 이 규칙을 위반하면 콜렉션에서 순서가 일치하지 않을 수 있습니다.\nequals() 내에서 final 필드를 사용해야 합니다.",
  "MUTABLE_HASHCODE.description": "hashCode 내에서 변할 수 있는 필드 사용 체커는 Object.hashCode() 메소드를 오버라이딩 정의할 때 변경될 수 있는 필드들이 사용된 경우를 검출합니다.\nObject.hashCode() 메소드를 오버라이딩하는 메소드가 final 이 아닌 필드 값을 읽을 때 경고를 냅니다. 예외적으로 final이 아닌 필드라 해도 초기화된 이후에 한 번도 값이 변하지 않았다면 final 필드로 간주할 수 있습니다.\nhashCode() 메소드를 구현할 때는 객체 생성 이후로 변하지 않을 값만 사용해서 해시값을 계산해야 합니다.",
  "MUTUALLY_VISIBLE_ID_SHOULD_BE_UNIQUE.description": "앞부분이 동일한 식별자 체커는 범위를 공유하는 식별자가 일정한 수의 앞글자만을 고려했을 때 유일하게 정의되지 않은 경우를 검출합니다.\n코드의 이식성을 보장하기 위해 식별자를 처음 31글자에서 구별해야 합니다.\n상호 참조 가능한 영역에 있는 모든 식별자를 앞부분 31글자 안에서 구별하도록 코드를 작성합니다.",
  "MallocOnClassError.description": "string을 포함하는 클래스의 인스턴스를 malloc()으로 할당합니다. 생성자가 호출되면 클래스 멤버가 초기화되지 않기 때문에 안전하지 않습니다. 'new'를 대신 사용하는 것을 고려하십시오.",
  "MallocOnClassWarning.description": "생성자가 있는 클래스의 인스턴스를 malloc()으로 할당합니다. 생성자가 호출되면 클래스 멤버가 초기화되지 않기 때문에 안전하지 않습니다. 'new'를 대신 사용하는 것을 고려하십시오.",
  "MemsetClass.description": "생성자 또는 소멸자를 포함하는 클래스에 memfunc을 사용하는 것은 생성자와 소멸자 등의 호출이 생략되기 때문에 안전하지 않습니다. 해당 클래스가 non-POD 객체인지 확인할 필요가 있습니다.",
  "MemsetClassFloat.description": "실수형 포인터를 포함하는 클래스에 memset()을 사용했습니다. 실수형은 값의 표기 방식이 달라 memset()과 호환되지 않습니다.",
  "MemsetClassReference.description": "레퍼런스를 포함하는 클래스에 memfunc을 사용했습니다.",
  "MemsetFloat.description": "memset의 두 번째 파라미터가 실수형입니다. 실수 자료형의 표현은 구현에 따라 다르기 때문에 memset과 호환되지 않습니다.",
  "MemsetValueOutOfRange.description": "memset의 두번 째 인자가 'unsigned char'형과 호환되지 않습니다. 두번 째 인자가 정수형으로 전달되는 경우, 해당 함수가 unsigned char로 변환하여 처리합니다.",
  "MemsetZeroBytes.description": "0바이트를 채우기 위해 memset 호출됩니다. 두번 째와 세번 째 인자가 바뀌었을 수 있습니다.",
  "MethodArgumentCouldBeFinal.description": "final이 아닌 메소드 인자가 할당 되지 않을 경우 이를 검출합니다.",
  "MethodNamingConventions.description": "메소드 이름 표준 위반을 검출합니다. 메소드는 항상 영문 소문자로 시작하여야 하며, 밑줄(_)을 포함해서는 안됩니다.",
  "MethodReturnsInternalArray.description": "클래스 내부 배열의 직접 반환을 검출합니다.",
  "MethodWithSameNameAsEnclosingClass.description": "생성자가 아닌 클래스 이름과 같은 메소드를 검출합니다.",
  "MisleadingVariableName.description": "필드가 아닌 변수 이름이 'm_'로 시작하는 경우 필드 변수와의 구분에 있어 혼란을 일으킬 수 있기 때문에 이를 검출합니다.",
  "MismatchingBitAnd.description": "else if문이 항상 거짓입니다. 이전 if 조건과 같습니다.",
  "MisplacedNullCheck.description": "컬렉션 객체에 .size()==0 혹은 .size()!=0 사용을 검출합니다.",
  "MissingBreakInSwitch.description": "Switch 블록 내에 break 구문이 없고, 반환 구문과 throw 구문의 개수가 케이스 레이블 개수보다 작은 경우 이를 검출합니다.",
  "MissingSerialVersionUID.description": "Serializable 혹은 java.io.Serializable 중 하나를 상속한 non-abstract 클래스내 serialVersionUID 선언구가 없는 클래스를 검출합니다.",
  "MissingStaticMethodInNonInstantiatableClass.description": "클래스가 private한 생성자를 가지고 있으며 이외에 어떠한 정적 메소드나 필드를 가지지 않는 경우, 해당 클래스는 사용될 수 없으므로 이를 검출합니다.",
  "ModuloAlwaysTrueFalse.description": "모듈러 연산 결과가 항상 1보다 작습니다. 모듈러 연산을 이용한 비교가 항상 정해져있습니다.",
  "MoreThanOneLogger.description": "단일 클래스 내 로거로 선언한 객체가 2개 이상인 경우 이를 검출합니다.",
  "MultiCondition.description": "else if문이 항상 거짓입니다. 이전 if 조건과 같습니다.",
  "NAMESPACE_IN_HEADER_SHOULD_BE_NAMED.description": "헤더 파일에 있는 이름 없는 네임스페이스 체커는 소스 파일이 아닌 헤더 파일에 위치한 이름 없는 네임스페이스를 검출합니다.\n이름 없는 네임스페이스는 소스 파일에서만 사용하도록 합니다. 헤더 파일에 네임스페이스를 작성해야 할 경우 반드시 이름을 가진 네임스페이스를 사용합니다.",
  "NAMES_WITH_WIDER_SCOPE_SHOULD_BE_LONGER.description": "하위 범위 변수 이름에 상위 범위 변수 이름 포함 체커는 하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하는 경우를 검출합니다.\n하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하지 않도록 작성합니다.",
  "NAME_IS_USED_IN_STANDARD_LIBRARY.description": "표준 라이브러리 식별자 재사용 체커는 표준 라이브러리에서 사용되는 식별자와 동일한 객체명이나 함수명을 사용하는 경우를 검출합니다.\n객체나 함수를 정의할 때 표준 라이브러리에서 사용하는 이름을 피하도록 합니다.",
  "NAME_SHOULD_NOT_START_WITH_UNDERSCORE.description": "밑줄로 시작하는 식별자 체커는 식별자 이름이 밑줄(_)로 시작하는 경우를 검출합니다.\n식별자 이름의 첫 시작은 밑줄(_)로 시작하지 말아야 합니다. 보통 밑줄로 시작하는 식별자 이름은 표준 라이브러리에서 사용하는 경우가 많습니다.\n식별자 이름을 밑줄로 시작하지 않도록 작성합니다.",
  "NAMING_CONVENTION.ENUM.description": "다음과 같은 명명 규칙을 위반했을 경우 이슈를 검출합니다.",
  "NAMING_CONVENTION.FUNCTION.description": "함수 이름은 모두 소문자로 구성하고, 단어들로 구성될 경우 단어들 사이를 _로 구분해야 합니다.",
  "NAMING_CONVENTION.HEADER.description": "소스 코드에 include된 헤더 파일 이름 규칙을 검사합니다. 헤더 파일 명명 규칙과 대상 디렉토리 변경을 Nest Checker 옵션에서 할 수 있습니다.",
  "NAMING_CONVENTION.STRUCTURE.description": "다음과 같은 명명 규칙을 위반했을 경우 이슈를 검출합니다.",
  "NAMING_CONVENTION.TYPE.description": "타입 명명 규칙 위반 체커는 타입을 선언할 때 명명 규칙을 위반한 경우를 검출합니다.\n명명 규칙은 다음과 같습니다. 타입은 모두 소문자로 구성하고 _t로 끝내야 합니다. 단어로 구성할 경우 단어들 사이는 _로 구분합니다. 포인터에 대한 타입을 정의할 때는 _p로 끝냅니다.\n타입 선언 시 명명 규칙을 잘 지키도록 합니다.",
  "NAMING_CONVENTION.UNION.description": "다음과 같은 명명 규칙을 위반했을 경우 이슈를 검출합니다.",
  "NAMING_CONVENTION.VARIABLE.description": "변수 이름은 모두 소문자로 구성하고, 단어들로 구성될 경우 단어들 사이를 _로 구분해야 합니다. 전역변수의 경우 g_로 시작해야 합니다.",
  "NEGATIVE_FILE_DESCRIPTOR.description": "특정 함수에 금지된 음수 인자 전달 체커는 파일/소켓 관련 함수의 인자에 음수를 전달하는 코드를 검출합니다.\n검출 대상 함수는 다음과 같습니다. __fxstat(), _dup(), _dup2(), _fdopen(), _fstat(), _fstat32(), _fstat32i64(), _fstat64(), _fstat64i32(), _fstati64(), _lseek(), _lseeki64(), _read(), _wfdopen(), _write(), accept(), bind(), close(), closesocket(), connect(), dup(), dup2(), fcntl(), fdopen(), fpathconf(), fstat(), fstatfs(), fsync(), ftruncate(), ioctl(), ioctlsocket(), listen(), lseek(), read(), readv(), recv(), recvfrom(), recvmsg(), send(), sendmsg(), unlinkat(), write(), writev()\n파일/소켓 관련 함수의 인자는 음수가 아니여야 합니다.",
  "NEGATIVE_MOD_OPERATION.description": "음수로 모듈러 연산 체커는 모듈러 연산자의 피연산자로 음수를 사용하는 수식을 검출합니다.\n모듈러 연산의 피연산자로써 항상 양수를 사용하도록 합니다. 이러한 조건을 유지하기 위해 피연산자로 사용된 값이 0을 초과하는지를 검사합니다. 혹은 피연산자 타입을 unsigned로 선언하도록 합니다.",
  "NESTED_SELECT.ABAP.description": "중첩된 SELECT 구문 사용 체커는 SELECT 구문 안에서 사용된 SELECT 구문을 검출합니다.\n중첩된 SELECT 구문 대신 JOIN 절을 사용합니다.",
  "NETWORK_TRIGGERED": "네트워크 서버 형태로 이용하는 경우에도 의무사항 준수 필요",
  "NEVER_CREATE_CONTAINERS_OF_AUTO_PTRS.description": "auto_ptr의 컨테이너 생성 체커는 컨테이너에 auto_ptr 타입을 담는 변수 선언을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다.\n컨테이너에 auto_ptr 타입을 담지 않도록 합니다. 만약 컨테이너에 스마트 포인터를 담을 필요가 있는 경우 참조 카운팅(Reference Counting) 기능이 있는 스마트 포인터를 사용하도록 합니다.",
  "NEVER_QUALIFY_REFERENCE_TYPE.description": "const 나 volatile 을 레퍼런스 형으로 만들면 안됩니다.",
  "NEVER_USE_RAW_TYPE.description": "타입 매개 변수 없이 제네릭 타입 사용 체커는 제네릭으로 정의된 컬렉션 클래스 타입을 타입 매개 변수 없이 사용하는 경우를 검출합니다.\njava.util 패키지에 포함된 주요 제네릭 컬렉션 타입들이 검출 대상입니다.\nJava 1.5 이상의 버전을 사용중이라면 제네릭 타입을 사용할 때 타입 매개 변수를 명시하여 사용하는 것이 안전합니다.",
  "NEW_DELETE_INSTEAD_OF_MALLOC_FREE.description": "malloc과 free대신 new와 delete를 사용해야 합니다. C++ 에서 클래스를 malloc 으로 동적 생성 할 경우 생성자가 호출되지 않으며 free로 해제 시 소멸자가 호출되지 않습니다.",
  "NON-COMMERCIAL_USE_ONLY": "상업적 사용 불가(기업에서 제공하는 무료 소프트웨어 사용 불가)",
  "NONE.DISCLOSING_SRC": "공개 의무 없음",
  "NONE.RESTRICTION": "제약 사항 없음",
  "NONEFFECTIVE_FUNCTION_CALL.description": "무의미한 함수 호출 체커는 함수를 호출했으나 프로그램 흐름에 영향을 주지 않는 코드를 검출합니다.\n옵션에서 예외 사항에 포함되는 구조체 이름을 지정할 수 있습니다.\n함수를 호출할 때 정확한 인자의 값을 입력해야 합니다.",
  "NONSERIALIZABLE_OBJECT_STORED_IN_SESSION.description": "직렬화할 수 없는 객체의 세션 저장 체커는 직렬화할 수 없는 객체를 세션에 저장하는 코드를 검출합니다.\nJ2EE 애플리케이션은 애플리케이션 신뢰성과 성능을 향상시키기 위해 여러 가지 JVM을 사용할 수 있습니다. 다수의 JVM이 최종 사용자에게 단일 애플리케이션으로 표시되도록 하기 위해 J2EE 컨테이너는 다수의 JVM에서 javax.servlet.http.HttpSession 객체를 복제하여 각 JVM이 애플리케이션 플로우를 방해하지 않도록 조치를 취할 수 있습니다. 이는 모든 세션 데이터를 직렬화하고 JVM 간에 세션을 복제할 수 있는 경우에만 가능합니다.\n아래 두 메서드의 두 번째 인자의 타입이 java.io.Serializable 인터페이스를 상속 받지 않는 경우를 검출합니다.\njavax.servlet.http.HttpSession.setAttribute(java.lang.String,java.lang.Object)\njavax.servlet.http.HttpSession.putValue(java.lang.String,java.lang.Object)\n직렬화 대상 객체의 타입이 java.io.Serializable 인터페이스를 상속 받도록 합니다.",
  "NONSYNCHRONIZED_METHOD_OVERRIDES_SYNCHRONIZED_METHOD.description": "오버라이딩 중 동기화 누락 체커는 synchronized 한정자를 가진 메소드를 오버라이딩할 때 synchonized로 선언하지 않는 경우를 검출합니다.\n상위 클래스에서 synchronized 한정자로 동기화된 메소드는 하위 클래스에서 재정의를 하지 않거나, 재정의해야 하는 경우 기존과 동일하게 동기화된 메소드로 정의해야 합니다.",
  "NON_CONSTANT_PTR_TO_FUNCTION.description": "const 로 선언하지 않은 함수 포인터 체커는 함수 포인터 선언 시 const를 붙이지 않은 경우를 검출합니다.\n함수 포인터는 반드시 const를 붙여 선언하도록 합니다.",
  "NORETURN_DECLARED.description": "noreturn 으로 선언한 함수에서 반환 체커는 함수의 속성을 [[noreturn]] 으로 선언한 함수에서 반환 구문이 있는 경우를 검출합니다.\n이때 반환 구문은 명시적인 반환과 암시적인 반환 모두를 포함합니다.\n[[noreturn]] 속성으로 선언한 함수에서는 반환 구문을 포함하지 않도록 합니다.",
  "NORMALIZE_STRINGS_BEFORE_VALIDATING_THEM.description": "문자열을 검증하기 전에 normalize 해야 합니다. 검증을 통과하는 문자열이 입력된 후, normalize 작업을 통해 변환된 문자열이 공격 문자열로 변형될 수 있습니다.",
  "NOTIFIED_ANALYSIS_BROWSER_CLIPBOARD_CANNOT_PLAYING": "분석을 위해 수집 과정에서 재현했던 로그인 기록 파일을 다시 재현하는데 실패했습니다. 로그인을 하지 못한 채 분석이 진행됩니다. 로그인 기록 파일 내용이 변경되었거나 로그인 페이지가 변경되었는지 확인해야 합니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_INVALID_ELEMENT_STATE": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_JAVASCRIPT": "Javascript 실행 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_NO_ALERT_PRESENT": "없는 경고창을 처리하려고 시도했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_NO_ELEMENT": "접근하려는 HTML 요소가 존재하지 않습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_NO_SUCH_SESSION": "세션이 없습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_NO_SUCH_WINDOW": "없는 윈도우로 이동을 시도했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_SCRIPT_TIMEOUT": "지연으로 인해 Javascript 실행에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_SESSION_NOT_CREATED": "브라우저의 세션이 생성되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_SOCKET_TIMEOUT": "브라우저와 대상 웹 애플리케이션 사이의 소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_STALE_ELEMENT_REFERENCE": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_TIMEOUT": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_UNABLE_TO_SET_COOKIE": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_UNHANDLED_ALERT": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_UNKNOWN": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_UNREACHABLE_BROWSER": "브라우저에 접근이 되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_DOM_UNSUPPORTED_COMMAND": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_BROWSER_LANGUAGE": "브라우저 언어를 {0}로 설정하여 분석을 시작합니다.",
  "NOTIFIED_ANALYSIS_ENGINE_ALL_OUT_OF_MEMORY": "메모리가 부족하여 분석에 실패했습니다. 메모리를 추가하거나 동시 분석 수를 줄여야 합니다.",
  "NOTIFIED_ANALYSIS_ENGINE_ALL_PAUSED": "분석을 일시 정지합니다.",
  "NOTIFIED_ANALYSIS_ENGINE_ALL_RESUME": "분석을 다시 시작합니다.",
  "NOTIFIED_ANALYSIS_ENGINE_URL_START_ANALYZING": "다음 URL에서의 분석을 시작합니다. {0}",
  "NOTIFIED_ANALYSIS_ENGINE_URL_UNKNOWN": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_PROTOCOL": "HTTP 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_SOCKET": "TCP 연결이 거부되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_SOCKET_TIMEOUT": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_SSL_HANDSHAKE": "SSL 연결이 거부되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_SSL_KEY": "잘못된 SSL 키입니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_SSL_PEER_UNVERIFIED": "대상이 확인되지 않으므로 SSL 연결을 할 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_SSL_PROTOCOL": "SSL 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_UNKNOWN": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_UNKNOWN_HOST": "호스트를 알 수 없으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_HTTP_REQUEST_UNKNOWN_SERVICE": "서비스를 알 수 없으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "NOTIFIED_ANALYSIS_SOCKET_ADDRESS_BIND": "포트가 사용 중이거나 로컬 주소가 잘못되어 소켓 바인딩에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_SOCKET_ADDRESS_CONNECT": "연결이 거부되어 소켓 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_SOCKET_ADDRESS_NO_ROUTE_TO_HOST": "대상에 도달하지 못하여 소켓 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_SOCKET_ADDRESS_PORT_UNREACHABLE": "범위를 벗어난 포트로 인해 소켓 생성에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_SOCKET_ADDRESS_SOCKET_TIMEOUT": "소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "NOTIFIED_ANALYSIS_SOCKET_ADDRESS_UNKNOWN": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BLOCK_DISCONNECTED_URLS": "다음 URL에 대한 요청이 실패하여 해당 URL을 차단합니다. {0} 요청에 실패하는 원인은 다음과 같습니다. {1}",
  "NOTIFIED_CRAWL_BROWSER_CLIPBOARD_NEVER_USE": "로그인 기록 파일이 한 번도 사용되지 않았습니다. 이로 인해 로그인이 수행되지 않고 수집했을 수 있습니다. 수집 중에 로그인 기록 파일을 생성한 URL에 도달하면 로그인을 수행합니다. 로그인 기록 파일을 생성한 URL과 수집된 URL을 확인해야 합니다.",
  "NOTIFIED_CRAWL_BROWSER_DOM_INVALID_ELEMENT_STATE": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_JAVASCRIPT": "Javascript 실행 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_NO_ALERT_PRESENT": "없는 경고창을 처리하려고 시도했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_NO_ELEMENT": "접근하려는 HTML 요소가 존재하지 않습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_NO_SUCH_SESSION": "세션이 없습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_NO_SUCH_WINDOW": "없는 윈도우로 이동하려 시도했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_SCRIPT_TIMEOUT": "지연으로 인해 Javascript 실행에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_SESSION_NOT_CREATED": "브라우저의 세션이 생성되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_SOCKET_TIMEOUT": "브라우저와 대상 웹 애플리케이션 사이의 소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_STALE_ELEMENT_REFERENCE": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_TIMEOUT": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_UNABLE_TO_SET_COOKIE": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_UNHANDLED_ALERT": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_UNKNOWN": "알 수 없는 오류가 발생했습니다. 따라서 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_UNREACHABLE_BROWSER": "브라우저에 접근할 수 없으므로 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_DOM_UNSUPPORTED_COMMAND": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_LANGUAGE": "브라우저 언어를 {0}로 설정하여 수집을 시작합니다.",
  "NOTIFIED_CRAWL_BROWSER_URL_INACCESSIBLE_SEED": "브라우저가 프로젝트 URL에 접근할 수 없습니다. 브라우저로 수집을 할 수 없습니다. 서버에서 대상 URL로 접근이 가능한지 확인해야 합니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_INVALID_ELEMENT_STATE": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_JAVASCRIPT": "Javascript 실행 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_NO_ALERT_PRESENT": "없는 경고창을 처리하려고 시도했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_NO_SUCH_SESSION": "세션이 없습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_NO_SUCH_WINDOW": "없는 윈도우로 이동하려고 시도했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_REDIRECTED_SEED": "브라우저가 프로젝트 URL에 접근을 시도하니 리다이렉션이 발생했습니다. 리다이렉션된 다음의 URL에서부터 수집을 시작합니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_SCRIPT_TIMEOUT": "지연으로 인해 Javascript 실행에 실패했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_SESSION_NOT_CREATED": "브라우저의 세션이 생성되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_STALE_ELEMENT_REFERENCE": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_TIMEOUT": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_UNABLE_TO_SET_COOKIE": "브라우저에서 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_UNHANDLED_ALERT": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_UNKNOWN": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_UNREACHABLE_BROWSER": "브라우저에 접근할 수 없으므로 브라우저를 재시작합니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_BROWSER_URL_UNSUPPORTED_COMMAND": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_ENGINE_ALL_OUT_OF_MEMORY": "메모리가 부족하여 수집에 실패했습니다. 메모리를 추가하거나 동시 분석 수를 줄여야 합니다.",
  "NOTIFIED_CRAWL_ENGINE_ALL_PAUSED": "수집을 일시 정지합니다.",
  "NOTIFIED_CRAWL_ENGINE_ALL_RESUME": "수집을 다시 시작합니다.",
  "NOTIFIED_CRAWL_ENGINE_URL_START_CRAWLING": "다음 URL에서의 수집을 시작합니다. {0}",
  "NOTIFIED_CRAWL_ENGINE_URL_UNKNOWN": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_INACCESSIBLE_SEED": "HTTP 클라이언트가 프로젝트 URL로 요청을 보낼 수 없습니다. HTTP 클라이언트로 수집을 할 수 없습니다. 서버에서 대상 URL로 접근이 가능한지 확인해야 합니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_PROTOCOL": "HTTP 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_SOCKET": "TCP 연결이 거부되었으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_SOCKET_TIMEOUT": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_SSL_HANDSHAKE": "SSL 연결이 거부되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_SSL_KEY": "잘못된 SSL 키입니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_SSL_PEER_UNVERIFIED": "대상을 확인할 수 없으므로 SSL 연결을 할 수 없습니다. 이로 인해 다음 요청에서 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_SSL_PROTOCOL": "SSL 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_UNKNOWN": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_UNKNOWN_HOST": "호스트를 알 수 없으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서 수집에 실패했습니다. {0}",
  "NOTIFIED_CRAWL_HTTP_REQUEST_UNKNOWN_SERVICE": "서비스를 알 수 없으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "NOTIFIED_ENTIRE_BROWSER_ALL_CANNOT_EXECUTE": "브라우저를 실행할 수 없으므로 브라우저를 통한 수집 및 분석을 수행할 수 없습니다. 다음의 경로에 있는 브라우저 바이너리를 확인해야 합니다. {0}",
  "NOTIFIED_ENTIRE_BROWSER_CLIPBOARD_PLAYING_ERROR": "로그인 기록 파일을 재현하던 도중 오류가 발생했습니다. 이로 인해 로그인이 수행되지 않을 수 있습니다. 이벤트 클립보드를 통해 로그인 기록 파일이 정상적으로 재생되는지 확인해야 합니다. {0} {1}",
  "NOTIFIED_ERROR_ANALYZER_NO_CHECKER": "분석에 사용할 체커가 없습니다. 체커 목록을 확인하세요.",
  "NOTIFIED_ERROR_ANALYZER_NO_TARGET": "분석할 대상이 없습니다. 수집 결과를 확인하세요.",
  "NOTIFIED_ERROR_ANALYZER_OUT_OF_MEMORY": "메모리가 부족하여 분석이 비정상적으로 종료되었습니다. 메모리 사용량을 확인하세요.",
  "NOTIFIED_ERROR_BROWSER_BLACKLIST": "해당 페이지에서 지속적으로 발생하는 오류를 생략합니다: {0}",
  "NOTIFIED_ERROR_BROWSER_CANNOT_EXECUTE": "내부 브라우저가 실행되지 않습니다: {0}",
  "NOTIFIED_ERROR_CHANGE_SEED_URL": "브라우저가 프로젝트 URL에 접근을 시도한 결과 다른 URL로 리다이렉션되었습니다. 리다이렉션된 URL로부터 수집을 시작합니다: {0}",
  "NOTIFIED_ERROR_CLIPBOARD_NEVER_EXECUTE": "로그인 기록 파일이 한번도 실행되지 않았습니다. 로그인 기록 파일의 URL과 수집 URL을 확인하세요.",
  "NOTIFIED_ERROR_CRAWLER_FAILED_TO_SAVE_RESULT": "수집 결과를 저장하는 도중 오류가 발생했습니다.",
  "NOTIFIED_ERROR_CRAWLER_INACCESSIBLE_EB_SEED": "브라우저가 수집하려는 URL에 접근할 수 없습니다. 서버에서 프로젝트 URL로 접근할 수 있는지 확인하세요: {0}",
  "NOTIFIED_ERROR_CRAWLER_INACCESSIBLE_HB_SEED": "HTTP 클라이언트가 수집하려는 URL에 접근할 수 없습니다. 인증서나 보안 프로그램 문제로 서버와 대상 웹 애플리케이션 사이의 HTTP 통신이 차단되는지 확인하세요: {0}",
  "NOTIFIED_ERROR_CRAWLER_NO_SEED": "수집을 시작한 URL이 없습니다. 프로젝트의 URL을 확인하세요.",
  "NOTIFIED_ERROR_CRAWLER_OUT_OF_MEMORY": "메모리가 부족하여 수집이 비정상적으로 종료되었습니다. 메모리 사용량을 확인하세요.",
  "NOTIFIED_ERROR_CRAWLER_SKIPPED_EB_SEED": "브라우저가 수집하려는 URL이 제외되었습니다. 제외할 수집 URL 옵션을 확인하세요: {0}",
  "NOTIFIED_ERROR_CRAWLER_SKIPPED_HB_SEED": "HTTP 클라이언트가 수집하려는 URL이 제외되었습니다. 제외할 수집 URL 옵션을 확인하세요: {0}",
  "NOTIFIED_ERROR_HTTP_PROTOCOL": "TCP 오류와 같은 기본 프로토콜에 오류가 발생했습니다: {0}",
  "NOTIFIED_ERROR_HTTP_SOCKET": "HTTP 통신을 위한 소켓 연결이 거부되었습니다: {0}",
  "NOTIFIED_ERROR_HTTP_SOCKET_TIMEOUT": "HTTP 요청에 대한 응답이 지연되어 받지 못했습니다: {0}",
  "NOTIFIED_ERROR_HTTP_SSL_HANDSHAKE": "보안 문제로 SSL 연결을 수행할 수 없습니다: {0}",
  "NOTIFIED_ERROR_HTTP_SSL_KEY": "SSL 키가 잘못되어 HTTP 요청을 보낼 수 없습니다: {0}",
  "NOTIFIED_ERROR_HTTP_SSL_PEER_UNVERIFIED": "인증서 부재, 암호 인증 미지원, SSL 인증 실패 등으로 인해 피어에서 HTTP 요청을 보낼 수 없습니다: {0}",
  "NOTIFIED_ERROR_HTTP_SSL_PROTOCOL": "SSL 프로토콜에 오류가 발생했습니다: {0}",
  "NOTIFIED_ERROR_HTTP_UNKNOWN": "알 수 없는 오류가 발생하여 HTTP 요청을 보낼 수 없습니다. : {0} - {1}",
  "NOTIFIED_ERROR_HTTP_UNKNOWN_HOST": "HTTP 요청을 보내려는 IP 주소 또는 호스트를 특정할 수 없습니다: {0}",
  "NOTIFIED_ERROR_HTTP_UNKNOWN_SERVICE": "알 수 없는 MIME 형식의 HTTP 응답이 왔거나 읽기 전용 URL 연결에 데이터 쓰기를 시도했습니다: {0}",
  "NOTIFIED_ERROR_OVER_REDIRECTION": "요청 메시지를 리다이렉션하는 횟수가 많으므로 응답을 받지 않았습니다: {0}",
  "NOTIFIED_ERROR_SOCKET_BIND": "포트가 사용 중이거나 로컬 주소가 잘못되어 소켓 바인딩에 실패했습니다: {0}",
  "NOTIFIED_ERROR_SOCKET_CONNECT": "대상과 연결이 거부되어 소켓을 생성하지 못했습니다: {0}",
  "NOTIFIED_ERROR_SOCKET_NO_ROUTE_TO_HOST": "방화벽이나 라우터에서 대상에 도달하지 못하여 소켓을 생성하지 못했습니다: {0}",
  "NOTIFIED_ERROR_SOCKET_PORT_UNREACHABLE": "범위를 벗어나는 포트로 인해 소켓을 생성하지 못했습니다: {0}",
  "NOTIFIED_ERROR_SOCKET_TIMEOUT": "연결이 지연되어 소켓을 생성하지 못했습니다. {0}",
  "NOTIFIED_ERROR_SOCKET_UNKNOWN": "알 수 없는 오류가 발생하여 소켓을 생성하지 못했습니다: {0} - {1}",
  "NOTIFIED_ERROR_WEBDRIVER_INVALID_ELEMENT_STATE": "웹 요소의 상태가 {0} 동작을 수행하기에 적절하지 않습니다. {1}",
  "NOTIFIED_ERROR_WEBDRIVER_JAVASCRIPT": "잘못된 JavaScript 문을 실행하려 했습니다. {0}",
  "NOTIFIED_ERROR_WEBDRIVER_NOT_DETECT_ELEMENT": "브라우저가 {0} 동작을 수행하기 위해 찾는 웹 요소가 없습니다: {1}",
  "NOTIFIED_ERROR_WEBDRIVER_NO_ALERT_PRESENT": "처리하려는 경고문이 없습니다.",
  "NOTIFIED_ERROR_WEBDRIVER_NO_SUCH_SESSION": "브라우저 세션을 찾을 수 없습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "NOTIFIED_ERROR_WEBDRIVER_NO_SUCH_WINDOW": "브라우저가 변환하려는 탭 윈도우가 없습니다.",
  "NOTIFIED_ERROR_WEBDRIVER_SCRIPT_TIMEOUT": "브라우저가 JavaScript 실행 요청에 오랫동안 응답하지 않습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "NOTIFIED_ERROR_WEBDRIVER_SESSION_NOT_CREATED": "브라우저가 세션을 생성하지 못했습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "NOTIFIED_ERROR_WEBDRIVER_STALE_ELEMENT_REFERENCE": "대상 웹 서버의 응답이 지연되어서 웹 요소를 불러오지 못했거나, 다른 이벤트의 수행 결과로 브라우저가 {0} 동작을 수행하려는 웹 요소가 사라졌습니다. {1}",
  "NOTIFIED_ERROR_WEBDRIVER_TIMEOUT": "브라우저의 응답이 지연되고 있습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "NOTIFIED_ERROR_WEBDRIVER_UNABLE_TO_SET_COOKIE": "브라우저에서 쿠키를 설정하지 못했습니다. {0}",
  "NOTIFIED_ERROR_WEBDRIVER_UNHANDLED_ALERT": "처리하지 않은 경고창이 있습니다. 확인을 누르면 브라우저가 {0} 동작을 다시 시도합니다.",
  "NOTIFIED_ERROR_WEBDRIVER_UNKNOWN": "알 수 없는 오류가 발생했습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다. {2}",
  "NOTIFIED_ERROR_WEBDRIVER_UNREACHABLE_BROWSER": "브라우저에 충돌이 발생하여 더이상 브라우저를 다룰 수 없습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "NOTIFIED_ERROR_WEBDRIVER_UNSUPPORTED_COMMAND": "웹 드라이버가 지원하지 않는 명령어를 실행했습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "NOT_BE_ASSIGNED_TO_OVERLAPPING_OBJECTS.description": "메모리 영역이 겹치는 객체 간의 대입 연산 체커는 수식을 평가하면서 서로 메모리 영역이 겹치는 부분 간에 대입이 발생하는 수식을 검출합니다.\n구체적으로는 문자열 관련 함수를 사용하면서 원본 객체와 목적 객체의 메모리가 겹치는 부분이 있는 경우를 검출합니다.\n서로 메모리 영역이 겹치는 객체 간에는 대입이 일어나는 함수를 호출하지 않도록 합니다.",
  "NOT_FOUND_ANALYSIS_FILE": "분석 대상 파일을 찾을 수 없습니다.",
  "NOT_LAST_DEFAULT_CASE.MISRA2012.description": "default 절로 시작하거나 끝나지 않은 switch 구문 체커는 switch 구문의 시작 혹은 마지막 절이 default 절이 아닌 경우를 검출합니다.\nswitch 구문이 default 절로 시작하거나 끝나도록 코드를 작성합니다.",
  "NOT_LAST_DEFAULT_CASE.description": "default 절로 끝나지 않은 switch 구문 체커는 switch 구문의 마지막 절이 default 절이 아닌 경우를 검출합니다.\n이 규칙의 검출 범위는 default 절 자체가 없는 경우도 포함됩니다.\nswitch 구문이 default 절로 끝나도록 코드를 작성합니다.",
  "NO_BRACKETS_TO_SWITCH_BODY.description": "switch 구문에서 중괄호 누락 체커는 switch 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\nswitch 구문의 본문은 항상 중괄호로 감싸줍니다.",
  "NO_BRACKETS_TO_THEN_ELSE.description": "if 구문에서 중괄호 누락 체커는 if-elseif-else 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\nif 구문 및 elseif, else 구문의 본문을 중괄호로 감싸야 합니다.",
  "NO_CASE_IN_NESTED_BLOCK.description": "switch 구문 외에서 case 구문 사용 체커는 switch 구문이 아닌 다른 복합 구문에서 case 구문이나 같은 유형인 default 구문을 사용한 경우를 검출합니다.\ncase 구문이나 default 구문은 반드시 switch 구문 내에서만 사용하도록 합니다.",
  "NO_CHANGE_THE_NAME": "이름 변경 금지",
  "NO_CHARGE": "자체 판매를 금지하거나 직접적 사용 비용 청구하지 않음(기업에서 제공하는 무료 소프트웨어 내 탑재 가능)",
  "NO_CONTINUE_STMT.description": "continue 구문 사용 체커는 소스 코드에서 continue 구문을 사용한 경우를 검출합니다.\ncontinue 문을 사용하지 않도록 합니다.",
  "NO_EXEC_STMT_BEFORE_FIRST_SWITCH_CASE.description": "switch 구문 안의 실행 불가능한 코드 체커는 switch 구문에서 첫 번째 케이스 레이블보다 위에 작성된 실행 가능한 구문을 검출합니다.\nswitch 구문 블록의 맨 앞에는 케이스 레이블이 있어야 합니다.",
  "NO_EXPLICIT_TYPE_CASTING.description": "대입 시 암시적 캐스팅 사용 체커는 값을 대입할 경우 서로 타입이 다르고 암시적인 캐스팅이 발생하는 수식을 검출합니다.\n이 때 좌측항의 타입이 우측항의 타입보다 큰 경우는 예외로 합니다. 즉, 대입의 결과로 값이 변경될 가능성이 있는 경우만 검출합니다.\n대입 연산 시 양쪽 피연산자의 타입이 같아지도록 명시적인 캐스팅을 사용합니다. 이러한 캐스팅 사용은 설령 값이 변경되더라도 의도한 구현이라는 점을 명시할 수 있습니다.",
  "NO_FUNCTION_DEFINITION_IN_HEADER.description": "헤더 파일에서 함수 정의 금지 체커는 헤더 파일에서 함수를 정의한 경우를 검출합니다.\n헤더 파일에서 함수를 정의하지 않습니다.",
  "NO_GLOBAL_VARIABLES_BETWEEN_FUNCTIONS.description": "함수 정의 사이에 전역 변수 선언 체커는 함수와 함수 정의 사이에 있는 전역 변수 선언을 검출합니다.\n함수 정의 사이에 전역 변수를 선언하지 않도록 합니다. 전역 변수는 항상 함수 정의 이전에 선언해야 합니다.",
  "NO_INC_EXPR_IN_FOR_LOOP.description": "for 구문에서 루프 카운터 증감 연산 누락 체커는 증감부에서 루프 카운터에 대한 증감 연산이 누락된 for 구문을 검출합니다.\nfor 구문의 증감부에서는 항상 루프 카운터의 증감 연산을 수행하도록 합니다.",
  "NO_MEMBER_FUNCTION_IN_STRUCT.description": "구조체를 클래스처럼 사용 체커는 구조체에 멤버 함수를 포함시키거나 멤버에 접근 제어자를 사용하는 경우를 검출합니다.\n접근 제어자나 멤버 함수를 활용하고싶다면 구조체가 아닌 클래스로 선언해야 합니다.",
  "NO_MODIFICATION": "수정 금지",
  "NO_MORE_THAN_ONE_BREAK.description": "반복문 내에서 break 구문 중복 사용 체커는 break 구문을 두 번 이상 사용한 반복문을 검출합니다.\n반복문 내에서 종료 제약의 수를 제한하는 것은 훌륭한 구조화 프로그래밍입니다. 하나의 break 문만 반복문에서 사용할 수 있습니다.\n반복문 내에서는 break 구문을 최대 한 번만 사용하도록 합니다.",
  "NO_MORE_THAN_ONE_SHARP_OPERATOR.description": "# 및 ## 연산으로 중복 매크로 정의 체커는 # 연산이나 ## 연산을 두 번 이상 사용하여 하나의 매크로를 정의하는 코드를 검출합니다.\n하나의 매크로를 정의할 때는 # 연산이나 ## 연산은 최대 한 번만 사용하도록 합니다.",
  "NO_PREPROCESSING_DIRECTIVE_IN_MACRO.description": "매크로 함수에서 다른 전처리 구문 사용 체커는 전처리 구문을 매크로 함수의 인자로 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 함수의 인자에 다른 전처리 구문이 포함되지 않도록 합니다.",
  "NO_PUBLIC_CONSTRUCTOR_FOR_ABSTRACT_CLASS.description": "추상 클래스 생성자를 public으로 선언 체커는 public 접근 권한을 가진 추상 클래스의 생성자를 검출합니다.\n추상 클래스의 생성자 접근 권한을 protected로 설정합니다.",
  "NO_REAL_DECLARATION_FOR_VARIABLE.description": "실체 없는 extern 선언 체커는 다른 소스 파일 어디에서도 선언을 찾을 수 없는 변수가 extern으로 선언된 경우를 검출합니다.\n이 소스 파일에서 extern 키워드 없이 변수를 직접 선언하거나 변수를 소유할 다른 소스 파일에 변수를 제대로 선언해줍니다.",
  "NO_SEMICOLON_ON_SAME_STMT.description": "잘못된 세미콜론 사용 체커는 if, for, while 구문과 같은 줄에 세미콜론이 위치하는 수식을 검출합니다.\nif, for, while 구문과 같은 줄에서 세미콜론을 사용하지 않도록 합니다.",
  "NO_SHIFT_SIGNED.description": "시프트 연산자에서 signed 정수형 사용 체커는 signed 정수형 객체를 시프트 연산자의 피연산자로 사용하는 수식을 검출합니다.\n시프트 연산자의 피연산자에 unsigned 정수형 객체를 사용하도록 합니다.",
  "NO_SIDE_EFFECT_STMT.description": "부수 효과가 없는 구문 체커는 구문 내에 부수 효과가 전혀 없는 구문을 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n부수 효과가 없는 구문을 삭제하도록 합니다.",
  "NO_TEST_EXPR_IN_FOR_LOOP.description": "for 구문에서 비교 연산 누락 체커는 평가부에서 루프 카운터에 대한 비교 연산이 누락된 for 구문을 검출합니다.\nfor 구문의 평가부에서는 항상 루프 카운터의 비교 연산을 수행하도록 합니다.",
  "NPathComplexity.description": "특정 메소드의 NPath complexity는 메소드 내의 비순환적 실행 경로 개수를 의미합니다. 검출되기 위한 임계치는 200이며, 이에 해당하는 메소드는 복잡도가 감소되어야 합니다.",
  "NULL_DEREF.CHECK_AFTER_DEREF.description": "역참조 후 널 확인 체커는 널 확인 없이 역참조한 값을 나중에 널과 비교하는 코드를 검출합니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다. 반대로 변수가 널이 아니라는 보장이 있다면 혼동을 줄이기 위해 일관적으로 해당 변수를 널 확인 없이 직접 사용해야 합니다.",
  "NULL_DEREF.MALLOC_FAILED.description": "할당 실패로 인한 널 역참조 체커는 메모리 할당에 실패했을 때 널을 반환하는 함수로부터 반환된 포인터에 대해 널 확인을 하지 않고 역참조하는 코드를 검출합니다.\n메모리 할당 함수를 호출할 때 할당이 성공했는지를 확인한 후 해당 함수의 반환값을 사용합니다.",
  "NULL_DEREF.MISSING_CHECK.description": "널 미확인 역참조 체커는 함수의 인자로 전달되거나 다른 함수에서 반환된 포인터를 이전에는 널 확인 후 사용했지만 이번에는 널 확인 없이 사용하는 코드를 검출합니다.\n이전에 널 확인을 수행한 포인터 변수에도 널이 할당될 가능성이 있기 때문입니다.\n이전에 널 확인을 수행한 포인터 변수를 사용하기 전에 다시 널을 확인해야 합니다.",
  "NULL_DEREF.description": "이 체커는 포인터 값이 널임을 고려하지 않고 널 포인터가 가리키는 값을 읽는 코드를 검출합니다.\n일반적으로 널 값 역참조로 인해 시스템이 종료될 수 있습니다.\n포인터를 역참조하기 전에 널을 확인해야 합니다.",
  "NULL_RETURN.description": "널 반환 값 역참조 체커는 반환된 널 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 메소드를 호출한 후 그 반환 값을 확인 없이 역참조하면 예외가 발생할 수 있습니다.\n널을 반환할 수 있는 메소드의 반환 값은 항상 값 검사 후 사용합니다.",
  "NULL_RETURN_CSHARP.description": "널 반환 값 역참조 체커는 반환된 널 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 함수의 경우 항상 널 확인을 수행하고 사용해야 합니다. 이렇게 하지 않을 경우, 프로그램이 멈출 수도 있습니다.\n널을 반환할 수 있는 함수는 항상 널 확인을 하고 사용합니다.",
  "NULL_RETURN_STD.description": "표준 라이브러리 널 반환 값 역참조 체커는 Java 표준 라이브러리 메소드중에서 널을 반환할 가능성이 있는 메소드의 반환 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 표준 라이브러리 메소드를 호출한 후 그 반환 값을 확인 없이 역참조하면 예외가 발생할 수 있습니다.\n널을 반환할 수 있는 표준 라이브러리 메소드의 반환 값은 항상 값 검사 후 사용합니다.",
  "NULL_RETURN_STD_CSHARP.description": "표준 라이브러리 널 반환 값 역참조 체커는 C# 표준 라이브러리 메소드 중에서 널을 반환할 가능성이 있는 메소드의 반환 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 표준 라이브러리 메소드를 호출한 후 그 반환 값을 확인 없이 역참조하면 예외가 발생할 수 있습니다.\n널을 반환할 수 있는 표준 라이브러리 메소드의 반환 값은 항상 값 검사 후 사용합니다.",
  "NULL_RETURN_USR.description": "사용자가 작성한 library 들 중에 널을 돌려줄 가능성이 있는 메소드 들로부터 값을 특정 변수에 할당한 뒤, 이 변수의 널 확인을 하지 않고 이 변수를 바로 역 참조하는 경우에 경고를 냅니다. 보통 모든 프로그램에서 널을 돌려줄 가능성이 있는 함수들의 결과들은 항상 널 확인을 하고 사용해야 합니다. 이렇게 하지 않을 경우, 시스템의 기능을 멈추게 할 수도 있습니다. 자바 분석기는 NULL_RETURN_USR Rule 을 검출하기 위해서 사용자가 작성한 library 가 하는 일을 작성해서 엔진에 제공해야 하는데, 두 가지 방법으로 작성할 수 있습니다.",
  "NULL_RETURN_USR_CSHARP.description": "사용자가 작성한 library 들 중에 널을 돌려줄 가능성이 있는 메소드로부터 값을 특정 변수에 할당한 뒤, 이 변수의 널 확인을 하지 않고 이 변수를 바로 역 참조하는 경우에 경고를 냅니다. 보통 모든 프로그램에서 널을 돌려줄 가능성이 있는 함수들의 결과들은 항상 널 확인을 하고 사용해야 합니다. 이렇게 하지 않을 경우, 시스템의 기능을 멈추게 할 수도 있습니다. C# 분석기는 NULL_RETURN_USR 룰을 검출하기 위해서 사용자가 작성한 library 가 하는 일을 작성해서 엔진에 제공해야 합니다.",
  "NULL_SHALL_BE_POINTER_CONSTANT.description": "포인터 변수에 정수형 널 대입 체커는 포인터 타입 변수에 정수형 0을 대입한 경우를 검출합니다.\n포인터 대입 연산 외에도 동등, 부정 비교 및 3항 연산자에서 정수형 0이 포인터의 자리에 사용되는 것도 함께 검사합니다.\n포인터에 널 값을 대입할 때 int 등 정수형의 0 이 아닌 void * 등 포인터 타입으로 캐스팅된 0을 대입하여야 합니다. 일반적으로 표준 헤더에 정의되어 있는 널 매크로를 대입하면 됩니다.",
  "NULL_SHALL_NOT_BE_INTERGER_VALUE.description": "정수값으로 사용한 널 포인터 체커는 일반 정수값을 사용해야 할 곳에서 널 포인터를 사용한 수식을 검출합니다.\n일반적으로 널 포인터로 사용하는 널 매크로는 정수값 0입니다.\n널 포인터를 표현하기 위해서는 널 매크로를 사용하며, 그 이외의 경우에는 0 값을 사용하도록 합니다.",
  "NULL_STATEMENT_FOUND.description": "빈 문장 사용 체커는 특정한 방식의 사용만 예외적으로 허용되는 빈 문장이 허용되지 않는 방식으로 사용된 경우를 검출합니다.\n빈 문장을 사용하지 않거나 정해진 요건을 만족하도록 수정합니다.",
  "NcssConstructorCount.description": "본 Rule에서 사용하는 NCSS(Non Commenting Source Statements) 알고리즘은 특정 생성자의 코드 줄 수를 계산합니다. NCSS는 주석을 무시하며 실제 구문의 개수만을 셉니다. 또한 여러 줄로 분리된 하나의 구문은 한 개로 간주합니다. 기본적으로 100개 이상의 구문을 갖는 생성자를 검출합니다.",
  "NcssMethodCount.description": "본 Rule에서 사용하는 NCSS(Non Commenting Source Statements) 알고리즘은 특정 메소드의 코드 줄 수를 계산합니다. NCSS는 주석을 무시하며 실제 구문의 개수만을 셉니다. 또한 여러 줄로 분리된 하나의 구문은 한 개로 간주합니다. 기본적으로 100개 이상의 구문을 갖는 메소드를 검출합니다.",
  "NcssTypeCount.description": "본 Rule에서 사용하는 NCSS(Non Commenting Source Statements) 알고리즘은 특정 타입의 코드 줄 수를 계산합니다. NCSS는 주석을 무시하며 실제 구문의 개수만을 셉니다. 또한 여러 줄로 분리된 하나의 구문은 한 개로 간주합니다. 기본적으로 1500개 이상의 구문을 갖는 타입을 검출합니다.",
  "NegativeArraySize.description": "배열의 크기를 음수로 선언하는 것은 정의되지 않은 행동입니다.",
  "NegativeIndex.description": "인덱스 -1은 범위를 벗어납니다.",
  "NegativeMemoryAllocationSize.description": "메모리 할당 크기가 음수입니다.",
  "NoClassAttribute.description": "'class' 속성은 허용되지 않으며, 이를 사용한 경우를 검출합니다. CSS style을 위한 style속성을 사용할 것을 권장합니다.",
  "NoConstructor.description": "클래스가 private 변수를 지니고 있음에도 생성자를 포함하지 않습니다. 멤버 변수가 명확한 형식을 지니고 있음에도 클래스가 인스턴스화 할때 초기화되지 않습니다. 이러한 행동은 버그 또는 정의되지 않은 행동을 야기합니다.",
  "NoCopyConstructor.description": "클래스가 포인터를 포함하는 경우에는 복사 연산자를 지정하는 것이 권장됩니다.",
  "NoExplicitConstructor.description": "클래스가 생성자를 포함하지만 명시적으로 정의되어 있지 않습니다. 생성자들은 일반적으로 형식 확인을 위해 명시적으로 정의됩니다. explicit 키워드를 사용하여 생성자를 정의하는 것은 클래스가 다른 방식으로 사용되는 것을 방지할 수 있습니다.",
  "NoHtmlComments.description": "HTML 주석은 애플리케이션 서버와 클라이언트간의 페이지 로드를 증가시킵니다. JSP 주석을 활용할 것을 권장합니다.",
  "NoInlineScript.description": "HTML의 인라인 스크립트의 사용을 검출합니다. <script> 내의 src 속성을 이용하여 HTML 스크립트를 추출할 경우 해당 스크립트는 페이지간에 재사용되며, 브라우저는 이를 캐싱하여 전반적인 다운로드 대역폭을 감소시킵니다.",
  "NoInlineStyleInformation.description": "JSP 파일에 스타일과 관련된 정보(예: <b>, <font>, 또는 그 외 tag 속성에 align='...'과 같은 속성)가 포함된 경우 이를 검출합니다.",
  "NoJspForward.description": "JSP 파일들간의 forwarding을 사용한 경우 이를 검출합니다.",
  "NoLongScripts.description": "JSP 파일에 10줄 이상의 스크립트가 포함된 경우 이를 검출합니다. 많은 스크립트가 JSP에 포함되면 서버와 클라이언트간의 페이지 로드를 증가시키기에 별도의 JavaScript 파일을 만들어 include할 것을 권장합니다.",
  "NoPackage.description": "package 선언문이 없는 코드을 검출합니다.",
  "NoScriptlets.description": "JSP 파일에 scriptlet이 포함된 경우 이를 검출합니다. 이는 JSP파일 내에 Java코드를 직접 서술하는 것보다 별도의 tag 라이브러리는 사용하기를 권장합니다.",
  "NonCaseLabelInSwitchStatement.description": "Switch 구문 내에 일반적인 케이스 넘버링에 의한 레이블이 아닌 다른 레이블링을 한 경우 이를 검출합니다.",
  "NonStaticInitializer.description": "비정적인 초기화 블록은 생성자가 호출 될 때마다 항상 이전에 호출됩니다. 그러나 이는 유효한 방법이지만 매우 드물게 사용되며 혼란의 여지가 있기 때문에 권장하지 않습니다.",
  "NonThreadSafeSingleton.description": "스레드 안전하지 않은 정적 싱글턴의 사용을 검출합니다.",
  "ONE_DEFINITION_RULE.description": "하나 이상의 정의 금지 체커는 모든 인라인이 아닌 함수 또는 객체가 하나 이상의 정의를 가지면 검출합니다.\n함수 또는 객체는 다만 하나의 정의만 가져야 합니다.",
  "ONE_READ_CHAR_PUSH_BACK.description": "ungetc() 함수 반복 호출 체커는 ungetc() 함수를 여러 번 호출하는 경우를 검출합니다.\n해당 체커에서는 ungetc()와 ungetwc() 함수를 검사합니다.\n한 개 이상의 문자를 읽어들여야 한다면 ungetc() 함수 대신 fgetpos()와 fsetpost() 함수를 사용하도록 합니다.",
  "ONLY_ARG_DEPENDENT_LOOKUP.description": "모호한 템플릿 함수 호출 체커는 템플릿 함수 호출이 모호한 수식을 검출합니다.\n모호한 상황은 다음과 같은 경우에 발생합니다. 일반 함수A를 X라는 이름으로 선언합니다. 템플릿 함수B에서 A함수를 호출합니다. B함수 이후에 네임스페이스 C 내부에서 A의 인자와 같은 타입의 변환 연산자를 가지는 구조체 D를 정의합니다. 네임스페이스 C내부에서 구조체D를 인자로 받고 A 함수와 이름이 같은 E함수를 정의합니다. F함수를 정의하고 내부에서 구조체D 객체를 정의한 뒤 X란 이름을 가지는 함수를 호출합니다. X란 이름의 호출이 A를 호출할지 E를 호출할지 모호해집니다.\n한정자를 사용하여 원하는 함수를 호출합니다. 명확하게 함수를 호출할 경우 호출 결과가 개발자의 예상과 일치합니다.",
  "ONLY_DECLARE_TRIVIAL_FUNCTINS_INLINE.description": "복잡한 함수의 인라인 선언 체커는 인라인으로 선언된 복잡한 함수를 검출합니다.\n이때 복잡한 함수는 내부에서 반복문이 사용되었거나 재귀호출이 이루어진 함수를 가리킵니다.\n복잡한 함수는 inline 키워드를 사용하지 않습니다. 간단한 함수에 꼭 필요한 경우에만 inline 키워드를 사용합니다.",
  "ONLY_INLINE_NON_VIRTUAL_CTOR_DTOR.description": "특수 메소드의 인라인 선언 체커는 인라인으로 선언된 일부 클래스 메소드를 검출합니다.\n이때 검출하는 특수 메소드는 가상 메소드와 생성자, 소멸자입니다.\n가상 함수와 생성자, 소멸자는 inline 키워드를 사용하지 않습니다. 간단하고 비가상인 메소드에만 inline 키워드를 사용합니다.",
  "ONLY_INLINE_SIMPLE_FUNCTION.description": "커다란 함수의 인라인 선언 체커는 인라인으로 선언된 커다란 함수를 검출합니다.\n이때 커다란 함수는 특정 라인 수나 문장의 수를 초과한 함수를 가리킵니다. 이 수치는 옵션으로 설정할 수 있습니다.\n커다란 함수는 inline 키워드를 사용하지 않습니다.",
  "ONLY_LOOP_CONTROL_IN_FOR.description": "for 구문에서 반복 제어 변수가 아닌 다른 변수가 사용될 경우를 검출합니다.",
  "ONLY_LOOP_COUNT_INC_DEC.description": "for 구문에서 루프 카운터가 아닌 변수를 증감 연산 체커는 증감부에서 루프 카운터가 아닌 변수에 대해 증감 연산을 한 for 구문을 검출합니다.\nfor 구문의 증감부에서는 항상 루프 카운터만 증감 연산을 수행하도록 합니다.",
  "ONLY_MAIN_IN_GLOBAL_SCOPE.description": "전역 범위에서 변수 및 함수 선언 체커는 전역 범위에서 메인 함수와 네임스페이스 선언을 제외한 변수 및 함수 선언을 검출합니다.\n전역 범위에는 반드시 메인 함수와 네임스페이스를 제외한 변수 및 함수를 선언하지 않도록 합니다.",
  "ONLY_ONE_LOOP_COUNT_INIT.description": "for 구문에서 루프 카운터가 아닌 변수를 초기화 체커는 초기화 영역에서 루프 카운터가 아닌 변수를 초기화한 for 구문을 검출합니다.\nfor 구문의 초기와 영역에서는 항상 루프 카운터만 초기화하도록 합니다.",
  "ONLY_THROW_OBJECT_OF_CLASS_TYPE.description": "허용되지 않은 타입의 예외 던짐 체커는 허용되지 않은 타입을 예외로 던지는 수식을 검출합니다.\n여기서 허용하는 타입이란 오로지 클래스 타입만이며, 나머지는 전부 허용되지 않는 타입입니다.\n예외로 던지는 타입은 반드시 std::exception 클래스와 상속 관계에 있는 클래스 타입으로 합니다.",
  "ONLY_VIRTUAL_FUNC_DEFINITION_ON_INHERIT_HIERARCHY.description": "가상 함수의 중복 정의 체커는 부모 클래스에서 이미 정의한 가상 함수를 자식 클래스에서 재정의하는 경우를 검출합니다.\n이 규칙의 목적은 클래스 계층 구조 어느 지점에서나 실행하는 함수의 내용이 동일하도록 하는 것입니다. 일반적인 객체지향 방식과는 다르지만 안정성은 올라갈 수 있습니다.\n가상 함수는 부모 클래스에서 한 번만 정의하도록 합니다. 혹은 부모 클래스에서 순수 가상 함수로 정의한 뒤, 자식 클래스에서 한 번만 정의하도록 합니다.",
  "OPEN_REDIRECT.description": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "OPEN_REDIRECT_ASPNET.description": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "OPERATOR_NEW_AND_DELETE_MISMATCHED.description": "메모리 연산자들의 오버로딩 영역 불일치 체커는 new와 delete 연산자 오버로딩 중에서 어느 한쪽이 빠져 있는 클래스를 검출합니다.\nnew와 delete 연산자를 같은 영역에서 오버로딩합니다.",
  "OPTION.CUSTOM_CHECKER.CVSS_RANGE.MINIMUM.INVALID_RANGE": "CVSS 점수의 최대값이 최소값보다 크거나 같아야 합니다.",
  "ORDER_EXCEPTIONS_FROM_DERIVED_TO_BASE.description": "순서가 올바르지 않은 catch 블록 체커는 catch 블록의 인자 타입이 자식에서 부모 순으로 정렬되어 있지 않은 catch 문을 검출합니다.\ncatch 블록의 인자 타입을 자식에서 부모 순으로 정렬합니다.",
  "ORGANIZE_CLASS_DEFINE.description": "클래스에서 잘못된 접근 권한 순서 체커는 멤버 선언이 public, protected, private 순으로 되어 있지 않은 클래스를 검출합니다.\npublic, protected, private 순서로 클래스 항목들의 접근 권한을 정렬합니다. 이것은 메소드와 필드 양쪽다 해당합니다.",
  "ORIGINAL": "원 오픈소스",
  "OS_COMMAND_INJECTION.description": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n예를 들어, strpbrk() 함수를 사용하여 추가적인 검증 없이 system 명령어를 입력하는 경우입니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "OVERLOADED_FUNCTION_TEMPLATE_NOT_BE_SPECIALIZED.description": "명시적 특수화된 함수의 모호한 호출 체커는 명시적 특수화가 존재하는 오버로딩 함수들을 호출한 수식을 검출합니다.\n명시적 특수화(Explicit Specialization)는 템플릿 요소에서 템플릿의 모든 매개 변수를 치환한 템플릿 구현을 제공한 것을 의미합니다. 예를들어 함수 템플릿에서 치환 가능한 모든 매개 변수의 타입을 정해둔 타입으로 선언하고 구현해둔 함수가 있다면 이것을 명시적 특수화라고 부릅니다.\n명시적 특수화가 필요한 함수는 오버로딩하지 않도록 합니다. 또는 명시적 특수화를 사용하지 않도록 합니다.",
  "OVERRIDE_ALL_OVERLOADS_OF_BASE_CLASS.description": "오버로딩 함수들의 오버라이딩 누락 체커는 부모 클래스에서 오버로딩 된 가상 함수들을 1개라도 오버라이딩하는 것을 누락한 자식 클래스를 검출합니다.\n오버로딩은 동일한 함수명을 가졌으나 인자의 타입이나 개수가 다른 함수를 의미합니다. 오버라이딩은 부모 클래스에서 가상으로 선언한 메소드를 자식 클래스에서 다른 동작을 하는 메소드로 재정의하는 것을 의미합니다.\n오버로딩 가상 함수들을 모두 오버라이딩합니다. 일반적인 가상 함수들은 동작에 따라 오버라이딩이 필요 없는 경우가 있습니다. 하지만 오버로딩 함수들은 만약 1개라도 오버라이딩했을 경우 반드시 모든 오버로딩 함수들을 오버라이딩하도록 합니다.",
  "OVERRIDE_HASHCODE_AND_EQUALS.description": "동일성과 해시 코드의 의미 불일치 체커는 두 객체의 동일성을 비교하는 메소드와 해시 코드를 계산하는 메소드 중 어느 한 쪽만 오버라이딩으로 구현된 경우를 검출합니다.\nhashCode() 메소드와 equals() 메소드의 구현 여부는 항상 일치해야 합니다.\nhashCode() 메소드와 equals() 메소드는 둘 모두를 오버라이딩하지 않거나 둘 모두를 오버라이딩하는 것이 좋습니다. 이때, equals() 메소드로 비교했을 때 같은 객체는 hashCode() 값도 같아야 하고, hashCode()의 값이 서로 다른 객체는 equals() 메소드로 비교했을 때 다른 객체로 판정되도록 작성해야 합니다.",
  "OVERRIDE_PURE_TO_NON_PURE.description": "순수 가상 함수의 오버라이딩 체커는 순수 가상 함수를 또다시 순수 가상 함수로 오버라이딩하는 메소드 선언을 검출합니다.\n순수 가상 함수는 자식 클래스에서 일반적인 방법으로 오버라이딩합니다.",
  "OneDeclarationPerLine.description": "한 줄에 여러 개의 변수를 선언 했을 경우를 검출합니다. 한 줄에 여러 변수를 선언했을 경우 가독성을 떨어 뜨릴 수 있습니다.",
  "OnlyOneReturn.description": "메소드 내에 다수의 반환 구문을 검출합니다.",
  "OperatorEq.description": "'class::operator='가 C/C++ 표준을 준수하지 않습니다. '=연산자'가 표준을 준수하기 위해서, 자기 자신의 레퍼런스를 반환해야 합니다(class &class::operator=() { ... return *this}) . 보안상의 이유로 해당 메세지는 무시할 수 있습니다. 보안이 표준 준수보다 중요하다면 이 메세지를 무시하십시오.",
  "OperatorEqMissingReturnStatement.description": "void 함수가 아닌 함수에서 반환하지 않는 것은 정의되지 않은 행동입니다.",
  "OperatorEqRetRefThis.description": "'operator='는 반드시 'this' 인스턴스의 레퍼런스를 반환해야 합니다.",
  "OperatorEqShouldBeLeftUnimplemented.description": "'operator='는 'this' 인스턴스의 레퍼런스를 반환하거나 private으로 선언되어 구현되지 않은 상태로 있어야 합니다.",
  "OperatorEqToSelf.description": "'operator='는 동적으로 할당된 메모리가 하나의 클래스 인스턴스에서 소유하고 관리하는 것을 확인해야 합니다.",
  "OperatorEqVarError.description": "멤버 변수가 복사 연산자에서 할당되지 않습니다.",
  "OppositeInnerCondition.description": "안쪽의 if문의 조건이 반대입니다. 사용되지 않는 코드 블록을 생성합니다.",
  "OptimizableToArrayCall.description": "toArray() 에 PrimarySuffix로 인덱스가 0인 배열을 생성하여 넣은 경우 이를 검출합니다.",
  "PACKAGE_COMMENT.description": "패키지 주석의 형식 체커는 형식에 어긋난 패캐지 주석을 검출합니다.\n세부적인 주석 형식은 옵션으로 조정할 수 있습니다.\n사전에 정의된 형식에 맞게 패키지 주석을 작성합니다.",
  "PACKAGE_PATH.NICE.description": "Biz 단의 소스의 패키지 경로와 xml의 소스 경로 비교하여 다른 경우를 검출합니다.",
  "PARAMETER_POINTER_TO_LOCAL.description": "지역 변수 주소를 외부에서 참조 체커는 지역 변수의 주소를 함수의 인자를 통해 외부에서 참조하는 경우를 검출합니다.\n해당 오류는 지역 변수의 주소를 함수의 인자에 Call By Reference로 전달할 때 해당 함수가 끝난 후에 외부에서 주소를 참조할 경우 잘못된 값을 읽어옴으로 인해 발생합니다.\n지역 변수의 주소를 외부 포인터에 대입하지 않도록 합니다.",
  "PASS_BY_VALUE.description": "PASS_BY_VALUE 오류는 구조체와 같이 크기가 큰 데이터를 함수의 인자로 복사하여 전달할 때 발생하는 오류입니다.",
  "PASS_OBJECT_OF_CORRECT_TYPE_TO_VA_START.description": "va_start 매크로 제약사항 위반 체커는 가변 인자를 다룰때 사용하는 va_start 매크로의 제약 사항을 위반한 경우를 검출합니다.\nva_start 매크로의 제약사항은 다음과 같은 항목들이 있습니다.\nva_start 매크로의 두번째 인수로 참조 타입을 전달해서는 안됩니다.\n일반적인 복사 생성자나 이동 생성자, 소멸자를 가지는 클래스를 두번째 인수로 전달하는 것은 구현 정의(Implementation defined)로 지원됩니다. 즉 컴파일러에 따라 지원할 수도 있고 지원하지 않을수도 있습니다.\nregister 키워드로 선언된 매개변수나 함수 타입의 매개변수를 전달할 수 있습니다.\n배열 타입의 객체를 전달해서는 안됩니다.\n기본 인수 승격이 발생하는 객체를 전달하면 안됩니다.\nva_start 매크로의 제약사항을 잘 지켜 프로그램을 작성하도록 합니다.",
  "PATENT_WARNING": "특허 분쟁 가능성",
  "PATH_TRAVERSAL.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자(\", /, \\, .. 등)를 제거하는 필터를 사용합니다.",
  "PATH_TRAVERSAL_ASPNET.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회 공격의 위험이 있는 문자( \" / \\ .. 등)를 제거하는 필터를 사용합니다.",
  "PERSISTENT_COOKIE.description": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.\n쿠키의 만료시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요 정보가 포함되지 않도록 설정해야 합니다.",
  "PERSISTENT_COOKIE_ASPNET.description": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.\n쿠키의 만료시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요 정보가 포함되지 않도록 설정해야 합니다.",
  "PLACE_PLAIN_CHAR.description": "plain char 타입에 숫자 사용 체커는 부호 표시가 없는 일반 char 타입의 변수에 숫자를 대입하거나 비교하는 수식을 검출합니다.\nplain char 타입에는 숫자를 사용하지 않도록 합니다.",
  "PLACE_SIGNED_CHAR.description": "signed char 타입에 문자 사용 체커는 unsigned char 혹은 signed char 타입의 변수에 문자를 대입하거나 비교하는 수식을 검출합니다.\nsigned char 타입에 문자를 사용하지 않도록 합니다.",
  "PLAINTEXT_PASSWORD.description": "비밀번호를 평문으로 저장 체커는 비밀번호를 암호화하지 않고 저장하는 코드를 검출합니다.\n비밀번호는 높은 수준의 암호화 알고리즘을 통해 생성되고 관리되어야 합니다.",
  "PLAIN_CHAR_OPERATION.description": "plain char 타입에 산술 연산 사용 체커는 부호 표시가 없는 일반 char 타입의 변수에 산술 연산을 사용하는 수식을 검출합니다.\nplaint char 타입에는 산술 연산을 사용하지 않도록 합니다.",
  "PLATFORM_LIMITATION": "특정 플랫폼에서만 사용 가능",
  "POINTER_ARITHMETIC_NOT_ON_ARRAY.description": "배열이 아닌 타입에 포인터 연산 사용 체커는 배열이 아닌 일반 포인터 타입 객체에 포인터 연산을 사용한 수식을 검출합니다.\n포인터 연산은 배열 타입 객체나 배열 타입 객체를 가리키는 포인터에만 사용하도록 합니다.",
  "POSTFIX_OPERATOR_SHOULD_RETURN_CONST.description": "잘못된 후위 연산자의 한정자 체커는 반환 값에 상수 한정자가 없는 후위 증감 연산자 오버로딩을 검출합니다.\n후위 증감 연산자는 ++와 --연산자가 객체의 뒤에 오는 연산자들입니다. 컴파일러는 증감 연산자 오버로딩 선언 시 인자 타입에 int를 넣어주면 후위 증감 연산자의 오버로딩으로 인식합니다. 즉 이 체커는 구체적으로 반환 타입에 const가 없는 operator++(int), operator--(int) 선언을 검출합니다.\n후위 증감 연산자는 상수 지시자를 붙여 객체를 반환해야 합니다.",
  "POSTPONE_VARIABLE_DEFINITIONS.description": "너무 넓은 변수 활성 범위 체커는 지역 변수를 사용 직전보다 이르게 선언하여 오랫동안 범위에 살아있게 되는 경우를 검출합니다.\n변수가 사용되기 직전까지 변수 정의를 연기하면 생성 및 소멸의 불필요한 비용을 아낄 수 있습니다. 또한 사용하는 변수가 선언된 위치를 찾는 데에도 도움을 줍니다.\n지역 변수를 최대한 사용 직전에 선언하여 활성 범위(live range)를 최소화합니다.",
  "POTENTIAL_INFINITE_LOOP.description": "잠재된 무한 반복의 가능성 체커는 반복 구문에서 잠재적으로 무한 반복의 가능성이 있는 코드를 검출합니다.\n무한 반복의 가능성을 판단하는 기준은 다음과 같습니다. - 의도적으로 무한 루프를 사용하고 루프를 탈출하기 위한 종료 구문(예: break, return)이 없는 경우입니다. 이 경우에 옵션으로 알람을 울리지 않도록 조정할 수 있습니다. - for 문의 조건부가 비어 있는 경우입니다. for 문에서 루프를 탈출하기 위해 사용되는 코드를 조건부에 작성하는 것이 좋습니다. 이 경우에 옵션에서 알람이 울리지 않도록 조정할 수 있습니다. - for 문의 루프 카운터가 블록 내에서 변경되는 경우입니다. for 문의 루프 카운터는 증감부에서만 변경되는 것이 좋습니다. 이 경우에 옵션에서 알람이 울리지 않도록 조정할 수 있습니다. - 정수형과 같은 기본 타입 루프 카운터를 동등 비교(==, !=)하고, 해당 값이 순차적으로 증감하지 않는 경우입니다. - 정수형과 같은 기본 타입 루프 카운터의 경계값과 증감 방향이 서로 다른 경우입니다. - 루프 카운터의 값이 반복문 안에서 바뀌지 않는 경우입니다.\n무한 반복의 가능성이 있는 코드를 작성하지 않도록 합니다.",
  "PRECEDE_INCLUDE.description": "파일 최상단에 위치하지 않은 include 전처리 구문 체커는 include 전처리 구문이 파일 최상단에 위치하지 않은 경우를 검출합니다.\n이때 파일 최상단에 다른 전처리 구문이나 주석이 오는 경우는 예외로 하도록 합니다.\n예외를 제외하고 항상 파일 최상단에는 include 전처리 구문이 오도록 합니다.",
  "PREDICATES_SHOULD_NOT_HAVE_NONSTATIC_DATA.description": "조건자에서 비정적 필드 값 수정 체커는 비정적 필드 값을 수정하는 조건자 메소드 선언을 검출합니다.\n조건자(Predicate)는 STL에 속한 알고리즘 함수들의 술어부에 쓰이는 특별한 클래스 타입입니다. 일반적으로 클래스의 선언과 함께 operator()() 메소드를 구현한 형태로 이루어져 있습니다.\n기본적으로 필드 값을 사용하지 않는 것을 권장합니다. 혹은 다른 이유로 사용해야 할 경우, 조건자 메소드를 const로 선언하여 상태값을 변경하지 않는다는 것을 보장하도록 합니다.",
  "PREFER_SPECIAL_MEMBER_AND_OVERLOADED_OP.description": "적절하지 않은 클래스 객체를 대상으로 하는 C 표준 라이브러리 사용 체커는 일부 C 표준 라이브러리를 사용하여 Non-trivial 클래스 객체 혹은 비표준 레이아웃 클래스 객체를 조작하는 경우를 검출합니다.\n여러 가지 C 표준 라이브러리 함수는 객체에 대한 바이트 조작을 수행합니다. 예를 들어 std::memcmp()는 두 객체의 바이트 구성을 비교하고, std::memcpy()는 객체 표현을 구성하는 바이트를 대상 버퍼에 복사합니다. 그러나 일부 객체 타입을 대상으로 이러한 함수를 사용하면 정의되지 않은 동작이 발생합니다.\nNon-trivial한 클래스 타입의 객체를 초기화하기 위해 std::memset()을 사용하거나 객체 사본을 생성하기 위해 std::memcpy()를 사용하면 안됩니다. 또한 비표준 레이아웃 클래스 타입의 객체들을 비교하기 위해 std::memcmp()를 사용해서도 안됩니다. 모든 경우에 C++에서 제공하는 대안을 사용하는 것이 바람직합니다.\nC 표준 라이브러리 대신 클래스의 특별한 메소드나 연산자 오버로딩을 사용하도록 합니다.",
  "PREFER_TO_USE_SIGNED_VALUE.description": "부호없는 숫자 값 사용 체커는 부호없는 숫자 값을 사용한 경우를 검출합니다.\n부호없는 숫자 값 대신 signed 숫자 값 사용을 먼저 고려해야 합니다. 부호있는 정수와 부호없는 정수 간의 변환은 종종 알아채기 힘든 문제를 발생시킬 수 있습니다.\nunsigned 숫자 값 대신 signed 숫자 값을 사용합니다.",
  "PREMATURE_THREAD_TERMINATION.description": "다중 스레드 환경에서 자식 스레드 분리 여부 확인 체커는 부모 스레드가 조인을 통해 자식을 기다리거나, 부모 스레드가 먼저 끝나야 하는 경우 detach를 통해 자식 스레드를 분리하지 않은 경우를 검출합니다.\nPTHREAD에서 pthread_create() 함수 호출을 한 이후에 부모 스레드가 pthread_join() 함수 또는 pthread_detach() 함수를 호출하지 않을 경우에 검출됩니다.\npthread_create() 함수를 호출한 후 부모 스레드에서 pthread_join() 함수 또는 pthread_detach() 함수를 호출해야 합니다.",
  "PRESERVE_ARRAY_DIMENSION.description": "포인터로 붕괴하는 배열 체커는 함수 인자로 전달하여 포인터로 붕괴하는 배열 객체를 검출합니다.\n배열을 함수의 인자로 전달하여 포인터로 붕괴시키지 않도록 합니다. 배열 객체를 캡슐화하는 것이 가장 좋으나, 꼭 함수로 전달해야 할 경우 범위 정보까지 전달할 수 있도록 함수의 매개 변수를 선언합니다. 또는 배열 타입 객체를 포인터 타입 변수에 대입하여 이 배열 타입 객체를 포인터처럼 사용하겠다고 선언하는 것이 좋습니다. 마지막 방법은 &arr[0] 와 같이 배열 타입이 포인터 타입으로 변경되어 전달된다는 사실을 수식에 나타나도록 명시적으로 표현하는 것입니다.",
  "PRESERVE_THREAD_SAFETY_AND_LIVENESS.description": "잘못된 조건 변수 사용 체커는 조건 변수를 잘못 사용하여 스레드 안정성과 유효성이 떨어지는 경우를 검출합니다.\n여기서 조건 변수를 잘못 사용한 경우는 스레드 블록을 풀기 위한 cnd_signal() 함수 등을 잘못 사용했을 때를 의미합니다.\n각 스레드별로 고유한 조건 변수를 사용하도록 합니다. 혹은 cnd_signal() 대신 cnd_broadcast() 함수를 사용하도록 합니다.",
  "PREVENT_DATA_RACES.description": "다중 스레드 환경에서 비트 필드 접근 체커는 서로 다른 스레드에서 인접한 비트 필드를 수정하는 경우를 검출합니다.\n인접한 비트 필드에 값을 저장할 경우에는 뮤텍스를 잠근 후에 데이터를 조작하도록 합니다.",
  "PREVENT_DESERIALIZATION_OF_UNTRUSTED_DATA.description": "직렬화(Serialization)는 인스턴스 정보를 바이트 스트림으로 복사하는 작업으로, 메모리 상에서 실행되고 있는 객체의 상태를 그대로 복제하여 파일로 저장하거나 수신 측에 전달합니다. 역직렬화(Deserialization)는 반대 연산으로 바이너리 파일이나 바이트 스트림으로부터 객체 구조로 복원합니다. 이 때, 송신자가 네트워크를 이용하여 직렬화된 정보를 수신자에게 전달하는 과정에서 공격자가 전송 또는 저장된 스트림을 조작할 수 있는 경우에는 신뢰할 수 없는 역직렬화를 이용하여 무결성 침해, 원격 코드 실행, 서비스 거부 공격 등이 발생할 수 있는 보안약점입니다.\n초기화되지 않은 스택 메모리 영역의 변수는 임의 값이라 생각해서 대수롭지 않게 생각할 수 있지만 이전 함수에서 사용되었던 내용을 포함하고 있습니다. 공격자는 이러한 약점을 사용하여 메모리에 저장되어 있는 값을 읽거나 특정 코드를 실행할 수 있습니다.\nObjectInputStream을 상속 받아 WhitelistedObjectInputStream 객체를 구현하도록 합니다. WhitelistedObjectInputStream에서는 readObject()를 실행할 경우 resolveClass 함수를 호출하여 설정한 화이트리스트와 비교합니다. 그러면 리스트에 없는 데이터에 대해 예외를 발생시키게 됩니다.",
  "PREVENT_MATH_FUNCTIONS_ERROR.description": "수학 함수 범위 오류 체커는 수학 함수에서 도메인 오류 및 영역 예러가 발생한 경우를 검출합니다.\n도메인 오류는 입력값이 수학 함수에서 정의한 도메인을 벗어날 때 발생합니다. 범위 오류는 함수의 실행 후 얻은 수학적 결과값이 극단적으로 커서 지정된 타입으로 표현되지 못하는 경우 발생합니다.\n수학 함수를 사용하기 전 입력값의 범위를 검사하고, 출력값의 범위를 검사합니다.",
  "PREVENT_OPERATIONS_ON_DEVICES.description": "파일 연산을 장치에 수행 체커는 파일을 대상으로만 적용 가능한 연산을 장치에 대해 수행하는 경우를 검출합니다.\n파일을 열거나 특정 작업을 수행하기 전에 파일이 디바이스를 나타내는 특수 파일인지 검사해야 합니다.",
  "PREVENT_SENSITIVE_DATA_WRITE_TO_DISK.description": "메모리의 중요 정보가 디스크를 통해 노출 체커는 메모리에 남아 있이던 중요 정보가 의도하지 않게 디스크에 기록되어 외부로 노출되는 경우를 검출합니다.\n중요 정보는 메모리에 최대한 짧은 시간동안 유지될 수 있게 사용이 끝나는 즉시 메모리에서 정리하도록 합니다. 또한 사고로 인해 중요 정보가 메모리에 남아 있는 상태에서 프로그램이 비정상 종료 되더라도 메모리 덤프가 일어나지 않도록 설정을 변경합니다.",
  "PREVENT_XML_INSERTION.description": "XML 삽입 방지 체커는 XML 문서에 신뢰할 수 없는 외부 입력 값이 사용되는 경우에, 입력 값에 대한 적절한 필터링이 수행되지 않는 코드를 검출합니다.\n신뢰할 수 없는 외부 입력값 userInput 변수를 부호 없는 정수 타입으로 변환함으로써 XML 태그를 삽입할 수 없도록 합니다.",
  "PRIVACY.ACCOUNT.description": "소스 코드에 존재하는 계좌 정보 체커는 소스 코드 내에 계좌 정보를 검출합니다.\n소스 코드에서 계좌 정보를 작성하지 않도록 합니다.",
  "PRIVACY.CREDIT_CARD.description": "소스 코드에 존재하는 신용 카드 정보 체커는 소스 코드 내에 신용 카드 정보를 검출합니다.\n소스 코드에서 신용 카드 정보를 작성하지 않도록 합니다.",
  "PRIVACY.DRIVER_LIC.description": "소스 코드 내에 존재하는 운전 면허 번호 정보 체커는 소스 코드 내에 운전 면허 번호 정보를 검출합니다.\n소스 코드에서 운전 면허 번호 정보를 작성하지 않도록 합니다.",
  "PRIVACY.EMAIL.description": "소스 코드에 존재하는 이메일 정보 체커는 소스 코드 내에 이메일 정보를 검출합니다.\n소스 코드에서 이메일 정보를 작성하지 않도록 합니다.",
  "PRIVACY.FOREIGNER_ID.description": "소스 코드에 존재하는 외국인 등록 번호 정보 체커는 소스 코드 내에 외국인 등록 번호 정보를 검출합니다.\n소스 코드에서 외국인 등록 번호 정보를 작성하지 않도록 합니다.",
  "PRIVACY.IP.description": "소스 코드 내에 존재하는 IP 정보 체커는 소스 코드 내에 IP 정보를 검출합니다.\n소스 코드에서 IP 정보를 작성하지 않도록 합니다.",
  "PRIVACY.NATIONAL_ID.description": "소스 코드 내에 존재하는 주민 등록 번호 정보 체커는 소스 코드 내에 주민 등록 번호 정보를 검출합니다.\n소스 코드에서 주민 등록 번호 정보를 작성하지 않도록 합니다.",
  "PRIVACY.PASSPORT.description": "소스 코드 내에 존재하는 여권 번호 정보 체커는 소스 코드 내에 여권 번호 정보를 검출합니다.\n소스 코드에서 여권 번호 정보를 작성하지 않도록 합니다.",
  "PRIVACY.PHONE.description": "소스 코드 내에 존재하는 전화 번호 정보 체커는 소스 코드 내에 전화 번호 정보를 검출합니다.\n소스 코드에서 전화 번호 정보를 작성하지 않도록 합니다.",
  "PRIVACY_CONCERNS_USING_GEOLOCATION_API.description": "Geolocation API의 사용 전 사용자 권한 확인 누락 체커는 Geolocation API를 사용하여 사용자의 위치 정보를 얻을 때 사용자의 권한을 확인하지 않는 코드를 검출합니다.\nGeolocation API는 웹 브라우저가 사용자 장치의 지리적 위치 정보에 접근할 수 있도록 허용합니다. 해당 API의 사양에서는 다음과 같이 사용자 에이전트가 사용자의 허가 없이 웹사이트에 위치 정보를 전송하는 것을 금지하고 있습니다.\n\"사용자 에이전트는 사용자의 허가 없이 웹사이트에 위치 정보를 전송하면 안됩니다. 사용자 에이전트는 아래에 설명된 것처럼 사용자와의 신뢰 관계가 미리 지정되어 있지 않으면 사용자 인터페이스를 통해 허가를 받아야 합니다. 사용자 인터페이스를 통해 얻은 권한은 취소가 가능해야 하며 사용자 에이전트는 복구된 권한을 따라야 합니다. \"\n위의 내용을 준수하기 위해서는 사용자의 위치 정보를 웹사이트에 전송하기 위해서 유저 인터페이스를 통해 미리 권한을 얻어야만 합니다.\nsuper.onGeolocationPermissionsShowPrompt() 호출과 android.webkit.GeolocationPermissions.Callback.invoke() 호출 사이에 실행 가능한 코드가 존재하지 않는 경우를 검출합니다.\nsuper.onGeolocationPermissionsShowPrompt() 호출과 android.webkit.GeolocationPermissions.Callback.invoke() 호출 사이에 실행 가능한 코드를 넣어 사용자의 권한을 확인해야 합니다.",
  "PRIVATE_COLLECTION.ASSIGN.description": "외부 데이터를 private 컬렉션에 저장 체커는 외부에서 접근 가능한 컬렉션 객체나 포인터 객체를 private 컬렉션이나 포인터 필드에 저장하는 경우를 검출합니다.\npublic 필드 변수 혹은 public 메소드에서 인자로 전달된 변수에 담긴 컬렉션 객체나 포인터 객체는 외부에서 접근 가능합니다.\nprivate 컬렉션 이나 포인터 필드에는 클래스 내부에서 직접 생성한 객체만을 저장합니다. 외부의 데이터를 필드에 전달해야 할 때는 객체를 직접 저장하지 말고 각 원소의 값을 별도로 복사하여 저장합니다.",
  "PRIVATE_COLLECTION.description": "private 컬렉션 노출 체커는 private이 아닌 메소드에서 private으로 선언된 배열 또는 컬렉션 타입 필드의 객체가 그대로 반환되는 경우를 검출합니다.\nprivate로 선언된 컬렉션 객체를 public 메소드를 통해서 통째로 반환하지 않도록 합니다. 필요한 경우 복사본을 생성하여 반환하거나 접근 및 수정을 제어하는 별도의 public 메소드를 선언하여 사용해야 합니다.",
  "PROCESS_CONTROL.description": "외부 입력 경로로 라이브러리 불러오기 체커는 외부 입력 경로를 사용하여 라이브러리를 불러오거나 명령을 실행하는 코드를 검출합니다.\n외부 입력 경로로 라이브러리를 불러오지 않도록 합니다.",
  "PROGRESS": "진행 상태",
  "PROHIBIT_DELETE_CONTAIN_ELEMENT_NUM.description": "배열 해제시 인덱스를 명시 체커는 delete 구문으로 배열을 해제할 때 인덱스를 명시한 수식을 검출합니다.\ndelete 구문으로 배열을 해제할 때 인덱스를 명시하지 않도록 합니다.",
  "PROHIBIT_ENUM_TYPE_BITFIELD.description": "열거형 비트 필드 선언 체커는 비트 필드의 타입이 열거형인 선언을 검출합니다.\n비트 필드의 타입으로 열거형을 사용하지 않도록 합니다.",
  "PROHIBIT_ENUM_TYPE_BITFIELD2.description": "-",
  "PROHIBIT_FUNC_IN_STDLIB.description": "금지된 표준 라이브러리 사용 체커는 표준 라이브러리 함수 중 일부 금지된 함수를 호출한 수식을 검출합니다.\n금지된 함수는 stdlib.h 에 정의된 abort(), exit(), getenv(), system() 함수입니다.\n금지된 표준 라이브러리를 사용하지 않도록 합니다.",
  "PROHIBIT_FUNC_IN_TIME.description": "금지된 시간 라이브러리 사용 체커는 시간 라이브러리 헤더를 포함한 전처리 구문을 검출합니다.\n이 규칙은 다른 금지된 함수와 관련된 규칙과 다르게 헤더 파일 포함 자체를 금지하고 있습니다. 금지된 시간 라이브러리는 time.h입니다.\n금지된 시간 라이브러리를 사용하지 않도록 합니다.",
  "PROVIDE_INSTALLATION_INFORMATION_REQUIRED": "설치 정보 제공 의무가 존재하는 경우",
  "PROVIDE_OUTPUT_OPERATOR.description": "출력 연산자 미제공 체커는 ostream을 위한 출력 연산자를 제공하지 않은 클래스를 검출합니다.\n출력 연산자란 operator<<() 메소드를 의미합니다. 구체적으로 이 체커는 ostream의 참조형을 반환하고 friend 선언이 되어 있는 operator<<() 메소드가 정의되어 있는 지를 검사하며, 이 조건을 충족하지 못한 클래스를 검출합니다.\n모든 클래스에서 출력 연산자를 정의합니다.",
  "PROVIDE_PROPERLY_ALIGNED_POINTERS_TO_PLACEMENT_NEW.description": "잘못된 placement new 사용 체커는 정렬 문제가 있는 주소 값을 placement new로 사용한 수식을 검출합니다.\nplacemnt new는 동적 할당을 하지 않고 특정 메모리 영역을 대상으로 객체를 생성하는 방식입니다.\nplacement new를 사용할 경우 잘 정렬된 메모리 주소 값을 버퍼로 사용해야 합니다.",
  "PTR_EXCEED_TWO_LEVELS.description": "2레벨을 초과하는 포인터 사용 체커는 포인터 변수 선언 시 포인터의 레벨이 2를 초과하는 선언을 검출합니다.\n포인터는 접근하려는 깊이에 따라 이중 포인터나 삼중 포인터 이상을 선언할 수 있습니다.\n포인터는 최대 이중 포인터까지만 선언하여 사용하도록 합니다.",
  "PUBLICLY_DERIVED_CLASS_SHOULD_BE_ABSTRACT.description": "비 추상 클래스를 public으로 상속 체커는 자식 클래스에서 public으로 상속한 비 추상 클래스를 검출합니다.\n부모 클래스를 public으로 상속받을 경우 부모 클래스를 추상 클래스로 만들도록 합니다.",
  "PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.description": "외부 데이터를 private 배열에 저장 체커는 외부에서 접근 가능한 배열 객체를 private 배열 필드 변수에 저장하는 경우를 검출합니다.\nprivate 배열 필드 변수에는 클래스 내부에서 직접 생성한 배열만을 저장합니다. 외부의 데이터를 배열에 전달해야 할 때는 배열 객체를 직접 저장하지 말고 각 원소의 값을 별도로 복사하여 저장합니다.",
  "PUBLIC_FIELD_SHOULD_BE_USED_WITHOUT_METHOD.description": "메소드와 public 인스턴스 필드 동시 사용 체커는 메소드 정의를 포함하는 클래스 안에 있는 public 인스턴스 필드 선언을 검출합니다.\n모든 인스턴스 필드를 private 혹은 protected로 선언합니다. 혹은 클래스 내에 선언된 모든 메소드를 삭제합니다.",
  "PUBLIC_STATIC_FIELD_WITHOUT_CONST.description": "const로 선언되지 않은 public 정적 멤버 변수 체커는 객체에 const 키워드로 표시되지 않은 public 정적 멤버 변수가 포함하는 경우를 검출합니다.\npublic 정적 멤버 변수는 접근자 없이 읽을 수 있으며 애플리케이션의 모든 클래스에서 변경할 수 있습니다.\npublic 정적 멤버 변수를 선언할 때 const 키워드를 사용하도록 합니다.",
  "PURPOSE_RESTRICTION": "특정 목적 사용 제한",
  "PackageCase.description": "package 이름이 소문자로만 이루어지지 않은 경우 이를 검출합니다.",
  "PointerAdditionResultNotNull.description": "비교문이 잘못되었습니다. 오버플로우를 이용한 포인터 연산은 정의되지 않은 행동입니다. 조건문 'ptr+1'은 오버플로우가 발생하지 않은 이상 0이 될 수 없습니다.",
  "PointerArithBool.description": "포인터 연산의 결과가 부울 자료형으로 변환됩니다. 부울 자료형은 정의되지 않은 행동이 있지 않는 이상 항상 true로 설정됩니다. 역참조를 잊으셨나요?",
  "PositionLiteralsFirstInComparisons.description": "상수와 변수를 euqals()로 비교시 변수.euqals(상수)의 패턴을 검출합니다.",
  "PrematureDeclaration.description": "변수 선언이 사용될 블록 바로 전에 이루어지지 않았을 경우를 검출합니다. 사용될 블록 바로 전에 선언되지 않을 경우 오용될 가능성이 있습니다.",
  "PreserveStackTrace.description": "Catch 구문에서 새로운 예외를 생성하는 구문을 검출합니다.",
  "ProperCloneImplementation.description": "객체의 clone() 메소드에서 super.clone()을 호출하지 않은 경우 이를 검출합니다.",
  "ProperLogger.description": "로거는 정적 private final로 선언되어야 하며 올바른 클래스를 가져야 합니다. 또한 드물게 로거가 여러 생성자들로 전달되어야 하는 경우 private final도 허용됩니다.",
  "PurgedConfiguration.description": "'어떤' 설정은 같은 코드를 가진 다른 설정에서 이미 검사했습니다",
  "RACE_CONDITION.EXT.description": "파일 이름에 의존하여 생기는 TOCTOU 경쟁 조건 체커는 파일 이름을 통한 파일 상태 확인과 실제 파일 사용 사이의 시간 차로 인해 발생하는 경쟁 조건을 검출합니다.\n이미 열린 파일의 이름을 가지고 또 다시 파일에 관한 함수 chown(), stat(), chmod(), remove() 함수 등이 호출되는 경우를 검출합니다.\n파일 포인터 또는 파일 기술자를 사용할 경우에 의도하지 않은 파일을 접근하게 되는 문제를 줄일 수 있습니다. chown(), stat(), chmod() 함수보다는 경쟁 조건 문제가 발생하지 않는 fchown(), fstat(), fchmod()를 사용하여 파일에 대한 연산을 수행하도록 합니다.",
  "RACE_CONDITION.SWITCH.description": "switch 문 사용 중 경쟁 조건 발생 체커는 스위치(switch)문의 평가 식의 결과값이 실행 중 변할 위험이 있는 경우를 검출합니다.\n스위치(switch)문의 평가 식의 결과값이 실행 중 변할 수 있습니다.\nswitch 문에서 평가 값으로 사용하려고 하는 값을 별도 변수에 저장한 후 사용합니다.",
  "RACE_CONDITION.description": "파일 이름을 가지고 파일에 대한 연산을 수행하는 것은 위험합니다. 파일에 대한 연산은 파일 객체와 직접적으로 연결이 되는 파일 기술자나 파일 포인터를 사용하는 것이 안전합니다. 열린 파일이름을 가지고 또 다시 파일에 관한 함수 chown(), stat(), chmod(), remove() 등이 호출되는 경우를 검출합니다. chown(), stat(), chmod(), remove() 함수보다는 경쟁 조건 문제가 발생하지 않는 fchown(), fstat(), fchmod(), unlink()를 사용하길 권장합니다.",
  "RACE_CONDITION_STATIC_DATABASE_CONNECTION.description": "데이터베이스 연결 경쟁 조건 체커는 데이터베이스 연결 객체를 정적으로 선언한 경우를 검출합니다.\njava.sql.Connection 타입의 객체가 데이터베이스 연결 객체로 간주됩니다.\n해당 객체는 인스턴스 필드에 저장하는 것이 좋습니다.",
  "READ": "읽기",
  "READ_WRITE_BINARY_DATA.description": "잘못된 이진 데이터 전송 체커는 다른 시스템으로 잘못된 이진 데이터를 전송하는 경우를 검출합니다.\n다른 시스템 간에 데이터 무결성을 보장하지 않는 fread(), fwrite() 함수 등을 사용하면 이진 데이터 전송에 문제가 발생할 수 있습니다.\n다른 시스템으로 데이터를 전송할 때 텍스트 표현이나 데이터의 무결성을 보장하는 특수한 라이브러리를 사용하도록 합니다.",
  "REDISTRIBUTION_RESTRICTION": "재배포할 수 있는 Software의 하위 구성 요소(Source Code, Binary file 등) 제한",
  "REDUNDANT_CAST.description": "불필요한 캐스팅 체커는 이미 해당 타입인 값을 다시 그 타입으로 명시적 캐스팅하는 경우를 검출합니다.\n불필요한 명시적 캐스팅을 삭제합니다.",
  "REDUNDANT_CONDITION.description": "불필요한 조건식 체커는 항상 만족되거나 절대로 만족될 수 없는 조건식을 사용하는 코드를 검출합니다.\n조건식을 실수로 잘못 작성했다면 수정해야 합니다. 혹은 조건부로 실행되도록 작성한 코드가 실제로는 항상 실행되거나 혹은 절대로 실행되지 않는 코드일 수 있습니다. 이러한 경우 조건문이나 해당 코드 전체를 삭제합니다.",
  "REDUNDANT_NAME.description": "동일한 이름의 지역 변수와 정적 변수 체커는 동일한 이름의 정적 변수와 지역 변수를 사용하는 코드를 검출합니다.\n동일한 이름의 지역 변수와 정적 변수를 사용하지 않도록 합니다.",
  "REFER_ATOMIC_VARIABLE_MANY_TIMES_IN_EXPRESSION.description": "표현식에서 원자 변수 두 번 참조 체커는 표현식에서 atomic 변수를 두 번 참조한 경우를 검출합니다.\n표현식에서 원자 변수를 두 번 참조하지 않도록 주의합니다.",
  "RELATIONSHIPS_IN_CONSTANT_DEFINITIONS.description": "상수 사이의 관계 누락 체커는 복수의 연관된 상수에 대한 관계를 식으로 사용하지 않고 각각을 독립적으로 선언하는 경우를 검출합니다.\n서로 연관된 상수의 관계식을 사용하여 해당 상수를 정의합니다.",
  "RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.description": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION_ASPNET.description": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "RELIANCE_ON_UNTRUSTED_INPUTS.description": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.\n상태 정보나 민감한 데이터, 사용자 세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행합니다. 또한 보안 설계 관점에서 신뢰할 수 없는 입력값이 애플리케이션 내부로 들어올 수 있는 지점을 파악해야 하며, 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토해야 합니다.",
  "RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.description": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.\n상태 정보나 민감한 데이터, 사용자 세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행합니다. 또한 보안 설계 관점에서 신뢰할 수 없는 입력값이 애플리케이션 내부로 들어올 수 있는 지점을 파악해야 하며, 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토해야 합니다.",
  "REPRESENTATION_SIGNED_INTEGER.description": "특정한 signed 표현 가정 체커는 특정한 signed 정수의 표현을 가정하는 경우를 검출합니다.\n특정한 signed 정수의 표현을 가정하지 않도록 합니다. 예를 들어 signed 정수를 1의 보수로 표현한다고 가정하여 홀수 짝수를 판단하기 위해 0x1 비트 연산을 수행하는 경우가 있습니다.",
  "REQUEST": "요청",
  "RESET_SIGNAL_HANDLER.description": "시그널 핸들러의 지속 사용 실패 체커는 운영 체제 환경으로 인해 시그널 핸들러를 유지시키는 데 실패하는 경우를 검출합니다.\n운영 체제에 따라 시그널 핸들러의 지속성과 작동 방식이 달라지므로 구현되는 세부적인 작동 방식을 이해해야 합니다,\n또한 시그널 핸들러를 지속적으로 사용하려면 안전한 방식을 사용해야 합니다.",
  "RESET_STRING_ON_FGETS_FAILURE.description": "파일 읽기 실패 후 버퍼 초기화 누락 체커는 함수가 파일을 읽는 데 실패하여 결과값을 저장할 문자열 버퍼를 초기화하지 않는 경우를 검출합니다.\nfgets() 함수나 fgetws() 함수를 호출했으나 작동에 실패했다면 대상 문자열 버퍼를 초기화해야 합니다.\n파일 읽기 함수의 작동이 성공했는지 실패했는지 확인하고 실패했을 경우엔 대상 버퍼를 초기화할 수 있도록 코드를 작성해야 합니다.",
  "RESOURCE_INJECTION.description": "리소스 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스 식별자를 검출합니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 리스트에서 선택되도록 합니다.",
  "RESOURCE_INJECTION_ASPNET.description": "리소스 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스 식별자를 검출합니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 목록에서 선택하도록 합니다.",
  "RESOURCE_LEAK_CSHARP.description": "리소스 누수 체커는 파일, 소켓 등 리소스를 할당한 후에 해제하지 않는 코드를 검출합니다.\n한 메소드 안에서 할당 받은 리소스는 그 메소드가 종료되기 전에 반드시 반환할 수 있도록 코드를 작성합니다. 특히 이런 리소스는 접근 도중 예외가 발생할 수 있는 경우가 많기 때문에 리소스가 사용되는 구간을 try 구문으로 감싸고 finally 블록에서 확실하게 반환하는 것이 좋습니다.",
  "RESTRICT_PARAM_VALUE_RANGE.description": "함수의 상수 인자 제한 범위 위반 체커는 상수 인자를 전달하며 어떤 함수를 호출할 때 그 상수 인자가 사전에 지정된 범위를 초과한 경우를 검출합니다.\n각 함수 및 함수 인자별 상수 인자의 범위 제약을 옵션으로 지정할 수 있습니다.\n함수 호출에서 상수 인자를 범위 안에 맞게 조정합니다.",
  "RESTRICT_USE_OF_EXTERN_KEYWORD.description": "extern 키워드 사용 체커는 extern 키워드를 사용한 경우를 검출합니다.\nextern 키워드의 사용을 제한합니다. 암시적으로 이미 외부 링크를 가질 때, extern 키워드를 사용하지 않습니다.\nextern 키워드를 사용하지 않습니다.",
  "RETURN_EMPTY_ARRAY_INSTEAD_OF_NULL.description": "빈 배열 대신 널 반환 체커는 한 함수 안에서 배열 객체를 반환하는 구문과 널을 반환하는 구문이 동시에 존재하는 경우를 검출합니다.\n배열을 반환하는 함수에서 반환할 배열의 내용이 딱히 없는 상황이라면 널을 반환하는 대신 빈 배열을 반환하는 것이 좋습니다.",
  "RETURN_ERRNO_WITH_ERRNO_T_TYPE.description": "잘못된 오류 번호 반환 타입 체커는 errno 관련 오류 코드를 반환하는 함수의 반환 타입이 errno_t로 선언되지 않은 경우를 검출합니다.\n오류 코드를 반환하는 함수를 선언할 때에는 반환 타입을 errno_t로 명시합니다.",
  "RETURN_FLOAT_CASTING.description": "실수형 캐스팅 없이 값 반환 체커는 실수형을 반환하는 함수에서 값을 실수형으로 캐스팅하지 않고 반환하는 구문을 검출합니다.\n실수형을 반환하는 함수에서는 반환값을 명시적으로 실수형으로 캐스팅한 후에 반환하도록 합니다.",
  "RETURN_FREE.description": "해제된 변수 반환 체커는 이미 해제된 메모리를 가리키는 변수를 반환하는 코드를 검출합니다.\n반환할 변수가 이미 해제되었는지를 확인해야 합니다.",
  "RETURN_IN_CATCH_STATEMENT.description": "catch 블록에서 반환 구문 사용 체커는 catch 블록 안에 반환 구문이 있는 경우를 검출합니다.\n값이 있는 반환이라면 반환할 값을 변수에 저장해두고 try 구문 전체가 끝난 후에 반환하도록 수정합니다.",
  "RETURN_LOCAL.description": "지역 변수의 주소 반환 체커는 지역 변수의 주소를 반환하는 코드를 검출합니다.\n버퍼를 반환할 때는 스택 영역에 할당되는 배열이 아닌 힙 영역에 할당되는 동적 할당 버퍼를 반환해야 합니다.",
  "RETURN_PARAM_ADDR.description": "매개변수의 주소값 반환 체커는 함수 매개변수의 주소값을 반환하는 수식을 검출합니다.\n반환 타입이 참조형인 함수는 인자 값을 그대로 반환할 경우 값이 아닌 매개 변수의 주소 값을 반환하게 됩니다.\n함수의 반환 타입을 참조형에서 값을 반환하도록 수정합니다. 또는 매개 변수를 값이 아닌 참조형으로 변경합니다.",
  "RETURN_REFERENCE_PARAM.description": "참조로 받은 인자 값의 반환 체커는 함수에서 참조 또는 const 참조로 전달된 인자를 참조 혹은 포인터로 반환하는 구문을 검출합니다.\n참조로 받은 인자 값을 참조나 포인터로 반환하지 않도록 합니다. 값 자체를 반환하지 않거나 복사한 값으로 반환하도록 합니다.",
  "RETURN_SHALL_NOT_HAVE_EXPRESSION.description": "void 함수에서 값 반환 체커는 반환 타입이 void인 함수가 반환문에서 값을 반환하는 경우를 검출합니다.\nvoid 반환 타입 함수에 반환 수식을 사용하지 않습니다.",
  "RETURN_VALUE_SHOULD_BE_CONST.description": "허용된 상수가 아닌 반환 사용 체커는 함수의 반환 구문에서 옵션에 지정된 상수가 아닌 값을 사용하는 코드를 검출합니다.\n옵션에서 허용되는 상수값을 설정할 수 있습니다.\n함수의 반환 구문에 옵션에 지정된 상수값을 사용하도록 합니다.",
  "REUSE_NAME_IN_DIFFERENT_FILE.description": "파일 간 식별자 중복 체커는 다른 파일에서 같은 함수명 혹은 변수명을 재사용하는 경우를 검출합니다.\n다른 파일에서는 다른 함수명과 변수명을 사용하도록 수정합니다.",
  "REVERSIBLE_ONE_WAY_HASH.description": "취약한 해시 알고리즘 체커는 보안성이 약한 해시 알고리즘을 사용한 경우를 검출합니다.\n보안성이 약한 해시 알고리즘은 MD2, MD5, SHA1입니다.\n보안성이 뛰어난 해시 알고리즘을 사용해야 합니다.",
  "RULE": "규칙",
  "RUN": "실행",
  "RedundantCondition.description": "잉여 조건이 있습니다. x>11인 상황에서 x>10는 항상 참을 반환합니다.",
  "RedundantFieldInitializer.description": "Java에서 필드를 기본 초기화 값으로 초기화 해줍니다. 따라서 기본값과 같은 값으로 초기화하지 않아야 합니다.",
  "RemoteInterfaceNamingConvention.description": "Session EJB의 Remote 인터페이스의 이름은 Session이나 EJB, 또는 Bean으로 끝나지 말아야 합니다.",
  "RemoteSessionInterfaceNamingConvention.description": "Session EJB의 Remote Home 인터페이스의 이름은 Home으로 끝나야 합니다.",
  "ReplaceEnumerationWithIterator.description": "Enumeration 타입 사용을 검출합니다. 이는 java.util.Iterator로 대체됩니다.",
  "ReplaceHashtableWithMap.description": "Hashtable 타입 사용을 검출합니다. 이는 java.util.Map으로 대체됩니다.",
  "ReplaceVectorWithList.description": "Vector 타입 사용을 검출합니다. 이는 java.util.ArrayList로 대체됩니다.",
  "ReturnAddressOfAutoVariable.description": "Auto로 선언된 변수의 주소가 함수에서 반환됩니다.",
  "ReturnAddressOfFunctionParameter.description": "함수 파라미터의 주소는 메모리 스택에 저장되어 함수가 끝날 때 해제되기 때문에 유효하지 않게 됩니다. 함수 파라미터의 주소를 반환하는 것은 유효하지 않습니다.",
  "ReturnEmptyArrayRatherThanNull.description": "배열을 반환하는 메소드에서 널 반환 구문을 검출합니다.",
  "ReturnFromFinallyBlock.description": "finally 블록 안에서 반환 문장을 쓰게 되면, 예외처리를 제대로 수행 못하게 될 수도 있습니다. finally 블록 안에 있는 반환 문은 try 블록 안에서 발생할 수도 있는 예외상황을 무시하게 할 수도 있기 때문입니다.",
  "ReturnLocalVariable.description": "지역 변수로 선언된 배열의 주소가 함수에서 반환됩니다.",
  "ReturnReference.description": "지역 변수의 레퍼런스가 반환됩니다.",
  "SAFELY_EXTRACT_FILES_FROM_ZIPINPUTSTREAM.description": "안전하지 않은 ZipInputStream에서의 파일 추출 체커는 신뢰할 수 없는 압축 파일을 해제할 때 파일 크기와 이름을 확인하지 않는 경우를 검출합니다.\n파일의 압축을 해제하고 결과를 저장하기 전에 이름과 크기를 확인합니다.",
  "SAME_THE_NUMBER_OF_PARAMETERS.description": "함수 선언 시 설정한 인자의 갯수와 호출 시 사용한 인자의 갯수가 일치하지 않습니다.",
  "SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX.description": "신뢰할 수 없는 정규식 체커는 검증되지 않은 외부 입력이 포함된 정규식 문자열을 검출합니다.\n정규식 생성에 직접 외부 입력을 사용하는 것을 자제하고 꼭 필요한 경우 정규식 특수 문자를 사용하지 못하도록 필터링하는 것이 좋습니다.",
  "SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX_ASPNET.description": "신뢰할 수 없는 정규식 체커는 검증되지 않은 외부 입력이 포함된 정규식 문자열을 검출합니다.\n정규식 생성에 직접 외부 입력을 사용하는 것을 자제하고 꼭 필요한 경우 정규식 특수 문자를 사용하지 못하도록 필터링하는 것이 좋습니다.",
  "SAVE_UNNECESSARY_REALLOCATION.description": "컨테이너의 재할당 발생 체커는 컨테이너의 불필요한 재할당이 발생하는 수식을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다.\n컨테이너를 미리 할당하는 것이 가능할 경우 불필요한 재할당이 없도록 합니다. 벡터의 경우 reserve() 메소드를 사용하면 미리 컨테이너 내부의 메모리 공간을 늘릴 수 있습니다.",
  "SCRIPT_INJECTION.REACT.description": "JSON.stringify()는 JavaScript 값이나 객체를 JSON 문자열로 변환하기 위해 사용됩니다. 일반적으로 JSON.stringify()는 별다른 위험이 없는 API이나 HTML 기반 환경에서 사용하면 XSS위험이 있습니다.\n JSON.stringify() 사용 시에 '<' 문자를 필터링하거나 serialize-javascript와 같은 안전한 라이브러리를 사용해야 합니다.",
  "SECURITY_DECISION_ON_DNS_LOOKUP.description": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "SEMI-COPYLEFT": "저작권자 요구, 배포 형태에 따라 다른 요구사항 요구하지만, 코드 공개하면 해결되는 경우",
  "SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.description": "안전하지 않은 쿠키 체커는 쿠키를 암호화하지 않은 채로 전송하는 경우를 검출합니다.\n브라우저 쿠키에 데이터를 저장할 때 Cookie 객체의 setSecure() 메소드를 호출하여 해당 속성을 true로 설정해야 합니다.\n모든 Cookie 객체에 대해 항상 setSecure() 메소드에 true를 전달하며 호출합니다.",
  "SERVER_SIDE_REQUEST_FORGERY.description": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 경우를 검출합니다.\n외부 입력을 포함하는 URL에 접속하려고 시도할 때 적절한 검증을 수행하도록 합니다.",
  "SERVER_SIDE_REQUEST_FORGERY_CSHARP.description": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 코드를 검출합니다.\n외부 입력을 포함하는 URL에 접속하려고 시도할 때 적절한 검증을 수행하도록 합니다.",
  "SERVLET_WORK_WITH_COMMITTED_RESPONSE.description": "응답이 커밋된 서블릿의 작업 수행 체커는 서블릿의 응답이 커밋된 후 특정 동작이 수행되는 코드를 검출합니다.\n웹 서블릿이 클라이언트로부터 요청을 받으면 적절한 응답을 생성해야 합니다. 이 과정에서 Java의 HttpServlet은 HttpServletResponse 객체를 제공하여 적절한 응답을 만듭니다. 이 응답은 getOutputStream() 메소드가 제공하는 출력 스트림이나 getWriter()가 제공하는 Writer를 사용하여 생성될 수 있으며 상태 코드와 HTML 헤더가 전송된 경우 응답이 커밋됩니다. 응답이 커밋된 후에는 다른 데이터가 응답에 추가될 수 있지만 일부 동작은 실행이 불가능합니다. 예를 들어, 인코딩의 경우 HTML 헤더에 포함되어 있기 때문에 커밋된 후에는 문자 인코딩을 변경할 수 없습니다\n검출 대상 메서드는 다음과 같습니다.\njavax.servlet.http.HttpServletResponse.sendError(int)\njavax.servlet.http.HttpServletResponse.sendError(int, java.lang.String)\njavax.servlet.http.HttpServletResponse.sendRedirect(java.lang.String)\njavax.servlet.http.HttpServletResponse.setDateHeader(java.lang.String,long)\njavax.servlet.http.HttpServletResponse.setHeader(java.lang.String,java.lang.String)\njavax.servlet.http.HttpServletResponse.setIntHeader(java.lang.String,int)\njavax.servlet.http.HttpServletResponse.setStatus(int)\njavax.servlet.http.HttpServletResponse.setStatus(int,java.lang.String)\njava.io.PrintWriter.flush()\njava.io.PrintWriter.append() \njava.io.PrintWriter.format() \njava.io.PrintWriter.print() \njava.io.PrintWriter.printf() \njava.io.PrintWriter.println() \njava.io.PrintWriter.write()\njavax.servlet.ServletOutputStream.flush()\njavax.servlet.ServletOutputStream.print()\njavax.servlet.ServletOutputStream.println()\njava.io.PrintWriter.flush()나 javax.servlet.ServletOutputStream.flush() 를 호출한 후 특정 메서드를 호출하지 않도록 합니다.\n",
  "SET_HTTP_ONLY_COOKIES.WEB.CONFIG.description": "HttpOnly가 아닌 쿠키 체커는 HttpOnly 속성을 부여하지 않은 쿠키 사용을 검출합니다.\n쿠키를 항상 HttpOnly 속성을 활성화하여 사용합니다.",
  "SET_STATIC_IN_NON_STATIC.description": "인스턴스 메소드 내에서의 정적 필드 변경 체커는 인스턴스 메소드 코드 중 정적 필드에 값을 대입하는 구문을 검출합니다.\n정적 메소드가 아닌 모든 메소드는 인스턴스 메소드입니다.\n인스턴스 메소드에서 정적 필드 정보를 변경해야 할 경우엔 정적 메소드를 호출하여 간접적으로 변경하는 것이 좋습니다.",
  "SHIFT_EXCEEDS_BIT_WIDTH.description": "대상 타입의 크기보다 큰 시프트 연산 체커는 대상 타입의 비트 크기보다 크게 시프트 연산자(>>, <<)를 적용하는 코드를 검출합니다.\n대상 타입의 크기보다 큰 시프트 연산을 수행하지 않도록 합니다.",
  "SHIFT_NEGATIVE.description": "음수 값 시프트 연산 체커는 음수 값에 시프트 연산자(>>, <<)를 적용하는 코드를 검출합니다.\n음수 값에는 시프트 연산을 수행하지 않아야 합니다.",
  "SIDE_EFFECT.DESIGNATED_INIT.description": "지정 초기화 리스트에서 부수 효과 발생 체커는 지정 초기화 리스트의 값 계산식에 부수 효과가 존재하는 경우를 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n지정 초기화 리스트에는 서로 간섭이 없이 결과값을 계산하기만 하는 식을 사용합니다.",
  "SIDE_EFFECT.INITIALIZER_LISTS.description": "초기화 리스트에서 부수 효과 발생 체커는 초기화 리스트의 초기값 계산식에 부수 효과가 존재하는 경우를 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n초기화 리스트에는 서로 간섭이 없이 결과값을 계산하기만 하는 식을 사용합니다.",
  "SIDE_EFFECTS_IN_UNEVALUATED_OPERANDS.description": "특정 수식들은 피연산자를 계산하지 않습니다. 아래의 수식은 피연산자를 계산하지 않습니다:\nsizeof(), typeid(), noexcept(), decltype() and declval().\n피연산자들을 계산하지 않기 때문에, 피연산자의 결과에 의존하는 동작들은 예상하지 못한 행동이 발생합니다.",
  "SIDE_EFFECT_RHS_OF_LOGICAL_OP.description": "논리 연산자의 우측항에 부수 효과 발생 체커는 논리 연산자의 우측항에서 부수 효과를 발생시키는 연산자를 사용하는 수식을 검출합니다.\n논리 연산자의 우측항에서 부수 효과가 발생시키는 연산자를 사용하지 않도록 합니다.",
  "SIGNAL_HANDLER_CALLS_LONGJMP.description": "시그널 핸들러로 등록된 함수에서 longjmp()를 호출하는 경우를 검출합니다.",
  "SIGNAL_HANDLER_CALLS_UNSAFE_FUNCTION.description": "시그널 핸들러 함수에서 비동기식 동작 시 안전하지 않은 함수 호출 체커는 비동기식으로 동작할 때 시그널 핸들러로 등록된 함수에서 안전하지 않은 함수를 호출하는 경우를 검출합니다.\n옵션에서 분석에서 제외할 함수를 지정할 수 있습니다.\n비동기식으로 동작할 때 시그널 핸들러에서 안전하지 않은 함수를 호출하지 않아야 합니다.",
  "SIGNAL_HANDLER_USES_NON_VOLATILE_VARIABLE.description": "시그널 핸들러에서 volatile이 아닌 변수 사용 체커는 시그널 핸들러에서 volatile로 선언되지 않은 전역 변수를 사용하는 경우를 검출합니다.\n시그널 핸들러에서 사용하는 전역 변수를 volatile로 선언하도록 합니다.",
  "SIGN_SEAL_WRITE.description": "잘못된 직렬화 순서 체커는 객체를 직렬화할 때 서명, 봉인, 출력의 순서로 작업하지 않는 경우를 검출합니다.\n서명, 봉인, 출력의 순서로 직렬화합니다.",
  "SINGLE_ARGUMENTED_CONSTRUCTOR_SHOULD_BE_EXPLICIT.description": "인자가 하나인 생성자는 explicit 으로 선언해야 합니다.",
  "SINGLE_LOOP_COUNTER.description": "1개가 아닌 루프 카운터 체커는 루프 카운터가 1개가 아닌 for 구문을 검출합니다.\nfor 문의 루프 카운터는 반드시 1개만 사용하도록 합니다.",
  "SINGLE_OR_MULTI_COMMENT.description": "지정된 방식이 아닌 주석문 사용 체커는 한 줄 주석 혹은 여러 줄 주석 중 옵션에 지정된 방식이 아닌 것으로 작성된 주석문을 검출합니다.\n프로젝트 전체에서 한 줄 주석 혹은 여러 줄 주석만을 사용하도록 옵션에 지정할 수 있습니다.\n지정된 방식으로만 주석문을 작성합니다.",
  "SIZEOF_DO_NOT_CONTAIN_SIDE_EFFECTS.description": "sizeof 피연산자에 부수 효과 발생 체커는 sizeof 피연산자에 부수 효과가 발생하는 수식을 검출합니다.\n추가적으로, sizeof 외에 유사한 이슈가 있는 decltype 과 같은 연산자에서도 동일한 방식으로 검출을 수행합니다.\nsizeof 피연산자에 부수 효과가 발생하는 수식을 작성하지 않도록 합니다.",
  "SIZE_CALCULATION.description": "메모리 동적 할당을 받기위한 함수 malloc을 사용할 때 자료형의 크기가 다를 경우를 검출합니다.",
  "SOCKET_IN_WRONG_STATE.description": "잘못된 소켓 함수 사용 체커는 소켓 관련 함수를 잘못 사용하는 코드를 검출합니다.\n소켓 관련 함수는 호출될 수 있는 적절한 상태가 존재하며,\n소켓 관련 함수를 순서에 맞게 사용해야 합니다.",
  "SOFTWARE_USING_THIS": "해당 소프트웨어를 사용하는 모든 소프트웨어",
  "SOURCECODE_IN_COMMENT.description": "주석 내 코드 체커는 주석 내에 소스 코드가 있는 경우를 검출합니다.\n주석 (//, /*...*/) 내에 소스 코드가 있는 경우를 찾습니다. 불필요한 코드는 주석처리가 아닌 삭제 할 것을 추천합니다.\n주석 내에 코드를 작성하지 않습니다.",
  "SOURCE_CODE": "소스코드",
  "SPECIFICATION_RESTRICTION": "특정 Specification 또는 standard와 관련되어 사용 제한",
  "SPECIFY_LENGTH_TYPEDEF.description": "스토리지 크기 없이 typedef 선언 체커는 기본 숫자 타입에 대한 typedef 선언에서 스토리지의 크기가 명시되지 않은 경우를 검출합니다.\n다만 기본 숫자 타입 중 plain char 타입과 C에서 boolean으로 사용되는 타입은 예외로 합니다.\n기본 숫자 타입을 typedef로 선언할 경우 일부 예외를 제외하곤 항상 스토리지 크기를 명시하도록 합니다.",
  "SQL_ID_PREFIX_PATTERN.KEUMKAMWON.description": "금융감독원 규칙에서는 IBATIS의 SQL ID prefix가 적절한 규칙을 따라 작성되어야 합니다.\n\n각각의 prefix는 다음과 같습니다.\nSELECT - get\nINSERT - insert\nUPDATE - update\nDELETE - delete",
  "SQL_INJECTION.IBATIS.description": "IBATIS SQL 삽입 체커는 클라이언트에서 애플리케이션으로 들어가는 입력 데이터를 통하여 생성되는 SQL 구문을 검출합니다.\n외부에서 입력된 값이 쿼리어의 명령어에 연결되는 문자열로 사용되면, 공격자가 의도하지 않았던 문자열을 전달함으로써 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하여 임의의 데이터베이스 명령어를 수행할 수 있습니다. 안전한 코딩을 위해서는 ibatis 데이터 맵 파일을 작성 시 인자를 받는 쿼리 명령어를 정의 시에 문자열 삽입 인자($..$)를 사용하지 않고, #.. # 형태의 쿼리문을 사용합니다.\n인자로 문자열을 전달할 때 '$인자$' 대신 '#'인자#'로 감싸 쿼리문의 구조가 변경되지 않도록 합니다.",
  "SQL_INJECTION.MYBATIS.description": "MYBATIS SQL 삽입 체커는 클라이언트에서 애플리케이션으로 들어가는 입력 데이터를 통하여 생성되는 SQL 구문을 검출합니다.\n외부에서 입력된 값이 쿼리어의 명령어에 연결되는 문자열로 사용되면, 공격자가 의도하지 않았던 문자열을 전달함으로써 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하여 임의의 데이터베이스 명령어를 수행할 수 있습니다 안전한 코딩을 위해서는 mybatis 데이터 맵 파일을 작성 시 인자를 받는 쿼리 명령어를 정의 시에 문자열 삽입 인자(${..})를 사용하지 않고, #{..} 형태의 쿼리문을 사용합니다.\n인자로 문자열을 전달할 때 '${인자}' 대신 '#{'인자}'로 감싸 쿼리문의 구조가 변경되지 않도록 합니다.",
  "SQL_INJECTION.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "SQL_INJECTION_ASPNET.description": "SQL 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 SQL 쿼리를 생성하기 위해 사용하는 코드를 검출합니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "SQL_INJECTION_HIBERNATE.description": "Hibernate에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 Hibernate API의 SQL 쿼리를 검출합니다.\n쿼리에 직접 외부 입력을 삽입하지 말고 외부 입력을 넣을 자리에 ?을 넣은 쿼리를 생성한 후 실제 쿼리 실행 시점에 인자로 외부 입력을 전달합니다.",
  "SQL_INJECTION_JDO.description": "JDO API에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 JDO API의 SQL 쿼리 또는 JDOQL 쿼리를 검출합니다.\n쿼리에 직접 외부 입력을 삽입하지 말고 외부 입력을 넣을 자리에 ?을 넣은 쿼리를 생성한 후 실제 쿼리 실행 시점에 인자로 외부 입력을 전달합니다.",
  "SQL_INJECTION_PERSISTENCE.description": "J2EE Persistence API에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 J2EE Persistent API의 SQL 쿼리를 검출합니다.\n쿼리문의 생성 시 상수 문자열만 사용하고 javax.persistence.Query.setParameter() 메소드를 사용해야 합니다.",
  "SSI_INJECTION.description": "SSI 삽입 체커는 검증되지 않은 외부 입력값이 사용된 Server-Side Includes(SSI)를 검출합니다.\n외부 입력값을 검증 후 사용합니다.",
  "STANDARD_CHARACTERS.description": "비표준 문자 사용 체커는 문자열 리터럴에 표준 문자 외의 문자를 사용한 경우를 검출합니다.\n영문자와 숫자, ASCII 코드의 특수기호, 스페이스, 백스페이스, 탭, 개행 문자가 표준 문자로 간주됩니다.\n문자열 리터럴에는 표준 문자만을 사용합니다.",
  "STANDARD_ESCAPE_SEQUENCE.description": "비표준 이스케이프 시퀀스 사용 체커는 ISO C 표준에 명시되지 않은 이스케이프 시퀀스를 사용하는 경우를 검출합니다.\n이스케이프 시퀀스란 백슬래시(\\) 뒤에 숫자가 오는 문자 조합을 가리킵니다. ISO C 표준에서 명시된 이스케이프 시퀀스는 다음과 같습니다. \\', \\'', \\?, \\\\, \\t, \\v, \\f, \\a, \\b, \\n, \\r, \\0.\n표준 이스케이스 시퀀스가 아닌 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "STATIC_FOR_VARIABLE_USED_IN_ONLY_ONE_FILE.description": "static으로 선언하지 않은 전역 변수 체커는 한 소스 파일 내에서만 사용하는 전역 변수를 static 키워드 없이 선언한 경우를 검출합니다.\n한 소스 파일 내에서만 사용하는 전역 변수는 static으로 선언하도록 합니다.",
  "STOP": "중지",
  "STRICT_MODE.CONFIG.description": "Typescript에서 Strict 설정은 광범위한 유형 검사 동작을 활성화하여 프로그램의 정확도를 높이고 오류의 발생을 줄일 수 있습니다. 이 기능을 비활성화하면 취약한 메소드가 사용되거나 각종 오류들이 무시되어 소스 코드에 잠재적인 취약점이 생길 수 있습니다.\nStrict 설정은 총 8개의 플래그를 활성화하며 각각의 기능은 아래와 같습니다.\n\n1. Always Strict: 모든 소스 파일에 use scrict를 추가하여 ECMAScript Strict Mode가 동작합니다.\n2. Strict Null Checks: null과 undefined를 명시적으로 처리합니다.\n3. Strict Bind Call Apply: 함수 호출, 바인딩 및 적용의 내장 메서드가 기본 함수에 대한 올바른 인수를 사용하여 호출되는지 확인합니다.\n4. Strict Function Types: 함수 매개변수를 더 정확하게 확인합니다.\n5. Strict Property Initialization: 클래스 property가 선언되었지만 생성자에서 설정되지 않은 경우 오류를 발생시킵니다.\n6. No Implicit Any: any 유형인 변수에 대하여 오류를 발생시킵니다.\n7. No Implicit This: any 유형이 있는 this 표현식에서 오류를 발생시킵니다.\n8. Use Unknown In Catch Variables: catch 문에 error 타입을 unknown으로 변경합니다.\nTypescript 설정 파일인 tsconfig.json혹은 jsconfig.json파일에 compilerOptions 섹션 내부 strict 속성을 true로 선언합니다.",
  "STRICT_USE_FOPEN_MODE.description": "잘못된 모드로 fopen() 함수 호출 체커는 잘못된 모드 매개 변수를 전달하여 fopen() 함수를 호출하는 경우를 검출합니다.\nfopen() 함수를 사용하여 파일을 열 때 항상 유효한 모드를 사용하도록 합니다.",
  "STRING.DUPLICATED.ABAP.description": "중복된 문자열 상수 사용 체커는 반복되어 사용된 동일한 내용의 문자열 상수를 검출합니다.\n동일한 내용의 문자열 상수가 일정 횟수 이상 반복되어 사용한 경우를 검출합니다.\n자주 사용되는 문자열인 경우 변수로 저장하여 사용합니다.",
  "STRING_CONVERSION_WITH_CONSTRUCTOR.description": "생성자를 사용한 문자열 변환 체커는 어떤 객체를 생성한 다음 즉시 toString() 메소드로 문자열로 변환하는 경우를 검출합니다.\n임시 객체를 생성하지 않고 다른 방법으로 문자열 변환을 시도합니다.",
  "STRING_LITERAL_MODIFICATION.description": "문자열 리터럴 수정 체커는 문자열 리터럴의 내용을 수정하는 수식을 검출합니다.\n문자열 리터럴을 선언한 후에는 수정하지 않도록 합니다. 만약 문자열을 수정해야 한다면 문자열 리터럴 대신 배열 등으로 선언하여 사용합니다.",
  "STRING_NORMALIZATION_REQUIRED_BEFORE_VALIDATION.description": "유효성 검사 전 문자열 정규화 필요 체커는 신뢰할 수 없는 외부 입력값에 대한 유효성을 검사하기 전에 문자열을 정규화(Normalize)하지 않은 코드를 검출합니다.\n신뢰할 수 없는 외부 입력값에 대해 유효성을 검사할 경우, 문자열을 정규화(Normalize)한 후 유효성을 검사합니다.",
  "STRTOK_CHANGES_STRING.description": "strtok() 함수의 첫 번째 인자 재사용 체커는 strtok() 함수를 호출하는 데 사용된 첫 번째 인자를 재사용하는 경우를 검출합니다.\nstrtok() 함수는 문자열을 단어 단위로 분할해주는 함수입니다. 해당 함수를 호출하면 원본 문자열의 토큰 부분이 널 문자로 대체됩니다.\nstrtok() 함수에 첫 번째 인자로 전달된 변수를 재사용하지 않도록 합니다. 만약 재사용해야 하는 경우 strtok() 함수에서는 원본 문자열을 복사한 값을 사용하도록 합니다.",
  "STRUTS.DUPLICATE_VALIDATION_FORM.CONFIG.description": "스트럿츠 : 중복 밸리데이션 양식 체커는 Apache Struts Validator를 통해 입력 양식의 유효성을 검사하는 경우, 두 개 이상의 검증 양식 이름이 동일한 코드를 검출합니다.\n유일한 검증 양식 이름을 사용하여 올바르게 정의한 유효성 검사가 수행될 수 있도록 합니다.",
  "SUPPLY_AN_INITIAL_VALUE_FOR_EACH_ENTRIES.description": "생성자에서 초기화 대상 누락 체커는 생성 과정에서 포함해야 할 초기화 대상 중 누락된 것이 있는 생성자를 검출합니다.\n구체적으로는 다음의 항목들을 만족해야 합니다. 모든 생성자들은 각각의 가상 부모 클래스 생성자, 비가상 부모 클래스 생성자, 비정적 데이터 멤버의 초기값이나 생성자 호출을 제공해야 합니다. 초기화는 멤버 초기화 리스트를 사용하여 수행되어야 합니다. 초기화 순서는 먼저 가장 상위의 베이스 클래스를 왼쪽으로 하여 파생된 클래스 순으로 생성자를 호출합니다. 이후 비정적 데이터 멤버를 선언한 순서대로 나열하도록 합니다.\n검출 조건에서 명시한 내용대로 초기화를 수행합니다.",
  "SWITCH_CASE_IN_SAME_SCOPE.description": "가까운 범위에 있지 않은 case 구문 체커는 switch 문과 가장 가까운 범위에 있지 않은 case 구문을 검출합니다.\n이러한 일이 발생하지 않도록 하려면 case 구문과 default 구문의 범위는 switch 문의 본문을 구성하는 복합 명령문이어야 합니다. 즉 모든 case 구문과 default 구문은 switch 구문 본문 내에 같은 범위에 있어야 합니다. 또한, 그 범위는 switch 구문 본문에 가장 가까운 범위여야 합니다.",
  "SYMBOLIC_LINK_RACE_CONDITION.description": "심볼릭 링크 TOCTOU 경쟁 조건 체커는 lstat() 함수의 호출 결과에만 의존하여 파일에 접근하는 코드를 검출합니다.\nlstat() 함수에만 의존하여 파일 정보를 확인하지 않도록 합니다. lstat() 함수로 원하는 파일이 맞는지 확인한 후에 open() 함수로 파일을 열고, 다시 fstat() 함수의 결과와 기존 lstat() 함수의 결과가 동일한 경우에만 작업을 진행합니다.",
  "SYMMETRIC_OPERATOR_SHOULD_BE_DEFINED_AS_FRIEND.description": "friend로 선언하지 않은 대칭 연산자 체커는 friend 키워드가 없는 대칭 연산자 선언을 검출합니다.\n단 이 검출 조건은 대입 연산자를 제외합니다.\n대입 연산자를 제외한 대칭 연산자를 오버로딩할 경우 항상 friend 키워드를 붙인 메소드로 선언하도록 합니다.",
  "SYNTACTICALLY_AMBIGUOUS_DECLARATIONS.description": "문법적으로 애매한 선언 체커는 작성된 코드가 표현식인지 혹은 선언문인지 해석하기 애매한 경우를 검출합니다.\n프로그래머가 문법적으로 애매한 선언을 작성하면 컴파일러는 코드가 표현식인지 혹은 선언문인지 해석하기 어려울 수 있습니다. 애매한 선언을 방지하기 위해 선언문은 중괄호 초기화(braced-init-list)를 사용하거나, 주위에 의미 없는 괄호를 제거하거나, \"=\"을 사용하여 초기화함으로써 명확하게 표기해야 합니다. 또한 호출인지 변수 선언인지 애매할 수 있는 함수 스타일 형변환(예: MyClass(3), int(10))을 사용하지 않도록 합니다.\n변수 선언 다음에 불필요한 괄호를 없애거나 중괄호 초기화(braced-init_list)를 사용하도록 합니다.",
  "ScopeForInVariable.description": "for문 내에서 변수를 사용할 시 범위를 고려해야 합니다. 'var'를 사용하지 않고 변수를 사용할 시 외부의 변수를 사용하기 때문에 의도치 않은 변수의 변경이 발생할 수 있습니다.",
  "SelfInitialization.description": "멤버 변수가 자신의 값으로 초기화합니다.",
  "ShortClassName.description": "클래스 이름이 다섯글자 이하일 경우를 검출합니다.",
  "ShortInstantiation.description": "'new Short', 'new java.lang.Short' 등의 allocation 구문을 검출합니다.",
  "ShortMethodName.description": "3자리 미만 메소드 이름을 검출합니다.",
  "ShortVariable.description": "변수 선언 시 for 구문의 인덱스, 혹은 catch 구문의 파라미터로 사용하는 예외를 받는 변수를 제외하고 변수 이름의 길이가 1, 2 인 변수을 검출합니다.",
  "SignatureDeclareThrowsException.description": "메소드 선언 시 'throws Exception' 구문을 검출합니다.",
  "SimpleDateFormatNeedsLocale.description": "SimpleDateFormat 객체를 생성할 때 Locale을 설정하지 않은 경우 이를 검출합니다.",
  "SimplifyBooleanAssertion.description": "assertTrue나 assertFalse 테스트 내에서 ! 연산자를 사용한 경우 이를 검출합니다. 예를 들어 assertTrue(!expr)의 경우 assertFalse(expr)로 대체 가능합니다.",
  "SimplifyBooleanExpressions.description": "수식에서 == 표현 앞이나 뒤의 참 혹은 거짓 값을 검출합니다.",
  "SimplifyBooleanReturns.description": "불린 값을 if-else 를 사용하여 반환하는 경우 이를 검출합니다.",
  "SimplifyConditional.description": "instanceof 구문은 널 인자가 들어올 경우 거짓을 반환하므로 사용 이전에 추가적인 널 확인이 필요하지 않습니다. 따라서 이를 수행한 경우를 검출합니다.",
  "SimplifyStartsWith.description": "startsWith() 인자로 3자의 입력이 들어오며, \" \"로 시작하고 \" \"로 끝나는 경우 이를 검출합니다.",
  "SingularField.description": "하나의 메소드에서만 사용되며, 처음 사용되는 것이 값의 할당 연산인 private 변수를 검출합니다.",
  "SizeArgumentAsChar.description": "크기 인자가 char 타입의 상수로 주어집니다.",
  "StaticEJBFieldShouldBeFinal.description": "SessionBean, EJBHome, EJBLocalObject, EJBObject 를 상속받은 클래스 내에 필드 선언이 정적이고 final이 아닌 경우 이를 검출합니다.",
  "StdCyclomaticComplexity.description": "코드 복잡도를 발생시키는 if, while, for, 케이스 구문을 10개 이상 사용한 경우 이슈를 검출합니다.",
  "StlMissingComparison.description": "루프 내 반복자 증가 후에 값 체크를 하지 않았습니다.",
  "StringInstantiation.description": "new String(...)을 검출합니다.",
  "StringToString.description": "문자열 객체에서 toString() 호출을 검출합니다.",
  "StrncatUsage.description": "strncat은 세번 째 파라미터로 덧붙일 메모리의 크기를 지정합니다. strncat을 안전하게 사용하는 것은 버퍼의 남은 메모리를 세번 째 파라미터로 사용하는 것입니다.",
  "SuspiciousConstantFieldName.description": "인터페이스가 아닌 클래스에서, final이 아닌 변수 이름이 대문자로만 이루어진 경우 이를 검출합니다.",
  "SuspiciousEqualsMethodName.description": "메소드 이름과 파라미터 개수가 equals(Object)와 유사한 경우, equals(Object)를 오버라이딩하고자 의도한 것이 아닐 수 있기 때문에 이를 검출합니다.",
  "SuspiciousHashcodeMethodName.description": "메소드 이름과 반환형이 hashCode()와 유사한 경우, hashCode()를 오버라이딩하고자 의도한 것이 아닐 수 있기 때문에 이를 검출합니다.",
  "SuspiciousOctalEscape.description": "문자열에서 발견된 의심스러운 8진수 이스케이프 시퀀스를 검출합니다. Java language specification(Section 3.10.6)에 따르면 문자열 내의 8진수 이스케이프 시퀀스는 백슬래시(\\) 이후 OctalDigit이나 OctalDigit OctalDigit, 또는 ZeroToThree OctalDigit OctalDigit으로 구성됩니다. 8진수가 아닌 숫자 앞의 8진수 이스케이프 시퀀스는 혼동을 일으킬 수 있으므로(예: \\038은 8진수 이스케이프 시퀀스 \\03과 문자 \"8\"로 인식됩니다.) 이를 검출합니다.",
  "SwitchDensity.description": "Switch 레이블에서 지정한 수 이상의 코드 줄 수를 검출합니다.",
  "SwitchStmtsShouldHaveDefault.description": "모든 switch 문장은 반드시 default 케이스를 포함시켜야 합니다. default 케이스 를 포함시키면, fall-through 로 인한 버그나, 오류를 사전에 예방할 수 있습니다.",
  "SystemPrintln.description": "System.out.print(), 혹은 System.err.print() 메소드 호출을 검출합니다.",
  "TABLE_NAME_CONVENTION.SQL.description": "잘못된 테이블 이름명 체커는 옵션으로 주어지는 정규식에 일치하지 않는 테이블 이름을 검출합니다.\n테이블 이름을 옵션으로 주어지는 정규식에 일치하도록 변경합니다.",
  "TAG_NAME_SHALL_BE_A_UNIQUE.description": "이름이 같은 태그 체커는 태그로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n여기서 태그는 클래스, 구조체, 공용체, 열거형 등을 의미합니다.\n태그를 선언할 때 한 번 사용한 이름을 다시 사용하지 않도록 합니다.",
  "TAINTED_LOOP_BOUND.description": "반복문의 제어 조건에 외부 입력과 관련된 변수 등이 사용될 경우 주의해야 한다. 과도한 반복으로 잠재적인 서비스 거부 등이 발생할 수 있다.",
  "TAKE_CARE_WHEN_USING_RENAME.description": "확인 없이 rename 함수 사용 체커는 rename() 함수를 호출할 때 파일 이름이 중복되는 상황에 대응하지 않는 경우를 검출합니다.\n의도를 명확히 할 수 있도록 다른 함수를 함께 사용합니다. rename() 함수를 호출하되 이미 존재하는 파일은 보존하는 것이 의도라면 POSIX 환경에서는 rename() 함수를 호출하기 전에 access() 함수를 사용하여 해당 파일이 존재하는지 먼저 검사하는 것이 필요합니다. 기존에 존재하던 파일은 제거하는 것이 의도라면 Windows 환경에서는 rename() 함수를 호출하기 전에 remove() 함수를 사용하여 해당 파일을 먼저 제거하는 것이 필요합니다.",
  "TEMPLATE_SPECIALIZATION_SHOULD_BE_SAME_FILE.description": "다른 파일에서 선언된 템플릿 특수화 체커는 기본 템플릿 선언이 이루어진 파일에서 선언되지 않은 템플릿 특수화를 검출합니다.\n템플릿 특수화(Template Specialization)은 템플릿 인자를 실제 타입으로 치환하여 템플릿 요소에서 일반적인 클래스나 함수, 메소드로 변환한 결과물을 의미합니다.\n템플릿 특수화는 기본 템플릿 선언이 이루어진 파일에서 선언하도록 합니다.",
  "TEMPLATE_WITH_POTENTIALLY_CONFLICTING_METHODS.description": "잠재적으로 충돌 가능한 클래스 템플릿 메소드 체커는 템플릿 인스턴스화 과정에서 충돌이 발생할 수 있는 메소드 선언을 검출합니다.\n클래스 템플릿에서 잠재적으로 충돌할 수 있는 메소드를 정의하지 않도록 합니다. 혹은 템플릿 메소드를 정의하는 과정에서 함수명을 다르게 하거나 템플릿 특수화를 사용하도록 합니다. 이 방법들을 통해 문제를 우회할 수 있습니다.",
  "TEMP_LIFETIME_OBJ_MODIFICATION.description": "임시 객체 수정 체커는 수식의 결과로 인해 생성된 임시 객체를 변경하는 경우를 검출합니다.\n임시 객체를 수정하지 않도록 합니다. 필요한 경우 일반적인 변수에 값을 받아 수정합니다.",
  "TESTED_AGAINST_CONSTANT_VALUE.description": "반복문 종료 조건에 복잡한 식 사용 체커는 for 구문의 반복 횟수에 관한 조건을 계산할 때 상수가 아닌 복잡한 식을 사용한 경우를 검출합니다.\n반복문의 반복 횟수를 제어하는 식은 최대한 미리 계산해둔 상수 변수를 사용합니다.",
  "THREAD_SHARE_LOCAL_VARIABLE.description": "지역 변수를 공유하는 스레드 체커는 POSIX thread 가 지역 변수를 공유한 경우를 검출합니다.\n다른 스레드에서 스레드의 스택 또는 스레드 지역 변수에 접근하면 유효하지 않은 접근이 될 수 있습니다.\n스레드 간 데이터를 공유하려면 할당된 메모리를 사용하거나 정적 변수를 사용하도록 합니다.",
  "THROW_NOT_IN_CATCH_STMT.description": "빈 throw 구문 체커는 예외 핸들러 밖에서 아무런 객체를 던지지 않고 사용되는 throw 구문을 검출합니다.\n예외 핸들러의 본문에서 사용하는 경우를 제외하고 빈 throw 구문을 사용하지 않도록 합니다.",
  "THROW_NULL.description": "널 예외 던짐 체커는 명시적으로 널 포인터를 예외로 던지는 구문을 검출합니다.\n널 포인터를 예외로 던지지 않도록 합니다.",
  "THROW_PTR_TYPE.description": "포인터 타입 예외 던짐 체커는 포인터 타입을 예외로 던지는 구문을 검출합니다.\n포인터 타입 예외를 던지지 않도록 합니다.",
  "TIMEOUT_EXCEPTION_WITH_BACKEND": "백엔드 통신 중 타임아웃 에러가 발생했습니다.",
  "TMP_FILE_IN_SHARED_DIR.description": "공개 디렉토리에서 임시 파일 생성 체커는 임의의 사용자가 접근 가능한 공개 디렉토리에서 임시 파일을 생성하는 코드를 검출합니다.\n누구나 접근할 수 있는 디렉토리(예: /tmp, /var/tmp, C:\\TEMP)에 임시 파일을 생성하는 것은 위험합니다.\n권한이 있는 사용자만 접근할 수 있는 위치에 임시 파일을 생성하고 정보를 저장하는 것이 안전합니다.",
  "TOCTOU_RACE_CONDITION.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "TOCTOU_RACE_CONDITION_CSHARP.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "TOC_TOU_ACCESS.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "TOO_BIG_FILE.ABAP.description": "너무 큰 소스 파일 체커는 라인 수가 제한을 넘는 소스 파일을 검출합니다.\n소스 코드 내에서 유사한 기능을 지닌 코드를 모아 분할하여 다른 파일로 만듭니다.",
  "TOO_BIG_FUNCTION.description": "너무 긴 함수 코드 체커는 지정된 제한 길이보다 많은 라인으로 작성된 함수를 검출합니다.\n각 함수의 최대 라인 수 제한을 옵션으로 지정할 수 있습니다.\n제한 길이보다 짧은 길이가 되도록 함수를 수정합니다. 어떤 함수가 지나치게 길다면 해당 함수가 너무 많은 기능을 수행하고 있을 가능성이 있으므로 더 작은 여러 개의 함수로 쪼갤 수 있는지 검토해봅니다.",
  "TOO_COMPLEX_FOR_STATEMENT.description": "지나치게 복잡한 for 구문 체커는 for 구문의 초기화 및 갱신 구문에 지정한 숫자보다 많은 수식이 사용된 경우를 검출합니다.\nfor 구문의 초기화 및 갱신 구문을 단순하게 만듭니다. 일정 이상 복잡해질 수밖에 없다면 같은 동작을 하는 while 구문으로 교체하는 것도 좋습니다.",
  "TOO_FEW_WHEN.ABAP.description": "너무 적은 WHEN 절 체커는 3개 미만의 WHEN 절을 포함하는 CASE 구문을 검출합니다.\nIF 구문을 사용하여 조건 분기를 처리합니다.",
  "TOO_LONG_COLUMN.ABAP.description": "너무 긴 코드 라인 체커는 코드 한 줄의 길이가 사전에 옵션을 통해 정의된 길이를 초과하는 경우를 검출합니다.\n코드 한 줄이 정해진 길이를 초과하면 줄 바꿈을 실행합니다.",
  "TOO_LONG_COLUMN.description": "너무 긴 코드 라인 체커는 코드 한 줄의 길이가 사전에 옵션을 통해 정의된 길이를 초과하는 경우를 검출합니다.\n코드 한 줄이 정해진 길이를 초과하면 줄 바꿈을 실행합니다.",
  "TOO_LONG_IDENTIFIER.description": "너무 긴 식별자 체커는 대상이 되는 식별자의 길이가 31자를 넘어서는 경우를 검출합니다.\n대상 식별자는 태그, 변수 이름, 타입, 필드, 매크로입니다.\n식별자를 31자 이하로 명명하도록 합니다.",
  "TOO_LONG_SOURCE_CODE_BEFORE_COMMENT.description": "주석 시작 전 너무 긴 소스 코드 체커는 주석이 시작하기 전 소스 코드의 길이가 지정한 길이를 초과할 경우를 검출합니다.\n지정한 길이 및 세부 조건은 옵션으로 입력할 수 있습니다.\n주석이 시작하기 전 소스 코드의 길이가 지정한 길이를 넘지 않도록 합니다.",
  "TOO_MANY_BRANCH_IN_LOOP.ABAP.description": "반복문 내 너무 많은 분기 체커는 제어문을 남용한 반복문을 검출합니다.\n반복문 내에서 제어문(CONTINUE, EXIT, CHECK)을 두 번 이상 사용된 반복문을 검출합니다.\n의미적으로 동일한 다른 구조의 반복문으로 변경합니다.",
  "TOO_MANY_EXECUTABLE_PATH.description": "너무 많은 실행 경로 체커는 함수 안에 실행 가능한 경로가 지나치게 많은 경우를 검출합니다.\n실행 가능한 경로 수의 제약을 옵션으로 지정할 수 있습니다.\n해당 함수가 너무 많은 기능을 수행하고 있을 가능성이 있으므로 더 작은 여러 개의 함수로 쪼갤 수 있는지 검토해봅니다. 혹은 실행 가능한 경로의 수가 줄어들 수 있도록 코드를 리팩토링합니다.",
  "TOO_MANY_INIT_ARRAY.description": "구조체 및 배열의 중괄호 초기화 요소 초과 체커는 명시된 구조체 및 배열의 크기보다 초기화 데이터가 많은 정의를 검출합니다.\n명시된 배열 크기나 구조체의 수보다 초기화 데이터가 많습니다.\n구조체나 배열의 크기와 중괄호 초기화의 항목 수를 동일하게 맞추도록 합니다.",
  "TOO_MANY_METHODS.description": "과도한 함수 정의 체커는 옵션에 허용된 값보다 많은 함수를 정의하는 파일을 검출합니다.\n옵션에서 파일에서 정의 가능한 함수의 최대수를 설정할 수 있습니다.\n옵션에서 허용된 값보다 많은 함수를 정의하지 않도록 합니다.",
  "TOO_MANY_NONCYCLIC_EXECUTION_PATH.description": "너무 많은 직선 실행 경로 체커는 함수에 반복문으로 인한 순환을 제외하고 직선으로 실행 가능한 경로가 지나치게 많은 경우를 검출합니다.\n함수 내 직선 실행 경로의 수가 200개 이하가 되도록 함수를 작성합니다.",
  "TOO_MANY_RETURNS.description": "지정한 반환문의 수를 초과할 때 검출합니다.",
  "TRACE_OUTPUT.WEB.CONFIG.description": "Trace 로그 노출 체커는 Trace 로그 정보를 출력하도록 설정한 경우를 검출합니다.\nTrace 로그 정보를 노출시키지 않도록 설정을 비활성화합니다.",
  "TRUE": "고지 의무 있음",
  "TRUST_BOUNDARY_VIOLATION.description": "신뢰 범위 위반 체커는 신뢰할 수 없는 데이터와 신뢰할 수 있는 데이터가 섞여있는 경우를 검출합니다.\n세션 값이나 속성에 신뢰할 수 없는 외부 입력을 전달하는 것이 한 예입니다.\n신뢰할 수 있는 데이터만 모여있는 저장 공간은 특별히 관리합니다. 그 공간에 외부 입력을 저장할 때는 검증을 거친 후에만 저장하도록 합니다.",
  "TRYLOCK_FAIL.description": "잠궈진 리소스에 trylock 시도 체커는 pthread_mutex_trylock() 함수를 사용하여 이미 잠금을 수행한 리소스를 다시 호출하는 코드를 검출합니다.\npthread_mutex_trylock() 함수로 리소스의 잠금을 걸기 전에 pthread_mutex_unlock() 함수로 리소스의 잠금을 해지해야 합니다.",
  "TYPEDEF_NAME_SHALL_BE_A_UNIQUE.description": "이름이 같은 typedef 체커는 typedef로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n컴파일러에서는 기본적으로 동일한 이름을 가진 식별자를 허용합니다. 단, 같은 이름을 가진 식별자의 경우 나중에 선언된 식별자가 먼저 선언된 식별자를 덮어씁니다.\ntypedef를 선언할 때 이전에 사용한 이름을 다시 사용하지 않도록 합니다.",
  "TYPE_MISMATCH_IN_TERNARY.description": "삼항 연산자에서 타입 불일치 체커는 삼항 연산자에서 조건부로 선택될 수 있는 두 가지 식의 타입이 일치하지 않는 경우를 검출합니다.\n삼항 연산에서 두 가지 선택지의 정적 타입을 일치시켜야 합니다.",
  "TYPE_UNDERRUN.IN_FUNC_CALL.description": "함수의 필드 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "TYPE_UNDERRUN.STATIC.description": "필드 버퍼 언더플로우 체커는 메모리에서 객체의 유효범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "TerminateStrncpy.description": "만약 소스 문자열의 크기가 주어진 크기보다 같거나 큰 경우, strncpy()는 버퍼 끝에 0을 추가하지 않습니다. 버퍼 끝이 null로 종료되지 않는 다면 추후에 버그를 야기할 수 있습니다.",
  "TestClassWithoutTestCases.description": "테스트 클래스의 이름은 Test로 끝납니다. 만일 테스트 클래스가 아닌 클래스의 이름이 이에 해당한다면 이는 많은 사람들이 해당 클래스를 테스트 클래스로 간주할 수 있기 때문에 좋지 못한 방법입니다. 테스트 클래스는 test로 시작하는 테스트 메소드를 가져야 하며, 이를 위반한 경우를 검출합니다.",
  "ThisSubtraction.description": "this 포인터에 빼기 연산자를 사용합니다. '->'를 사용하려는 의도인지 확인해야 합니다.",
  "ThrowInNoexceptFunction.description": "예외를 발생하지 않는다고 명시한 함수에서 예외를 발생합니다.",
  "TooFewBranchesForASwitchStatement.description": "지정된 수 보다 적은 케이스를 갖는 switch 구문을 검출합니다.",
  "TooManyFields.description": "지나치게 많은 필드를 갖는 클래스는 포함관계를 활용한 객체 등을 활용하여 재설계되어야 합니다. 예를 들어 city/state/zip 필드의 경우 이는 하나의 Address 필드로 재정의 될 수 있습니다. 기본적으로 15개 이상의 필드를 갖는 경우 이를 검출합니다.",
  "TooManyMethods.description": "지나치게 많은 메소드를 갖는 클래스는, 복잡도를 줄이고 보다 많은 fine-grained한 객체들을 갖기 위해 리팩토링 되어야 합니다.",
  "TooManyStaticImports.description": "정적 import 구문이 지정한 수를 초과하는 경우 이를 검출합니다.",
  "Toomanyconfigs.description": "#ifdef 설정을 많이 사용하면 컴파일러에서 오류를 찾기 힘듭니다",
  "UNARY_NEGATIVE_OP_ON_UNSIGNED.description": "unsigned 정수형 변수에 단항 마이너스 연산자 사용 체커는 unsigned 정수형 변수에 단항 마이너스 연산자를 사용하는 수식을 검출합니다.\nunsigned 정수형 변수에 단항 마이너스 연산자를 사용하지 않도록 합니다.",
  "UNBOUNDED_SOURCE_TO_ARRAY.description": "스택 배열에 외부 데이터 저장 체커는 사용자 외부 입력 데이터를 스택 배열에 저장하는 수식을 검출합니다.\n외부 입력 데이터를 스택 배열에 저장하는 수식인 strcat() 함수에서는 사용자 입력 데이터를 두 번째 인자로 사용하고, 지역 변수 배열을 첫 번째 인자로 사용합니다.\n외부 입력 데이터를 스택 배열에 저장하는 대신 크기를 지정할 수 있는 동적 할당된 버퍼에 저장하도록 합니다. 그러면 외부 입력 데이터의 크기에 상관없이 버퍼 오버플로우가 발생하지 않고 데이터를 저장할 수 있습니다. 단, 외부 입력 데이터 이상의 크기를 버퍼에 동적으로 할당해야 합니다.",
  "UNCAUGHT_EXCEPTION.description": "누락된 예외 처리 체커는 함수에서 예외가 발생하지만 이를 처리하지 않은 코드를 검출합니다.\n의도치 않은 예외가 발생하는 경우 예외를 반드시 발견하고 처리해야 합니다.\n예외를 던지는지 알기 힘든 함수 등을 호출할 때 예외 처리 구문 안쪽에 위치하도록 코드를 수정합니다.",
  "UNCHECKED_NULL.description": "널 미확인 역참조 체커는 널 여부를 확인한 적이 있는 값을 후 확인 없이 역참조하는 경우를 검출합니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다. 반대로 변수가 널이 아니라는 보장이 있다면 혼동을 줄이기 위해 일관적으로 해당 변수를 널 확인 없이 직접 사용해야 합니다.",
  "UNCHECKED_NULL_CSHARP.description": "널 미확인 역참조 체커는 널 여부를 확인한 적이 있는 값을 후 확인 없이 역참조하는 경우를 검출합니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다. 반대로 변수가 널이 아니라는 보장이 있다면 혼동을 줄이기 위해 일관적으로 해당 변수를 널 확인 없이 직접 사용해야 합니다.",
  "UNCHECKED_OGNL_EXPRESSION.description": "확인되지 않은 OGNL 식 체커는 외부 입력 값을 확인하지 않고 객체를 생성하는 데 사용한 코드를 검출합니다.\nOgnl.parseExpression() 메소드로 객체를 생성하는 데 사용한 외부 입력 값을 별도로 선언된 검증 메소드를 통해 확인해야 합니다.",
  "UNCHECKED_SPEL_EXPRESSION.SPRING.description": "확인되지 않은 SpEL 식 체커는 외부 입력 값을 확인하지 않고 SpelExpression을 생성하는 데 사용한 코드를 검출합니다.\nSpelExpression을 생성하는 데 사용되는 외부 입력 값을 별도로 정의된 검증 메소드를 통해서 확인해야 합니다.",
  "UNCHECK_ARRAY_LENGTH.description": "부적절한 가변 길이 배열 크기 체커는 길이를 제한하지 않고 가변 길이 배열을 선언하는 경우를 검출합니다.\n적절한 길이를 제한하여 가변 길이 배열을 선언하도록 합니다.",
  "UNCONTROLLED_RECURSION.description": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.\n재귀 호출 구문을 올바른 제어 구문 아래에 둡니다. 또한 재귀 호출의 종료 조건을 제대로 지정하지 못하는 경우를 대비하기 위해 재귀 호출 대신 동일한 기능을 수행하는 반복문을 사용하는 방법도 있습니다.",
  "UNDECIDABLE_DIVISION.description": "불확실한 값으로 나누기 체커는 나누기 연산에서 불확실한 값으로 나누기를 수행한 경우를 검출합니다.\n나누기 연산의 두 번째 피연산자로 항상 명확한 값만 전달하도록 수정합니다.",
  "UNDERRUN.DYNAMIC.IN_FUNC_CALL.description": "함수의 동적 할당 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "UNDERRUN.DYNAMIC.description": "동적 할당 버퍼 언더플로우 체커는 메모리에서 객체의 유효 범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "UNDERRUN.STATIC.IN_FUNC_CALL.description": "함수의 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자가 지역 변수입니다.\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "UNDERRUN.STATIC.description": "버퍼 언더플로우 체커는 메모리에서 객체의 유효범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자가 지역 변수입니다.\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "UNEXPECTED_SIGN_EXTENSION.description": "의도하지 않은 부호 확장 체커는 음수 값이 unsigned 로 변환되어 저장될 수 있는 수식을 검출합니다.\n음수값이 큰 양수값으로 변환되지 않도록 부호 여부가 다른 객체 간 대입 시 조건을 잘 설정해야 합니다.",
  "UNINIT.description": "초기화되지 않은 변수 사용 체커는 초기화되지 않은 지역 변수를 사용하는 코드를 검출합니다.\n초기화되지 않은 변수는 임의의 데이터 값을 가지기 때문에 예상하지 않은 동작이 발생할 수 있습니다.\n지역 변수를 사용하기 전에 먼저 초기화하도록 합니다.",
  "UNIQUE_HEADER_FILE_NAME.description": "헤더 파일 이름 중복 체커는 C99 표준에 따라 해석할 때 같은 이름으로 취급될 수 있는 중복 헤더 파일을 검출합니다.\n헤더 파일 이름을 지을 때 C99 표준을 준수해야 하며 각 헤더 파일의 이름이 프로젝트 내에서 유일하도록 해야 합니다.",
  "UNIQUE_VALUE_IN_ENUMERATOR.description": "열거형 목록의 부분 대입 체커는 열거형 목록의 요소 중 일부에만 값을 대입하여 선언한 경우를 검출합니다.\n열거형 목록의 요소에 값을 대입하지 않거나 모두 대입하도록 합니다.",
  "UNIVERSAL_CHARACTER_TROUGH_CONCATENATION.description": "매크로 연결에서 유니버설 문자 사용 체커는 매크로의 연결에서 유니코드와 같은 유니버설 문자가 인자로 전달되는 경우를 검출합니다.\n매크로의 연결에서 유니코드와 같은 유니버설 문자를 인자로 전달하지 않도록 합니다.\n매크로의 연결에서 유니코드와 같은 유니버설 문자를 인자로 전달하지 않도록 합니다.",
  "UNMATCH_TYPE_PTR_COMPARE.description": "다른 배열의 요소에 대한 비교 연산 체커는 같은 배열 요소가 아닌 객체 간에 비교 연산을 수행하는 수식을 검출합니다.\n비교 연산은 <, <=, >, >=, == 연산 등을 의미합니다.\n서로 다른 배열 요소 간에 비교 연산을 수행하지 않도록 합니다.",
  "UNMATCH_TYPE_PTR_SUBTRACT.description": "다른 배열의 요소에 대한 포인터 감소 연산 체커는 같은 배열 요소가 아닌 객체 간에 포인터 감소 연산을 수행하는 수식을 검출합니다.\n서로 다른 배열 요소 간에 포인터 감소 연산을 수행하지 않도록 합니다.",
  "UNNAMED_STRUCT_UNION_MEMBERS.description": "이름 없는 필드 선언 체커는 구조체나 공용체에서 이름이 없는 필드를 선언한 경우를 검출합니다.\n구조체나 공용체에서 필드를 선언할 때 항상 이름을 가지도록 합니다.",
  "UNREACHABLE_CASE.description": "불필요한 케이스 체커는 switch 구문에서 절대 도달할 일이 없는 케이스 레이블을 검출합니다.\n도달할 수 없는 케이스 레이블을 삭제합니다.",
  "UNREACHABLE_CODE.description": "실행되지 않는 코드 체커는 어떠한 경우에도 도달할 수 없는 코드 블록을 검출합니다.\n구문을 제거하더라도 프로그램 출력에 영향을 미치지 않는 코드는 중복 코드로써 불필요합니다. 해당 코드가 의도적인지 아니면 오류로 인해 발생했는지 여부는 검토자에게 명확하지 않습니다.\n실행되지 않는 코드를 제거합니다.",
  "UNREACHABLE_CODE_STRING_COMPARE.description": "문자열 비교로 도달할 수 없는 코드 체커는 문자열 비교로 이루어진 조건문 체인에서 도달할 수 없는 조건문 본문을 검출합니다.\n문자열 비교로 이루어진 조건문 체인에서 도달할 수 없는 경로가 발생하는 것은 비교 구문이 잘못되었을 가능성이 매우 높습니다. 비교 구문들을 점검하고 도달 불가능한 조건문 본문이 없게 조건을 변경하도록 합니다.",
  "UNREASONABLE_PARAMETER.description": "잘못된 인자값으로 함수 길이 할당 체커는 함수에 길이를 정하는 인자의 값이 음수이거나 너무 큰 코드를 검출합니다.\n여기서 말하는 함수는 다음과 같습니다. alloca(), bcopy(), calloc(), malloc(), memccpy(), memcpy(), realloc(), strncpy(). 메모리 할당 함수에서 할당량을 표시하는 인자를 unsigned 정수형으로 전달하지 않는 경우를 검출하거나 외부 입력값을 검사하지 않고 덧셈이나 뺄셈을 통해서 계산하는 코드를 검출합니다.\n함수의 길이를 정하는 인자의 값이 음수가 되거나 자료형의 값을 초과할 정도로 큰 값을 지정하지 않도록 주의해야 합니다.",
  "UNRELEASED_LOCK.description": "해제되지 않은 잠금 체커는 메소드 내에서 잠금 객체를 사용하여 잠금을 했지만 해당 메소드 내에서 잠금 해제를 해주지 않는 경우를 검출합니다.\n잠금을 수행한 메소드 안에서 해제도 처리해줍니다.",
  "UNRESTRICTED_UPLOAD_OF_FILE.description": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드 받는 코드를 검출합니다.\n화이트리스트 방식으로 허용된 확장자만 업로드하도록 허용합니다. 업로드되는 파일을 저장할 때에는 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장합니다.",
  "UNRESTRICTED_UPLOAD_OF_FILE_ASPNET.description": "제한되지 않은 파일 업로드 체커는 업로드하는 파일 타입과 크기를 제한하지 않는 경우를 검출합니다.\n화이트리스트 방식으로 허용된 확장자만 업로드하도록 허용합니다. 업로드되는 파일을 저장할 때에는 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장합니다.",
  "UNSAFE_JACKSON_DESERIALIZATION.description": "안전하지 않은 Jackson 역직렬화 체커는 Jackson 라이브러리를 통해서 역직렬화를 구현하거나, 민감한 데이터를 신뢰할 수 없는 출처에서 가져오는 코드를 검출합니다.\n@JsonTypeInfo(use = Id.CLASS) 혹은 @JsonTypeInfo(use = Id.MINIMAL_CLASS) 대신 @JsonTypeInfo(use = Id.NAME) 을 사용하도록 합니다. 또한 ObjectMapper 를 역직렬화하기 전에 enableDefaultTyping을 호출하지 않도록 합니다. Jackson 2.7.10 이상 혹은 Jackson 2.8.9 이상 버전을 사용해야 합니다. enableDefaultTyping() 호출을 검출할지 여부를 옵션으로 설정할 수 있습니다.",
  "UNSAFE_XSTREAM_DESERIALIZATION.description": "안전하지 않은 XStream 역직렬화 체커는 XStream.fromXML() 메소드를 호출하는 코드를 검출합니다.\nXStream 역직렬화 취약점이 발생하지 않도록 라이브러리를 업그레이드해야 합니다. Xstream 버전 1.46 이하는 해당 문제에 취약합니다. Xstream 1.47 이상 버전을 사용해야 합니다. Struts 를 사용하는 경우 2.3.34 혹은 2.5.13 이상 버전으로 업그레이드해야 합니다. 라이브러리를 업그레이드한 후 옵션에서 XStream.fromXML() 메소드 호출을 검출하지 않도록 변경하여 검출된 이슈에서 제외할 수 있습니다.",
  "UNSALTED_ONE_WAY_HASH.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n특히 비밀번호와 같은 중요 정보를 해싱하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "UNSPECIFIED": "소스 공개해야 하지만, 공개 범위 정확하지 않은 경우",
  "UNSPECIFY_BUFFER_LENGTH_CIN.description": "명시되지 않은 cin의 최대 버퍼 크기 체커는 입력 받을 수 있는 문자열의 최대 버퍼 크기를 설정하지 않은 cin 입력 연산자 호출을 검출합니다.\ncin 은 C++에서 콘솔로부터 사용자의 입력을 받아들일 때 사용하는 표준 라이브러리입니다.\ncin 클래스의 width 메소드를 호출하여 사용자가 입력할 수 있는 문자열의 최대값을 지정합니다.",
  "UNSUITABLE_BITFIELD_TYPE.description": "잘못된 비트 필드 타입 체커는 unsigned int나 signed int 타입이 아닌 타입으로 비트 필드를 선언한 경우를 검출합니다.\n비트 필드를 선언할 경우에는 반드시 unsigned int 나 signed int 타입을 사용하도록 합니다.",
  "UNSYNCHRONIZED_STATIC_DATE_FORMATTER.description": "공유되는 immutable 객체의 가시성 보장 체커는 synchronized로 선언되어 있지 않는 특정 메소드에 final이나 volatile이 아닌 필드가 사용되는 경우를 검출합니다.\n멀티스레드 환경에서 immutable 객체의 공유 참조형 값을 업데이트하는 경우 모든 스레드가 업데이트된 값을 반영할 수 있는 것은 아닙니다. 예를 들어, 프로그래머는 immutable 객체를 가리키고 있는 필드를 포함하는 클래스가 immutable 하면서 스레드에서 안전하다고 착각할 수 있습니다. 하지만 공유 객체가 immutable 이더라도 공유 객체에 접근하기 위해 사용되는 참조가 mutable 인 경우 업데이트된 내용이 반영되지 않을 수 있습니다. 따라서 동기화된 프로그램에서도 공유 객체에 접근할 때 사용하는 참조를 동기화해야 합니다. 즉, 모든 스레드가 공유한 immutable 및 mutable 객체에 대한 가시성을 갖도록 함으로써 해당 객체를 참조할 수 있어야 합니다. 이 경우, immutable 객체는 멀티스레드 내에서 안전하게 공유될 수 있는 반면 mutable 객체는 참조가 완전히 생성(fully-constructed)되기 전에 가시성을 가지는 문제가 발생할 수 있습니다.\nsynchronized로 선언되어 있지 않는 메소드에 final이나 volatile이 아닌 필드를 사용하지 않도록 합니다.",
  "UNTRUSTED_DATA_IN_PRIVILEGED_BLOCK.description": "특권 블록 내의 신뢰할 수 없는 데이터 체커는 매개 변수로 전달된 신뢰할 수 없는 데이터가 곧바로 특권 블록 내에서 사용되는 경우를 검출합니다.\n특권 블록 내에서 외부 데이터를 사용해야 할 경우 안전성을 검사한 후 사용합니다.",
  "UNUSED.LOCAL_VARIABLE.description": "사용되지 않은 지역 변수 체커는 지역 변수를 선언한 후에 사용하지 않는 코드를 검출합니다.\n사용되지 않는 변수를 제거합니다.",
  "UNUSED_CATCH_HANDLER.description": "사용하지 않은 예외 처리 구문 체커는 함수 내에서 절대로 사용될 일이 없는 예외 처리 구문을 검출합니다.\n사용하지 않은 예외 처리 구문을 삭제합니다.",
  "UNUSED_IMPORT.description": "불필요한 import 구문 체커는 삭제해도 무방한 import 구문을 검출합니다.\nimport 대상이 코드에서 한 번도 사용되지 않는 import 구문을 검출합니다. 혹은 import 구문 없이도 당연히 바로 접근할 수 있는 java.lang 패키지의 클래스나 현재 클래스가 속한 패키지의 클래스를 import 하는 경우, 또는 같은 패키지에 대해 *을 사용한 on-demand import가 두 번 이상 등장하는 경우에도 해당 구문은 불필요하므로 검출합니다.\n불필요한 import 구문을 삭제합니다.",
  "UNUSED_PARAMETER.MISRA2008.description": "가상 함수에서 사용하지 않은 매개 변수 체커는 사용되지 않은 매개 변수가 있는 가상 함수 선언을 검출합니다.\n가상 함수에서 반드시 모든 매개 변수를 사용합니다.",
  "UNUSED_PARAMETER.description": "사용하지 않는 매개 변수 체커는 함수에서 그 값을 사용하지 않는 매개 변수를 검출합니다.\n사용하지 않는 매개 변수는 함수 선언에서 삭제합니다.",
  "UNUSED_STATIC_VARIABLE.description": "사용하지 않는 정적 변수 체커는 사용하지 않는 정적 변수를 포함하는 코드를 검출합니다.\n사용하지 않는 정적 변수를 선언하지 않도록 합니다.",
  "UNUSED_VALUE.description": "사용되지 않는 변수 체커는 변수에 값을 할당한 후에 해당 변수를 실행 경로에서 사용하지 않는 코드를 검출합니다.\n구문을 제거하더라도 프로그램 출력에 영향을 미치지 않는 코드는 중복 코드로써 불필요합니다. 해당 코드가 의도적인지 아니면 오류로 인해 발생했는지 여부는 검토자에게 명확하지 않습니다.\n사용되지 않는 변수를 제거합니다.",
  "UNUSED_VARIABLE.description": "함수 내부에 선언되었으나 사용되지 않는 변수를 검출하는 체커 입니다. 선언된 변수에 값이 할당되더라도 참조하는 곳이 없으면 사용하지 않는 것으로 간주합니다.",
  "UPLOAD": "업로드",
  "USELESS_ASSIGNMENT.description": "불필요한 할당 체커는 할당을 수행했음에도 포함된 변수의 값을 변경시키지 않는 코드를 검출합니다.\n해당 오류는 변수를 할당할 때 해당 변수의 값을 변경하지 않는 경우에 발생합니다.\n프로그램에 영향을 주지 않는 코드를 제거합니다.",
  "USE_ADJACENT_UNARY_OPERATOR.description": "단항 연산자 주위 공백 규칙 위반 체커는 ++ 또는 ?와 같은 단항 연산자와 피연산자 사이에 공백이 있는 경우를 검출합니다.\n규격에 맞게 단항 연산식을 작성합니다.",
  "USE_AFTER_CLOSE.EXT.description": "리소스 반환 후 사용 체커는 리소스를 반환한 후에 다시 사용하는 경우를 검출합니다.\n여기서 리소스는 파일 디스크립터와 같이 파일을 열고 난 후에 해당 파일을 가리키는 변수 등을 가리킵니다.\n리소스는 항상 유효한 상태에서 사용하도록 합니다. 사용이 완전히 끝난 리소스만 반환하도록 합니다.",
  "USE_AFTER_CLOSE.description": "커서를 바르게 사용하는 순서는 다음과 같습니다. \n1) 커서를 엽니다.\n2) 커서로부터 데어터를 받아 옵니다.\n3) 커서를 닫습니다.\n\n만약 커서를 닫은 후에 데이터를 가지고 온다면 프로그램이 비정상 종료할 수 있습니다.",
  "USE_AFTER_FREE.description": "해제 후 사용 체커는 해제된 메모리 블록을 다시 참조하는 코드를 검출합니다.\n해제된 메모리를 사용하면 비정상적인 값을 사용하여 시스템에도 비정상적인 상태가 발생할 수 있습니다.\n메모리를 사용하기 전에 해제되었는지를 확인합니다.",
  "USE_AFTER_MOVE.description": "이동한 객체의 재사용 체커는 이동한 객체에 의존하여 이를 재사용하는 코드를 검출합니다.\n표준 템플릿 라이브러리에서 제공하는 많은 타입들은 std::move() 함수를 통해 객체를 이동시킵니다. 이동 작업(이동 초기화 또는 이동 할당)이 이루어지고 나서 객체의 값은 대부분 유효하긴 하지만 지정되지 않은 상태로 남게 됩니다. 객체가 이동된 상태이면 해당 객체 인스턴스에서 안전하게 수행할 수 있는 작업은 기존에 가지고 있던 전제 조건과 상관 없는 작업뿐입니다. 왜냐하면 이동된 상태의 객체는 기존의 전제 조건을 충족하고 있는지 여부 자체를 알 수 없는 상태이기 때문입니다.\n이동한 객체를 재사용하지 않도록 합니다.",
  "USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.description": "파일 이름 및 경로에 사용된 비 ASCII 문자 체커는 파일 이름과 경로에 ASCII 코드에 포함되지 않는 문자를 사용한 경우를 검출합니다.\n파일 시스템에 접근할 때 경로에 이상한 문자가 포함되어 있지 않다는 것이 보장되어야 합니다.",
  "USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES_CSHARP.description": "파일 이름 및 경로에 사용된 비 ASCII 문자 체커는 파일 이름과 경로에 ASCII 코드에 포함되지 않는 문자를 사용한 경우를 검출합니다.\n파일 시스템에 접근할 때 경로에 이상한 문자가 포함되어 있지 않다는 것이 보장되어야 합니다.",
  "USE_BLOCK_SYNCHRONIZED.description": "synchronization의 과다적용을 자제해야 합니다. 메소드 레벨의 synchronization 보다 블록 레벨 synchronization 을 사용하는 것이 바람직합니다.",
  "USE_BRACE_MULTI_DIMENSION_ARRAY_INIT.description": "구조체 및 배열 내부 구조와 중괄호 초기화 불일치 체커는 구조체와 배열을 초기화할 때 내부 구조와 다른 형태로 중괄호 초기화를 사용한 경우를 검출합니다.\n구조체나 배열을 0으로 초기화하는 경우를 제외하고 내부 구조에 맞춰 중괄호로 초기화하도록 합니다.",
  "USE_CODEGUARD_WHEN_DECLARING_CLASS.description": "클래스 정의 헤더에 인클루드 가드 누락 체커는 클래스를 정의하였으며 인클루드 가드가 누락된 헤더를 검출합니다.\n인클루드 가드(Include Guard)는 전역적으로 사용하는 클래스 선언등을 한 번만 수행할 수 있도록 헤더 파일을 전처리 구문으로 감싸는 것을 의미합니다. 최근의 컴파일러는 이와 동일한 기능을 하는 #pragma once 등의 명령어도 지원합니다.\n클래스 정의가 포함된 헤더를 전처리 구문으로 감싸거나 #pragma once를 사용해야 합니다.",
  "USE_COMPATIBLE_ENCODINGS_ON_BOTH_SIDES_OF_FILE_OR_NETWORK_IO.description": "파일이나 네트워크 입출력을 사용 할 때 호환되는 인코딩을 사용하여 읽고 써야 합니다.",
  "USE_CONST_GLOBAL_AND_STATIC.description": "const로 선언하지 않은 전역또는 정적 변수 체커는 전역 변수나 정적 변수가 const로 선언되어 있지 않은 경우를 검출합니다.\n전역 변수나 정적 변수는 const로 선언하는 것이 좋습니다. 상수가 아닌 전역 변수나 정적 변수를 사용하는 함수는 재진입하는데 문제가 있으며 이것은 재귀 및 멀티 스레딩에서 문제가 발생합니다. 또한, 전역 변수는 자주 유지보수와 관련하여 문제가 발생할 수 있습니다.\n전역 변수나 정적 변수는 const로 선언합니다.",
  "USE_CONST_OBJECT_OR_ENUMERATORS.description": "매크로를 사용한 상수 정의 체커는 상수 정의에 const 객체나 열거형 대신 매크로를 사용한 경우를 검출합니다.\n상수 정의에는 const 객체나 열거형을 사용하도록 합니다.",
  "USE_CONST_POINTER_FOR_STRING_VAR.description": "const로 선언하지 않은 문자열 상수 체커는 문자열 상수를 가리키는 포인터가 const로 선언되지 않은 경우를 검출합니다.\n문자열 상수를 const로 선언하도록 합니다.",
  "USE_CONST_WHENEVER_POSSIBLE.description": "소극적인 const 사용 체커는 포인터 매개변수를 선언할 때 const를 사용할 수 있는 곳에 const를 사용하지 않은 경우를 검출합니다.\n포인터 타입 매개변수를 선언할 때 가능하면 const를 사용하도록 합니다. const를 사용함으로써 포인터 파라미터의 값이 변경되지 않도록 보장하므로 함수 인터페이스를 더 견고하게 만들 수 있습니다.\n포인터 타입 매개변수를 선언할 때 내부에서 값을 변경하지 않는다면 const로 선언하도록 합니다.",
  "USE_CONST_WITH_MACRO.description": "매크로 없이 상수 사용 체커는 매크로로 정의하지 않은 상수를 사용하는 코드를 검출합니다.\n단, 시스템 API 혹은 프레임워크 API의 반환값을 확인하기 위해 매크로로 정의하지 않은 상수를 사용할 수 있습니다. 옵션에서 공용 헤더 파일 경로 및 허용하는 함수를 설정할 수 있습니다.\n가독성을 높이기 위해서 상수를 매크로로 정의하는 것이 좋습니다.",
  "USE_CONTAINERS_OF_POINTER.description": "컨테이너에 클래스 타입 사용 체커는 컨테이너에 담는 타입이 오버헤드가 큰 클래스 타입인 객체의 선언을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다.\n컨테이너에 담는 타입은 포인터나 스마트 포인터를 사용하도록 합니다. 포인터는 주소 값 크기만큼의 메모리만 차지하며 값을 복사하는 연산이 포함되어 있습니다. 이러한 이유로 큰 오버헤드 없이 컨테이너에 객체를 삽입하거나 정렬하는 동작이 효율적으로 이루어집니다.",
  "USE_CONTAINER_MEMBER_FUNCTIONS.description": "STL 알고리즘 함수 사용 체커는 동일한 이름의 컨테이너 메소드 대신 STL 알고리즘을 사용한 수식을 검출합니다.\n종종 동일한 이름을 가진 STL 알고리즘과 컨테이너의 메소드가 존재합니다. 이 함수들은 서로 이름은 같지만 세부적인 구현과 성능에서 차이가 있을 수 있습니다.\n동일한 이름의 STL 알고리즘 대신 컨테이너의 메소드를 사용하도록 합니다.",
  "USE_CORRECT_BYTE_ORDERING.description": "서로 다른 시스템 구조에서는 다른 바이트 순서(little endian 또는 big endian)를 사용합니다. 데이터 전송을 서로 다른 시스템 사이에 할 경우 바이트 순서를 고려해야 합니다. htonl(), htons(), ntohl(), ntohs() 들은 네트워크 바이트 순서와 호스트 바이트 순서를 맞춰줍니다. 바이트 순서를 맞추지 않았을 경우 부정확한 결과를 초래할 수 있습니다.\n\n올바른 바이트 순서를 사용하여 데이터를 전송할 수 있도록 정렬 함수들을 적절히 사용하도록 합니다.",
  "USE_DANGEROUS_INNERHTML.REACT.description": "\"dangerouslySetInnerHTML\"는 브라우저 DOM에서 \"innerHTML\"을 사용하기 위한 React의 대체 방법입니다. React는 기본적으로 대부분의 값을 렌더링하기 전에 Escape하여 안전하지만 해당 기능은 이를 지원하지 않아 XSS공격에 쉽게 노출될 수 있기 때문에 위험합니다.\n React에서는 \"dangerouslySetInnerHTML\" 속성을 발견하면 내부적으로 setInnerHTML()을 실행하여 innerHTML을 사용하게 됩니다. 이 과정에서 값이 escape되지 않기 때문에 사용하지 않는 것이 좋습니다. 꼭 필요하다면 사용하는 데이터를 필터링하거나 dompurify, sanitize-html와 같은 안전한 API를 사용해야 합니다.",
  "USE_DEFINED_STANDARD_FORMS.description": "형식이 맞지 않은 defined 전처리 구문 체커는 defined 전처리 구문의 사용 방식이 지정된 형식을 벗어난 경우를 검출합니다.\n여기서 지정된 형식이란 defined (식별자) 혹은 defined 식별자 이 두 가지 표준 형태를 의미합니다.\ndefined 전처리 구문을 정의할 경우에는 반드시 지정된 형식으로 정의하도록 합니다.",
  "USE_EACH_ACCESS_SPECIFIER_EXACTLY_ONCE.description": "순서가 올바르지 않은 접근 한정자 체커는 접근 한정자가 올바른 순서로 되어 있지 않은 클래스를 검출합니다.\n여기서 올바른 순서란 접근 한정자를 public, protected, private 순으로 각각 한 번씩 사용한 것을 의미합니다.\n클래스에서 접근 한정자를 작성할 때 public, protected, private 순서로 작성합니다. 또한 이 항목들은 반드시 한 번씩만 사용해야 합니다.",
  "USE_EMPTY_INSTEAD_OF_CHECKING_SIZE_AGAINST_ZERO.description": "size 함수를 사용한 텅빈 컨테이너 확인 체커는 size() 함수의 반환 값을 0과 비교하는 경우를 검출합니다.\n컨테이너가 비어 있는지 확인하려면 empty() 함수를 사용하도록 합니다.",
  "USE_EXTERN_TO_IMPORT_VARIABLE.description": "외부 변수에서 extern 키워드 누락 체커는 extern 키워드 없이 외부 변수를 사용하는 코드를 검출합니다.\n외부 변수를 사용하는 경우 extern 키워드를 사용해야 합니다.",
  "USE_FERROR_THAN_COMPARE_ERRNO.description": "잘못된 파일 스트림 오류 확인 체커는 파일 스트림 오류를 확인하기 위해 errno 지시자를 사용하는 경우를 검출합니다.\n파일 스트림 오류를 확인하는 경우 errno 지시자가 아닌 ferror() 함수를 사용하도록 합니다.",
  "USE_FUNCTION_IN_IF_CONDITION.description": "조건문 내에 함수 사용 체커는 옵션에 지정된 함수 외에 함수를 조건문 내에서 사용한 경우를 검출합니다.\n옵션에서는 조건문 내에 사용 가능한 함수를 설정할 수 있습니다.\n조건문 안에서 함수를 사용하지 않도록 합니다.",
  "USE_LOWER_CASE_IN_INCLUDE_FILENAMES.description": "포함할 헤더 이름에 대문자 사용 체커는 #include 지시자에서 파일 이름에 대문자가 포함된 경우를 검출합니다.\n#include 지시자에서 파일 이름에 대문자를 포함하지 않도록 합니다.",
  "USE_MAXIMUM_SIZED_BUFFER.description": "최대 크기 버퍼 사용 체커는 옵션에 지정된 경로 최대 크기보다 작은 크기의 버퍼를 사용하는 코드를 검출합니다.\n외부에서 경로를 받아 처리하는 realpath(), readlink(), PathAppend() 함수를 사용할 때 버퍼의 크기가 경로 최대 크기(MAX_PATH)보다 작은 경우를 검출합니다. 옵션에서 최소 버퍼 크기를 지정할 수 있습니다.\n버퍼의 크기를 경로 최대 크기(MAX_PATH)보다 크거나 같게 설정하도록 합니다.",
  "USE_NEW_THROW_CAUSE.description": "로직 수행 중 발생한 예외을 throw 하지 않고 자체 처리 하는 경우, Framework에서 제공하는 CommUtil.newThrowCause 메소드를 사용해야 합니다.",
  "USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.description": "하드코딩된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "USE_OF_INNER_CLASS_CONTAINING_SENSITIVE_DATA.description": "민감한 데이터를 포함하는 내부 클래스 체커는 중첩 선언된 내부 클래스에서 외부 클래스의 private 필드에 접근하는 경우를 검출합니다.\n내부 클래스를 static 한정자로 선언하고 외부 클래스의 private 필드에 접근하지 않도록 합니다.",
  "USE_OF_INSUFFICIENT_RANDOM_VALUES.description": "너무 단순한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\n사용을 금지할 난수 생성 메소드를 옵션으로 지정할 수 있습니다.\n옵션으로 지정된 금지 메소드보다 안전한 방식을 사용하여 난수를 생성합니다.",
  "USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\n암호학적으로 충분히 안전한 방식을 사용하여 예측 불가능한 난수를 생성해야 합니다. SecureRandom 클래스로 안전한 난수를 생성할 수 있습니다.",
  "USE_OF_LOW_SECURITY_ENCRYPTION_ALGORITHM.description": "낮은 보안 강도의 암호화 알고리즘 사용 체커는 권장되는 보안 강도를 만족하지 않는 암호화 알고리즘이나 해시 함수를 사용하는 코드를 검출합니다.\n대칭 키(비밀 키) 기반 암호 알고리즘이나 해시 함수를 사용할 경우에는 보안 강도가 112-bit 이상을 만족하도록 권장합니다. 그리고 비대칭 키 암호 알고리즘을 사용할 경우에는 보안성 강화를 위해 가급적 보안 강도 112-bit 이상을 만족하는 키 사이즈를 사용하도록 권장합니다.\n암호화 알고리즘이 충분한 보안 강도를 유지할 수 있도록 사용 규칙을 준수합니다.",
  "USE_OF_SOCKETS.description": "EJB에서 서버 소켓 사용 체커는 EJB 프로그램에서 bean 내부에서 서버 소켓(ServerSocket)을 직접 사용하여 클라이언트에 서비스를 제공하는 경우를 검출합니다.\nEJB 규격에 맞는 방식을 사용합니다.",
  "USE_OF_SYNCHRONIZATION_PRIMITIVES.description": "동기화 기본 요소 사용 주의 체커는 EJB 규격에서 synchronized 메서드를 사용하는 코드를 검출합니다,\nEJB(Enterprise JavaBeans) 규격에서 synchronized 키워드를 사용하여 동기화를 수행하면 품질 저하가 발생하게 됩니다. EJB 규격 사용 여부는 javax.ejb.SessionBean 상속 여부로 판단합니다.\nEJB 규격에서 synchronized 키워드를 사용하지 않습니다.",
  "USE_ONE_CASE_PER_LINE.description": "한 줄에 작성된 여러 개의 case 구문 체커는 한 줄에 하나 이상의 케이스 문과 default문을 사용하는 경우를 검출합니다.\nswitch 구문을 사용할 때 각 case 구문과 default 구문이 서로 다른 각자의 줄에 위치하도록 작성합니다.",
  "USE_ONE_DECLARATION_PER_LINE.description": "한 줄에 작성된 여러 개의 선언 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.\n모든 선언은 별개의 라인으로 분리합니다.",
  "USE_ONE_STATEMENT_PER_LINE.description": "한 줄에 작성된 여러 개의 구문 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.\n한 줄에 한 구문만 들어가도록 여러 줄에 나눠서 코드를 작성합니다.",
  "USE_ONLY_ALLOWED_TYPE.description": "허용한 자료형이 아닌 다른 자료형들이 사용될 경우를 검출합니다.",
  "USE_ONLY_PERMITTED_MACROS.description": "불필요한 매크로 선언 체커는 정해진 사용 방법을 벗어나도록 매크로를 선언한 경우를 검출합니다.\n여기서 매크로의 정해진 사용 방법이란 중괄호 초기자, 상수, 문자열, 괄호 수식, 타입 한정자, 저장 클래스 지시자, do-while(0) 구조를 의미합니다.\n정해진 사용 방법 이외의 방법으로 매크로를 선언하거나 사용하지 않도록 합니다.",
  "USE_OPEN_WITH_PERMISSION.description": "잘못된 접근 권한으로 파일 생성 체커는 접근 제한을 충분히 설정하지 않고 파일을 생성하는 경우를 검출합니다.\n파일을 열 때 접근 권한도 함께 명시하도록 합니다.",
  "USE_PARENTHESIS_TO_MACRO_REPLACEMENT_LIST.description": "인자를 괄호로 감싸지 않은 매크로 함수 선언 체커는 # 연산 및 ## 연산을 제외하고 함수형 매크로의 인자를 괄호로 감싸지 않고 선언되는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 함수를 선언할 때 인자를 괄호로 감싸도록 합니다.",
  "USE_PASS_BY_REFERENCE.description": "참조 값 전달 미사용 체커는 클래스 타입의 인자가 값이나 포인터로 되어 있는 함수 선언을 검출합니다.\n함수 선언에서 클래스 타입의 인자는 원본, 포인터, 참조가 올 수 있습니다. 첫 번째는 클래스 객체를 복사하여 값으로 전달합니다. 두 번째는 클래스 객체의 주소 값을 전달합니다. 세 번째는 클래스 객체의 주소 값을 전달하되, 함수 내부에서 사용할 때는 복사하여 전달했을 때와 동일한 방법으로 사용할 수 있습니다.\n함수 선언 시 인자 타입이 클래스인 경우에는 참조로 선언합니다. 이렇게 선언하면 후 함수 호출 시에 클래스 타입 객체를 참조로 전달할 수 있습니다.",
  "USE_POINTER_ARITHMETIC_ON_FIELD.description": "필드 참조에 대한 포인터 연산 체커는 구조체나 클래스의 필드를 참조한 포인터에 대해 덧셈 등의 포인터 연산을 사용하는 경우를 검출합니다.\n구조체나 클래스의 각 필드는 직접 참조 연산을 통해서만 가리키도록 합니다.",
  "USE_PREPROCESSOR_ONLY_INCLUDEGUARDS.description": "C++은 인라인 함수 및 상수 선언을 통해서 전처리기를 사용하여 수행되는 작업을 보다 안전하게 달성하는 방법을 제공합니다.",
  "USE_PUBLIC_DERIAVTION_ONLY.description": "public 상속 미사용 체커는 public 외의 방법으로 상속을 한 클래스를 검출합니다.\n클래스를 상속할 때는 항상 public 키워드로 상속합니다.",
  "USE_RSA_WITHOUT_OAEP.description": "OAEP를 사용하지 않고 RSA 암호화 알고리즘 사용 체커는 OAEP를 사용하지 않고 RSA 암호화 알고리즘을 사용한 경우를 검출합니다.\nOAEP를 사용하지 않고 RSA 암호화 알고리즘을 사용하지 마십시오.\nRSA 암호화 알고리즘을 사용할 때는 반드시 OAEP를 사용합니다.",
  "USE_RUNTIME_CONSTRAINT_HANDLERS.description": "경계 검사 함수 사용 전 핸들러 등록 누락 체커는 경계 검사 함수를 호출하기 전에 런타임 지정 핸들러를 등록하지 않은 경우를 검출합니다.\nset_constraint_handler_s() 함수를 사용하여 핸들러를 등록합니다.",
  "USE_SAME_DEFAULT_VALUES.description": "상속 클래스의 기본 인자 값 불일치 체커는 부모 클래스의 가상 함수와 기본 인자 값이 다른 자식 클래스의 가상 함수 선언을 검출합니다.\n기본 인자 값(Default Arguments)은 함수 선언 시 특정 인자의 기본값을 지정해주는 것을 의미합니다. 부모 클래스에서 가상 함수를 선언할 때 기본 인자 값을 설정할 수 있습니다. 이때 이 클래스를 상속한 자식 클래스가 가상 함수를 오버라이딩할 경우, 기본 인자 값을 다르게 설정하는 경우가 있습니다.\n반드시 자식 클래스와 부모 클래스 가상 함수의 기본 인자 값은 동일하게 설정하도록 합니다.",
  "USE_SAME_TYPE_WHEN_REDECLARING.description": "재선언 시 토큰 불일치 체커는 객체, 함수 반환 타입 또는 함수 매개 변수에 사용되는 타입이 모든 선언 및 재선언에서 동일한 토큰이 아닌 경우를 검출합니다.\n재선언 시 선언에 명시된 토큰을 사용해야 합니다.",
  "USE_SHIFT_OPERATORS_CORRECTLY.description": "시프트(Shift) 연산자의 올바른 사용 체커는 외부 입력값을 시프트 연산에 사용할 때 적절한 검증 과정이 생략된 코드를 검출합니다.\n산술 시프트 연산의 대상이 되는 변수(연산자의 좌측)의 타입보다 큰 값을 이동거리(연산자의 우측)로 사용하는 경우, 의미 없는 연산이 될 수 있습니다. 예를 들면 산술 시프트 연산의 대상 변수의 자료형이 int 인 경우, 이동거리의 범위는 0 에서 63 사이의 값이어야 합니다. 산술 시프트 연산의 대상이 되는 변수의 자료형보다 큰 값을 이동거리로 사용하는 경우, 개발자가 의도하지 않은 동작이 수행될 수 있습니다.\n외부 입력값을 시프트 연산에 사용하기 전에 적절한 값인지 검증해야 합니다.",
  "USE_SHORT_FUNCTION.description": "너무 길고 복잡한 함수 체커는 일정 이상으로 라인 수가 많거나 매개 변수가 여러 개인 함수를 검출합니다.\n지정된 수 이내의 매개 변수를 사용하고 지정된 길이 이내로 함수를 작성합니다. 너무 긴 함수는 적당한 길이의 짧은 함수 여러 개로 쪼개거나 리팩토링을 통해 길이를 줄여야 합니다.",
  "USE_SINGLE_RETURN.description": "다수의 반환 구문 사용 체커는 한 함수 안에서 옵션에 명시된 반환 구문 최대 수를 초과하여 반환 구문을 사용하는 경우를 검출합니다.\n옵션에서 최대 반환 구문 수를 설정할 수 있습니다.\n반환 구문을 허용한 횟수 만큼만 사용해야 합니다.",
  "USE_SIZEOF_FOR_DATATYPE.description": "타입 크기 계산에서 sizeof 미사용 체커는 sizeof를 사용하지 않고 타입 크기를 계산한 값이 필요한 함수를 호출하는 경우를 검출합니다.\n대상이 되는 함수는 다음과 같습니다. memset(), memcpy(), wmemcpy(), bcopy(), strncpy(), memmove(), memccpy(), mempcpy(), wmempcpy(), snprintf(), strlcat(), calloc(), malloc().\n타입 크기를 계산한 값이 필요한 함수를 호출하는 경우 sizeof를 사용하도록 합니다.",
  "USE_SIZEOF_ON_PARAM.description": "sizeof 연산자 미사용 체커는 특정 함수 호출 시 특정 인자가 sizeof 연산자가 아닌 수식을 검출합니다.\n이때 특정 함수의 명칭과 인자의 인덱스는 옵션으로 입력할 수 있습니다.\n특정 함수 호출 시 특정 인자에는 반드시 sizeof 연산자를 사용하도록 합니다.",
  "USE_STANDARD_CPP_LIBRARY_HEADERS.description": "오래된 표준 헤더 파일 사용 체커는 오래된 표준 헤더 파일을 포함한 줄을 검출합니다.\n오래된 .h 로 이루어진 헤더 파일 대신 표준 C++ 라이브러리 헤더를 사용합니다. 예를 들면 iostream.h 대신 iostream을 사용하는 것입니다.",
  "USE_STATIC_IN_PUTENV.description": "putenv() 함수에 자동 변수 포인터 전달 체커는 putenv() 함수에 자동 변수 포인터를 인자로 전달하는 경우를 검출합니다.\nputenv() 함수에는 정적 변수 포인터를 인자로 전달하도록 합니다.",
  "USE_STRICTFP_FOR_DIVISION.description": "strictfp 한정자 없는 나누기 체커는 strictfp 한정자 없이 부동 소수점 나누기 수식을 사용한 메소드 또는 클래스를 검출합니다.\n부동 소수점 나누기를 사용하는 메소드 혹은 클래스에 정의에 strictfp 한정자를 추가합니다.",
  "USE_STRTOL.description": "잘못된 문자열 정수 변환 체커는 문자열을 정수로 변환할 때 신뢰성 있는 오류 처리를 제공하는 함수가 사용되지 않은 경우를 검출합니다.\n오류 처리를 명확히 할 수 있도록 strtol() 및 이와 유사한 함수를 사용합니다.",
  "USE_SUFFIXES_FOR_FLOAT_CONSTANT.description": "접미사가 없는 float 타입 상수 체커는 float 상수에 접미사 F을, long double 상수에 접미사 L을 사용하지 않은 경우를 검출합니다.\nfloat 상수에 접미사 F을, long double 상수에 접미사 L을 사용하도록 합니다. 각각의 상수값에는 대문자로 접미사를 명시하는 것이 좋습니다.\nfloat 타입 상수값에는 각 상수값에 맞는 접미사를 사용하도록 합니다.",
  "USE_SUFFIXES_FOR_INTEGER_CONSTANT.description": "접미사가 없는 정수형 상수 체커는 상수값에 대문자 접미사를 명시하지 않은 경우를 검출합니다.\nlong 상수에 접미사 L을, unsigned int 상수에 접미사 U를, unsigned long 상수에 접미사 UL을 사용하도록 합니다. 각각의 상수값에는 대문자로 접미사를 명시하는 것이 좋습니다.\n정수형 상수값에는 각 상수값에 맞는 접미사를 사용하도록 합니다.",
  "USE_SUFFIX_FOR_UNSIGNED_INTEGER_LITERALS.description": "unsigned int 자료형에 접미사 U 사용 체커는 unsigned int 타입의 정수형 리터럴에는 대문자로 접미사 \"U\"로 명시하지 않은 경우를 검출합니다.\nunsigned int 정수형 리터럴에 접미사 U를 사용하도록 합니다.",
  "USE_SYNCHRONIZED_PUBLIC_METHOD.description": "동기화되지 않은 public 메소드 체커는 public으로 선언된 메소드에서 필드 변수가 사용되었지만 synchronized 한정자는 없는 경우를 검출합니다.\n필드 변수에 접근하는 public 메소드를 항상 synchronized로 선언합니다.",
  "USE_TAB_BETWEEN_TYPE_AND_IDENTIFIER.description": "타입과 식별자 사이 탭 누락 체커는 변수 선언 시 타입과 식별자 사이를 탭으로 구분하지 않은 경우를 검출합니다.\n코딩 규약에 맞춰 타입과 식별자를 탭으로 구분합니다.",
  "USE_TYPEDEF_TYPE_INSTEAD_OF_BASIC.description": "typedef 없이 기본 숫자 타입 사용 체커는 기본 숫자 타입을 typedef로 선언하지 않고 사용한 구문을 검출합니다.\n기본 숫자 타입을 그대로 사용하지 않도록 합니다. 명확한 스토리지 크기를 명시하는 typedef 선언을 한 뒤 사용하도록 합니다.",
  "USE_TYPEREF_NON_POINTER_TYPE.description": "포인터형을 typedef로 선언 체커는 함수 포인터를 제외하고 포인터형을 typedef로 선언한 경우를 검출합니다.\n포인터형을 typedef로 선언하지 않도록 합니다.",
  "USE_UNSIGNED_INT_ON_DIVISION.description": "나누기 연산 시 unsigned 정수형 사용 체커는 나누기 연산을 수행할 때 분자나 분모에 signed 정수형이 존재하는 코드를 검출합니다.\n나누기 연산에서 분자와 분모는 모두 unsigned 정수형이어야 합니다.",
  "USE_VALUE_FROM_FGETPOS.description": "잘못된 fsetpos() 함수 인자 전달 체커는 fsetpos() 함수의 인자에 fgetpos()의 반환값 이외의 값을 전달하는 경우를 검출합니다.\nfsetpos() 함수의 인자에 항상 fgetpos()의 반환값을 사용하도록 합니다.",
  "USE_VISUALLY_DISTINCT_IDENTIFIER.description": "시각적으로 비슷한 식별자 체커는 시각적으로 비슷하여 구별하기 어려운 식별자를 사용하는 경우를 검출합니다.\n시각적으로 구별하기 쉬운 식별자를 사용해야 합니다.",
  "USING_COPY_INITIALIZATION.description": "복사 초기화 방식 사용 체커는 복사 초기화 방식으로 정의한 클래스 형식의 변수를 검출합니다.\n클래스 형식의 변수에 선언과 동시에 대입으로 인자 값을 전달하면 복사 생성자를 호출합니다. 이 방식이 복사 초기화 방식입니다.\n복사 초기화 방식 대신 직접 초기화 방식을 사용하여 클래스 형식의 변수를 정의하는 것이 좋습니다. 이 경우 생성자가 한 번만 호출됩니다.",
  "USING_DIRECT_INDEX.RUST.description": "직접적인 배열 인덱싱은 잠재적으로 패닉을 일으킬 수 있으므로 런타임 중에 프로그램을 중단시킬 위험이 있습니다. 따라서 인덱스가 배열의 범위 내에 있는지 확실하게 확인하거나, 패닉 없이 Option을 반환하는 get 메소드를 사용해야 합니다.",
  "USING_DYNAMIC_CLASS_LOADING.description": "동적 클래스 로딩 사용 체커는 java.lang.Class.forName() 메소드 호출을 검출합니다.\n꼭 필요한 경우가 맞는지 한 번 더 확인하고 다른 방법이 없는지 생각해봅니다. 정적으로 로드할 수 있는 클래스라면 클래스의 이름 뒤에 .class를 붙여서 같은 효과를 얻을 수 있을 것입니다. 꼭 필요한 경우로 판단되면 공격당할 위험성을 충분히 고려하여 방어적으로 코드를 작성하고 문서화를 잘 해두도록 합니다.",
  "USING_FORGET.RUST.description": "std::mem 혹은 core::mem 모듈의 forget 함수는 객체의 소유권을 가져가고, 그 객체의 소멸자(destructor)가 호출되지 않게 합니다. 따라서 메모리 누수의 원인이 되거나 리소스가 제대로 해제되지 않을 가능성이 있기 때문에 안전성과 관련된 코드에서는 중대한 문제를 일으킬 수 있습니다.",
  "USING_HASH_WITHOUT_SALT.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n특히 비밀번호와 같은 중요 정보를 해싱하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "USING_HASH_WITHOUT_SALT_CSHARP.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n특히 비밀번호와 같은 중요 정보를 해싱하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "USING_INCOMPATIBLE_TYPE_WITH_C.RUST.description": "FFI(외부 함수 인터페이스)를 통해 다른 언어와 인터페이스 할 때 데이터 무결성을 유지하기 위해 데이터 타입의 호환성을 보장하는 것이 중요합니다. C-호환 타입은 메모리 내의 데이터 레이아웃이 C 언어의 레이아웃을 따르도록 보장하여 FFI 컨텍스트에서 예측 가능하고 상호 운용 가능하게 만들기 때문에 중요합니다.",
  "USING_MANUALLY_DROP.RUST.description": "ManuallyDrop은 Rust에서 명시적으로 메모리를 관리하고 메모리 해제를 수동으로 제어할 수 있는 래퍼 타입입니다. 따라서 소멸자를 명시적으로 호출하지 않고 소유권을 유지하면서 드랍이 발생하지 않도록 제어하는 경우에 사용합니다.",
  "USING_SYSTEM_EXIT.description": "프로그램 즉시 종료 API 호출 체커는 VM을 종료시키는 System.exit()과 같은 메소드 호출을 검출합니다.\nSystem.exit() 메소드를 호출하지 않습니다. 프로그램 종료가 필요하다면 오류 코드를 반환하여 상위로 전달하는 등의 다른 방법을 사용해야 합니다.",
  "USING_TRY_MACRO.RUST.description": "코드의 가독성을 향상시키고 에러 처리를 보다 명확하게 하기 위해 ? 연산자를 사용하고, 더 이상 권장되지 않는 try! 매크로의 사용을 피해야 합니다. try! 매크로는 오래된 문법이며 ? 연산자가 도입되면서 사용을 권장하지 않게 되었습니다. try! 매크로를 사용하는 것은 코드의 일관성을 해칠 뿐만 아니라 개발자들에게 혼동을 줄 수 있습니다.",
  "USING_UNINIT_MEM.RUST.description": "Rust 1.38.0부터 deprecated된 std::mem::uninitialized 또는 std::mem::MaybeUninit 타입을 사용하면 초기화되지 않은 메모리의 사용 혹은 드롭으로 인해 예측할 수 없는 동작 또는 메모리 안전 문제를 초래할 수 있습니다.",
  "USING_UNSAFE.RUST.description": "unsafe 블록은 Rust에서 메모리 안전성을 보장하지 않기 때문에 가능한 피해야 합니다. 그러나, C 언어 함수를 사용, 임베디드 프로그래밍, 불가피한 경우에는 unsafe를 사용할 수 있습니다.",
  "USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.description": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "UncommentedEmptyConstructor.description": "주석이 없는 빈 생성자는 의도적으로 비워둔 생성자인지 확인하기 어려우므로 이를 검출합니다.",
  "UncommentedEmptyMethodBody.description": "주석이 없는 빈 메소드는 의도적으로 비워둔 메소드인지 확인하기 어려우므로 이를 검출합니다.",
  "UnconditionalIfStatement.description": "If 조건문에 'true' 및 'false' 의 값을 넣는 경우 이를 검출합니다.",
  "UnhandledExceptionSpecification.description": "함수가 호출될 때 예외를 처리하는 코드가 없습니다.",
  "UninitMemberVar.description": "멤버 변수가 생성자에서 초기화되지 않습니다.",
  "UnnecessaryBlock.description": "불필요한 블록은 삭제해야 합니다.",
  "UnnecessaryBooleanAssertion.description": "불린 리터럴에 관한 JUnit 테스트의 assert 구문은 항상 같은 값에 대해 판별하기 때문에 불필요하며 이를 사용한 경우를 검출합니다. 만일 단순히 테스트를 중지하고자 하는 목적이라면 fail 메소드를 사용하도록 합니다.",
  "UnnecessaryCaseChange.description": "대소문자와 관계없이 비교를 수행할 때, equalsIgnoreCase()를 사용하는 것이 toUpperCase/toLowerCase().equals()를 사용하는 것 보다 더 빠릅니다. 본 규칙에서는 후자를 사용한 경우를 검출합니다.",
  "UnnecessaryConstructor.description": "클래스 안에 파라미터 받지 않고, 아무 예외도 throw 하지 않는 public 메소드 선언이 단 한줄 있는 경우 이를 검출합니다.",
  "UnnecessaryConversionTemporary.description": "기본 타입에 toString()을 사용하는 경우를 검출합니다.",
  "UnnecessaryFinalModifier.description": "Final로 선언된 클래스(Interface 제외) 안에서 final 로 선언되지 않은 메소드를 검출합니다.",
  "UnnecessaryFullyQualifiedName.description": "import 에 정의하고 fully qualified name을 사용했을 경우를 검출합니다.",
  "UnnecessaryLocalBeforeReturn.description": "바로 반환할 변수를 생성하는 코드를 검출합니다.",
  "UnnecessaryModifier.description": "인터페이스에서 자동으로 필드는 정적 public final, 메소드는 추상 public, 품고 있는 클래스 혹은 인터페이스는 정적 public 이므로 이를 명시적으로 쓰는 행위는 컴파일러에서 무시되며 이런 행위를 검출합니다.",
  "UnnecessaryParentheses.description": "불필요한 괄호를 제거합니다.",
  "UnnecessaryReturn.description": "Void 타입의 메소드 안의 반환 구문을 검출합니다.",
  "UnnecessaryWrapperObjectCreation.description": "파싱 메소드(예: Integer.parseInt(...))는 직접 호출되어야 합니다. 이를 위반한 경우를 검출합니다.",
  "UnpreciseMathCall.description": "해당 함수는 매우 크거나 작은 값에서 정확하지 않은 값을 반환합니다.",
  "UnreachableCode.description": "반환 구문 또는 'break', 'continue', 'throw' 문은 항상 블록 마지막에 사용되야 합니다. 위와 같은 구문을 사용한 다음에 문장은 실행이 되지 않습니다.",
  "UnsafeClassDivZero.description": "클래스의 공개 인터페이스가 안전하지 않습니다. 파라미터에 0이 들어가면 'Division by zero' 오류가 발생할 수 있습니다.",
  "UnsynchronizedStaticDateFormatter.description": "SimpleDateFormat 변수의 format()을 시행하는 메소드가 synchronized로 선언되지 않은 경우 이슈를 검출합니다.",
  "UnusedFormalParameter.description": "메소드의 파라미터로 받고 사용하지 않는 변수를 검출합니다.",
  "UnusedLocalVariable.description": "사용하지 않는 지역변수를 검출합니다.",
  "UnusedNullCheckInEquals.description": "특정 객체의 널 검사 이후 해당 객체로부터 equals()를 호출하지 않는 경우 이를 검출합니다.",
  "UnusedPrivateField.description": "사용하지 않는 private 변수를 검출합니다.",
  "UnusedPrivateFunction.description": "사용되지 않는 private 함수가 있습니다.",
  "UnusedPrivateMethod.description": "사용하지 않는 private 메소드를 검출합니다.",
  "UseArrayListInsteadOfVector.description": "Vector 타입 사용을 검출합니다.",
  "UseArraysAsList.description": "java.util.Arrays는 배열로부터 새로운 리스트를 생성하기 위한 asList() 메소드를 제공합니다. 이는 loop를 통해 배열의 모든 원소를 하나하나 리스트에 복사하는 것 보다 빠릅니다. asList 메소드를 사용하지 않고 loop 구문을 통해 리스트를 생성하는 경우 이를 검출합니다.",
  "UseAssertEqualsInsteadOfAssertTrue.description": "객체가 서로 같음을 판단하기 위해서 assertTrue(x.equals(y))를 사용한 경우를 검출합니다. 해당 방법 대신 assertEquals(x, y)를 사용하기를 권장합니다.",
  "UseAssertNullInsteadOfAssertTrue.description": "객체의 널 여부를 판단하기 위해 assertTrue(x==null), 혹은 assertFalse(x==null)을 사용한 경우를 검출합니다. 해당 방법 대신 assertNull(x)나 assertNotNull(x)를 사용하기를 권장합니다.",
  "UseAssertSameInsteadOfAssertTrue.description": "객체의 참조가 서로 같음을 판단하기 위해서 assertTrue(x==y)를 사용한 경우를 검출합니다. 해당 방법 대신 assertSame(x, y)를 사용하기를 권장합니다.",
  "UseAssertTrueInsteadOfAssertEquals.description": "assert관련 메소드를 사용시 assertEqual() 보다 assertTrue(), assertFalse()를 사용할 것을 권장합니다.",
  "UseCollectionIsEmpty.description": "컬렉션 객체에 .size()==0 혹은 .size()!=0 사용을 검출합니다.",
  "UseConcatOnce.description": "XPath concat() 함수를 중첩해서 사용하지 말고, 한번만 사용 할 수 있습니다.",
  "UseConcurrentHashMap.description": "Java 1.5 이상에서는 동시성 애플리케이션을 위해 특별히 설계된 ConcurrentHashMap을 제공합니다. 따라서 이 경우 ConcurrentHashMap을 사용하지 않은 경우를 검출합니다.",
  "UseCorrectExceptionLogging.description": "로거로 선언된 객체에 대하여, catch 블록 안에서 객체의 PrimarySuffix 인자를 하나만 받으며, 이 인자 이름이 catch 구문의 FormalParameter 이름과 같은 경우 이를 검출합니다.",
  "UseEqualsToCompareStrings.description": "문자열 비교를 ==, != 를 통해서 문자열 상수와 비교하는 경우 이를 검출합니다.",
  "UseIndexOfChar.description": "문자열의 indexOf()를 호출할 경우 indexOf(String)을 사용한 경우를 검출합니다. 해당 방법 대신 indexOf(char)를 사용하면 더 빠르게 수행됩니다.",
  "UseInitializationList.description": "클래스의 객체가 생성될 때, 초기화 목록에 명시하지 않았다고 하더라고 모든 멤버 변수의 생성자가 변수가 선언된 순서대로 호출됩니다. 초기화 목록에 값을 전달함으로써 변수에 값을 할당할 수 있습니다.",
  "UseLocaleWithCaseConversions.description": "toLowerCase(), toUpperCase() 사용 시 인자 미 사용을 검출합니다.",
  "UseNotifyAllInsteadOfNotify.description": "notify() 구문에 인자를 전달하지 않는 사용을 검출합니다.",
  "UseObjectForClearerAPI.description": "API의 재사용, 수정 등의 유지보수 측면에서 API의 인자를 단일 객체로 사용할 것을 권장합니다.",
  "UseProperClassLoader.description": "PrimarySuffix로 getClassLoader 사용을 검출합니다.",
  "UseUtilityClass.description": "만일 특정 클래스가 정적 요소만을 보유하고 있는 경우, 이를 싱글턴으로 만들 것을 권장합니다. 또는 그 대신에 private 생성자를 추가하거나 추상 클래스로 바꾸는 것도 가능합니다.",
  "UseVarargs.description": "Java 5에서 varargs 이 메소드와 생성자에서 사용할 수 있게 되었습니다. 배열보다 varargs를 사용할 것을 권장합니다.",
  "UselessOperationOnImmutable.description": "불변 객체 (String, BigDecimal or BigInteger)의 계산은 자신을 스스로 바꾸지 않기 때문에 결과 값을 그냥 두는 경우 이를 검출합니다.",
  "UselessOverridingMethod.description": "단순히 super 클래스의 메소드 호출하면 될 것을 다시 같은 이름의 메소드를 만들어 안에 super 클래스의 동일 이름 메소드 호출을 검출합니다.",
  "UselessParentheses.description": "불필요한 괄호를 제거해야 합니다.",
  "UselessStringValueOf.description": "문자열에 값을 더할 때 String.valueOf()의 호출을 검출합니다. 대신 직접 valueOf()의 인자를 사용할 것을 권장합니다.",
  "VA_ARG_INTEGER_PROMOTION.description": "정확하지 않은 가변인자 타입 체커는 va_arg 매크로에 사용하는 인자의 타입이 정확하지 않은 수식을 검출합니다.\nva_arg에 제공하는 타입을 정수 승급 문제등이 발생하지 않도록 int 타입을 사용하는 것을 권장합니다.",
  "VERIFY_PROVIDE_STANDARD_INTERFACE.description": "표준 인터페이스 미제공 체커는 최소한의 표준 인터페이스를 제공하지 않는 클래스를 검출합니다.\n최소한의 표준 인터페이스란 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 의미합니다. 구체적으로 이 체커는 위 4개의 메소드가 클래스에서 구현되어 있는지를 검사하며, 이 조건을 충족하지 못한 클래스를 검출합니다.\n모든 클래스에서 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 명시적으로 정의합니다.",
  "VOID_KEYWORD_FOR_NO_PARAM.description": "인자가 없는 함수에서 void 키워드 누락 체커는 인자가 없는 함수 선언에서 인자 목록에 void 키워드를 명시하지 않은 경우를 검출합니다.\n인자가 없는 함수를 선언할 때 void 키워드를 명시해야 합니다.",
  "VOID_RETURN_VALUE_SHALL_NOT_BE_USED.description": "void 함수의 반환 값 사용 체커는 반환 타입이 void로 선언된 함수의 반환 값을 사용하는 경우를 검출합니다.\n반환 타입이 void인 함수는 수식에 사용하거나 변수에 대입해선 안됩니다. 일반적으로 이런 함수는 단독 호출 구문으로만 사용하는 것이 좋습니다.",
  "VOLATILE_ACCESS_RHS_OF_LOGICAL_OP.description": "논리 연산자의 우측항에서 volatile 객체 사용 체커는 논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하는 수식을 검출합니다.\n논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하지 않도록 합니다.",
  "VOLATILE_VALUE_MODIFICATION.description": "참조 타입에 volatile 한정자 사용 체커는 참조 타입 변수에 금지된 volatile 한정자를 사용하는 코드를 검출합니다.\n참조 타입에 volatile 한정자를 사용하지 않도록 합니다.",
  "VariableNamingConventions.description": "변수 이름 표준 위반을 검출합니다.\n1. Static이며 final인 변수일 때, 변수 이름이 전부 대문자가 아닐 경우\n2. Final이 아닌 변수가 _(underscore) 문자를 포함할 경우\n3. Final 이 아닌 변수가 대문자로 시작할 경우",
  "VfCsrf.description": "페이지 로드시에 VF 액션을 호출 하는 경우 CSRF 에 취약할 수 있습니다.",
  "VfUnescapeEl.description": "EL에서 유저 입력을 받을 때 이스케이핑 작업을 하지 않으면, XSS 공격에 취약 할 수 있습니다.",
  "VirtualDestructor.description": "상속한 부모 클래스에 가상 소멸자가 없습니다. 부모 클래스로 캐스팅된 자식 클래스가 제거될 때, 부모 클래스의 소멸자만 호출됩니다. 동적으로 할당된 자식 클래스의 메모리로 인해 누수가 발생합니다. 부모 클래스의 소멸자를 가상 소멸자로 선언하십시오.",
  "WAIT_ALL_THREAD_BEFORE_DESTROY.description": "다른 스레드의 뮤텍스 조작 체커는 다른 스레드의 뮤텍스를 잠금 해제하거나 파괴한 경우를 검출합니다.\n다른 스레드의 뮤텍스를 잠금 해제하거나 파괴하지 않도록 합니다.",
  "WEAK_CRYPTOGRAPHIC_HASH_HARDCODED_SALT.description": "하드코딩된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.\n암호학적으로 안전한 방식으로 무작위로 생성되어 예측하기 어려운 솔트를 사용하거나 솔트를 외부 입력을 통해 전달하는 것이 좋습니다.",
  "WEAK_ENCRYPTION.HARDCODED_SALT.description": "하드코딩된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.\n암호학적으로 안전한 방식으로 무작위로 생성되어 예측하기 어려운 솔트를 사용하거나 솔트를 외부 입력을 통해 전달하는 것이 좋습니다.",
  "WEAK_ENCRYPTION.INSUFFICIENT_KEY.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키를 사용하는 코드를 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "WEAK_ENCRYPTION.PASSWORD.description": "취약한 암호화 알고리즘의 비밀번호 체커는 단순한 암호화 알고리즘으로 비밀번호를 암호화하는 코드를 검출합니다.\n구체적으로, SQLConnect() 함수의 6번째 인자로 전달되는 비밀번호에서 취약한 암호화 알고리즘을 사용하는 경우입니다. 권장하는 암호화 모듈은 RSA_private_decrypt() 함수 혹은 RSA_private_decrypt_assign() 함수입니다.\n취약한 암호화 알고리즘으로 비밀번호를 암호화하지 않도록 합니다.",
  "WEAK_ENCRYPTION.RISKY_ALGORITHM.description": "취약한 암호화 알고리즘 체커는 안전하지 않은 암호화 알고리즘을 사용하는 코드를 검출합니다.\n해당 오류는 다음과 같은 취약한 암호화 알고리즘을 사용하는 경우에 발생합니다. RC2, RC4, RC5, RC6, MD4, MD5, SHA1, DES.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "WEAK_ENCRYPTION.RSA_PADDING.description": "부적절한 RSA 패딩 체커는 RSA 알고리즘을 사용할 때 부적절한 패딩 방식을 사용하는 코드를 검출합니다.\n패딩 옵션에서 RSA를 패딩 없이 사용하는 RSA_NO_PADDING을 전달하지 않도록 합니다.\nOAEP 방식을 사용하는 것이 좋습니다.",
  "WEAK_ENCRYPTION_INADEQUATE_RSA_PADDING.description": "부적절한 RSA 패딩 체커는 RAS 알고리즘 사용 시 부적절한 패딩 방식을 사용하는 경우를 검출합니다.\n패딩 옵션으로 \"RSA/NONE/NoPadding\"을 전달하면 안됩니다.\nOAEP 방식을 사용하는 것이 좋습니다.",
  "WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "WEAK_SERVER_CERTIFICATES.description": "취약한 서버 인증서 검증 체커는 X509TrustManager 클래스를 상속한 자식 클래스에서 오버라이드 함수를 재정의하지 않거나 예외를 throw하지 않는 코드를 검출합니다.\n해당 인증서의 유효성을 제어하지 않는 방식으로 X509TrustManager 를 구현한 경우 문제가 발생할 수 있습니다. X509TrustManager 인터페이스를 구현하여 인증서에 대한 유효성 검사를 수행해야 합니다.",
  "WM__TAG__ACCESS": "접근",
  "WM__TAG__ANALYSIS": "분석",
  "WM__TAG__BROWSER": "웹 브라우저",
  "WM__TAG__CLIENT": "HTTP 클라이언트",
  "WM__TAG__CRAWL": "수집",
  "WM__TAG__DAST": "DAST",
  "WM__TAG__ENDPOINT": "엔드포인트",
  "WM__TAG__FAILURE": "실패",
  "WM__TAG__FIND": "발견",
  "WM__TAG__INVALID": "부적절",
  "WM__TAG__LOGIN_RECORD": "로그인 기록",
  "WM__TAG__OPENAPI": "OpenAPI",
  "WM__TAG__PARSING": "구문 분석",
  "WM__TAG__PRE": "사전 분석",
  "WM__TAG__PROCESS": "엔진 프로세스",
  "WM__TAG__SEED_URL": "분석 대상 URL",
  "WM__TAG__SOCKET": "TCP 소켓",
  "WM__TAG__SUCCESS": "성공",
  "WM__WARNING__CRAWL__OPENAPI__ENDPOINT__ACCESS__FAILURE__CONTENT": "수집 도중, OpenAPI 엔드포인트 접근에 실패했습니다.\n\n해당 엔드포인트의 URL은 다음과 같습니다: \n\n```{0}```",
  "WM__WARNING__CRAWL__OPENAPI__ENDPOINT__ACCESS__FAILURE__TITLE": "수집 도중 OpenAPI 엔드포인트 접근 실패",
  "WM__WARNING__CRAWL__OPENAPI__PARSING__FAILURE__CONTENT": "수집 도중, OpenAPI 명세 파일 분석에 실패했습니다. 제공한 명세 파일이 올바른 파일인지 확인하세요.",
  "WM__WARNING__CRAWL__OPENAPI__PARSING__FAILURE__TITLE": "수집 도중 OpenAPI 명세 파일 분석 실패",
  "WM__WARNING__CRAWL__OPENAPI__UNEXPECTED__FAILURE__CONTENT": "수집 도중, 예상치 못한 오류가 발생하여 OpenAPI 처리에 실패했습니다.",
  "WM__WARNING__CRAWL__OPENAPI__UNEXPECTED__FAILURE__TITLE": "수집 도중 예상치 못한 OpenAPI 처리 실패",
  "WM__WARNING__PRE__BROWSER__LOGIN_RECORD__FIND__INVALID__CONTENT": "사전 분석 도중, 브라우저에서 적절하지 않은 로그인 기록을 발견했습니다. \n\n해당 로그인 기록을 실행할 수 없습니다.\n\n해당 로그인 기록을 포함하는 파일은 다음과 같습니다: \n\n```{0}```",
  "WM__WARNING__PRE__BROWSER__LOGIN_RECORD__FIND__INVALID__TITLE": "사전 분석 도중 브라우저에서 유효하지 않은 로그인 기록 발견",
  "WM__WARNING__PRE__BROWSER__SEED_URL__ACCESS__FAILURE__CONTENT": "사전 분석 도중, 브라우저에서 분석 대상 URL에 대한 접근에 실패했습니다.\n\n해당 분석 대상 URL은 다음과 같습니다: \n\n```{0}```",
  "WM__WARNING__PRE__BROWSER__SEED_URL__ACCESS__FAILURE__TITLE": "사전 분석 도중 브라우저에서 분석 대상 URL 접근 실패",
  "WM__WARNING__PRE__OPENAPI__ENDPOINT__ACCESS__FAILURE__CONTENT": "사전 분석 도중, OpenAPI 엔드포인트 접근에 실패했습니다.\n\n해당 엔드포인트의 URL은 다음과 같습니다: \n\n```{0}```",
  "WM__WARNING__PRE__OPENAPI__ENDPOINT__ACCESS__FAILURE__TITLE": "사전 분석 도중 OpenAPI 엔드포인트 접근 실패",
  "WM__WARNING__PRE__OPENAPI__PARSING__FAILURE__CONTENT": "사전 분석 도중, OpenAPI 명세 파일 분석에 실패했습니다. 제공한 명세 파일이 올바른 파일인지 확인하세요.",
  "WM__WARNING__PRE__OPENAPI__PARSING__FAILURE__TITLE": "사전 분석 도중 OpenAPI 명세 파일 분석 실패",
  "WM__WARNING__PRE__OPENAPI__UNEXPECTED__FAILURE__CONTENT": "사전 분석 도중, 예상치 못한 오류가 발생하여 OpenAPI 처리에 실패했습니다.",
  "WM__WARNING__PRE__OPENAPI__UNEXPECTED__FAILURE__TITLE": "사전 분석 도중 예상치 못한 OpenAPI 처리 실패",
  "WRITE_DIRECTIVE_NESTED_PREPROCESSOR.description": "공백 없이 전처리 지시자 사용 체커는 전처리 지시자가 첫 번째 컬럼에서 시작하지 않거나 #과 전처리 지시자 이름 사이에 공백이 없는 경우를 검출합니다.\n전처리 조건문 내부에 속하는 전처리 지시자는 첫 번째 컬럼에서 시작하여 #와 전처리 지시자 이름 사이에 공백을 넣도록 합니다.",
  "WRITE_DIRECTIVE_PREPROCESSOR.description": "전처리 지시자에 공백 사용 체커는 전처리 지시자가 첫 번째 컬럼에서 시작하지 않거나 #과 전처리 지시자 이름 사이에 공백이 있는 경우를 검출합니다.\n이 규칙은 WRITE_DIRECTIVE_NESTED_PREPROCESSOR와 서로 상충됩니다. 두 규칙을 같이 사용하지 않도록 합니다.\n전처리 지시자는 첫 번째 컬럼에서 시작하여 #과 전처리 지시자 이름 사이에 공백이 없도록 합니다.",
  "WRITE_STATIC_DECLARING_OPERATOR_NEW_AND_DELETE.description": "정적으로 선언하지 않은 메모리 연산자 오버로딩 체커는 클래스에서 정적으로 선언하지 않은 new 와 delete 연산자 오버로딩을 검출합니다.\nnew와 delete 연산자를 오버로딩할 경우 반드시 static 키워드를 붙여 정적으로 선언합니다.",
  "WRITE_TO_READONLY_FILE.description": "읽기 전용 파일에 쓰기 시도 체커는 읽기 모드로 열린 파일에 쓰기를 시도한 경우를 검출합니다.\n읽기 전용 파일에서는 읽기 동작만 수행합니다. 파일에 쓰기 동작을 할 필요가 있다면 읽기와 쓰기가 모두 가능한 모드로 파일을 엽니다.",
  "WRITE_VIRTUAL_DTOR_FOR_BASE_CLASS.description": "부모 클래스 소멸자를 비 가상으로 선언 체커는 소멸자를 가상으로 선언하지 않은 부모 클래스를 검출합니다.\n부모 클래스의 소멸자를 가상으로 선언합니다.",
  "WRONG_ERROR_HANDLING.description": "잘못된 오류 처리 체커는 애플리케이션 독립적인 코드에서 오류 감지 메커니즘을 제공하지 않는 경우를 검출합니다.\n여기서 애플리케이션 독립적인 코드란 컴파일러 및 운영 체제와 함께 제공되거나 제3자가 제공한 라이브러리 혹은 내부 용도로 개발된 코드를 의미합니다.\n애플리케이션 독립적인 코드에서 오류 감지 메커니즘을 제공하도록 합니다. 즉, 반환값, 인자에 전달된 주소 값, 전역 객체, longjmp() 등을 사용하여 오류를 애플리케이션에 전달할 수 있도록 합니다.",
  "WRONG_NUMBER_OF_PARAMETERS_IN_MACRO.description": "인자 개수가 모자란 매크로 함수 사용 체커는 매크로 함수 사용 시 모든 인자들을 포함하지 않고 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 함수에서 선언한 매개 변수 개수와 매크로 함수에 전달하는 인자 개수가 일치하도록 매크로 함수를 사용합니다.",
  "WRONG_PREPROCESSING_TOKEN.description": "잘못된 전처리 구문 토큰 체커는 #토큰 이후에 올바른 전처리 토큰이 이어지지 않는 전처리 구문을 검출합니다.\n이 규칙은 모든 전처리 구문이 제외된 코드 블록 내에서 발생하더라도 문법적으로 유효해야 한다는 것입니다.\n모든 전처리 구문은 #토큰 이후에 올바른 전처리 구문이 이어져야 합니다.",
  "WhileLoopsMustUseBraces.description": "중괄호를 사용하지 않은 while 구문을 검출합니다.",
  "Wrongmathcall.description": "해당 함수는 매우 크거나 작은 값에서 정확하지 않은 값을 반환합니다.",
  "XML_EXTERNAL_ENTITY_ATTACKS.description": "XML 외부 엔터티 공격 체커는 외부 엔터티에 대한 참조를 포함하는 XML 입력이 부적절하게 구성된 XML 파서에 의해 처리되는 코드를 검출합니다.\n엔터티 선언은 일반적으로 사용되는 텍스트나 특수문자에 대한 바로가기(shortcut)를 정의하며, 내부 또는 외부 엔터티를 정의할 수 있습니다. 내부 엔터티의 경우 엔터티의 내용이 선언에 제공되며, 외부 엔터티의 경우 내용이 URI(Uniform Resource Identifier)로 지정됩니다. 엔터티는 파싱될 수도 있고 되지 않을 수도 있습니다. 파싱된 엔터티의 내용은 대체 텍스트라고 부릅니다. 파싱되지 않은 엔터티는 텍스트일 수도 있고 아닐 수도 있습니다. 만약 텍스트인 경우 XML일 수도 있고 아닐 수도 있습니다.\n\n파싱된 엔터티는 엔터티 참조를 사용하여 이름으로 호출되며, 파싱되지 않은 엔터티는 이름으로 호출됩니다. XML W3C Recommendation, 4.4.3절, Included If Validating [W3C 2008]에 따르면, XML 프로세서가 파싱된 엔터티에 대한 참조를 인식하면 문서의 유효성을 검사하기 위해 프로세스는 반드시 대체 텍스트를 포함해야 합니다. 만약 엔터티가 외부이고 프로세서가 XML 문서의 유효성을 검사하려 하지 않을 경우 프로세서는 엔터티의 대체 텍스트를 포함할 수도 그렇지 않을 수도 있습니다.\n\n외부 엔터티의 대체 텍스트 포함은 선택 사항(optional)이므로, 모든 XML 프로세서가 유효성 검사 중 외부 엔터티 공격에 취약하지는 않습니다. XML 외부 엔터티(XXE, XML eXternal Entity) 공격은 외부 엔터티에 대한 참조를 포함하는 XML 입력이 부적절하게 구성된 XML 파서에 의해 처리될 때 발생합니다.\njavax.xml.parsers.SAXParser.parse()를 사용하지 않거나 org.xml.sax.XMLReader.parse() 사용할 경우 사전에 org.xml.sax.XMLReader.setEntityResolver()를 호출해서 사용해야 합니다.",
  "XPATH_INJECTION.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(\", [, ], /, =, @ 등) 및 쿼리 예약어 필터링을 수행하고 매개 변수화된 쿼리문을 지원하는 XQuery를 사용해야 합니다.",
  "XPATH_INJECTION_ASPNET.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(\", [, ], /, =, @ 등) 및 쿼리 예약어를 필터링합니다.",
  "XQUERY_INJECTION.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "XQUERY_INJECTION_ASPNET.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "XSLT_INJECTION_CSHARP.description": "XSLT 삽입 체커는 검증되지 않은 XSL 스타일 시트를 사용한 XSL 변환 명령 실행을 검출합니다.\n신뢰할 수 있는 XSL 스타일 시트만을 변환에 사용합니다.",
  "XSS.JSTL_COUT_ESCAPE_XML_FALSE.description": "escapeXml 설정으로 인한 크로스 사이트 스크립팅 체커는 JSTL의 c:out 태그를 사용할 때 escapeXml 속성을 false로 지정하는 경우를 검출합니다.\nescapeXml 속성은 true로 지정합니다.",
  "XSS.WARNING.description": "외부에서 입력한 문자열을 특정 조건부 필터링 등을 사용하여 결과 페이지에 외부 입력 문자열이 포함될 가능성이 있는 경우를 검출 합니다. 전송된 동적 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출 등의 피해를 입힐 수 있습니다.",
  "XSS.description": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "XSS_ASPNET.description": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "XSS_ATTRIBUTE.description": "속성값에 의한 크로스 사이트 스크립트 체커는 외부에서 전달된 요청에 부여된 속성값을 검증 없이 HTML 출력에 사용하는 경우를 검출합니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "XSS_DOM.description": "DOM 기반 크로스 사이트 스크립트 체커는 외부 입력값을 검증 없이 JSP의 DOM 객체 출력에 사용하는 경우를 검출합니다.\nJSP의 DOM 객체 출력을 수행하는 메소드에는 JSP의 document.write() 메소드 등이 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "XSS_ERROR_MESSAGE.description": "오류 메시지를 통한 크로스 사이트 스크립트 체커는 오류 메시지를 전송할 때 외부 입력과 함께 전송하는 경우를 검출합니다.\n외부 입력을 오류 메시지에 직접 포함시키지 않아야 합니다.",
  "XSS_ERROR_MESSAGE_ASPNET.description": "오류 메시지를 통한 크로스 사이트 스크립트 체커는 오류 메시지를 전송할 때 외부 입력과 함께 전송하는 경우를 검출합니다.\n외부 입력을 오류 메시지에 직접 포함시키지 않아야 합니다.",
  "XSS_FROM_URL.REACT.description": "URL 값을 악의적인 값으로 수정하게 허용하면 XSS와 같은 공격에 노출될 수 있습니다. 특히 \"javascript:\"가 포함된 주소를 사용하여 URL을 조작할 경우 공격자의 의도대로 악성 스크립트를 실행할 수 있게 됩니다.\nReact에서는 위험한 JavaScript URL을 만나면 경고가 나오게 됩니다. 하지만 이 경고는 개발자에게 URL 사용의 잠재적 위험을 알려주지만 URL 사용을 방지해주지 않습니다.\n ",
  "abapchk.AVOID_ROOT_EXCEPTION.ABAP.defect": "CX_ROOT 예외를 catch 하지 마십시오.",
  "abapchk.BAD_CALL.BREAK_POINT.ABAP.defect": "배포되는 애플리케이션 코드에 BREAK-POINT 구문을 사용하면 안됩니다.",
  "abapchk.BAD_CALL.EXIT_CHECK_IN_SELECT_LOOP.ABAP.defect": "EXIT, CHECK 구문은 SELECT 루프 내에서 사용하지 마십시오.",
  "abapchk.BAD_CALL.SYSTEM_CALL.ABAP.defect": "SYSTEM-CALL 구문을 사용하지 마십시오.",
  "abapchk.BAD_CALL.SYSTEM_C_FUNCTION.ABAP.defect": "시스템 C 함수(CALL 구문)를 호출하지 마십시오.",
  "abapchk.BAD_NAME.CLASS.ABAP.defect": "클래스 이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.BAD_NAME.DATA.ABAP.defect": "DATA 변수 이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.BAD_NAME.FORM.ABAP.defect": "FORM 이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.BAD_NAME.FUNCTION.ABAP.defect": "함수 이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.BAD_NAME.INTERFACE.ABAP.defect": "INTERFACE 이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.BAD_NAME.METHOD.ABAP.defect": "METHOD 이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.BAD_NAME.PROGRAM.ABAP.defect": "PROGRAM이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.BAD_NAME.REPORT.ABAP.defect": "REPORT 이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.CASE_ENDS_WITH_WHEN_OTHERS.ABAP.defect": "WHEN OTHERS 절은 CASE 구문의 맨 마지막에 위치해야 합니다.",
  "abapchk.DEEPLY_NESTED.ABAP.defect": "구문이 너무 많이 중첩되었습니다.",
  "abapchk.DEPRECATED.DATA_BEGIN_OF_OCCURS.ABAP.defect": "DATA BEGIN OF OCCURS 구문은 더 이상 지원되지 않기 때문에 사용하면 안됩니다.",
  "abapchk.DEPRECATED.FORM.ABAP.defect": "DATA 변수 이름은 명명규칙에 위배되지 않아야 합니다.",
  "abapchk.DEPRECATED.REFRESH_ITAB_FROM_TABLE.ABAP.defect": "\"REFRESH itable FROM TABLE dbtable\" 구문은 더 이상 지원하지 않기 때문에 사용하면 안됩니다..",
  "abapchk.EMPTY_BRANCH.ELSE.ABAP.defect": "IF 및 ELSEIF 는 ELSE 절로 끝나야 합니다.",
  "abapchk.EMPTY_BRANCH.WHEN_OTHERS.ABAP.defect": "CASE 구문에는 하나의 WHEN OTHERS 절이 반드시 존재해야 합니다.",
  "abapchk.EMPTY_CATCH_BLOCK.ABAP.defect": "CATCH 블록이 비어있습니다.",
  "abapchk.FORBIDDEN.ASTERISK.SELECT.ABAP.defect": "\"SELECT * ...\" 구문을 사용하여 모든 컬럼을 읽어들이지 마십시오.",
  "abapchk.FORBIDDEN.BYPASSING_BUFFER.ABAP.defect": "SQL 문에서 BYPASSING BUFFER 절을 사용하지 마십시오.",
  "abapchk.FORBIDDEN.DISTINCT.ABAP.defect": "SQL 문에서 DISTINCT 연산자를 사용하지 마십시오.",
  "abapchk.FORBIDDEN.DYNAMIC_CLAUSES.SELECT.ABAP.defect": "SELECT 문은 dynamic 절을 포함하지 말아야 합니다.",
  "abapchk.FORBIDDEN.INTERNAL_STMT.ABAP.defect": "내부적으로 사용되는 구문은 사용하지 말아야 합니다.",
  "abapchk.FORBIDDEN.NATIVE.SQL.ABAP.defect": "Native SQL 을 사용하지 마십시오.",
  "abapchk.FORBIDDEN.NOT_IN_COND.ABAP.defect": "SQL 쿼리문에서 NOT IN 을 사용하지 마십시오.",
  "abapchk.FORBIDDEN.QUERY_IN_LOOP.ABAP.defect": "SELECT 구문은 LOOP 나 WHILE 구문 내에서 사용하면 안됩니다.",
  "abapchk.KEYWORD_AS_IDENTIFIER.ABAP.defect": "키워드를 변수 이름으로 사용하지 마십시오.",
  "abapchk.MISSING.ORDER_BY.SELECT.ABAP.defect": "SELECT 구문은 반드시 ORDER BY 절과 함께 사용해야 합니다.",
  "abapchk.MISSING.SORT_KEY.ABAP.defect": "내부 테이블 정렬을 위해 SORT 필드가 존재해야 합니다.",
  "abapchk.MISSING.WHERE.DELETE.ABAP.defect": "DELETE from dbtable 구문은 반드시 WHERE 절이 있어야 합니다.",
  "abapchk.MISSING.WHERE.SELECT.ABAP.defect": "SELECT 구문은 반드시 WHERE 절과 함께 사용해야 합니다.",
  "abapchk.MISSING.WHERE.UPDATE.ABAP.defect": "UPDATE 구문에는 반드시 WHERE 절이 있어야 합니다.",
  "abapchk.NESTED_SELECT.ABAP.defect": "SELECT 구문을 중첩해서 사용하는 대신 JOIN 절을 사용하십시오.",
  "abapchk.STRING.DUPLICATED.ABAP.defect": "문자열이 너무 많이 중복되었습니다.",
  "abapchk.TOO_BIG_FILE.ABAP.defect": "해당 파일의 라인 수가 너무 많습니다.",
  "abapchk.TOO_FEW_WHEN.ABAP.defect": "CASE 구문은 적어도 3개의 WHEN 절을 가져야 합니다.",
  "abapchk.TOO_LONG_COLUMN.ABAP.defect": "한 라인의 길이가 사전에 옵션을 통해 정의된 길이를 초과했습니다.",
  "abapchk.TOO_MANY_BRANCH_IN_LOOP.ABAP.defect": "반복문 내에서 CONTINUE, EXIT, CHECK 구문을 두 번 이상 사용하지 마십시오.",
  "analyzer.analysis.all_checker_enable.description": "모든 취약점 체커 활성화는 취약점 체커 목록에 상관없이 가능한 모든 체커를 활성화할 수 있습니다. 이 옵션을 '예'로 설정하면 취약점 체커 목록에 상관없이 모든 체커를 활성화하여 분석합니다. 반면, '아니요'로 설정하면 취약점 체커 목록에 있는 체커만을 활성화하여 분석합니다.",
  "analyzer.analysis.all_checker_enable.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "analyzer.analysis.all_checker_enable.name": "모든 취약점 체커 활성화",
  "analyzer.analysis.all_checker_enable.placeholder": "해당 없음",
  "analyzer.analysis.checker_list.description": "취약점 체커는 취약점을 검출하는 모듈입니다.",
  "analyzer.analysis.checker_list.message": "취약점 체커는 1개 이상 선택해야 합니다.",
  "analyzer.analysis.checker_list.name": "취약점 체커",
  "analyzer.analysis.checker_list.placeholder": "해당 없음",
  "analyzer.analysis.disable_timing.description": "비활성화할 분석 단계는 PRE, NORMAL, POST, LAST 순서대로 진행하는 분석 단계 중에서 건너뛸 분석 단계를 지정합니다.",
  "analyzer.analysis.disable_timing.extras.0.PRE": "PRE",
  "analyzer.analysis.disable_timing.extras.0.pre": "PRE",
  "analyzer.analysis.disable_timing.extras.1.NORMAL": "NORMAL",
  "analyzer.analysis.disable_timing.extras.1.normal": "NORMAL",
  "analyzer.analysis.disable_timing.extras.2.POST": "POST",
  "analyzer.analysis.disable_timing.extras.2.post": "POST",
  "analyzer.analysis.disable_timing.extras.3.LAST": "LAST",
  "analyzer.analysis.disable_timing.extras.3.last": "LAST",
  "analyzer.analysis.disable_timing.message": "PRE, NORMAL, POST, LAST 중 하나의 값이어야 합니다.",
  "analyzer.analysis.disable_timing.name": "비활성화할 분석 단계",
  "analyzer.analysis.disable_timing.placeholder": "비활성화할 분석 단계를 선택하세요.",
  "analyzer.analyze.timeout.description": "이 옵션에 입력된 **값이 클수록 분석 시간이 증가**하고 **분석의 결과도 늘어**날 수 있습니다. 이 옵션에 입력된 값이 **적을수록 분석 시간이 감소**하고 **분석의 결과도 줄어**들 수 있습니다. 아무것도 입력하지 않는 경우 옵션의 기본값은 `0`이며 이 경우에 분석할 수 있는 시간을 제한하지 않게 됩니다.",
  "analyzer.analyze.timeout.message": "0 이상 2,147,483,647 이하여야 합니다.",
  "analyzer.analyze.timeout.name": "최대 분석 시간",
  "analyzer.analyze.timeout.placeholder": "시간을 입력하세요. (단위: 분)",
  "analyzer.detect.stored.description": "이 옵션을 `예`로 설정하면 **저장 기반 취약점을 검출하기 위해 추가적인 작업을 수행하고, 저장 기반 취약점을 검출하기 위한 체커를 활성화**합니다. 이로 인해 분석 속도가 느려지지만 저장 기반 취약점을 검출할 수 있습니다. 이 옵션을 `아니요`로 설정하면 **저장 기반 취약점을 검출하기 위한 작업을 수행하지 않고, 저장 기반 취약점을 검출하기 위한 체커를 비활성화**합니다. 이로 인해 분석 속도는 빨라지지만 저장 기반 취약점을 검출할 수 없습니다.",
  "analyzer.detect.stored.message": "'true' 또는 'false'를 입력해야 합니다.",
  "analyzer.detect.stored.name": "저장 기반 취약점 검출",
  "analyzer.detect.stored.placeholder": "해당 없음",
  "analyzer.skip.url.description": "이 옵션에 입력한 **목록에 해당하는 단어가 하나라도 분석하려는 URL에 포함되었다면 해당 URL을 분석하지 않게** 됩니다.",
  "analyzer.skip.url.message": "문자열이어야 합니다.",
  "analyzer.skip.url.name": "제외할 분석 URL",
  "analyzer.skip.url.placeholder": "URL을 입력하세요. 엔터로 구분합니다.",
  "analyzer.truescan.handler.lifetime.description": "트루스캔을 사용할 때 에이전트가 전송한 호출 정보를 기반으로 검출을 시도하는 핸들러의 유효 기간을 의미합니다. 핸들러의 유효 기간이 만료된 경우, 해당 핸들러는 동작 여부와 관계없이 제거됩니다. 분석 대상 서버의 성능 문제로 인하여 핸들러가 동작하기 전에 제거되는 경우, 해당 옵션 값을 증가시켜 해결할 수 있습니다.",
  "analyzer.truescan.handler.lifetime.message": "0보다 큰 숫자를 입력하세요.",
  "analyzer.truescan.handler.lifetime.name": "트루스캔 핸들러 유효 기간",
  "analyzer.truescan.handler.lifetime.placeholder": "해당 없음",
  "analyzer.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "analyzer.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "analyzer.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "analyzer.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "analyzer.variant.injectable.extras.1.form_data": "폼 데이터",
  "analyzer.variant.injectable.extras.2.COOKIE": "쿠키",
  "analyzer.variant.injectable.extras.2.cookie": "쿠키",
  "analyzer.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "analyzer.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "analyzer.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "analyzer.variant.injectable.extras.4.url_path": "URL 경로",
  "analyzer.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "analyzer.variant.injectable.name": "침투 공격 대상",
  "analyzer.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "analyzer.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "analyzer.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "analyzer.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "analyzer.variant.rpc.extras.1.XML": "XML",
  "analyzer.variant.rpc.extras.1.xml": "XML",
  "analyzer.variant.rpc.extras.2.JSON": "JSON",
  "analyzer.variant.rpc.extras.2.json": "JSON",
  "analyzer.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "analyzer.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "analyzer.variant.rpc.extras.4.DWR": "DWR",
  "analyzer.variant.rpc.extras.4.dwr": "DWR",
  "analyzer.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "analyzer.variant.rpc.name": "RPC 공격 대상",
  "analyzer.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "arithOperationsOnVoidPointer.description": "void 포인터에 산술 연산을 하는 것은 의도치 않은 동작을 할 수 있습니다.",
  "charBitOp.description": "char 변수와 비트 연산을 할 경우, 의도치 않은 동작을 할 수 있습니다.",
  "charLiteralWithCharPtrCompare.description": "char 문자를 포인터와 비교합니다.",
  "checkCastIntToCharAndBack.description": "char 타입과 EOF를 비교합니다. 이 경우 의도되지 않은 결과를 낼 수 있습니다.",
  "checker.absolute_path_disclosure.name": "파일 절대 경로 노출",
  "checker.absolute_path_disclosure.remedy": "이를 해결하기 위하여, 불필요한 파일 절대 경로를 웹 페이지에서 제거해야 합니다.",
  "checker.absolute_path_disclosure.target": "파일 절대 경로 노출' 체커는 웹 페이지의 파일 절대 경로 존재 여부를 검사합니다.",
  "checker.absolute_path_disclosure.vulnerability": "의도하지 않은 파일 절대 경로가 웹 페이지에 존재하는 경우, 공격자가 해당 경로를 기반으로 추가 공격을 수행할 수 있습니다.",
  "checker.active_custom.attack_strings.description": "공격 문자열은 공격 수행 도중 서버로 전송하는 HTTP 요청 내부에 포함시킬 수 있는 문자열입니다.",
  "checker.active_custom.attack_strings.message": "하나 이상의 문자열을 입력하세요.",
  "checker.active_custom.attack_strings.name": "공격 문자열",
  "checker.active_custom.attack_strings.placeholder": "공격 문자열을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.active_custom.detection_rules.description": "검출 규칙은 공격에 대한 서버의 HTTP 응답에서 취약점을 검출하기 위하여 사용하는 정규식입니다.",
  "checker.active_custom.detection_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.active_custom.detection_rules.name": "검출 규칙",
  "checker.active_custom.detection_rules.placeholder": "검출 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.active_custom.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.active_custom.exclusion_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.active_custom.exclusion_rules.name": "제외 규칙",
  "checker.active_custom.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.active_custom.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.active_custom.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.active_custom.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.active_custom.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.active_custom.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.active_custom.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.active_custom.variant.injectable.extras.2.cookie": "쿠키",
  "checker.active_custom.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.active_custom.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.active_custom.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.active_custom.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.active_custom.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.active_custom.variant.injectable.name": "침투 공격 대상",
  "checker.active_custom.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.active_custom.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.active_custom.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.active_custom.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.active_custom.variant.rpc.extras.1.XML": "XML",
  "checker.active_custom.variant.rpc.extras.1.xml": "XML",
  "checker.active_custom.variant.rpc.extras.2.JSON": "JSON",
  "checker.active_custom.variant.rpc.extras.2.json": "JSON",
  "checker.active_custom.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.active_custom.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.active_custom.variant.rpc.extras.4.DWR": "DWR",
  "checker.active_custom.variant.rpc.extras.4.dwr": "DWR",
  "checker.active_custom.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.active_custom.variant.rpc.name": "RPC 공격 대상",
  "checker.active_custom.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.ajp_enable.ports.description": "포트 번호는 연결하거나 공격을 시도할 포트의 문자열입니다.",
  "checker.ajp_enable.ports.description ": " 포트 번호는 해당 번호에 해당하는 포트로의 연결 및 공격 시도를 위하여 사용하는 문자열입니다.",
  "checker.ajp_enable.ports.message": "하나 이상의 문자열을 입력하세요.",
  "checker.ajp_enable.ports.message ": " 하나 이상의 문자열을 입력하세요.",
  "checker.ajp_enable.ports.name": "포트 번호",
  "checker.ajp_enable.ports.name ": " 포트 번호",
  "checker.ajp_enable.ports.placeholder": "포트 번호에 해당하는 문자열을 입력하세요.",
  "checker.ajp_enable.ports.placeholder ": " 포트 번호에 해당하는 문자열을 입력하세요.",
  "checker.bfla.admin_api_body.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 본문입니다. JSON 형식으로 입력해야 합니다. HTTP 메소드를 **GET**으로 선택한 경우, 입력한 요청 본문은 사용하지 않습니다.",
  "checker.bfla.admin_api_body.name": "관리자 API 엔드포인트 요청 본문",
  "checker.bfla.admin_api_body.placeholder": "JSON 형식의 요청 본문을 입력하세요.",
  "checker.bfla.admin_api_method.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 HTTP 메소드입니다.",
  "checker.bfla.admin_api_method.name": "관리자 API 엔드포인트 요청 HTTP 메소드",
  "checker.bfla.admin_api_url.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 URL입니다.",
  "checker.bfla.admin_api_url.name": "관리자 API 엔드포인트 요청 URL",
  "checker.bfla.admin_api_url.placeholder": "요청 URL을 입력하세요.",
  "checker.blind_sql_injection.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.blind_sql_injection.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.blind_sql_injection.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.blind_sql_injection.variant.injectable.extras.2.cookie": "쿠키",
  "checker.blind_sql_injection.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.blind_sql_injection.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.blind_sql_injection.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.blind_sql_injection.variant.injectable.name": "침투 공격 대상",
  "checker.blind_sql_injection.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.blind_sql_injection.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.blind_sql_injection.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.blind_sql_injection.variant.rpc.extras.1.xml": "XML",
  "checker.blind_sql_injection.variant.rpc.extras.2.json": "JSON",
  "checker.blind_sql_injection.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.blind_sql_injection.variant.rpc.extras.4.dwr": "DWR",
  "checker.blind_sql_injection.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.blind_sql_injection.variant.rpc.name": "RPC 공격 대상",
  "checker.blind_sql_injection.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.bopla.admin_api_body.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 본문입니다. JSON 형식으로 입력해야 합니다. HTTP 메소드를 `**GET**`으로 선택한 경우, 입력한 요청 본문은 사용하지 않습니다.",
  "checker.bopla.admin_api_body.name": "관리자 API 엔드포인트 요청 본문",
  "checker.bopla.admin_api_body.placeholder": "JSON 형식의 요청 본문을 입력하세요.",
  "checker.bopla.admin_api_method.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 HTTP 메소드입니다.",
  "checker.bopla.admin_api_method.name": "관리자 API 엔드포인트 요청 HTTP 메소드",
  "checker.bopla.admin_api_url.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 URL입니다.",
  "checker.bopla.admin_api_url.name": "관리자 API 엔드포인트 요청 URL",
  "checker.bopla.admin_api_url.placeholder": "요청 URL을 입력하세요.",
  "checker.broken_skip_link.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.broken_skip_link.exclusion_css_selector.message": "올바른 형식의 CSS 선택자를 입력하세요.",
  "checker.broken_skip_link.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.broken_skip_link.exclusion_css_selector.placeholder": "ko'])",
  "checker.broken_skip_link.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.broken_skip_link.exclusion_xpath.message": "올바른 형식의 XPath를 입력하세요.",
  "checker.broken_skip_link.exclusion_xpath.name": "제외 XPath",
  "checker.broken_skip_link.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.broken_skip_link.name": "끊어진 건너뛰기 링크",
  "checker.broken_skip_link.remedy": "이를 해결하기 위하여, 연결 설정이 올바른 건너뛰기 링크를 제공해야 합니다.",
  "checker.broken_skip_link.target": "끊어진 건너뛰기 링크 체커는 연결 설정이 올바르지 않은 건너뛰기 링크를 검출합니다.",
  "checker.broken_skip_link.vulnerability": "끊어진 건너뛰기 링크로 인해 화면 낭독 프로그램 사용자가 본문 콘텐츠에 접근할 때마다 페이지에서 공통적이고 반복적인 영역을 다시 듣게 되는 불편을 겪을 수 있습니다. 또한 지체 장애인이 본문 영역까지 스크롤해야 하는 경우에도 이용에 불편을 겪을 수 있습니다.",
  "checker.buffer_overflow.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.buffer_overflow.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.buffer_overflow.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.buffer_overflow.variant.injectable.extras.2.cookie": "쿠키",
  "checker.buffer_overflow.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.buffer_overflow.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.buffer_overflow.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.buffer_overflow.variant.injectable.name": "침투 공격 대상",
  "checker.buffer_overflow.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.buffer_overflow.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.buffer_overflow.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.buffer_overflow.variant.rpc.extras.1.xml": "XML",
  "checker.buffer_overflow.variant.rpc.extras.2.json": "JSON",
  "checker.buffer_overflow.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.buffer_overflow.variant.rpc.extras.4.dwr": "DWR",
  "checker.buffer_overflow.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.buffer_overflow.variant.rpc.name": "RPC 공격 대상",
  "checker.buffer_overflow.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.code_injection.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.code_injection.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.code_injection.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.code_injection.variant.injectable.extras.2.cookie": "쿠키",
  "checker.code_injection.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.code_injection.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.code_injection.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.code_injection.variant.injectable.name": "침투 공격 대상",
  "checker.code_injection.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.code_injection.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.code_injection.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.code_injection.variant.rpc.extras.1.xml": "XML",
  "checker.code_injection.variant.rpc.extras.2.json": "JSON",
  "checker.code_injection.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.code_injection.variant.rpc.extras.4.dwr": "DWR",
  "checker.code_injection.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.code_injection.variant.rpc.name": "RPC 공격 대상",
  "checker.code_injection.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.command_injection.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.command_injection.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.command_injection.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.command_injection.variant.injectable.extras.2.cookie": "쿠키",
  "checker.command_injection.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.command_injection.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.command_injection.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.command_injection.variant.injectable.name": "침투 공격 대상",
  "checker.command_injection.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.command_injection.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.command_injection.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.command_injection.variant.rpc.extras.1.xml": "XML",
  "checker.command_injection.variant.rpc.extras.2.json": "JSON",
  "checker.command_injection.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.command_injection.variant.rpc.extras.4.dwr": "DWR",
  "checker.command_injection.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.command_injection.variant.rpc.name": "RPC 공격 대상",
  "checker.command_injection.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.content_type_missing.name": "누락된 콘텐츠 타입",
  "checker.content_type_missing.remedy": "이를 해결하기 위하여, HTTP 응답에 올바른 'Content-Type' 헤더를 추가해야 합니다.",
  "checker.content_type_missing.target": "누락된 콘텐츠 타입' 체커는 HTTP 응답의 'Content-Type' 헤더를 누락했는지를 검사합니다.",
  "checker.content_type_missing.vulnerability": "Content-Type' 헤더를 누락한 경우, 브라우저는 HTTP 응답 본문을 기반으로 MIME 타입을 추측합니다. 공격자는 이를 악용하여 브라우저가 악성 코드를 실행하도록 유도할 수 있습니다.",
  "checker.dacg.weakness.name.117": "부적절한 로그 출력 검증",
  "checker.dacg.weakness.name.119": "메모리 오염",
  "checker.dacg.weakness.name.120": "버퍼 오버플로우",
  "checker.dacg.weakness.name.122": "힙 기반 버퍼 오버플로우",
  "checker.dacg.weakness.name.16": "안전하지 않은 설정",
  "checker.dacg.weakness.name.183": "취약한 화이트리스트",
  "checker.dacg.weakness.name.185": "올바르지 않은 정규식 표현",
  "checker.dacg.weakness.name.20": "부적절한 입력값 검증",
  "checker.dacg.weakness.name.200": "정보 노출",
  "checker.dacg.weakness.name.208": "시차를 통한 정보 노출",
  "checker.dacg.weakness.name.22": "경로 조작",
  "checker.dacg.weakness.name.269": "부적절한 권한 관리",
  "checker.dacg.weakness.name.284": "부적절한 접근 제어",
  "checker.dacg.weakness.name.285": "부적절한 인가",
  "checker.dacg.weakness.name.287": "부적절한 인증",
  "checker.dacg.weakness.name.295": "부적절한 인증서 검증",
  "checker.dacg.weakness.name.297": "부적절한 인증서와 호스트간 불일치 검증",
  "checker.dacg.weakness.name.300": "엔드포인트가 아닌 위치에서 접근 가능한 채널",
  "checker.dacg.weakness.name.319": "중요 정보 평문 전송",
  "checker.dacg.weakness.name.330": "적절하지 않은 난수 사용",
  "checker.dacg.weakness.name.347": "부적절한 전자 서명 검증",
  "checker.dacg.weakness.name.352": "크로스 사이트 요청 위조",
  "checker.dacg.weakness.name.358": "표준 기준에 의거하지 않은 보안 검사",
  "checker.dacg.weakness.name.367": "검사 시점과 사용 시점 경쟁 조건",
  "checker.dacg.weakness.name.377": "임시 파일 노출",
  "checker.dacg.weakness.name.400": "부적절한 리소스 소모 제어",
  "checker.dacg.weakness.name.434": "제한없는 파일 업로드",
  "checker.dacg.weakness.name.502": "신뢰할 수 없는 데이터 비직렬화",
  "checker.dacg.weakness.name.506": "악성 코드 내장",
  "checker.dacg.weakness.name.522": "자격 증명에 대한 불충분한 보호",
  "checker.dacg.weakness.name.532": "민감한 정보가 포함된 로그 파일",
  "checker.dacg.weakness.name.59": "링크 추적",
  "checker.dacg.weakness.name.601": "검증되지 않은 리다이렉션",
  "checker.dacg.weakness.name.61": "심볼릭 링크 추적",
  "checker.dacg.weakness.name.611": "XXE 삽입",
  "checker.dacg.weakness.name.640": "취약한 비밀번호 복구 메커니즘",
  "checker.dacg.weakness.name.643": "XPath 삽입",
  "checker.dacg.weakness.name.693": "올바르지 않은 보호 메커니즘 활용",
  "checker.dacg.weakness.name.697": "올바르지 않은 비교",
  "checker.dacg.weakness.name.78": "운영 체제 명령어 삽입",
  "checker.dacg.weakness.name.79": "크로스 사이트 스크립팅",
  "checker.dacg.weakness.name.790": "특수 요소에 대한 부적절한 필터링",
  "checker.dacg.weakness.name.89": "SQL 삽입",
  "checker.dacg.weakness.name.90": "LDAP 삽입",
  "checker.dacg.weakness.name.91": "XPath 삽입",
  "checker.dacg.weakness.name.916": "충분하지 않은 계산을 통한 비밀번호 해시값 생성",
  "checker.dacg.weakness.name.93": "CRLF 삽입",
  "checker.dacg.weakness.name.94": "코드 삽입",
  "checker.dacg.weakness.name.942": "취약한 크로스 도메인 화이트리스트",
  "checker.dacg.weakness.name.95": "Eval 삽입",
  "checker.dacg.weakness.name.98": "PHP 원격 파일 삽입",
  "checker.dacg_iis.attack": "이 취약점을 공격하기 위해 공격자는 인터넷 정보 서비스에 대하여 알려진 취약점 정보를 검색할 수 있습니다.",
  "checker.dacg_iis.cause": "이 취약점은 알려진 취약점이 있는 인터넷 정보 서비스를 사용하는 경우 발생 가능합니다.",
  "checker.dacg_iis.effect": "공격이 성공한 경우, 공격자는 검색 결과로서 얻은 취약점 정보를 이용하여 추가 공격을 수행할 수 있습니다.",
  "checker.dacg_iis.name": "{0} 취약점이 존재하는 인터넷 정보 서비스 (IIS)",
  "checker.dacg_iis.vulnerability": "현재 사용 중인 인터넷 정보 서비스에는 {0} 취약점이 존재합니다.",
  "checker.dacg_mvn.attack": "이 취약점을 공격하기 위해 공격자는 특정 Maven 라이브러리에 대하여 알려진 취약점 정보를 검색할 수 있습니다.",
  "checker.dacg_mvn.cause": "이 취약점은 알려진 취약점이 있는 Maven 라이브러리를 사용하는 경우 발생 가능합니다.",
  "checker.dacg_mvn.effect": "공격이 성공한 경우, 공격자는 검색 결과로서 얻은 취약점 정보를 이용하여 추가 공격을 수행할 수 있습니다.",
  "checker.dacg_mvn.name": "{0} 취약점이 존재하는 {1} Maven 라이브러리",
  "checker.dacg_mvn.vulnerability": "현재 사용 중인 {0} Maven 라이브러리에는 {1} 취약점이 존재합니다.",
  "checker.dacg_npm.attack": "이 취약점을 공격하기 위해 공격자는 특정 NPM 라이브러리에 대하여 알려진 취약점 정보를 검색할 수 있습니다.",
  "checker.dacg_npm.cause": "이 취약점은 알려진 취약점이 있는 NPM 라이브러리를 사용하는 경우 발생 가능합니다.",
  "checker.dacg_npm.effect": "공격이 성공한 경우, 공격자는 검색 결과로서 얻은 취약점 정보를 이용하여 추가 공격을 수행할 수 있습니다.",
  "checker.dacg_npm.name": "{0} 취약점이 존재하는 {1} NPM 라이브러리",
  "checker.dacg_npm.vulnerability": "현재 사용 중인 {0} NPM 라이브러리에는 {1} 취약점이 존재합니다.",
  "checker.dacg_technote.attack": "이 취약점을 공격하기 위해 공격자는 테크노트에 대하여 알려진 취약점 정보를 검색할 수 있습니다.",
  "checker.dacg_technote.cause": "이 취약점은 알려진 취약점이 있는 테크노트를 사용하는 경우 발생 가능합니다.",
  "checker.dacg_technote.effect": "공격이 성공한 경우, 공격자는 검색 결과로서 얻은 취약점 정보를 이용하여 추가 공격을 수행할 수 있습니다.",
  "checker.dacg_technote.name": "{0} 취약점이 존재하는 테크노트",
  "checker.dacg_technote.vulnerability": "현재 사용 중인 테크노트에는 {0} 취약점이 존재합니다.",
  "checker.dacg_wp.core.attack": "이 취약점을 공격하기 위해 공격자는 WordPress에 대하여 알려진 취약점 정보를 검색할 수 있습니다.",
  "checker.dacg_wp.core.cause": "이 취약점은 알려진 취약점이 있는 WordPress를 사용하는 경우 발생 가능합니다.",
  "checker.dacg_wp.core.effect": "공격이 성공한 경우, 공격자는 검색 결과로서 얻은 취약점 정보를 이용하여 추가 공격을 수행할 수 있습니다.",
  "checker.dacg_wp.core.name": "{0} 취약점이 존재하는 WordPress",
  "checker.dacg_wp.core.vulnerability": "현재 사용 중인 WordPress에는 {0} 취약점이 존재합니다.",
  "checker.dacg_wp.plugin.attack": "이 취약점을 공격하기 위해 공격자는 특정 WordPress 플러그인에 대하여 알려진 취약점 정보를 검색할 수 있습니다.",
  "checker.dacg_wp.plugin.cause": "이 취약점은 알려진 취약점이 있는 WordPress 플러그인을 사용하는 경우 발생 가능합니다.",
  "checker.dacg_wp.plugin.effect": "공격이 성공한 경우, 공격자는 검색 결과로서 얻은 취약점 정보를 이용하여 추가 공격을 수행할 수 있습니다.",
  "checker.dacg_wp.plugin.name": "{0} 취약점이 존재하는 {1} WordPress 플러그인",
  "checker.dacg_wp.plugin.vulnerability": "현재 사용 중인 {0} WordPress 플러그인에는 {1} 취약점이 존재합니다.",
  "checker.dacg_wp.theme.attack": "이 취약점을 공격하기 위해 공격자는 특정 WordPress 테마에 대하여 알려진 취약점 정보를 검색할 수 있습니다.",
  "checker.dacg_wp.theme.cause": "이 취약점은 알려진 취약점이 있는 WordPress 테마를 사용하는 경우 발생 가능합니다.",
  "checker.dacg_wp.theme.effect": "공격이 성공한 경우, 공격자는 검색 결과로서 얻은 취약점 정보를 이용하여 추가 공격을 수행할 수 있습니다.",
  "checker.dacg_wp.theme.name": "{0} 취약점이 존재하는 {1} WordPress 테마",
  "checker.dacg_wp.theme.vulnerability": "현재 사용 중인 {0} WordPress 테마에는 {1} 취약점이 존재합니다.",
  "checker.dacg_zeroboard.attack": "이 취약점을 공격하기 위해 공격자는 제로보드에 대하여 알려진 취약점 정보를 검색할 수 있습니다.",
  "checker.dacg_zeroboard.cause": "이 취약점은 알려진 취약점이 있는 제로보드를 사용하는 경우 발생 가능합니다.",
  "checker.dacg_zeroboard.effect": "공격이 성공한 경우, 공격자는 검색 결과로서 얻은 취약점 정보를 이용하여 추가 공격을 수행할 수 있습니다.",
  "checker.dacg_zeroboard.name": "{0} 취약점이 존재하는 제로보드",
  "checker.dacg_zeroboard.vulnerability": "현재 사용 중인 제로보드에는 {0} 취약점이 존재합니다.",
  "checker.dast.sw.common.4556.ports.description": "포트 번호는 연결하거나 공격을 시도할 포트의 문자열입니다.",
  "checker.dast.sw.common.4556.ports.message": "하나 이상의 문자열을 입력하세요.",
  "checker.dast.sw.common.4556.ports.name": "포트 번호",
  "checker.dast.sw.common.4556.ports.placeholder": "포트 번호에 해당하는 문자열을 입력하세요.",
  "checker.dast.sw.common.4557.patterns.error_page.description": "오류 페이지 패턴은 상태 코드가 200인 응답이 발생한 경우 오류 페이지인지 검사하기 위한 정규식입니다.",
  "checker.dast.sw.common.4557.patterns.error_page.message": "하나 이상의 정규식 패턴을 입력하세요.",
  "checker.dast.sw.common.4557.patterns.error_page.name": "오류 페이지 패턴",
  "checker.dast.sw.common.4557.patterns.error_page.placeholder": "오류 페이지의 패턴에 해당하는 정규식을 입력하세요.",
  "checker.dast.sw.common.4559.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.4559.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.4559.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.4559.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.4559.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.4559.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.4559.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.4559.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.4559.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.4559.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.4559.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.4559.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.4559.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.4559.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.4559.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.4559.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.4559.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.4559.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.4559.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.4559.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.4559.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.4559.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.4559.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.4559.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.4559.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.4559.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.4559.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.4559.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.4562.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.4562.exclusion_css_selector.message": "올바른 CSS 선택자 형식으로 입력하세요.",
  "checker.dast.sw.common.4562.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.dast.sw.common.4562.exclusion_css_selector.placeholder": "제외할 웹 요소의 CSS 선택자를 입력하세요. (예시: a.logo[href='ko'])",
  "checker.dast.sw.common.4562.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.4562.exclusion_xpath.message": "올바른 XPath 형식으로 입력하세요.",
  "checker.dast.sw.common.4562.exclusion_xpath.name": "제외 XPath",
  "checker.dast.sw.common.4562.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.dast.sw.common.4563.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.4563.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.4563.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.4563.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.4563.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.4563.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.4563.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.4563.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.4563.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.4563.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.4563.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.4563.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.4563.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.4563.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.4563.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.4563.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.4563.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.4563.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.4563.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.4563.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.4563.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.4563.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.4563.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.4563.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.4563.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.4563.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.4563.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.4563.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.4567.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.4567.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.4567.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.4567.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.4567.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.4567.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.4567.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.4567.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.4567.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.4567.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.4567.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.4567.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.4567.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.4567.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.4567.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.4567.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.4567.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.4567.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.4567.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.4567.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.4567.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.4567.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.4567.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.4567.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.4567.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.4567.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.4567.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.4567.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.4568.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.4568.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.4568.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.4568.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.4568.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.4568.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.4568.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.4568.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.4568.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.4568.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.4568.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.4568.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.4568.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.4568.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.4568.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.4568.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.4568.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.4568.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.4568.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.4568.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.4568.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.4568.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.4568.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.4568.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.4568.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.4568.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.4568.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.4568.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5770.exclusion_tag.description": "제외 태그는 검출에서 제외할 태그의 이름입니다.",
  "checker.dast.sw.common.5770.exclusion_tag.message": "올바른 태그 이름을 입력하세요.",
  "checker.dast.sw.common.5770.exclusion_tag.name": "제외 태그",
  "checker.dast.sw.common.5770.exclusion_tag.placeholder": "제외할 태그 이름을 입력하세요. (예시: div)",
  "checker.dast.sw.common.5774.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5774.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5774.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5774.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5774.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5774.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5774.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5774.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5774.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5774.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5774.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5774.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5774.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5774.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5774.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5774.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5774.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5774.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5774.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5774.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5774.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5774.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5774.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5774.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5774.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5774.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5774.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5774.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5779.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.5779.exclusion_css_selector.message": "올바른 CSS 선택자 형식으로 입력하세요.",
  "checker.dast.sw.common.5779.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.dast.sw.common.5779.exclusion_css_selector.placeholder": "제외할 웹 요소의 CSS 선택자를 입력하세요. (예시: a.logo[href='ko'])",
  "checker.dast.sw.common.5779.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.5779.exclusion_xpath.message": "올바른 XPath 형식으로 입력하세요.",
  "checker.dast.sw.common.5779.exclusion_xpath.name": "제외 XPath",
  "checker.dast.sw.common.5779.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.dast.sw.common.5780.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5780.variant.injectable.extras.0.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5780.variant.injectable.extras.0.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5780.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5780.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5780.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5782.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5782.variant.injectable.extras.0.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5782.variant.injectable.extras.0.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5782.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5782.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5782.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5783.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.dast.sw.common.5783.exclusion_rules.message": "하나 이상의 정규식을 입력하세요.",
  "checker.dast.sw.common.5783.exclusion_rules.name": "제외 규칙",
  "checker.dast.sw.common.5783.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요.",
  "checker.dast.sw.common.5783.session_id_name.description": "세션 ID 이름은 해당 이름을 가지는 세션 ID의 고정 여부를 판단하기 위하여 사용하는 문자열입니다.",
  "checker.dast.sw.common.5783.session_id_name.message": "하나 이상의 문자열을 입력하세요.",
  "checker.dast.sw.common.5783.session_id_name.name": "세션 ID 이름",
  "checker.dast.sw.common.5783.session_id_name.placeholder": "세션 ID 이름에 해당하는 문자열을 입력하세요.",
  "checker.dast.sw.common.5786.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5786.variant.injectable.extras.0.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5786.variant.injectable.extras.0.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5786.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5786.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5786.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5788.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.5788.exclusion_css_selector.message": "올바른 CSS 선택자 형식으로 입력하세요.",
  "checker.dast.sw.common.5788.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.dast.sw.common.5788.exclusion_css_selector.placeholder": "제외할 웹 요소의 CSS 선택자를 입력하세요. (예시: a.logo[href='ko'])",
  "checker.dast.sw.common.5788.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.5788.exclusion_xpath.message": "올바른 XPath 형식으로 입력하세요.",
  "checker.dast.sw.common.5788.exclusion_xpath.name": "제외 XPath",
  "checker.dast.sw.common.5788.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.dast.sw.common.5789.ports.description": "포트 번호는 연결하거나 공격을 시도할 포트의 문자열입니다.",
  "checker.dast.sw.common.5789.ports.message": "하나 이상의 문자열을 입력하세요.",
  "checker.dast.sw.common.5789.ports.name": "포트 번호",
  "checker.dast.sw.common.5789.ports.placeholder": "포트 번호에 해당하는 문자열을 입력하세요.",
  "checker.dast.sw.common.5790.attack_strings.description": "공격 문자열은 공격 수행 도중 서버로 전송하는 HTTP 요청 내부에 포함시킬 수 있는 문자열입니다.",
  "checker.dast.sw.common.5790.attack_strings.message": "하나 이상의 문자열을 입력하세요.",
  "checker.dast.sw.common.5790.attack_strings.name": "공격 문자열",
  "checker.dast.sw.common.5790.attack_strings.placeholder": "공격 문자열을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.dast.sw.common.5790.detection_rules.description": "검출 규칙은 공격에 대한 서버의 HTTP 응답에서 취약점을 검출하기 위하여 사용하는 정규식입니다.",
  "checker.dast.sw.common.5790.detection_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.dast.sw.common.5790.detection_rules.name": "검출 규칙",
  "checker.dast.sw.common.5790.detection_rules.placeholder": "검출 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.dast.sw.common.5790.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.dast.sw.common.5790.exclusion_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.dast.sw.common.5790.exclusion_rules.name": "제외 규칙",
  "checker.dast.sw.common.5790.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.dast.sw.common.5790.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5790.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5790.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5790.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5790.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5790.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5790.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5790.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5790.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5790.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5790.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5790.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5790.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5790.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5790.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5790.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5790.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5790.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5790.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5790.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5790.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5790.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5790.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5790.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5790.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5790.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5790.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5790.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5791.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.5791.exclusion_css_selector.message": "올바른 CSS 선택자 형식으로 입력하세요.",
  "checker.dast.sw.common.5791.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.dast.sw.common.5791.exclusion_css_selector.placeholder": "제외할 웹 요소의 CSS 선택자를 입력하세요. (예시: a.logo[href='ko'])",
  "checker.dast.sw.common.5791.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.5791.exclusion_xpath.message": "올바른 XPath 형식으로 입력하세요.",
  "checker.dast.sw.common.5791.exclusion_xpath.name": "제외 XPath",
  "checker.dast.sw.common.5791.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.dast.sw.common.5793.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.5793.exclusion_css_selector.message": "올바른 CSS 선택자 형식으로 입력하세요.",
  "checker.dast.sw.common.5793.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.dast.sw.common.5793.exclusion_css_selector.placeholder": "제외할 웹 요소의 CSS 선택자를 입력하세요. (예시: a.logo[href='ko'])",
  "checker.dast.sw.common.5793.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.dast.sw.common.5793.exclusion_xpath.message": "올바른 XPath 형식으로 입력하세요.",
  "checker.dast.sw.common.5793.exclusion_xpath.name": "제외 XPath",
  "checker.dast.sw.common.5793.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.dast.sw.common.5798.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5798.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5798.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5798.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5798.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5798.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5798.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5798.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5798.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5798.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5798.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5798.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5798.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5798.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5798.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5798.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5798.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5798.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5798.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5798.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5798.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5798.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5798.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5798.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5798.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5798.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5798.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5798.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5801.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5801.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5801.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5801.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5801.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5801.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5801.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5801.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5801.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5801.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5801.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5801.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5801.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5801.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5801.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5801.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5801.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5801.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5801.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5801.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5801.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5801.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5801.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5801.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5801.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5801.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5801.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5801.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5802.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5802.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5802.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5802.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5802.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5802.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5802.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5802.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5802.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5802.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5802.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5802.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5802.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5802.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5802.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5802.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5802.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5802.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5802.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5802.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5802.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5802.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5802.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5802.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5802.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5802.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5802.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5802.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5803.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.dast.sw.common.5803.exclusion_rules.message": "하나 이상의 정규식을 입력하세요.",
  "checker.dast.sw.common.5803.exclusion_rules.name": "제외 규칙",
  "checker.dast.sw.common.5803.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요.",
  "checker.dast.sw.common.5803.session_id_name.description": "세션 ID 이름은 해당 이름을 가지는 세션 ID의 고정 여부를 판단하기 위하여 사용하는 문자열입니다.",
  "checker.dast.sw.common.5803.session_id_name.message": "하나 이상의 문자열을 입력하세요.",
  "checker.dast.sw.common.5803.session_id_name.name": "세션 ID 이름",
  "checker.dast.sw.common.5803.session_id_name.placeholder": "세션 ID 이름에 해당하는 문자열을 입력하세요.",
  "checker.dast.sw.common.5805.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5805.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5805.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5805.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5805.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5805.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5805.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5805.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5805.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5805.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5805.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5805.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5805.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5805.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5805.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5805.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5805.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5805.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5805.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5805.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5805.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5805.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5805.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5805.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5805.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5805.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5805.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5805.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5811.attack_strings.description": "공격 문자열은 공격 수행 도중 서버로 전송하는 HTTP 요청 내부에 포함시킬 수 있는 문자열입니다.",
  "checker.dast.sw.common.5811.attack_strings.message": "하나 이상의 문자열을 입력하세요.",
  "checker.dast.sw.common.5811.attack_strings.name": "공격 문자열",
  "checker.dast.sw.common.5811.attack_strings.placeholder": "공격 문자열을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.dast.sw.common.5811.detection_rules.description": "검출 규칙은 공격에 대한 서버의 HTTP 응답에서 취약점을 검출하기 위하여 사용하는 정규식입니다.",
  "checker.dast.sw.common.5811.detection_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.dast.sw.common.5811.detection_rules.name": "검출 규칙",
  "checker.dast.sw.common.5811.detection_rules.placeholder": "검출 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.dast.sw.common.5811.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.dast.sw.common.5811.exclusion_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.dast.sw.common.5811.exclusion_rules.name": "제외 규칙",
  "checker.dast.sw.common.5811.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.dast.sw.common.5811.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5811.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5811.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5811.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5811.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5811.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5811.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5811.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5811.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5811.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5811.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5811.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5811.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5811.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5811.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5811.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5811.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5811.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5811.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5811.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5811.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5811.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5811.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5811.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5811.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5811.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5811.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5811.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5812.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.dast.sw.common.5812.exclusion_rules.message": "하나 이상의 정규식을 입력하세요.",
  "checker.dast.sw.common.5812.exclusion_rules.name": "제외 규칙",
  "checker.dast.sw.common.5812.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요.",
  "checker.dast.sw.common.5812.session_id_name.description": "세션 ID 이름은 해당 이름을 가지는 세션 ID의 고정 여부를 판단하기 위하여 사용하는 문자열입니다.",
  "checker.dast.sw.common.5812.session_id_name.message": "하나 이상의 문자열을 입력하세요.",
  "checker.dast.sw.common.5812.session_id_name.name": "세션 ID 이름",
  "checker.dast.sw.common.5812.session_id_name.placeholder": "세션 ID 이름에 해당하는 문자열을 입력하세요.",
  "checker.dast.sw.common.5814.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.dast.sw.common.5814.exclusion_rules.message": "하나 이상의 정규식을 입력하세요.",
  "checker.dast.sw.common.5814.exclusion_rules.name": "제외 규칙",
  "checker.dast.sw.common.5814.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요.",
  "checker.dast.sw.common.5814.session_id_name.description": "세션 ID 이름은 해당 이름을 가지는 세션 ID의 고정 여부를 판단하기 위하여 사용하는 문자열입니다.",
  "checker.dast.sw.common.5814.session_id_name.message": "하나 이상의 문자열을 입력하세요.",
  "checker.dast.sw.common.5814.session_id_name.name": "세션 ID 이름",
  "checker.dast.sw.common.5814.session_id_name.placeholder": "세션 ID 이름에 해당하는 문자열을 입력하세요.",
  "checker.dast.sw.common.5815.delay.description": "요청 간 지연 시간은 공격할 때 앞서 보낸 요청에 이어서 다음 요청을 전송하기까지 대기하는 시간입니다. 단위는 ms(1/1000초)입니다. 최대값은 60,000입니다. 0을 입력한 경우, 해당 옵션은 사용하지 않습니다.",
  "checker.dast.sw.common.5815.delay.message": "0부터 60,000 사이의 값을 입력하세요.",
  "checker.dast.sw.common.5815.delay.name": "요청 간 지연 시간",
  "checker.dast.sw.common.5815.delay.placeholder": "요청 간 지연 시간을 ms (1/1000 초) 단위로 입력하세요.",
  "checker.dast.sw.common.5816.contentLength.description": "요청 본문 길이는 공격할 때 서버로 전송하는 요청의 본문의 크기입니다. 최대값은 1,048,576입니다. 0을 입력한 경우, 해당 옵션은 사용하지 않습니다.",
  "checker.dast.sw.common.5816.contentLength.message": "0부터 1,048,576 사이의 값을 입력하세요.",
  "checker.dast.sw.common.5816.contentLength.name": "요청 본문 길이",
  "checker.dast.sw.common.5816.contentLength.placeholder": "요청 본문의 길이를 입력하세요.",
  "checker.dast.sw.common.5816.contentlength.name": "요청 본문 길이",
  "checker.dast.sw.common.5816.contentlength.placeholder": "요청 본문의 길이를 입력하세요.",
  "checker.dast.sw.common.5821.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5821.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5821.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5821.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5821.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5821.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5821.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5821.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5821.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5821.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5821.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5821.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5821.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5821.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5821.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5821.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5821.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5821.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5821.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5821.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5821.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5821.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5821.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5821.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5821.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5821.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5821.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5821.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5823.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5823.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5823.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5823.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5823.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5823.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5823.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5823.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5823.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5823.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5823.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5823.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5823.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5823.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5823.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5823.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5823.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5823.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5823.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5823.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5823.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5823.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5823.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5823.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5823.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5823.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5823.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5823.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5826.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5826.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5826.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5826.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5826.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5826.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5826.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5826.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5826.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5826.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5826.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5826.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5826.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5826.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5826.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5826.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5826.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5826.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5826.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5826.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5826.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5826.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5826.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5826.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5826.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5826.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5826.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5826.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5828.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5828.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common.5828.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common.5828.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common.5828.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common.5828.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common.5828.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common.5828.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common.5828.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common.5828.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common.5828.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common.5828.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common.5828.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common.5828.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5828.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common.5828.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common.5828.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common.5828.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common.5828.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common.5828.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common.5828.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common.5828.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common.5828.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common.5828.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common.5828.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common.5828.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common.5828.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common.5828.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.dast.sw.common.5901.timeout.description": "Qualys SSL Labs 분석 대기 시간은 Qualys SSL Labs 분석 요청 송신 후 최대로 대기할 시간입니다.",
  "checker.dast.sw.common.5901.timeout.message": "1보다 큰 정수를 입력하세요.",
  "checker.dast.sw.common.5901.timeout.name": "Qualys SSL Labs 분석 대기 시간",
  "checker.dast.sw.common.5901.timeout.placeholder": "시간을 입력하세요. (단위: 분)",
  "checker.dast.sw.common.6495.path.attack.description": "`사용자 정의 관리자 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/`ADMIN_PAGE_PATH`). 해당 URL을 관리자 페이지에 해당하는 URL로 간주합니다.",
  "checker.dast.sw.common.6495.path.attack.message": "(없음)",
  "checker.dast.sw.common.6495.path.attack.name": "사용자 정의 관리자 페이지 경로",
  "checker.dast.sw.common.6495.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6495.regex.test.description": "`사용자 정의 관리자 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 관리자 페이지 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6495.regex.test.message": "(없음)",
  "checker.dast.sw.common.6495.regex.test.name": "사용자 정의 관리자 페이지 내용 검사 정규식",
  "checker.dast.sw.common.6495.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6496.path.attack.description": "`사용자 정의 관리자 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/`ADMIN_PAGE_PATH`). 해당 URL을 관리자 페이지에 해당하는 URL로 간주합니다.",
  "checker.dast.sw.common.6496.path.attack.message": "(없음)",
  "checker.dast.sw.common.6496.path.attack.name": "사용자 정의 관리자 페이지 경로",
  "checker.dast.sw.common.6496.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6496.regex.test.description": "`사용자 정의 관리자 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 관리자 페이지 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6496.regex.test.message": "(없음)",
  "checker.dast.sw.common.6496.regex.test.name": "사용자 정의 관리자 페이지 내용 검사 정규식",
  "checker.dast.sw.common.6496.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6497.files.login.description": "`사용자 정의 로그인 수행 기록 파일` 내용을 기반으로 로그인을 시도합니다.",
  "checker.dast.sw.common.6497.files.login.message": "(없음)",
  "checker.dast.sw.common.6497.files.login.name": "사용자 정의 로그인 수행 기록 파일",
  "checker.dast.sw.common.6497.files.login.placeholder": "(없음)",
  "checker.dast.sw.common.6497.files.logout.description": "`사용자 정의 로그아웃 수행 기록 파일` 내용을 기반으로 로그아웃을 시도합니다.",
  "checker.dast.sw.common.6497.files.logout.message": "(없음)",
  "checker.dast.sw.common.6497.files.logout.name": "사용자 정의 로그아웃 수행 기록 파일",
  "checker.dast.sw.common.6497.files.logout.placeholder": "(없음)",
  "checker.dast.sw.common.6497.sessions.names.description": "`사용자 정의 세션 이름`에 대응하는 세션을 추출합니다. 해당 세션에 대한 보안 검사를 수행합니다.",
  "checker.dast.sw.common.6497.sessions.names.message": "(없음)",
  "checker.dast.sw.common.6497.sessions.names.name": "사용자 정의 세션 이름",
  "checker.dast.sw.common.6497.sessions.names.placeholder": "세션 이름을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6498.files.login.description": "`사용자 정의 로그인 수행 기록 파일` 내용을 기반으로 로그인을 시도합니다.",
  "checker.dast.sw.common.6498.files.login.message": "(없음)",
  "checker.dast.sw.common.6498.files.login.name": "사용자 정의 로그인 수행 기록 파일",
  "checker.dast.sw.common.6498.files.login.placeholder": "(없음)",
  "checker.dast.sw.common.6498.sessions.names.description": "`사용자 정의 세션 이름`에 대응하는 세션을 추출합니다. 해당 세션에 대한 보안 검사를 수행합니다.",
  "checker.dast.sw.common.6498.sessions.names.message": "(없음)",
  "checker.dast.sw.common.6498.sessions.names.name": "사용자 정의 세션 이름",
  "checker.dast.sw.common.6498.sessions.names.placeholder": "세션 이름을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6498.sessions.timeout.description": "`사용자 정의 세션 타임아웃`에 해당하는 시간 동안 대기한 후, 세션이 만료되었는지를 검사합니다.",
  "checker.dast.sw.common.6498.sessions.timeout.message": "입력 가능한 값의 범위는 0부터 86400까지입니다.",
  "checker.dast.sw.common.6498.sessions.timeout.name": "사용자 정의 세션 타임아웃",
  "checker.dast.sw.common.6498.sessions.timeout.placeholder": "타임아웃 시간을 입력하세요(단위: 초).",
  "checker.dast.sw.common.6500.files.login.description": "`사용자 정의 로그인 수행 기록 파일` 내용을 기반으로 로그인을 시도합니다.",
  "checker.dast.sw.common.6500.files.login.message": "(없음)",
  "checker.dast.sw.common.6500.files.login.name": "사용자 정의 로그인 수행 기록 파일",
  "checker.dast.sw.common.6500.files.login.placeholder": "(없음)",
  "checker.dast.sw.common.6500.sessions.names.description": "`사용자 정의 세션 이름`에 대응하는 세션을 추출합니다. 해당 세션에 대한 보안 검사를 수행합니다.",
  "checker.dast.sw.common.6500.sessions.names.message": "(없음)",
  "checker.dast.sw.common.6500.sessions.names.name": "사용자 정의 세션 이름",
  "checker.dast.sw.common.6500.sessions.names.placeholder": "세션 이름을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6503.patterns.attack.description": "`사용자 정의 DB 오류 메시지 유발 공격 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 DB 오류 메시지가 발생한다고 간주합니다.",
  "checker.dast.sw.common.6503.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6503.patterns.attack.name": "사용자 정의 DB 오류 메시지 유발 패턴",
  "checker.dast.sw.common.6503.patterns.attack.placeholder": "DB 오류 메시지 유발 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6503.regex.test.description": "`사용자 정의 DB 오류 메시지 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 DB 오류 메시지 출력 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6503.regex.test.message": "(없음)",
  "checker.dast.sw.common.6503.regex.test.name": "사용자 정의 DB 오류 메시지 출력 내용 검사 정규식",
  "checker.dast.sw.common.6503.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6504.patterns.attack.time_based.false.description": "`사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 SQL 쿼리문을 처리할 때 **일정 시간의 지연이 발생하지 않는다**고 간주합니다. 만약 해당 요청 파라미터로 인하여 지연이 발생할 경우, 체커가 오동작할 수 있습니다. 또한 입력한 각 값은 `사용자 정의 지연 시간 유발 SQL 삽입 패턴` 옵션 값 및 `사용자 정의 예상 지연 시간` 옵션 값과 입력 순서를 기준으로 함께 사용하므로, 입력 순서에 유의하세요.",
  "checker.dast.sw.common.6504.patterns.attack.time_based.false.message": "(없음)",
  "checker.dast.sw.common.6504.patterns.attack.time_based.false.name": "사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴",
  "checker.dast.sw.common.6504.patterns.attack.time_based.false.placeholder": "지연 시간 유발하지 않는 SQL 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6504.patterns.attack.time_based.true.description": "`사용자 정의 지연 시간 유발 SQL 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 SQL 쿼리문을 처리할 때, **일정 시간의 지연이 발생한다**고 간주합니다. 만약 해당 요청 파라미터로 인하여 지연이 발생하지 않을 경우, 체커가 오동작할 수 있습니다. 또한 입력한 각 값은 `사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴` 옵션 값 및 `사용자 정의 예상 지연 시간` 옵션 값과 입력 순서를 기준으로 함께 사용하므로, 입력 순서에 유의하세요.",
  "checker.dast.sw.common.6504.patterns.attack.time_based.true.message": "(없음)",
  "checker.dast.sw.common.6504.patterns.attack.time_based.true.name": "사용자 정의 지연 시간 유발 SQL 삽입 패턴",
  "checker.dast.sw.common.6504.patterns.attack.time_based.true.placeholder": "지연 시간 유발 SQL 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6504.time.test.expected_delay.description": "`사용자 정의 예상 지연 시간`은 `사용자 정의 지연 시간 유발 SQL 삽입 패턴` 처리 도중 발생할 것으로 예상 가능한 지연 시간입니다. 해당 값이 너무 작은 경우, 체커가 오동작할 수 있습니다. 또한 `사용자 정의 지연 시간 유발 SQL 삽입 패턴` 및 `사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴`과 입력 순서를 기준으로 쌍을 이루어 동작하므로, 입력 순서에 유의하십시오.",
  "checker.dast.sw.common.6504.time.test.expected_delay.message": "입력 가능한 값의 범위는 0부터 86400까지입니다.",
  "checker.dast.sw.common.6504.time.test.expected_delay.name": "사용자 정의 예상 지연 시간",
  "checker.dast.sw.common.6504.time.test.expected_delay.placeholder": "예상 지연 시간을 입력하세요(단위: 초).",
  "checker.dast.sw.common.6505.unix.patterns.attack.description": "`사용자 정의 UNIX 운영체제 명령어 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 UNIX운영체제 명령어 실행이 발생한다고 간주합니다.",
  "checker.dast.sw.common.6505.unix.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6505.unix.patterns.attack.name": "사용자 정의 UNIX 운영체제 명령어 삽입 패턴",
  "checker.dast.sw.common.6505.unix.patterns.attack.placeholder": "운영체제 명령어 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6505.unix.regex.test.description": "`사용자 정의 UNIX 운영체제 명령어 실행 결과 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 UNIX 운영체제 명령어 실행 결과가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6505.unix.regex.test.message": "(없음)",
  "checker.dast.sw.common.6505.unix.regex.test.name": "사용자 정의 UNIX 운영체제 명령어 실행 결과 검사 정규식",
  "checker.dast.sw.common.6505.unix.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6505.windows.patterns.attack.description": "`사용자 정의 Windows 운영체제 명령어 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 Windows 운영체제 명령어 실행이 발생한다고 간주합니다.",
  "checker.dast.sw.common.6505.windows.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6505.windows.patterns.attack.name": "사용자 정의 Windows 운영체제 명령어 삽입 패턴",
  "checker.dast.sw.common.6505.windows.patterns.attack.placeholder": "운영체제 명령어 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6505.windows.regex.test.description": "`사용자 정의 windows 운영체제 명령어 실행 결과 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 windows 운영체제 명령어 실행 결과가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6505.windows.regex.test.message": "(없음)",
  "checker.dast.sw.common.6505.windows.regex.test.name": "사용자 정의 windows 운영체제 명령어 실행 결과 검사 정규식",
  "checker.dast.sw.common.6505.windows.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6506.patterns.attack.description": "`사용자 정의 XPath 쿼리문 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 XPath 쿼리문 실행이 발생한다고 간주합니다.",
  "checker.dast.sw.common.6506.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6506.patterns.attack.name": "사용자 정의 XPath 쿼리문 삽입 패턴",
  "checker.dast.sw.common.6506.patterns.attack.placeholder": "XPath 쿼리문 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6506.regex.test.description": "`사용자 정의 XPath 쿼리문 실행 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 XPath 쿼리문 실행 결과가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6506.regex.test.message": "(없음)",
  "checker.dast.sw.common.6506.regex.test.name": "사용자 정의 XPath 쿼리문 실행 내용 검사 정규식",
  "checker.dast.sw.common.6506.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6507.cookie.auth.names.description": "`사용자 정의 변조 대상 쿠키 이름`에 대응하는 쿠키의 값을 변조합니다. 변조한 쿠키를 사용하여 인증 우회를 시도합니다.",
  "checker.dast.sw.common.6507.cookie.auth.names.message": "(없음)",
  "checker.dast.sw.common.6507.cookie.auth.names.name": "사용자 정의 변조 대상 쿠키 이름",
  "checker.dast.sw.common.6507.cookie.auth.names.placeholder": "쿠키 이름을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6507.files.login.description": "`사용자 정의 로그인 수행 기록 파일` 내용을 기반으로 로그인을 시도합니다.",
  "checker.dast.sw.common.6507.files.login.message": "(없음)",
  "checker.dast.sw.common.6507.files.login.name": "사용자 정의 로그인 수행 기록 파일",
  "checker.dast.sw.common.6507.files.login.placeholder": "(없음)",
  "checker.dast.sw.common.6508.patterns.attack.description": "`사용자 정의 XXE 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 XML 쿼리문 실행이 발생한다고 간주합니다.",
  "checker.dast.sw.common.6508.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6508.patterns.attack.name": "사용자 정의 XXE 삽입 패턴",
  "checker.dast.sw.common.6508.patterns.attack.placeholder": "XXE 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6508.regex.test.description": "`사용자 정의 XML 쿼리문 실행 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 XML 쿼리문 실행 결과가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6508.regex.test.message": "(없음)",
  "checker.dast.sw.common.6508.regex.test.name": "사용자 정의 XML 쿼리문 실행 내용 검사 정규식",
  "checker.dast.sw.common.6508.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6509.patterns.attack.description": "`사용자 정의 SSI 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 SSI 명령문 실행 결과가 발생한다고 간주합니다.",
  "checker.dast.sw.common.6509.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6509.patterns.attack.name": "사용자 정의 SSI 명령문 삽입 패턴",
  "checker.dast.sw.common.6509.patterns.attack.placeholder": "공격 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6509.regex.test.description": "`사용자 정의 SSI 명령문 실행 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 SSI 명령문 실행 결과가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6509.regex.test.message": "(없음)",
  "checker.dast.sw.common.6509.regex.test.name": "사용자 정의 SSI 명령문 실행 검사 정규식",
  "checker.dast.sw.common.6509.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6510.port.excluded.description": "`사용자 정의 제외 대상 포트`에 해당하는 포트를 검사 대상에서 제외합니다. 해당 포트는 외부로부터의 접근 허용이 필요한 것으로 간주합니다.",
  "checker.dast.sw.common.6510.port.excluded.message": "(없음)",
  "checker.dast.sw.common.6510.port.excluded.name": "사용자 정의 제외 대상 포트",
  "checker.dast.sw.common.6510.port.excluded.placeholder": "포트 번호를 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6510.socket.timeout.description": "`사용자 정의 소켓 연결 타임아웃`에 해당하는 밀리초 단위 시간동안 소켓 연결 수립을 기다립니다.",
  "checker.dast.sw.common.6510.socket.timeout.message": "입력 가능한 값의 범위는 50부터 10000까지입니다.",
  "checker.dast.sw.common.6510.socket.timeout.name": "사용자 정의 소켓 연결 타임아웃",
  "checker.dast.sw.common.6510.socket.timeout.placeholder": "타임아웃 시간을 입력하세요(단위: 밀리초).",
  "checker.dast.sw.common.6511.path.attack.description": "`사용자 정의 phpMyAdmin 관련 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/`PHP_MY_ADMIN_PAGE_PATH`). 해당 URL을 phpMyAdmin 관련 페이지에 해당하는 URL로 간주합니다.",
  "checker.dast.sw.common.6511.path.attack.message": "(없음)",
  "checker.dast.sw.common.6511.path.attack.name": "사용자 정의 phpMyAdmin 관련 페이지 경로",
  "checker.dast.sw.common.6511.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6511.regex.test.description": "`사용자 정의 phpMyAdmin 관련 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 phpMyAdmin 관련 페이지 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6511.regex.test.message": "(없음)",
  "checker.dast.sw.common.6511.regex.test.name": "사용자 정의 phpMyAdmin 관련 페이지 내용 검사 정규식",
  "checker.dast.sw.common.6511.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6512.regex.test.description": "`사용자 정의 Adobe Flash Player 관련 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 Adobe Flash Player 관련 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6512.regex.test.message": "(없음)",
  "checker.dast.sw.common.6512.regex.test.name": "사용자 정의 Adobe Flash Player 관련 내용 검사 정규식",
  "checker.dast.sw.common.6512.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6513.patterns.attack.description": "`사용자 정의 중요 파일 경로 참조 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 중요 파일 경로에 대한 파일 다운로드가 발생한다고 간주합니다.",
  "checker.dast.sw.common.6513.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6513.patterns.attack.name": "사용자 정의 중요 파일 경로 참조 패턴",
  "checker.dast.sw.common.6513.patterns.attack.placeholder": "공격 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6513.regex.test.description": "`사용자 정의 중요 파일 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 중요 파일 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6513.regex.test.message": "(없음)",
  "checker.dast.sw.common.6513.regex.test.name": "사용자 정의 중요 파일 내용 검사 정규식",
  "checker.dast.sw.common.6513.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6514.regex.test.description": "`사용자 정의 파일 경로 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문 중 hidden 필드 및 JavaScript 영역 내부에 파일 경로 정보가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6514.regex.test.message": "(없음)",
  "checker.dast.sw.common.6514.regex.test.name": "사용자 정의 파일 경로 검사 정규식",
  "checker.dast.sw.common.6514.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6515.patterns.attack.description": "`사용자 정의 중요 파일 경로 참조 패턴`에 대하여 **URL 인코딩한 값**을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 중요 파일 경로에 대한 파일 다운로드가 발생한다고 간주합니다.",
  "checker.dast.sw.common.6515.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6515.patterns.attack.name": "사용자 정의 중요 파일 경로 참조 패턴",
  "checker.dast.sw.common.6515.patterns.attack.placeholder": "공격 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6515.regex.test.description": "`사용자 정의 중요 파일 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 중요 파일 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6515.regex.test.message": "(없음)",
  "checker.dast.sw.common.6515.regex.test.name": "사용자 정의 중요 파일 내용 검사 정규식",
  "checker.dast.sw.common.6515.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6518.path.attack.description": "`사용자 정의 디렉터리 목록 출력 경로`를 사용하여 URL을 구성합니다(예: http://host.com/`DIRECTORY_LIST_PAGE_PATH`). 해당 URL을 디렉터리 목록을 출력하는 페이지에 해당하는 URL로 간주합니다.",
  "checker.dast.sw.common.6518.path.attack.message": "(없음)",
  "checker.dast.sw.common.6518.path.attack.name": "사용자 정의 디렉터리 목록 출력 경로",
  "checker.dast.sw.common.6518.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6518.regex.test.description": "`사용자 정의 디렉터리 목록 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 디렉터리 목록 출력 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6518.regex.test.message": "(없음)",
  "checker.dast.sw.common.6518.regex.test.name": "사용자 정의 디렉터리 목록 출력 내용 검사 정규식",
  "checker.dast.sw.common.6518.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6520.path.attack.description": "`사용자 정의 기본 오류 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/`DEFAULT_ERROR_PAGE_PATH`). 해당 URL을 서버에서 제공하는 기본 오류 페이지에 해당하는 URL로 간주합니다.",
  "checker.dast.sw.common.6520.path.attack.message": "(없음)",
  "checker.dast.sw.common.6520.path.attack.name": "사용자 정의 기본 오류 페이지 경로",
  "checker.dast.sw.common.6520.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6520.regex.test.description": "`사용자 정의 기본 오류 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 기본 오류 페이지 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6520.regex.test.message": "(없음)",
  "checker.dast.sw.common.6520.regex.test.name": "사용자 정의 기본 오류 페이지 내용 검사 정규식",
  "checker.dast.sw.common.6520.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6522.patterns.attack.description": "`사용자 정의 DB 오류 메시지 유발 공격 패턴` 을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 DB 오류 메시지가 발생한다고 간주합니다.",
  "checker.dast.sw.common.6522.patterns.attack.message": "(없음)",
  "checker.dast.sw.common.6522.patterns.attack.name": "사용자 정의 DB 오류 메시지 유발 패턴",
  "checker.dast.sw.common.6522.patterns.attack.placeholder": "DB 오류 메시지 유발 패턴을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6522.regex.test.description": "`사용자 정의 DB 오류 메시지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 DB 오류 메시지 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6522.regex.test.message": "(없음)",
  "checker.dast.sw.common.6522.regex.test.name": "사용자 정의 DB 오류 메시지 내용 검사 정규식",
  "checker.dast.sw.common.6522.regex.test.placeholder": "검사 정규식에 해당하는 문자열을 입력해주세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6523.regex.test.description": "`사용자 정의 민감한 정보 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 민감한 정보가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6523.regex.test.message": "(없음)",
  "checker.dast.sw.common.6523.regex.test.name": "사용자 정의 민감한 정보 검사 정규식",
  "checker.dast.sw.common.6523.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6524.regex.test.description": "`사용자 정의 서버 버전 정보 검사 정규식`을 사용하여 응답 헤더를 분석합니다. 해당 정규식에 대응하는 부분이 응답 헤더에 존재하는 경우, 응답 헤더에 서버 버전 정보가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6524.regex.test.message": "(없음)",
  "checker.dast.sw.common.6524.regex.test.name": "사용자 정의 서버 버전 정보 검사 정규식",
  "checker.dast.sw.common.6524.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6526.regex.test.description": "`사용자 정의 서비스 접속 정보 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 특정 서비스 접속 정보가 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6526.regex.test.message": "(없음)",
  "checker.dast.sw.common.6526.regex.test.name": "사용자 정의 서비스 접속 정보 검사 정규식",
  "checker.dast.sw.common.6526.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6527.time.waiting.description": "`사용자 정의 SSL labs Server Test 분석 대기 시간`에 해당하는 초 단위 시간 동안 대기하며 `SSL labs Server Test` 분석 완료를 기다립니다.",
  "checker.dast.sw.common.6527.time.waiting.message": "입력 가능한 값의 범위는 0부터 86400까지입니다.",
  "checker.dast.sw.common.6527.time.waiting.name": "사용자 정의 SSL labs Server Test 분석 대기 시간",
  "checker.dast.sw.common.6527.time.waiting.placeholder": "분석 대기 시간을 입력하세요(단위: 초).",
  "checker.dast.sw.common.6528.regex.test.description": "`사용자 정의 User agent 설정 값 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 적절하지 않은 `User agent` 설정 값이 이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6528.regex.test.message": "(없음)",
  "checker.dast.sw.common.6528.regex.test.name": "사용자 정의 User agent 설정 값 검사 정규식",
  "checker.dast.sw.common.6528.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6529.path.attack.description": "`사용자 정의 리포지터리 목록 출력 경로`를 사용하여 URL을 구성합니다(예: http://host.com/`REPOSITORY_LIST_PAGE_PATH`). 해당 URL을 리포지터리 목록을 출력하는 페이지에 해당하는 URL로 간주합니다.",
  "checker.dast.sw.common.6529.path.attack.message": "(없음)",
  "checker.dast.sw.common.6529.path.attack.name": "사용자 정의 리포지터리 목록 출력 경로",
  "checker.dast.sw.common.6529.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6529.regex.test.description": "`사용자 정의 리포지터리 목록 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 리포지터리 목록 출력 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6529.regex.test.message": "(없음)",
  "checker.dast.sw.common.6529.regex.test.name": "사용자 정의 리포지터리 목록 출력 내용 검사 정규식",
  "checker.dast.sw.common.6529.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6530.extensions.description": "`사용자 정의 파일 확장자`에 해당하는 확장자로 끝나는 링크 주소를 페이지 내에서 검색합니다. 해당 주소를 통하여 특정 확장자를 가지는 파일 다운로드가 가능한 것으로 간주합니다.",
  "checker.dast.sw.common.6530.extensions.message": "(없음)",
  "checker.dast.sw.common.6530.extensions.name": "사용자 정의 파일 확장자",
  "checker.dast.sw.common.6530.extensions.placeholder": "확장자를 입력해주세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6531.path.attack.description": "`사용자 정의 디폴트 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/`DEFAULT_PAGE_PATH`). 해당 URL을 디폴트 페이지에 해당하는 URL로 간주합니다.",
  "checker.dast.sw.common.6531.path.attack.message": "(없음)",
  "checker.dast.sw.common.6531.path.attack.name": "사용자 정의 디폴트 페이지 경로",
  "checker.dast.sw.common.6531.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6531.regex.test.description": "`사용자 정의 디폴트 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 디폴트 페이지 내용이 존재하는 것으로 간주합니다.",
  "checker.dast.sw.common.6531.regex.test.message": "(없음)",
  "checker.dast.sw.common.6531.regex.test.name": "사용자 정의 디폴트 페이지 내용 검사 정규식",
  "checker.dast.sw.common.6531.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6533.files.login.description": "`사용자 정의 로그인 수행 기록 파일` 내용을 기반으로 로그인을 시도합니다.",
  "checker.dast.sw.common.6533.files.login.message": "(없음)",
  "checker.dast.sw.common.6533.files.login.name": "사용자 정의 로그인 수행 기록 파일",
  "checker.dast.sw.common.6533.files.login.placeholder": "(없음)",
  "checker.dast.sw.common.6533.sessions.names.description": "`사용자 정의 세션 이름`에 대응하는 세션을 추출합니다. 해당 세션에 대한 보안 검사를 수행합니다.",
  "checker.dast.sw.common.6533.sessions.names.message": "(없음)",
  "checker.dast.sw.common.6533.sessions.names.name": "사용자 정의 세션 이름",
  "checker.dast.sw.common.6533.sessions.names.placeholder": "세션 이름을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6533.sessions.timeout.description": "`사용자 정의 세션 타임아웃`에 해당하는 시간 동안 대기한 후, 세션이 만료되었는지를 검사합니다.",
  "checker.dast.sw.common.6533.sessions.timeout.message": "입력 가능한 값의 범위는 0부터 86400까지입니다.",
  "checker.dast.sw.common.6533.sessions.timeout.name": "사용자 정의 세션 타임아웃",
  "checker.dast.sw.common.6533.sessions.timeout.placeholder": "타임아웃 시간을 입력하세요(단위: 초).",
  "checker.dast.sw.common.6534.files.login.description": "`사용자 정의 로그인 수행 기록 파일` 내용을 기반으로 로그인을 시도합니다.",
  "checker.dast.sw.common.6534.files.login.message": "(없음)",
  "checker.dast.sw.common.6534.files.login.name": "사용자 정의 로그인 수행 기록 파일",
  "checker.dast.sw.common.6534.files.login.placeholder": "(없음)",
  "checker.dast.sw.common.6534.sessions.names.description": "`사용자 정의 세션 이름`에 대응하는 세션을 추출합니다. 해당 세션에 대한 보안 검사를 수행합니다.",
  "checker.dast.sw.common.6534.sessions.names.message": "(없음)",
  "checker.dast.sw.common.6534.sessions.names.name": "사용자 정의 세션 이름",
  "checker.dast.sw.common.6534.sessions.names.placeholder": "세션 이름을 입력하세요. 엔터로 구분합니다.",
  "checker.dast.sw.common.6534.sessions.timeout.description": "`사용자 정의 세션 타임아웃`에 해당하는 시간 동안 대기한 후, 세션이 만료되었는지를 검사합니다.",
  "checker.dast.sw.common.6534.sessions.timeout.message": "입력 가능한 값의 범위는 0부터 86400까지입니다.",
  "checker.dast.sw.common.6534.sessions.timeout.name": "사용자 정의 세션 타임아웃",
  "checker.dast.sw.common.6534.sessions.timeout.placeholder": "타임아웃 시간을 입력하세요(단위: 초).",
  "checker.dast.sw.common5776.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common5776.variant.injectable.extras.0.QUERY_STRING": "쿼리 문자열",
  "checker.dast.sw.common5776.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.dast.sw.common5776.variant.injectable.extras.1.FORM_DATA": "폼 데이터",
  "checker.dast.sw.common5776.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.dast.sw.common5776.variant.injectable.extras.2.COOKIE": "쿠키",
  "checker.dast.sw.common5776.variant.injectable.extras.2.cookie": "쿠키",
  "checker.dast.sw.common5776.variant.injectable.extras.3.HTTP_HEADERS": "HTTP 헤더",
  "checker.dast.sw.common5776.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.dast.sw.common5776.variant.injectable.extras.4.URL_PATH": "URL 경로",
  "checker.dast.sw.common5776.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.dast.sw.common5776.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.dast.sw.common5776.variant.injectable.name": "침투 공격 대상",
  "checker.dast.sw.common5776.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.dast.sw.common5776.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, multipart/form-data 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.dast.sw.common5776.variant.rpc.extras.0.MULTI_PART": "multipart/form-data",
  "checker.dast.sw.common5776.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.dast.sw.common5776.variant.rpc.extras.1.XML": "XML",
  "checker.dast.sw.common5776.variant.rpc.extras.1.xml": "XML",
  "checker.dast.sw.common5776.variant.rpc.extras.2.JSON": "JSON",
  "checker.dast.sw.common5776.variant.rpc.extras.2.json": "JSON",
  "checker.dast.sw.common5776.variant.rpc.extras.3.GWT": "Google Web Toolkit",
  "checker.dast.sw.common5776.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.dast.sw.common5776.variant.rpc.extras.4.DWR": "DWR",
  "checker.dast.sw.common5776.variant.rpc.extras.4.dwr": "DWR",
  "checker.dast.sw.common5776.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.dast.sw.common5776.variant.rpc.name": "RPC 공격 대상",
  "checker.dast.sw.common5776.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.deprecated_components_in_html5.exclusion_tag.description": "제외 태그는 검출에서 제외할 태그의 이름입니다.",
  "checker.deprecated_components_in_html5.exclusion_tag.message": "올바른 태그 이름을 입력하세요.",
  "checker.deprecated_components_in_html5.exclusion_tag.name": "제외 태그",
  "checker.deprecated_components_in_html5.exclusion_tag.placeholder": "제외할 태그 이름을 입력하세요. (예시: div)",
  "checker.deprecated_components_in_html5.name": "HTML5에서 사용되지 않는 구성 요소",
  "checker.deprecated_components_in_html5.remedy": "이를 해결하기 위해 HTML5에서 사용되지 않는 구성 요소를 사용하지 않아야 합니다.",
  "checker.deprecated_components_in_html5.target": "HTML5에서 사용되지 않는 구성 요소 체커는 HTML5에서 더 이상 사용되지 않는 태그, 속성 등을 사용한 부분을 검출합니다.",
  "checker.deprecated_components_in_html5.vulnerability": "HTML5에서 사용되지 않는 구성 요소를 사용하는 경우 최신 브라우저 및 기기를 사용하는 사용자에게 올바른 정보를 전달하지 못할 수 있습니다.",
  "checker.email_address_disclosure.name": "이메일 주소 노출",
  "checker.email_address_disclosure.remedy": "이를 해결하기 위하여, 불필요한 이메일 주소를 웹 페이지에서 제거해야 합니다.",
  "checker.email_address_disclosure.target": "이메일 주소 노출' 체커는 웹 페이지의 이메일 주소 존재 여부를 검사합니다.",
  "checker.email_address_disclosure.vulnerability": "의도하지 않은 이메일 주소가 웹 페이지에 존재하는 경우, 공격자가 해당 이메일 주소를 악용할 수 있습니다.",
  "checker.external_redirect.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.external_redirect.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.external_redirect.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.external_redirect.variant.injectable.extras.2.cookie": "쿠키",
  "checker.external_redirect.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.external_redirect.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.external_redirect.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.external_redirect.variant.injectable.name": "침투 공격 대상",
  "checker.external_redirect.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.external_redirect.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.external_redirect.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.external_redirect.variant.rpc.extras.1.xml": "XML",
  "checker.external_redirect.variant.rpc.extras.2.json": "JSON",
  "checker.external_redirect.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.external_redirect.variant.rpc.extras.4.dwr": "DWR",
  "checker.external_redirect.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.external_redirect.variant.rpc.name": "RPC 공격 대상",
  "checker.external_redirect.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.format_string.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.format_string.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.format_string.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.format_string.variant.injectable.extras.2.cookie": "쿠키",
  "checker.format_string.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.format_string.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.format_string.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.format_string.variant.injectable.name": "침투 공격 대상",
  "checker.format_string.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.format_string.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.format_string.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.format_string.variant.rpc.extras.1.xml": "XML",
  "checker.format_string.variant.rpc.extras.2.json": "JSON",
  "checker.format_string.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.format_string.variant.rpc.extras.4.dwr": "DWR",
  "checker.format_string.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.format_string.variant.rpc.name": "RPC 공격 대상",
  "checker.format_string.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.graphql_bopla.admin_api_body.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 본문입니다. JSON 형식으로 입력해야 합니다. HTTP 메소드를 `**GET**`으로 선택한 경우, 입력한 요청 본문은 사용하지 않습니다.",
  "checker.graphql_bopla.admin_api_body.name": "관리자 API 엔드포인트 요청 본문",
  "checker.graphql_bopla.admin_api_body.placeholder": "JSON 형식의 요청 본문을 입력하세요.",
  "checker.graphql_bopla.admin_api_method.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 HTTP 메소드입니다.",
  "checker.graphql_bopla.admin_api_method.name": "관리자 API 엔드포인트 요청 HTTP 메소드",
  "checker.graphql_bopla.admin_api_url.description": "특정 API 요청이 관리자 API 엔드포인트에 해당하는지 식별하기 위한 기준 요청 URL입니다.",
  "checker.graphql_bopla.admin_api_url.name": "관리자 API 엔드포인트 요청 URL",
  "checker.graphql_bopla.admin_api_url.placeholder": "요청 URL을 입력하세요.",
  "checker.graphql_sql_injection.regex.test.description": "`사용자 정의 DB 오류 메시지 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 DB 오류 메시지 출력 내용이 존재하는 것으로 간주합니다.",
  "checker.graphql_sql_injection.regex.test.name": "사용자 정의 DB 오류 메시지 출력 내용 검사 정규식",
  "checker.graphql_sql_injection.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.inappropriate_title.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.inappropriate_title.exclusion_css_selector.message": "올바른 형식의 CSS 선택자를 입력하세요.",
  "checker.inappropriate_title.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.inappropriate_title.exclusion_css_selector.placeholder": "ko'])",
  "checker.inappropriate_title.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.inappropriate_title.exclusion_xpath.message": "올바른 형식의 XPath를 입력하세요.",
  "checker.inappropriate_title.exclusion_xpath.name": "제외 XPath",
  "checker.inappropriate_title.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.inappropriate_title.name": "부적절한 제목",
  "checker.inappropriate_title.remedy": "이를 해결하기 위해 웹 페이지, 프레임, 콘텐츠 블록에 적절한 제목을 제공해야 합니다.",
  "checker.inappropriate_title.target": "부적절한 제목 체커는 웹 페이지, 프레임, 콘텐츠 블록에서 적절하지 않은 제목을 검출합니다.",
  "checker.inappropriate_title.vulnerability": "웹 페이지의 제목을 누락하는 경우, 사용자가 문서 내용을 파악하는 데 불편을 겪을 수 있습니다. 프레임의 제목을 누락하는 경우 프레임 초점이 이동하면 시각장애인, 인지장애인, 심각한 지체장애인과 같은 사용자가 프레임을 파악하는 데 불편을 겪을 수 있습니다. 콘텐츠 블록의 제목을 누락하는 경우 사용자가 제목과 본문을 구분하거나, 제목 간 이동하거나, 문맥을 파악하는 데 불편을 겪을 수 있습니다. 또한, 제목에 특수 문자를 두 번 이상 반복하여 사용하는 경우에도 화면 낭독 프로그램을 사용하는 시각장애인 사용자가 불편을 겪을 수 있습니다.",
  "checker.incompatible_css.name": "호환되지 않는 CSS",
  "checker.incompatible_css.remedy": "이를 해결하기 위해 모든 주요 웹 브라우저에서 지원하는 CSS 속성을 사용해야 합니다.",
  "checker.incompatible_css.target": "호환되지 않는 CSS 체커는 페이지를 작성할 때 일부 웹 브라우저에서 지원하지 않는 CSS 속성을 사용한 부분을 검출합니다.",
  "checker.incompatible_css.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.incompatible_css.variant.injectable.extras.0.http_headers": "HTTP 헤더",
  "checker.incompatible_css.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.incompatible_css.variant.injectable.name": "침투 공격 대상",
  "checker.incompatible_css.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.incompatible_css.vulnerability": "웹 브라우저가 지원하지 않는 CSS 속성을 사용하는 경우 해당 CSS 속성의 처리 방식이 웹 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다.",
  "checker.incompatible_html.name": "호환되지 않는 HTML",
  "checker.incompatible_html.remedy": "이를 해결하기 위해 모든 주요 웹 브라우저에서 지원하는 HTML 구성 요소를 사용해야 합니다.",
  "checker.incompatible_html.target": "호환되지 않는 HTML 체커는 일부 웹 브라우저에서 지원하지 않는 HTML 구성 요소를 사용한 부분을 검출합니다.",
  "checker.incompatible_html.vulnerability": "웹 브라우저가 지원하지 않는 HTML 구성 요소를 사용하는 경우 해당 Javascript 기능의 처리 방식이 웹 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다.",
  "checker.incompatible_js.name": "호환되지 않는 Javascript",
  "checker.incompatible_js.remedy": "이를 해결하기 위해 모든 주요 웹 브라우저에서 지원하는 Javascript 기능을 사용해야 합니다.",
  "checker.incompatible_js.target": "호환되지 않는 Javascript 체커는 일부 웹 브라우저에서 지원하지 않는 Javascript 기능을 사용한 부분을 검사합니다.",
  "checker.incompatible_js.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.incompatible_js.variant.injectable.extras.0.http_headers": "HTTP 헤더",
  "checker.incompatible_js.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.incompatible_js.variant.injectable.name": "침투 공격 대상",
  "checker.incompatible_js.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.incompatible_js.vulnerability": "웹 브라우저가 지원하지 않는 Javascript 기능을 사용하는 경우 해당 Javascript 기능의 처리 방식이 웹 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다.",
  "checker.incomplete_session_expiration.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.incomplete_session_expiration.exclusion_rules.message": "하나 이상의 정규식을 입력하세요.",
  "checker.incomplete_session_expiration.exclusion_rules.name": "제외 규칙",
  "checker.incomplete_session_expiration.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요.",
  "checker.incomplete_session_expiration.session_id_name.description": "세션 ID 이름은 해당 이름을 가지는 세션 ID의 고정 여부를 판단하기 위하여 사용하는 문자열입니다.",
  "checker.incomplete_session_expiration.session_id_name.message": "하나 이상의 문자열을 입력하세요.",
  "checker.incomplete_session_expiration.session_id_name.name": "세션 ID 이름",
  "checker.incomplete_session_expiration.session_id_name.placeholder": "세션 ID 이름에 해당하는 문자열을 입력하세요.",
  "checker.invalid_css.name": "잘못된 CSS",
  "checker.invalid_css.remedy": "이를 해결하기 위해 표준 CSS 문법을 준수해야 합니다.",
  "checker.invalid_css.target": "잘못된 CSS 체커는 페이지에서 CSS 문법을 준수하지 않은 부분을 검출합니다.",
  "checker.invalid_css.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.invalid_css.variant.injectable.extras.0.http_headers": "HTTP 헤더",
  "checker.invalid_css.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.invalid_css.variant.injectable.name": "침투 공격 대상",
  "checker.invalid_css.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.invalid_css.vulnerability": "표준 CSS 문법을 준수하지 않는 경우 해당 페이지의 처리 방식이 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다.",
  "checker.invalid_html.name": "잘못된 HTML",
  "checker.invalid_html.remedy": "이를 해결하기 위해 페이지를 작성할 때 표준 (X)HTML 문법을 준수해야 합니다.",
  "checker.invalid_html.target": "잘못된 HTML 체커는 페이지에서 표준 (X)HTML 문법을 준수하지 않은 부분을 검출합니다.",
  "checker.invalid_html.vulnerability": "페이지를 작성할 때 표준 (X)HTML 문법을 준수하지 않는 경우 해당 페이지의 처리 방식이 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다.",
  "checker.invalid_link_text.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.invalid_link_text.exclusion_css_selector.message": "올바른 형식의 CSS 선택자를 입력하세요.",
  "checker.invalid_link_text.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.invalid_link_text.exclusion_css_selector.placeholder": "ko'])",
  "checker.invalid_link_text.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.invalid_link_text.exclusion_xpath.message": "올바른 형식의 XPath를 입력하세요.",
  "checker.invalid_link_text.exclusion_xpath.name": "제외 XPath",
  "checker.invalid_link_text.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.invalid_link_text.name": "잘못된 링크 텍스트",
  "checker.invalid_link_text.remedy": "이를 해결하기 위해 링크의 용도나 목적을 이해할 수 있도록 링크 텍스트를 제공해야 합니다.",
  "checker.invalid_link_text.target": "잘못된 링크 텍스트 체커는 링크 텍스트가 적절하지 않은 링크를 검출합니다.",
  "checker.invalid_link_text.vulnerability": "링크 텍스트가 적절하지 않은 경우 사용자가 링크를 클릭했을 때 반응이나 이동할 페이지를 예측하기 어려울 수 있습니다.",
  "checker.jmx_rmi_enable.ports.description": "포트 번호는 연결하거나 공격을 시도할 포트의 문자열입니다.",
  "checker.jmx_rmi_enable.ports.description ": " 포트 번호는 해당 번호에 해당하는 포트로의 연결 및 공격 시도를 위하여 사용하는 문자열입니다.",
  "checker.jmx_rmi_enable.ports.message": "하나 이상의 문자열을 입력하세요.",
  "checker.jmx_rmi_enable.ports.message ": " 하나 이상의 문자열을 입력하세요.",
  "checker.jmx_rmi_enable.ports.name": "포트 번호",
  "checker.jmx_rmi_enable.ports.name ": " 포트 번호",
  "checker.jmx_rmi_enable.ports.placeholder": "포트 번호에 해당하는 문자열을 입력하세요.",
  "checker.jmx_rmi_enable.ports.placeholder ": " 포트 번호에 해당하는 문자열을 입력하세요.",
  "checker.local_file_include.attack_strings.description": "공격 문자열은 공격 수행 도중 서버로 전송하는 HTTP 요청 내부에 포함시킬 수 있는 문자열입니다.",
  "checker.local_file_include.attack_strings.message": "하나 이상의 문자열을 입력하세요.",
  "checker.local_file_include.attack_strings.name": "공격 문자열",
  "checker.local_file_include.attack_strings.placeholder": "공격 문자열을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.local_file_include.detection_rules.description": "검출 규칙은 공격에 대한 서버의 HTTP 응답에서 취약점을 검출하기 위하여 사용하는 정규식입니다.",
  "checker.local_file_include.detection_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.local_file_include.detection_rules.name": "검출 규칙",
  "checker.local_file_include.detection_rules.placeholder": "검출 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.local_file_include.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.local_file_include.exclusion_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.local_file_include.exclusion_rules.name": "제외 규칙",
  "checker.local_file_include.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.local_file_include.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.local_file_include.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.local_file_include.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.local_file_include.variant.injectable.extras.2.cookie": "쿠키",
  "checker.local_file_include.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.local_file_include.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.local_file_include.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.local_file_include.variant.injectable.name": "침투 공격 대상",
  "checker.local_file_include.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.local_file_include.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.local_file_include.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.local_file_include.variant.rpc.extras.1.xml": "XML",
  "checker.local_file_include.variant.rpc.extras.2.json": "JSON",
  "checker.local_file_include.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.local_file_include.variant.rpc.extras.4.dwr": "DWR",
  "checker.local_file_include.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.local_file_include.variant.rpc.name": "RPC 공격 대상",
  "checker.local_file_include.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.missing_alt_text.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.missing_alt_text.exclusion_css_selector.message": "올바른 형식의 CSS 선택자를 입력하세요.",
  "checker.missing_alt_text.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.missing_alt_text.exclusion_css_selector.placeholder": "ko'])",
  "checker.missing_alt_text.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.missing_alt_text.exclusion_xpath.message": "올바른 형식의 XPath를 입력하세요.",
  "checker.missing_alt_text.exclusion_xpath.name": "제외 XPath",
  "checker.missing_alt_text.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.missing_alt_text.name": "대체 텍스트 누락",
  "checker.missing_alt_text.remedy": "텍스트가 아닌 콘텐츠의 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 합니다.",
  "checker.missing_alt_text.target": "대체 텍스트 누락 체커는 대체 텍스트를 제공하지 않는 텍스트가 아닌 콘텐츠를 검출합니다.",
  "checker.missing_alt_text.vulnerability": "텍스트가 아닌 콘텐츠에 대하여 대체 텍스트를 누락하는 경우 시각장애인과 같은 일부 사용자가 잘못된 정보를 얻거나 전혀 정보를 얻지 못할 수 있습니다.",
  "checker.missing_default_language.name": "기본 언어 표시 누락",
  "checker.missing_default_language.remedy": "이를 해결하기 위해 페이지에서 주로 사용하는 기본 언어를 명시해야 합니다.",
  "checker.missing_default_language.target": "기본 언어 표시 누락 체커는 주로 사용하는 기본 언어를 명시하지 않은 페이지를 검출합니다.",
  "checker.missing_default_language.vulnerability": "페이지에서 주로 사용하는 기본 언어를 명시하지 않은 경우, 화면 낭독 프로그램이 언어를 인식하여 자동으로 음성을 변환하거나, 해당 언어에 적합한 발음을 제공하지 못하도록 할 수 있습니다.",
  "checker.missing_label.exclusion_css_selector.description": "제외 CSS 선택자는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.missing_label.exclusion_css_selector.message": "올바른 형식의 CSS 선택자를 입력하세요.",
  "checker.missing_label.exclusion_css_selector.name": "제외 CSS 선택자",
  "checker.missing_label.exclusion_css_selector.placeholder": "ko'])",
  "checker.missing_label.exclusion_xpath.description": "제외 XPath는 검출에서 제외할 웹 요소를 가리키는 지시자입니다.",
  "checker.missing_label.exclusion_xpath.message": "올바른 형식의 XPath를 입력하세요.",
  "checker.missing_label.exclusion_xpath.name": "제외 XPath",
  "checker.missing_label.exclusion_xpath.placeholder": "제외할 웹 요소의 XPath를 입력하세요. (예시: /html/body/div[3])",
  "checker.missing_label.name": "레이블 누락",
  "checker.missing_label.remedy": "이를 해결하기 위해 입력 서식에 대응하는 레이블을 제공해야 합니다.",
  "checker.missing_label.target": "레이블 누락 체커는 입력 서식에서 레이블이 누락되었는지 여부를 검출합니다.",
  "checker.missing_label.vulnerability": "레이블을 누락하는 경우 장애가 있는 사용자가 서식에 자료를 입력하는 데 불편을 겪을 수 있습니다.",
  "checker.no_response_to_missing_input.name": "입력 누락에 대한 반응 없음",
  "checker.no_response_to_missing_input.remedy": "이를 해결하기 위해 사용자가 누락한 입력에 대한 적절한 반응을 제공해야 합니다.",
  "checker.no_response_to_missing_input.target": "입력 누락에 대한 반응 없음 체커는 사용자가 누락한 입력에 대해 적절한 반응이 없는 경우를 검출합니다.",
  "checker.no_response_to_missing_input.vulnerability": "사용자가 누락한 입력에 대해 적절한 반응이 없는 경우, 사용자 스스로가 잘못 입력했는지 여부를 파악하기가 어려울 수 있습니다.",
  "checker.non_standard_technology.name": "비표준 기술 사용",
  "checker.non_standard_technology.remedy": "이를 해결하기 위해 페이지를 작성할 때 비표준 기술을 사용하지 않아야 합니다.",
  "checker.non_standard_technology.target": "비표준 기술 사용 체커는 비표준 기술을 사용한 부분을 검출합니다.",
  "checker.non_standard_technology.vulnerability": "비표준 기술을 사용하는 경우 해당 기술을 사용할 수 없는 사용자가 서비스를 이용하는 데 불편이 발생할 수 있습니다.",
  "checker.parameter_tamper.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.parameter_tamper.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.parameter_tamper.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.parameter_tamper.variant.injectable.extras.2.cookie": "쿠키",
  "checker.parameter_tamper.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.parameter_tamper.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.parameter_tamper.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.parameter_tamper.variant.injectable.name": "침투 공격 대상",
  "checker.parameter_tamper.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.parameter_tamper.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.parameter_tamper.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.parameter_tamper.variant.rpc.extras.1.xml": "XML",
  "checker.parameter_tamper.variant.rpc.extras.2.json": "JSON",
  "checker.parameter_tamper.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.parameter_tamper.variant.rpc.extras.4.dwr": "DWR",
  "checker.parameter_tamper.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.parameter_tamper.variant.rpc.name": "RPC 공격 대상",
  "checker.parameter_tamper.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.passive_custom.detection_rules.description": "검출 규칙은 공격에 대한 서버의 HTTP 응답에서 취약점을 검출하기 위하여 사용하는 정규식입니다.",
  "checker.passive_custom.detection_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.passive_custom.detection_rules.name": "검출 규칙",
  "checker.passive_custom.detection_rules.placeholder": "검출 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.passive_custom.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.passive_custom.exclusion_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.passive_custom.exclusion_rules.name": "제외 규칙",
  "checker.passive_custom.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.path_traversal.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.path_traversal.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.path_traversal.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.path_traversal.variant.injectable.extras.2.cookie": "쿠키",
  "checker.path_traversal.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.path_traversal.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.path_traversal.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.path_traversal.variant.injectable.name": "침투 공격 대상",
  "checker.path_traversal.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.path_traversal.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.path_traversal.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.path_traversal.variant.rpc.extras.1.xml": "XML",
  "checker.path_traversal.variant.rpc.extras.2.json": "JSON",
  "checker.path_traversal.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.path_traversal.variant.rpc.extras.4.dwr": "DWR",
  "checker.path_traversal.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.path_traversal.variant.rpc.name": "RPC 공격 대상",
  "checker.path_traversal.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.phf_command_execution.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.phf_command_execution.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.phf_command_execution.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.phf_command_execution.variant.injectable.extras.2.cookie": "쿠키",
  "checker.phf_command_execution.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.phf_command_execution.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.phf_command_execution.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.phf_command_execution.variant.injectable.name": "침투 공격 대상",
  "checker.phf_command_execution.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.phf_command_execution.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.phf_command_execution.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.phf_command_execution.variant.rpc.extras.1.xml": "XML",
  "checker.phf_command_execution.variant.rpc.extras.2.json": "JSON",
  "checker.phf_command_execution.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.phf_command_execution.variant.rpc.extras.4.dwr": "DWR",
  "checker.phf_command_execution.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.phf_command_execution.variant.rpc.name": "RPC 공격 대상",
  "checker.phf_command_execution.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.predictable_session.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.predictable_session.exclusion_rules.message": "하나 이상의 정규식을 입력하세요.",
  "checker.predictable_session.exclusion_rules.name": "제외 규칙",
  "checker.predictable_session.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요.",
  "checker.predictable_session.session_id_name.description": "세션 ID 이름은 해당 이름을 가지는 세션 ID의 고정 여부를 판단하기 위하여 사용하는 문자열입니다.",
  "checker.predictable_session.session_id_name.message": "하나 이상의 문자열을 입력하세요.",
  "checker.predictable_session.session_id_name.name": "세션 ID 이름",
  "checker.predictable_session.session_id_name.placeholder": "세션 ID 이름에 해당하는 문자열을 입력하세요.",
  "checker.remote_file_include.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.remote_file_include.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.remote_file_include.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.remote_file_include.variant.injectable.extras.2.cookie": "쿠키",
  "checker.remote_file_include.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.remote_file_include.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.remote_file_include.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.remote_file_include.variant.injectable.name": "침투 공격 대상",
  "checker.remote_file_include.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.remote_file_include.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.remote_file_include.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.remote_file_include.variant.rpc.extras.1.xml": "XML",
  "checker.remote_file_include.variant.rpc.extras.2.json": "JSON",
  "checker.remote_file_include.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.remote_file_include.variant.rpc.extras.4.dwr": "DWR",
  "checker.remote_file_include.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.remote_file_include.variant.rpc.name": "RPC 공격 대상",
  "checker.remote_file_include.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.rest_ldap_injection.regex.test.description": "`사용자 정의 LDAP 오류 메시지 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 LDAP 오류 메시지 출력 내용이 존재하는 것으로 간주합니다.",
  "checker.rest_ldap_injection.regex.test.name": "사용자 정의 LDAP 오류 메시지 출력 내용 검사 정규식",
  "checker.rest_ldap_injection.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.rest_sql_injection_database_exposure.regex.test.description": "`사용자 정의 DB 오류 메시지 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 DB 오류 메시지 출력 내용이 존재하는 것으로 간주합니다.",
  "checker.rest_sql_injection_database_exposure.regex.test.name": "사용자 정의 DB 오류 메시지 출력 내용 검사 정규식",
  "checker.rest_sql_injection_database_exposure.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "checker.server_side_include.attack_strings.description": "공격 문자열은 공격 수행 도중 서버로 전송하는 HTTP 요청 내부에 포함시킬 수 있는 문자열입니다.",
  "checker.server_side_include.attack_strings.message": "하나 이상의 문자열을 입력하세요.",
  "checker.server_side_include.attack_strings.name": "공격 문자열",
  "checker.server_side_include.attack_strings.placeholder": "공격 문자열을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.server_side_include.detection_rules.description": "검출 규칙은 공격에 대한 서버의 HTTP 응답에서 취약점을 검출하기 위하여 사용하는 정규식입니다.",
  "checker.server_side_include.detection_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.server_side_include.detection_rules.name": "검출 규칙",
  "checker.server_side_include.detection_rules.placeholder": "검출 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.server_side_include.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.server_side_include.exclusion_rules.message": "올바른 형식의 정규식을 입력하세요.",
  "checker.server_side_include.exclusion_rules.name": "제외 규칙",
  "checker.server_side_include.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요. (예시: <script>alert(1);</script>)",
  "checker.server_side_include.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.server_side_include.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.server_side_include.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.server_side_include.variant.injectable.extras.2.cookie": "쿠키",
  "checker.server_side_include.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.server_side_include.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.server_side_include.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.server_side_include.variant.injectable.name": "침투 공격 대상",
  "checker.server_side_include.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.server_side_include.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.server_side_include.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.server_side_include.variant.rpc.extras.1.xml": "XML",
  "checker.server_side_include.variant.rpc.extras.2.json": "JSON",
  "checker.server_side_include.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.server_side_include.variant.rpc.extras.4.dwr": "DWR",
  "checker.server_side_include.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.server_side_include.variant.rpc.name": "RPC 공격 대상",
  "checker.server_side_include.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.session_fixation.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.session_fixation.exclusion_rules.message": "하나 이상의 정규식을 입력하세요.",
  "checker.session_fixation.exclusion_rules.name": "제외 규칙",
  "checker.session_fixation.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요.",
  "checker.session_fixation.session_id_name.description": "세션 ID 이름은 해당 이름을 가지는 세션 ID의 고정 여부를 판단하기 위하여 사용하는 문자열입니다.",
  "checker.session_fixation.session_id_name.message": "하나 이상의 문자열을 입력하세요.",
  "checker.session_fixation.session_id_name.name": "세션 ID 이름",
  "checker.session_fixation.session_id_name.placeholder": "세션 ID 이름에 해당하는 문자열을 입력하세요.",
  "checker.session_replay.exclusion_rules.description": "제외 규칙은 검출에서 제외할 대상을 정의하기 위하여 사용하는 정규식입니다.",
  "checker.session_replay.exclusion_rules.message": "하나 이상의 정규식을 입력하세요.",
  "checker.session_replay.exclusion_rules.name": "제외 규칙",
  "checker.session_replay.exclusion_rules.placeholder": "제외 규칙으로 이용할 정규식을 입력하세요.",
  "checker.session_replay.session_id_name.description": "세션 ID 이름은 해당 이름을 가지는 세션 ID의 고정 여부를 판단하기 위하여 사용하는 문자열입니다.",
  "checker.session_replay.session_id_name.message": "하나 이상의 문자열을 입력하세요.",
  "checker.session_replay.session_id_name.name": "세션 ID 이름",
  "checker.session_replay.session_id_name.placeholder": "세션 ID 이름에 해당하는 문자열을 입력하세요.",
  "checker.slow_http_dos.delay.description": "요청 간 지연 시간은 공격할 때 앞서 보낸 요청에 이어서 다음 요청을 전송하기까지 대기하는 시간입니다. 단위는 ms(1/1000초)입니다. 최대값은 60,000입니다. 0을 입력한 경우, 해당 옵션은 사용하지 않습니다.",
  "checker.slow_http_dos.delay.message": "0부터 60,000 사이의 값을 입력하세요.",
  "checker.slow_http_dos.delay.name": "요청 간 지연 시간",
  "checker.slow_http_dos.delay.placeholder": "요청 간 지연 시간을 ms (1/1000 초) 단위로 입력하세요.",
  "checker.slow_post_attack.contentlength.description": "요청 본문 길이는 공격할 때 서버로 전송하는 요청의 본문의 크기입니다. 최대값은 1,048,576입니다. 0을 입력한 경우, 해당 옵션은 사용하지 않습니다.",
  "checker.slow_post_attack.contentlength.message": "0부터 1,048,576 사이의 값을 입력하세요.",
  "checker.slow_post_attack.contentlength.name": "요청 본문 길이",
  "checker.slow_post_attack.contentlength.placeholder": "요청 본문의 길이를 입력하세요.",
  "checker.unlimited_password_error.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.unlimited_password_error.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.unlimited_password_error.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.unlimited_password_error.variant.injectable.extras.2.cookie": "쿠키",
  "checker.unlimited_password_error.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.unlimited_password_error.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.unlimited_password_error.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.unlimited_password_error.variant.injectable.name": "침투 공격 대상",
  "checker.unlimited_password_error.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.unlimited_password_error.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.unlimited_password_error.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.unlimited_password_error.variant.rpc.extras.1.xml": "XML",
  "checker.unlimited_password_error.variant.rpc.extras.2.json": "JSON",
  "checker.unlimited_password_error.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.unlimited_password_error.variant.rpc.extras.4.dwr": "DWR",
  "checker.unlimited_password_error.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.unlimited_password_error.variant.rpc.name": "RPC 공격 대상",
  "checker.unlimited_password_error.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.url_access_control.name": "URL 접근 제한 실패",
  "checker.url_access_control.remedy": "허용되지 않은 사용자가 URL에 직접 접근할 수 없도록 URL 경로에 대해 사용자 검증을 수행해야 합니다.",
  "checker.url_access_control.target": "URL 접근 제한 실패 체커는 인증 후에 노출되는 URL에 접근을 제한하지 않으므로 인증되지 않은 사용자가 해당 URL에 직접 접근할 수 있는 경우를 검출합니다.",
  "checker.url_access_control.vulnerability": "인증이 필요한 URL에 접근 제한이 없는 경우 공격자가 허용되지 않은 계정으로도 해당 URL에 접근할 수 있습니다. 공격자는 해당 취약점을 이용하여 권한이 필요한 동작들을 수행할 수 있으며 이를 통해 정보를 탈취하거나 비정상적인 기능을 수행하게끔 할 수 있습니다.",
  "checker.weak_password.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.weak_password.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.weak_password.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.weak_password.variant.injectable.extras.2.cookie": "쿠키",
  "checker.weak_password.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.weak_password.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.weak_password.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.weak_password.variant.injectable.name": "침투 공격 대상",
  "checker.weak_password.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.weak_password.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.weak_password.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.weak_password.variant.rpc.extras.1.xml": "XML",
  "checker.weak_password.variant.rpc.extras.2.json": "JSON",
  "checker.weak_password.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.weak_password.variant.rpc.extras.4.dwr": "DWR",
  "checker.weak_password.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.weak_password.variant.rpc.name": "RPC 공격 대상",
  "checker.weak_password.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.xitami_information_leakage.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.xitami_information_leakage.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.xitami_information_leakage.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.xitami_information_leakage.variant.injectable.extras.2.cookie": "쿠키",
  "checker.xitami_information_leakage.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.xitami_information_leakage.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.xitami_information_leakage.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.xitami_information_leakage.variant.injectable.name": "침투 공격 대상",
  "checker.xitami_information_leakage.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.xitami_information_leakage.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.xitami_information_leakage.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.xitami_information_leakage.variant.rpc.extras.1.xml": "XML",
  "checker.xitami_information_leakage.variant.rpc.extras.2.json": "JSON",
  "checker.xitami_information_leakage.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.xitami_information_leakage.variant.rpc.extras.4.dwr": "DWR",
  "checker.xitami_information_leakage.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.xitami_information_leakage.variant.rpc.name": "RPC 공격 대상",
  "checker.xitami_information_leakage.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "checker.xss.variant.injectable.description": "침투 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어디에 넣을지 여부입니다. 분석기는 수집 당시에 보냈던 요청에서 침투 대상의 값을 공격 문자열로 바꿔서 요청을 다시 보냅니다. 침투 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. 침투 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.xss.variant.injectable.extras.0.query_string": "쿼리 문자열",
  "checker.xss.variant.injectable.extras.1.form_data": "폼 데이터",
  "checker.xss.variant.injectable.extras.2.cookie": "쿠키",
  "checker.xss.variant.injectable.extras.3.http_headers": "HTTP 헤더",
  "checker.xss.variant.injectable.extras.4.url_path": "URL 경로",
  "checker.xss.variant.injectable.message": "침투 공격 대상은 선택지에 존재하는 값이어야 합니다.",
  "checker.xss.variant.injectable.name": "침투 공격 대상",
  "checker.xss.variant.injectable.placeholder": "침투 공격 대상을 선택하세요.",
  "checker.xss.variant.rpc.description": "RPC 공격 대상은 분석 과정에서 분석을 위해 공격 문자열을 어떤 형태의 데이터에 넣을지 여부입니다. 분석기는 수집 당시에 보낸던 요청이 XML, JSON, DRW, 공개 데이터 프로토콜, 구글 웹 툴킷, 'multipart/form-data' 중 하나의 데이터 형태를 가지면 공격 문자열을 삽입하여 요청을 다시 보냅니다. RPC 공격 대상이 많아지면 분석 범위가 넓어져 분석 성능이 향상되지만 분석 속도가 느려집니다. RPC 공격 대상이 적어지면 분석 속도는 향상되지만 분석 범위가 좁아져 취약점을 놓칠 수 있습니다.",
  "checker.xss.variant.rpc.extras.0.multi_part": "multipart/form-data",
  "checker.xss.variant.rpc.extras.1.xml": "XML",
  "checker.xss.variant.rpc.extras.2.json": "JSON",
  "checker.xss.variant.rpc.extras.3.gwt": "구글 웹 툴킷",
  "checker.xss.variant.rpc.extras.4.dwr": "DWR",
  "checker.xss.variant.rpc.message": "RPC 공격 대상은 선택지에 존재하는 값이어야 합니다",
  "checker.xss.variant.rpc.name": "RPC 공격 대상",
  "checker.xss.variant.rpc.placeholder": "RPC 공격 대상을 선택하세요.",
  "clarifyCalculation.description": "계산 순서를 명확하게 해야 합니다.",
  "clarifyStatement.description": "*A++ 와 같은 비효율적인 문이 있습니다. (*A)++ 를 작성하려는 의도인지 확인해야 합니다.",
  "comchk.BAD_BLOCK_COMMENT.invalid_line": "블록 주석의 시작 또는 종료 주석이 규칙과 맞지 않습니다.",
  "comchk.BAD_COMMENT.TYPE.add_line": "[{1}] 의 내용을 \"{0}\" 라인에 추가해야 합니다.",
  "comchk.BAD_COMMENT.TYPE.comment_number": "주석 내용 중 [{0}] 의 수가 다릅니다.",
  "comchk.BAD_COMMENT.TYPE.delete_line": "라인 \"{0}\" 을 삭제해야 합니다.",
  "comchk.BAD_COMMENT.TYPE.invalid_line": "형식에 맞지 않는 라인 : \"{0}\" [{1}]",
  "comchk.BAD_COMMENT.TYPE.no_comment": "주석 내용 [{0}] 이(가) 존재하지 않습니다.",
  "comchk.BAD_COMMENT.TYPE.not_exist": "타입 주석이 존재하지 않습니다. 아래 보기와 같은 주석 형식을 추가해야 합니다.",
  "comchk.BAD_COMMENT.TYPE.replace_line": "라인 \"{0}\" 을 아래 보기로 변경해야 합니다.",
  "comchk.BAD_INDENTATION.COMMENT.invalid_line": "해당 주석은 {0} 번째 열에서 시작되어야 합니다. 현재는 {1} 번째 열부터 시작하고 있습니다.",
  "comchk.BAD_STRING_IN_COMMENT.invalid_line": "주석 내에 가독성을 떨어뜨리는 문자열이 포함되어 있습니다.",
  "comchk.CLASS_COMMENT.add_line": "[{1}] 의 내용을 \"{0}\" 라인에 추가해야 합니다.",
  "comchk.CLASS_COMMENT.comment_number": "주석 내용 중 [{0}] 의 수가 다릅니다.",
  "comchk.CLASS_COMMENT.delete_line": "라인 \"{0}\" 을 삭제해야 합니다.",
  "comchk.CLASS_COMMENT.invalid_line": "형식에 맞지 않는 라인 : \"{0}\" [{1}]",
  "comchk.CLASS_COMMENT.no_comment": "주석 내용 [{0}] 이(가) 존재하지 않습니다.",
  "comchk.CLASS_COMMENT.not_exist": "클래스 주석이 존재하지 않습니다. 아래 보기와 같은 주석 형식을 추가해야 합니다.",
  "comchk.CLASS_COMMENT.replace_line": "라인 \"{0}\" 을 아래 보기로 변경해야 합니다.",
  "comchk.COMMENT_IN_CODE.invalid_line": "주석과 코드가 섞여 있어 가독성을 떨어뜨리고 있습니다.",
  "comchk.COMMON.example": "{0}",
  "comchk.EACH_COMMENT_LINE_LENGTH.invalid_line": "해당 주석의 길이와 시작 주석의 길이가 다릅니다.",
  "comchk.FIELD_COMMENT.add_line": "[{1}] 의 내용을 \"{0}\" 라인에 추가해야 합니다.",
  "comchk.FIELD_COMMENT.comment_number": "주석 내용 중 [{0}] 의 수가 다릅니다.",
  "comchk.FIELD_COMMENT.delete_line": "라인 \"{0}\" 을 삭제해야 합니다.",
  "comchk.FIELD_COMMENT.invalid_line": "형식에 맞지 않는 라인 : \"{0}\" [{1}]",
  "comchk.FIELD_COMMENT.no_comment": "주석 내용 [{0}] 이(가) 존재하지 않습니다.",
  "comchk.FIELD_COMMENT.not_exist": "변수 주석이 존재하지 않습니다. 아래 보기와 같은 주석 형식을 추가해야 합니다.",
  "comchk.FIELD_COMMENT.replace_line": "라인 \"{0}\" 을 아래 보기로 변경해야 합니다.",
  "comchk.FILE_COMMENT.add_line": "해당 라인은 {0} 길이 보다 깁니다.",
  "comchk.FILE_COMMENT.comment_number": "주석 내용 중 [{0}] 의 수가 다릅니다.",
  "comchk.FILE_COMMENT.delete_line": "라인 \"{0}\" 을 삭제해야 합니다.",
  "comchk.FILE_COMMENT.invalid_line": "형식에 맞지 않는 라인 : \"{0}\" [{1}]",
  "comchk.FILE_COMMENT.no_comment": "주석 내용 [{0}] 이(가) 존재하지 않습니다.",
  "comchk.FILE_COMMENT.not_exist": "파일 주석이 존재하지 않습니다. 아래 보기와 같은 주석 형식을 추가해야 합니다.",
  "comchk.FILE_COMMENT.replace_line": "라인 \"{0}\" 을 아래 보기로 변경해야 합니다.",
  "comchk.FUNCTION_COMMENT.add_line": "[{1}] 의 내용을 \"{0}\" 라인에 추가해야 합니다.",
  "comchk.FUNCTION_COMMENT.comment_number": "주석 내용 중 [{0}] 의 수가 다릅니다.",
  "comchk.FUNCTION_COMMENT.delete_line": "라인 \"{0}\" 을 삭제해야 합니다.",
  "comchk.FUNCTION_COMMENT.invalid_line": "형식에 맞지 않는 라인 : \"{0}\" [{1}]",
  "comchk.FUNCTION_COMMENT.no_comment": "주석 내용 [{0}] 이(가) 존재하지 않습니다.",
  "comchk.FUNCTION_COMMENT.not_exist": "함수 주석이 존재하지 않습니다. 아래 보기와 같은 주석 형식을 추가해야 합니다.",
  "comchk.FUNCTION_COMMENT.replace_line": "라인 \"{0}\" 을 아래 보기로 변경해야 합니다.",
  "comchk.GENERAL_COMMENT.add_line": "[{1}] 의 내용을 \"{0}\" 라인에 추가해야 합니다.",
  "comchk.GENERAL_COMMENT.comment_number": "주석 내용 중 [{0}] 의 수가 다릅니다.",
  "comchk.GENERAL_COMMENT.delete_line": "라인 \"{0}\" 을 삭제해야 합니다.",
  "comchk.GENERAL_COMMENT.invalid_line": "형식에 맞지 않는 라인 : \"{0}\" [{1}]",
  "comchk.GENERAL_COMMENT.no_comment": "주석 내용 [{0}] 이(가) 존재하지 않습니다.",
  "comchk.GENERAL_COMMENT.not_exist": "일반 주석이 존재하지 않습니다. 아래 보기와 같은 주석 형식을 추가해야 합니다.",
  "comchk.GENERAL_COMMENT.replace_line": "라인 \"{0}\" 을 아래 보기로 변경해야 합니다.",
  "comchk.METHOD_COMMENT.add_line": "[{1}] 의 내용을 \"{0}\" 라인에 추가해야 합니다.",
  "comchk.METHOD_COMMENT.comment_number": "주석 내용 중 [{0}] 의 수가 다릅니다.",
  "comchk.METHOD_COMMENT.delete_line": "라인 \"{0}\" 을 삭제해야 합니다.",
  "comchk.METHOD_COMMENT.invalid_line": "형식에 맞지 않는 라인 : \"{0}\" [{1}]",
  "comchk.METHOD_COMMENT.no_comment": "주석 내용 [{0}] 이(가) 존재하지 않습니다.",
  "comchk.METHOD_COMMENT.not_exist": "메소드 주석이 존재하지 않습니다. 아래 보기와 같은 주석 형식을 추가해야 합니다.",
  "comchk.METHOD_COMMENT.replace_line": "라인 \"{0}\" 을 아래 보기로 변경해야 합니다.",
  "comchk.MISSING_BLANK_LINE_BEFORE_COMMENT.invalid_line": "주석 이전 줄이 빈 줄이 아닙니다.",
  "comchk.PACKAGE_COMMENT.add_line": "[{1}] 의 내용을 \"{0}\" 라인에 추가해야 합니다.",
  "comchk.PACKAGE_COMMENT.comment_number": "주석 내용 중 [{0}] 의 수가 다릅니다.",
  "comchk.PACKAGE_COMMENT.delete_line": "라인 \"{0}\" 을 삭제해야 합니다.",
  "comchk.PACKAGE_COMMENT.invalid_line": "형식에 맞지 않는 라인 : \"{0}\" [{1}]",
  "comchk.PACKAGE_COMMENT.no_comment": "주석 내용 [{0}] 이(가) 존재하지 않습니다.",
  "comchk.PACKAGE_COMMENT.not_exist": "패키지 주석이 존재하지 않습니다. 아래 보기와 같은 주석 형식을 추가해야 합니다.",
  "comchk.PACKAGE_COMMENT.replace_line": "라인 \"{0}\" 을 아래 보기로 변경해야 합니다.",
  "comchk.PASSWORD_IN_COMMENT.invalid_line": "비밀번호가 주석내에 포함되어 있습니다.",
  "comchk.SINGLE_OR_MULTI_COMMENT.invalid_line": "한줄 주석 선택 옵션이 선택되어 해당 라인을 검출했습니다. 다중 주석 선택 시 한줄 주석을 검출합니다.",
  "comchk.SOURCECODE_IN_COMMENT.invalid_line": "주석 안에 소스 코드로 추정되는 문자열이 존재합니다.",
  "comchk.TOO_LONG_SOURCE_CODE_BEFORE_COMMENT.invalid_line": "코드의 길이가 길어 주석 사용이 어렵습니다.",
  "commaSeparatedReturn.description": "Return문 안에 comma 가 있습니다. 이는 ;으로 잘못 읽힐 수 있으므로 사용하지 않는 것이 좋습니다.",
  "common.browser.add_extensions.description": "브라우저 확장 프로그램 불러오기는 브라우저를 실행하면서 함께 불러올 브라우저 확장 프로그램의 경로를 설정합니다. 브래우저 확장 프로그램은 crx 파일이거나 디렉토리 형태여야 합니다.",
  "common.browser.add_extensions.message": "파일이 존재해야 하며, crx 확장자 파일이거나 디렉토리여야 합니다.",
  "common.browser.add_extensions.name": "브라우저 확장 프로그램 불러오기",
  "common.browser.add_extensions.placeholder": "해당 없음",
  "common.browser.alert_accept.description": "경고창 확인은 수집 및 분석 도중 경고창이 발생했을 때 확인을 누를지를 말합니다.",
  "common.browser.alert_accept.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.browser.alert_accept.name": "경고창 확인",
  "common.browser.alert_accept.placeholder": "해당 없음",
  "common.browser.block_element_threshold.description": "이벤트 차단 임계점은 동일한 URL에서 특정 HTML 요소의 이벤트를 수행할 때 반복적으로 에러가 발생하는 경우 해당 HTML 요소의 이벤트를 차단하도록 설정할 횟수입니다.",
  "common.browser.block_element_threshold.message": "1 이상 9999 이하여야 합니다.",
  "common.browser.block_element_threshold.name": "이벤트 차단 임계점",
  "common.browser.block_element_threshold.placeholder": "해당 없음",
  "common.browser.block_url_threshold.description": "URL 차단 임계점은 수집 및 분석 과정에서 특정 URL에 응답이 오지 않거나 타임아웃이 발생하는 경우 해당 URL을 차단하도록 설정할 횟수입니다. 이 값이 0이면 몇 회가 발생하든 차단하지 않습니다.",
  "common.browser.block_url_threshold.message": "0 이상 9999 이하여야 합니다.",
  "common.browser.block_url_threshold.name": "URL 차단 임계점",
  "common.browser.block_url_threshold.placeholder": "설정할 임계점 값을 입력하세요.",
  "common.browser.disable_go_url_event.description": "URL 이동 비활성화는 내부 브라우저가 URL을 이동하지 않도록 비활성화합니다. 이 값을 '예'로 설정하면 URL 이동을 비활성화하고 URL 이동 대체 클릭 (XPath) 옵션에 있는 HTML 요소들을 순차적으로 클릭합니다.",
  "common.browser.disable_go_url_event.message": "'예' 또는 '아니요'를 선택하세요.",
  "common.browser.disable_go_url_event.name": "URL 이동 비활성화",
  "common.browser.disable_go_url_event.placeholder": "해당 없음",
  "common.browser.display.description": "브라우저 표시는 URL 수집 시에 브라우저를 화면에 표시할지 여부입니다. 이 옵션을 '예'로 설정하면 내부 브라우저가 URL을 수집하는 과정을 화면에서 볼 수 있습니다. 해당 옵션을 통해 URL 수집이 정상적으로 이루어지는지 쉽게 확인할 수 있습니다.",
  "common.browser.display.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.browser.display.name": "브라우저 표시",
  "common.browser.display.placeholder": "해당 없음",
  "common.browser.display_login_directly.description": "브라우저 직접 수동 로그인은 수집 및 분석에 사용하는 내부 브라우저가 사용자에게 표시되도록 실행하여 사용자가 해당 브라우저에서 직접 로그인을 수행하고 그대로 수집 및 분석에 사용하도록 설정합니다.",
  "common.browser.display_login_directly.message": "'예' 또는 '아니요'를 선택하세요.",
  "common.browser.display_login_directly.name": "브라우저 직접 수동 로그인",
  "common.browser.display_login_directly.placeholder": "해당 없음",
  "common.browser.display_login_directly_time.description": "브라우저 직접 수동 로그인 시간 설정은 브라우저 직접 수동 로그인 옵션을 ‘예’로 설정한 경우 수집 및 분석에 사용하기 위해 사용자가 로그인 동작을 수행하도록 대기하는 시간을 의미합니다. 기본값은 120초입니다.",
  "common.browser.display_login_directly_time.message": "30 이상 600 이하여야 합니다.",
  "common.browser.display_login_directly_time.name": "브라우저 직접 수동 로그인 시간 설정",
  "common.browser.display_login_directly_time.placeholder": "설정할 시간을 입력하세요. (단위: 초)",
  "common.browser.display_login_in_server.description": "서버측 수동 로그인은 서버에 있는 브라우저를 화면에 띄워 SSO, 2차 인증 등을 수행한 후, 그 쿠키값을 엔진 내부에서 수집 및 분석에 사용하는 브라우저에 전달하기 위해 사용합니다.",
  "common.browser.display_login_in_server.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.browser.display_login_in_server.name": "서버측 수동 로그인",
  "common.browser.display_login_in_server.placeholder": "해당 없음",
  "common.browser.ecl_per_page.description": "추가 수행 이벤트 클립보드 파일은 브라우저가 각 페이지에 도달하기 위해 이벤트를 수행한 후 추가적으로 수행할 이벤트를 기록한 이벤트 클립보드 파일(.ecl)의 경로입니다. 모든 페이지마다 특정 이벤트를 수행해야 할 때, 이벤트 클립보드를 통해 기록한 파일의 경로를 입력하면 페이지에 도달한 후에 해당 파일에 있는 이벤트를 수행합니다.",
  "common.browser.ecl_per_page.message": ".ecl 파일이 있어야 합니다.",
  "common.browser.ecl_per_page.name": "추가 수행 이벤트 클립보드 파일",
  "common.browser.ecl_per_page.placeholder": "해당 없음",
  "common.browser.event_load_timeout.description": "이벤트 수행 대상 로딩 대기시간은 브라우저가 이벤트를 수행할 대상이 불러와지기를 기다리는 최대 시간입니다.",
  "common.browser.event_load_timeout.message": "0 이상 600,000 이하여야 합니다.",
  "common.browser.event_load_timeout.name": "이벤트 수행 대상 로딩 대기시간",
  "common.browser.event_load_timeout.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "common.browser.ignore_get_after_seed.description": "프로젝트 URL 접근 후 무시할 브라우저 GET 요청은 프로젝트 URL에 접근한 후에 브라우저가 GET 요청을 전송할 때 URL에 포함되는 경우 해당 요청을 전송하지 않을 문자열 목록입니다. 대소문자를 고려하지 않습니다.",
  "common.browser.ignore_get_after_seed.message": "문자열이어야 합니다.",
  "common.browser.ignore_get_after_seed.name": "프로젝트 URL 접근 후 무시할 브라우저 GET 요청",
  "common.browser.ignore_get_after_seed.placeholder": "문자열을 입력하세요. 엔터로 구분합니다.",
  "common.browser.ignore_get_handling.description": "GET 요청 무시 후 처리는 프로젝트 URL 접근 후 무시할 브라우저 GET 요청 옵션을 ‘예’로 설정한 경우 브라우저에서 GET 요청을 무시한 다음, 어떻게 처리할지를 설정합니다. 즉, '뒤로 가기'는 페이지 뒤로 가기를 수행하고, '새로고침'은 페이지 새로고침을 수행하고, '실패 페이지'는 실패 페이지를 표시하고, 'POST 변환'은 GET 요청을 POST 요청으로 변환합니다.",
  "common.browser.ignore_get_handling.extras.0.BACK": "뒤로 가기",
  "common.browser.ignore_get_handling.extras.0.back": "뒤로 가기",
  "common.browser.ignore_get_handling.extras.1.REFRESH": "새로고침",
  "common.browser.ignore_get_handling.extras.1.refresh": "새로고침",
  "common.browser.ignore_get_handling.extras.2.FAIL": "실패 페이지",
  "common.browser.ignore_get_handling.extras.2.fail": "실패 페이지",
  "common.browser.ignore_get_handling.extras.3.CHANGE_POST": "POST 변환",
  "common.browser.ignore_get_handling.extras.3.change_post": "POST 변환",
  "common.browser.ignore_get_handling.message": "뒤로 가기, 새로고침, 실패 페이지, POST 변환 중 하나여야 합니다.",
  "common.browser.ignore_get_handling.name": "GET 요청 무시 후 처리",
  "common.browser.ignore_get_handling.placeholder": "해당 없음",
  "common.browser.ignore_post_after_seed.description": "프로젝트 URL 접근 후 무시할 브라우저 POST 요청은 프로젝트 URL에 접근한 후에 브라우저가 POST 요청을 전송할 때 URL에 포함되는 경우 해당 요청을 전송하지 않을 문자열 목록입니다. 대소문자를 고려하지 않습니다.",
  "common.browser.ignore_post_after_seed.message": "문자열이어야 합니다.",
  "common.browser.ignore_post_after_seed.name": "프로젝트 URL 접근 후 무시할 브라우저 POST 요청",
  "common.browser.ignore_post_after_seed.placeholder": "문자열을 입력하세요. 엔터로 구분합니다.",
  "common.browser.initial_timeout.description": "브라우저 초기 제한시간은 브라우저가 이벤트를 수행한 후 DOM이 생성되는 걸 기다리는 시간입니다. 이 옵션값이 낮으면 URL 수집 속도는 빨라지지만 동적으로 불러오는 리소스를 놓칠 수 있습니다. 반대로 높으면, URL 수집 속도는 느려지지만 동적으로 불러오는 리소스를 놓칠 확률이 낮아져 수집 능력이 향상됩니다.",
  "common.browser.initial_timeout.message": "0 이상 10,000 이하여야 합니다.",
  "common.browser.initial_timeout.name": "브라우저 초기 응답 대기시간",
  "common.browser.initial_timeout.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "common.browser.limit_alert_handling.description": "경고창 반복 횟수는 경고창이 반복적으로 표시되는 경우 최대로 처리할 횟수를 제한합니다. 값이 비어 있으면 기본값인 3을 적용합니다.",
  "common.browser.limit_alert_handling.message": "0 이상 10 이하여야 합니다.",
  "common.browser.limit_alert_handling.name": "경고창 반복 횟수",
  "common.browser.limit_alert_handling.placeholder": "횟수를 입력하세요.",
  "common.browser.prompt_text.description": "프롬프트 입력값은 수집 및 분석 중에 프롬프트에 입력할 값을 가리킵니다.",
  "common.browser.prompt_text.message": "문자열이어야 합니다.",
  "common.browser.prompt_text.name": "프롬프트 입력값",
  "common.browser.prompt_text.placeholder": "값을 입력하세요.",
  "common.browser.replace_go_url_by_click.description": "URL 이동 대체 클릭 (XPath)는 URL 이동 비활성화 옵션을 '예'로 설정했을 때 URL 이동 대신에 수행할 클릭 이벤트의 대상 HTML 요소 목록입니다. 입력된 HTML 요소에 클릭 이벤트를 순차적으로 진행합니다.",
  "common.browser.replace_go_url_by_click.message": "XPath여야 합니다.",
  "common.browser.replace_go_url_by_click.name": "URL 이동 대체 클릭 (XPath)",
  "common.browser.replace_go_url_by_click.placeholder": "XPath를 입력하세요. 엔터로 구분합니다.",
  "common.browser.selection.description": "브라우저는 분석을 위해 내부적으로 사용할 브라우저를 말합니다. Chromium은 크롬 브라우저의 오픈소스 버전이며, PhantomJS는 화면 없이 작동하는 헤드리스 전용 브라우저 입니다. Chromium은 크롬 브라우저에서 지원하는 최신 웹 기술을 함께 지원합니다. PhantomJS는 Chromium이 작동하지 못하는 구 시스템에서 안정적으로 작동합니다.",
  "common.browser.selection.extras.0.PHANTOMJS": "PhantomJS",
  "common.browser.selection.extras.0.phantomjs": "PhantomJS",
  "common.browser.selection.extras.1.CHROMIUM": "Chromium",
  "common.browser.selection.extras.1.chromium": "Chromium",
  "common.browser.selection.message": "현재는 PhantomJS, Chromium만 지원합니다.",
  "common.browser.selection.name": "브라우저",
  "common.browser.selection.placeholder": "해당 없음",
  "common.browser.storage_clear.description": "브라우저 저장소 초기화는 페이지를 방문하기 전에 Session 저장소와 Locale 저장소를 초기화하도록 설정합니다. 이 값을 '예'로 설정하면 모든 페이지에 방문하기 전에 저장소를 초기화합니다.",
  "common.browser.storage_clear.message": "'예' 또는 '아니요'를 선택하세요.",
  "common.browser.storage_clear.name": "브라우저 저장소 초기화",
  "common.browser.storage_clear.placeholder": "해당 없음",
  "common.browser.turn_off.description": "브라우저 끄기는 내부 브라우저를 종료할지 여부입니다. 이 옵션을 '예'로 설정하면 내부 브라우저를 종료하고 HTTP 클라이언트만을 사용하여 수집합니다. 브라우저를 종료하면 브라우저를 이용한 수집 및 분석은 불가능하지만 HTTP 클라이언트만으로 수집하기 때문에 분석 속도가 빨라집니다.",
  "common.browser.turn_off.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.browser.turn_off.name": "브라우저 끄기",
  "common.browser.turn_off.placeholder": "해당 없음",
  "common.client.connect_timeout.description": "연결 제한시간은 URL 수집 과정에서 읽기, 쓰기를 위해 대상 웹 애플리케이션에 연결을 시도했지만 연결이 되지 않을 때, 연결이 되기를 기다리는 최대 시간입니다. 이 옵션값이 높으면 네트워크 환경이 좋지 않아 웹 애플리케이션 서버와 연결 상태가 좋지 않아도 URL 수집이 정상적으로 진행됩니다. 단, 대상 웹 애플리케이션 서버와 중간에 연결이 끊어지는 경우에 URL 수집 종료에 시간이 오래 걸릴 수 있습니다. 옵션값이 낮으면 URL 수집 속도는 빨라지지만 대상 웹 애플리케이션 서버와 연결 상태가 좋지 않을 때 URL 수집이 정상적으로 이루어지지 않습니다. 옵션값이 -1이면 연결이 될 때까지 계속 기다립니다. (단위: 밀리초)",
  "common.client.connect_timeout.message": "-1 이상 30,000 이하여야 합니다.",
  "common.client.connect_timeout.name": "연결 제한시간",
  "common.client.connect_timeout.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "common.client.ignore_get.description": "무시할 HTTP 클라이언트 GET 요청은 HTTP 클라이언트가 GET 요청을 전송할 때 URL에 포함되는 경우 해당 요청을 전송하지 않을 문자열 목록입니다. URL에 입력한 문자열이 포함되어 있으면 GET 요청을 보내지 않습니다. 대소문자를 고려하지 않습니다.",
  "common.client.ignore_get.message": "문자열이어야 합니다.",
  "common.client.ignore_get.name": "무시할 HTTP 클라이언트 GET 요청",
  "common.client.ignore_get.placeholder": "문자열을 입력하세요. 엔터로 구분합니다.",
  "common.client.ignore_post.description": "무시할 HTTP 클라이언트 POST 요청은 HTTP 클라이언트가 POST 요청을 전송할 때 URL에 포함되는 경우 해당 요청을 전송하지 않을 문자열 목록입니다. URL에 입력한 문자열이 포함되어 있으면 POST 요청을 보내지 않습니다. 대소문자를 고려하지 않습니다.",
  "common.client.ignore_post.message": "문자열이어야 합니다.",
  "common.client.ignore_post.name": "무시할 HTTP 클라이언트 POST 요청",
  "common.client.ignore_post.placeholder": "문자열을 입력하세요. 엔터로 구분합니다.",
  "common.client.read_timeout.description": "읽기 제한시간은 URL 수집 과정에서 대상 웹 애플리케이션 서버가 응답을 하지 않거나 네트워크 환경이 좋지 않아 응답이 늦어지는 경우 응답이 오기를 기다리는 최대 시간입니다. 이 옵션값이 높으면 네트워크 환경이 좋지 않아 응답이 늦어져도 URL 수집이 정상적으로 진행됩니다. 단, 대상 웹 애플리케이션이 응답을 하지 않거나 응답이 소실되는 경우 URL 수집이 지연될 수 있습니다. 옵션값이 낮으면 URL 수집 속도는 빨라지지만 네트워크 환경이 좋지 않아 응답이 늦어질 때 URL 수집이 정상적으로 이루어지지 않을 수 있습니다. 옵션값이 -1이면 응답이 올 때까지 계속 기다립니다. (단위: 밀리초)",
  "common.client.read_timeout.message": "-1 이상 30,000 이하여야 합니다.",
  "common.client.read_timeout.name": "읽기 제한시간",
  "common.client.read_timeout.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "common.client.write_timeout.description": "쓰기 제한시간은 URL 수집 과정에서 대상 웹 애플리케이션 서버에 요청을 보냈을 때, 이 요청을 대상 웹 애플리케이션 서버가 받지 못하거나 네트워크 환경이 좋지 않아 요청 전달이 늦어지는 경우 요청이 도달하기를 기다리는 최대 시간입니다. 이 옵션값이 높으면 네트워크 환경이 좋지 않아 요청 전달이 늦어져도 URL 수집이 정상적으로 진행됩니다. 단, 대상 웹 애플리케이션 서버에서 요청을 받지 않거나 요청이 소실되는 경우 URL 수집이 지연될 수 있습니다. 옵션값이 낮으면 URL 수집 속도는 빨라지지만 네트워크 환경이 좋지 않아 요청 전달이 느려질 때 URL 수집이 정상적으로 이루어지지 않을 수 있습니다. 옵션값을 -1 로 설정하면 요청이 도달할 때까지 계속 기다립니다. (단위: 밀리초)",
  "common.client.write_timeout.message": "-1 이상 30,000 이하여야 합니다.",
  "common.client.write_timeout.name": "쓰기 제한시간",
  "common.client.write_timeout.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "common.compare.dom_without_text.description": "이 옵션을 `예`로 설정하면 수집 및 분석에서 DOM을 비교할 때 일반 텍스트를 제외합니다.",
  "common.compare.dom_without_text.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.compare.dom_without_text.name": "텍스트 제외 후 DOM 비교",
  "common.compare.dom_without_text.placeholder": "해당 없음",
  "common.compare.dom_without_text_attributes.description": "이 옵션을 `예`로 설정하면 수집 및 분석에서 DOM을 비교할 때 태그 속성과 일반 텍스트를 제외하고 태그 이름만 사용합니다.",
  "common.compare.dom_without_text_attributes.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.compare.dom_without_text_attributes.name": "텍스트 및 태그 속성 제외 후 DOM 비교",
  "common.compare.dom_without_text_attributes.placeholder": "해당 없음",
  "common.compare.ignore_dom_attributes.description": "DOM 비교 시 무시할 속성은 URL 수집 과정에서 DOM 변화를 비교할 때 무시할 속성 이름 목록입니다. 이 옵션에 속성 이름을 입력하면 이벤트를 수행하기 전과 후의 DOM을 비교할 때 입력한 속성 값의 변화는 무시합니다. 예를 들어, 이 옵션에 'isopen'을 넣으면 수집 과정에서 메뉴를 클릭하여 하위 메뉴를 표시하는 태그의 isopen 속성값이 false에서 true로 변경되어도 이 변화를 무시하고 비교합니다.",
  "common.compare.ignore_dom_attributes.message": "문자열이어야 합니다.",
  "common.compare.ignore_dom_attributes.name": "DOM 비교 시 무시할 속성",
  "common.compare.ignore_dom_attributes.placeholder": "무시할 속성 이름을 입력하세요.",
  "common.compare.ignore_url_anchor.description": "URL 앵커(#) 무시 비교는 URL을 비교하는 과정에서 URL에 있는 앵커(#)를 무시하고 비교할지 여부입니다. 이 옵션을 '예'로 설정하면 URL 앵커만 다른 URL이 여러 개 들어와도 무시합니다. 예를 들어, 'http://localhost:8080/test#11000', 'http://localhost:8080/test#12000', 'http://localhost:8080/test#13000'이 들어와도 앵커(#)를 무시하고 'http://localhost:8080/test'로 비교하여 중복 URL을 제거합니다. 반면, '아니요'로 설정하면 URL 앵커(#)를 포함하여 URL을 비교합니다.",
  "common.compare.ignore_url_anchor.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.compare.ignore_url_anchor.name": "URL 앵커(#) 무시 비교",
  "common.compare.ignore_url_anchor.placeholder": "해당 없음",
  "common.compare.ignore_url_query_value.description": "URL 비교에서 쿼리값 제거 옵션은 URL을 수집할 때 URL의 쿼리값을 제거하고 새로운 URL과 기존 URL을 비교하도록 설정합니다. 이 옵션을 **예**로 설정하면 URL을 수집할 때 쿼리값을 지우고 비교합니다. 예를 들어, `http://test.com?p=1&q=2`와 `http://test.com?q=4&p=5`를 비교하는 경우 URL에서 쿼리값을 제거하고 쿼리를 정렬합니다. 그러면 두 URL은 모두 `http://test.com?p=&q=` 로 변경되어 같은 URL로 취급됩니다. 반면, 이 옵션을 **아니오**로 설정하면 쿼리값이 다른 URL을 별도의 URL로 취급하여 수집합니다.",
  "common.compare.ignore_url_query_value.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.compare.ignore_url_query_value.name": "URL 비교 시 쿼리값 제거",
  "common.compare.ignore_url_query_value.placeholder": "해당 없음",
  "common.connect.client_selection.description": "수집 클라이언트 선택은 수집할 때 대상 웹 애플리케이션과 연결할 클라이언트 목록입니다. Sparrow DAST는 수집할 때 대상 웹 애플리케이션과 연결하기 위해 HTTP 클라이언트와 브라우저를 사용할 수 있습니다. 이 옵션에서 HTTP 클라이언트를 선택하면 수집기가 HTTP 클라이언트로 HTTP 요청 메시지 보내 수집을 수행합니다. 이 옵션에서 브라우저를 선택하면 수집기가 Chromium을 헤드리스 모드로 실행하여 수집을 수행합니다.",
  "common.connect.client_selection.extras.0.HTTP_CLIENT": "HTTP 클라이언트",
  "common.connect.client_selection.extras.0.http_client": "HTTP 클라이언트",
  "common.connect.client_selection.extras.1.BROWSER": "브라우저",
  "common.connect.client_selection.extras.1.browser": "브라우저",
  "common.connect.client_selection.message": "HTTP 클라이언트, 브라우저 중 하나여야 합니다.",
  "common.connect.client_selection.name": "수집 클라이언트 선택",
  "common.connect.client_selection.placeholder": "해당 없음",
  "common.connect.http_version.description": "HTTP 버전은 URL 수집을 위해 HTTP 요청을 보낼 때 사용할 HTTP 버전입니다. HTTP 버전에 따라 HTTP 요청의 구성이 달라집니다. 대상 웹 애플리케이션에서 호환하는 HTTP 버전에 HTTP/1.1 이 아닌 경우, 호환하는 버전으로 변경하여 HTTP 요청을 보내야 정상적으로 URL 수집이 가능합니다.",
  "common.connect.http_version.extras.0.HTTP/1.1": "HTTP 버전 1.1",
  "common.connect.http_version.extras.0.http/1.1": "HTTP 버전1.1",
  "common.connect.http_version.extras.1.HTTP/1.0": "HTTP 버전 1.0",
  "common.connect.http_version.extras.1.http/1.0": "HTTP 버전1.0",
  "common.connect.http_version.extras.2.HTTP/0.9": "HTTP 버전 0.9",
  "common.connect.http_version.extras.2.http/0.9": "HTTP 버전0.9",
  "common.connect.http_version.message": "현재는 HTTP/0.9, HTTP/1.0, HTTP/1.1 만 지원합니다.",
  "common.connect.http_version.name": "HTTP 버전",
  "common.connect.http_version.placeholder": "해당 없음",
  "common.connect.user_agent.description": "사용자 에이전트는 HTTP 요청의 헤더에 할당할 브라우저 정보입니다.",
  "common.connect.user_agent.message": "빈 문자를 사용할 수 없습니다.",
  "common.connect.user_agent.name": "사용자 에이전트",
  "common.connect.user_agent.placeholder": "사용자 에이전트를 입력하세요.",
  "common.limit.url.length.description": "URL 길이 제한은 수집 및 분석을 제한할 URL 길이를 의미합니다. 이 값보다 긴 URL의 경우 수집 및 분석을 제한합니다. 이 값이 -1 이면 URL 길이를 제한하지 않습니다.",
  "common.limit.url.length.message": "-1 이상 50,000 이하여야 합니다.",
  "common.limit.url.length.name": "URL 길이 제한",
  "common.limit.url.length.placeholder": "제한할 길이를 입력하세요.",
  "common.metric.measure.description": "엔진 데이터 측정은 엔진 내부에서 발생하는 동작, 작동 시간 및 횟수 측정 여부를 설정합니다.",
  "common.metric.measure.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.metric.measure.name": "엔진 데이터 측정",
  "common.metric.measure.placeholder": "해당 없음",
  "common.records.login.description": "**로그인 기록 파일을 첨부하는 경우** URL 수집 및 분석 중에 이벤트 클립보드에서 기록을 시작한 URL에 도달하면 저장된 사용자의 동작을 그대로 재현하게 됩니다. 이러한 방법으로 **로그인 페이지에서 필요한 인증을 통과**할 수 있습니다.",
  "common.records.login.message": "로그인 기록 파일은 Sparrow DAST 이벤트 클립보드를 통해 기록한 .ecl 또는 Selenium IDE를 통해 기록한 .side 파일이어야 합니다.",
  "common.records.login.name": "로그인 기록 파일",
  "common.records.login.placeholder": "해당 없음",
  "common.records.logout.description": "수집 및 분석 도중 로그아웃을 수행해야 하는 경우 첨부된 **파일에 기록된 사용자의 동작을 그대로 재현**합니다.",
  "common.records.logout.message": "로그인 기록 파일은 Sparrow DAST 이벤트 클립보드를 통해 기록한 .ecl 또는 Selenium IDE를 통해 기록한 .side 파일이어야 합니다.",
  "common.records.logout.name": "로그아웃 기록 파일",
  "common.records.logout.placeholder": "해당 없음",
  "common.records.sub.login.description": "수집 및 분석 도중 서브 로그인을 수행해야 하는 경우 첨부된 **파일에 기록된 사용자의 동작을 그대로 재현**합니다.",
  "common.records.sub.login.message": "서브 로그인 기록 파일은 Sparrow DAST 이벤트 클립보드를 통해 기록한 .ecl 또는 Selenium IDE를 통해 기록한 .side 파일이어야 합니다.",
  "common.records.sub.login.name": "서브 로그인 기록 파일",
  "common.records.sub.login.placeholder": "해당 없음",
  "common.request.enable_no_cache.description": "no-cache 헤더 활성화는 수집 및 분석 과정에서 생성한 HTTP 요청에 있는 Pragma 헤더와 Cache-Control 헤더에 no-cache 값을 설정합니다.",
  "common.request.enable_no_cache.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.request.enable_no_cache.name": "no-cache 헤더 활성화",
  "common.request.enable_no_cache.placeholder": "해당 없음",
  "common.request.max_redirect.description": "최대 요청 리다이렉션 수행 개수는 요청 리다이렉션을 켰을 때, 리다이렉션을 위해 생성하는 임시 HTTP 요청 메시지의 최대 개수입니다. 특정 URL에 도달하기 위해 리다이렉션이 10번 발생하는 경우, 이 옵션의 값이 10 미만이면 해당 URL에 도달하지 못하고, 10 이상이면 도달할 수 있습니다. 이와 같이 값이 높으면 요청 리다이렉션을 계속 수행하여 URL을 수집할 가능성이 높아지지만 URL 수집 속도가 느려집니다. 반대로 값이 낮으면 요청 리다이렉션을 끝까지 수행하지 못하여 놓치는 URL이 생길 확률이 높아지지만 URL 수집 속도는 높아집니다. 최대 요청 리다이렉션 수행 개수가 0이면 요청 리다이렉션을 수행하지 않습니다.",
  "common.request.max_redirect.message": "0 이상 64 이하여야 합니다.",
  "common.request.max_redirect.name": "최대 요청 리다이렉션 수행 개수",
  "common.request.max_redirect.placeholder": "개수를 입력하세요.",
  "common.request.redirect.description": "요청 리다이렉션은 HTTP 요청을 보낸 후에 온 HTTP 응답이 다른 URL로 HTTP 요청을 보내라는 리다이렉션인 경우, 해당 리다이렉션에 따라 자동으로 임시 HTTP 요청을 생성하여 보낼지 여부입니다. 이 옵션을 켜면 리다이렉션을 위해 자동으로 생성되는 HTTP 요청에 대해서는 URL 수집을 하지 않습니다. 이로 인해 URL 수집 속도는 향상되지만 임시 HTTP 요청은 분석하지 않습니다. 반대로 이 옵션을 끄면 리다이렉션때문에 생성되는 임시 HTTP 요청에서도 URL을 수집하지만 URL 수집 속도가 느려집니다.",
  "common.request.redirect.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "common.request.redirect.name": "요청 리다이렉션",
  "common.request.redirect.placeholder": "해당 없음",
  "comparisonFunctionIsAlwaysTrueOrFalse.description": "같은 값을 비교하는 경우, 항상 true 나 false 를 계산 하기 때문에 실수일 가능성이 높습니다.",
  "confidence_score.dast.base_score": "기본 신뢰 지수입니다.",
  "confidence_score.dast.browser_restarted": "분석 중 브라우저가 재시작되었으므로 이후 검출된 결과는 확인이 필요합니다.",
  "confidence_score.dast.custom_element": "개발자가 이름을 설정할 수 있는 값이나 요소에 의해 검출되었습니다.",
  "confidence_score.dast.event_skipped_in_clipboard": "이벤트 클립보드에서 일부 이벤트를 재생하지 못했습니다.",
  "confidence_score.dast.javascript_event": "JavaScript 실행이 포함되었으므로 상태 전이를 완전히 반영하기 어렵습니다.",
  "confidence_score.dast.long_event_sequence": "검출에 관련된 이벤트가 많기 때문에 재현할 가능성이 낮습니다.",
  "confidence_score.dast.slow_network": "네트워크 속도 저하로 인해 일시적으로 검출되었을 수 있습니다.",
  "confidence_score.dast.too_many_redirect": "지나친 리다이렉트로 인해 일시적으로 검출되었을 수 있습니다.",
  "confidence_score.sast.adhoc_taint": "값의 흐름이 실제 실행과 다르게 추정되었을 수 있습니다.",
  "confidence_score.sast.base_score": "기본 신뢰 지수입니다.",
  "confidence_score.sast.contain_loop": "{0}개의 반복문을 분석하여, 실제 실행에서는 반복 횟수에 따라 분석 결과와 다른 행동을 할 수 있습니다.",
  "confidence_score.sast.many_assumption": "임의로 조건값을 가정하여 분석한 제어 흐름 분기 {0}개를 분석하여, 실제 실행에서는 각 조건에 따라 분석 결과와 다른 행동을 할 수 있습니다.",
  "confidence_score.sast.nobuild": "빌드 없이 분석되었습니다.",
  "confidence_score.sast.parse_error": "이슈에 연관된 {0} 개의 소스에서 발생한 파싱 오류로 인해 분석 결과가 부정확할 수 있습니다.",
  "confidence_score.sast.uncertain_propagation": "의미를 분석할 수 없는 함수가 호출되었습니다. 값의 흐름이 실제 실행보다 넓게 추정되었을 수 있습니다. {0}",
  "confidence_score.sca.base_score": "기본 신뢰 지수입니다.",
  "confidence_score.sca.component.match_category.snippet": "스니펫 분석으로 검출했습니다.",
  "confidence_score.sca.component.match_category.sourcecode": "소스코드 파일 매칭 분석으로 검출했습니다.",
  "confidence_score.sca.component.provider_type.user": "사용자 컴포넌트입니다.",
  "confidence_score.sca.component.repository.notfound": "검출한 컴포넌트의 정확한 저장소 정보를 유추하기 어렵습니다.",
  "confidence_score.sca.component.sourcecode.composition_count": "{0}개의 소스코드 개수로는 정확한 컴포넌트를 유추하기 어렵습니다.",
  "confidence_score.sca.component.sourcecode.composition_duplication": "{0}개의 소스코드가 같은 파일 내용으로 구성되어 있습니다.",
  "confidence_score.sca.component.version_type.none": "버전 정보가 없는 컴포넌트입니다.",
  "confidence_score.sca.component.version_type.ranged": "컴포넌트가 범위 형태의 버전 정보를 사용합니다.",
  "confidence_score.sca.component.warehouse.notfound": "데이터 웨어하우스에 조회되지 않는 컴포넌트입니다.",
  "confidence_score.sca.component.warehouse.version_notfound": "데이터 웨어하우스에 조회되지 않는 버전입니다.",
  "configchk.ALWAYS_STRICT_MODE.CONFIG.defect": "`alwaysStrict`를 비활성화 하면 취약한 메소드가 사용되거나 각종 오류들이 무시되어 소스 코드에 잠재적인 취약점이 생길 수 있습니다.",
  "configchk.ANDROID_MANIFEST_AVOID_DEBUGGABLE_ACCESS.defect": "application에서 android:debuggable 속성이 true로 설정되었습니다.",
  "configchk.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.defect": "{0}에서 android:exported 속성이 true로 설정되었습니다.",
  "configchk.BAD_QUERY_TO_CUD_OTHER_APP.XSQL.CONFIG.defect": "잘못된 방법으로 쿼리를 수행하지 말아야 합니다. 다른 애플리케이션의 테이블을 조작하는 것은 금지되었습니다.",
  "configchk.BAD_QUERY_TO_R_OTHER_APP.XSQL.CONFIG.defect": "잘못된 방법으로 쿼리를 수행하지 말아야 합니다. 다른 애플리케이션의 테이블을 조작하는 것은 금지되었습니다.",
  "configchk.DISABLE_STRUTS_INPUT_VALIDATION_FRAMEWORK.CONFIG.defect.plugin": "Struts 환경 설정 파일에 ValidatorPlugIn이 존재하지 않습니다.",
  "configchk.DISABLE_STRUTS_INPUT_VALIDATION_FRAMEWORK.CONFIG.defect.property": "ValidatorPlugIn 태그에 property 속성이 pathnames인 set-property 태그가 존재하지 않습니다.",
  "configchk.DO_NOT_USE_COMMIT.XSQL.CONFIG.defect": "SQL 구문 내에서 COMMIT을 사용했습니다.",
  "configchk.DO_NOT_USE_DECODE.XSQL.CONFIG.defect": "SQL 구문 내에서 DECODE를 사용했습니다.",
  "configchk.DO_NOT_USE_LOWERCASE.XSQL.CONFIG.defect": "SQL 구문 내에서 소문자를 사용했습니다.",
  "configchk.DO_NOT_USE_LOWERCASE.XSQL.CONFIG.defect_0": "SQL 구문 내에서 {0} 로 시작하는 소문자를 사용했습니다.",
  "configchk.DO_NOT_USE_ROLLBACK.XSQL.CONFIG.defect": "SQL 구문 내에서 ROLLBACK을 사용했습니다.",
  "configchk.DO_NOT_USE_SELECT_ASTERISK.XSQL.CONFIG.defect": "SQL 구문 내에서 SELECT *을 사용했습니다.",
  "configchk.DO_NOT_USE_SEQ_IN_ORDER_BY.XSQL.CONFIG.defect": "ORDER BY 절에서 순서값을 사용했습니다.",
  "configchk.DO_NOT_USE_WITH.SQL.CONFIG.defect": "쿼리 내에서 WITH 절을 사용하고 있습니다.",
  "configchk.DROPPED_ERROR_PAGE_J2EE.CONFIG.defect": "오류 페이지 설정 누락으로 인해 서버의 내부 정보가 노출될 수 있습니다.",
  "configchk.DUPLICATED_SECURITY_ROLE.CONFIG.defect": "중복된 보안 역할이 사용되었습니다.",
  "configchk.DUPLICATED_SERVLET_MAPPING.CONFIG.defect": "중복된 서블릿 매핑이 정의되었습니다.",
  "configchk.EMPTY_PASSWORD.CONFIG.defect": "빈 암호를 사용했습니다.",
  "configchk.EXCESSIVE_SERVLET_MAPPING.CONFIG.defect": "이미 매핑된 Servlet 입니다.",
  "configchk.EXCESSIVE_SESSION_TIMEOUT.CONFIG.defect": "세션 타임아웃을 지나치게 길게 설정했습니다.",
  "configchk.EXPLICIT_NULL_TYPE.CONFIG.defect": "`strictNullChecks`를 비활성화 하면 `null`과 `undefined` 값이 의도치 않게 사용되어 취약점이 생길 수 있습니다.",
  "configchk.FORBIDDEN.DIRECT_JSP_ACCESS.CONFIG.defect": "모든 사용자가 해당 웹 리소스에 접근하도록 설정되었습니다.",
  "configchk.HARD_CODED_PASSWORD.CONFIG.defect": "{0} key에서 패스워드 {1} 가 하드코딩되었습니다.",
  "configchk.IMPLICIT_ANY_TYPE.CONFIG.defect": "`noImplicitAny`를 비활성화 하면 암묵적으로 `any`로 유추되는 모든 변수에 대해 오류가 발생하지 않아 취약점이 생길 수 있습니다.",
  "configchk.IMPROPER_CARGO_SETTING.CONFIG.defect.debug": "debug-assertions를 비활성화하면 디버그 단언문이 무시되어 버그를 찾기 어려워집니다.",
  "configchk.IMPROPER_CARGO_SETTING.CONFIG.defect.overflow": "overflow-checks를 비활성화하면 정수 오버플로우가 발생해도 감지되지 않습니다.",
  "configchk.IMPROPER_DEBUG_LEVEL.CONFIG.defect": "너무 과도한 수준의 디버그 옵션이 설정되었습니다.",
  "configchk.INSERT_WITHOUT_COLUMN.XSQL.CONFIG.defect": "INSERT 절에서 컬럼명이 누락되었습니다.",
  "configchk.INSUFFICIENT_SESSION_ID.CONFIG.defect": "세션 ID 길이가 너무 짧게 설정되었습니다.",
  "configchk.INVALID_COLUMN_COMMENT.XSQL.CONFIG.defect": "컬럼 주석에서 단일 라인 주석(--) 를 사용했습니다.",
  "configchk.INVALID_SERVLET.CONFIG.defect": "잘못 설정된 서블렛이 발견되었습니다.",
  "configchk.MISSING_FILTER_DEFINITION.CONFIG.defect": "존재하지 않는 필터 매핑이 발견되었습니다.",
  "configchk.MISSING_TABLE_OWNER.XSQL.CONFIG.defect": "소유자 이름이 누락된 테이블 이름을 사용했습니다.",
  "configchk.STRICT_MODE.CONFIG.defect": "Strict 모드를 비활성화하면 취약한 메소드가 사용되거나 각종 오류들이 무시되어 소스 코드에 잠재적인 취약점이 생길 수 있습니다.",
  "configchk.STRUTS.DUPLICATE_VALIDATION_FORM.CONFIG.defect": "중복된 Struts 검증 양식의 이름이 존재합니다.",
  "configchk.STRUTS_VALIDATOR_TURNED_OFF.CONFIG.defect": "유효성 검사가 비활성화되어 사용자 입력에 대한 검증이 이루어지지 않습니다.",
  "constStatement.description": "상수로 시작하는 문이 있습니다. 이 경우 쓰지 않는 코드일 가능성이 있습니다.",
  "cppcheck.ArgumentSize.defect": "인자의 크기가 함수가 요구하는 것보다 작습니다.",
  "cppcheck.ArrayIndexOutOfBounds.defect": "배열 범위를 벗어난 곳에 접근합니다.",
  "cppcheck.ArrayIndexOutOfBoundsCond.defect": "배열을 접근하는 인덱스가 범위를 벗어납니다.",
  "cppcheck.ArrayIndexThenCheck.defect": "인덱스가 크기를 검사하기 전에 사용됩니다.",
  "cppcheck.AssertWithSideEffect.defect": "Assert문 안에서 함수를 호출합니다",
  "cppcheck.AssignBoolToFloat.defect": "실수형에 부울 자료형을 할당합니다",
  "cppcheck.AssignBoolToPointer.defect": "포인터에 부울 자료형을 할당합니다",
  "cppcheck.AssignIfError.defect": "비교문과 할당문이 잘못 사용되고 있습니다.",
  "cppcheck.AssignmentAddressToInteger.defect": "정수형 변수에 포인터를 할당했습니다",
  "cppcheck.AssignmentInAssert.defect": "assert문 안에서 변수가 할당됩니다",
  "cppcheck.AssignmentIntegerToAddress.defect": "포인터에 정수형을 할당했습니다.",
  "cppcheck.AutoVariables.defect": "지역 변수의 주소가 함수의 파라미터에 할당됩니다.",
  "cppcheck.AutoVariablesAssignGlobalPointer.defect": "지역 변수로 선언된 배열의 주소가 전역 변수 포인터에 할당됩니다.",
  "cppcheck.AutovarInvalidDeallocation.defect": "Auto 변수의 할당 해제는 정의되지 않은 행동을 야기합니다.",
  "cppcheck.BadBitmaskCheck.defect": "연산자 '|'는 하나의 피연산자라도 0이 아닌 경우 항상 참입니다. '&'을 사용하려는 의도인지 확인해야 합니다.",
  "cppcheck.BitwiseOnBoolean.defect": "부울 자료형 변수가 비트 단위 연산자에 사용됩니다.",
  "cppcheck.BoostForeachError.defect": "BOOST_FOREACH 내부에서 컨테이너 내부를 변형하는 것은 정의되지 않은 행동입니다.",
  "cppcheck.BufferAccessOutOfBounds.defect": "버퍼의 범위를 벗어났습니다.",
  "cppcheck.BufferNotZeroTerminated.defect": "strncpy() 호출 뒤에 버퍼가 null로 종료되지 않습니다.",
  "cppcheck.CastAddressToIntegerAtReturn.defect": "반환 형식이 정수형인 함수에서 포인터를 반환합니다.",
  "cppcheck.CastIntegerToAddressAtReturn.defect": "반환 형식이 포인터인 함수에서 정수형을 반환합니다.",
  "cppcheck.CatchExceptionByValue.defect": "예외가 값으로 처리됩니다.",
  "cppcheck.ClarifyCondition.defect": "할당문과 비교문이 혼동됩니다.",
  "cppcheck.CompareBoolExpressionWithInt.defect": "부울 자료형 변수가 0 또는 1이 아닌 다른 정수형 값과 비교됩니다.",
  "cppcheck.ComparisonError.defect": "항상 거짓인 수식입니다.",
  "cppcheck.ComparisonOfBoolWithBoolError.defect": "부울 타입인 변수를 관계 연산자로 비교합니다",
  "cppcheck.ComparisonOfFuncReturningBoolError.defect": "부울 값을 반환하는 함수를 관계 연산자로 비교합니다",
  "cppcheck.ComparisonOfTwoFuncsReturningBoolError.defect": "부울 값을 반환하는 함수들을 관계 연산자로 비교합니다",
  "cppcheck.CopyCtorAndEqOperator.defect": "클래스가 복사 연산자, 복사 생성자 둘 중에 하나만 있습니다.",
  "cppcheck.CopyCtorPointerCopying.defect": "포인터가 복사 생성자에서 새로운 메모리를 할당받는 대신 복사됩니다.",
  "cppcheck.CoutCerrMisusage.defect": "출력 스트림을 잘못 사용했습니다.",
  "cppcheck.DuplInheritedMember.defect": "부모 클래스에서 정의된 변수 이름과 충돌합니다.",
  "cppcheck.ExceptDeallocThrow.defect": "유효하지 않은 상태에서 예외 처리로 흐름이 변경됩니다.",
  "cppcheck.ExceptRethrowCopy.defect": "예외의 원본이 아닌 복사본이 다시 throw합니다.",
  "cppcheck.ExceptThrowInDestructor.defect": "소멸자에서 예외 처리로 흐름을 변경합니다.",
  "cppcheck.FunctionConst.defect": "기술적으로 이 멤버 함수는 const로 만들 수 있습니다.",
  "cppcheck.FunctionStatic.defect": "기술적으로 이 멤버 함수는 static로 만들 수 있습니다.",
  "cppcheck.IOWithoutPositioning.defect": "IO 작업들 사이에는 positioning 작업이 필요합니다.",
  "cppcheck.IdenticalConditionAfterEarlyExit.defect": "동일한 조건문이 존재합니다. 첫번째 조건문에 함수가 종료되어 두번 째 조건문은 사용되지 않는 코드입니다.",
  "cppcheck.IgnoredReturnValue.defect": "함수의 반환값이 사용되지 않습니다.",
  "cppcheck.IncorrectLogicOperator.defect": "논리합이 항상 참을 반환합니다.",
  "cppcheck.Incrementboolean.defect": "부울 자료형을 ++ 연산자를 이용하여 증가시킵니다.",
  "cppcheck.InitializerList.defect": "멤버 변수가 초기화 목록에서 잘못된 위치에 있습니다.",
  "cppcheck.InsecureCmdLineArgs.defect": "커맨드 라인 인자가 너무 긴 경우 버퍼 오버런이 발생할 수 있습니다.",
  "cppcheck.InvalidFunctionArg.defect": "함수의 n번째 인자가 유효하지 않습니다.",
  "cppcheck.InvalidFunctionArgBool.defect": "함수의 n번째 인자가 유효하지 않습니다.",
  "cppcheck.InvalidTestForOverflow.defect": "오버플로우는 정의되지 않은 행동입니다. 오버플로우를 이용한 검사는 유효하지 않습니다.",
  "cppcheck.KnownConditionTrueFalse.defect": "조건문의 결과가 정해져 있습니다.",
  "cppcheck.MallocOnClassError.defect": "string을 포함하는 클래스의 인스턴스를 malloc()으로 할당합니다.",
  "cppcheck.MallocOnClassWarning.defect": "생성자가 있는 클래스의 인스턴스를 malloc()으로 할당합니다.",
  "cppcheck.MemsetClass.defect": "생성자 또는 소멸자를 포함하는 클래스에 memfunc을 사용했습니다.",
  "cppcheck.MemsetClassFloat.defect": "실수형을 포함하는 클래스에 memset()을 사용했습니다.",
  "cppcheck.MemsetClassReference.defect": "레퍼런스를 포함하는 클래스에 memfunc을 사용했습니다.",
  "cppcheck.MemsetFloat.defect": "memset의 두 번째 파라미터가 실수형입니다.",
  "cppcheck.MemsetValueOutOfRange.defect": "memset()의 두번째 인자가 unsigned char와 호환되지 않습니다.",
  "cppcheck.MemsetZeroBytes.defect": "0바이트를 채우기 위해 memset 호출됩니다.",
  "cppcheck.MismatchingBitAnd.defect": "비트마스크를 잘못 사용했습니다. 결과는 항상 0입니다.",
  "cppcheck.ModuloAlwaysTrueFalse.defect": "모듈러 연산을 이용한 비교가 항상 정해져있습니다.",
  "cppcheck.MultiCondition.defect": "else if문이 항상 거짓입니다. 이전 if 조건과 같습니다.",
  "cppcheck.NegativeArraySize.defect": "배열의 크기를 음수로 선언하는 것은 정의되지 않은 행동입니다.",
  "cppcheck.NegativeIndex.defect": "음수 인덱스는 범위를 벗어납니다.",
  "cppcheck.NegativeMemoryAllocationSize.defect": "메모리 할당 크기가 음수입니다.",
  "cppcheck.NoConstructor.defect": "클래스가 생성자를 포함하지 않습니다.",
  "cppcheck.NoCopyConstructor.defect": "클래스가 포인터를 포함하는 경우에는 복사 연산자를 지정하는 것이 권장됩니다.",
  "cppcheck.NoExplicitConstructor.defect": "클래스가 생성자를 포함하지만 명시적으로 정의되어 있지 않습니다.",
  "cppcheck.OperatorEq.defect": "'class::operator='는 클래스의 레퍼런스를 반환해야 합니다.",
  "cppcheck.OperatorEqMissingReturnStatement.defect": "void 함수가 아닌 함수에서 반환하지 않는 것은 정의되지 않은 행동입니다.",
  "cppcheck.OperatorEqRetRefThis.defect": "'operator='는 반드시 'this' 인스턴스의 레퍼런스를 반환해야 합니다.",
  "cppcheck.OperatorEqShouldBeLeftUnimplemented.defect": "'operator='는 'this' 인스턴스의 레퍼런스를 반환하거나 private으로 선언되어 구현되지 않은 상태로 있어야 합니다.",
  "cppcheck.OperatorEqToSelf.defect": "'operator='는 스스로 할당하지 말아야 합니다.",
  "cppcheck.OperatorEqVarError.defect": "멤버 변수가 복사 연산자에서 초기화되지 않습니다.",
  "cppcheck.OppositeInnerCondition.defect": "안쪽의 if문의 조건이 반대입니다.",
  "cppcheck.OutOfBounds.defect": "인덱스가 범위를 벗어납니다.",
  "cppcheck.PointerAdditionResultNotNull.defect": "오버플로우를 이용한 포인터 연산은 정의되지 않은 행동입니다.",
  "cppcheck.PointerArithBool.defect": "포인터 연산의 결과가 부울 자료형으로 변환됩니다.",
  "cppcheck.PointerOutOfBounds.defect": "포인터 연산이 범위를 벗어납니다.",
  "cppcheck.PossibleBufferAccessOutOfBounds.defect": "인덱스가 크기를 검사하기 전에 사용됩니다.",
  "cppcheck.PurgedConfiguration.defect": "이미 검출된 설정입니다",
  "cppcheck.RedundantCondition.defect": "잉여 조건이 있습니다.",
  "cppcheck.ReturnAddressOfAutoVariable.defect": "Auto로 선언된 변수의 주소가 함수에서 반환됩니다.",
  "cppcheck.ReturnAddressOfFunctionParameter.defect": "함수 파라미터의 주소가 반환됩니다.",
  "cppcheck.ReturnLocalVariable.defect": "지역 변수로 선언된 배열의 주소가 함수에서 반환됩니다.",
  "cppcheck.ReturnReference.defect": "지역 변수로 선언된 배열의 주소가 함수에서 반환됩니다.",
  "cppcheck.SelfInitialization.defect": "멤버 변수가 자신의 값으로 초기화합니다.",
  "cppcheck.SizeArgumentAsChar.defect": "크기 인자가 char 타입의 상수로 주어집니다.",
  "cppcheck.StlMissingComparison.defect": "루프 내 반복자 증가 후에 값 체크를 하지 않았습니다.",
  "cppcheck.StrncatUsage.defect": "strncat이 위험하게 사용됩니다.",
  "cppcheck.TerminateStrncpy.defect": "strncpy() 호출 뒤에 버퍼가 null로 종료되지 않을 수 있습니다.",
  "cppcheck.ThisSubtraction.defect": "This 포인터에 빼기 연산자가 사용됩니다.",
  "cppcheck.ThrowInNoexceptFunction.defect": "예외를 발생하지 않는다고 명시한 함수에서 예외를 발생합니다.",
  "cppcheck.Toomanyconfigs.defect": "#ifdef를 너무 많이 사용했습니다.",
  "cppcheck.UnhandledExceptionSpecification.defect": "함수가 호출될 때 예외를 처리하는 코드가 없습니다.",
  "cppcheck.UninitMemberVar.defect": "멤버 변수가 생성자에서 초기화되지 않습니다.",
  "cppcheck.UnpreciseMathCall.defect": "해당 함수는 매우 크거나 작은 값에서 정확하지 않은 값을 반환합니다.",
  "cppcheck.UnsafeClassDivZero.defect": "클래스의 공개 인터페이스가 안전하지 않습니다. 파라미터에 0이 들어가면 'Division by zero' 오류가 발생할 수 있습니다.",
  "cppcheck.UnusedPrivateFunction.defect": "사용되지 않는 private 함수가 있습니다.",
  "cppcheck.UseInitializationList.defect": "변수가 생성자 내부에서 초기화됩니다.",
  "cppcheck.UselessAssignmentArg.defect": "함수의 파라미터에 값을 넣는 것은 함수 밖에 영향을 미치지 않습니다",
  "cppcheck.UselessAssignmentPtrArg.defect": "함수의 파라미터에 값을 넣는 것은 함수 밖에 영향을 미치지 않습니다",
  "cppcheck.VirtualDestructor.defect": "상속한 부모 클래스에 가상 소멸자가 없습니다.",
  "cppcheck.Wrongmathcall.defect": "수학 함수에 해당 값을 넘겨주는 것은 의도하지 않은 기본 값을 반환할 수 있습니다.",
  "cppcheck.accessForwarded.defect": "forward 함수에 인자로 사용된 변수에 접근합니다.",
  "cppcheck.accessMoved.defect": "move함수에 사용된 변수에 접근합니다.",
  "cppcheck.arithOperationsOnVoidPointer.defect": "void 포인터에 산술 연산을 하는 것은 의도치 않은 동작을 할 수 있습니다.",
  "cppcheck.charBitOp.defect": "char 변수와 비트 연산을 합니다.",
  "cppcheck.charLiteralWithCharPtrCompare.defect": "char 문자를 포인터와 비교합니다.",
  "cppcheck.checkCastIntToCharAndBack.defect": "char 타입과 EOF를 비교합니다.",
  "cppcheck.clarifyCalculation.defect": "계산 순서를 명확하게 해야합니다.",
  "cppcheck.clarifyStatement.defect": "*A++ 와 같은 비효율적인 문이 있습니다.",
  "cppcheck.commaSeparatedReturn.defect": "Return문 안에 comma 가 있습니다.",
  "cppcheck.comparisonFunctionIsAlwaysTrueOrFalse.defect": "같은 값을 비교합니다.",
  "cppcheck.constStatement.defect": "상수로 시작하는 문이 있습니다.",
  "cppcheck.cstyleCast.defect": "C++용 타입 변환을 사용해야 합니다.",
  "cppcheck.deadpointer.defect": "포인터의 사용이 끝났습니다.",
  "cppcheck.deallocDealloc.defetct": "해제한 포인터를 다시 해제합니다.",
  "cppcheck.deallocret.defect": "해제된 메모리를 리턴 혹은 역참조 합니다.",
  "cppcheck.deallocuse.defect": "해제된 메모리를 접근합니다.",
  "cppcheck.derefInvalidIterator.defect": "반복자에 접근하기 전에 유효성 검사를 해야합니다.",
  "cppcheck.doubleFree.defect": "메모리가 두번 해제 되었습니다.",
  "cppcheck.duplicateBranch.defect": "조건문 안의 내용이 다른 조건문과 일치합니다.",
  "cppcheck.duplicateBreak.defect": "연속적으로 나오는 return, break, continue, goto, throw 문은 불필요합니다.",
  "cppcheck.duplicateExpression.defect": "논리 연산의 양쪽에 같은 식이 있습니다.",
  "cppcheck.duplicateExpressionTernary.defect": "삼항연산자의 양쪽 식이 같습니다.",
  "cppcheck.eraseDereference.defect": "무효화된 반복자가 사용됩니다.",
  "cppcheck.fflushOnInputStream.defect": "input stream에 대해 fflush 함수를 호출했습니다.",
  "cppcheck.floatConversionOverflow.defect": "큰값의 float 수를 정수로 바꾸는 것은 오버플로우가 일어날 수 있습니다.",
  "cppcheck.funcArgNamesDifferent.defect": "함수 정의와 선언의 인자 이름이 다릅니다.",
  "cppcheck.funcArgOrderDifferent.defect": "함수 정의와 선언의 인자순서가 다릅니다.",
  "cppcheck.incompleteArrayFill.defect": "배열이 불완전하게 채워집니다.",
  "cppcheck.incorrectStringBooleanError.defect": "문자열의 boolean 값은 항상 참입니다.",
  "cppcheck.incorrectStringCompare.defect": "substr 의 길이와 비교하는 스트링이 맞지 않습니다.",
  "cppcheck.integerOverflow.defect": "정수 overflow 가 발생합니다.",
  "cppcheck.invalidIterator1.defect": "반복자가 무효화 됩니다.",
  "cppcheck.invalidIterator2.defect": "push_back, push_front, insert 후에는 반복자가 무효화 됩니다.",
  "cppcheck.invalidLengthModifierError.defect": "포맷 스트링의 'I' 는 단독으로 쓰일 수 없습니다.",
  "cppcheck.invalidPointer.defect": "push_back 호출 뒤에는 가리키고 있던 포인터들은 무효화 됩니다.",
  "cppcheck.invalidPointerCast.defect": "포인터 끼리의 캐스팅은 호환성에 문제가 생길 수 있습니다.",
  "cppcheck.invalidPrintfArgType_float.defect": "포맷 스트링의 %f는 double 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidPrintfArgType_n.defect": "포맷 스트링의 %n은 int* 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidPrintfArgType_p.defect": "포맷 스트링의 %p는 포인터 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidPrintfArgType_s.defect": "포맷 스트링의 %s는 char* 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidPrintfArgType_sint.defect": "포맷 스트링의 %i는 int 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidPrintfArgType_uint.defect": "포맷 스트링의 %u는 unsigned int 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidScanfArgType_float.defect": "포맷 스트링의 %f는 float* 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidScanfArgType_int.defect": "포맷 스트링의 %d는 int* 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidScanfArgType_s.defect": "포맷 스트링의 %s는 char* 타입을 인자로 받아야 합니다.",
  "cppcheck.invalidScanfFormatWidth.defect": "포맷 스트링내의 길이는 버퍼 크기보다 작아야 합니다.",
  "cppcheck.invalidscanf.defect": "scanf() 함수 내에 길이 제한을 걸지 않았습니다.",
  "cppcheck.iterators.defect": "다른 컨테이너에 같은 반복자를 사용합니다.",
  "cppcheck.leakNoVarFunctionCall.defect": "함수 내에서 할당된 메모리를 해제 하지 않습니다.",
  "cppcheck.leakReturnValNotUsed.defect": "할당 함수의 리턴값이 저장되지 않습니다.",
  "cppcheck.leakUnsafeArgAlloc.defect": "함수 인자내에 다른 함수에서 예외가 발생할경우 메모리 누수가 발생할 수 있습니다.",
  "cppcheck.literalWithCharPtrCompare.defect": "문자열을 변수와 바로 비교합니다.",
  "cppcheck.memleak.defect": "메모리 누수가 있습니다.",
  "cppcheck.memleakOnRealloc.defect": "realloc 이 실패 했을 때 기존 할당된 메모리의 누수가 일어날 수 있습니다.",
  "cppcheck.mismatchAllocDealloc.defect": "알맞은 메모리 해제를 사용해야 합니다.",
  "cppcheck.mismatchSize.defect": "할당된 메모리의 크기가 타입의 크기의 배수가 아닙니다.",
  "cppcheck.mismatchingContainers.defect": "다른 컨테이너의 반복자들이 같이 사용됩니다.",
  "cppcheck.missingInclude.defect": "Include 파일을 찾을 수 없습니다.",
  "cppcheck.multiplySizeof.defect": "sizeof()값을 곱해서 다시 sizeof()에 넣었습니다.",
  "cppcheck.nanInArithmeticExpression.defect": "Inf/NaN 을 연산에 사용했습니다.",
  "cppcheck.nullPointer.defect": "널 포인터 역참조가 있습니다.",
  "cppcheck.nullPointerArithmetic.defect": "널 포인터로 수식 계산을 합니다.",
  "cppcheck.nullPointerDefaultArg.defect": "인자의 기본값이 사용될 경우 널포인터 역참조가 발생할 수 있습니다.",
  "cppcheck.nullPointerRedundantCheck.defect": "널 체크가 중복 되었거나, 널포인터 역참조 가능성이 있습니다.",
  "cppcheck.overlappingStrcmp.defect": "조건식이 겹치는 부분이 있습니다.",
  "cppcheck.passedByValue.defect": "함수 인자는 레퍼런스로 넘기는 것을 추천합니다.",
  "cppcheck.pointerLessThanZero.defect": "포인터 값은 음수가 될수 없습니다.",
  "cppcheck.pointerPositive.defect": "포인터는 음수가 될 수 없습니다.",
  "cppcheck.pointerSize.defect": "포인터 변수가 그대로 sizeof 에 사용됩니다.",
  "cppcheck.postfixOperator.defect": "prefix ++/-- 연산을 사용하는것이 효율적입니다.",
  "cppcheck.publicAllocationError.defect": "포인터에 할당하기 전에 해제 하지 않으면 메모리 누수가 발생 할 수 있습니다.",
  "cppcheck.raceAfterInterlockedDecrement.defect": "InterlockedDecrement() 함수의 리턴값을 이용해야 합니다.",
  "cppcheck.readWriteOnlyFile.defect": "쓰기 전용으로 연 파일을 읽습니다.",
  "cppcheck.reademptycontainer.defect": "빈 STL 컨테이너를 읽습니다.",
  "cppcheck.redundantAssignInSwitch.defect": "switch 문에서 이전 값이 사용되기 전에 다시 대입 되었습니다.",
  "cppcheck.redundantAssignment.defect": "변수의 이전 값이 사용되기 전에 다른 값이 대입 되었습니다.",
  "cppcheck.redundantCopy.defect": "이전 버퍼의 내용이 사용되기 전에 다시 쓰였습니다.",
  "cppcheck.redundantCopyInSwitch.defect": "버퍼의 이전값이 사용되기 전에 다시 쓰였습니다.",
  "cppcheck.redundantCopyLocalConst.defect": "const reference 타입을 쓰면 불필요한 데이터 복사를 막을수 있습니다.",
  "cppcheck.redundantIfRemove.defect": "STL 컨테이너안의 원소를 제거 할 때 불필요한 체크가 있습니다.",
  "cppcheck.redundantPointerOp.defect": "의미 없는 포인터 연산을 하고 있습니다.",
  "cppcheck.resourceLeak.defect": "리소스 누수가 발생합니다.",
  "cppcheck.returnTempReference.defect": "임시 오브젝트의 레퍼런스가 반환됩니다.",
  "cppcheck.seekOnAppendedFile.defect": "append 모드로 연 파일은 repositioning 되지 않습니다.",
  "cppcheck.selfAssignment.defect": "자기자신을 대입하는 문이 있습니다.",
  "cppcheck.shiftNegative.defect": "음수 비트만큼의 쉬프트 연산은 의도하지 않은 동작을 할 수 있습니다.",
  "cppcheck.shiftNegativeLHS.defect": "음수 값에 비트쉬프트 연산을 했습니다.",
  "cppcheck.shiftTooManyBits.defect": "사이즈보다 큰 비트를 쉬프트 연산 하는것을 의도치 않은 동작을 할 수 있습니다.",
  "cppcheck.shiftTooManyBitsSigned.defect": "부호 있는 값에 너무 큰 값을 비트 쉬프트 연산에 사용합니다.",
  "cppcheck.signConversion.defect": "sign conversion 이 일어납니다.",
  "cppcheck.signedCharArrayIndex.defect": "배열의 인덱스로 char 타입을 사용했습니다.",
  "cppcheck.sizeofCalculation.defect": "sizeof 안에 계산식이 있습니다.",
  "cppcheck.sizeofDereferencedVoidPointer.defect": "sizeof(void) 는 ISO C 표준이 아닙니다.",
  "cppcheck.sizeofDivisionMemfunc.defect": "메모리 함수 안에서 sizeof 값으로 나누기를 합니다.",
  "cppcheck.sizeofFunctionCall.defect": "sizeof 안에 함수 호출이 있습니다.",
  "cppcheck.sizeofVoid.defect": "sizeof(void) 는 ISO C 표준이 아닙니다.",
  "cppcheck.sizeofsizeof.defect": "sizeof 를 중첩해서 호출합니다.",
  "cppcheck.sizeofwithnumericparameter.defect": "sizeof 함수의 인자로 상수값이 들어갑니다.",
  "cppcheck.sizeofwithsilentarraypointer.defect": "함수의 인자로 들어온 배열의 sizeof 값은 포인터의 크기입니다.",
  "cppcheck.sprintfOverlappingData.defect": "sprintf 계열 함수를 사용 할때 오버래핑이 일어납니다.",
  "cppcheck.staticStringCompare.defect": "불필요한 문자열 비교입니다.",
  "cppcheck.stlBoundaries.defect": "반복자에 <, > 연산자를 사용합니다.",
  "cppcheck.stlIfFind.defect": "find() 함수의 결과값을 정확히 체크해야 합니다.",
  "cppcheck.stlOutOfBounds.defect": "크기 만큼의 버퍼 접근은 범위를 벗어납니다.",
  "cppcheck.stlSize.defect": "size 함수로 비었는지 검사합니다.",
  "cppcheck.stlcstr.defect": "c_str 함수의 리턴 값은 후에 유효하지 않을 수 있습니다.",
  "cppcheck.stlcstrParam.defect": "string 타입을 인자로 받는 함수에 c_str() 의 결과를 넣는 것은 비효율적입니다.",
  "cppcheck.stlcstrReturn.defect": "c_str 함수의 결과를 바로 리턴값으로 사용하는 것은 비효율 적입니다.",
  "cppcheck.strPlusChar.defect": "문자열 값에 char 값을 더합니다.",
  "cppcheck.stringCompare.defect": "같은 문자열 변수를 비교합니다.",
  "cppcheck.stringLiteralWrite.defect": "문자열 을 직접 바꾸는 것은 의도치 않은 동작을 할 수 있습니다.",
  "cppcheck.suspiciousCase.defect": "case 안의 논리 연산이 있습니다.",
  "cppcheck.suspiciousEqualityComparison.defect": "조건문에 의심스러운 대입연산이 있습니다.",
  "cppcheck.suspiciousSemicolon.defect": "세미콜론의 사용이 의심됩니다.",
  "cppcheck.truncLongCastAssignment.defect": "long 값을 int 에 대입합니다.",
  "cppcheck.truncLongCastReturn.defect": "int 값이 long 으로 리턴됩니다.",
  "cppcheck.unassignedVariable.defect": "변수에 값이 대입 되지 않았습니다.",
  "cppcheck.uninitStructMember.defect": "구조체 멤버가 초기화되지 않았습니다.",
  "cppcheck.uninitdata.defect": "메모리가 할당되었지만 초기화되지 않았습니다.",
  "cppcheck.uninitstring.defect": "String 을 초기화 하지 않고 strncpy 와 같은 함수에 사용합니다.",
  "cppcheck.uninitvar.defect": "변수가 초기화 되지 않았습니다.",
  "cppcheck.unknownEvaluationOrder.defect": "계산 순서에 따라 의도하지 않은 작동을 할 수 있습니다.",
  "cppcheck.unknownSignCharArrayIndex.defect": "배열의 인덱스로 char 타입을 사용했습니다.",
  "cppcheck.unreachableCode.defect": "return, break, continue, goto, throw 문 뒤에 있는 코드는 실행되지 않습니다.",
  "cppcheck.unsafeClassCanLeak.defect": "이 필드는 메모리 누수 가능성이 있습니다.",
  "cppcheck.unsignedLessThanZero.defect": "부호없는 변수를 0보다 작은지 비교합니다.",
  "cppcheck.unsignedPositive.defect": "부호 없는 변수를 0보다 크거나 같은지 비교합니다.",
  "cppcheck.unusedFunction.defect": "사용되지 않는 함수입니다.",
  "cppcheck.unusedLabel.defect": "사용되지 않는 레이블입니다.",
  "cppcheck.unusedLabelSwitch.defect": "사용되지 않는 레이블입니다.",
  "cppcheck.unusedScopedObject.defect": "더이상 사용되지 않는 객체 입니다.",
  "cppcheck.unusedStructMember.defect": "구조체 멤버가 사용되지 않았습니다.",
  "cppcheck.unusedVariable.defect": "사용되지 않는 변수입니다.",
  "cppcheck.useAutoPointerArray.defect": "new[] 로 만든 포인터에 auto_ptr을 사용하면 안됩니다.",
  "cppcheck.useAutoPointerContainer.defect": "STL 컨테이너 안에 auto_ptr, unique_ptr 포인터를 저장합니다.",
  "cppcheck.useAutoPointerCopy.defect": "auto_ptr 값이 카피 될 경우, 원본 포인터는 기능을 할 수 없습니다.",
  "cppcheck.useAutoPointerMalloc.defect": "malloc으로 생성된 포인터를 auto_ptr에 사용하면 안됩니다.",
  "cppcheck.useClosedFile.defect": "열려 있지 않은 파일을 사용합니다.",
  "cppcheck.uselessCallsCompare.defect": "str.find(str) 은 항상 0을 리턴합니다.",
  "cppcheck.uselessCallsEmpty.defect": "의미없는 empty 함수의 호출입니다.",
  "cppcheck.uselessCallsRemove.defect": "std::remove 의 리턴값이 무시됩니다.",
  "cppcheck.uselessCallsSubstr.defect": "substr만 호출합니다.",
  "cppcheck.uselessCallsSwap.defect": "같은 변수를 스왑합니다.",
  "cppcheck.va_end_missing.defect": "va_end()가 호출되지 않습니다.",
  "cppcheck.va_list_usedBeforeStarted.defect": "va_start 호출 전에 va_list가 사용됩니다.",
  "cppcheck.va_start_referencePassed.defect": "va_start 인자로 레퍼런스를 사용하는것은 의도치 않은 동작을 할 수 있습니다.",
  "cppcheck.va_start_subsequentCalls.defect": "va_end() 호출이 생략되었습니다.",
  "cppcheck.va_start_wrongParameter.defect": "va_start 에 있는 인자가 함수의 마지막 인자가 아닙니다.",
  "cppcheck.varFuncNullUB.defect": "가변인자 함수의 마지막 인자가 NULL 일경우 의도치 않은 동작을 할 수 있습니다.",
  "cppcheck.variableScope.defect": "변수의 scope를 줄일 수 있습니다.",
  "cppcheck.writeReadOnlyFile.defect": "읽기전용으로 연 파일에 쓰기 작업을 합니다.",
  "cppcheck.wrongPipeParameterSize.defect": "pipe 함수에 인자로 들어가는 정수형 버퍼의 사이즈는 2여야 합니다.",
  "cppcheck.wrongPrintfScanfArgNum.defect": "printf 포맷 스트링의 인자 갯수가 올바르지 않습니다.",
  "cppcheck.wrongPrintfScanfParameterPositionError.defect": "포맷 스트링 내의 'n$'는 맞는 인자를 가져야 합니다.",
  "cppcheck.zerodiv.defect": "0으로 나누기를 합니다.",
  "cppcheck.zerodivcond.defect": "0 체크가 중복이거나, 0으로 나누기가 발생할 수 있습니다.",
  "crawler.bowser.update_dom_if_changed.description": "이 옵션을 `예`로 하는 경우 기존에 수집했지만 구조가 변경된 DOM을 업데이트하여 DOM 큐에 추가한 다음 새로 수집합니다.",
  "crawler.bowser.update_dom_if_changed.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "crawler.bowser.update_dom_if_changed.name": "DOM 변화 업데이트 (디버그)",
  "crawler.bowser.update_dom_if_changed.placeholder": "해당 없음",
  "crawler.browser.event_selection.description": "수행할 이벤트는 내부 브라우저에서 수행할 이벤트 목록입니다. 이 옵션에서 선택된 이벤트들은 내부 브라우저가 URL 수집을 하는 과정에서 수행됩니다. 즉, '클릭'을 선택하면 URL 수집할 때 내부 브라우저가 클릭을 수행합니다. 반면에 '클릭'을 선택하지 않으면 내부 브라우저가 '클릭' 이벤트를 수행하지 않습니다.",
  "crawler.browser.event_selection.extras.0.click": "클릭",
  "crawler.browser.event_selection.extras.1.keypress": "값 입력",
  "crawler.browser.event_selection.message": "주어진 이벤트 중에서 선택해야 합니다.",
  "crawler.browser.event_selection.name": "수행할 이벤트",
  "crawler.browser.event_selection.placeholder": "수행할 이벤트를 선택하세요.",
  "crawler.browser.explicit_timeout.description": "이 옵션에 입력된 값이 클수록 **수행한 이벤트를 DOM에 반영하는데 시간이 걸리는 웹 애플리케이션의 URL을 수집**할 수 있지만 수집하는 속도가 느려집니다. 이 옵션에 입력된 값이 적을수록 URL을 수집하는 속도는 향상되지만 **DOM이 변경될 때 시간이 필요한 웹 애플리케이션의 URL을 수집하지 않게** 됩니다.",
  "crawler.browser.explicit_timeout.message": "0 이상 5,000 이하여야 합니다.",
  "crawler.browser.explicit_timeout.name": "이벤트 대기 시간",
  "crawler.browser.explicit_timeout.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "crawler.browser.mobile_mode.description": "이 옵션을 `예`로 설정하면 URL을 분석할 때 사용되는 **브라우저를 모바일 화면으로 변경**합니다. 이 옵션을 `아니요`로 설정하면 **브라우저를 기본 PC 화면 형태로 사용**합니다.",
  "crawler.browser.mobile_mode.message": "'true' 또는 'false'를 입력해야 합니다.",
  "crawler.browser.mobile_mode.name": "모바일 화면",
  "crawler.browser.mobile_mode.placeholder": "해당 없음",
  "crawler.browser.page_load_strategy_eager.description": "이 옵션을 `예`로 설정하면 **리소스가 로딩되기를 기다리지 않고 수집을 진행**하여 수집 속도가 빨라집니다. 이로 인해 리소스가 반드시 필요한 페이지의 경우 정상적으로 수집하지 못할 가능성이 있습니다. 이 옵션을 `아니요`로 설정하면 **페이지의 리소스가 모두 로딩되어야 수집을 진행**합니다. 이로 인해 리소스가 반드시 필요한 페이지도 정상적으로 수집할 수 있지만 리소스를 로딩하는데 문제가 있는 페이지에서 속도가 느려지게 됩니다.",
  "crawler.browser.page_load_strategy_eager.message": "'true' 또는 'false'를 입력해야 합니다.",
  "crawler.browser.page_load_strategy_eager.name": "페이지 부분 로딩",
  "crawler.browser.page_load_strategy_eager.placeholder": "해당 없음",
  "crawler.browser.precheck_link_access.description": "링크 미리 확인 옵션은 브라우저가 이벤트를 수행할 HTML 요소의 속성에 링크가 있으면, 해당 링크에 접근이 가능한지 HTTP 클라이언트로 미리 확인할지 여부입니다. 이 옵션을 '예'로 설정하면 HTML 요소의 속성에 링크가 있을 때 HTTP 클라이언트로 미리 접근 가능 여부를 확인하여 브라우저가 끊어진 링크에 접근하기 위해 낭비하는 시간을 줄여줍니다. 하지만, HTTP 클라이언트로 모든 링크를 미리 확인하기 때문에 끊어진 링크가 없을 때는 수집 속도가 느려집니다. 반면, '아니요'로 설정하면 HTML 요소에 링크가 있어도 접근 가능 여부를 미리 확인하지 않습니다. HTTP 클라이언트가 모든 링크의 접근 여부를 확인하는 시간은 단축 되지만 접근이 불가능한 링크가 많으면 브라우저가 해당 링크에 접근 시도하는 시간이 낭비합니다. 즉, 내부망 등으로 인해 분석하려는 웹 애플리케이션이 끊겨진 링크가 많으면 해당 옵션을 '예'로, 아니면 '아니요'로 설정하면 수집 속도가 빨라집니다.",
  "crawler.browser.precheck_link_access.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "crawler.browser.precheck_link_access.name": "미리 링크 확인",
  "crawler.browser.precheck_link_access.placeholder": "해당 없음",
  "crawler.browser.resource_load_timeout.description": "이 옵션에 입력된 **값이 적을수록 로딩되기를 기다리지 않고 수집하기 시작하는 리소스가 많아**집니다. 따라서 반드시 리소스가 필요한 페이지를 정상적으로 수집하지 못할 가능성이 있습니다. 이 옵션에 입력된 **값이 클수록 리소스 로딩을 기다리는 시간이 길어**지기 때문에 수집하는 시간이 오래 걸립니다.",
  "crawler.browser.resource_load_timeout.message": "1 이상 600,000 이하여야 합니다.",
  "crawler.browser.resource_load_timeout.name": "리소스 로딩 대기시간",
  "crawler.browser.resource_load_timeout.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "crawler.browser.sequential_sub_events_by_xpath.description": "이 옵션에 입력한 XPath를 포함한 이벤트를 클릭 서브 이벤트로 순차적으로 실행합니다. 예를 들어, SELECT의 OPTION 태그에 해당하는 XPath를 입력하면 해당 OPTION 태그를 순차적으로 실행합니다.",
  "crawler.browser.sequential_sub_events_by_xpath.message": "XPath여야 합니다.",
  "crawler.browser.sequential_sub_events_by_xpath.name": "순차 실행 서브 이벤트 (XPath)",
  "crawler.browser.sequential_sub_events_by_xpath.placeholder": "XPath를 입력하세요. 엔터로 구분합니다.",
  "crawler.client.timeout.description": "이 옵션에 입력된 **값이 클수록 웹 서버와의 네트워크 연결 상태가 좋지 않아 지연이 발생한 경우에도 분석이 정상적으로 진행**됩니다. 단, 웹 서버와의 연결 끊김이 지속적으로 발생하면 분석 시간이 늘어날 가능성이 높습니다. 이 옵션에 입력된 **값이 적을수록 분석 속도는 빨라지지만 웹 서버와의 네트워크 연결 상태가 좋지 않아서 지연이 발생한 경우 URL을 분석하지 못할 가능성**이 있습니다.",
  "crawler.client.timeout.message": "0 이상 30,000 이하여야 합니다.",
  "crawler.client.timeout.name": "HTTP 클라이언트 대기 시간",
  "crawler.client.timeout.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "crawler.crawl.additional_scopes.description": "이 옵션에 입력한 **목록에 해당하는 URL이 하나라도 포함되어 있다면 해당 URL을 수집**하게 됩니다. 예를 들어, 분석 대상 URL이 `http://sparrow.com/main`이면 수집할 때 `https://google.com`이라는 URL을 발견하더라도 스키마나 도메인명이 다르기 때문에 수집하지 않는 것이 원칙입니다. 하지만 이 옵션에 `google.com`을 입력하면 `https://google.com`을 수집하게 됩니다.",
  "crawler.crawl.additional_scopes.message": "문자열이어야 합니다.",
  "crawler.crawl.additional_scopes.name": "추가 수집 범위",
  "crawler.crawl.additional_scopes.placeholder": "문자열을 입력하세요. 엔터로 구분합니다.",
  "crawler.crawl.event_maximum.description": "이 옵션을 `상`으로 설정하면 **페이지에서 더 많은 이벤트를 수행**하게 되지만 **수집하는 시간이 오래** 걸립니다. 이 옵션을 `하`로 설정하면 **수집하는 시간은 짧아**지지만 페이지에서 더 적은 이벤트를 수행하게 됩니다.",
  "crawler.crawl.event_maximum.message": "1 이상 256 이하여야 합니다.",
  "crawler.crawl.event_maximum.name": "페이지 당 최대 이벤트 수집 개수",
  "crawler.crawl.event_maximum.placeholder": "개수를 입력하세요.",
  "crawler.crawl.max_ajax_depth.description": "이 옵션을 `상`으로 설정하면 URL로 이동할 때 생성되는 **첫 DOM에서부터 멀리 있는 DOM까지도 수집**하게 되지만 **수집하는 시간이 오래** 걸립니다. 이 옵션을 `하`로 설정하면 프로젝트에서 **DOM을 수집하는 시간은 짧아**지지만 멀리 있는 DOM은 수집하지 않게 됩니다.",
  "crawler.crawl.max_ajax_depth.message": "1 이상 10 이하여야 합니다.",
  "crawler.crawl.max_ajax_depth.name": "최대 DOM 수집 깊이",
  "crawler.crawl.max_ajax_depth.placeholder": "깊이를 입력하세요.",
  "crawler.crawl.max_depth.description": "이 옵션을 `상`으로 설정하면 **시작 URL에서부터 멀리 있는 URL까지도 수집**하게 되지만 **수집하는 시간이 오래** 걸립니다. 이 옵션을 `하`로 설정하면 프로젝트에서 **URL을 수집하는 시간은 짧아**지지만 멀리 있는 URL은 수집하지 않게 됩니다.",
  "crawler.crawl.max_depth.message": "0 이상 256 이하여야 합니다.",
  "crawler.crawl.max_depth.name": "URL 수집 깊이",
  "crawler.crawl.max_depth.placeholder": "깊이를 입력하세요.",
  "crawler.crawl.max_url.description": "이 옵션에 입력된 **값이 클수록 수집할 수 있는 URL의 개수가 늘어**나지만 수집을 위한 **분석 시간도 증가**할 수 있습니다. 이 옵션에 입력된 값이 **적을수록 수집할 수 있는 URL 개수가 줄어**들어 **분석 시간도 줄어**듭니다. 아무것도 입력하지 않는 경우 옵션의 기본값은 `0`이며 이 경우에 수집할 수 있는 URL의 개수를 제한하지 않게 됩니다.",
  "crawler.crawl.max_url.message": "0 이상 2,147,483,647 이하여야 합니다.",
  "crawler.crawl.max_url.name": "최대 수집 URL 수",
  "crawler.crawl.max_url.placeholder": "개수를 입력하세요.",
  "crawler.crawl.records.description": "로그인 기록 파일은 URL 수집 및 분석 도중에 사용하기 위해 Sparrow DAST 이벤트 클립보드로 사용자의 행동을 기록한 .ecl 파일이나 Selenium IDE 파일로 사용자의 행동을 기록한 .side 파일입니다. 로그인 기록 파일을 첨부하면 URL 수집 및 분석 도중에 Sparrow DAST 이벤트 클립보드나 Selenium IDE로 기록을 시작했던 URL에 도달했을 때 사용자의 행동을 그대로 재현합니다. 이를 통해 로그인 페이지에서 인증을 통과할 수 있습니다.",
  "crawler.crawl.records.message": "로그인 기록 파일은 Sparrow DAST 이벤트 클립보드를 통해 기록한 .ecl 파일이나 Selenium IDE를 통해 기록한 .side 파일이어야 합니다.",
  "crawler.crawl.records.name": "로그인 기록 파일",
  "crawler.crawl.records.placeholder": "해당 없음",
  "crawler.crawl.selenium_sides.description": "Selenium IDE 파일은 URL 수집 및 분석 도중에 사용하기 위해 Selenium IDE로 사용자의 행동을 기록한 .side 파일입니다. Selenium IDE 파일을 첨부하면 URL 수집 및 분석 도중에서 Selenium IDE로 기록을 시작했던 URL에 도달했을 때 사용자의 행동을 그대로 재현합니다. 이를 통해 로그인을 수행하거나 사용자의 행동이 필요한 페이지에서 사용자의 행동을 그대로 수행할 수 있습니다.",
  "crawler.crawl.selenium_sides.message": "Selenium IDE 파일은 Selenium IDE를 통해 기록한 .side 파일이어야 합니다.",
  "crawler.crawl.selenium_sides.name": "Selenium IDE 파일",
  "crawler.crawl.selenium_sides.placeholder": "해당 없음",
  "crawler.crawl.timeout.description": "이 옵션에 입력된 **값이 클수록 수집을 위한 분석 시간이 증가**하고 **수집할 수 있는 URL의 개수도 늘어**날 수 있습니다. 이 옵션에 입력된 값이 **적을수록 분석 시간이 감소**하고 **수집할 수 있는 URL의 개수가 줄어**들 수 있습니다. 아무것도 입력하지 않는 경우 옵션의 기본값은 `0`이며 이 경우에 수집할 수 있는 시간을 제한하지 않게 됩니다.",
  "crawler.crawl.timeout.message": "0 이상 2,147,483,647 이하여야 합니다.",
  "crawler.crawl.timeout.name": "최대 수집 시간",
  "crawler.crawl.timeout.placeholder": "시간을 입력하세요. (단위: 분)",
  "crawler.debug.perform_logger.description": "이 옵션을 `예`로 설정하면 수집할 때 실행한 동작을 로그로 확인할 수 있으므로 **URL을 정상적으로 수집했는지 확인**할 수 있지만 로그 용량이 커집니다. 이 옵션을 `아니요`로 설정하면 로그 용량은 작아지지만 URL을 정상적으로 수집했는지 확인하기가 어렵습니다.",
  "crawler.debug.perform_logger.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "crawler.debug.perform_logger.name": "상세 수행 로그",
  "crawler.debug.perform_logger.placeholder": "해당 없음",
  "crawler.event.group_by_from.description": "FORM 태그 기반 이벤트 묶기는 브라우저에서 이벤트를 수행할 때, FORM 기반으로 이벤트를 묶어서 FORM 내부에 있는 이벤트들을 한 번에 수행하도록 설정합니다. 일반적으로 FORM 내부에 있는 이벤트들은 연관 관계를 가지며, 하나씩 따로 수행하는 것보다 그룹으로 묶어서 처리하는게 효율적입니다. 이 옵션을 '예'로 설정하면 같은 FORM의 내부에 있는 이벤트들을 하나의 그룹으로 묶어서 이벤트들을 한번에 수행합니다. FORM 내부에 있는 이벤트들이 서로 연관이 있으면 이벤트들을 효율적으로 수행할 수 있지만 연관이 없으면 일부 이벤트만 동작할 수 있습니다. 반면, '아니요'로 설정하면 FORM과 상관없이 이벤트를 각각 따로 수행합니다. FORM 내부 이벤트들이 서로 연관이 없어도 이벤트를 모두 수행할 수 있지만, 연관이 있으면 비효율적으로 이벤트를 수행하여 수집 시간이 늘어납니다.",
  "crawler.event.group_by_from.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "crawler.event.group_by_from.name": "FORM 태그 기반 이벤트 묶기",
  "crawler.event.group_by_from.placeholder": "해당 없음",
  "crawler.exclude.css_selector.description": "이 옵션에 입력한 **목록에 해당하는 CSS 선택자가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하지 않게** 됩니다. 이러한 방법으로 페이지에서 **로그아웃 버튼을 클릭하지 않도록 설정**할 수 있습니다.",
  "crawler.exclude.css_selector.message": "문자열이어야 합니다.",
  "crawler.exclude.css_selector.name": "이벤트 수행 제외 요소 (CSS 선택자)",
  "crawler.exclude.css_selector.placeholder": "제외할 CSS 선택자를 입력하세요. 엔터로 구분합니다.",
  "crawler.exclude.xpath.description": "이 옵션에 입력한 **목록에 해당하는 XPath가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하지 않게** 됩니다. 이러한 방법으로 페이지에서 **로그아웃 버튼을 클릭하지 않도록 설정**할 수 있습니다.",
  "crawler.exclude.xpath.message": "XPath 형식이 잘못되었습니다.",
  "crawler.exclude.xpath.name": "이벤트 수행 제외 요소 (XPath)",
  "crawler.exclude.xpath.placeholder": "제외할 XPath를 입력하세요. 엔터로 구분합니다.",
  "crawler.executor.number_of_threads.description": "고정 스레드 개수는 고정 스레드인 경우 사용할 스레드 개수입니다. 개수가 많으면 분석 속도는 빨라지지만 더 많은 컴퓨터 리소스를 사용합니다. 개수가 적으면 분석 속도는 느려지지만 더 적은 컴퓨터 리소스를 사용합니다. 값이 비어 있으면 기본값인 10을 적용합니다.",
  "crawler.executor.number_of_threads.message": "1 이상 256 이하여야 합니다.",
  "crawler.executor.number_of_threads.name": "고정 스레드 개수",
  "crawler.executor.number_of_threads.placeholder": "개수를 입력하세요.",
  "crawler.executor.use_fixed.description": "고정 스레드 사용은 분석 성능 향상을 위해 여러 개의 스레드를 사용할 때 고정된 개수의 스레드만을 사용할지 여부입니다. 이 옵션을 '예'로 설정하면 고정된 개수의 스레드만을 사용하며, 스레드가 완료될 때까지 기다립니다. 반면, '아니요'로 설정하면 캐시 스레드를 사용합니다. 캐시 스레드는 스레드 개수를 유동적으로 조정하지만 스레드가 완료되지 않아도 60초가 지나면 종료합니다.",
  "crawler.executor.use_fixed.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "crawler.executor.use_fixed.name": "고정 스레드 사용",
  "crawler.executor.use_fixed.placeholder": "해당 없음",
  "crawler.include.css_selector.description": "이 옵션에 입력한 **목록에 해당하는 CSS 선택자가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행**하게 됩니다. 이러한 방법으로 페이지에서 **이벤트에 포함되지 않는 태그와 같은 요소를 수행**할 수 있습니다.",
  "crawler.include.css_selector.message": "문자열이어야 합니다.",
  "crawler.include.css_selector.name": "이벤트 수행 추가 요소 (CSS 선택자)",
  "crawler.include.css_selector.placeholder": "추가할 CSS 선택자를 입력하세요. 엔터로 구분합니다.",
  "crawler.include.xpath.description": "이 옵션에 입력한 **목록에 해당하는 XPath가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 그 하위 HTML 요소의 이벤트를 모두 수행**하게 됩니다. 이러한 방법으로 페이지에서 **이벤트에 포함되지 않는 태그와 같은 요소를 수행**할 수 있습니다.",
  "crawler.include.xpath.message": "XPath 형식이 잘못되었습니다.",
  "crawler.include.xpath.name": "이벤트 수행 추가 요소 (XPath)",
  "crawler.include.xpath.placeholder": "추가할 XPath를 입력하세요. 엔터로 구분합니다.",
  "crawler.limit.dom_depth_degree.description": "이 옵션을 `상`으로 설정하면 URL로 이동할 때 생성되는 **첫 DOM에서부터 멀리 있는 DOM까지도 수집**하게 되지만 **수집하는 시간이 오래** 걸립니다. 이 옵션을 `하`로 설정하면 프로젝트에서 **DOM을 수집하는 시간은 짧아**지지만 멀리 있는 DOM은 수집하지 않게 됩니다.",
  "crawler.limit.dom_depth_degree.extras.0.HIGH": "상",
  "crawler.limit.dom_depth_degree.extras.0.high": "상",
  "crawler.limit.dom_depth_degree.extras.1.MEDIUM": "중",
  "crawler.limit.dom_depth_degree.extras.1.medium": "중",
  "crawler.limit.dom_depth_degree.extras.2.LOW": "하",
  "crawler.limit.dom_depth_degree.extras.2.low": "하",
  "crawler.limit.dom_depth_degree.message": "'HIGH', 'MEDIUM', 'LOW' 중에서 하나를 입력해야 합니다.",
  "crawler.limit.dom_depth_degree.name": "DOM 수집 깊이",
  "crawler.limit.dom_depth_degree.placeholder": "해당 없음",
  "crawler.limit.find_event_degree.description": "이 옵션을 `상`으로 설정하면 **페이지에서 더 많은 이벤트를 수행**하게 되지만 **수집하는 시간이 오래** 걸립니다. 이 옵션을 `하`로 설정하면 **수집하는 시간은 짧아**지지만 페이지에서 더 적은 이벤트를 수행하게 됩니다.",
  "crawler.limit.find_event_degree.extras.0.HIGH": "상",
  "crawler.limit.find_event_degree.extras.0.high": "상",
  "crawler.limit.find_event_degree.extras.1.MEDIUM": "중",
  "crawler.limit.find_event_degree.extras.1.medium": "중",
  "crawler.limit.find_event_degree.extras.2.LOW": "하",
  "crawler.limit.find_event_degree.extras.2.low": "하",
  "crawler.limit.find_event_degree.message": "'HIGH', 'MEDIUM', 'LOW' 중에서 하나를 입력해야 합니다.",
  "crawler.limit.find_event_degree.name": "페이지 이벤트 수행 정도",
  "crawler.limit.find_event_degree.placeholder": "해당 없음",
  "crawler.limit.url_depth_degree.description": "이 옵션을 `상`으로 설정하면 **시작 URL에서부터 멀리 있는 URL까지도 수집**하게 되지만 **수집하는 시간이 오래** 걸립니다. 이 옵션을 `하`로 설정하면 프로젝트에서 **URL을 수집하는 시간은 짧아**지지만 멀리 있는 URL은 수집하지 않게 됩니다.",
  "crawler.limit.url_depth_degree.extras.0.HIGH": "상",
  "crawler.limit.url_depth_degree.extras.0.high": "상",
  "crawler.limit.url_depth_degree.extras.1.MEDIUM": "중",
  "crawler.limit.url_depth_degree.extras.1.medium": "중",
  "crawler.limit.url_depth_degree.extras.2.LOW": "하",
  "crawler.limit.url_depth_degree.extras.2.low": "하",
  "crawler.limit.url_depth_degree.message": "'HIGH', 'MEDIUM', 'LOW' 중에서 하나를 입력해야 합니다.",
  "crawler.limit.url_depth_degree.name": "URL 수집 깊이",
  "crawler.limit.url_depth_degree.placeholder": "해당 없음",
  "crawler.openapi.base_url.description": "서버 URL이 상대 경로로 적힌 경우 API 엔드포인트에서 사용할 Base URL입니다.",
  "crawler.openapi.base_url.description1231": "서버 URL이 상대 경로로 적힌 경우 API 엔드포인트에서 사용할 Base URL입니다.",
  "crawler.openapi.base_url.message": "올바르지 않은 URL 형식입니다.",
  "crawler.openapi.base_url.name": "기준 URL",
  "crawler.openapi.base_url.placeholder": "기준 URL을 입력하세요.",
  "crawler.openapi.spec_files.description": "  ",
  "crawler.openapi.spec_files.message": ".json, .yaml 혹은 .yml 파일이어야 합니다.",
  "crawler.openapi.spec_files.name": "분석 대상 파일",
  "crawler.openapi.spec_files.placeholder": "해당 없음",
  "crawler.parse.comment.description": "이 옵션을 `예`로 설정하면 **HTML 주석에 포함된 URL을 찾아 해당 URL을 수집**하게 됩니다. 이로 인해 더 많은 URL을 수집하게 되지만 주석을 분석하기 때문에 분석 속도가 느려지고 의미 없는 URL을 수집할 가능성이 높습니다.",
  "crawler.parse.comment.message": "'true' 또는 'false'를 입력해야 합니다.",
  "crawler.parse.comment.name": "HTML 주석 분석",
  "crawler.parse.comment.placeholder": "해당 없음",
  "crawler.parse.text.description": "이 옵션을 `예`로 설정하면 **일반 본문에서 URL 패턴을 사용하여 URL을 수집**합니다. 이로 인해 더 많은 URL을 수집하게 되지만 HTML뿐만 아니라 모든 본문을 분석하기 때문에 분석 속도가 느려지고 의미없는 URL을 수집할 가능성이 높습니다.",
  "crawler.parse.text.message": "'true' 또는 'false'를 입력해야 합니다.",
  "crawler.parse.text.name": "일반 본문 분석",
  "crawler.parse.text.placeholder": "해당 없음",
  "crawler.request.accept_language.description": "클라이언트 언어는 **분석을 수행할 클라이언트가 이해하는 언어 및 선호하는 지역 설정이 무엇**인지를 가리킵니다.",
  "crawler.request.accept_language.extras.0.KO": "한국어",
  "crawler.request.accept_language.extras.0.ko": "한국어",
  "crawler.request.accept_language.extras.1.EN-US": "영어 (미국)",
  "crawler.request.accept_language.extras.1.en-us": "영어 (미국)",
  "crawler.request.accept_language.extras.2.JA": "일본어",
  "crawler.request.accept_language.extras.2.ja": "일본어",
  "crawler.request.accept_language.message": "'KO', 'EN', 'JA' 중에서 하나를 입력해야 합니다.",
  "crawler.request.accept_language.name": "클라이언트 언어",
  "crawler.request.accept_language.placeholder": "해당 없음",
  "crawler.request.count_per_second.description": "이 옵션에 입력된 **값이 클수록 1초에 전송할 수 있는 HTTP 요청의 개수가 늘어나서 URL을 수집하는 속도가 빨라**지지만 트래픽량이 늘어나 **분석 대상 웹 애플리케이션 서버에 부하도 늘어**날 수 있습니다. 이 옵션에 입력된 값이 **적을수록 트래픽량이 낮아져 분석 대상 웹 애플리케이션 서버의 부하도 줄어**들지만 **URL을 수집하는 속도가 늦어**집니다.",
  "crawler.request.count_per_second.message": "-1 이상 10,000 이하여야 합니다.",
  "crawler.request.count_per_second.name": "HTTP 요청 횟수",
  "crawler.request.count_per_second.placeholder": "횟수를 입력하세요.",
  "crawler.request.custom_headers.description": "이 옵션에는 **HTTP 요청에 반드시 필요한 헤더를 입력**해야 합니다. 이로 인해 브라우저에 프록시를 설정하므로 수집 속도가 느려질 수 있습니다. `Cookie` 헤더를 제외하고 **동일한 이름의 헤더를 여러 개 입력한 경우 그 중 하나만 적용**됩니다. 따라서 여러 값을 입력해야 하는 경우 헤더 값을 `;`로 구분하여 입력하세요.",
  "crawler.request.custom_headers.message": "이름을 비워놓거나 이름 또는 값에 줄바꿈을 넣을 수 없습니다.",
  "crawler.request.custom_headers.name": "사용자 정의 HTTP 헤더",
  "crawler.request.custom_headers.placeholder": "헤더의 이름과 값을 입력하세요.",
  "crawler.scan.auto_input.description": "자동 입력은 웹 애플리케이션에 값이 입력되는 동작을 자동으로 수행합니다. 자동 입력을 '예'로 하면 브라우저에서 클릭뿐 아니라 값 입력 등을 수행하며, 파라미터를 포함한 모든 HTTP 요청을 보냅니다. 반면, '아니요'로 설정하면 브라우저에서는 클릭만을 수행하며, 파라미터가 없는 GET 메소드의 HTTP 요청만을 보냅니다.",
  "crawler.scan.auto_input.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "crawler.scan.auto_input.name": "자동 입력",
  "crawler.scan.auto_input.placeholder": "해당 없음",
  "crawler.skip.url.description": "이 옵션에 입력한 **목록에 해당하는 단어가 하나라도 수집하려는 URL에 포함되었다면 해당 URL을 수집하지 않게** 됩니다. 단, URL을 수집하기 직전에 건너뛰기 때문에 브라우저가 해당 URL에 방문할 수 있습니다.",
  "crawler.skip.url.message": "문자열이어야 합니다.",
  "crawler.skip.url.name": "제외할 수집 URL",
  "crawler.skip.url.placeholder": "URL을 입력하세요. 엔터로 구분합니다.",
  "crawler.skip.url_suffix.description": "이 옵션에 입력한 **목록에 해당하는 단어가 하나라도 수집하려는 URL의 끝에 포함되었다면 해당 URL을 수집하지 않게** 됩니다. URL로 이동하기 전에 HTML 요소의 속성 값 등을 보고 건너뛰기 때문에 해당 URL에 방문하지 않으므로 파일 다운로드 등을 수행하기 전에 건너뛸 수 있습니다.",
  "crawler.skip.url_suffix.message": "마침표(.)로 시작해야 합니다.",
  "crawler.skip.url_suffix.name": "제외할 URL 접미사",
  "crawler.skip.url_suffix.placeholder": "확장자를 입력하세요. 엔터와 쉼표(,)로 구분합니다.",
  "crawler.skip.urls_only_applying.description": "이 옵션에 입력한 문자열을 포함한 URL을 수집 및 분석에서 제외합니다. 일반 옵션에 있는 제외할 수집 URL 혹은 제외할 분석 URL과 달리 여기서 제외한 URL은 브라우저로 방문하거나 클라이언트로 요청을 보내게 됩니다.",
  "crawler.skip.urls_only_applying.message": "문자열이어야 합니다.",
  "crawler.skip.urls_only_applying.name": "제외할 URL (약식)",
  "crawler.skip.urls_only_applying.placeholder": "URL을 입력하세요. 엔터로 구분합니다.",
  "crawler.ssl.use_certificates.description": "이 옵션을 `예`로 설정하면 **서버 설정에서 입력한 SSL 인증서를 사용**합니다. 따라서 HTTP 클라이언트가 해당 인증서가 있어야만 접속할 수 있는 웹 서버에 접근할 수 있습니다. 하지만 입력한 SSL 인증서가 아닌 **다른 인증서가 필요한 웹 서버는 접근할 수 없습니다**. 이 옵션을 `아니요`로 설정하면 웹 서버에 필요한 SSL 인증서의 신뢰 여부와 상관 없이 해당 웹 서버에 접근하게 됩니다. 따라서 **SSL 인증서가 유효하지 않거나 서버 설정에서 입력하지 않은 SSL 인증서가 필요한 웹 서버에도 접근**할 수 있습니다.",
  "crawler.ssl.use_certificates.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "crawler.ssl.use_certificates.name": "SSL 인증서 사용",
  "crawler.ssl.use_certificates.placeholder": "해당 없음",
  "crawler.target.contain_entire_seed.description": "이 옵션을 `예`로 설정하면 **분석 대상 URL을 포함한 하위 경로만 분석**하게 됩니다. 이 옵션을 `아니요`로 설정하면 **프로젝트의 분석 대상 URL에 포함된 상위 경로도 분석**하게 됩니다.",
  "crawler.target.contain_entire_seed.message": "'true' 또는 'false'를 입력해야 합니다.",
  "crawler.target.contain_entire_seed.name": "하위 경로만 수집",
  "crawler.target.contain_entire_seed.placeholder": "해당 없음",
  "crawler.target.must_contains.description": "포함된 URL만 수집 옵션은 옵션값으로 입력한 문자열 중 하나를 반드시 포함하고 있는 URL만을 수집하기 위한 문자열입니다. 이 옵션에 값으로 입력한 문자열을 포함하고 있는 URL만을 수집합니다. 이 옵션은 다른 어떤 옵션보다도 우선합니다.",
  "crawler.target.must_contains.message": "문자열이어야 합니다.",
  "crawler.target.must_contains.name": "수집할 URL 문자열 포함",
  "crawler.target.must_contains.placeholder": "수집할 URL 문자열",
  "crawler.target.seed_urls.description": "분석 대상 URL은 크롤링 및 분석을 수행할 시작점입니다.",
  "crawler.target.seed_urls.message": "문자열이어야 합니다.",
  "crawler.target.seed_urls.name": "분석 대상 URL",
  "crawler.target.seed_urls.placeholder": "해당 없음",
  "crawler.target.sub_domain.description": "이 옵션을 `예`로 설정하면 **분석 대상 URL의 서브 도메인에 해당하는 URL도 수집**하게 됩니다. 이 옵션을 `아니요`로 설정하면 **분석 대상 URL의 서브 도메인에 해당하는 URL을 수집하지 않게** 됩니다.",
  "crawler.target.sub_domain.message": "'예' 또는 '아니요'를 선택해야 합니다.",
  "crawler.target.sub_domain.name": "서브 도메인 수집",
  "crawler.target.sub_domain.placeholder": "해당 없음",
  "crawler.target.upper_extension.description": "이 옵션을 `예`로 설정하면 **분석 대상 URL의 상위 경로도 분석**하게 됩니다. 단, 상위 경로가 분석할 필요가 없는 사이트이거나 상위 경로에 접근하면 자동으로 다른 URL로 이동하게 된다면 의미 없는 URL을 분석할 가능성이 있습니다. 이 옵션을 `아니요`로 설정하면 **프로젝트의 분석 대상 URL에 포함된 하위 경로만을 분석**하게 됩니다.",
  "crawler.target.upper_extension.message": "'true' 또는 'false'를 입력해야 합니다.",
  "crawler.target.upper_extension.name": "상위 경로 수집",
  "crawler.target.upper_extension.placeholder": "해당 없음",
  "crawler.upload_period.description": "수집 및 분석 과정에서 발생하는 데이터를 필요로 하는 외부 모듈로 전송하는 주기입니다. 이 옵션에 입력된 **값이 적을수록 외부 모듈에서 짧은 시간 내에 많은 데이터를 수신**하므로, 처리하는 속도가 빨라지지만 부하도 증가합니다. 이 옵션에 입력된 **값이 클수록 외부 모듈이 같은 시간 동안 상대적으로 적은 데이터를 수신**하므로, 처리하는 속도가 느려지지만 안정적으로 처리할 수 있습니다. 값이 비어 있으면 기본값인 `10,000`을 적용합니다.",
  "crawler.upload_period.message": "1,000 이상 60,000 이하여야 합니다.",
  "crawler.upload_period.name": "데이터 업로드 주기",
  "crawler.upload_period.placeholder": "시간을 입력하세요. (단위: 밀리초)",
  "crulechk.ACCESS_CV_QUALIFIED_OBJECT_THROUGH_CV_UNQUALIFIED.msg": "Const를 보장하는 객체를 수정하기 위해서 캐스팅하지 마십시오.",
  "crulechk.ALIGNAS_CONSISTENCY_CHECKER.bmsg": " 현재의 alignas 선언과 불일치하는 이전 선언입니다.",
  "crulechk.ALIGNAS_CONSISTENCY_CHECKER.msg": " 전역 변수 {0}의 alignas 선언이 기존 선언과 일치하지 않습니다.",
  "crulechk.ALLOCATE_SUFFICIENT_MEMORY.msg1": "객체를 위해 충분한 메모리를 할당해야 합니다.(값의 경계값 미검사)",
  "crulechk.ALLOCATE_SUFFICIENT_MEMORY.msg2": "객체를 위해 충분한 메모리를 할당해야 합니다.(sizeof 타입 불일치)",
  "crulechk.ALLOCATE_SUFFICIENT_MEMORY.sca.desc.as_both": "malloc에서 사용하는 변수의 경계값을 검사하고, sizeof에서 계산하는 타입을 할당할 변수에 맞추어 변경합니다.",
  "crulechk.ALLOCATE_SUFFICIENT_MEMORY.sca.desc.as_boundary": "malloc에서 사용하는 변수의 경계값을 검사하도록 합니다.",
  "crulechk.ALLOCATE_SUFFICIENT_MEMORY.sca.desc.as_sizeof": "sizeof에서 계산하는 타입을 할당할 변수에 맞추어 변경합니다.",
  "crulechk.ALREADY_DEFINE_IDENTIFIER.msg": "모든 매크로 식별자는 사용전에 정의되어야 합니다. 단 #ifndef 전처리 구문 및 defined에서 사용하는 경우는 제외합니다.",
  "crulechk.ALWAYS_DISCARD_RESULT_OF_ASSIGN.msg": "항상 대입 연산자의 결과를 사용하지 않도록 합니다.",
  "crulechk.ALWAYS_SET_POINTER_TO_ZERO.msg": "메모리 할당을 해제한 후 항상 포인터를 0으로 셋팅합니다.",
  "crulechk.ARGUMENT_NAMES_SHALL_BE_MATCHED.msg": "함수 선언과 정의에서 같은 파라미터의 식별자는 모두 동일해야 합니다.",
  "crulechk.ARGUMENT_NAMES_SHALL_BE_MATCHED.yMsg": "함수 선언부입니다.",
  "crulechk.ARGUMENT_NAMES_SHALL_BE_MATCHED_GLOBAL.msg": "함수 선언과 정의에서 같은 파라미터의 식별자는 모두 동일해야 합니다.",
  "crulechk.ARGUMENT_NAMES_SHALL_BE_MATCHED_GLOBAL.yMsg": "함수 선언부입니다.",
  "crulechk.ARRAY_ACCESS_ON_POINTER.msg1": "포인터형 변수에 배열 접근 연산자를 사용했습니다. {0}",
  "crulechk.ASSEMBLER_INST_USE_ASM_DECLARATION.msg": "pragma asm은 허용되지 않습니다.",
  "crulechk.ASSERT_WITH_CONSTANT.msg": "assert 매크로에 상수 표현식을 인자로 전달했습니다.",
  "crulechk.ASSIGNMENT_OPERATOR_SHOULD_RETURN_REFERENCE.msg": "대입 연산자는 객체의 참조형태로 리턴해야 합니다.",
  "crulechk.ASSIGNMENT_OPERATOR_SHOULD_RETURN_REFERENCE.sca.desc.default": "리턴 타입을 참조형으로 변경합니다.",
  "crulechk.ASSIGNMENT_OPERATOR_SHOULD_RETURN_REFERENCE.sca.note.desc.check_decl": "클래스 내의 메소드 선언부도 수정되어야 합니다.",
  "crulechk.ASSIGN_ADDRESS_TO_WIDER_SCOPE.msg1": "지역 변수의 주소값을 상위 영역의 변수에 할당하지 말아야 합니다.",
  "crulechk.ASSIGN_ADDRESS_TO_WIDER_SCOPE.msg2": "상위 영역의 변수가 선언되었습니다.",
  "crulechk.ASSIGN_ADDRESS_TO_WIDER_SCOPE.sca.desc.default": "지역 변수의 주소 값을 더 상위 영역의 변수에 대입하지 않도록 합니다.",
  "crulechk.ASSIGN_ADDRESS_TO_WIDER_SCOPE.sca.note.desc.decl_upper_area": "만약 꼭 해당 값의 주소를 사용해야 하는 경우 동일한 영역 내에 선언하여 사용할 수 있습니다.",
  "crulechk.ASSIGN_ADDRESS_TO_WIDER_SCOPE.sca.note.desc.use_dynamic": "만약 꼭 해당 값의 주소를 더 상위 영역에서 사용해야 하는 경우 동적 할당을 사용할 수 있습니다.",
  "crulechk.ASSIGN_BASE_CLASS_MEMBERS.bMsg": "해당 베이스 클래스의 대입 연산자가 호출되지 않았습니다.",
  "crulechk.ASSIGN_BASE_CLASS_MEMBERS.msg": "대입 연산자는 반드시 베이스 클래스 멤버 데이터를 대입해야 합니다.",
  "crulechk.ASSIGN_BASE_CLASS_MEMBERS.sca.desc.default": "Base클래스들의 operator=를 호출하도록 합니다.",
  "crulechk.ASSIGN_BASE_CLASS_MEMBERS.sca.note.desc.handle_base": "만약 베이스 클래스의 요소를 상속 클래스에서 대입 하는 경우, 이것은 베이스 클래스에서 처리하는 것이 좋습니다.",
  "crulechk.ASSIGN_CLASS_MEMBERS.bMsg": "대입되지 않은 멤버 변수입니다.",
  "crulechk.ASSIGN_CLASS_MEMBERS.msg": "대입 연산자는 반드시 모든 클래스 멤버 데이터를 대입해야 합니다.",
  "crulechk.ASSIGN_CLASS_MEMBERS.sca.desc.default": "대입하지 않은 필드들을 대입하도록 합니다.",
  "crulechk.ASSIGN_CLASS_MEMBERS.sca.note.desc.allocate_dynamic": "포인터 타입의 필드의 경우 설계에 따라 동적 메모리를 할당하여 대입하도록 합니다.",
  "crulechk.ASSIGN_CLASS_MEMBERS.sca.note.desc.can_use_strcpy": "char 정적 배열의 경우 문자열로 사용할 시 문자열 복사 함수를 사용할 수 있습니다.",
  "crulechk.ASSIGN_CLASS_MEMBERS.sca.note.desc.include_string": "string.h 파일을 포함해야 합니다.",
  "crulechk.ASSIGN_NON_ZERO_TO_ERRNO.defect": "errno에 정수 0 이외의 값을 대입했습니다.",
  "crulechk.ASSIGN_STRING_TO_CONST_POINTER_CHAR.msg": "문자열은 const char 포인터에 만 할당해야 합니다.",
  "crulechk.ASSUMPTIONS_ABOUT_FILE_CREATION.msg": "fopen()이나 파일 생성에 대해 특정 조건을 가정하지 않도록 합니다.",
  "crulechk.ASYMMETRIC_OPERATOR_MUST_BE_DEFINED_AS_MEMBER.msg": "모든 비대칭 연산자 오버로딩은 반드시 멤버 함수로 정의되어야 합니다.",
  "crulechk.ASYNCHRONOUS_CANCEL_THREADS.msg1": "비동기화 스레드를 취소하는 스레드를 사용하지 마십시오.",
  "crulechk.ATOMIC_CAST_CHECKER.msg": "{0}를 변환하는 과정에서 _Atomic 한정자가 손실되었습니다.",
  "crulechk.ATOMIC_EXCHANGE_WEAK_SHOULD_BE_IN_LOOP.msg": "atomic_compare_exchange_weak을 loop문안에 포함시키십시오",
  "crulechk.ATOMIC_STRUCT_MEMBER_ACCESS_CHECKER.msg": "_Atomic으로 선언된 객체 {0} 의 멤버 {1} 에 직접 접근했습니다.",
  "crulechk.AT_LEAST_ONE_CASE_IN_SWITCH_STMT.MISRA2012.msg1": "switch 문은 적어도 2개의 case 구문을 가져야 합니다.",
  "crulechk.AT_LEAST_ONE_CASE_IN_SWITCH_STMT.msg1": "switch 문은 적어도 1개의 case 구문을 가져야 합니다.",
  "crulechk.AT_LEAST_ONE_EXCEPTION_HANDLER.msg": "모든 예외를 처리 할 수 있는 예외 핸들러가 있어야 합니다.",
  "crulechk.AT_MOST_ONE_NON_ABSTRACT_BASE_CLASS.msg": "파생클래스는 순수 가상 클래스가 아닌 베이스 클래스 최대 하나 상속 할 수 있습니다.",
  "crulechk.AUTHENTICATION_ATTEMPT_LIMIT.msg1": "인증 횟수는 제한되어야 합니다.",
  "crulechk.AVOID_AMBIGUOUS_GRAMMAR.msg": "함수 스타일 캐스팅 및 선언과 같은 애매한 문법을 방지합니다.",
  "crulechk.AVOID_BITWISE_ON_SAME_DATA.msg1": "같은 데이터에 비트 연산자와 산술 연산자를 사용하지 마십시오.",
  "crulechk.AVOID_BITWISE_ON_SAME_DATA.sca.desc.shift_assign": "시프트 대입 연산자 {0} 대신 산술 대입 연산자 {1}를 사용합니다.",
  "crulechk.AVOID_BITWISE_ON_SAME_DATA.sca.desc.shift_expr": "시프트 연산자 {0} 대신 산술연산자 {1}을 사용합니다.",
  "crulechk.AVOID_BITWISE_ON_SAME_DATA.sca.note.desc.change_expr": "의도한 수식 결과와 다른 경우 적절하게 수식을 수정하도록 합니다.",
  "crulechk.AVOID_BITWISE_ON_SAME_DATA.sca.note.desc.include_math": "math.h 헤더 파일을 포함해야 합니다.",
  "crulechk.AVOID_CASTING_TO_VIRTUAL_CLASS.msg": "Virtual 베이스 클래스로 캐스팅 하지 않도록 합니다. 복구가 불가능 해집니다.",
  "crulechk.AVOID_CATCHING_GENERIC_EXCEPTION.msg1": "너무 일반적인 예외를 catch 하고 있습니다.",
  "crulechk.AVOID_CROSS_SITE_SCRIPTING.msg1": "패스워드 생성 조건을 강화해야 합니다.",
  "crulechk.AVOID_DOWNCASTING.msg": "Base 클래스 객체의 포인터를 파생 클래스로 downcasting 하지 않도록 합니다.",
  "crulechk.AVOID_FRIEND_FUNCTION_AND_CLASS.msg": "합당한 설계 없이 Friend 클래스 혹은 함수의 사용은 피하도록 합니다.",
  "crulechk.AVOID_GLOBAL_VARIABLES.msg": "글로벌 변수를 방지합니다.",
  "crulechk.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS.bMsg": "{2} 번째 파라미터가 암시적으로 \"{0}\" 타입에서 \"{1}\" 타입으로 변합니다.",
  "crulechk.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS.msg": "함수 호출 시 인자값 전달과정에서 암시적 변환이 일어나는 코드를 작성하지 않도록 합니다.",
  "crulechk.AVOID_IMPLICIT_CONVERSION_OF_CLASS_TEMPLATE.msg": "클래스 템플릿을 사용할 시, 관계 없는 타입이 암시적으로 변환되는 것을 피해야 합니다.",
  "crulechk.AVOID_INBAND_ERROR_INDICATOR.msg1": "성공적으로 호출되었을 때는 절대 에러 값을 반환하지 않는 라이브러리 사용을 피해야 합니다.",
  "crulechk.AVOID_INFINITE_LOOP_WHEN_USE_PFM_TRY_CATCH.msg_blue": "PFM_CATCH 레이블 구분입니다.",
  "crulechk.AVOID_INFINITE_LOOP_WHEN_USE_PFM_TRY_CATCH.msg_red": "PFM_TRY 와 PFM_CATCH를 사용할 때 무한루프를 주의해야 합니다.",
  "crulechk.AVOID_KEYWORD_AS_MACRO_NAME.msg": "키워드를 매크로의 이름으로 사용하지 마십시오.",
  "crulechk.AVOID_MULTIPLE_DECLARATIONS.defect": "한 구문에 2개 이상의 변수를 선언했습니다.",
  "crulechk.AVOID_MULTIPLE_DECLARATIONS.member": "한 구문에 2개 이상의 멤버 변수를 선언했습니다.",
  "crulechk.AVOID_PARAM_NAME_IN_PROTOTYPE.msg1": "함수 프로토타입에서 파라미터 이름을 적는 것을 피해야 합니다.",
  "crulechk.AVOID_PTHREAD_MUTEX_NORMAL.msg1": "PTHREAD_MUTEX_NORMAL 타입의 뮤텍스 락은 피해야 합니다.",
  "crulechk.AVOID_PTHREAD_MUTEX_NORMAL.sca.desc.default": "'PTHREAD_MUTEX_NORMAL' 대신 'PTHREAD_MUTEX_ERRORCHECK' 를 사용하는 것이 좋습니다.",
  "crulechk.AVOID_RACE_CONDITION_WHEN_USING_LIBRARY.msg1": "라이브러리 함수 사용시 경쟁조건을 방지해야 합니다.",
  "crulechk.AVOID_SIDE_EFFECTS_IN_PREDICATES.msg1": "술어로 사용될 가능성이 있는 클래스 {0}의 operator() 함수 객체를 const 없이 선언했습니다.",
  "crulechk.AVOID_SIDE_EFFECTS_IN_PREDICATES.msg2": "술어로 사용될 가능성이 있는 람다 내에서 캡처한 외부 변수 {0}의 값이 변경되었습니다.",
  "crulechk.AVOID_SIDE_EFFECT_FROM_FUNCTION_CALL.msg": "함수 호출 시 부수효과(side effect)가 일어나지 않도록 합니다.",
  "crulechk.AVOID_SIDE_EFFECT_FROM_FUNCTION_CALL.sca.desc.seperate": "부수효과가 일어나지 않도록 식을 분리합니다.",
  "crulechk.AVOID_SIDE_EFFECT_FROM_FUNCTION_CALL.sca.note.desc.make_flow": "식의 분리 이후 의도된대로 동작하는지 코드를 검증 해야 합니다.",
  "crulechk.AVOID_SIDE_EFFECT_IN_EXPRESSION.msg": "수식 내에서 부수효과(side effect)가 일어나지 않도록 합니다.",
  "crulechk.AVOID_SIDE_EFFECT_IN_EXPRESSION.sca.desc.seperate": "부수효과가 일어나지 않도록 식을 분리합니다.",
  "crulechk.AVOID_SIDE_EFFECT_IN_EXPRESSION.sca.note.desc.code_flow": "식의 분리 이후 의도된대로 동작하는지 코드를 검증 해야 합니다.",
  "crulechk.AVOID_SIDE_EFFECT_IN_MACRO_ARG.msg1": "안전하지 않은 매크로에서 인자에 부가작용(Side-effect)이 없어야 합니다.",
  "crulechk.AVOID_SIDE_EFFECT_IN_PARAMETERS.msg": "파라미터에서 부수효과(Side-effect)가 일어나지 않도록 합니다.",
  "crulechk.AVOID_SIDE_EFFECT_IN_PARAMETERS.sca.desc.seperate": "부수효과가 일어나지 않도록 식을 분리합니다.",
  "crulechk.AVOID_SIDE_EFFECT_IN_PARAMETERS.sca.note.desc.make_flow": "식의 분리 이후 의도된대로 동작하는지 코드를 검증 해야 합니다.",
  "crulechk.AVOID_STRUCTURE_PADDING.msg1": "구조체에 패딩(Padding)이 발생하고 있습니다. 패딩이 생기지 않아야 합니다.",
  "crulechk.AVOID_THROWING_GENERIC_EXCEPTION.msg1": "너무 일반적인 예외를 발생시키고 있습니다.",
  "crulechk.AVOID_USING_STATIC_KEYWORD.msg": "네임스페이스 내에서 객체를 선언할 때 'static' 키워드 사용을 방지합니다.",
  "crulechk.BAD_ACCESS_VOLATILE_OBJ.msg1": "volatile 형이 아닌 레퍼런스를 통해서 volatile 객체에 접근하면 안됩니다.",
  "crulechk.BAD_ACCESS_VOLATILE_OBJ.sca.desc.default": "참조하는 변수에 volatile 한정자를 추가하도록 합니다.",
  "crulechk.BAD_ARGS.FORBIDDEN.AFTER_CALL.msg": "다음의 함수 ( {0} ) 호출 후 다음의 파라미터 ( {1} ) 가 사용되었습니다.",
  "crulechk.BAD_ARGUMENTS.UMASK.msg": "umask에 부적절한 인자가 사용되었습니다.",
  "crulechk.BAD_ASSERT_USAGE.msg1": "assert 내부의 조건문에 메모리 테스트가 있습니다.",
  "crulechk.BAD_ASSOCIATE_OPERATORS.msg1": "비교 연산자를 연달아 사용하지 마십시오",
  "crulechk.BAD_CALL.BACKGRND.BTM.PF.msg1": "SM에서 온디맨드 BTM을 Back-Ground Process로 호출시 'nohup' 으로 호출해야 합니다.",
  "crulechk.BAD_CALL.FORBIDDEN.LIB.PROCESS.msg": "프로세스 관련 함수({0}) 가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.LIB.RESOURCE.msg": "리소스 제한 관련 함수({0}) 가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.LIB.SIGNAL.msg": "시그널 관련 함수({0}) 가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.LIB.TEMP.msg": "임시 파일 관련 함수({0}) 가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.LIB.TIMER.msg": "타이머 관련 함수({0}) 가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.LIB.TP.msg": "TP(TMAX) 관련 함수({0}) 가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.PARAM.LITERAL.msg": "함수 호출에서 상수가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.PARAM.NAME.msg": "함수 호출에서 해당 이름 ({0}) 이 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.PARAM.NUMBER.msg": "{0} 에서 숫자가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.PARAM.STRING.msg1": "함수 호출에서 문자열이 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.PARAM.STRING.msg2": "함수 호출에서 문자열({0})이 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.PARAM.msg": "함수 호출에서 다음의 이름({0})이 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.VARARGS.msg": "함수 호출에서 변수가 사용되었습니다.",
  "crulechk.BAD_CALL.FORBIDDEN.msg": "금지된 함수를 사용하지 않도록 합니다.",
  "crulechk.BAD_CALL.IMPROPER_VARARGS.msg": "파라미터가 상수가 아니거나, 파라미터의 수가 유효하지 않습니다.",
  "crulechk.BAD_CALL.INCORRECT_SIZEOF.MEMCPY.msg1": "memcpy에서 sizeof()를 사용할 경우 인자로 포인터 또는 연산이 들어가지 말아야 합니다",
  "crulechk.BAD_CALL.INVALID_ADDRESS.SCANF.msg1": "scanf의 파라미터는 반드시 레퍼런스 타입이어야 합니다.",
  "crulechk.BAD_CALL.INVALID_ADDRESS.SCANF.sca.desc.add_ref": "변수의 레퍼런스를 인자로 사용합니다.",
  "crulechk.BAD_CALL.INVALID_BLOCK_SIZE.ALLOC.msg1": "할당되는 메모리 블록의 크기는 포인터의 배수여야 합니다.",
  "crulechk.BAD_CALL.INVALID_BLOCK_SIZE.ALLOC.sca.desc.resize": "4의 배수로 크기를 조절합니다.",
  "crulechk.BAD_CALL.LIBRARY.MEMORY.msg": "메모리 관련 함수({0}) 가 사용되었습니다.",
  "crulechk.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.msg": "특정 인자에서 함수 호출이 이루어지지 않았거나, 혹은 호출된 함수의 인자가 기본 인자와 같지 않습니다.",
  "crulechk.BAD_CALL.MISSING_CALL_PARAM.msg1": "함수 호출 후 해당 함수가 사용되지 않았습니다.",
  "crulechk.BAD_CALL.MISSING_CALL_PARAM.msg2": "함수 호출 후 함수({0})가 사용되지 않았습니다.",
  "crulechk.BAD_CALL.NOT_ALLOWED.PARAM.NAME.msg": "함수 호출에서 해당 이름 ({0}) 이 사용되지 않았습니다.",
  "crulechk.BAD_CALL.NOT_ALLOWED.PARAM.STRING.msg1": "함수 호출에서 문자열이 사용되지 않았습니다.",
  "crulechk.BAD_CALL.NOT_ALLOWED.PARAM.STRING.msg2": "함수 호출에서 문자열({0})이 사용되지 않았습니다.",
  "crulechk.BAD_CALL.NUMBER_OF_VARARGS_MISMATCH.msg1": "가변인수를 받는 함수의 Conversion 지시자와 인자의 개수는 동일해야 합니다.",
  "crulechk.BAD_CALL.NUMBER_OF_VARARGS_MISMATCH.msg2": "가변인수를 받는 함수의 Conversion 지시자는 {0}개 인데 반해, 인자의 개수는 {1}개로 더 적습니다.",
  "crulechk.BAD_CALL.NUMBER_OF_VARARGS_MISMATCH.sca.desc.default": "인자를 알맞게 추가합니다.",
  "crulechk.BAD_CALL.PARAM.msg1": "지정된 함수의 지정된 파라미터에서는 반드시 상수를 사용하지 말아야 합니다.",
  "crulechk.BAD_CALL.REQUIRED.AFTER_CALL.msg": "함수 {0}이 호출되었지만 {1} 함수가 호출되지 않았습니다.",
  "crulechk.BAD_CALL.REQUIRED.AFTER_CALL_TMP.msg": "이 함수는 잘못된 순서로 사용되었습니다. - 순서 : {0}",
  "crulechk.BAD_CALL.REQUIRED.ARGS.msg": "함수({0})는 파라미터({1})를 사용하지 않았습니다.",
  "crulechk.BAD_CALL.REQUIRED.LIB_CALL.bMsg": "이 함수는 대상 함수 입니다.",
  "crulechk.BAD_CALL.REQUIRED.LIB_CALL.msg": "이 함수는 필요한 함수 입니다.",
  "crulechk.BAD_CALL.REQUIRED.LIB_CALL.nsMsg": "이 함수 {0}() 는 필요하나 사용되지 않았습니다.",
  "crulechk.BAD_CALL.REQUIRED.PARAM.msg": "금지된 함수({0})가 사용되었습니다.",
  "crulechk.BAD_CALL.REQUIRED.PRE_CALL.msg": "이 함수는 잘못된 순서로 사용되었습니다. - 순서 : {0}",
  "crulechk.BAD_CALL.REQUIRED.VARARGS.msg": "함수 호출에서 변수가 사용되지 않았습니다.",
  "crulechk.BAD_CALL.REQUIRED.WRAPPER.msg": "{0}이 {1}의 파라미터로 사용되지 않습니다.",
  "crulechk.BAD_CALL.REQUIRED.msg": "함수({0})가 사용되지 않았습니다.",
  "crulechk.BAD_CALL.SERVICE_MAIN.PF.msg": "서비스 메인 블록에서는 오직 init_proc, input_valid_proc, main_proc, norm_exit_proc, error_exit_proc 만 호출해야 합니다.",
  "crulechk.BAD_CALL.TYPE_MISMATCH.REALLOC.msg1": "realloc 타입과 형변환 타입이 일치하지 않습니다",
  "crulechk.BAD_CALL.TYPE_MISMATCH.REALLOC.msg2": "realloc 타입과 형변환 타입이 일치하지 않습니다",
  "crulechk.BAD_CALL.TYPE_MISMATCH.SPRINTF.msg1": "버퍼가 배열의 레퍼런스입니다.",
  "crulechk.BAD_CALL.TYPE_MISMATCH.SPRINTF.msg2": "버퍼 오버플로우가 발생할 수 있습니다.",
  "crulechk.BAD_CALL.TYPE_MISMATCH.STRING.msg1": "파라미터 {0} 타입이 잘못 사용되었습니다.",
  "crulechk.BAD_CALLING_CONVENTION.msg1": "{1} 에서 {0}을 호출할 수 없습니다.",
  "crulechk.BAD_CAST_COMPLEX_EXPR.msg": "복잡한 수식 값의 signed, unsigned간 변환을 하지 않도록 합니다.",
  "crulechk.BAD_COMPARE.msg1": "상수 값과 함수 포인터를 비교하면 안됩니다.",
  "crulechk.BAD_COMPARE.sca.desc.default": "함수 포인터 대신 함수 호출로 변경하도록 합니다.",
  "crulechk.BAD_COMPARISON.STRING.msg": "문자열을 잘못된 방식으로 비교했습니다.",
  "crulechk.BAD_COMPOUND_STATEMENT.CURLY_BRACE.msg": "복합 문장을 닫는 괄호의 들여 쓰기는 열때의 들여 쓰기와 같아야 합니다.",
  "crulechk.BAD_DB_TRANSACTION.msg1": "커밋 함수가 호출되었습니다.",
  "crulechk.BAD_DB_TRANSACTION.msg2": "롤백 함수가 없습니다.",
  "crulechk.BAD_DB_TRANSACTION.msg3": "롤백 함수가 호출되었습니다.",
  "crulechk.BAD_DB_TRANSACTION.msg4": "커밋 함수가 없습니다.",
  "crulechk.BAD_EQUALITY_EXPRESSION.BOOLEAN.msg": "비교 연산에서 값은 허용되지 않았습니다.",
  "crulechk.BAD_EQUALITY_EXPRESSION.FLOAT.msg": "float 값들은 비교 연산을 수행하지 않아야 합니다.",
  "crulechk.BAD_EQUALITY_EXPRESSION.FLOAT.sca.desc.fabs": "fabs 함수를사용합니다.",
  "crulechk.BAD_ERROR.INVALID_CODE.msg1": "파라미터({1})에서 {0} 문자열이 사용되지 않았습니다.",
  "crulechk.BAD_ERROR.INVALID_CODE.msg2": "파라미터에서 {0} 문자열이 사용되지 않았습니다.",
  "crulechk.BAD_ERROR.MISSING_INIT.msg": "초기화 함수를 호출하지 않고 에러 코드를 리턴했습니다.",
  "crulechk.BAD_ERROR.MISSING_LOGGING.msg": "에러 로깅 함수 호출 없이 에러 코드가 리턴되었습니다.",
  "crulechk.BAD_ERROR.MISSING_RETURN.msg": "리턴이 없습니다.",
  "crulechk.BAD_FORM_FORLOOP_CONTINUE.msg": "for loop가 6-5-1, 6-5-6룰을 만족할때에만 continue구문을 사용할 수 있습니다.",
  "crulechk.BAD_FUNCTION_ADDRESSING.msg1": "함수 식별자는 & 연산을 통해 사용하거나 호출할 경우에만 사용해야 합니다.",
  "crulechk.BAD_HEADER_FILE.DATA.msg1": "데이터는 헤더파일이 아닌 소스파일(.c)에 선언해야 합니다.",
  "crulechk.BAD_HEADER_FILE.DEFINE.define": "#define 문이 선언되어 있지 않습니다.",
  "crulechk.BAD_HEADER_FILE.DEFINE.msg1": "헤더 파일의 첫번째 시작은 반드시 #ifndef로 하도록 합니다.",
  "crulechk.BAD_INCLUDE.DUPLICATED.msg1": "{0} 가 한번 이상 include 되었습니다.",
  "crulechk.BAD_INCLUDE.DUPLICATED.srcMsg": "첫 번째 include 전처리 구문 입니다.",
  "crulechk.BAD_INCLUDE.FORBIDDEN.msg": "해당 헤더 파일을 include 하는 것은 금지되었습니다.",
  "crulechk.BAD_INCLUDE.INVALID_PATH.msg": "잘못된 헤더 파일 경로가 사용되었습니다.",
  "crulechk.BAD_INCLUDE.REQUIRED.msg": "필요한 헤더 파일이 없습니다.",
  "crulechk.BAD_INCLUDE.msg": "시스템 헤더파일은 사용자 헤더파일 전에 include 되어야 합니다.",
  "crulechk.BAD_INDENTATION.BLOCK.msg1": "적절한 들여 쓰기는 {0} 입니다.",
  "crulechk.BAD_INDENTATION.BLOCK.msg2": "복합 문장을 여는 중괄호는 라인의 마지막이어야 합니다.",
  "crulechk.BAD_INDENTATION.BLOCK.msg3": "복합 문장을 닫는 중괄호는 여는 중괄호와 동일한 들여 쓰기 길이를 가져야 합니다.",
  "crulechk.BAD_INDENTATION.BLOCK.msg4": "switch문의 평가 수식은 switch 키워드 오른쪽에 위치하여야 합니다.",
  "crulechk.BAD_INDENTATION.BLOCK.msg5": "switch문의 복합 문장(compound statement, \"'{'\"을 의미) 은 평가 수식 오른쪽에 위치하여야 합니다.",
  "crulechk.BAD_INDENTATION.CASE_LABELS.msg1": "적절한 들여 쓰기는 {0} 입니다.",
  "crulechk.BAD_INDENTATION.CASE_LABELS.msg2": "두개의 case 라벨 사이에 한 줄 이상이 있어야 합니다.",
  "crulechk.BAD_INDENTATION.IMPROPER_LENGTH.msg1": "들여 쓰기는 {0} 로 합니다.",
  "crulechk.BAD_INDENTATION.IMPROPER_LENGTH.msg2": "탭을 사용하지 않도록 합니다.",
  "crulechk.BAD_INDENTATION.SOURCE_CODE.mgs1": "소스코드는 첫 번째 열에서 시작되어야 합니다.",
  "crulechk.BAD_INDENTATION.SOURCE_CODE.msg1": "소스 코드는 첫 번째 열에서 시작되어야 합니다.",
  "crulechk.BAD_INDENTATION.SWITCH_STATEMENT.msg1": "switch 문의 평가 수식은 switch 키워드 오른쪽에 위치하여야 합니다.",
  "crulechk.BAD_INDENTATION.SWITCH_STATEMENT.msg2": "switch문의 복합 문장은 평가 수식 오른쪽에 위치하여야 합니다.",
  "crulechk.BAD_INIT.MISSING_AFTER_DECLARATION.msg": "선언 후에 초기화가 없습니다.",
  "crulechk.BAD_INIT.MISSING_AFTER_DECLARATION.sca.desc.default": "선언 시 반드시 초기화 구문도 넣어줍니다.",
  "crulechk.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.msg1": "초기화가 필요합니다.",
  "crulechk.BAD_INITIALIZATION.ARRAY.msg1": "배열 초기화가 적절하지 않습니다",
  "crulechk.BAD_INITIALIZATION.ARRAY.msg2": "{0} 길이의 배열을 {1} 길이의 문자열로 초기화 시도하여 배열 범위를 벗어납니다.",
  "crulechk.BAD_INITIALIZATION.ARRAY.sca.desc.resize": "변수 배열의 크기를 컴파일러가 결정하게 합니다.",
  "crulechk.BAD_INITIALIZATION.ARRAY.sca.desc.sizeup": "변수 배열의 크기를 (문자열길이+1) 이상으로 설정합니다.",
  "crulechk.BAD_INITIALIZATION.ARRAY.sca.note.desc.at_least_one_more": "변수 배열의 크기는 최소 {0} 이상이면 됩니다.",
  "crulechk.BAD_INTEGER_CONST_DEFINITION.msg1": "정수 상수가 16진수 형태로 정의되었습니다",
  "crulechk.BAD_INTEGER_EXPRESSION.msg1": "좌항과 우항 모두 각각 다른 타입입니다.",
  "crulechk.BAD_MACRO.DANGEROUS_USAGE.msg_r": "안전하지 않은 매크로에 부작용(side-effect)가 있는 인자를 피해야 합니다.",
  "crulechk.BAD_MACRO.DANGEROUS_USAGE.msg_y": "매크로를 정의했습니다.",
  "crulechk.BAD_MACRO.DUPLICATED.msg": "매크로가 중복되었습니다. {0} 길이까지의 이름을 인식하기 때문에 중복입니다.",
  "crulechk.BAD_MACRO.DUPLICATED.srcMsg": "첫 번째 매크로를 선언했습니다.",
  "crulechk.BAD_MACRO.MISUSE.msg1": "매크로가 순서에 맞게 사용되지 않았습니다.",
  "crulechk.BAD_MACRO.MULTI_STMT_WITHOUT_DO_WHILE.msg1": "이 매크로는 복수 구문 매크로입니다. 반드시 do-while 루프로 감싸야 합니다.",
  "crulechk.BAD_MACRO.NAME_LENGTH.MISRA2012.msg": "매크로 이름이 63자가 넘었습니다. {0}",
  "crulechk.BAD_MACRO.NAMING.msg": "정의된 매크로 이름이 유효하지 않습니다.",
  "crulechk.BAD_MACRO.NO_PARENTHESES.msg1": "매크로 내의 파라미터 이름 주위에 괄호를 사용해야 합니다.",
  "crulechk.BAD_MACRO.NO_PARENTHESES.msg2": "매크로 치환 리스트는 주위에 괄호를 사용해야 합니다.",
  "crulechk.BAD_MACRO.REPLACE_SECURE_FUNCTIONS.msg1": "보안 결함이 있는 함수를 매크로로 치환하지 마십시오.",
  "crulechk.BAD_MACRO.TRAILING_SEMICOLON.msg": "매크로가 세미콜론으로 끝납니다.",
  "crulechk.BAD_MACRO_USAGE.msg1": "매크로로 구현되었을지도 모르는 사전 정의된 식별자를 객체로 다루면 안됩니다.",
  "crulechk.BAD_MALLOC.msg1": "malloc()을 사용할 경우, 첫 번째 인자로 wcslen()을 사용하면 결과와 sizeof(wchar_t)를 곱해주어야 합니다.",
  "crulechk.BAD_MALLOC.sca.desc.default": "sizeof(wchar_t) 만큼을 곱해주도록 합니다.",
  "crulechk.BAD_METHOD_DECLARATION.msg1": "인자가 없는 함수에 void 키워드를 사용하지 않도록 합니다.",
  "crulechk.BAD_METHOD_DECLARATION.msg2": "콤마 연산자 전에 공백을 넣지 않도록 합니다.",
  "crulechk.BAD_METHOD_DECLARATION.msg3": "콤마 연산자와 뒤따르는 파라미터 사이에 한 개 이상의 공백이 있어야 합니다.",
  "crulechk.BAD_METHOD_DECLARATION.msg4": "파라미터의 들여쓰기는 첫 번째 파라미터와 일치해야 합니다.",
  "crulechk.BAD_METHOD_DECLARATION.msg5": "닫는 괄호의 들여쓰기는 여는 괄호와 일치해야 합니다.",
  "crulechk.BAD_NAME.BATCH_FILENAME.PF.msg1": "파일 이름이 B나 U로 시작하지 않았습니다.",
  "crulechk.BAD_NAME.BATCH_FILENAME.PF.msg2": "업무코드가 유효하지 않습니다.",
  "crulechk.BAD_NAME.BATCH_FILENAME.PF.msg3": "마지막 다섯 자리가 숫자가 아닙니다.",
  "crulechk.BAD_NAME.BATCH_FILENAME.PF.msg4": "업무코드 다음에 오는 4자리는 대문자 알파벳으로 구성되어야 합니다.",
  "crulechk.BAD_NAME.BM.PF.msg1": "파일 이름이 'M'으로 시작하지 않습니다.",
  "crulechk.BAD_NAME.BM.PF.msg2": "업무 코드가 잘못되었습니다.",
  "crulechk.BAD_NAME.CLASS.msg": "클래스 이름은 반드시 'C'로 시작하거나 끝이 '_c', '_class'로 끝나야 합니다.",
  "crulechk.BAD_NAME.CONSTANT.msg": "허용되지 않은 상수 이름 입니다.",
  "crulechk.BAD_NAME.CONTEXT_VARIABLE.PF.msg": "적절하지 않은 컨텍스트 구조체 변수 이름입니다.",
  "crulechk.BAD_NAME.DBIO.PF.msg": "적절하지 않은 DBIO 파일 이름입니다.",
  "crulechk.BAD_NAME.DEFINE.msg": "대문자와 _ 만 매크로이름으로 사용할 수 있습니다.",
  "crulechk.BAD_NAME.DUPLICATED.MISRA2012.bMsg": "{0} 식별자가 먼저 사용된곳 입니다.",
  "crulechk.BAD_NAME.DUPLICATED.MISRA2012.msg": "식별자는 이미 사용되었습니다.",
  "crulechk.BAD_NAME.DUPLICATED.bMsg": "{0} 식별자가 먼저 사용된곳 입니다.",
  "crulechk.BAD_NAME.DUPLICATED.msg": "식별자는 이미 사용되었습니다.",
  "crulechk.BAD_NAME.ENUM.msg": "대문자와 _ 만 상수이름으로 사용할 수 있습니다.",
  "crulechk.BAD_NAME.ENUM_PREFIX.msg1": "허용되지 않는 열거형 상수 이름입니다. (prefix_id 형태여야 합니다)",
  "crulechk.BAD_NAME.ENUM_PREFIX.msg2": "열거형 상수 이름이 일관성이 없습니다.",
  "crulechk.BAD_NAME.GLOBAL_IDENTIFIER_NAME.MISRA2012.msg": "static 혹은 extern으로 선언된 전역변수의 식별자 길이가 63을 넘으면 안됩니다.",
  "crulechk.BAD_NAME.GLOBAL_VARIABLE.msg": "선언된 전역 변수의 이름은 유효하지 않습니다.",
  "crulechk.BAD_NAME.GRID_COUNTER.PF.msg": "적절하지 않은 그리드 카운터 이름입니다.",
  "crulechk.BAD_NAME.POINTER_VARIABLE.msg": "선언된 포인터 변수의 이름은 유효하지 않습니다.",
  "crulechk.BAD_NAME.SERVICE.PF.msg1": "적절하지 않은 길이입니다. 파일 이름은 {0}자리여야 합니다.",
  "crulechk.BAD_NAME.SERVICE.PF.msg2": "파일 이름에 소문자가 있습니다.",
  "crulechk.BAD_NAME.SERVICE.PF.msg3": "파일 이름이 'S'로 시작하지 않습니다.",
  "crulechk.BAD_NAME.SERVICE.PF.msg4": "부적절한 업무코드입니다.",
  "crulechk.BAD_NAME.SERVICE.PF.msg5": "순번이 잘못 사용되었습니다.",
  "crulechk.BAD_NAME.SERVICE.PF.msg6": "파일 이름의 마지막 글자가 잘못되었습니다.",
  "crulechk.BAD_NAME.SERVICE_IN_OUT.PF.msg": "서비스 모듈 헤더 파일의 *input,*output 구조체 이름은 반드시 \"서비스 이름_IN,OUT\" 형태여야 합니다.",
  "crulechk.BAD_NAME.SERVICE_STRUCT.PF.msg1": "파일 이름이 'S'로 시작하지 않습니다.",
  "crulechk.BAD_NAME.SERVICE_STRUCT.PF.msg2": "부적절한 업무코드입니다.",
  "crulechk.BAD_NAME.SERVICE_STRUCT.PF.msg3": "순번이 잘못 사용되었습니다.",
  "crulechk.BAD_NAME.SERVICE_STRUCT.PF.msg4": "순번이 잘못 사용되었습니다.",
  "crulechk.BAD_NAME.SERVICE_STRUCT.PF.msg5": "파일 이름의 마지막 글자가 잘못되었습니다.",
  "crulechk.BAD_NAME.TOO_LONG.msg": "식별자의 길이는 {0} 이며 허용된 최대 길이는 {1} 입니다. 길이를 초과했습니다.",
  "crulechk.BAD_NAME.USER_DEFINED_TYPE.msg": "사용자 정의타입은 반드시 'T'로 시작하거나 끝이 '_t', '_type'으로 끝나야 합니다.",
  "crulechk.BAD_NAME.VARIABLE.msg": "금지된 이름({0}) 목록은 사용하지 않도록 합니다.",
  "crulechk.BAD_NAME.VARIABLE_BY_TYPE.msg": "선언된 구조체 타입의 변수의 이름은 유효하지 않습니다.",
  "crulechk.BAD_OPERATION_WHILE_POSIX_LOCK.msg1": "POSIX 락이 걸린 상태에서 block 이 발생할 수 있는 연산을 수행하면 안됩니다.",
  "crulechk.BAD_OPERATOR.ASSIGNMENT_IN_COND.msg": "대입 연산 대신 비교 연산을 수행하려는 의도인지 검사해야 합니다.",
  "crulechk.BAD_OPERATOR.ASSIGNMENT_IN_COND.sca.desc.default": "조건문 내에서 대입 연산 한 부분을 비교 연산으로 변경합니다.",
  "crulechk.BAD_OPERATOR.ASSIGNMENT_IN_COND.sca.note.desc.move_assign": "만약 조건문 내에서 대입 연산 사용이 의도된 경우는 가급적 조건문 외에서 처리하도록 합니다.",
  "crulechk.BAD_OPERATOR.EXPRESSION_IN_SIZEOF.msg": "sizeof 연산자의 인자에 수식 형태를 사용하지 않도록 합니다.",
  "crulechk.BAD_OPERATOR.LOGICAL_COMPARISON.msg": "비교 연산 대신 대입 연산을 수행하려는 의도인지 검사해야 합니다.",
  "crulechk.BAD_OPERATOR.LOGICAL_COMPARISON.sca.desc.default": "비교 연산을 사용한 부분을 대입 연산으로 변경합니다.",
  "crulechk.BAD_OPERATOR.LOGICAL_COMPARISON.sca.note.desc.change_operator": "연산자가 변경되었으므로, 변경된 코드가 의도한 것이 맞는지 확인해야 합니다.",
  "crulechk.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.msg": "괄호는 명시적으로 우선순위를 표시하는데 좋습니다.",
  "crulechk.BAD_PARAM.PFM_SET_ERR.PF.msg1": "잘못된 업무코드입니다.",
  "crulechk.BAD_PARAM.PFM_SET_ERR.PF.msg2": "업무코드 다음이 숫자 5자리가 아닙니다.",
  "crulechk.BAD_PARAM.PFM_SET_ERR.PF.msg3": "9자리가 아닙니다. 업무구분 4자리와 숫자 5자리로 구성되어야 합니다.",
  "crulechk.BAD_PARENTHESIS.msg1": "여는 괄호와 닫는 괄호 사이에 공백이 없어야 합니다.",
  "crulechk.BAD_PARENTHESIS.msg2": "여는 괄호와 파라미터 사이에는 한 개 이상의 공백이 있어야 합니다.",
  "crulechk.BAD_PARENTHESIS.msg3": "파라미터와 닫는 괄호 사이에는 한 개 이상의 공백이 있어야 합니다.",
  "crulechk.BAD_PATH_MANIPULATION.msg": "PathAppend 의 결과를 담는 배열의 길이가 260 미만입니다.",
  "crulechk.BAD_PRIVILEGE_ASSIGNMENT.msg1": "root 권한 획득은 위험합니다.",
  "crulechk.BAD_PRIVILEGE_RELINQUISHMENT.msg1": "setgid가 setuid 호출 후 호출되었습니다.",
  "crulechk.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.msg": "파라미터에 한정자({0})가 있습니다.",
  "crulechk.BAD_QUALIFIER.FORBIDDEN.msg": "한정자는 금지되었습니다.",
  "crulechk.BAD_QUALIFIER.REQUIRED.PARAM_PTR.msg": "파라미터에 한정자({0})가 없습니다.",
  "crulechk.BAD_RETURN_TEST.msg1": "리턴값이 비교되지 않았습니다.",
  "crulechk.BAD_RETURN_TEST.msg2": "리턴값이 0이 아닌 값과 비교했습니다.",
  "crulechk.BAD_RETURN_TEST.msg3": "비교 연산이 호출과 이미 알려진 리턴 상태를 구분하지 못합니다.",
  "crulechk.BAD_RETURN_TEST.msg_blue": "값이 리턴되었습니다.",
  "crulechk.BAD_RETURN_TEST.sca.desc.default": "리턴된 결과를 0과 비교하도록 합니다.",
  "crulechk.BAD_RETURN_TEST.sca.note.desc.check_logic": "예시의 비교 구문이 원하는 흐름이 아닐 경우, 반드시 로직에 맞게 비교 구문을 변경해야 합니다.",
  "crulechk.BAD_SEMICOLON.WHILE_STATEMENT.msg": "do-while 문장을 끝내는 세미콜론은 닫는 괄호 오른쪽에 위치해야 합니다.",
  "crulechk.BAD_STRING_MANAGEMENT.msg1": "멀티 바이트 문자열 함수를 사용하면 안됩니다.",
  "crulechk.BAD_STRUCT.ALIGNMENT.msg": "구조체의 크기가 얼라이먼트 크기 {1}의 배수가 아닌 {0} 입니다.",
  "crulechk.BAD_STRUCT.PADDING.msg": "패딩이 있는 좋지 않은 구조체 형태 입니다.",
  "crulechk.BAD_STRUCT.SIZE.msg": "구조체의 크기가 허용된 최대 크기보다 큽니다.",
  "crulechk.BAD_STRUCT_MEMBER_ACCESS.msg": "{0} 변수가 {1}회 이상 사용되었습니다.",
  "crulechk.BAD_SUFFIX_FOR_LONG_VALUE.msg1": "long 값을 나타낼때 \"l\" 대신 \"L\"을 사용하십시오. 혼동의 우려가 있습니다",
  "crulechk.BAD_SUFFIX_FOR_LONG_VALUE.sca.desc.default": "소문자 L(l) 대신 대문자 L을 사용해야 합니다. 숫자 1과 혼동의 우려가 있습니다.",
  "crulechk.BAD_TRY_CATCH_MACRO_USAGE.bMsg": "catch 매크로가 사용되었습니다.",
  "crulechk.BAD_TRY_CATCH_MACRO_USAGE.msg": "catch 매크로 사용 후 try 매크로가 사용되었습니다.",
  "crulechk.BAD_TYPE.FORBIDDEN.CHAR.msg": "char 타입을 사용하지 않도록 합니다.",
  "crulechk.BAD_TYPE.FORBIDDEN.FLOAT.msg": "float 타입은 금지되었습니다.",
  "crulechk.BAD_TYPE.FORBIDDEN.msg": "이 타입은 금지되었습니다.",
  "crulechk.BAD_TYPE.NOT_ALLOWED.ARRAY.msg": "배열 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_ALLOWED.COMPOUND.msg": "변수에서 복합 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_ALLOWED.PTR.msg": "포인터 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_ALLOWED.TYPEDEF.msg": "typedef 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_ALLOWED.msg": "기본 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_TYPEDEF.ARRAY.msg": "typedef 없이 배열 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_TYPEDEF.MEMBER.msg": "typedef 없이 멤버 변수 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_TYPEDEF.PARAM.msg": "typedef 없이 파라미터 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_TYPEDEF.PTR.msg": "typedef 없이 포인터 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_TYPEDEF.RETURN.msg": "typedef 없이 리턴 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE.NOT_TYPEDEF.msg": "typedef 없이 변수 타입은 허용되지 않습니다.",
  "crulechk.BAD_TYPE_DECLARATION.msg1": "타입 선언의 양식은 \"{0}\" 이어야 합니다.",
  "crulechk.BAD_TYPE_DECLARATION.msg2": "타입 선언시 적절한 들여쓰기를 사용해야 합니다.",
  "crulechk.BAD_TYPE_DECLARATION.msg3": "한 라인에서 한개 이상의 필드를 선언하지 않도록 합니다.",
  "crulechk.BAD_TYPE_DECLARATION.msg4": "타입 선언시 적절한 들여쓰기를 사용해야 합니다.",
  "crulechk.BAD_VARIABLE_DECLARATION.LOOP.msg1": "반복문 인덱스 변수는 for 문에서 선언해야 합니다.",
  "crulechk.BAD_VARIABLE_DECLARATION.LOOP.msg2": "반복문 인덱스 변수는 의미있는 이름을 가져야 합니다.",
  "crulechk.BAD_VARIABLE_DECLARATION.LOOP.msg3": "초기화 구문이 빠졌습니다.",
  "crulechk.BAD_VLA_PARAMETER.msg": "허용되지 않은 가변 크기 배열 타입의 파라미터를 포함하여 함수를 선언했습니다.",
  "crulechk.BAD_WHITESPACE.ACCESSING.msg1": "[ 연산자 앞에 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.ACCESSING.msg2": "[ 연산자 뒤에 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.ACCESSING.msg3": ".연산자 앞에는 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.ACCESSING.msg4": ".연산자 뒤에는 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.ACCESSING.msg5": "->연산자 앞에는 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.ACCESSING.msg6": "->연산자 뒤에는 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.BASIC_OPERATORS.msg": "연산자 사이에는 공백이 필요합니다.",
  "crulechk.BAD_WHITESPACE.CALL.msg1": "여는 괄호는 함수 이름 다음에 와야 합니다.",
  "crulechk.BAD_WHITESPACE.CALL.msg2": ",연산자 전에는 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.CALL.msg3": ",연산자와 뒤따라오는 파라미터 사이에는 한 개 이상의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.CALL.msg4": "여는 괄호와 파라미터 사이에는 한 개 이상의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.CALL.msg5": "파라미터와 닫는 괄호 사이에는 한 개 이상의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.CALL.msg6": "여는 괄호와 닫는 괄호 사이에는 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.CASTING.msg1": "캐스팅 연산자의 피연산자는 새로운 라인에 작성하지 않도록 합니다.",
  "crulechk.BAD_WHITESPACE.CASTING.msg2": "캐스트 연산에는 공백이 없도록 합니다.",
  "crulechk.BAD_WHITESPACE.COMMA.msg1": ",연산자와 좌측 피연산자 사이에는 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.COMMA.msg2": ",연산자와 우측 피연산자 사이에는 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.FOR_STATEMENT.msg1": "for문장의 여는 괄호 후에는 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.FOR_STATEMENT.msg2": "여는 괄호 후에는 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.FOR_STATEMENT.msg3": "for문장의 닫는 괄호 전에는 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.FOR_STATEMENT.msg4": "닫는 괄호 전에는 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.FOR_STATEMENT.msg5": "세미콜론 후에는 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.FUNCTION.msg": "여는 괄호는 함수 이름 오른쪽으로 와야 합니다.",
  "crulechk.BAD_WHITESPACE.IF_STATEMENT.msg1": "if문장의 경우 여는 괄호 후에 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.IF_STATEMENT.msg2": "if문장의 경우 닫는 괄호 전에 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.KEYWORD.msg": "예약된 키워드 후에 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.POINTER.msg": "타입 선언자 \"*\"는 변수 이름 바로 앞에 위치해야 합니다.",
  "crulechk.BAD_WHITESPACE.SEMICOLON.msg": "세미콜론 전에는 공백이 없어야 합니다.",
  "crulechk.BAD_WHITESPACE.SWITCH_STATEMENT.msg1": "switch 문장의 여는 괄호 후에 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.SWITCH_STATEMENT.msg2": "switch 문장의 닫는 괄호 전에 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.WHILE_STATEMENT.msg1": "while문장의 여는 괄호 후에 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.WHILE_STATEMENT.msg2": "while문장의 닫는 괄호 전에 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.WHILE_STATEMENT.msg3": "do-while문장의 여는 괄호 후에 1개의 공백이 있어야 합니다.",
  "crulechk.BAD_WHITESPACE.WHILE_STATEMENT.msg4": "do-while문장의 닫는 괄호 전에 1개의 공백이 있어야 합니다.",
  "crulechk.BANNED_ADVANCED_MEMORY_MANAGEMENT.msg_dtor": "소멸자 {0} 의 명시적 호출이 이루어졌습니다.",
  "crulechk.BANNED_ADVANCED_MEMORY_MANAGEMENT.msg_lowlevel": "금지된 저수준 메모리 관리 함수인 {0}의 호출이 이루어졌습니다.",
  "crulechk.BANNED_ADVANCED_MEMORY_MANAGEMENT.msg_op_overload": "클래스 내에서 operator {0} 의 연산자 오버로딩이 선언되었습니다.",
  "crulechk.BANNED_ADVANCED_MEMORY_MANAGEMENT.msg_placement": "{0} 객체 생성에 placement new 연산자를 사용했습니다.",
  "crulechk.BANNED_C_STYLE_CHAR_FUNCTION.msg": "금지된 C 스타일 문자 처리 함수인 {0}의 호출이 이루어졌습니다.",
  "crulechk.BANNED_C_STYLE_MEMORY_MANIPULATING_FUNCTION.msg": "금지된 C 스타일 메모리 조작 함수인 {0}의 호출이 이루어졌습니다.",
  "crulechk.BANNED_C_STYLE_STRING_FUNCTION.msg": "금지된 C 스타일 문자열 처리 함수인 {0}의 호출이 이루어졌습니다.",
  "crulechk.BASE_CLASS_NOT_BE_VITRUAL_AND_NON_IN_SAME_HIERARCHY.msg": "기초 클래스는 가상 또는 비가상으로 만 상속되어져야 합니다.",
  "crulechk.BASE_CLASS_SHOULD_BE_DECLARED_VIRTUAL_ONLY_IN_DIAMOND_HIERARCHY.msg": "기초 클래스가 다이아몬드 계층구조 일 때, 가상으로 선언되어져야 합니다.",
  "crulechk.BEWARE_LARGER_SIZE_INT_EXPR.msg1": "더 큰 타입의 정수형과 비교나 대입하기 전에 정수 표현식을 계산하고 있습니다",
  "crulechk.BEWARE_OF_COMPILER_OPTIMIZATIONS.msg": "컴파일러 최적화를 고려하도록 합니다.",
  "crulechk.BEWARE_OF_PRECISION_LOSS.msg": "정수형을 실수형으로 변환할 때 정밀도의 손실을 주의하도록 합니다.",
  "crulechk.BEWARE_OF_PRECISION_LOSS.sca.desc.default": "2^24승을 넘을 수 있는 값을 대입할 시엔 충분한 정밀도를 가진 실수형을 사용하도록 합니다.",
  "crulechk.BEWARE_OF_PRECISION_LOSS.sca.note.desc.change_casting_type": "저장하는 결과값이 명시적인 캐스팅에 의한 경우, 캐스팅 타입도 수정되어야 합니다.",
  "crulechk.BEWARE_OF_PRECISION_LOSS.sca.note.desc.change_other_code": "변수의 타입이 변경되었으므로 관련된 코드가 수정되어야 합니다.",
  "crulechk.BEWARE_OF_PRECISION_LOSS.sca.note.desc.check_decl": "메소드의 선언부도 함께 수정되어야 합니다.",
  "crulechk.BEWARE_OF_PRECISION_LOSS.sca.note.desc.check_variable": "캐스팅의 결과가 변수에 저장되는 경우, 변수의 타입이 충분한 정밀도를 가지는지 확인해야 합니다.",
  "crulechk.BEWARE_RACE_CONDITION.msg1": "fork와 file descriptor 를 사용하고 있을 때 경쟁상태를 조심하십시오",
  "crulechk.BEWARE_THIRD_PARAM_IN_MAIN.msg1": "환경변수 포인터에 의존하면 안됩니다. 뒤이어 오는 연산에 의해 무효화 될 수 있습니다.",
  "crulechk.BEWARE_THIRD_PARAM_IN_MAIN.msg2": "함수 {0}가 호출되고 있습니다",
  "crulechk.BEWARE_USE_FLEXIBLE_ARRAY_MEMBER.msg1": "가변 배열을 멤버로 가지고 있는 구조체를 동적으로 할당하거나 복사할 때 주의해야 합니다.",
  "crulechk.BEWARE_USE_FLEXIBLE_ARRAY_MEMBER.msg2": "가변 배열 멤버가 선언되었습니다.",
  "crulechk.BEWARE_USE_FLEXIBLE_ARRAY_MEMBER.sca.desc.default": "가변 배열 멤버를 가진 구조체는 동적으로 할당해야 합니다.",
  "crulechk.BEWARE_USE_FLEXIBLE_ARRAY_MEMBER.sca.note.desc.argument": "수정된 예시에 맞게 함수 내부도 수정하시기 바랍니다.",
  "crulechk.BEWARE_USE_FLEXIBLE_ARRAY_MEMBER.sca.note.desc.size": "ARRAY_SIZE 는 가변 배열의 크기를 나타냅니다. 별도 설정하시기 바랍니다.",
  "crulechk.BITFIELD_SIGNED_TYPE_AT_LEAST_TWO_BITS.msg1": "부호 있는 비트필드는 적어도 2비트 이상이어야 합니다.",
  "crulechk.BITFIELD_SIGNED_TYPE_AT_LEAST_TWO_BITS.sca.desc.default": "부호 있는 정수 타입의 비트필드는 1비트 대신 최소 2비트를 사용해야 합니다.",
  "crulechk.BITWISE_OPERANDS_SHOULD_HAVE_SAME_TYPE.msg": "두 피연산자는 같은 자료형을 가져야합니다.",
  "crulechk.BITWISE_OPERATION_BOOLEAN.msg1": "Boolean 형의 변수에 비트 연산자를 사용해서는 안됩니다.",
  "crulechk.BITWISE_OPERATION_BOOLEAN.sca.desc.default": "boolean 타입을 일반 정수형 타입으로 변경하여 사용합니다.",
  "crulechk.BITWISE_OPERATION_BOOLEAN.sca.note.desc.change_other_code": "변수의 타입이 변경되었으므로 관련된 코드가 수정되어야 합니다.",
  "crulechk.BITWISE_RESULT_SHALL_CAST_IMMEDIATELY.msg1": "unsigned char 와 unsigned short 피연산자에 대해서 비트 연산자 ~와 << 가 사용될 경우, 즉시 형 변환을 해야합니다.",
  "crulechk.BITWISE_RESULT_SHALL_CAST_IMMEDIATELY.sca.desc.default": "unsigned char 와 unsigned short 피연산자에 대해서 비트 연산자 ~와 << 가 사용될 경우, 즉시 형 변환을 해야합니다.",
  "crulechk.BIT_FIELDS_SHALL_BE_EXPLICIT_SIGNGED_TYPE.msg": "비트필드는 bool, unsigned int 또는 signed int 자료형을 가져야 합니다.",
  "crulechk.BIT_FIELD_IN_UNION.msg": "공용체 {0} 의 멤버 {1} 가 비트 필드로 선언되었습니다.",
  "crulechk.BIT_OPERATION_ON_LOGICAL_EXPR.msg1": "boolean 연산이 필요한 곳에 비트 연산자(&, |)가 있습니다.",
  "crulechk.BODY_SHOULD_BE_HIDDEN_WHEN_UNDEREFERENCED.msg": "사용되지 않은 개체의 구현은 숨겨져야 합니다.",
  "crulechk.BOOLEAN_EXPR_IN_SWITCH.msg1": "switch 문의 표현식에 bool 값이 위치하면 안됩니다.",
  "crulechk.BOOLEAN_EXPR_IN_SWITCH.sca.desc.remove": "bool 값을 포함한 switch문을 삭제합니다.",
  "crulechk.BOOLEAN_EXPR_IN_SWITCH.sca.note.desc.make_flow": "코드 변경으로 동작이 변경될수 있음에 유의하세요.",
  "crulechk.BRACE_OF_STATEMENT_SHOULD_OCCUPY_LINE.msg": "중괄호는 한 라인을 차지해야합니다.",
  "crulechk.BSSC.NAMING_CONVENTION.FUNCTION.msg": "함수 이름은 대문자로 시작하는 하나 혹은 그 이상의 단어로 구성되어야 합니다.",
  "crulechk.BSSC.NAMING_CONVENTION.VARIABLE.msg": "변수 이름은 첫번째 단어를 제외하고, 대문자로 시작하는 하나 혹은 그 이상의 단어로 구성되어야 합니다.",
  "crulechk.BYTE_COMPARISON_STRUCT.msg1": "구조체를 byte 단위로 비교해서는 안됩니다",
  "crulechk.BYTE_COMPARISON_STRUCT.sca.desc.default": "memcmp 대신 직접 구조체를 비교하도록 합니다.",
  "crulechk.BYTE_COMPARISON_STRUCT.sca.note.desc.overloading_operator": "구조체의 필드가 일반적인 방법과 다른 비교방법이 필요한 경우 operator==()나 operator!=() 함수, 혹은 동등성 비교를 위한 operator<()를 오버로딩 해야 합니다.",
  "crulechk.CALL_EVERY_FUNCTION_GLOBAL.msg": "이 함수가 호출되지 않았습니다.",
  "crulechk.CALL_ORDER_POSSIBLE_SIDE_EFFECT.msg": "함수 호출 순서가 부수효과(side effect)를 일으킬 수 있습니다.",
  "crulechk.CALL_UNINIT_VAR_WITH_CONST.msg1": "설정되지 않은 포인터를 함수의 Read-Only(const) 파라미터로 사용하면 안됩니다.",
  "crulechk.CALL_UNINIT_VAR_WITH_CONST.msg_blue": "함수가 여기서 선언되었습니다.",
  "crulechk.CALL_UNINIT_VAR_WITH_CONST.sca.desc.remove": "해당 라인을 삭제합니다.",
  "crulechk.CALL_UNINIT_VAR_WITH_CONST.sca.note.desc.code_flow": "라인을 삭제한 후에도 의도한 대로 프로그램이 동작하는지 검증해야 합니다.",
  "crulechk.CALL_VAARG_ON_INDETERMINATE_VALIST.msg": "불확정 값이 된 va_list에 va_arg()를 호출하지 않도록 합니다.",
  "crulechk.CALL_VIRTUAL_IN_CONSTRUCTOR.msg": "생성자나 소멸자에서 가상 함수를 직간접적으로 호출하지 마십시오.",
  "crulechk.CALL_VIRTUAL_WITHOUT_QUALIFIER_IN_CTOR_DTOR.msg1": "생성자/소멸자 내에서 가상함수는 한정자 없이 호출하면 안됩니다.",
  "crulechk.CALL_VIRTUAL_WITHOUT_QUALIFIER_IN_CTOR_DTOR.sca.desc.insert": "한정자를 추가합니다.",
  "crulechk.CALL_VIRTUAL_WITHOUT_QUALIFIER_IN_CTOR_DTOR.sca.desc.remove": "가상함수의 사용을 삭제합니다.",
  "crulechk.CALL_VIRTUAL_WITHOUT_QUALIFIER_IN_CTOR_DTOR.sca.note.desc.make_flow": "코드 동작이 변경될수 있음에 유의하세요.",
  "crulechk.CAST_AFTER_MEM_ALLOC.msg1": "메모리를 할당하는 함수를 사용 후 그 즉시 그 값을 할당받는 타입으로 형변환을 해야합니다.",
  "crulechk.CAST_AFTER_MEM_ALLOC.sca.desc.default": "메모리를 할당하는 함수를 사용 후 그 즉시 그 값을 할당받는 타입으로 형변환을 해야합니다.",
  "crulechk.CAST_ALTERS_VALUE.msg1": "값 {0} 을 {1} 타입으로 형변환을 할 경우 값이 변할 수 있습니다.",
  "crulechk.CAST_CHAR_TO_UNSIGNED_BEFORE_CONVERTING_INT.msg1": "char 타입을 부호 없는 타입으로 형변환하기 전에 더 큰 정수 형으로 먼저 형변환 해야 합니다.",
  "crulechk.CATCH_ALL_EXCEPTIONS_THROWN_EXPLICITLY.msg": "명시적으로 던져진 모든 예외를 잡아야 합니다.",
  "crulechk.CATCH_EXCEPTIONS_BY_REFERENCE.msg": "catch문에서 예외는 참조형으로 잡도록 합니다.",
  "crulechk.CATCH_EXCEPTIONS_BY_REFERENCE.sca.desc.default": "예외를 참조형으로 받도록 합니다.",
  "crulechk.CATCH_EXCPETIONS_IN_HIERACHICAL_ORDER.msg": "핸들러는 하위 클래스부터 기초 클래스 순으로 선언해야 합니다.",
  "crulechk.CHAINED_DESIGNATOR_MIXED_POSITIONAL.msg": "구조체 변수 {0}을(를) 초기화할 때 체인 지정자와 순서 기반 초기화를 혼용했습니다.",
  "crulechk.CHECK.DUPLICATED_PARAM.msg": "동일한 변수가 함수의 인자로 전달했습니다.",
  "crulechk.CHECK.FIELD_ARRAY_LENGTH.msg": "필드 {0} 의 배열 원소의 수가 {1} 입니다. {2} 여야 합니다.",
  "crulechk.CHECK_ERROR_AFTER_SETTING_ERRNO.msg": "errno 설정 함수 호출 후 0과 비교하여 오류 여부를 확인해야 합니다.",
  "crulechk.CHECK_EXIST_LINK_FILES.msg1": "파일을 다룰 때 링크의 존재 여부를 확인해야 합니다.",
  "crulechk.CHECK_EXIST_LINK_FILES.sca.desc.default": "파일을 열 때 O_NOFOLLOW 플래그도 사용하십시오.",
  "crulechk.CHECK_FOR_ASSIGNING_OBJECT_TO_ITSELF.msg": "대입 연산자는 반드시 객체 스스로에 대한 대입이 이루어지는지 검사해야 합니다.",
  "crulechk.CHECK_POINTER_TYPE_OF_MEM_FUNCTIONS.sink": "{0} 함수에 전달되는 포인터 인자들은 동일한 타입이어야 합니다",
  "crulechk.CHROOT_JAIL_WITHOUT_CHANGE_WORK_DIR.msg1": "함수 ({0})이 호촐되었으나, {1}은 호출되지 않았습니다.",
  "crulechk.CLASS_MEMBER_SHOULD_NOT_BE_PUBLIC.msg": "클래스 멤버 변수는 절대로 'public'으로 선언되어서는 안됩니다.",
  "crulechk.CLASS_SHOULD_DECLARE_ASSIGNMENT_OPERATOR.msg": "클래스는 항상 대입 연산자를 선언해야 합니다.",
  "crulechk.CLASS_SHOULD_DECLARE_CONSTRUCTOR.msg": "클래스는 항상 생성자를 선언해야 합니다.",
  "crulechk.CLASS_SHOULD_DECLARE_COPY_CONSTRUCTOR.msg": "클래스는 항상 복사 생성자를 선언해야 합니다.",
  "crulechk.CLASS_SHOULD_DECLARE_DESTRUCTOR.msg": "클래스는 항상 소멸자를 선언해야 합니다.",
  "crulechk.CLEANUP_THREAD_SPECIFIC_STORAGE.msg": "tss_create에서 thread-specific storage 초기화 인자가 없습니다.",
  "crulechk.CND_WAIT_SHOULDE_BE_IN_LOOP.msg1": "cnd_wait 호출이 loop문 안에 있지 않습니다.",
  "crulechk.CND_WAIT_SHOULDE_BE_IN_LOOP.msg2": "wait 호출이 loop문 안에 있지 않습니다.",
  "crulechk.COMMENT_STARTER_IN_COMMENT.msg1": "주석 내에서 허용되지 않은 주석 시작 문자열 {0} 이 사용되었습니다.",
  "crulechk.COMPARE_EOF_TO_STANDARD_LIBRARY_FUNCTIONS.msg": "EOF 값을 반환할 수 있는 함수는 반환 값을 수정하지 않고 비교해야 합니다.",
  "crulechk.COMPARE_LOOP_COUNTER.msg": "루프 카운터가 증감문에서 -- 또는 ++에 의해 변경되지 않으면 조건문에서 <=, <, > 또는 >= 를 사용해야 합니다.",
  "crulechk.COMPLEX_CONTROL_IN_SWITCH.msg1": "switch 구문 내에서 블록이 복잡하게 얽혀있습니다.",
  "crulechk.COMPLEX_FUNC_DECL.msg1": "함수 선언이 너무 복잡합니다.",
  "crulechk.COMPOUND_LITERAL_ADDRESS_INSIDE_LOOP.msg1": "복합상수(Compound literals)의 유효 범위를 확인하십시오.",
  "crulechk.CONCATENATE_DIFF_TYPE_STR.msg1": "wide-character 문자열과 일반 문자열을 서로 붙이지 마십시오.",
  "crulechk.CONCATENATE_DIFF_TYPE_STR.sca.desc.add": "문자열의 타입을 일치시킵니다.",
  "crulechk.CONCATENATE_DIFF_TYPE_STR.sca.desc.remove": "문자열의 타입을 일치시킵니다.",
  "crulechk.CONDVAR_MULTI_MUTEX_CHECKER.bmsg": "조건 변수 {0} 가 뮤텍스 {1} 와 결합하면서 2개 이상의 뮤텍스에 함께 사용되었습니다.",
  "crulechk.CONDVAR_MULTI_MUTEX_CHECKER.msg": "조건 변수 {0} 가 뮤텍스 {1} 와 결합했습니다.",
  "crulechk.COND_ARRAY_DECAY_ON_TEMPORARY.msg": "임시 수명을 가진 객체의 배열 {0} 에 대한 포인터 변환이 발생했습니다.",
  "crulechk.COND_BAD_THREAD_OBJ_DURATION.msg": "{0} 변수가 지역 변수로 선언 되었으며, 스레드 및 동기화 생성 함수에 전달되었기 때문에 수명이 일치하지 않을 위험이 있습니다.",
  "crulechk.COND_COMP_MISMATCH.msg_endif": "#if 지시자가 시작되었으나 현재 파일에 대응하는 조건부 컴파일 종료 지시자가 없습니다.",
  "crulechk.COND_COMP_MISMATCH.msg_if": "이 조건부 컴파일 종료 지시자에 대응하는 #if 가 없습니다.",
  "crulechk.COND_NO_QUAL_ON_FUNCTION_TYPE.msg": "함수 타입 {0} 에 {1} 한정자가 적용되었습니다.",
  "crulechk.CONSTANT_ON_LEFT_HANDSIDE.msg": "변수와 상수를 비교할 때 항상 왼쪽에 상수가 오도록 합니다.",
  "crulechk.CONSTANT_ON_LEFT_HANDSIDE.sca.desc.default": "상수를 좌측에 두고 연산을 수행합니다.",
  "crulechk.CONSTEXPR_IN_SWITCH.msg": "switch 문의 평가식에 constexpr가 사용되었습니다.",
  "crulechk.CONST_IN_LOOP_TEST.msg1": "반복문 조건식에 상수 값이 있습니다.",
  "crulechk.CONST_MEMBER_FUNCTION_SHOULD_NOT_RETURN_NONCONST.msg": "const 멤버 함수에서 클래스 내부 데이터를 조작할 수 있는 비 상수 값을 리턴하지 않도록 합니다.",
  "crulechk.CONST_VALUE_MODIFICATION.msg1": "상수형 데이터를 수정하면 안됩니다",
  "crulechk.CONST_VALUE_MODIFICATION.refer": "참조자 타입의 참조 부분에 const를 사용했습니다. 이 const 선언은 무시됩니다.",
  "crulechk.CONVERSION_OPERATOR_CLASS_TYPE.msg": "클래스 타입을 위한 변환 연산자를 제공하지 않도록 합니다.",
  "crulechk.CONVERSION_OPERATOR_CLASS_TYPE.sca.desc.default": "변환 연산자를 명시적인 함수로 변경하도록 합니다.",
  "crulechk.CONVERSION_OPERATOR_CLASS_TYPE.sca.note.desc.change_other_code": "함수 인터페이스가 변경되었으므로 관련된 코드를 변경하여야 합니다.",
  "crulechk.CONVERSION_OPERATOR_FUNDAMENTAL_TYPE.msg": "기본타입을 위한 변환 연산자를 선언하지 않도록 합니다.",
  "crulechk.CONVERSION_OPERATOR_FUNDAMENTAL_TYPE.sca.desc.default": "변환 연산자를 명시적인 함수로 변경하도록 합니다.",
  "crulechk.CONVERSION_OPERATOR_FUNDAMENTAL_TYPE.sca.note.desc.change_other_code": "함수 인터페이스가 변경되었으므로 관련된 코드를 변경하여야 합니다.",
  "crulechk.CONVERT_FLOATING_POINT_IN_FLOATING_OPERATION.msg1": "부동소수점 연산을 위해서 정수를 부동소수점으로 변환해야 합니다.",
  "crulechk.CONVERT_INT_TO_FLOAT_FOR_FLOAT_OPERATION.msg1": "부동 소수점 연산을 위해서 정수를 먼저 부동소수점으로 변환해야 합니다.",
  "crulechk.CORRECT_DECLARE_FLEXIBLE_ARRAY_MEMBER.msg1": "C99에서 크기가 정해지지 않은 배열 멤버를 선언할 때 올바르게 선언해야 합니다",
  "crulechk.CORRECT_DECLARE_FLEXIBLE_ARRAY_MEMBER.sca.desc.default": "C99에서 가변 배열 멤버를 선언할때는 크기를 명시하지 말아야 합니다.",
  "crulechk.CRITICAL_PUBLIC_VARIABLE_WITHOUT_CONST_MODIFIER.msg": "중요한 public 변수가 const 한정자 없이 사용되었습니다.",
  "crulechk.CRITICAL_VARIABLE_IN_PUBLIC.msg1": "중요 변수를 public에 선언했습니다.",
  "crulechk.CTORS_SHOULD_NOT_HAVE_SIDE_EFFECT.msg1": "복사 생성자는 생략되지 않는다고 가정하지 마십시오.",
  "crulechk.CTYPE_VALUE_SHOULD_BE_USSIGNED_OR_EOF.msg": "함수에 전달되는 값은 EOF와 unsigned char 범위 내의 값만 가능합니다.",
  "crulechk.CYCLOMATIC_COMPLEXITY_METRIC.msg1": "{0}에 제어구문이 너무 많습니다.({1}, 최대 = {2})",
  "crulechk.CYCLOMATIC_COMPLEXITY_METRIC.yMsg": "{0}번째 결정 위치 입니다.",
  "crulechk.DANGEROUS_FUNC_CAST.msg1": "위험한 함수 형변환입니다. : {0}",
  "crulechk.DANGEROUS_FUNC_CAST.msg_type1": "위험한 함수 형변환입니다. : 반환형 {0}(크기: {1}) 이 반환형 {2}(크기 : {3}) 과 다릅니다.",
  "crulechk.DANGEROUS_FUNC_CAST.msg_type2": "위험한 함수 형변환입니다. : {0}과 {1}의 인자 갯수가 다릅니다.",
  "crulechk.DANGEROUS_FUNC_CAST.msg_type3": "위험한 함수 형변환입니다. : {0}번째 인자가 호환되지 않습니다({1}<>{2})",
  "crulechk.DANGEROUS_FUNC_CAST.msg_type_unknown1": "형변환 대상의 타입을 알 수 없습니다.",
  "crulechk.DANGEROUS_FUNC_CAST.msg_type_unknown2": "형변환 할 대상의 타입을 알 수 없습니다.",
  "crulechk.DEALLOCATORS_MUST_NOT_THROW_EXCEPTIONS.msg": "메모리 해제 함수에서는 예외를 발생시키지 말아야 합니다.",
  "crulechk.DECLARE_AT_THE_BEGINNING_OF_BLOCK.msg1": "지역 변수는 함수의 맨 처음에 선언해야 합니다.",
  "crulechk.DECLARE_CONST_MEMBER_FUNCTION.msg": "외부에 보이는 객체의 상태를 변경하지 않는 클래스 멤버 함수를 const로 선언하도록 합니다.",
  "crulechk.DECLARE_CONTROL_VARIABLES_WITHIN_FOR.msg": "기존의 변수를 사용하는 대신 For의 시작문에서 조건 변수를 선언하도록 합니다.",
  "crulechk.DECLARE_COPY_CONSTRUCTOR_PROTECTED.msg": "추상 클래스에서 복사 대입 연산자를 protected로 선언하도록 합니다.",
  "crulechk.DECLARE_DESTRUCTOR_FOR_RESOURCE_CLASS.bMsg": "포인터 타입 필드가 선언되었습니다.",
  "crulechk.DECLARE_DESTRUCTOR_FOR_RESOURCE_CLASS.msg": "멤버 변수에 포인터가 있을 경우 명시적으로 소멸자를 선언 혹은 정의하도록 합니다.",
  "crulechk.DECLARE_DESTRUCTOR_FOR_RESOURCE_CLASS.sca.desc.default": "명시적인 소멸자를 선언합니다.",
  "crulechk.DECLARE_DESTRUCTOR_FOR_RESOURCE_CLASS.sca.note.desc.destructor": "소멸자의 정의를 구현해야 합니다.",
  "crulechk.DECLARE_DESTRUCTOR_USING_NEW.bMsg": "여기에서 new를 사용했습니다.",
  "crulechk.DECLARE_DESTRUCTOR_USING_NEW.msg": "클래스 생성자에서 new를 사용하는 경우 명시적으로 소멸자를 선언 혹은 정의하도록 합니다.",
  "crulechk.DECLARE_DESTRUCTOR_USING_NEW.sca.desc.default": "명시적인 소멸자를 선언합니다.",
  "crulechk.DECLARE_DESTRUCTOR_USING_NEW.sca.note.desc.destructor": "소멸자의 정의를 구현해야 합니다.",
  "crulechk.DECLARE_EXPLICIT.msg": "암시적 타입 변환이 사용되는 것을 방지하기 위해, 모든 단일 인자 생성자를 explicit으로 선언해야 합니다.",
  "crulechk.DECLARE_EXPLICIT.sca.desc.default": "단일 인자 생성자를 선언한 곳에 explicit 키워드를 추가합니다.",
  "crulechk.DECLARE_EXPLICIT.sca.note.desc.default_arg": "여러개의 인자를 가진 생성자가 디폴트 값을 사용하는 경우, 단일 인자 생성자 처럼 암시적 변환에 사용될 수 있습니다. 이 생성자는 {0}개의 인자 중 {1}개가 디폴트 값을 사용하고 있습니다.",
  "crulechk.DECLARE_EXPLICIT_ASSIGNMENT_OPERATOR_WHEN_TEMPLATED.msg": "템플릿 복사대입 연산자가 있을 때, 명확한 복사대입 연산자가 선언되어야 합니다.",
  "crulechk.DECLARE_EXTERNAL_OBJECT_ONLY_ONCE.msg": "external 객체는 한번만 선언되어야 합니다.",
  "crulechk.DECLARE_EXTERNAL_OBJECT_ONLY_ONCE.yMsg": "extern 선언이 된 부분 입니다.",
  "crulechk.DECLARE_EXTERN_IN_HEADER_FILES.msg": "객체 정의 및 이름이 없는 네임스페이스의 선언과 정의를 제외하고, 헤더파일에서 extern 변수 혹은 함수를 선언해야 합니다.",
  "crulechk.DECLARE_NON_MEMBER_GENERIC_FUNC_IN_UNASSOCIATED_NAMESPACE.msg": "비멤버 템플릿 함수는 연관된 네임스페이스에서 선언하지 않아야 합니다.",
  "crulechk.DECLARE_ONE_NAME_ONLY_IN_EACH_TYPEDEF.msg": "각각의 typedef 선언에서 하나의 타입 이름만 선언하도록 합니다.",
  "crulechk.DECLARE_READ_ONLY_PARAMETERS.msg": "읽기 전용의 클래스 파라미터는 상수 참조형으로 선언하고, 읽기 전용 일반 타입은 상수 값으로 전달하도록 합니다.",
  "crulechk.DECLARE_READ_ONLY_PARAMETERS.sca.desc.default": "읽기 전용 파라미터는 const 키워드를 사용하여 선언하도록 합니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_FOR_RESOURCE_CLASS.bMsg": "포인터 타입 필드가 선언되었습니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_FOR_RESOURCE_CLASS.msg": "포인터가 있거나 소멸자가 복잡할 시, 명시적으로 특수 메소드(복사생성자, 복사대입연산자 등)를 선언 혹은 정의해야 합니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_FOR_RESOURCE_CLASS.sca.desc.default": "빠진 특수 메소드들을 구현합니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_FOR_RESOURCE_CLASS.sca.note.desc.copy_assign": "복사 대입 연산자의 정의를 구현해야 합니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_FOR_RESOURCE_CLASS.sca.note.desc.copy_constructor": "복사 생성자의 정의를 구현해야 합니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_USING_NEW.bMsg": "여기에서 new를 사용했습니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_USING_NEW.msg": "클래스에서 new를 사용하는 경우, 명시적으로 특수 메소드(복사생성자, 복사대입연산자 등)를 선언 혹은 정의해야 합니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_USING_NEW.sca.desc.default": "빠진 특수 메소드들을 구현합니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_USING_NEW.sca.note.desc.copy_assign": "복사 대입 연산자의 정의를 구현해야 합니다.",
  "crulechk.DECLARE_SPECIAL_METHOD_USING_NEW.sca.note.desc.copy_constructor": "복사 생성자의 정의를 구현해야 합니다.",
  "crulechk.DECLARE_STATIC_WHEN_UNLESS_EXTERNAL_LINKAGE.msg": "외부참조가 필요하지 않은 경우 파일 범위 내에서 모든 객체와 함수의 선언 및 정의는 static 키워드를 사용해야 합니다.",
  "crulechk.DECLARE_TYPE_IN_HEADER_FILES.msg": "객체 정의 및 이름이 없는 네임스페이스의 선언과 정의를 제외하고, 헤더파일에서 타입을 선언하도록 합니다.",
  "crulechk.DECLARE_VARIABLE_INSIDE_SWITCH.bMsg": "여기서 변수가 선언되었습니다.",
  "crulechk.DECLARE_VARIABLE_INSIDE_SWITCH.msg": "switch 문장 내에서, 첫번째 case구문 전에 변수를 선언하지 않도록 합니다.",
  "crulechk.DECLARE_VARIABLE_INSIDE_SWITCH.sca.desc.default": "변수 선언을 switch 문 이전에 하도록 합니다.",
  "crulechk.DECLARE_VARIABLE_IN_MIDDLE_OF_BLOCK.bMsg": "이 시점부터 선언 외의 문장이 나타납니다.",
  "crulechk.DECLARE_VARIABLE_IN_MIDDLE_OF_BLOCK.msg": "변수를 블록 중간에 선언하지 않도록 합니다.",
  "crulechk.DECREMENT_ON_BOOLEAN.msg": "boolean형에 단항 감소 연산자를 사용하지 않도록 합니다.",
  "crulechk.DEEP_NESTING_BLOCKS.msg": "함수의 중첩도가 {1} 입니다. 기준은 {0}입니다.",
  "crulechk.DEFAULT_ARGUMENT_CONSISTENCY_WHEN_OVERRIDING.bMsg": "오버라이드 대상 함수입니다.",
  "crulechk.DEFAULT_ARGUMENT_CONSISTENCY_WHEN_OVERRIDING.msg": "오버라이드 대상 함수의 인자 기본값이 다릅니다.",
  "crulechk.DEFINE_INLINE_IN_HEADER_FILES.msg": "이름이 없는 네임스페이스의 선언과 정의를 제외하고, 헤더파일에서 인라인 함수를 정의하도록 합니다.",
  "crulechk.DEFINE_OBJECT_AT_BLOCK_SCOPE.msg": "전역 객체가 하나의 함수 내에서만 사용되는 경우 해당 블록 범위 내에서 정의되어야 합니다.",
  "crulechk.DEFINE_SET_NEW_HANDLER.msg": "동적 메모리 할당을 사용하는 모든 C++ 프로그램은 set_new_handler()를 사용하여야 합니다.",
  "crulechk.DEFINE_TEMPLATE_IN_HEADER_FILES.msg": "템플릿 함수와 템플릿 멤버 함수는 구현 파일에서 정의하지 않도록 합니다.",
  "crulechk.DEREFERENCING_DOES_NOT_EXCEED_TWO_LEVELS.msg": "각각의 문장은 역참조가 2단계 이하의 객체만 포함해야 합니다.",
  "crulechk.DESTRUCTORS_MUST_NOT_THROW_EXCEPTIONS.msg1": "소멸자에서 예외를 발생시키면 안됩니다.",
  "crulechk.DESTRUCTOR_SHOULD_BE_VIRTUAL.bMsg": "가상이 아닌 소멸자가 정의되어 있습니다.",
  "crulechk.DESTRUCTOR_SHOULD_BE_VIRTUAL.msg": "클래스가 가상 멤버 함수를 가지고 있을 경우 반드시 소멸자는 가상이어야 합니다.",
  "crulechk.DESTRUCTOR_SHOULD_BE_VIRTUAL.sca.desc.default": "소멸자를 가상으로 선언합니다.",
  "crulechk.DESTRUCTOR_SHOULD_BE_VIRTUAL.sca.note.desc.destructor": "소멸자의 내용을 구현해야 합니다.",
  "crulechk.DESTRUCTOR_SHOULD_BE_VIRTUAL_IF_CLASS_HAS_VIRTUAL.msg": "클래스가 가상 멤버 함수를 가지고 있을 경우 반드시 소멸자는 가상이어야 합니다.",
  "crulechk.DIFFERENT_EXCEPTION_SPECIFICATION.msg": "같은 함수는 예외명세의 타입이 같아야 합니다.",
  "crulechk.DIFFERENT_EXCEPTION_SPECIFICATION.src": "예외 명세가 다른 함수 선언부 입니다.",
  "crulechk.DIFFERENT_FUNCTION_PTR_ASSIGN.msg1": "같은 함수 포인터 외에는 대입하면 안됩니다. 대입할 함수 포인터간에는 파라미터 수, 타입과 리턴 타입이 일치해야 합니다.",
  "crulechk.DIFFERENT_MUTEX_ON_CONDITION_VARIABLE.msg": "Mutex와 조건 변수는 짝을 이루어야 합니다.",
  "crulechk.DIFFERENT_TYPE_DECLARATIONS.msg": "동일한 라인에서 다른 타입의 변수들이 선언되었습니다.",
  "crulechk.DIRECTLY_APPEND_POINTER_AND_AMPERSAND.msg": "선언 및 정의에서 '*'와 '&'는 타입 이름에 붙이도록 합니다.",
  "crulechk.DIRECT_USE_OF_GENERIC.msg": "_Generic 키워드가 소스 코드에서 직접 사용되었습니다.",
  "crulechk.DOUBLE_CLOSE_THREAD.msg": "이미 종료된 thread를 다시 종료대기 할 가능성이 있습니다.",
  "crulechk.DO_DECL_VARS_AT_TOP_OF_FUNC.msg1": "함수의 시작 부분에 선언해야 합니다.",
  "crulechk.DO_DECL_VARS_AT_TOP_OF_FUNC.msg2": "초기화가 필요합니다.",
  "crulechk.DO_NOT_ABRUPTLY_TERMINATE_THE_PROGRAM.msg": "예기치 않은 프로그램 종료를 수행하지 마십시오.",
  "crulechk.DO_NOT_ACCESS_OVERLAPPING_STORAGE.msg": "union과 같이 중복된 저장소에 대입 연산을 수행하지 않도록 합니다.",
  "crulechk.DO_NOT_ALTER_CONTROL_VARIABLE_MORE_THAN_ONCE.msg": "조건 변수를 반복문 내에서 1번을 초과하여 변경하지 않도록 합니다.",
  "crulechk.DO_NOT_ASSERT_AFTER_ATEXIT.msg1": "assert()와 abort()의 종료 행위를 이해하고 사용해야 합니다.",
  "crulechk.DO_NOT_ASSIGN_ADDRESS_TO_WIDER_SCOPE.msg": "더 넓은 스코프를 가진 변수에 주소값을 할당하면 안됩니다.",
  "crulechk.DO_NOT_ASSUME_CONSTANT_WITH_EXPR.msg1": "상수로 나타낼 수 있는 값들(예: BUF_SIZE 등)을 표현식으로 나타내지 마십시오",
  "crulechk.DO_NOT_CALCULATE_SCALED_INT_TO_POINTER.msg": "포인터 연산에 크기가 조정된 값을 사용합니다.",
  "crulechk.DO_NOT_CALL_FUNC_WITH_COMPLEX_VALUE.msg1": "복소수형 실수가 요구되는 함수를 호출하지 말아야 합니다.",
  "crulechk.DO_NOT_CALL_SIGNAL_IN_MULTI_THREAD.msg1": "멀티쓰레드 프로그램에서 signal()을 호출해서는 안됩니다.",
  "crulechk.DO_NOT_CALL_SIGNAL_WITHIN_HANDLER.msg1": "인터럽트가 발생할 수 있는한 시그널 핸들러에서 signal()을 호출해서는 안됩니다.",
  "crulechk.DO_NOT_CALL_UNLOCK_DIRECTLY_ON_MUTEX.msg1": "예외처리 없이 unlock()함수를 호출했습니다.",
  "crulechk.DO_NOT_CAST_ATOMIC_ON_VOID.msg": "불완전 타입인 void 에 _Atomic 한정자를 적용한 {0} 변수를 선언했습니다.",
  "crulechk.DO_NOT_CAST_AWAY_CONST.msg1": "형변환으로 const 를 없애지 말아야 합니다.",
  "crulechk.DO_NOT_CAST_FROM_INTEGRAL_TO_POINTER.cast_from": "캐스팅 대상이 된 변수가 선언된 부분입니다.",
  "crulechk.DO_NOT_CAST_FROM_INTEGRAL_TO_POINTER.cast_to": "캐스팅 후 결과가 저장되는 변수가 선언된 부분입니다.",
  "crulechk.DO_NOT_CAST_FROM_INTEGRAL_TO_POINTER.msg": "정수형 타입을 포인터 타입으로 변환하지 않도록 합니다.",
  "crulechk.DO_NOT_CAST_FROM_POINTER_TO_INTEGRAL.cast_from": "캐스팅 대상이 된 변수가 선언된 부분입니다.",
  "crulechk.DO_NOT_CAST_FROM_POINTER_TO_INTEGRAL.cast_to": "캐스팅 후 결과가 저장되는 변수가 선언된 부분입니다.",
  "crulechk.DO_NOT_CAST_FROM_POINTER_TO_INTEGRAL.msg": "포인터 타입을 정수형 타입으로 변환하지 않도록 합니다.",
  "crulechk.DO_NOT_CAST_FROM_VOID_POINTER_TO_POINTER.msg1": "void 포인터를 다른 포인터로 캐스팅하지 마십시오.",
  "crulechk.DO_NOT_CAST_INT_TO_ENUM.msg": "만약 {0} 열거형 범위 안에 값이 있지 않은 경우, 정수값을 열거형으로 캐스팅 하는 것은 정의되지 않은 동작을 일으킬 수 있습니다.",
  "crulechk.DO_NOT_CAST_OR_DELETE_POINTER_TO_INCOMPLETE_CLASSES.msg1": "전방선언만 한 클래스(incomplete class)로 형변환 하지 마십시오",
  "crulechk.DO_NOT_CAST_OR_DELETE_POINTER_TO_INCOMPLETE_CLASSES.msg2": "전방선언만 한 클래스(incomplete class)의 포인터를 지우면 안됩니다.",
  "crulechk.DO_NOT_CAST_TO_POINTER.msg": "포인터 타입을 다른 포인터 타입으로 변환하는 것까지 포함하여, 포인터 타입으로 캐스팅 하지 않도록 합니다.",
  "crulechk.DO_NOT_COMMENT_IN_CODE_SECTION.msg": "코드 영역에서는 주석을 사용할 수 없습니다.",
  "crulechk.DO_NOT_COMMENT_OUT_CODE.msg1": "소스 코드가 주석 처리 되어 있습니다.",
  "crulechk.DO_NOT_CONTAIN_UNUSED_LABEL_IN_FUNCTION.msg": "사용되지 않은 label 입니다.",
  "crulechk.DO_NOT_CONVERT_FLOATING_TO_INTEGRAL.msg": "표준 라이브러리를 사용하는 경우를 제외하고, floating 타입 변수를 int형 변수로 캐스팅하지 않도록 합니다.",
  "crulechk.DO_NOT_CONVERT_FLOATING_TO_INTEGRAL.sca.desc.casting": "명시적인 캐스팅을 사용하도록 합니다. 명시적인 캐스팅을 넣을 시 이 변환은 의도한 것이라는 점을 표현하게 됩니다.",
  "crulechk.DO_NOT_CONVERT_FLOATING_TO_INTEGRAL.sca.desc.function": "표준 에서 제공하는 소숫점 관련 함수를 사용합니다.",
  "crulechk.DO_NOT_CONVERT_FLOATING_TO_INTEGRAL.sca.note.desc.function_list": "목적에 따라 소숫점 관련 함수를 사용할 수 있습니다. round()는 소숫점 반올림, ceil()은 소숫점 올림, floor()는 소숫점 내림시 사용할 수 있습니다.",
  "crulechk.DO_NOT_CONVERT_FLOATING_TO_INTEGRAL.sca.note.desc.include_cmath": "cmath 헤더 파일을 포함해야 합니다.",
  "crulechk.DO_NOT_CONVERT_FLOATING_TO_INTEGRAL.sca.note.desc.include_math": "math.h 헤더 파일을 포함해야 합니다.",
  "crulechk.DO_NOT_DECLARED_INLINE_WITHIN_CLASS_DECLARATION.msg": "인라인 멤버 함수의 구현을 클래스 선언내에서 하지 않도록 합니다.",
  "crulechk.DO_NOT_DECLARE_CONFLICTING_LINKAGE_CLASSIFICATIONS.msg": "linkage classification이 충돌합니다.",
  "crulechk.DO_NOT_DECLARE_IN_LOOPS.msg": "반복문 안에서 변수가 선언되었습니다.",
  "crulechk.DO_NOT_DECLARE_IN_LOOPS.msg1": "여기서 반복문이 시작되었습니다.",
  "crulechk.DO_NOT_DECLARE_IN_LOOPS.sca.desc.default": "변수 선언을 반복문 바깥에서 하도록 합니다.",
  "crulechk.DO_NOT_DECLARE_IN_LOOPS.sca.note.desc.intention_decl": "반복문 내에서의 변수 선언이 의도된 경우라면 변경하지 않도록 합니다.",
  "crulechk.DO_NOT_DECLARE_OR_DEFINE_RESERVED_ID.msg1": "선점되어 있는 단어들을 사용하면 안됩니다.",
  "crulechk.DO_NOT_DEFINE_VARIADIC_FUNCTIONS.msg1": "유동 인자 함수를 사용하지 마십시오.",
  "crulechk.DO_NOT_DERIVE_FROM_VIRTUAL_BASE.msg": "클래스는 기초 클래스를 가상 상속하면 안됩니다.",
  "crulechk.DO_NOT_DISCARD_FUNCTION_RETURN_VALUE.msg": "함수의 반환 값은 항상 사용되어야합니다.",
  "crulechk.DO_NOT_EXPLICIT_FLOATING_INTEGRAL_CONVERSION.msg": "식(expression)에는 명시적인 실수-정수 형 변환이 없어야 합니다.",
  "crulechk.DO_NOT_HIDE_DEREFERENCE_OP.msg": "포인터 역참조 오퍼레이션을 매크로 정의나 typedef내에 숨기지 않도록 합니다.",
  "crulechk.DO_NOT_HIDE_DEREFERENCE_OP_IN_TYPEDEF.msg": "포인터의 역참조를 typedef 선언 내에 숨기지 않도록 합니다.",
  "crulechk.DO_NOT_INCLUDE_COMMENT_IN_MACRO.msg": "매크로 정의 부분에서 코멘트를 포함하지 않도록 합니다.",
  "crulechk.DO_NOT_INCLUDE_PATH_SPECIFIER.msg": "#include 지시자를 사용할 때 파일 이름 내에 경로 문자를 삽입하지 않도록 합니다.",
  "crulechk.DO_NOT_INC_ITER_WITH_VALUE_GREATER_THAN_ONE.default_desc": "반복자에서 1보다 큰 값으로 증감하지 않도록 합니다.",
  "crulechk.DO_NOT_MANIPULATE_TIME_T_DIRECTLY.msg1": "time_t 타입의 값을 직접적으로 수정하지 마십시오. 반드시 관련 함수를 사용해야 합니다.",
  "crulechk.DO_NOT_MIX_ARITHMETIC_PRECISION.msg": "수식 내에서 산술 정밀도를 혼용하지 않도록 합니다.",
  "crulechk.DO_NOT_MIX_SIGNED_AND_UNSIGNED.msg": "같은 수식 내에서 부호가 있는 값과 부호가 없는 값을 혼용하지 않도록 합니다.",
  "crulechk.DO_NOT_MODIFY_KEY_OF_SET.msg": "set이나 meltiset의 키부분을 수정하지 않도록 합니다.",
  "crulechk.DO_NOT_MODIFY_PRIVATE_IN_PUBLIC_FUNCTION.msg": "private 필드에 public 메소드를 통해 접근합니다.",
  "crulechk.DO_NOT_MODIFY_STATIC_MEMBER_IN_COPY_CONSTRUCTOR.msg": "복사 생성자에서 클래스의 정적 멤버를 변경해서는 안됩니다.",
  "crulechk.DO_NOT_MODIFY_THE_STANDARD_NAMESPACES.msg": "네임스페이스 std를 수정하지 마세요.",
  "crulechk.DO_NOT_OPERATE_ENUMERATOR.msg1": "열거자를 이용해서 계산하지 않도록 합니다.",
  "crulechk.DO_NOT_OVERLOAD_FUNCTION_WITH_SPECIALIZATION.msg": "함수 호출이 모호하지 않아야합니다. \"<>\" 를 추가하는 것을 고려해야합니다.",
  "crulechk.DO_NOT_OVERLOAD_LAND_LOR_COMMA.msg": "'&', ',', '&&', '||' 연산자를 오버로딩 하지 않도록 합니다.",
  "crulechk.DO_NOT_OVERLOAD_NONVIRTUAL_FUNCTION.msg": "상속된 비가상 함수들을 가리거나 오버로딩 하지 않도록 합니다.",
  "crulechk.DO_NOT_OVERLOAD_NONVIRTUAL_FUNCTION.sca.desc.change_method_name": "메소드의 이름을 변경하도록 합니다.",
  "crulechk.DO_NOT_OVERLOAD_NONVIRTUAL_FUNCTION.sca.desc.virtual_base_method": "베이스 클래스의 메소드를 가상으로 변경하도록 합니다.",
  "crulechk.DO_NOT_OVERLOAD_NONVIRTUAL_FUNCTION.sca.note.desc.change_other_class_and_code": "베이스 클래스의 메소드가 가상으로 변경되었으므로, 다른 상속 클래스 및 관련 코드의 변경이 이루어져야 합니다.",
  "crulechk.DO_NOT_OVERLOAD_NONVIRTUAL_FUNCTION.sca.note.desc.change_other_code": "메소드의 인터페이스가 변경되었으므로, 해당 메소드를 사용하는 코드의 변경이 이루어져야 합니다.",
  "crulechk.DO_NOT_OVERLOAD_NUMERIC_AND_POINTER.msg": "숫자와 포인터 타입끼리 오버로딩 하지 않도록 합니다.",
  "crulechk.DO_NOT_OVERLOAD_NUMERIC_AND_POINTER.yMsg": "연관된 함수 입니다.",
  "crulechk.DO_NOT_OVERRIDE_ADDRESSOF.msg": "단항 연산자 \\\"&\\\" 는 오버로드되지 않아야합니다.",
  "crulechk.DO_NOT_RECURSIVELY_REENTER_DURING_INIT_STATIC.msg1": "함수 내에서 정적 객체를 선언하는 도중에 해당 함수를 재귀 호출 하면 안됩니다.",
  "crulechk.DO_NOT_REDEFINE_ERRNO.msg1": "errno을 재정의하지 마십시오",
  "crulechk.DO_NOT_REDEFINE_ERRNO.sca.desc.default": "errno를 재정의하지 않도록 합니다.",
  "crulechk.DO_NOT_REDEFINE_ERRNO.sca.note.desc.change_variable_name": "에러 정보를 저장하기 위해 해당 변수를 사용하는 경우 변수의 이름을 변경하도록 합니다.",
  "crulechk.DO_NOT_REDEFINE_ERRNO.sca.note.desc.include_errno": "표준의 errno를 사용해야 하는 경우 errno.h를 포함하도록 합니다.",
  "crulechk.DO_NOT_RELY_ON_ENUM_VALUE.msg": "열거형 상수를 값과 연관시키지 않도록 합니다.",
  "crulechk.DO_NOT_RELY_ON_ENUM_VALUE.sca.desc.default": "상수값 대신 열거형 식별자를 사용하도록 합니다.",
  "crulechk.DO_NOT_RELY_ON_ENUM_VALUE.sca.note.desc.change_enum_id": "대응된 열거형 식별자가 원하는 식별자가 아닌 경우 식별자를 변경하도록 합니다.",
  "crulechk.DO_NOT_REMOVE_CONST.bMsg": "const 변수 선언을 한 부분입니다.",
  "crulechk.DO_NOT_REMOVE_CONST.msg": "const를 제거하는 캐스팅을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_REMOVE_CONST.sca.desc.add_const": "const 를 명시합니다.",
  "crulechk.DO_NOT_REMOVE_VOLATILE.bMsg": "volatile 변수 선언을 한 부분입니다.",
  "crulechk.DO_NOT_REMOVE_VOLATILE.msg": "volatile을 제거하는 캐스팅을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_REMOVE_VOLATILE.sca.desc.add_volatile": "volatile을 명시합니다.",
  "crulechk.DO_NOT_RETURN_SIGNAL_HANDLERS.msg1": "SIGSEGV, SIGILL, SIGFPE 시그널 핸들러에서 명시적/암시적으로 리턴을 사용하지 마십시오.",
  "crulechk.DO_NOT_REUSE_IDENTIFIER_NAME.msg": "{0} 식별자를 재사용 하지 않도록 합니다.",
  "crulechk.DO_NOT_REUSE_IDENTIFIER_NAME.yMsg": "먼저 사용된 부분 입니다.",
  "crulechk.DO_NOT_REUSE_IDENTIFIER_WITH_EXTERNAL_LINKAGE.bmsg": "먼저 사용된 식별자 입니다.",
  "crulechk.DO_NOT_REUSE_IDENTIFIER_WITH_EXTERNAL_LINKAGE.msg": "외부 linkage를 가진 {0} 식별자를 재사용했습니다.",
  "crulechk.DO_NOT_REUSE_IDENTIFIER_WITH_STATIC_STORAGE.msg": "정적 스토리지에서 {0} 식별자는 재사용하지 않도록 합니다.",
  "crulechk.DO_NOT_REUSE_IDENTIFIER_WITH_STATIC_STORAGE.yMsg": "먼저 사용된 부분 입니다.",
  "crulechk.DO_NOT_SPECIFY_BOUND_OF_ARRAY_FOR_STRING_LITERAL.msg1": "문자열로 초기화된 행렬에 크기를 지정하면 안됩니다.",
  "crulechk.DO_NOT_SPECIFY_BOUND_OF_ARRAY_FOR_STRING_LITERAL.sca.desc.default": "배열 선언시 사이즈를 입력하지 않도록 합니다.",
  "crulechk.DO_NOT_SPECIFY_BOUND_OF_ARRAY_FOR_STRING_LITERAL.sca.note.desc.size": "배열 선언 사이즈는 {0} 이며, 상수의 사이즈는 {1} 입니다. 배열 선언 사이즈가 상수의 사이즈보다 작을 경우 비정상적인 문자열이 저장됩니다.",
  "crulechk.DO_NOT_STORE_RETURNED_POINTERS.msg": "특정 함수의 리턴된 포인터를 저장하지 않도록 합니다.",
  "crulechk.DO_NOT_THROW_ITSELF_CAUSE_EXCEPTION.bMsg": "예외를 던집니다.",
  "crulechk.DO_NOT_THROW_ITSELF_CAUSE_EXCEPTION.msg": "throw 문의 대입-식은 그 자체로 예외를 발생시키지 않아야 합니다.",
  "crulechk.DO_NOT_TREAT_ARRAYS_POLYMORPHICALLY.default_desc": "배열을 다형성으로 취급하면 안됩니다.",
  "crulechk.DO_NOT_TYPEDEF_ARRAYTYPE.msg": "배열타입을 typedef 하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_ABORT_STREAM_OPENED.bMsg": "파일 스트림이 열렸습니다.",
  "crulechk.DO_NOT_USE_ABORT_STREAM_OPENED.msg": "fopen()으로 스트림이 열린 상태에서 abort()나 _exit()를 사용하면 안됩니다.",
  "crulechk.DO_NOT_USE_ADJACENT_BINARY_OPERATOR.msg1": "이항 연산자와 피연산자 사이에는 1개 이상의 공백이 있어야 합니다.",
  "crulechk.DO_NOT_USE_ADJACENT_BINARY_OPERATOR.msg2": "삼항 연산자와 피연산자 사이에는 1개의 공백이 있어야 합니다.",
  "crulechk.DO_NOT_USE_ARRAY.msg": "로컬 변수에서 배열 타입이 사용되었습니다.",
  "crulechk.DO_NOT_USE_ARRAY_ACCESS.msg": "배열에 접근했습니다.",
  "crulechk.DO_NOT_USE_ASM.defect": "asm 선언을 사용하여 어셈블리 코드를 직접 작성했습니다.",
  "crulechk.DO_NOT_USE_ASSIGN_OPERATOR_IN_EXPRESSION.msg": "수식 내에서 대입 연산을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_AUTO.msg": "'auto'키워드를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_A_COPY_OF_A_FILE_OBJECT.msg1": "입출력시 FILE 객체를 복사해서 사용하지 마십시오",
  "crulechk.DO_NOT_USE_A_COPY_OF_A_FILE_OBJECT.sca.desc.default": "FILE 변수 타입을 포인터로 변경하고, 대입하는 값 역시 포인터로 변경합니다.",
  "crulechk.DO_NOT_USE_A_COPY_OF_A_FILE_OBJECT.sca.note.desc.change_other_code": "변수의 타입이 변경되었으므로 관련된 다른 코드가 변경되어야 합니다.",
  "crulechk.DO_NOT_USE_BIT_FIELD.msg": "멤버 변수가 허용되지 않은 비트 필드 타입입니다.",
  "crulechk.DO_NOT_USE_BOOLEAN_VECTOR.msg": "vector<bool>을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_BOOLEAN_VECTOR.sca.desc.default": "vector<bool> 대신 bitset을 사용합니다. 이때 bitset은 정적인 사이즈를 지정해주어야 합니다.",
  "crulechk.DO_NOT_USE_BOOLEAN_VECTOR.sca.note.desc.bitset": "표준 헤더 bitset을 include 해야 합니다.",
  "crulechk.DO_NOT_USE_BOOLEAN_VECTOR.sca.note.desc.change_variable": "변수의 타입이 변경되었습니다. 이 변수를 사용한 코드부분의 변경이 필요합니다.",
  "crulechk.DO_NOT_USE_BREAK_CONTINUE.msg1": "\"{0}\"을 사용하면 안됩니다.",
  "crulechk.DO_NOT_USE_BREAK_EXCEPT_SWITCH_STMT.msg1": "switch 구문 외 break 구문을 쓰지 말아야 합니다.",
  "crulechk.DO_NOT_USE_COMMA_OPERATOR.msg1": "콤마(,) 연산자를 사용하면 안됩니다.",
  "crulechk.DO_NOT_USE_CONST_FOR_SYMBOLIC_CONSTANT.msg": "C에서 모든 심볼릭 상수는 열거형이나 #define 메커니즘을 통해 제공되어야 합니다.",
  "crulechk.DO_NOT_USE_CSTDIO.msg": "<cstdio>는 사용하지 않아야 합니다.",
  "crulechk.DO_NOT_USE_CSTRING.msg": "<cstring>를 사용하지 않아야한다.",
  "crulechk.DO_NOT_USE_CTIME.msg": "<ctime>은 사용하지 않아야 합니다.",
  "crulechk.DO_NOT_USE_C_STYLE_ALLOCATION.msg": "C++ 프로그램에서는 calloc, malloc, realloc, free와 같은 동적 메모리 관련 함수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_C_STYLE_ALLOCATION.sca.desc.remove": "동적 메모리 관련 함수 사용을 삭제합니다",
  "crulechk.DO_NOT_USE_C_STYLE_ALLOCATION.sca.note.desc.make_flow": "코드 변경으로 동작이 변경될수 있음에 유의하세요.",
  "crulechk.DO_NOT_USE_C_STYLE_CASTING.msg": "다음 4종류의 캐스팅 폼을 사용하도록 합니다: 'static_cast', 'const_cast', 'dynamic_cast', 'reinterpret_cast'",
  "crulechk.DO_NOT_USE_C_STYLE_CASTING.sca.desc.default": "C스타일의 캐스팅을 {0}로 바꾸도록 합니다.",
  "crulechk.DO_NOT_USE_C_STYLE_CASTING.sca.note.desc.dynamic_cast": "dynamic_cast를 사용하여 포인터형으로 캐스팅 할 때, 서로 상속관계가 아닌 클래스들은 결과가 NULL 일 수 있습니다. 이에 대한 처리가 필요합니다.",
  "crulechk.DO_NOT_USE_C_STYLE_CASTING.sca.note.desc.dynamic_cast_ref": "dynamic_cast를 사용하여 참조형으로 캐스팅 할 때, 서로 상속관계가 아닌 클래스들은 결과에 예외가 발생할 수 있습니다. 이에 대한 처리가 필요합니다.",
  "crulechk.DO_NOT_USE_C_STYLE_CASTING.sca.note.desc.reinterpret_cast": "reinterpret_cast를 사용하여 캐스팅 하는 경우는 위험한 캐스팅입니다. 이것은 사용자가 명확한 의도를 가지고 사용해야 합니다.",
  "crulechk.DO_NOT_USE_DANGEROUS_FUNCTIONS.msg1": "안전하지 않은 함수 호출입니다.",
  "crulechk.DO_NOT_USE_DEFAULT_ARGUMENT_WITH_OVERLOADED.msg": "오버로딩 함수에서 디폴트 인자를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_DEF_WITHIN_A_BLOCK.msg": "#define 및 #undef를 블록 안에서 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_DEPRECATED_FUNCTIONS.msg1": "더 이상 사용되지 않는 함수가 사용되었습니다.",
  "crulechk.DO_NOT_USE_DIGRAPH.msg": "이중자를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_DO_WHILE.msg": "do-while 문장이 사용되었습니다.",
  "crulechk.DO_NOT_USE_DYNAMICALLY_ALLOCATED_ARRAYS.msg": "배열 타입의 동적 할당 대신 vector나 string을 사용하도록 합니다.",
  "crulechk.DO_NOT_USE_DYNAMIC_ALLOCATION.msg": "calloc, malloc, realloc, free와 같은 동적 메모리 관련 함수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_DYNAMIC_ALLOCATION.sca.desc.remove": "동적 메모리 관련 함수 사용을 삭제합니다",
  "crulechk.DO_NOT_USE_DYNAMIC_ALLOCATION.sca.note.desc.make_flow": "코드 변경으로 동작이 변경될수 있음에 유의하세요.",
  "crulechk.DO_NOT_USE_ERRNO.msg": "errno를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_EXTERN_OR_STATIC.msg": "명시적으로 extern이나 static을 사용하는 것은 허용되지 않습니다.",
  "crulechk.DO_NOT_USE_EXTRA_CHARACTER_AFTER_PREPROCESSOR.msg": "전처리 구문 뒤에 공백을 제외한 문자를 작성하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_FENV_EXCEPTIONS.msg": "fenv.h 에서 제공하는 예외처리 기능을 사용하지 마십시오.",
  "crulechk.DO_NOT_USE_FLOAT_AS_LOOP_COUNTERS.msg1": "for 문의 반복횟수를 결정하는 식 중에서 실수형 변수 {0} 가 사용되었습니다. 실수형 변수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_FLOAT_AS_LOOP_COUNTERS.sca.desc.default": "루프 카운터는 실수형 변수 대신 정수형 변수를 사용하도록 합니다.",
  "crulechk.DO_NOT_USE_FLOAT_AS_LOOP_COUNTERS.sca.note.desc.calculate_value": "실수형의 증감되는 값이 필요한 경우 루프 카운터를 통해 계산한 후 사용하도록 합니다.",
  "crulechk.DO_NOT_USE_FLOAT_AS_LOOP_COUNTERS.sca.note.desc.change_integer": "for문에서 사용한 실수형 값을 정수형 값으로 변경합니다.",
  "crulechk.DO_NOT_USE_FLOAT_AS_LOOP_COUNTERS.sca.note.desc.change_other_code": "for문의 평가 부분과 증감 부분 및 루프 카운터를 이용한 코드가 수정되어야 합니다.",
  "crulechk.DO_NOT_USE_FORBIDDEN_FUNC.msg1": "금지된 함수 {0}가 사용되었습니다.",
  "crulechk.DO_NOT_USE_FORBIDDEN_TYPE.msg1": "\"{0}\" 는 금지된 타입입니다.",
  "crulechk.DO_NOT_USE_FUNCTION_LIKE_MACRO.msg": "함수 형태와 같은 매크로보다 함수 사용을 우선시하도록 합니다.",
  "crulechk.DO_NOT_USE_GETLOGIN_IN_MULTI_THREAD.msg1": "멀티 스레드 환경에서 안전한 함수 get_longin_r()을 사용해야 합니다.",
  "crulechk.DO_NOT_USE_GOTO_STATEMENT.msg1": "{0}에 너무 많은 goto 문이 있습니다.( {1} , 최대 = {2})",
  "crulechk.DO_NOT_USE_GOTO_STATEMENT.sca.desc.remove": "goto문을 제거합니다.",
  "crulechk.DO_NOT_USE_GOTO_STATEMENT.sca.note.desc.make_flow": "goto문의 삭제로 동작이 변경될수 있음에 유의하세요.",
  "crulechk.DO_NOT_USE_GOTO_STATEMENT.yMsg": "{0} 번째 goto 문장 입니다.",
  "crulechk.DO_NOT_USE_HARD_CODING.CALL.msg": "함수의 파라미터에서 하드코딩된 값이 사용되었습니다.",
  "crulechk.DO_NOT_USE_HARD_CODING.INITIALIZATION.msg": "금지된 하드코딩 값으로 변수가 초기화 되었습니다.",
  "crulechk.DO_NOT_USE_HARD_CODING.PASSWORD.msg1": "하드 코딩된 암호문이 변수에 복사되었습니다.",
  "crulechk.DO_NOT_USE_HARD_CODING.PASSWORD.msg2": "암호가 소스코드 내에서 상수로 사용되고 있습니다.",
  "crulechk.DO_NOT_USE_HARD_CODING.USERNAME.msg1": "사용자 ID가 소스코드 내에서 상수로 사용되고 있습니다",
  "crulechk.DO_NOT_USE_HARD_CODING.msg": "하드코딩된 값이 사용되었습니다.",
  "crulechk.DO_NOT_USE_HEXADECIMAL_ESCAPE.msg1": "16진수 이스케이프 시퀀스를 사용해서는 안됩니다.",
  "crulechk.DO_NOT_USE_IF_DIRECTIVE.msg": "#if 전처리 구문보다 #ifndef, #ifdef를 사용하도록 합니다.",
  "crulechk.DO_NOT_USE_IMPLICIT_DECLARED_FUNCTION.msg": "함수의 선언을 찾을 수 없습니다. 암시적으로 선언된 함수 prototype이 사용됩니다.",
  "crulechk.DO_NOT_USE_INLINE.msg": "클래스 바디에서의 함수 정의를 포함하여, 클래스의 멤버 함수에 대해 inline 키워드를 선언하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_INTEGER_CONSTANT_MACRO.msg1": "정수 상수 매크로의 인자 {0} 에 불필요한 접미사를 사용했습니다.",
  "crulechk.DO_NOT_USE_INTEGER_CONSTANT_MACRO.msg2": "정수 상수 매크로의 인자 {0} 에 부동 소수점 값을 사용했습니다.",
  "crulechk.DO_NOT_USE_INTEGER_CONSTANT_MACRO.msg3": "정수 상수 매크로의 인자 {0} 에 단항 연산자를 사용했습니다.",
  "crulechk.DO_NOT_USE_LABEL_STATEMENT.msg": "라벨이 사용되었습니다.",
  "crulechk.DO_NOT_USE_LONGJMP.msg": "longjmp함수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_MODULAR.msg": "나머지 연산을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_MULTILINE_IN_SINGLECOMMENT.msg": "한줄 코맨트에 여러줄을 입력했습니다.",
  "crulechk.DO_NOT_USE_NON_STANDARD_CHARACTERS.msg": "#include 전처리 구문 안의 파일명 작성 시, 비표준 문자를 사용해서는 안 됩니다.",
  "crulechk.DO_NOT_USE_NON_STANDARD_CHARACTERS.sca.desc.replace": "비표준 문자 라인을 제거합니다.",
  "crulechk.DO_NOT_USE_NULL_MACRO.msg": "NULL 매크로를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_OCTAL.msg1": "8진수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_OCTAL.sca.desc.default": "8진수 숫자 대신 10진수 수를 사용하도록 합니다.",
  "crulechk.DO_NOT_USE_OCTAL.sca.note.desc.check_value": "만약 10진수로 변환된 값이 의도한 값이 아닌 경우 숫자를 변경하도록 합니다.",
  "crulechk.DO_NOT_USE_OCTAL_ESCAPE.msg1": "8진수 이스케이프 시퀀스를 사용해서는 안됩니다.",
  "crulechk.DO_NOT_USE_OFFSETOF_MACRO.msg": "stddef.h에 정의되어 있는 매크로 offsetof를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_POINTER_ARITHMETIC.msg": "포인터 연산을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_PRAGMA.msg": "컴파일러에 종속적인 언어나 전처리 확장을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_PRINTF.msg": "금지된 함수 printf() 가 사용되었습니다.",
  "crulechk.DO_NOT_USE_PTHREAD_KILL.msg1": "쓰레드를 종료시키기 위해 pthread_kill 함수를 사용해서는 안됩니다",
  "crulechk.DO_NOT_USE_RECURSION.msg1": "재귀 호출을 사용했습니다.",
  "crulechk.DO_NOT_USE_REGISTER.msg1": "register 변수를 사용하지 말아야 합니다.",
  "crulechk.DO_NOT_USE_RESERVED_IN_MACRO.msg": "매크로에 예약어를 사용했습니다.",
  "crulechk.DO_NOT_USE_RESTRICT.msg": "restict 타입 한정자를 사용하지 마십시오.",
  "crulechk.DO_NOT_USE_SAME_NAME_IN_NESTED.msg": "안쪽 영역에서의 식별자는 바깥쪽 영역에서의 식별자와 동일한 이름을 사용하지 않아야 합니다. {0}",
  "crulechk.DO_NOT_USE_SAME_NAME_IN_NESTED.yMsg": "먼저 사용된 부분입니다.",
  "crulechk.DO_NOT_USE_SAME_SPELLING_IN_ANOTHER_NAMESPACE.msg": "하나의 네임스페이스 내에서 구조체와 유니온 멤버 변수를 제외하고 동일한 {0} 식별자 명을 사용하지 않아야 합니다.",
  "crulechk.DO_NOT_USE_SAME_SPELLING_IN_ANOTHER_NAMESPACE.yMsg": "먼저 사용된 부분입니다.",
  "crulechk.DO_NOT_USE_SEMICOLON_AFTER_PREPROCESSOR.msg": "전처리 구문 뒤에 세미콜론을 작성하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_SETJMP.msg": "setjmp 매크로 혹은 함수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_SETLOCALE.msg": "<locale.h> 및 setlocale 함수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_SHARP_OPERATOR.msg": "매크로에서 #혹은 ##명령을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_SIGNAL.msg": "시그널 함수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_SIGNAL_HANDLING.msg": "시그널 핸들링 기능이 선언된 <signal.h>를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_SIZEOF_ON_ARRAY_PARAM.msg1": "배열 타입의 파라미터에 sizeof 를 사용하면 안됩니다.",
  "crulechk.DO_NOT_USE_SIZEOF_ON_ARRAY_PARAM.sca.desc.default": "배열의 크기를 함수의 인자값으로 전달받도록 합니다.",
  "crulechk.DO_NOT_USE_SIZEOF_ON_ARRAY_PARAM.sca.note.desc.change_interface": "함수의 인터페이스가 변경되으로 선언부를 포함하여 관련된 코드가 수정되어야 합니다.",
  "crulechk.DO_NOT_USE_SIZEOF_ON_ARRAY_PARAM.sca.note.desc.pass_size": "함수 호출시 배열의 크기를 같이 전달해주어야 합니다.",
  "crulechk.DO_NOT_USE_SIZEOF_ON_PTR.msg1": "포인터형이나 typedef 형으로 정의된 타입을 sizeof 에 사용하면 안됩니다.",
  "crulechk.DO_NOT_USE_SIZEOF_ON_PTR.sca.desc.default": "포인터가 가리키는 타입의 크기를 계산하도록 합니다.",
  "crulechk.DO_NOT_USE_SIZEOF_ON_PTR.sca.note.desc.sizeof_result": "수정 예시가 제시한 sizeof 결과 크기는 {0}입니다. 만약 의도한 값과 다를 경우 코드를 수정하도록 합니다.",
  "crulechk.DO_NOT_USE_STATIC_IN_HEADER.msg": "헤더파일에서 static 한정자를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_STDARG_FEATURE.msg": "stdarg.h 의 기능을 사용하지 마십시오.",
  "crulechk.DO_NOT_USE_STDIO_H.msg": "실 제품 코드에서 입출력 기능이 선언된 \"stdio.h\"를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_STL_CONTAINER_AS_PUBLIC_BASE_CLASSES.msg": "STL 컨테이너를 베이스 클래스로 상속하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_SYSTEM.msg1": "system 함수가 호출되었습니다.",
  "crulechk.DO_NOT_USE_TERNARY_OPERATOR.msg": "삼항 연산자 ?: 를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_TGMATH_H.msg": "tgmath.h 를 사용하지 마십시오.",
  "crulechk.DO_NOT_USE_THROWABLE_FUNCTION_IN_COPY_ASSIGNMENT.msg": "복사 대입 연산자 내에서 예외를 던지는 함수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_THROW_IN_CTOR_OR_DTOR.msg1": "예외는 생성자와 소멸자에서 throw하면 안됩니다.",
  "crulechk.DO_NOT_USE_TRIGRAPH.msg1": "삼중자는 사용하지 말아야 합니다.",
  "crulechk.DO_NOT_USE_TRIGRAPH.sca.desc.default": "삼중자 형태를 출력하고 싶으면 아래와 같이 사용하십시오.",
  "crulechk.DO_NOT_USE_UNBOUNDED_AGGREGATE_TYPE.msg": "C스타일의 배열은 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_UNBOUNDED_AGGREGATE_TYPE.sca.desc.default": "C스타일의 배열 대신 vector 를 사용합니다.",
  "crulechk.DO_NOT_USE_UNBOUNDED_AGGREGATE_TYPE.sca.note.desc.use_push_back": "초기화 요소들을 위해 vector의 push_back 메소드를 사용합니다.",
  "crulechk.DO_NOT_USE_UNDEF.msg": "#undef 전처리 구문을 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_UNDEFINED_MACRO_IDENTIFIERS.msg1": "정의되지 않은 매크로 식별자는 #if 또는 #elif 전처리기 지시문에서 사용하지 않아야 합니다.",
  "crulechk.DO_NOT_USE_UNION.msg": "공용체는 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_UNUSED_MACRO_GLOBAL.msg": "사용되지 않은 매크로 입니다.",
  "crulechk.DO_NOT_USE_UNUSED_TAG_GLOBAL.msg": "사용되지 않은 tag 입니다. {0}",
  "crulechk.DO_NOT_USE_UNUSED_TYPE_GLOBAL.msg": "사용되지 않은 type 입니다.",
  "crulechk.DO_NOT_USE_USING_DIRECTIVE.msg": "항상 using선언을 사용하거나 명시적으로 네임스페이스 한정자를 작성합니다. using지시자는 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_VARIABLE_LENGTH_ARRAY.msg1": "배열 길이의 값이 정해지지 않았습니다.",
  "crulechk.DO_NOT_USE_VARIABLE_LENGTH_ARRAY.sca.desc.add_size": "배열 길이를 명시합니다.",
  "crulechk.DO_NOT_USE_VFORK.msg1": "vfork()와 execve()의 결합은 일부 시스템에서 레이스 윈도우가 발생할 수 있습니다.",
  "crulechk.DO_NOT_USE_VFORK.msg_blue": "vfork() 함수가 사용되었습니다.",
  "crulechk.DO_NOT_USE_VOLATILE_IN_COMPLEX_EXPRESSION.msg": "복잡한 수식 내에서 volatile 변수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_USE_WIDE_CHARACTER.msg": "멀티바이트 문자열 및 와이드 문자열 상수를 사용하지 않도록 합니다.",
  "crulechk.DO_NOT_VIOLATE_CONSTRAINTS.bMsg": "정적 변수가 선언되었습니다.",
  "crulechk.DO_NOT_VIOLATE_CONSTRAINTS.msg": "제약조건을 위반하지 않도록 합니다.",
  "crulechk.DO_NOT_WRITE_CONFUSED_CHARACTER.msg": "영문자 'ㅣ'과 숫자 '1', 영문자 'O'와 숫자 '0'을 같은 식별자 안에서 사용하지 않도록 합니다.",
  "crulechk.DUPLICATED.DESIGNATED_INIT.msg": "{0} 변수에서 중복 초기화가 일어났습니다.",
  "crulechk.DUPLICATED.DESIGNATED_INIT.msg-b": "필드가 여기 선언되었습니다.",
  "crulechk.DUPLICATED.DESIGNATED_INIT.msgIdx": "{0} 변수의 인덱스{1} 가 중복 초기화가 일어났습니다.",
  "crulechk.DYNAMIC_TYPE_IN_CTOR_OR_DTOR.msg": "객체의 동적 타입은 생성자 또는 소멸자에서 사용하면 안됩니다.",
  "crulechk.EMERGENT_LANGUAGE_FEATURES_SHALL_NOT_BE_USED.msg": "C11 표준에 추가된 기능이 사용되어 예상하지 못한 동작을 할 수 있습니다.",
  "crulechk.EMPTY_ARRAY_SIZE.MISRA2012.msg": "배열의 크기가 명시되지 않은 채로 선언되었습니다.",
  "crulechk.EMPTY_ARRAY_SIZE.MISRA2012.sca.desc.default": "배열에 크기를 명시합니다.",
  "crulechk.EMPTY_ARRAY_SIZE.msg": "배열의 크기가 명시되지 않은 채로 선언되었습니다.",
  "crulechk.EMPTY_ARRAY_SIZE.sca.desc.default": "배열에 크기를 명시합니다.",
  "crulechk.EMPTY_BRANCH.MISSING_ELSE.nrMsg2": "if문에 else 절이 존재하지 않습니다.",
  "crulechk.EMPTY_BRANCH.MISSING_ELSE.nrMsg3": "else 절이 비어있습니다.",
  "crulechk.EMPTY_BRANCH.MISSING_ELSE.sca.desc.insert_else": "else 절을 삽입합니다.",
  "crulechk.EMPTY_BRANCH.msg1": "else 절이 없습니다.",
  "crulechk.EMPTY_BRANCH.msg2": "else 절이 비어있습니다.",
  "crulechk.EMPTY_BRANCH.msg3": "default case가 비어있습니다.",
  "crulechk.EMPTY_BRANCH.msg4": "case 혹은 default 가 비었습니다.",
  "crulechk.EMPTY_BRANCH.msg5": "case 가 없습니다.",
  "crulechk.EMPTY_BRANCH.msg6": "default case 가 없습니다.",
  "crulechk.EMPTY_BRANCH.msg7": "switch 문에 빈 case나 default 절이 있습니다.",
  "crulechk.EMPTY_BRANCH.nbMsg1": "case문이 없습니다.",
  "crulechk.EMPTY_BRANCH.nbMsg2": "default문이 없습니다.",
  "crulechk.EMPTY_BRANCH.nbMsg3": "case 문이 비어있습니다.",
  "crulechk.EMPTY_BRANCH.nbMsg4": "default 문이 비어있습니다.",
  "crulechk.EMPTY_BRANCH.nrMsg1": "if문의 else절이 비어있습니다.",
  "crulechk.EMPTY_BRANCH.nrMsg2": "if문에 else 절이 존재하지 않습니다.",
  "crulechk.EMPTY_BRANCH.nrMsg3": "switch 문의 예외 처리가 잘못되었습니다.",
  "crulechk.EMPTY_BRANCH.sca.desc.insert_case": "case 절을 삽입합니다.",
  "crulechk.EMPTY_BRANCH.sca.desc.insert_default": "default 절을 삽입합니다.",
  "crulechk.EMPTY_BRANCH.sca.desc.insert_else": "else 절을 삽입합니다.",
  "crulechk.EMPTY_BRANCH.sca.note.desc.warning": "주석 부분을 코드에 맞게 교체해서 사용하시기 바랍니다.",
  "crulechk.EMPTY_CATCH_BLOCK.msg1": "catch 블록이 비어있습니다.",
  "crulechk.EMPTY_EXTERN_ARRAY_SIZE.msg": "배열이 사이즈가 없는 외부 배열 입니다.",
  "crulechk.EMPTY_WHILE.msg1": "이 while 구문은 statements가 없고, 비어있습니다.",
  "crulechk.ENCAPSULATE_ASSEMBLER.msg": "어셈블리 언어는 캡슐화 되고 고립되어야 합니다.",
  "crulechk.ENCAPSULATE_ASSEMBLER.sca.desc.default": "어셈블리 코드를 함수로 캡슐화 하도록 합니다.",
  "crulechk.ENCAPSULATE_ASSEMBLER.yMsg": "어셈블리 문장 입니다.",
  "crulechk.ENCLOSE_FUNCTIONS_IN_THE_UNNAMED_NAMESPACE.msg": "외부 인터페이스에 속해있지 않은 모든 비멤버 함수는 소스 파일에서 언네임드 네임스페이스안에 묶어야 합니다.",
  "crulechk.ENSURE_CONSISTENCY_OF_THE_PARAMETER_DECLARATION.msg": "파라미터 선언 시 식별자가 일관적인지 확인합니다.",
  "crulechk.ENSURE_EACH_IDENTIFIER_IS_DISTINCT.msg": "각각의 식별자가 구별되는지 확인합니다. {0}, {1}",
  "crulechk.ENSURE_EACH_IDENTIFIER_IS_DISTINCT.sca.desc.rename": "변수의 이름을 변경합니다.",
  "crulechk.ENSURE_EACH_IDENTIFIER_IS_DISTINCT.sca.note.desc.refactory_all": "관련되어 사용된 같은 변수의 이름을 동일하게 변경해야 합니다.",
  "crulechk.ENSURE_EACH_IDENTIFIER_IS_DISTINCT.yMsg": "타입 선언부 입니다.",
  "crulechk.ENSURE_LAST_LINE_IS_EMPTY.msg": "모든 소스 코드 파일은 마지막에 빈 줄이 있어야 합니다.",
  "crulechk.ENSURE_MEMBER_TYPE_OF_STRUCT.msg_b": "잘못된 타입입니다.",
  "crulechk.ENSURE_MEMBER_TYPE_OF_STRUCT.msg_r": "구조체의 멤버 변수들은 제한된 타입만 사용되어야 합니다.",
  "crulechk.ENSURE_PASSING_VECTOR_TYPE_TO_C_STYLE.msg": "C 스타일 함수에 벡터 타입의 값을 전달할 때 &v[0]을 사용하도록 합니다.",
  "crulechk.ENSURE_PRIVILEGE_RELINQUISHMENT.msg1": "권한 양도가 제대로 수행되었음을 확인해야 합니다.",
  "crulechk.ENSURE_RETURN_VALUE_COMPARE.msg1": "반환 값이 적절한 타입과 비교되는지 확인해야 합니다.",
  "crulechk.ENSURE_SINGLE_ENTRY_AND_EXIT_POINT.breaMsg": "break 구문이 사용되었습니다.",
  "crulechk.ENSURE_SINGLE_ENTRY_AND_EXIT_POINT.gotoMsg": "goto 구문이 사용되었습니다.",
  "crulechk.ENSURE_SINGLE_ENTRY_AND_EXIT_POINT.labelMsg": "진입 지점인 label 문장 입니다.",
  "crulechk.ENSURE_SINGLE_ENTRY_AND_EXIT_POINT.msg": "switch문의 몸체를 제외한 모든 복합구문은 단일 진입지점과 단일 탈출지점을 가져야 합니다. 단 try-catch에 의한 exception의 경우는 예외로 합니다.",
  "crulechk.ENSURE_USING_NAMESPACE_POSITION.msg": "using 지시자는 오로지 메인 소스 파일이나, 모든 include 지시자보다 아래에 있어야 합니다.",
  "crulechk.ERROR_WITHOUT_ACTION.msg1": "if문 안에 에러를 방지하기 위한 방어 코드가 없습니다.",
  "crulechk.ERROR_WITHOUT_ACTION.msg2": "대상 함수가 호출되었습니다.",
  "crulechk.EUGENE_TOO_LONG_FUNCTION_NAME.msg1": "{0} 는 함수 이름으로 적절하지 않습니다.",
  "crulechk.EUGENE_TOO_LONG_VARIABLE_NAME.msg1": "{0} 는 변수 이름으로 적절하지 않습니다. 변수 이름이 너무 깁니다.",
  "crulechk.EUGENE_WRONG_BSNAME_IN_FILENAME.msg1": "{0} 은 파일이름으로 적절하지 않습니다",
  "crulechk.EUGENE_WRONG_BSNAME_IN_FUNCTION_NAME.msg1": "{0}은 함수 이름으로 적절하지 않습니다.",
  "crulechk.EUGENE_WRONG_CMNAME_IN_FILE_NAME.msg1": "{0} 은 파일이름으로 적절하지 않습니다",
  "crulechk.EUGENE_WRONG_CMNAME_IN_FUNCTION_NAME.msg1": "{0} 는 함수 이름으로 적절하지 않습니다.",
  "crulechk.EUGENE_WRONG_DATA_FILE_NAME.msg1": "{0} 은 내부/외부 파일로 적절하지 않습니다.",
  "crulechk.EUGENE_WRONG_DEFAULT_DBIO.msg1": "{0} 은 DM 이름으로 적절하지 않습니다.",
  "crulechk.EUGENE_WRONG_DSNAME_IN_FILE_NAME.msg1": "{0} 은 파일이름으로 적절하지 않습니다",
  "crulechk.EUGENE_WRONG_OSNAME_IN_FILE_NAME.msg1": "{0} 은 파일이름으로 적절하지 않습니다",
  "crulechk.EUGENE_WRONG_OSNAME_IN_FUNCTION_NAME.msg1": "{0} 는 함수 이름으로 적절하지 않습니다.",
  "crulechk.EUGENE_WRONG_STRUCTURE_NAME.msg1": "{0} 는 구조체 이름으로 적절하지 않습니다.",
  "crulechk.EUGENE_WRONG_UMNAME_IN_FILE_NAME.msg1": "{0} 은 파일이름으로 적절하지 않습니다",
  "crulechk.EUGENE_WRONG_UMNAME_IN_FUNCTION_NAME.msg1": "{0} 는 함수 이름으로 적절하지 않습니다.",
  "crulechk.EUGENE_WRONG_USER_DBIO.msg1": "{0} 은 VM 이름으로 적절하지 않습니다.",
  "crulechk.EUGENE_WRONG_VARIABLE_NAME.msg1": "{0} 는 변수 이름으로 적절하지 않습니다.",
  "crulechk.EXCEPTION.IGNORE_RETURN_VALUE.PF.msg": "특정 API 사용시 리턴값을 확인하여 예외처리 하는지 확인해야 합니다.",
  "crulechk.EXCEPTION.MISSING_HANDLE.RES.PF.msg": "리소스 모듈 (BM, SM, BTM) 호출후 예외처리를 했는지 검증해야 합니다.",
  "crulechk.EXCESSIVE_FUNCTION_CALLS.msg1": "{0}에서 너무 많은 함수 호출이 있습니다. ( {1}, 최대={2} )",
  "crulechk.EXCESSIVE_FUNCTION_CALLS.yMsg": "{0} 번째 호출 수식 입니다.",
  "crulechk.EXCESSIVE_IFS.msg": "If 분기가 너무 많이 사용되었습니다.",
  "crulechk.EXCESSIVE_STACK_DEPTH.msg1": "스택 깊이가 과도합니다.",
  "crulechk.EXCESSIVE_STACK_DEPTH.msg2": "스택 영역에 너무 많은 공간을 할당하고 있습니다. 총 {1} 바이트를 할당하고 있으며 기준 값 {0} 바이트를 초과하고 있습니다.",
  "crulechk.EXCESSIVE_STACK_DEPTH.sca.desc.allocation": "변수를 동적할당을 이용하여 선언합니다.",
  "crulechk.EXCESSIVE_STACK_DEPTH.sca.desc.resize": "변수 배열의 크기를 더 작게 조정합니다. 현재 설정한 스택 변수의 최대 크기는 {0}이고, 변수 {1}의 크기는 {2}입니다.",
  "crulechk.EXCESSIVE_STACK_DEPTH.sca.note.desc.option_stack_size": "스택 변수의 최대 크기는 체커 옵션에서 조정 가능합니다.",
  "crulechk.EXCESSIVE_STACK_DEPTH.sca.note.desc.release_heap": "변수를 사용이 끝난 뒤 함수가 리턴되기 전 메모리 해제를 해야 합니다.",
  "crulechk.EXCESSIVE_STACK_DEPTH.sca.note.desc.use_heap_space": "버퍼를 크게 유지해야 할 경우 동적 할당을 사용하는 것이 좋습니다.",
  "crulechk.EXPLICIT_COPY_CONSTRUCTOR_WHEN_TEMPLATED_CONSTRUCTOR.msg": "템플릿 복사 생성자가 있을 때, 명시적 복사 생성자가 선언되어야 합니다.",
  "crulechk.EXPLICIT_NAME_QUALIFIER_WHEN_TEMPLATED_BASE.msg": "템플릿화된 기초 클래스를 상속받은 클래스에서 기초 클래스 멤버에 접근할 때에는 네임스페이스 한정자를 항상 붙여야 합니다.",
  "crulechk.EXPLICIT_RETURN_WHEN_NON_VOID_RETURN_FUNCTION.msg": "non-void 반환 타입을 가지는 함수는 명식적인 return 값이 있어야 합니다.",
  "crulechk.EXPLICIT_VIRTUAL_KEYWORD.msg": "파생된 클래스에서 다형성을 가진 멤버 함수는 virtual을 명시적으로 선언하도록 합니다.",
  "crulechk.EXPLICIT_VIRTUAL_KEYWORD.msg1": "기반 클래스가 여기서 선언되었습니다.",
  "crulechk.EXPLICIT_VIRTUAL_KEYWORD.sca.desc.default": "다형성을 가진 멤버 함수 {0}() 를 가상으로 선언합니다.",
  "crulechk.EXPR_NOT_BOOLEAN.msg1": "Boolean 값이 위치해야 합니다.",
  "crulechk.EXPR_NOT_BOOLEAN.sca.desc.default": "0과 비교하는 문장을 넣도록 합니다.",
  "crulechk.EXPR_NOT_BOOLEAN.sca.note.desc.check_logic": "예시의 비교 구문이 원하는 흐름이 아닐 경우, 반드시 로직에 맞게 비교 구문을 변경해야 합니다.",
  "crulechk.EXTERNAL_IDENTIFIER_NAME_CONFLICT.bmsg": "{0} 는 충돌의 원인이 된 이전에 선언된 식별자입니다.",
  "crulechk.EXTERNAL_IDENTIFIER_NAME_CONFLICT.msg": "외부 식별자 {0} 의 이름이 다른 외부 식별자와 유효한 문자 내에서 구별되지 않아 충돌합니다.",
  "crulechk.EXTERN_VAR_AND_FUNC_SHOULD_BE_IN_INTERFACE_FILE.msg": "'extern' 변수와 함수의 선언은 인터페이스 파일에서만 이루어져야 합니다.",
  "crulechk.FILENAME_IN_ANGLE_BRACKET_OR_DOUBLE_QUOTATION.msg": "#include 전처리문은 <filename> 형태나 \"filename\"을 따라야 합니다.",
  "crulechk.FIRST_COLUMN.FUNCTION.msg": "함수는 첫번째 컬럼부터 선언되어야 합니다.",
  "crulechk.FIRST_COLUMN.GLOBAL.msg": "전역 변수는 첫번째 컬럼부터 선언되어야 합니다.",
  "crulechk.FIRST_COLUMN.LOCAL.msg": "지역 변수는 첫번째 컬럼부터 선언되어야 합니다.",
  "crulechk.FIRST_COLUMN.PREPROCESSING.msg": "전처리 구문은 첫번째 컬럼부터 선언되어야 합니다.",
  "crulechk.FLEXIBLE_ARRAY_MEMBER.msg1": "가변 배열 인자를 사용했습니다.",
  "crulechk.FLOAT_BIT_REPRESENTATION.r_msg": "부동소수점 타입의 비트표현 부분을 사용해선 안 됩니다.",
  "crulechk.FLOAT_BIT_REPRESENTATION.r_msg1": "이 수식은 공용체 필드 {0}의 값을 변경시킬 수 있습니다. 공용체는 필드끼리 메모리를 공유하고 있기 때문입니다.",
  "crulechk.FLOAT_BIT_REPRESENTATION.y_msg": "부동소수점 타입의 필드가 선언되었습니다.",
  "crulechk.FORBIDDEN.ASSIGN_ADDRESS.msg": "함수 포인터에 직접 하드웨어 주소를 입력하지 마십시오.",
  "crulechk.FORBIDDEN.CALL.BATCH.PF.msg": "Batch에서 금지된 함수가 호출되었습니다.",
  "crulechk.FORBIDDEN.CALL.BM.PF.msg": "BM에서 금지된 함수가 호출되었습니다.",
  "crulechk.FORBIDDEN.CALL.BM_TO_SM.PF.msg": "BM에서 SM을 호출하지 마십시오.",
  "crulechk.FORBIDDEN.CALL.SM.PF.msg": "서비스 모듈에서 금지된 함수가 호출되었습니다.",
  "crulechk.FORBIDDEN.FILE_IO.PF.msg": "서비스 및 BM에서 파일처리를 하지 말아야 합니다.",
  "crulechk.FORBIDDEN.MODIFY_PARAMETER.msg": "함수 파라미터를 수정하지 마십시오.",
  "crulechk.FORBIDDEN.MULTI_DIMENSION_ARRAY.msg": "이 변수의 타입은 {0}차원의 배열입니다. {1}차원 이상의 배열은 사용할 수 없습니다.",
  "crulechk.FORBIDDEN.STATIC_KEYWORD_IN_PARAM.msg": "함수 파라미터의 선언 시 중괄호 사이에 static 키워드를 넣지 마십시오.",
  "crulechk.FORBIDDEN_CALL.BEFORE_CALL.bMsg": "{0} 함수를 호출했습니다. 이것은 잘못된 호출 순서입니다.",
  "crulechk.FORBIDDEN_CALL.BEFORE_CALL.msg": "{1} 함수가 호출되기 전 {0} 함수가 호출되었습니다.",
  "crulechk.FORBIDDEN_CALL.LOOP.msg": "함수({0})가 루프 안에서 호출되었습니다.",
  "crulechk.FORBIDDEN_DYNAMIC_TYPE_IN_CTOR_DTOR.msg1": "생성자/소멸자에서 동적 타입을 사용하면 안됩니다.",
  "crulechk.FORMAT_STRING.msg1": "{0}번째 인자의 타입은 {1} 인데, 대응되는 포맷 스트링 변환 문자는 {2} 입니다.",
  "crulechk.FORMAT_STRING.msg2": "{0}번째 인자의 타입은 {1} 인데, 대응되는 포맷 스트링 변환 문자는 {2} 입니다. {3}로 변환해야 합니다.",
  "crulechk.FORMAT_STRING.msg3": "{0}번째 인자의 타입은 {1} 인데, 대응되는 포맷 스트링 변환 문자는 {2} 입니다. {3}로 변환해야 합니다. 접미사에 따라 표현하는 진수가 다르니 적절하게 선택하기 바랍니다. u는 10진수, o는 8진수, x는 16진수 입니다.",
  "crulechk.FORMAT_STRING_ARGUMENT_NUMBER_MISMATCH.msg": "포맷 스트링의 갯수와 인자의 갯수가 일치하지 않습니다.",
  "crulechk.FORMAT_STRING_OVERFLOW.msg1": "변수가 선언되었습니다.",
  "crulechk.FORMAT_STRING_OVERFLOW.msg2": "생성된 문자열의 크기를 제한하지 않고 있습니다. 긴 문자열이 입력되면 버퍼 오버플로우가 발생할 수 있습니다.",
  "crulechk.FOR_LOOP_CONTROL_CHANGE_COND.msg": "변수의 값이 바뀔 가능성이 있습니다.",
  "crulechk.FOR_LOOP_NONBOOL_CONTROL_CHANGED.msg": "bool이 아닌 타입의 조건 제어 변수에 다른 값을 할당하고 있습니다.",
  "crulechk.FUNCTION_DEFINITION_TYPE_MISMATCH.bMsg": "함수가 선언되었습니다.",
  "crulechk.FUNCTION_DEFINITION_TYPE_MISMATCH.msg": "함수 정의가 일치하지 않습니다. 선언된 파라미터 타입과 리턴 타입을 확인하도록 합니다.",
  "crulechk.FUNCTION_SHALL_BE_DECL_FILE_SCOPE.msg": "함수는 파일 범위에서 선언되어야 합니다.",
  "crulechk.FUNCTION_TRY_BLOCK_SHOULD_NOT_REFERENCE_CLASS_DATA.msg1": "생성자와 소멸자 내의 핸들러는 클래스 멤버에 접근하지 말아야 합니다.",
  "crulechk.FUNCTION_WITHOUT_DEFINITION.msg": "함수 선언은 있으나 정의가 존재하지 않습니다.",
  "crulechk.FUNCTION_WITH_VOID_RETURN_TYPE_SHOULD_HAVE_EXTERNAL_SIDE_EFFECT.msg": "void 반환 타입을 가지는 모든 함수는 외부 부수 효과(side effect)를 가져야 합니다.",
  "crulechk.GENERIC_CONTROL_EXPR_ESSENTIAL_MISMATCH.msg": "_Generic 에 전달된 제어 표현식 {0} 의 본질적 타입이 표준 타입과 불일치하여 의도와 다른 타입이 선택될 수 있습니다.",
  "crulechk.GENERIC_CONTROL_EXPR_EVAL_COUNT_MISMATCH.msg": " _Generic 에 전달된 제어 표현식 {0} 의 평가 회수가 연결 목록 중 선택된 항목에 따라 다릅니다.",
  "crulechk.GENERIC_DEFAULT_ONLY_CHECKER.msg": " _Generic 타입 명세에 기본값만 존재하고 특정 타입에 대한 명세가 없습니다.",
  "crulechk.GENERIC_DEFAULT_POSITION.msg": "_Generic의 기본 항목이 연결 목록의 첫 번째나 마지막에 위치하지 않습니다.",
  "crulechk.GENERIC_INVALID_TYPE_CHECKER.msg": "_Generic 타입 명세에서 한정자 및 배열과 같은 부적합한 타입이 있습니다. 작성한 타입 명세를 재검토 해야 합니다.",
  "crulechk.GENERIC_POINTER_IMPLICIT_CONV_BAN.msg": "_Generic의 선택 표현식에 전달된 {0} 변수가 삼항 연산자 없이 사용되어 포인터 타입 암시적 변환에 의존하고 있습니다.",
  "crulechk.GENERIC_SIDE_EFFECT_CHECKER.msg": "_Generic 인자에 부수 효과가 있는 수식을 사용했습니다.",
  "crulechk.GETCHAR_TO_INT.msg": "int 보다 작은 타입에 반환값을 할당하고 있습니다.",
  "crulechk.GLOBAL_ENTITY_TYPE_MISMATCH.sink": "전역 범위에 속하는 {0}의 타입이 이전에 선언된 타입과 일치하지 않습니다.",
  "crulechk.GLOBAL_ENTITY_TYPE_MISMATCH.src": "현재 선언과 불일치하는 이전 선언입니다.",
  "crulechk.GLOBAL_OPERATOR_DELETE_ALONE.msg": "operator delete 연산자의 크기 지정 버전과 미지정 버전이 쌍으로 정의되지 않았습니다.",
  "crulechk.GOTO_JUMP_LATER_DECLARED_LABEL_ONLY.msg": "goto 문은 같은 함수 안에 goto 문 이후에 선언된 레이블로만 점프해야 합니다.",
  "crulechk.GOTO_JUMP_LATER_DECLARED_LABEL_ONLY.msg-b": "goto 라벨이 사용되었습니다.",
  "crulechk.HANDLE_ALL_EXCEPTIONS_BEFORE_MAIN_BEGINS_EXECUTE.msg": "전역 범위의 객체 생성 시 처리되지 않은 예외를 발생 시킬 수 있습니다.",
  "crulechk.HANDLE_ALL_EXCEPTIONS_BEFORE_MAIN_BEGINS_EXECUTE.sourceMsg": "함수에서 처리되지 않은 예외가 발생할 수 있습니다.",
  "crulechk.HANDLE_ALL_EXCEPTIONS_IF_SPECIFIED.msg1": "예외 명세에 있는 타입 만 throw 할 수 있습니다.",
  "crulechk.HANDLE_ALL_EXCEPTIONS_NOT_IN_SPEC.msg1": "exception specification에 기술되지 않은 모든 throw에 대하여 예외처리를 해야만 합니다.",
  "crulechk.HANDLE_ALL_EXCEPTIONS_NOT_IN_SPEC.sca.desc.remove": "spec에 정의되지 않은 throw 를 삭제합니다.",
  "crulechk.HANDLE_FLOATING_POINT_ERRORS.msg": "부동소수점 에러를 발견하고 처리하도록 합니다.",
  "crulechk.HANDLE_STANDARD_LIBRARY_ERROR.msg": "함수의 반환값을 검사하십시오.",
  "crulechk.HANWHA_NAMING_CONVENTION.msg1": "{0}는 파일 이름으로 적절하지 않습니다.",
  "crulechk.HANWHA_NAMING_CONVENTION.msg2": "{0}는 함수 이름으로 적절하지 않습니다.",
  "crulechk.HANWHA_NAMING_CONVENTION.msg3": "변수 이름이 {0}자입니다. {1}자 내로 줄여야 합니다.",
  "crulechk.HANWHA_NAMING_CONVENTION.msg4": "{0}는 변수 이름으로 적절하지 않습니다.",
  "crulechk.HANWHA_NAMING_CONVENTION.msg5": "{0}는 구조체 이름으로 적절하지 않습니다.",
  "crulechk.HANWHA_NAMING_CONVENTION.msg6": "{0}는 DM 이름으로 적절하지 않습니다.",
  "crulechk.HEAP_INSPECTION.msg1": "여기서 변수\"{0}\"를 선언했습니다.",
  "crulechk.HEAP_INSPECTION.msg2": "함수 {1}에서 인자로 변수 {0}를 사용했습니다.",
  "crulechk.HEAP_INSPECTION.msg3": "힙메모리를 깨끗하게 정리하지 않았습니다.",
  "crulechk.HUNGARIAN_NOTATION.msg1": "변수 이름 {0}는 허용되지 않습니다.",
  "crulechk.IF_ELSE_IF.MISSING_ELSE.msg1": " if-else if 체인의 마지막에 else 블록이 누락되었습니다.",
  "crulechk.IF_ELSE_IF.MISSING_ELSE.msg2": "마지막 else 블록 내부에 유의미한 실행 문장이나 주석이 존재하지 않습니다.",
  "crulechk.IGNORED_RETURN_VALUE.msg": "함수의 리턴 값이 무시되었습니다.",
  "crulechk.IMPLEMENT_ABSTRACT_DATA_TYPES.msg": "불투명한 데이터 타입을 사용해 추상 데이터 타입을 구현하도록 합니다.",
  "crulechk.IMPLICIT_ARITH_CONVERSION.sink1": "부적절한 암시적 타입 변환 연산이 발생했습니다.",
  "crulechk.IMPLICIT_ARITH_CONVERSION.sink2": "많은 수의 부적절한 암시적 타입 변환 연산이 발생했습니다. 전체 수식을 재검토해야 합니다.",
  "crulechk.IMPLICIT_ARITH_CONVERSION.src1": "{0} 연산의 피연산자 타입이 각각 {1} 와 {2} 로 서로 다릅니다.",
  "crulechk.IMPLICIT_ARITH_CONVERSION.src2": "{0} 연산의 피연산자 부호가 각각 {1} 와 {2} 로 서로 다릅니다.",
  "crulechk.IMPLICIT_ASSIGNMENT_CONVERSION.msg1": "{0} 타입의 값이 {1} 타입의 변수인 {2} 에 할당되었습니다. 두 타입의 본질적 타입이 다릅니다.",
  "crulechk.IMPLICIT_ASSIGNMENT_CONVERSION.msg2": "{0} 타입의 값이 더 좁은 범위의 {1} 타입 변수인 {2} 에 할당되어 데이터 손실이 발생할 수 있습니다.",
  "crulechk.IMPLICIT_ASSIGNMENT_CONVERSION.msg3": "{0} 타입의 값이 {1} 타입 변수인 {2} 에 할당되었습니다. 두 타입의 부호가 다릅니다.",
  "crulechk.IMPLICIT_CAPTURE_THIS_LAMBDA.msg": "람다 본문에서 {0} 클래스의 멤버 변수를 사용했기 때문에 기본 캡처가 this 포인터를 암시적으로 캡처했습니다.",
  "crulechk.IMPLICIT_CONVERSION_FLOAT_PARAM.msg": "실수형을 암시적 캐스팅으로 다른 타입의 실수형 파라미터로 사용하는 것을 금지합니다.",
  "crulechk.IMPLICIT_CONVERSION_FLOAT_PARAM.sca.desc.default": "선언한 함수 인자 타입에 맞도록 형변환해야 합니다.",
  "crulechk.IMPLICIT_CONVERSION_INT_PARAM.msg1": "정수형을 명시적 캐스팅 없이 더 큰 정수형의 파라미터에 사용하면 안됩니다",
  "crulechk.IMPLICIT_CONVERSION_INT_PARAM.sca.desc.default": "선언한 함수 인자 타입에 맞도록 형변환해야 합니다.",
  "crulechk.IMPLICIT_NARROW_FLOAT_CONVERSION.msg": "실수형 타입의 복잡한 수식 값은 같은 사이즈나 좀 더 작은 실수형 타입으로만 캐스팅 되어야 합니다.",
  "crulechk.IMPLICIT_NARROW_FLOAT_CONVERSION.sca.desc.default": "명시적으로 캐스팅을 수행 하도록 합니다.",
  "crulechk.IMPLICIT_NARROW_INTEGER_CONVERSION": "작은 정수형으로 암시적 형변환하면 안됩니다. 데이터 손실의 위험이 있습니다.",
  "crulechk.IMPLICIT_NARROW_INTEGER_CONVERSION.msg": "보다 작은 범위로 암시적 캐스팅 할 경우 정보가 손실될 수 있습니다.",
  "crulechk.IMPLICIT_NARROW_INTEGER_CONVERSION.sca.desc.default": "명시적으로 캐스팅을 수행 하도록 합니다.",
  "crulechk.IMPLICIT_UNSIGNED_CHAR_TO_CHAR_HANDLING_INT.msg": "char형 타입을 인자로 취급하는 함수에서 인자는 항상 unsigned char 타입이어야 합니다",
  "crulechk.IMPLICIT_WIDEN_CAST_COMPLEX_FLOAT_EXPR.msg": "실수형 타입의 복잡한 수식 값은 암시적으로 넓은 범위의 실수형 캐스팅은 될 수 없습니다.",
  "crulechk.IMPLICIT_WIDEN_CAST_COMPLEX_FLOAT_EXPR.sca.desc.default": "명시적으로 캐스팅을 수행 하도록 합니다.",
  "crulechk.IMPLICIT_WIDEN_CAST_COMPLEX_INT_EXPR.msg1": "정수형으로 된 복잡한 표현식 값은 더 큰 정수형으로 암시적 형변환하면 안됩니다.",
  "crulechk.IMPLICIT_WIDEN_CAST_COMPLEX_INT_EXPR.sca.desc.default": "명시적으로 캐스팅을 수행 하도록 합니다.",
  "crulechk.IMPROPERLY_CTL_SEQ_MEM_ALLOC.msg": "alloca()는 스택에 메모리를 할당하여 스택 오버플로우를 유발합니다.",
  "crulechk.IMPROPER_ESSENTIAL_CAST.msg": " {0}의 값이 부적절하게 {1} 타입에서 {2} 타입으로 변환되었습니다.",
  "crulechk.IMPROPER_FLOATING_POINT_OPERATION.msg1": "{0} 함수의 첫번째 인자에 위험한 인자 값 {1} 을 사용했습니다.",
  "crulechk.IMPROPER_FLOATING_POINT_OPERATION.msg2": "{0} 함수의 두번째 인자에 위험한 인자 값 {1} 을 사용했습니다.",
  "crulechk.IMPROPER_FUNC_PTR_CONVERSION.msg": "함수 포인터 타입으로 변환된 다른 타입의 값이 {0} 변수에 대입되었습니다.",
  "crulechk.IMPROPER_MACRO_NAME.msg": "전처리 이름은 대문자 알파벳과 _(underscore)로만 구성되어야 합니다.",
  "crulechk.IMPROPER_OVERLOAD_OF_SUBSCRIPT_OPERATOR.msg": "'[]' 연산자를 오버로딩 할 시 상수형과 비 상수형 버전을 모두 구현합니다.",
  "crulechk.IMPROPER_RANDOM_USAGE.msg1": "rand() 함수가 호출되었습니다.",
  "crulechk.IMPROPER_RANDOM_USAGE.msg2": "srand() 의 seed 가 상수 값 \"{0}\" 입니다.",
  "crulechk.IMPROPER_RANDOM_USAGE.msg3": "random 함수 \"{0}\"가 seeding 함수 \"{1}\" 호출 없이 사용되었습니다.",
  "crulechk.IMPROPER_RANDOM_USAGE.msg4": "메르센 트위스터 난수 생성 객체가 random_device와 같은 비결정적인 난수 초기화를 사용하지 않고 선언되었습니다.",
  "crulechk.IMPROPER_REALLOC.msg": "프로그래머는 realloc() 함수를 사용할 때 동적 메모리의 포인터를 잃어버리지 않았는지 확인해야 합니다.",
  "crulechk.IMPROPER_REALLOC.sca.desc.default": "새로운 변수를 만들어 realloc()의 결과를 저장하도록 합니다.",
  "crulechk.IMPROPER_REALLOC.sca.note.desc.change_exist_variable": "realloc() 이후에 변수 {0}가 사용된 부분을 새로운 변수로 변경해야 합니다.",
  "crulechk.IMPROPER_RESTRICTION_OF_XML_ENTITY.msg": "XML 라이브러리 함수의 {0} 번 인덱스의 인자값을 잘못 사용했습니다. XXE 공격에 안전하려면 이 값은 {1} 이어야 합니다.",
  "crulechk.IMPROPER_SYNC_INIT.bmsg": "스레드 생성 함수를 호출했습니다.",
  "crulechk.IMPROPER_SYNC_INIT.msg": "main 함수가 아닌 곳에서 스레드 동기화 객체 {0}를 초기화했습니다.",
  "crulechk.IMPROPER_SYNC_INIT.msg1": "스레드 생성 함수가 호출된 이후 스레드 동기화 객체 {0}을 초기화했습니다.",
  "crulechk.IMPROPER_SYNC_LOCAL_STORAGE.bmsg": "스레드 생성 함수를 호출했습니다.",
  "crulechk.IMPROPER_SYNC_LOCAL_STORAGE.msg": "main 함수가 아닌 곳에서 스레드별 저장소 객체 {0}를 생성했습니다",
  "crulechk.IMPROPER_SYNC_LOCAL_STORAGE.msg1": "스레드 생성 함수가 호출된 이후 스레드별 저장소 객체 {0}를 생성했습니다.",
  "crulechk.IMPROPER_TYPE_ASSIGN.PARAM_TYPE.msg1": "{0}번째 파라미터에서 {2}타입을 사용해야 하지만, 실제로는 {1}타입을 사용했습니다.",
  "crulechk.IMPROPER_TYPE_ASSIGN.PLAIN_CHAR.msg1": "타입이 일치하지 않습니다.",
  "crulechk.IMPROPER_TYPE_ASSIGN.bool": "불리언 타입에 true / false를 제외한 정수를 대입했습니다.",
  "crulechk.IMPROPER_TYPE_ASSIGN.diff": "대입 연산에서 좌측항의 부호는 {0} 이고, 우측항의 부호는 {1} 입니다. 부호가 서로 다릅니다.",
  "crulechk.IMPROPER_TYPE_ASSIGN.lhs_is_narrow": "대입 연산에서 좌측항의 타입은 {0} 계열이고 우측항의 타입은 {1} 계열입니다. 좌측항의 표현 범위가 더 좁습니다.",
  "crulechk.IMPROPER_TYPE_ASSIGN.msg1": "적절하지 않은 타입의 값을 대입하고 있습니다",
  "crulechk.IMPROPER_TYPE_ASSIGN.rhs_is_float": "대입 연산의 좌측항의 타입은 정수형 타입이나 대입하는 값이 실수형 타입입니다.",
  "crulechk.IMPROPER_TYPE_ASSIGN.sca.desc.type_pure_char": "문자열 값을 받는 타입은 plain char 타입이어야 합니다.",
  "crulechk.IMPROPER_USAGE.FILE_OBJECT.msg": "FILE 객체의 포인터를 역참조 하거나 직접 값을 조작하지 마십시오.",
  "crulechk.IMPROPER_VARIABLE_ACCESS.msg1": "호환되지 않은 타입의 포인터를 통해서 변수에 접근해서는 안됩니다.",
  "crulechk.INAPPROPRIATE_COPY_MOVE_SIGNATURE.msg": "복사 및 이동 연산에 관계된 멤버 함수 {0}의 서명이 올바른  형태가 아닙니다.",
  "crulechk.INAPPROPRIATE_COPY_MOVE_SIGNATURE.msg1": "기본값을 가지는 매개변수를 사용했습니다.",
  "crulechk.INAPPROPRIATE_COPY_MOVE_SIGNATURE.msg2": "첫 번째 인자의 타입이 해당 멤버 함수의 표준 선언에 맞지 않습니다.",
  "crulechk.INAPPROPRIATE_COPY_MOVE_SIGNATURE.msg3": "반환 타입이 해당 대입 연산자의 표준 선언에 맞지 않습니다.",
  "crulechk.INAPPROPRIATE_COPY_MOVE_SIGNATURE.msg4": "이동 연산에 관계된 멤버 함수에 noexcept 가 누락되었습니다.",
  "crulechk.INAPPROPRIATE_COPY_MOVE_SIGNATURE.msg5": "대입 연산에 관계된 멤버 함수에 참조 한정자(&)가 누락되었습니다.",
  "crulechk.INAPPROPRIATE_COPY_MOVE_SIGNATURE.msg6": "멤버 함수를 가상으로 선언했습니다.",
  "crulechk.INAPPROPRIATE_MOVE_ARGUMENT.msg": "move 함수에 이동 효과가 없거나 불필요한 인자를 전달했습니다.",
  "crulechk.INAPPROPRIATE_VIRTUAL_SPECIFIER.bmsg1": "부모 클래스에서 가상 함수로 선언된 멤버 함수입니다.",
  "crulechk.INAPPROPRIATE_VIRTUAL_SPECIFIER.msg": "멤버 함수 {0} 선언에 2개 이상의 가상 함수 관련 지정자가 중복 사용되었습니다.",
  "crulechk.INAPPROPRIATE_VIRTUAL_SPECIFIER.msg2": "부모 클래스의 가상 함수를 재정의한 멤버 함수 {0} 선언에 필수 지정자(override 또는 final)가 누락되었습니다.",
  "crulechk.INCLUDE_EXPLICIT_CASES_FOR_ALL_ALTERNATIVES.msg": "모든 경우에 대한 명시적인 case문을 작성합니다.",
  "crulechk.INCLUDE_STATIC_SPECIFIER_ON_REDECLARATION.bMsg": "함수가 static 지시자로 선언되었습니다.",
  "crulechk.INCLUDE_STATIC_SPECIFIER_ON_REDECLARATION.msg": "함수의 재선언에 static 지시자를 포함시켜야 합니다.",
  "crulechk.INCLUDE_STDLIB_WITH_BRACKETS.msg": "시스템 표준 라이브러리는 <>로, 다른 라이브러리는 \"\"을 사용해야 합니다.",
  "crulechk.INCOMPLETE_SPECIAL_MEMBER_FUNCTION.msg": "클래스 {0}에 특수 멤버 함수가 일부만 정의되었습니다.",
  "crulechk.INCOMPLETE_SPECIAL_MEMBER_FUNCTION.msg1": "복사 생성자 선언이 누락되었습니다.",
  "crulechk.INCOMPLETE_SPECIAL_MEMBER_FUNCTION.msg2": "복사 대입 연산자 선언이 누락되었습니다.",
  "crulechk.INCOMPLETE_SPECIAL_MEMBER_FUNCTION.msg3": "이동 생성자 선언이 누락되었습니다.",
  "crulechk.INCOMPLETE_SPECIAL_MEMBER_FUNCTION.msg4": "이동 대입 연산자 선언이 누락되었습니다.",
  "crulechk.INCOMPLETE_SPECIAL_MEMBER_FUNCTION.msg5": "소멸자 선언이 누락되었습니다.",
  "crulechk.INCOMPLETE_STRUCT_UNION.msg": "구조체 및 공요체는 컴파일 단위에서 모든 정보를 알 수 있어야 합니다.",
  "crulechk.INCOMPLETE_STRUCT_UNION.yMsg": "완벽하지 않은 타입입니다.",
  "crulechk.INCONSISTENT_FORWARDING_REFERENCE.msg_pattern1": " {0} 의 다른 함수 전달 과정에서 forward 함수를 사용하지 않았습니다.",
  "crulechk.INCONSISTENT_FORWARDING_REFERENCE.msg_pattern2": "전달 참조 인자 {0} 의 다른 함수 전달 과정에서 move 함수를 잘못 사용했습니다.",
  "crulechk.INCONSISTENT_FORWARDING_REFERENCE.msg_pattern3": "비전달 참조 인자 {0} 의 다른 함수 전달 과정에서 forward 함수를 사용했습니다.",
  "crulechk.INCONSISTENT_GLOBAL_VARIABLE_TYPE.msg1": "변수 {0} 가 선언되었습니다.",
  "crulechk.INCONSISTENT_GLOBAL_VARIABLE_TYPE.msg2": "변수 {0} 가 이미 다른 타입으로 사용되고 있습니다.",
  "crulechk.INCONSISTENT_GLOBAL_VARIABLE_TYPE.sca.desc.remove": "중복 변수를 제거합니다.",
  "crulechk.INCORRECT_CONVERSION.NUMERIC_TYPES.msg": "변환이 안전한지 확인하지 않고 사용하고 있습니다.",
  "crulechk.INCORRECT_CONVERSION.NUMERIC_TYPES.msg1": "숫자형 간의 변환이 있었습니다.",
  "crulechk.INCORRECT_ERRNO_CHECK.msg": "errno를 설정하는 함수가 사용되지 않았다면 값이 부정확할 수 있습니다.",
  "crulechk.INCORRECT_ORDER_OF_CONSTRUCTOR_INITIALIZERS.msg1": "멤버 초기화 시, 선언된 순서대로 초기화해야 합니다",
  "crulechk.INCORRECT_PERMISSION.msg": "위험한 권한이 설정되었습니다",
  "crulechk.INCORRECT_PERMISSION.msg1": "위험한 권한으로 리소스에 접근했습니다",
  "crulechk.INCORRECT_PERMISSION.msg2": "위험한 권한이 설정되었습니다",
  "crulechk.INCORRECT_POINTER_SCALING.msg1": "sizeof 연산자가 잘못된 포인터 위치를 가리킬 수 있습니다.",
  "crulechk.INCORRECT_POINTER_SCALING.msg2": "포인터 연산의 결과가 잘못된 포인터 위치를 가리킬 수 있습니다.",
  "crulechk.INCREMENT_ON_BOOLEAN.msg": "boolean형에 단항 증가 연산자를 사용하지 않도록 합니다.",
  "crulechk.INDICATE_SIGNEDNESS_TYPEDEF.msg": "typedef로 숫자 타입 선언 시 signed 혹은 unsigned가 표시되어야 합니다.",
  "crulechk.INEFFECTIVE_BOOLEAN_LOGICAL_OP.msg1": "논리 연산자(||, &&)의 피연산자는 Boolean 값이어야 합니다.",
  "crulechk.INEFFECTIVE_BOOLEAN_LOGICAL_OP.sca.desc.compare": "변수들의 조건검사를 적절히 합니다.",
  "crulechk.INEFFECTIVE_BOOLEAN_LOGICAL_OP.sca.note.desc.validate": "수정전후의 프로그램 흐름이 동일한지 검사해야 합니다.",
  "crulechk.INITIALIZER_LIST_CTOR_COLLISION.bmsg": "초기화 리스트 생성자와 충돌하는 생성자를 선언했습니다.",
  "crulechk.INITIALIZER_LIST_CTOR_COLLISION.msg": "초기화 리스트 생성자가 존재하는 클래스 {0}에서 다른 생성자가 정의되었습니다.",
  "crulechk.INLINE_FUNCTION_SHALL_BE_STATIC.msg": "inline 함수는 static storage여야 합니다.",
  "crulechk.INPUT_FUNCTION_ERROR_HANDLING.msg1": "문자열을 입력받는 함수는 모든 가능한 입력값에 대한 대비를 해야 합니다.",
  "crulechk.INSERT_DERIVED_INTO_CONTAINER_HOLDING_BASE.msg": "베이스 클래스를 담는 컨테이너에 상속 클래스를 삽입하지 않도록 합니다.",
  "crulechk.INSERT_DERIVED_INTO_CONTAINER_HOLDING_BASE.sca.desc.default": "컨테이너의 요소 타입을 포인터로 변환합니다.",
  "crulechk.INSERT_DERIVED_INTO_CONTAINER_HOLDING_BASE.sca.note.desc.change_other_code": "컨테이너의 요소 타입이 변경되었으므로, 관련된 다른 코드가 변경되어야 합니다.",
  "crulechk.INSERT_DERIVED_INTO_CONTAINER_HOLDING_BASE.sca.note.desc.pointer_element": "컨테이너에 저장되는 요소들이 포인터형으로 변경되어야 합니다.",
  "crulechk.INSERT_DERIVED_INTO_CONTAINER_HOLDING_BASE.sca.note.desc.use_heap": "컨테이너에 저장되는 요소는 가능한 힙 영역에서 할당하고 해제 하도록 합니다.",
  "crulechk.INSTANTIATE_TEMPLATES.msg": "클래스 템플릿 멤버함수는 적어도 한 번 인스턴스화 해야합니다.",
  "crulechk.INSUFFICIENT_INIT_ARRAY.msg1": "배열의 크기보다 초기화 할 아이템이 적습니다. 초기화 아이템이 {0} 개 필요하지만, 실제로는 {1} 개 밖에 없습니다.",
  "crulechk.INSUFFICIENT_INIT_ARRAY.sca.desc.replace": "초기화 할 아이템을 추가합니다.",
  "crulechk.INSUFFICIENT_INIT_ARRAY.sca.note.desc.warning": "주석 부분을 코드에 맞게 교체해서 사용하시기 바랍니다.",
  "crulechk.INSUFFICIENT_PUBLIC_EXPONENT.msg": "공개키 지수로서 65537 사용을 권장합니다.",
  "crulechk.INTEGER_PRECISION.msg": "적절한 integer precision을 사용하십시오.",
  "crulechk.INTERNAL_IDENTIFIER_NAME_CONFLICT.bmsg": "{0} 는 충돌의 원인이 된 이전에 선언된 식별자입니다.",
  "crulechk.INTERNAL_IDENTIFIER_NAME_CONFLICT.msg": "내부 식별자 {0} 의 이름이 다른 내부 식별자와 유효한 문자 내에서 구별되지 않아 충돌합니다.",
  "crulechk.INTERNAL_LINKAGE_KEYWORD_MISUSE.msg": "내부 연결을 가지는 {0} 의 선언이 전역 범위에서 이루어졌습니다.",
  "crulechk.INTERNAL_LINKAGE_KEYWORD_MISUSE.msg1": "내부 연결을 가지는 {0} 의 선언이 extern 키워드를 사용하여 서로 모순됩니다.",
  "crulechk.INT_TO_CHAR.msg1": "타입이 일치하지 않습니다. 정수형이 문자열로 형변환되었습니다",
  "crulechk.INVALID_DATA_TO_ASCTIME.msg1": "asctime() 함수를 호출할 때 인자로 넘길 데이터의 유효성을 확인하십시오",
  "crulechk.INVALID_DATA_TO_ASCTIME.sca.desc.use_asctime_s": "보다 안전한 함수인 asctime_s()를 사용합니다.",
  "crulechk.INVALID_DATA_TO_ASCTIME.sca.desc.use_strftime": "보다 안전하며, 출력 문자열을 조정할 수 있는 strftime()를 사용합니다.",
  "crulechk.INVALID_DATA_TO_ASCTIME.sca.note.desc.change_output": "포맷 및 버퍼 사이즈를 조정하여 출력 문자열을 변경할 수 있습니다.",
  "crulechk.INVALID_DATA_TO_ASCTIME.sca.note.desc.include_time": "time.h 파일을 포함해야 합니다.",
  "crulechk.INVALID_DATA_TO_ASCTIME.sca.note.desc.support_asctime_s": "사용하는 컴파일러에서 asctime_s를 지원하는지 확인해야 합니다.",
  "crulechk.INVOKE_VIRTUAL_FUNCTION_FROM_CTOR_OR_DTOR.msg1": "생성자나 소멸자에서 가상 함수를 호출하지 마십시오",
  "crulechk.INVOKE_VIRTUAL_FUNCTION_FROM_CTOR_OR_DTOR.sca.desc.remove": "가상 함수 호출을 제거합니다.",
  "crulechk.INVOKE_VIRTUAL_FUNCTION_FROM_CTOR_OR_DTOR.sca.note.desc.code_flow": "호출 제거 이후 의도된대로 동작하는지 코드를 검증 해야 합니다.",
  "crulechk.JUMP_OVER_SCOPE.msg": "goto 문이 참조하는레이블은 같은 블록 내에 있어야 합니다.",
  "crulechk.JUMP_OVER_SCOPE.msg-b": "레이블이 여기 선언되었습니다.",
  "crulechk.KOSCOM.NAMING_CONVENTION.FUNCTION.msg1": "함수 명명 규칙을 위반했습니다.",
  "crulechk.LANGUAGE_EXTENSION_SHOULD_NOT_BE_USED.msg1": "컴파일러 전용 확장이 사용되었습니다.",
  "crulechk.LEAST_PRIVILEGE_VIOLATION.W32.msg1": "{0}를 사용해서 프로세스를 생성할 때 실행 경로를 따옴표로 감싸야 합니다. {1}번째 인자를 참고하십시오.",
  "crulechk.LEAST_PRIVILEGE_VIOLATION.W32.msg2": "{0}를 사용해서 레지스트리 키를 생성할 때 HKEY_CURRENT_USER를 사용하십시오. {1}번째 인자를 참고하십시오.",
  "crulechk.LEAST_PRIVILEGE_VIOLATION.W32.msg3": "{0}를 사용해서 레지스트리 키를 열 때 HKEY_CURRENT_USER를 사용하십시오. {1}번째 인자를 참고하십시오.",
  "crulechk.LEAST_PRIVILEGE_VIOLATION.W32.msg4": "{0}를 사용해서 레지스트리 키를 생성할 때 SHREGSET_HKCU를 사용하십시오. {1}번째 인자를 참고하십시오.",
  "crulechk.LEAST_PRIVILEGE_VIOLATION.msg1": "권한을 높여 작업 수행 후 권한을 다시 복귀시키지 않았습니다.",
  "crulechk.LEFTOVER_DEBUG_CODE.msg1": "디버그 코드가 남지 않도록 해야 합니다.",
  "crulechk.LIMITED_VISIBILITY_UNUSED_FUNCTION.msg": "제한된 가시성을 가진 {0} 함수가 한번도 사용되지 않았습니다.",
  "crulechk.LIMITED_VISIBILITY_UNUSED_TYPE.msg": "제한된 가시성을 가지는 영역에서 {0} 타입이 한번도 사용되지 않았습니다.",
  "crulechk.LIMIT_DBIO_FETCH.PF.msg1": "DBIO Fetch 건수가 기준치 {0}를 초과했습니다.",
  "crulechk.LIMIT_OPERATOR_PRECEDENCE.msg": "수식 내에서 C의 연산자 우선순위에 따른 의존성을 제한해야 합니다. 연산자 우선순위가 다른 식이 인접한 경우 괄호가 필요합니다.",
  "crulechk.LIMIT_REPETITION.PF.msg": "입/출력 구조체의 서브 구조체 반복 횟수 기준({0})를 초과했습니다.",
  "crulechk.LOGICAL_OP_SHALL_BE_PRIMARY_EXPR.msg1": "논리연산자 &&와 || 의 피 연산자는 반드시 기본식 이어야 합니다.",
  "crulechk.LONG_LONG_SINGLE_SUFFIX.msg": " 정수 상수 값 {0} 의 크기는 long long 타입의 범위를 가지지만 L 단독 접미사를 사용했습니다.",
  "crulechk.MACRO_IDENTIFIER_CONFLICT.bmsg": "{0} 는 이전에 선언된 매크로이며 충돌의 원인입니다.",
  "crulechk.MACRO_IDENTIFIER_CONFLICT.msg": "식별자 {0} 의 이름이 매크로와 유효한 문자 내에서 구별되지 않아 충돌합니다.",
  "crulechk.MACRO_IF_EXPRESSION_SHALL_EVAL_TO_BOOLEAN.msg1": "#if 혹은 #elif 의 식의 값은 0 혹은 1 이어야 합니다.",
  "crulechk.MAIN_IN_GLOBAL_NAMESPACE.msg": "메인 함수는 전역 네임 스페이스 여야합니다.",
  "crulechk.MAKE_BINARY_OPERATORS_NONMEMBERS.msg": "멤버가 아닌 이항 연산자는 좌항 피연산자로의 묵시적 형변환을 허용해야 합니다.",
  "crulechk.MAKE_COPYING_EFFICIENT_FOR_OBJECT.msg": "컨테이너에 있는 객체를 효과적으로 복사하도록 만듭니다.",
  "crulechk.MAKE_MEMBER_DATA_PRIVATE.msg": "멤버 변수들은 private로 만듭니다.",
  "crulechk.MAKE_PREDICATES_PURE_FUNCTIONS.msg": "서술자의 결과는 오로지 파라미터에 의존되어야 합니다.",
  "crulechk.MALFORMED_SWITCH.dead_code": "switch 구문과 첫 번째 {0} 라벨 사이에 실행 불가능한 코드가 존재합니다.",
  "crulechk.MALFORMED_SWITCH.insufficient_paths": "switch 구문의 실행 경로가 2개 미만입니다.",
  "crulechk.MALFORMED_SWITCH.malformed_case_pos": "{0} 라벨이 switch 본문의 최상위 레벨이 아닌 중첩된 블록 내부에 있습니다.",
  "crulechk.MALFORMED_SWITCH.malformed_default_pos": "default 라벨이 switch 본문의 가장 처음이나 마지막에 위치하지 않습니다.",
  "crulechk.MALFORMED_SWITCH.malformed_init": "switch의 C++17 초기화 구문에 단순 변수 선언이 아닌 수식이 사용되었습니다.",
  "crulechk.MALFORMED_SWITCH.missing_end": "{0} 라벨에 해당하는 분기가 무조건적으로 종료되지 않았습니다.",
  "crulechk.MALFORMED_SWITCH.non_default": "switch 구문에 default 라벨이 누락되었습니다.",
  "crulechk.MEMBER_FUNCTION_SHOULD_NOT_RETURN_NON_CONST_HANDLER.msg": "멤버 함수는 클래스 데이터로 non-const 핸들러를 반환하면 안됩니다.",
  "crulechk.MEMORY_COMPARISON_OF_FLOAT_POINT_VALUES.msg": "float 변수를 비교하는데에 메모리 비교를 사용하지 마십시오.",
  "crulechk.MEMORY_ORDER_SEQ_CST_ONLY.msg": "원자적 연산을 수행하는 {0} 함수에 순차적 일관성이 아닌 메모리 순서를 지정했습니다.",
  "crulechk.MINIMAL_SCOPE.msg1": "변수 {0} 는 함수 스코프({1}) 내에서 선언할 수 있습니다",
  "crulechk.MINIMISE_MIXING_OF_ITERATOR.msg": "반복자 타입을 섞어쓰는걸 최소화해야 합니다.",
  "crulechk.MINIMISE_USE_AUTOPTR.msg": "STL의 auto_ptr 사용을 최소화하여야 합니다.",
  "crulechk.MISMATCH_RETURN_TYPE.msg": "return문의 반환 형식이 함수 선언시와 일치하지 않습니다.",
  "crulechk.MISMATCH_RETURN_TYPE.sca.desc.default": "선언한 함수 리턴 타입에 맞도록 명시적으로 형변환해야 합니다.",
  "crulechk.MISMATCH_STORAGE_CLASS.bMsg": "다른 스토리지 클래스를 가지고 있습니다.",
  "crulechk.MISMATCH_STORAGE_CLASS.msg": "external linkage와 static linkage를 동시에 가질 수 없습니다.",
  "crulechk.MISMATCH_STORAGE_CLASS.sca.desc.replace": "스토리지 클래스를 일치시킵니다.",
  "crulechk.MISSING.DESIGNATED_INIT.msg": "배열 {0}에서 초기화 안된 원소가 있습니다.",
  "crulechk.MISSING.DESIGNATED_INIT.msg-b": "필드가 여기 선언되었습니다.",
  "crulechk.MISSING.DESIGNATED_INIT.msgIdx": "배열 {0} 에서 인덱스{1} 가 초기화 되지 않았습니다.",
  "crulechk.MISSING_AUTHENTICATION_CONTROL.msg1": "인증을 통한 제어 루틴이 존재하지 않습니다.",
  "crulechk.MISSING_BREAK_IN_CASE.MISRA2008.msg1": "break 문이 없습니다.",
  "crulechk.MISSING_BREAK_IN_CASE.msg1": "break 문이 없습니다.",
  "crulechk.MISSING_BREAK_OR_THROW_IN_CASE.msg1": "케이스 구문에는 반드시 break 또는 throw가 존재해야 합니다.",
  "crulechk.MISSING_COMPOUND_STATEMENT.msg": "가독성을 위해 공백 문장(;) 대신 공백 블록('{}')을 사용합니다.",
  "crulechk.MISSING_DEBUG_CHECK.msg": "함수를 호출하기 전 디버그 모드인지 검사하는 함수가 호출되지 않았습니다.",
  "crulechk.MISSING_EXPLICIT_BASE_TYPE_FOR_ENUM.msg": "열거자에 기본값을 사용하지 않은 열거형 {0} 에 기반 타입이 정의되지 않았습니다.",
  "crulechk.MISSING_FUNCTION_DEFINITION_PARAMETER.msg": "함수 프로로타입에서 인자의 타입들이 없습니다.",
  "crulechk.MISSING_INTEGRITY_CHECK.msg1": "인터넷으로 다운로드 받은 파일은 반드시 무결점 시험을 수행해야 합니다.",
  "crulechk.MISSING_LOGIN_CONTROL.msg1": "너무 많은 인증 시도가 있습니다.",
  "crulechk.MISSING_NOEXCEPT_ON_EXCEPTION_FORBIDDEN.bmsg": "변수 초기화 과정에서 호출되는 생성자입니다.",
  "crulechk.MISSING_NOEXCEPT_ON_EXCEPTION_FORBIDDEN.msg1": "예외 발생시 치명적인 멤버 함수 {0}의 선언에 noexcept 지정이 누락되었습니다.",
  "crulechk.MISSING_NOEXCEPT_ON_EXCEPTION_FORBIDDEN.msg2": "비지역 정적 변수 {0}의 초기화 과정 중 호출되는 생성자에 noexcept 지정이 누락되었습니다.",
  "crulechk.MISSING_PASSWORD_RECOVERY_CONTROL.msg1": "너무 많은 비밀번호 복구 시도가 있습니다.",
  "crulechk.MISSING_REQUIRE_CRYPTO_STEP.msg1": "함수 {1} 이전에 함수 {0}가 호출되지 않았습니다.",
  "crulechk.MISSING_UNSIGNED_SUFFIX.decimal": "32비트 부호 없는 타입으로 표현된 10진수 정수 상수 {0}에 U접미사가 누락되었습니다.",
  "crulechk.MISSING_UNSIGNED_SUFFIX.hexa": "16비트 부호 없는 타입으로 표현된 16진수 정수 상수 {0}에 U접미사가 누락되었습니다.",
  "crulechk.MISSING_VALIDATION_OF_ARRAY_INDEX.msg": "배열 인덱스의 유효성이 검증되지 않았습니다.",
  "crulechk.MISSING_WRAPPER_ON_VARIABLE.msg1": "함수 호출 후 해당 함수가 사용되지 않았습니다.",
  "crulechk.MISSING_WRAPPER_ON_VARIABLE.msg2": "함수 호출 후 함수({0})가 사용되지 않았습니다.",
  "crulechk.MISUSE_OF_TRY_CATCH.msg": "조건문에서 throw를 사용하지 않습니다.",
  "crulechk.MIXED_TYPE_COMPARISON.msg1": "부호 있는 값과 부호 없는 값을 비교하지 마십시오",
  "crulechk.MODIFICATION_CONTROL_VAR_IN_LOOP.msg1": "for 반복문을 제어하기 위해 사용하는 변수가 반복문 내부에서 수정되지 말아야 합니다.",
  "crulechk.MULTIPLE_ALLOC_IN_SINGLE_STMT.msg1": "한 줄에 메모리를 할당 구문을 2개 이상 사용하지 마십시오",
  "crulechk.MULTIPLE_BINDS_TO_SAME_PORT.msg_b": "setsockopt() 함수가 옵션과 함께 호출되었습니다.",
  "crulechk.MULTIPLE_BINDS_TO_SAME_PORT.msg_r": "하나의 포트가 여러 개의 서비스에 사용되고 있습니다.",
  "crulechk.MULTIPLE_DECLARATION_IN_NAMESPACE.msg": "같은 네임스페이스에서는 함수를 오버로딩하지 않습니다.",
  "crulechk.MULTIPLE_ENV_WITH_SAME_NAME.msg1": "여러개의 환경 변수를 실질적으로 같은 이름으로 사용하고 있습니다. 환경 변수의 대소문자를 확인해보십시오",
  "crulechk.MULTIPLE_ENV_WITH_SAME_NAME.msg_blue": "여기서 처음 사용했습니다.",
  "crulechk.MULTIPLE_ENV_WITH_SAME_NAME.sca.desc.default": "다른 시스템에서는 키의 대소문자를 구분하지 않을 수 있습니다. 다른 키를 입력하시기 바랍니다.",
  "crulechk.MULTIPLE_FILE_ATTRIBUTES.msg1": "파일의 여러 속성을 이용해서 파일을 식별하십시오.",
  "crulechk.MULTIPLE_SIGNAL_TO_SAME_HANDLER.msg1": "하나의 시그널 핸들러에 여러 시그널이 연결되어 있습니다.",
  "crulechk.MULTIPLE_SIGNAL_TO_SAME_HANDLER.msg2": "이미 여기서 시그널 핸들러에 연결했습니다.",
  "crulechk.MUST_CALL.BATCH_EXIT.PF.msg1": "여기서 Commit/Rollback이 발생했습니다.",
  "crulechk.MUST_CALL.BATCH_EXIT.PF.msg2": "배치 서비스 정상/에러 종료시 Commit/Rollback을 처리하지 않았습니다.",
  "crulechk.MUST_CALL_BASE_CONSTRUCTOR.msg": "생성자에서 직접적인 기초 클래스의 생성자를 호출해야 합니다.",
  "crulechk.MUST_CATCH_ALL_EXCEPTION_IN_DTOR.msg1": "소멸자 내에서 처리할 수 없는 예외 상황을 발생시키지 말아야 합니다.",
  "crulechk.MUST_CATCH_ALL_EXCEPTION_IN_DTOR.sca.desc.add_catch": "적절한 핸들러를 추가합니다.",
  "crulechk.MUST_CATCH_ALL_EXCEPTION_IN_DTOR.sca.desc.remove": "해당 throw문을 삭제합니다.",
  "crulechk.MUST_CATCH_ALL_EXCEPTION_IN_MAIN.msg1": "main 함수에서 처리되지 않는 예외를 발생시키지 말아야 합니다.",
  "crulechk.MUST_CATCH_ALL_EXCEPTION_IN_MAIN.sca.desc.add_catch": "적절한 핸들러를 추가합니다.",
  "crulechk.MUST_CATCH_ALL_EXCEPTION_IN_MAIN.sca.desc.remove": "해당 throw문을 삭제합니다.",
  "crulechk.MUST_HAVE_AN_IDENTIFIER.msg": "함수 선언 시 모든 파라미터는 식별자가 있어야 합니다.",
  "crulechk.MUTUALLY_VISIBLE_ID_SHOULD_BE_UNIQUE.msg1": "변수 이름은 배타적으로 구분 가능해야 합니다.",
  "crulechk.NAMESPACE_IN_HEADER_SHOULD_BE_NAMED.msg": "헤더파일에서 네임스페이스의 이름이 없습니다",
  "crulechk.NAMES_WITH_WIDER_SCOPE_SHOULD_BE_LONGER.msg": "보다 넓은 범위를 가진 {0}는 보다 좁은 범위를 가지는 {1}에 비해 더 길어야 합니다.",
  "crulechk.NAME_IS_USED_IN_STANDARD_LIBRARY.msg": "표준 라이브러리의 이름은 다시 사용할 수 없습니다.",
  "crulechk.NAME_SHOULD_NOT_START_WITH_UNDERSCORE.msg": "식별자는 밑줄(_)로 시작하지 않도록 합니다.",
  "crulechk.NAMING_CONVENTION.ENUM.msg1": "적절하지 않은 enum 태그입니다.",
  "crulechk.NAMING_CONVENTION.ENUM.msg2": "적절하지 않은 enum 이름입니다.",
  "crulechk.NAMING_CONVENTION.FUNCTION.msg1": "적절하지 않은 함수 이름입니다.",
  "crulechk.NAMING_CONVENTION.HEADER.msg1": "{0}는 코딩 컨벤션에서 허용하지 않습니다.",
  "crulechk.NAMING_CONVENTION.STRUCTURE.msg1": "적절하지 않은 구조체 이름입니다.",
  "crulechk.NAMING_CONVENTION.TYPE.msg1": "적절하지 않은 타입 이름입니다.",
  "crulechk.NAMING_CONVENTION.UNION.msg1": "적절하지 않은 공용체 이름입니다.",
  "crulechk.NAMING_CONVENTION.VARIABLE.msg1": "적절하지 않은 변수 이름입니다.",
  "crulechk.NAMING_CONVENTION.VARIABLE.msg2": "전역 변수의 이름은 \"g_\" 로 시작해야 합니다.",
  "crulechk.NARROW_CAST_COMPLEX_FLOAT_EXPR.msg1": "부동소수점 타입의 복잡한 연산 값은 오직 그 값보다 더 작은 타입으로만 형변환이 가능합니다.",
  "crulechk.NARROW_CAST_COMPLEX_INTEGRAL_EXPR.msg1": "정수 타입의 복잡한 연산 값은 오직 그 값보다 더 작고 같은 부호를 가지는 타입으로만 형변환이 가능합니다.",
  "crulechk.NEVER_CREATE_CONTAINERS_OF_AUTO_PTRS.msg": "auto_ptr의 컨테이너를 생성하지 않도록 합니다.",
  "crulechk.NEVER_CREATE_CONTAINERS_OF_AUTO_PTRS.sca.desc.default": "C++11을 지원하는 컴파일러에서는 참조 카운팅을 지원하는 shared_ptr을 사용하도록 합니다.",
  "crulechk.NEVER_CREATE_CONTAINERS_OF_AUTO_PTRS.sca.note.desc.include_memory": "memory 헤더 파일을 포함해야 합니다.",
  "crulechk.NEVER_CREATE_CONTAINERS_OF_AUTO_PTRS.sca.note.desc.paren_error": "C++11을 지원하지 않는 컴파일러의 경우, 괄호 >>를 붙여 쓸때 오류가 발생하게 됩니다.",
  "crulechk.NEVER_CREATE_CONTAINERS_OF_AUTO_PTRS.sca.note.desc.use_boost": "C++11을 지원하지 않는 컴파일러의 경우, boost 라이브러리에 구현된 shared_ptr을 사용할 수 있습니다.",
  "crulechk.NEW_DELETE_INSTEAD_OF_MALLOC_FREE.msg": "메모리 할당에 malloc(), free()함수 대신 new, delete를 사용하도록 합니다.",
  "crulechk.NONEFFECTIVE_FUNCTION_CALL.msg1": "아무 영향도 끼치지 않는 함수입니다.",
  "crulechk.NON_CONSTANT_PTR_TO_FUNCTION.msg1": "상수로 선언된 함수 포인터만 사용해야 합니다",
  "crulechk.NON_CONSTANT_PTR_TO_FUNCTION.sca.desc.default": "상수로 선언된 함수 포인터를 사용하십시오.",
  "crulechk.NON_DYNAMIC_CAST_ON_VIRTUAL_BASE_CLASS_PTR.msg": "virtual base 클래스의 포인터는 derived 클래스의 포인터로 형변환 할 때에는 dynamic_cast만 사용해야 합니다.",
  "crulechk.NON_DYNAMIC_CAST_ON_VIRTUAL_BASE_CLASS_PTR.sca.desc.replace": "dynamic_cast로 바꿉니다.",
  "crulechk.NON_DYNAMIC_CAST_ON_VIRTUAL_BASE_CLASS_PTR.sca.note.desc.code_flow": "dynamic_cast를 사용하여 포인터형으로 캐스팅 할 때, 서로 상속관계가 아닌 클래스들은 결과가 NULL 일 수 있습니다. 이에 대한 처리가 필요합니다.",
  "crulechk.NON_STATIC_THREAD_POOL.msg": "스레드 생성함수 {0} 를 main 함수 밖에서 호출했습니다.",
  "crulechk.NON_TEMP_LAMBDA_CAPTURE.copy": "비 일시적 람다에 기본 캡처 [=]를 사용했습니다.",
  "crulechk.NON_TEMP_LAMBDA_CAPTURE.ref": "비 일시적 람다에 기본 캡처 [&]를 사용했습니다.",
  "crulechk.NORETURN_INVALID_RETURN.msg": "_Noreturn 으로 선언한 함수 {0} 의 반환 타입이 void 가 아닙니다.",
  "crulechk.NOT_BE_ASSIGNED_TO_OVERLAPPING_OBJECTS.msg": "메모리 영역이 겹치는 객체에 대해 대입 연산이 이루어지지 않도록 합니다.",
  "crulechk.NOT_EXIST.EXTRA_CODES.PF.msg1": "setErrLog() 이후에 로직이 있어야 합니다.(norm_exit_proc)",
  "crulechk.NOT_EXIST.EXTRA_CODES.PF.msg2": "setErrLog() 이후에 로직이 있어야 합니다.(main_proc)",
  "crulechk.NOT_LAST_DEFAULT_CASE.MISRA2012.msg1": "switch문의 시작 혹은 마지막은 구문은 반드시 default 구문이 위치해야 합니다.",
  "crulechk.NOT_LAST_DEFAULT_CASE.msg1": "switch문의 마지막은 구문은 반드시 default 구문이 위치해야 합니다.",
  "crulechk.NO_BITWISE_SIGNED.msg": "비트 연산자는 부호 있는 정수형에 적용하지 말아야 합니다.",
  "crulechk.NO_BITWISE_SIGNED.msg_b": "부호 있는 정수가 여기서 선언되었습니다.",
  "crulechk.NO_BITWISE_SIGNED.sca.desc.remove": "연산을 포함한 구문을 삭제합니다.",
  "crulechk.NO_BITWISE_SIGNED.sca.desc.type_modify": "비트 연산을 위해 부호 없는 정수형으로 타입을 바꿉니다.",
  "crulechk.NO_BITWISE_SIGNED.sca.note.desc.make_flow": "코드 변경으로 동작이 변경될수 있음에 유의하세요.",
  "crulechk.NO_BITWISE_SIGNED.sca.note.desc.make_flow_type": "타입 변경으로 값의 범위를 벗어나지 않도록 유의하세요.",
  "crulechk.NO_BRACKETS_TO_SWITCH_BODY.msg": "switch문 바디에 중괄호가 없습니다.",
  "crulechk.NO_BRACKETS_TO_THEN_ELSE.msg": "조건문 바디에 중괄호가 없습니다.",
  "crulechk.NO_CASE_IN_NESTED_BLOCK.msg": "switch의 라벨은 가장 가까운 복합문(블록 등)이 switch의 바디인 경우에만 사용해야 합니다.",
  "crulechk.NO_CONTINUE_STMT.msg1": "continue 문을 사용하지 말아야 합니다.",
  "crulechk.NO_EXEC_STMT_BEFORE_FIRST_SWITCH_CASE.msg1": "첫 번째 case 레이블 전에 실행 가능한 구문이 있어서는 안됩니다.",
  "crulechk.NO_EXEC_STMT_BEFORE_FIRST_SWITCH_CASE.sca.desc.default": "첫 번째 case 레이블 전에 실행 가능한 구문을 제거합니다.",
  "crulechk.NO_EXPLICIT_TYPE_CASTING.msg1": "명시적 형변환 없이 대입했습니다.",
  "crulechk.NO_EXPLICIT_TYPE_CASTING.sca.desc.default": "명시적으로 형변환을 합니다.",
  "crulechk.NO_FUNCTION_DEFINITION_IN_HEADER.msg1": "함수 정의는 헤더파일 대신 소스파일에 위치해야 합니다",
  "crulechk.NO_GLOBAL_VARIABLES_BETWEEN_FUNCTIONS.msg1": "함수 선언 뒤에 전역변수를 선언하면 안됩니다.",
  "crulechk.NO_INC_EXPR_IN_FOR_LOOP.msg1": "for 반복문에 증감 연산이 없습니다.",
  "crulechk.NO_MEMBER_FUNCTION_IN_STRUCT.msg": "구조체에서 멤버 함수나 접근 지정자를 포함하지 않도록 합니다.",
  "crulechk.NO_MORE_THAN_ONE_BREAK.msg": "반복문은 루프 종료를 위해 반드시 한개만 종료 문장을 사용해야 합니다.",
  "crulechk.NO_MORE_THAN_ONE_BREAK.yMsg": "break 위치 입니다.",
  "crulechk.NO_MORE_THAN_ONE_SHARP_OPERATOR.msg": "#define문에서 #나 ## 명령어의 경우 최대 1개만 있어야 합니다.",
  "crulechk.NO_PREPROCESSING_DIRECTIVE_IN_MACRO.msg": "함수 형태의 매크로의 인자는 전처리 구문과 같은 토큰을 포함하지 말아야 합니다.",
  "crulechk.NO_PREPROCESSING_DIRECTIVE_IN_MACRO.yMsg": "전처리 구문이 작성된 위치 입니다.",
  "crulechk.NO_PUBLIC_CONSTRUCTOR_FOR_ABSTRACT_CLASS.msg": "추상 클래스는 public 생성자가 없어야 합니다.",
  "crulechk.NO_REAL_DECLARATION_FOR_VARIABLE.msg": "external 변수의 실제 선언이 있는지 확인합니다.",
  "crulechk.NO_REAL_DECLARATION_FOR_VARIABLE.yMsg": "다른 external 변수 선언입니다.",
  "crulechk.NO_SEMICOLON_ON_SAME_STMT.msg1": "if, for, while 구문과 같은 줄에 세미콜론이 위치해서는 안됩니다",
  "crulechk.NO_SHIFT_SIGNED.msg1": "부호 있는 타입을 시프트 연산(<<,>>)을 하지 마십시오. 부호를 나타내는 비트가 유실될 수 있으며, 음수에 시프트 연산을 하는 것은 컴파일러마다 다른 결과가 나올 수 있습니다.",
  "crulechk.NO_SIDE_EFFECT_STMT.msg1": "부가 작용(Side-effect)를 발생하지 않는 구문은 사용하지 말아야 합니다.",
  "crulechk.NO_SIDE_EFFECT_STMT.sca.desc.default": "부가 작용(Side-effect)가 발생하지 않는 구문은 삭제합니다.",
  "crulechk.NO_TEST_EXPR_IN_FOR_LOOP.msg1": "for 반복문의 두 번째 표현식이 없습니다.",
  "crulechk.NO_TEST_EXPR_IN_FOR_LOOP.msg2": "for문의 선언문과 반복문에서 모두 사용된 변수가 평가문에서 사용돼야 합니다.",
  "crulechk.NULLPTR_NOT_USED.msg": "NULL 매크로 혹은 0을 사용 했습니다. 포인터와 관련 있는 문맥이라면 nullptr 을, 포인터와 관련 없는 문맥이면 정수 0을 사용해야 합니다.",
  "crulechk.NULL_SHALL_BE_POINTER_CONSTANT.msg": "포인터 변수에 정수 0 을 사용하지 마십시오. 이러한 경우 (void *)0 이어야 합니다.",
  "crulechk.NULL_SHALL_NOT_BE_INTERGER_VALUE.msg1": "NULL은 정수 값(0)으로 사용되지 않아야 합니다..",
  "crulechk.NULL_STATEMENT_FOUND.msg": "빈 문장은 한 줄에 단독으로 발생해야 하며, 이때 빈 문장 뒤에 공백 한칸을 띄우고 주석을 기입하여야 합니다.",
  "crulechk.ONE_DEFINITION_RULE.msg": "클래스 {0} 의 정의가 서로 다릅니다.",
  "crulechk.ONE_DEFINITION_RULE.yMsg": "잘못된 정의가 나타난 부분입니다.",
  "crulechk.ONE_READ_CHAR_PUSH_BACK.msg1": "ungetc(), ungetcw() 사용 시 한 개의 문자 외에는 어떤 것도 스트림에 넣지 마십시오.",
  "crulechk.ONLY_ARG_DEPENDENT_LOOKUP.msg": "argument에 의존하여 호출 대상 함수가 선택됩니다.",
  "crulechk.ONLY_DECLARE_TRIVIAL_FUNCTINS_INLINE.msg": "사소한 기능만 인라인으로 선언하도록 합니다.",
  "crulechk.ONLY_INLINE_NON_VIRTUAL_CTOR_DTOR.msg": "간단하고 비가상 함수인 것만 인라인 하도록 합니다.",
  "crulechk.ONLY_INLINE_SIMPLE_FUNCTION.msg": "간단한 함수만 인라인 하도록 합니다.",
  "crulechk.ONLY_LOOP_CONTROL_IN_FOR.msg1": "초기화 부분이 없습니다.",
  "crulechk.ONLY_LOOP_CONTROL_IN_FOR.msg2": "증가 부분이 없습니다.",
  "crulechk.ONLY_LOOP_CONTROL_IN_FOR.msg3": "평가 부분이 없습니다.",
  "crulechk.ONLY_LOOP_CONTROL_IN_FOR.msg4": "루프 조건 변수는 오로지 하나여야 합니다.",
  "crulechk.ONLY_LOOP_CONTROL_IN_FOR.msg5": "루프 평가 식({0})은 반드시 루프 조건 변수가 사용되어야 합니다. ({1})",
  "crulechk.ONLY_LOOP_CONTROL_IN_FOR.msg6": "루프 증가부분은 반드시 루프 조건 변수가 사용되어야 합니다. : {0}",
  "crulechk.ONLY_LOOP_COUNT_INC_DEC.msg1": "for 반복문의 세 번째 표현식에 2개 이상의 증감 연산이 있어서는 안됩니다.",
  "crulechk.ONLY_LOOP_COUNT_INC_DEC.msg2": "반복문 카운터 {0} 를 증가시키거나 감소시키는 연산이 없습니다.",
  "crulechk.ONLY_MAIN_IN_GLOBAL_SCOPE.msg": "전역 스코프에서는 메인 함수 및 네임스페이스 선언만 있어야 합니다.",
  "crulechk.ONLY_ONE_LOOP_COUNT_INIT.msg1": "for 반복문의 첫 번째 표현식에 2개 이상의 초기화 구문이 있어서는 안됩니다.",
  "crulechk.ONLY_THROW_OBJECT_OF_CLASS_TYPE.msg": "클래스 타입의 객체만 예외로 던지도록 합니다.",
  "crulechk.ONLY_VIRTUAL_FUNC_DEFINITION_ON_INHERIT_HIERARCHY.msg": "상속 계층 구조에서 가상 함수의 정의는 한 개만 있어야 합니다.",
  "crulechk.OPERATOR_NEW_AND_DELETE_MISMATCHED.msg1": "new와 delete를 같은 영역(scope)에서 오버로드 해야 합니다.",
  "crulechk.ORDER_EXCEPTIONS_FROM_DERIVED_TO_BASE.msg1": "try 블록에서 여러 개의 catch 를 사용할 경우, catch는 자식에서 부모 순으로 사용해야 합니다",
  "crulechk.ORGANIZE_CLASS_DEFINE.msg": "public, protected, private 순서로 클래스의 액세스 레벨 정의를 정렬하도록 합니다.",
  "crulechk.ORGANIZE_CLASS_DEFINE.yMsg": "정렬되지 않았습니다. {0}",
  "crulechk.OVERLOADED_FUNCTION_TEMPLATE_NOT_BE_SPECIALIZED.msg": "오버로드 된 함수 템플릿은 명시적으로 특수화되어서는 안됩니다.",
  "crulechk.OVERRIDE_ALL_OVERLOADS_OF_BASE_CLASS.bMsg": "이 함수는 오버라이딩 되었습니다.",
  "crulechk.OVERRIDE_ALL_OVERLOADS_OF_BASE_CLASS.msg": "베이스 클래스에 있는 가상 함수의 오버로딩들은 모두 오버라이드 하도록 합니다.",
  "crulechk.OVERRIDE_ALL_OVERLOADS_OF_BASE_CLASS.sca.desc.default": "베이스 클래스에서 오버로딩된 멤버 함수들 중 오버라이딩 되지 않은 함수의 선언을 추가합니다.",
  "crulechk.OVERRIDE_ALL_OVERLOADS_OF_BASE_CLASS.sca.desc.using_decl": "베이스 클래스에서 오버로딩된 멤버 함수들 중 오버라이딩 되지 않은 함수의 식별자를 using 선언합니다.",
  "crulechk.OVERRIDE_ALL_OVERLOADS_OF_BASE_CLASS.yMsg": "오버라이딩 되지 않은 오버로딩 가상 함수입니다.",
  "crulechk.OVERRIDE_PURE_TO_NON_PURE.msg": "순수가상함수는 비순수가상함수로 오버라이딩해야 합니다.",
  "crulechk.OVERRUN.STATIC.MEMSET.msg1": "{0}번째 인자의 크기({1})가 {2}번째 인자의 크기({3})를 읽을 만큼 충분하지 않습니다",
  "crulechk.PASS_MIXED_MACRO_ARGS.defect": "혼합 사용 매크로 {0}의 인자로 또 다른 매크로가 전달되어 확장 불일치 위험이 있습니다.",
  "crulechk.PASS_OBJECT_OF_CORRECT_TYPE_TO_VA_START.msg": "va_start 매크로 제약 사항을 위반했습니다.",
  "crulechk.PERSISTENT_COOKIE.CPP.msg1": "{0}() 메서드의 인자 값이 옵션 값 {1} 보다 큰 {2}입니다.",
  "crulechk.PERSISTENT_COOKIE.CPP.msg2": "{0}() 메서드를 사용하면 안 됩니다.",
  "crulechk.PLACE_PLAIN_CHAR.msg1": "Plain char 타입이 위치할 곳에 plain char 타입을 사용해야 합니다.",
  "crulechk.PLACE_PLAIN_CHAR.msg2": "Plain char 타입이 사용되었습니다.",
  "crulechk.PLACE_SIGNED_CHAR.msg1": "부호 있는 char 타입이 위치할 곳에 signed 혹은 unsigned char 타입을 사용해야 합니다.",
  "crulechk.PLAIN_CHAR_OPERATION.msg1": "Plain char 형을 ++, --, -, * 등의 피연산자로 사용하고 있습니다.",
  "crulechk.POINTER_ARITHMETIC_NOT_ON_ARRAY.msg1": "배열이 아닌 일반 포인터에 주소 연산을 하지 마십시오.",
  "crulechk.POSTFIX_OPERATOR_SHOULD_RETURN_CONST.msg1": "후위 증감 연산자(++, -- )는 반환 타입이 const여야 합니다.",
  "crulechk.POSTFIX_OPERATOR_SHOULD_RETURN_CONST.sca.desc.default": "증감 연산자를 const를 붙여 선언하도록 합니다.",
  "crulechk.POSTPONE_VARIABLE_DEFINITIONS.bMsg": "이 블록에서 변수 정의를 할 수 있습니다.",
  "crulechk.POSTPONE_VARIABLE_DEFINITIONS.msg": "가능한한 변수 정의를 연기하도록 합니다.",
  "crulechk.POSTPONE_VARIABLE_DEFINITIONS.sca.desc.default": "변수 선언의 위치를 변경합니다.",
  "crulechk.POSTPONE_VARIABLE_DEFINITIONS.sca.note.desc.check_after": "해당 변수가 추후 다른 블록에서 사용 되는 경우는 변경하지 않도록 합니다.",
  "crulechk.POSTPONE_VARIABLE_DEFINITIONS.sink": "가능한한 {0} 변수 정의를 연기하도록 합니다.",
  "crulechk.POSTPONE_VARIABLE_DEFINITIONS.src": "이 블록에서 {0} 변수 정의를 할 수 있습니다.",
  "crulechk.POTENTIAL_INFINITE_LOOP.PF.msg1": "잠재적으로 무한루프에 빠질 위험이 있습니다.",
  "crulechk.POTENTIAL_INFINITE_LOOP.nMsg1": "무한히 반복되는 반복문을 사용했으며, 루프를 탈출하기 위한 종료 구문이 없습니다.",
  "crulechk.POTENTIAL_INFINITE_LOOP.nMsg2": "for문 조건부가 비어있습니다. 루프를 탈출하기 위한 구문은 for문의 조건부에 작성하도록 합니다.",
  "crulechk.POTENTIAL_INFINITE_LOOP.nMsg3": "기본 타입인 루프 카운터 \"{0}\" 를 동등 비교 하고 있으며, 값이 순차적으로 증감하지 않습니다. 반복이 끝나지 않을 수 있습니다.",
  "crulechk.POTENTIAL_INFINITE_LOOP.nMsg4": "루프 카운터 \"{0}\" 의 경계값과 증감 방향이 서로 다릅니다. 반복이 끝나지 않을 수 있습니다.",
  "crulechk.POTENTIAL_INFINITE_LOOP.nMsg5": "루프 카운터 \"{0}\" 의 값이 반복문 안에서 바뀌지 않습니다.",
  "crulechk.POTENTIAL_INFINITE_LOOP.nMsg6": "루프 카운터 \"{0}\" 의 값이 for문의 블록 내에서 바뀝니다. 루프 카운터는 for문 증감부에서만 변경되는 것이 좋습니다.",
  "crulechk.POTENTIAL_INFINITE_LOOP.nbMsg": "루프 카운터의 값이 바뀝니다.",
  "crulechk.PRECEDE_INCLUDE.msg": "#include구문은 다른 전처리 구문이나 주석만 선행할 수 있습니다.",
  "crulechk.PRECEDE_INCLUDE.src": "허용되지 않는 코드가 시작하는 줄입니다.",
  "crulechk.PREDICATES_SHOULD_NOT_HAVE_NONSTATIC_DATA.msg1": "predicate functions는 non-static 데이터 필드가 없어야 합니다.",
  "crulechk.PREFER_SPECIAL_MEMBER_AND_OVERLOADED_OP.non_standard": "인자값에 비 표준 레이아웃 클래스 객체가 사용되었습니다.",
  "crulechk.PREFER_SPECIAL_MEMBER_AND_OVERLOADED_OP.non_trivial": "인자값에 Non-trivial 클래스 객체가 사용되었습니다.",
  "crulechk.PREFER_TO_USE_SIGNED_VALUE.msg": "부호가 없는 숫자값보다 부호가 있는 숫자값을 선호해야 합니다.",
  "crulechk.PREMATURE_THREAD_TERMINATION.bMsg": "pthread_create(...)를 호출했습니다.",
  "crulechk.PREMATURE_THREAD_TERMINATION.msg": "pthread_create(...)를 호출 한 후에는 prhread_join(...)를 호출해야 합니다.",
  "crulechk.PRESERVE_ARRAY_DIMENSION.msg": "배열의 인덱스는 보존되어야 합니다.",
  "crulechk.PRESERVE_ARRAY_DIMENSION.sink": "배열 타입 {0} 변수가 포인터 타입의 함수 인자로 전달되었습니다. 배열 타입이 포인터 타입으로 붕괴합니다.",
  "crulechk.PREVENT_OPERATIONS_ON_DEVICES.msg": "파일에만 적용가능한 연산을 장치에 대해 수행하지 않도록 합니다.",
  "crulechk.PREVENT_SENSITIVE_DATA_WRITE_TO_DISK.msg1": "민감한 데이터가 디스크에 기록되지 않도록 확인하십시오.",
  "crulechk.PRIVATE_COLLECTION.ASSIGN.msg": "private으로 선언된 포인터에 public 메소드를 통해 assign 합니다.",
  "crulechk.PRIVATE_COLLECTION.msg": "private으로 선언된 포인터가 public 메소드를 통해 반환됩니다.",
  "crulechk.PROHIBIT_DELETE_CONTAIN_ELEMENT_NUM.msg": "배열을 delete 구문으로 해제하면서 인덱스를 명시했습니다.",
  "crulechk.PROHIBIT_ENUM_TYPE_BITFIELD.msg1": "비트필드는 열거형을 가져서는 안됩니다.",
  "crulechk.PROHIBIT_ENUM_TYPE_BITFIELD2.msg1": "비트필드 타입으로는 열거형을 사용해서는 안됩니다.",
  "crulechk.PROHIBIT_FUNC_IN_STDLIB.msg1": "stdlib.h의 해당 함수를 사용하지 말아야 합니다.",
  "crulechk.PROHIBIT_FUNC_IN_TIME.msg": "time.h 헤더파일을 사용하면 안됩니다.",
  "crulechk.PROVIDE_OUTPUT_OPERATOR.msg": "모든 클래스에서 ostream을 취한 출력 함수 operator<<를 제공해야 합니다.",
  "crulechk.PROVIDE_PROPERLY_ALIGNED_POINTERS_TO_PLACEMENT_NEW.msg": "placement new를 사용할때 aligned 된 인자를 잘 넣어야 합니다.",
  "crulechk.PTR_EXCEED_TWO_LEVELS.msg1": "이중 포인터 이상의 포인터 선언을 하지 말아야 합니다.",
  "crulechk.PTR_EXCEED_TWO_LEVELS.msg2": "함수의 리턴형이 이중 포인터 이상입니다.",
  "crulechk.PUBLICLY_DERIVED_CLASS_SHOULD_BE_ABSTRACT.msg": "기반 클래스로부터 public 상속을 받을 경우, 기반 클래스는 반드시 추상형이어야 합니다.",
  "crulechk.PUBLIC_STATIC_FIELD_WITHOUT_CONST.default": "public 정적 멤버 변수가 const 키워드로 선언되지 않았습니다.",
  "crulechk.RACE_CONDITION.EXT.msg1": "TOCTOU 취약점 입니다. {2} 함수에서 {3} 변수로 파일의 상태를 확인하였으며, {0} 함수에서 {1} 변수의 이름으로 파일을 열었습니다.",
  "crulechk.RACE_CONDITION.SWITCH.msg1": "스위치(switch)문의 평가 식의 결과 값이 실행 중 변할 수 있습니다.",
  "crulechk.RACE_CONDITION.msg1": "파일 {3}을 대상으로 {2} 함수를 호출하여 검사한 후, 파일 {1}에 대해 {0}함수를 사용하는 것은 시간차가 발생할 경우 다른 파일을 열게되는 등 취약점이 발생할 수 있습니다.",
  "crulechk.RACE_CONDITION.msg2": "mutex의 반환값을 검사하지 않았습니다. 경쟁상태가 발생할 수 있으며, 예측할 수 없는 동작을 할 수 있습니다.",
  "crulechk.RANGE_LOOP_INIT_MULTIPLE_CALLS.msg": "범위 기반 for 문의 초기화 식 내에서 함수를 2회 이상 호출했습니다.",
  "crulechk.READ_WRITE_BINARY_DATA.msg1": "서로 다른 시스템간의 데이터 교환시에 바이너리 데이터에 특히 조심해야 합니다.",
  "crulechk.REDUNDANT_CAST.msg": "중복된 명시적 캐스팅은 사용하지 않도록 합니다.",
  "crulechk.REDUNDANT_NAME.msg1": "지역 변수와 정적 변수가 같은 이름을 사용하고 있습니다.",
  "crulechk.REFER_ATOMIC_VARIABLE_MANY_TIMES_IN_EXPRESSION.bMsg": "atomic 변수가 참조되었습니다. {0}",
  "crulechk.REFER_ATOMIC_VARIABLE_MANY_TIMES_IN_EXPRESSION.msg": "atomic 변수에 올바른 값이 저장되지 않을 수 있습니다.",
  "crulechk.REFER_ATOMIC_VARIABLE_MANY_TIMES_IN_EXPRESSION.yMsg": "{0} 변수가 여러번 참조되었습니다.",
  "crulechk.REF_RETURN_MEMBER_FUNCTION_QUALIFIER.msg": "{0} 객체를 리턴하는 멤버 함수 {1} 의 참조 한정자가 없습니다.",
  "crulechk.REF_RETURN_MEMBER_FUNCTION_QUALIFIER.msg1": " {0} 객체를 리턴하는 멤버 함수 {1} 선언이 && 한정 오버로딩 함수 없이 const & 참조 한정으로 이루어졌습니다.",
  "crulechk.REF_RETURN_TYPEID_POLYMORPHIC.msg": "typeid의 피연산자에 다형성 객체를 전달했습니다",
  "crulechk.REINTERPRET_CAST_NOT_ALLOWED.msg": "reinterpret_cast 를 사용하여 {0} 타입에서 허용되지 않는 {1} 타입으로 변환했습니다.",
  "crulechk.RELATIONSHIPS_IN_CONSTANT_DEFINITIONS.msg1": "상수 정의에서는 상수 간의 관계가 적절하게 나타나도록 정의해야 합니다.",
  "crulechk.RELIANCE_ON_UNTRUSTED_INPUTS.msg1": "보안 기능을 결정할 때 신뢰할 수 없는 입력값을 사용하지 마십시오.",
  "crulechk.REPRESENTATION_SIGNED_INTEGER.msg1": "부호 있는 정수는 컴파일러마다 구현 방식이 다릅니다. 부호 있는 정수를 표현하기 위해서 2의 보수를 사용했다고 가정하면 안됩니다.",
  "crulechk.RESET_SIGNAL_HANDLER.msg1": "구현마다 다른 시그널 핸들러의 지속성에 대한 세부사항을 이해해야 합니다.",
  "crulechk.RESET_STRING_ON_FGETS_FAILURE.msg1": "C 표준 함수인 fgets()나 fgetws()가 실패할 경우, 문자열을 알고 있는 값으로 대입해야 뒤이은 스트링 조작 함수에서 에러를 피할 수 있습니다.",
  "crulechk.RESTRICT_PARAM_VALUE_RANGE.msg": "함수 {0}의 {1}번째 인자가 허용값을 벗어났습니다.",
  "crulechk.RESTRICT_USE_OF_EXTERN_KEYWORD.msg": "extern 키워드의 사용을 제한합니다. 암시적으로 이미 extern일때, extern 키워드를 사용하지 않습니다.",
  "crulechk.RETURN_EMPTY_ARRAY_INSTEAD_OF_NULL.msg1": "배열을 리턴하는 함수는 NULL 값 보다 빈 배열을 리턴하는 것이 좋습니다.",
  "crulechk.RETURN_ERRNO_WITH_ERRNO_T_TYPE.bMsg": "errno를 반환합니다.",
  "crulechk.RETURN_ERRNO_WITH_ERRNO_T_TYPE.msg": "errno 에러 코드를 반환하는 함수의 반환 타입을 errno_t로 정의해야 합니다.",
  "crulechk.RETURN_FLOAT_CASTING.msg1": "부동 소수점 타입을 리턴하는 함수에서 리턴하는 값은 캐스팅해서 사용하십시오.",
  "crulechk.RETURN_PARAM_ADDR.msg1": "함수 파라미터의 주소 값을 처리하는 핸들을 리턴하지 말아야 합니다.",
  "crulechk.RETURN_PARAM_ADDR.sca.desc.remove_ref_ret": "반환 타입을 변경합니다.",
  "crulechk.RETURN_REFERENCE_PARAM.msg": "함수는 참조 또는 포인터를 반환하지 않습니다.",
  "crulechk.RETURN_REFERENCE_PARAM.msg_blue": "매개 변수에 참조가 전달됩니다.",
  "crulechk.RETURN_SHALL_NOT_HAVE_EXPRESSION.msg": "리턴 타입 함수의 return 문장 뒤에 식이 존재합니다.",
  "crulechk.RETURN_VALUE_SHOULD_BE_CONST.msg1": "리턴된 상수 값은 허용되지 않습니다.",
  "crulechk.RETURN_VALUE_SHOULD_BE_CONST.msg2": "리턴 값은 const 여야 합니다.",
  "crulechk.REUSE_NAME_IN_DIFFERENT_FILE.msg": "다른 파일 간에서 같은 함수 혹은 변수명을 재사용하지 않도록 합니다.",
  "crulechk.REUSE_NAME_IN_DIFFERENT_FILE.yMsg": "같은 식별자 입니다.",
  "crulechk.REVERSIBLE_ONE_WAY_HASH.msg1": "{0}을 해싱 알고리즘으로 사용하면 위험합니다. 좀 더 보안성이 강화된 해싱 알고리즘을 사용하십시오.",
  "crulechk.SAVE_UNNECESSARY_REALLOCATION.msg": "컨테이너를 미리 할당하는 것이 가능하다면, 불필요한 재할당이 없도록 합니다.",
  "crulechk.SAVE_UNNECESSARY_REALLOCATION.sca.desc.default": "reserve() 함수를 사용하여 메모리 공간을 반복문 이전에 충분히 늘려두도록 합니다.",
  "crulechk.SECURITY_DECISION_ON_DNS_LOOKUP.msg1": "DNS 명을 사용하여 네트워크 연결을 시도하거나 사용자 검증을 하지 마십시오. IP 주소를 대신 사용해야 합니다.",
  "crulechk.SET_ERRNO_ZERO_BEFORE_CALL_FUNC.msg1": "에러 발생 시, errno에 값을 설정하는 것으로 알려진 라이브러리 함수 사용 전에 반드시 errno 을 0으로 초기화해야 합니다. 또한 함수 사용 직후에만 errno을 확인하시기 바랍니다.",
  "crulechk.SET_ERRNO_ZERO_BEFORE_CALL_FUNC.sca.desc.default": "에러 발생 시, errno에 값을 설정하는 것으로 알려진 라이브러리 함수 사용 전에 반드시 errno 을 0으로 초기화하십시오.",
  "crulechk.SHADOWING_CHECKER.bmsg": " {0}은 이름이 가려지는 바깥 범위에 선언된 식별자입니다.",
  "crulechk.SHADOWING_CHECKER.msg": "식별자 {0} 의 이름이 바깥 범위에 선언된 식별자의 이름을 가립니다.",
  "crulechk.SIDE_EFFECT.DESIGNATED_INIT.msg": "변수 {0}의 지정 초기화 {1} 번째 인자에서 부작용(side effect)이 있습니다.",
  "crulechk.SIDE_EFFECT.INITIALIZER_LISTS.msg": "{0}번째 초기화 인자에 부작용(side effect) 가 있습니다.",
  "crulechk.SIDE_EFFECT.INITIALIZER_LISTS.msg2": "변수 {0}의 {1}번째 초기화 인자에 부작용(side effect) 가 있습니다.",
  "crulechk.SIDE_EFFECTS_IN_UNEVALUATED_OPERANDS.msg": "특정 수식들은 피연산자를 계산하지 않습니다.",
  "crulechk.SIDE_EFFECT_RHS_OF_LOGICAL_OP.msg1": "논리연산자(&&, ||)의 우항에서 부수효과(side effect)가 발생하고 있습니다.",
  "crulechk.SIGNAL_HANDLER_CALLS_UNSAFE_FUNCTION.msg1": "시그널 핸들러 내에서 비동기식에 안전한 함수만 호출해야 합니다.",
  "crulechk.SIGNAL_HANDLER_USES_NON_VOLATILE_VARIABLE.msg1": "캐쉬 되지 말아야 할 데이터에 volatile을 붙이도록 합니다.",
  "crulechk.SINGLE_ARGUMENTED_CONSTRUCTOR_SHOULD_BE_EXPLICIT.msg1": "인자가 하나인 생성자는 explicit 표시를 해야 합니다.",
  "crulechk.SINGLE_LOOP_COUNTER.msg": "for 문에서는 한 개의 루프 카운터 만 있어야 합니다.",
  "crulechk.SIZEOF_DO_NOT_CONTAIN_SIDE_EFFECTS.decltype": "decltype 연산자는 부수 효과를 일으킬 수 있는 표현식을 사용하지 말아야 합니다.",
  "crulechk.SIZEOF_DO_NOT_CONTAIN_SIDE_EFFECTS.msg1": "sizeof 연산자는 부수 효과를 일으킬 수 있는 표현식을 사용하지 말아야 합니다.",
  "crulechk.SIZEOF_DO_NOT_CONTAIN_SIDE_EFFECTS.sca.desc.line_align": "관련 식을 먼저 수행하고, sizeof 연산을 수행합니다.",
  "crulechk.SIZE_CALCULATION.msg1": "객체에 충분한 메모리를 할당해야 합니다",
  "crulechk.SOCKET_IN_WRONG_STATE.msg1": "소켓 값을 socket()에 의해 초기화 시키지 않았습니다.",
  "crulechk.SOCKET_IN_WRONG_STATE.msg2": "소켓 값이 bind()에 의해 묶여지지 않았습니다.",
  "crulechk.SOCKET_IN_WRONG_STATE.msg3": "listen()을 통해 소켓 값을 얻어 오지 않았습니다.",
  "crulechk.SOCKET_IN_WRONG_STATE.msg4": "소켓 값이 이미 listen() 에 의해 할당되어 있습니다",
  "crulechk.SOCKET_IN_WRONG_STATE.msg5": "소켓이 connect()에 의해 연결되어 있지 않습니다",
  "crulechk.SPECIFY_LENGTH_TYPEDEF.msg1": "Typedef 이름에 자료형의 크기에 대한 정보가 없습니다.",
  "crulechk.STANDARD_CHARACTERS.msg": "비표준 문자를 사용하지 않도록 합니다.",
  "crulechk.STANDARD_ESCAPE_SEQUENCE.msg": "ISO C표준에 정의된 이스케이프 시퀀스만 사용되어야 합니다.",
  "crulechk.STANDARD_LIBRARY_FUNCTIONS_SHOULD_BE_CONST.sink": "{0} 함수에서 반환된 포인터는 반드시 const 한정자로 처리해야 합니다.",
  "crulechk.STANDARD_LIBRARY_RETURNED_POINTER_SHOULD_NOT_BE_REUSED.sink": "{0} 함수에서 반환된 데이터는 동일 함수 사용 이후에 재사용할 수 없습니다.",
  "crulechk.STATIC_FOR_VARIABLE_USED_IN_ONLY_ONE_FILE.msg1": "한 파일에서만 사용되는 전역 변수는 static으로 선언해야 합니다.",
  "crulechk.STATIC_LOCAL_VARIABLE.msg": "변경 가능한 지역 변수 {0} 에 static 키워드가 사용되어 정적 저장 기간을 가집니다.",
  "crulechk.STRICT_USE_FOPEN_MODE.msg1": "fopen() 의 모드 파라미터를 잘못 명시했을 수 있으니, 확인해보시기 바랍니다.",
  "crulechk.STRING_ESCAPE_UNTERMINATED.msg": "문자열 내의 이스케이프 시퀀스가 명확하게 종료되지 않았습니다.",
  "crulechk.STRING_LITERAL_MODIFICATION.msg1": "문자열을 수정하려 시도하지 마십시오.",
  "crulechk.STRING_LITERAL_MODIFICATION.sca.desc.default": "수정이 필요하면 문자열 배열로 선언하십시오.",
  "crulechk.STRTOK_CHANGES_STRING.msg1": "strtok() 함수가 파싱 대상 변수 {0}의 문자열을 바꾸지 않는다고 가정하면 안됩니다.",
  "crulechk.STRTOK_CHANGES_STRING.sca.desc.default": "임시 버퍼 문자열을 만들어 사용합니다.",
  "crulechk.STRTOK_CHANGES_STRING.sca.note.desc.include_memory": "memory.h 파일을 포함해야 합니다.",
  "crulechk.STRTOK_CHANGES_STRING.sca.note.desc.include_string": "string.h 파일을 포함해야 합니다.",
  "crulechk.SUPPLY_AN_INITIAL_VALUE_FOR_EACH_ENTRIES.msg": "모든 생성자들이 각각의 가상 베이스 클래스, 비가상 베이스 클래스, 비정적 데이터 멤버의 초기값, 혹은 생성자 호출을 제공하는 지 확인하도록 합니다.",
  "crulechk.SWITCH_CASE_IN_SAME_SCOPE.msg": "모든 case 문(switch-label)은 switch 문과 가장 가까운 스코프에 있어야 합니다.",
  "crulechk.SYMBOLIC_LINK_RACE_CONDITION.msg1": "심볼릭 링크의 존재를 확인하는 도중에 경쟁상태(race condition)에 빠지는 것을 피해야 합니다",
  "crulechk.SYMMETRIC_OPERATOR_SHOULD_BE_DEFINED_AS_FRIEND.msg": "대입 연산자를 제외한 대칭 연산자는 반드시 friend 함수로 정의합니다.",
  "crulechk.SYNTACTICALLY_AMBIGUOUS_DECLARATIONS.default": "문법적으로 애매한 선언 구문이 사용되었습니다.",
  "crulechk.TAG_NAME_SHALL_BE_A_UNIQUE.msg": "태그 이름은 유일해야 합니다.",
  "crulechk.TAG_NAME_SHALL_BE_A_UNIQUE.sink": "{0} 태그 이름은 유일해야 합니다.",
  "crulechk.TAG_NAME_SHALL_BE_A_UNIQUE.src": "먼저 사용된 {0} 태그 이름입니다.",
  "crulechk.TAG_NAME_SHALL_BE_A_UNIQUE.yMsg": "이미 사용되었습니다.",
  "crulechk.TAKE_CARE_WHEN_USING_RENAME.msg": "rename함수 사용시 주의하도록 합니다.",
  "crulechk.TAKE_CARE_WHEN_USING_RENAME.sca.desc.access": "access() 함수를 사용하여 같은 이름의 파일이 이미 존재하는지 검사합니다.",
  "crulechk.TAKE_CARE_WHEN_USING_RENAME.sca.desc.remove": "remove() 함수를 사용하여 기존에 존재하는 목적 파일을 제거합니다.",
  "crulechk.TAKE_CARE_WHEN_USING_RENAME.sca.note.desc.opt_preserved_exist_file": "현재 체커 설정은 목적 파일이 이미 존재할 때 보존하는 방식입니다.",
  "crulechk.TAKE_CARE_WHEN_USING_RENAME.sca.note.desc.opt_remove_exist_file": "현재 체커 설정은 목적 파일과 같은 이름이 있을때 이 파일을 제거하는 방식 입니다.",
  "crulechk.TAKE_CARE_WHEN_USING_RENAME.sca.note.desc.posix_implement": "Posix의 rename()은 목적 파일이 이미 존재할 때 목적 파일을 제거합니다.",
  "crulechk.TAKE_CARE_WHEN_USING_RENAME.sca.note.desc.windows_implement": "Windows의 rename()은 목적 파일이 이미 존재할 때 rename 함수가 실패합니다.",
  "crulechk.TEMPLATE_SPECIALIZATION_SHOULD_BE_SAME_FILE.msg": "템플릿 특수화는 기본 함수 템플릿과 같은 파일에 있어야 합니다.",
  "crulechk.TEMPLATE_WITH_POTENTIALLY_CONFLICTING_METHODS.msg": "잠재적으로 충돌가능성을 있는 메소드를 가진 클래스 템플릿을 정의하지 않도록 합니다.",
  "crulechk.TEMP_LIFETIME_OBJ_MODIFICATION.msg1": "한시적 임시 객체를 수정하지 마십시오.",
  "crulechk.TESTED_AGAINST_CONSTANT_VALUE.msg": "반복문의 제어변수는 식이나 함수가 아니라 상수값으로 평가되어야 합니다.",
  "crulechk.THREAD_OBJECT_MISUSE.msg": "스레드 관련 객체 {0} 을 표준 라이브러리 함수 외의 방법으로 접근했습니다.",
  "crulechk.THREAD_SHARE_LOCAL_VARIABLE.msg": "thread가 로컬 변수를 공유합니다.",
  "crulechk.THROW_NOT_IN_CATCH_STMT.msg": "텅 빈 throw는 catch 핸들러의 복합 명령문에서만 사용되어야 합니다.",
  "crulechk.THROW_NULL.msg": "NULL은 명시적으로 던지면 안됩니다.",
  "crulechk.THROW_PTR_TYPE.msg": "예외 객체에는 포인터 타입을 가지면 안됩니다.",
  "crulechk.TMP_FILE_IN_SHARED_DIR.msg1": "임시 파일에 위험한 함수가 사용되었습니다.",
  "crulechk.TOC_TOU_ACCESS.msg1": "자원을 사용합니다(Time of Use). 멀티프로세스 환경에서는 TOCTOU 경쟁상태가 발생할 수 있습니다.",
  "crulechk.TOC_TOU_ACCESS.msg2": "자원의 상태를 점검하고 있습니다. (Time of Check)",
  "crulechk.TOO_BIG.STRUCT_SIZE.PF.msg_in": "입력 구조체의 크기가 {0} 바이트로 기준 {1} 바이트를 초과했습니다.",
  "crulechk.TOO_BIG.STRUCT_SIZE.PF.msg_out": "출력 구조체의 크기가 {0} 바이트로 기준 {1} 바이트를 초과했습니다.",
  "crulechk.TOO_BIG_FUNCTION.msg": "함수가 {1} 라인으로 기준인 {0} 라인을 초과했습니다.",
  "crulechk.TOO_LONG_COLUMN.msg": "한 줄 당 글자 수는 {0}글자 이하로 합니다.",
  "crulechk.TOO_LONG_COLUMN.msg_b": "이 줄은 줄 오른편 빈칸과 탭, 주석을 제외하고 {0}자 입니다.",
  "crulechk.TOO_LONG_IDENTIFIER.msg1": "식별자 길이가 31자를 초과했습니다. {0}",
  "crulechk.TOO_MANY_EXECUTABLE_PATH.msg": "함수 내 실행 가능한 경로가 너무 많습니다. {1}개의 경로가 있으며 기준은 {0} 입니다.",
  "crulechk.TOO_MANY_INIT_ARRAY.msg1": "배열의 크기보다 초기화할 아이템이 더 많습니다. 초기화 아이템은 {0} 개 필요하지만, {1} 개의 아이템이 있습니다.",
  "crulechk.TOO_MANY_METHODS.msg": "너무 많은 함수가 선언되었습니다.",
  "crulechk.TOO_MANY_NONCYCLIC_EXECUTION_PATH.msg": "높은 정적인 프로그램 경로 수를 가지는 함수를 피하도록 합니다.",
  "crulechk.TOO_MANY_RETURNS.msg": "리턴 문장은 최대 {0} 만큼 사용할 수 있습니다.",
  "crulechk.TYPEDEF_NAME_SHALL_BE_A_UNIQUE.msg": "Typedef 이름은 유일해야 합니다.",
  "crulechk.TYPEDEF_NAME_SHALL_BE_A_UNIQUE.sink": "{0} typedef 이름은 유일해야 합니다.",
  "crulechk.TYPEDEF_NAME_SHALL_BE_A_UNIQUE.src": "먼저 사용된 {0} typedef 명 입니다.",
  "crulechk.TYPEDEF_NAME_SHALL_BE_A_UNIQUE.yMsg": "이미 사용되었습니다.",
  "crulechk.TYPE_GENERIC_MACRO_ARG_TYPE.msg": "타입 제네릭 매크로 {0} 에 전달된 인자 {1}의 본질적 타입이 산술 타입이 아닙니다.",
  "crulechk.TYPE_GENERIC_MACRO_ARG_UNIFORMITY.msg": "타입 제네릭 매크로 {0} 에 전달된 인자들이 정수 승격 후 동일한 표준 타입을 갖지 않습니다.",
  "crulechk.TYPE_MISMATCH_IN_TERNARY.msg": "삼항 연산자에서 두가지 대안의 타입은 동일해야 합니다.",
  "crulechk.UNARY_NEGATIVE_OP_ON_UNSIGNED.msg1": "부호 없는 타입의 표현식을 음수로 변환할 수 없습니다.",
  "crulechk.UNARY_NEGATIVE_OP_ON_UNSIGNED.sca.desc.remove": "마이너스 연산자를 제거합니다.",
  "crulechk.UNARY_NEGATIVE_OP_ON_UNSIGNED.sca.desc.type_modify": "해당 값을 받을수있는 적절한 type으로 변환합니다.",
  "crulechk.UNARY_NEGATIVE_OP_ON_UNSIGNED.sca.note.desc.make_flow": "코드 변경으로 동작이 변경될수 있음에 유의하세요.",
  "crulechk.UNARY_PLUS_BUILTIN.msg": "내장된 단항 + 연산자를 사용했습니다.",
  "crulechk.UNCHECK_ARRAY_LENGTH.msg1": "파라미터로 선언되었습니다 :",
  "crulechk.UNCHECK_ARRAY_LENGTH.msg2": "가변 길이 배열을 정하는 변수의 크기가 적절한지 확인해야 합니다",
  "crulechk.UNCONTROLLABLE_GLOBAL_VARIABLE_USE.msg": "const 전역 변수 {0} 의 선언이 동적 초기화를 사용하여 정적 초기화 순서 문제 위험이 있습니다.",
  "crulechk.UNCONTROLLABLE_GLOBAL_VARIABLE_USE.msg1": "전역 변수 {0} 의 선언이 const나 constexpr이 없어 데이터 경합 위험이 있습니다.",
  "crulechk.UNCONTROLLED_RECURSION.msg1": "재귀 함수가 어떠한 조건문이나 반복문 블록 없이 사용되고 있습니다.",
  "crulechk.UNDECIDABLE_DIVISION.msg": "나눗셈 연산의 제수가 결정적이지 않습니다.",
  "crulechk.UNDEF_NON_LOCAL_MACRO.defect": "현재 파일에서 정의되지 않은 매크로 {0} 에 #undef를 사용했습니다.",
  "crulechk.UNEXPECTED_SIGN_EXTENSION.msg1": "크기가 작은 타입의 변수를 상대적으로 크기가 큰 타입의 변수에 대입하고 있습니다.",
  "crulechk.UNINIT.MEMBER.msg1": "클래스 {0} 의 생성자 본문 진입 시점까지 일부 멤버 변수들이 초기화되지 않았습니다.",
  "crulechk.UNINIT.MEMBER.msg2": "클래스 {0} 의 일부 멤버 변수가 초기화 되지 않았으나 명시적인 생성자가 없습니다.",
  "crulechk.UNINIT.MEMBER.src": "멤버 변수 {0} 의 초기화가 누락되었습니다.",
  "crulechk.UNIQUE_HEADER_FILE_NAME.bMsg": "먼저 사용한 헤더 파일 이름입니다.",
  "crulechk.UNIQUE_HEADER_FILE_NAME.msg": "중복된 헤더 파일 이름이 없는지 보장하도록 합니다.",
  "crulechk.UNIQUE_VALUE_IN_ENUMERATOR.msg": "열거형 목록에서 대입 연산자는 모든 요소를 초기화 하지 않는 이상 사용되지 말아야 합니다.",
  "crulechk.UNIQUE_VALUE_IN_ENUMERATOR.yMsg": "값이 대입된 부분입니다.",
  "crulechk.UNIVERSAL_CHARACTER_TROUGH_CONCATENATION.msg1": "매크로의 연결에서 유니코드와 같은 universal character가 인자로 들어가면 안됩니다.",
  "crulechk.UNMATCH_TYPE_PTR_COMPARE.msg1": "같은 배열을 가리지키 않는 포인터 간의 비교 연산을 하지 말아야 합니다.",
  "crulechk.UNMATCH_TYPE_PTR_SUBTRACT.msg1": "같은 배열을 가리키지 않는 포인터간의 포인터 빼기 연산을 하지 말아야 합니다.",
  "crulechk.UNNAMED_STRUCT_UNION_MEMBERS.msg1": "이름없는 구조체나 공용체 필드를 선언해서는 안됩니다.",
  "crulechk.UNNAMED_TEMPORARY_OBJECT.defect": "변수명이 누락되어 {0} 타입의 임시 객체가 생성된 후 즉시 소멸됩니다.",
  "crulechk.UNNECESSARY_ALIGNAS_ZERO.msg": "alignas 의 인자 {0} 이 0으로 지정되었습니다.",
  "crulechk.UNREACHABLE_CASE.msg1": "절대 도달하지 않을 case 레이블을 사용했습니다.",
  "crulechk.UNREACHABLE_CASE.msg2": "절대 도달하지 않을 case 레이블을 사용했습니다. switch 문의 평가식에 사용된 {0}은 {1} 형으로서 절대 {2}(이)가 될 수 없습니다.",
  "crulechk.UNREACHABLE_CASE.sca.desc.remove": "해당 케이스를 삭제합니다.",
  "crulechk.UNREACHABLE_CASE.sca.desc.type_modify": "해당 케이스를 받을 수 있는 적절한 type으로 변환합니다.",
  "crulechk.UNREACHABLE_CODE_STRING_COMPARE.msg_blue": "문제가 된 구문",
  "crulechk.UNREACHABLE_CODE_STRING_COMPARE.msg_red": "문자열 비교시 도달할 수 없는 비교 구문을 작성하지 않도록 합니다.",
  "crulechk.UNSAFE_MEMBER_POINTER_COMPARISON.defect": "잠재적 가상 함수 포인터 {0} 값을 nullptr이 아닌 대상과 비교했습니다.",
  "crulechk.UNSALTED_ONE_WAY_HASH.msg1": "솔트를 포함하여 해시값을 생성해야 합니다.",
  "crulechk.UNSCOPED_ENUM_DECLARATION.msg": "열거형 {0} 선언이 class 키워드가 누락되어 범위가 지정되지 않은 상태입니다.",
  "crulechk.UNSPECIFY_BUFFER_LENGTH_CIN.msg1": "사용자가 입력할 수 있는 문자열의 최대값을 지정한 후 cin을 사용해야 합니다.",
  "crulechk.UNSUITABLE_BITFIELD_TYPE.msg1": "비트필드는 오직 unsigned int 타입이나 signed int 타입으로만 정의되어야 합니다.",
  "crulechk.UNSUITABLE_BITFIELD_TYPE.sca.desc.default": "필드 선언을 {0} 타입으로 변경하도록 합니다.",
  "crulechk.UNSUITABLE_BITFIELD_TYPE.sca.note.desc.can_use_typedef": "typedef로 선언된 경우 typedef를 수정하여 사용할 수 있습니다.",
  "crulechk.UNSUITABLE_BITFIELD_TYPE.sca.note.desc.change_other_code": "필드의 타입이 변경되므로 관련된 코드의 수정이 이루어져야 합니다.",
  "crulechk.UNUSED_CATCH_HANDLER.msg1": "사용되지 않는 예외 처리 문을 작성하지 말아야 합니다.",
  "crulechk.UNUSED_CATCH_HANDLER.sca.desc.remove": "사용되지 않는 처리문을 제거합니다.",
  "crulechk.UNUSED_CONTAINER_RETURN_VALUE.msg": "함수 {0}의 반환값이 사용되지 않았습니다.",
  "crulechk.UNUSED_PARAMETER.MISRA2008.msg1": "가상 함수에서 사용되지 않은 매개 변수가 없어야합니다.",
  "crulechk.UNUSED_PARAMETER.MISRA2008.src": "{0} 파라미터 변수가 사용되지 않았습니다.",
  "crulechk.UNUSED_PARAMETER.msg1": "사용하지 않는 파라미터가 있습니다.",
  "crulechk.UNUSED_PARAMETER.src": "{0} 파라미터 변수가 사용되지 않았습니다.",
  "crulechk.UNUSED_RETURN_VALUE.msg": "반환 값이 있는 함수 {0} 의 반환 값이 사용되지 않았습니다.",
  "crulechk.UNUSED_STATIC_VARIABLE.msg": "정적 변수를 정의했으나 사용되지 않았습니다.",
  "crulechk.UNUSED_VALUE.msg": "변수에 값이 할당되었는데 그 값이 어떤 실행 경로에서도 사용되지 않는 경우에 검출되는 오류입니다.",
  "crulechk.USE_ADJACENT_UNARY_OPERATOR.msg": "{0}과 피연산자 사이에 공백이 없어야 합니다.",
  "crulechk.USE_AFTER_CLOSE.msg_blue1": "pfmDbioFetchCursor() 를 사용했습니다.",
  "crulechk.USE_AFTER_CLOSE.msg_blue2": "pfmDbioCloseCursor() 를 사용했습니다.",
  "crulechk.USE_AFTER_CLOSE.msg_red": "pfmDbioCloseCursor를 사용한 후에 pfmDbioFetchCursor가 호출되지 말아야 합니다.",
  "crulechk.USE_BRACE_MULTI_DIMENSION_ARRAY_INIT.msg1": "배열이나 구조체를 0이 아닌 값으로 초기화 할때 배열과 구조체에 맞게 중괄호를 사용해야 합니다.",
  "crulechk.USE_BRACE_MULTI_DIMENSION_ARRAY_INIT.sca.desc.replace": "배열과 구조체에 맞춰 중괄호를 넣습니다.",
  "crulechk.USE_CODEGUARD_WHEN_DECLARING_CLASS.msg": "#pragma once 와 같은 코드가드가 없습니다.",
  "crulechk.USE_CONST_GLOBAL_AND_STATIC.msg": "글로벌 및 정적 데이터는 const여야 합니다.",
  "crulechk.USE_CONST_OBJECT_OR_ENUMERATORS.msg": "상수를 정의시 #define 대신 상수 객체나 열거형을 사용하도록 합니다.",
  "crulechk.USE_CONST_POINTER_FOR_STRING_VAR.msg1": "문자열로 초기화하는 char 포인터를 선언할 때는 const 를 사용해야 합니다.",
  "crulechk.USE_CONST_POINTER_FOR_STRING_VAR.sca.desc.default": "문자열로 초기화하는 char 포인터를 선언할 때는 const 를 사용해야 합니다.",
  "crulechk.USE_CONST_WHENEVER_POSSIBLE.msg": "파라미터를 선언할 때 가능한한 const 키워드를 사용합니다. 언급된 포인터 파라미터가 가리키는 실제 값이 변경되지 않습니다.",
  "crulechk.USE_CONST_WHENEVER_POSSIBLE.ucv": "{0} 파라미터를 선언할 때 const 키워드를 사용합니다.",
  "crulechk.USE_CONST_WITH_MACRO.msg1": "상수는 반드시 매크로로 정의해야 합니다.",
  "crulechk.USE_CONTAINERS_OF_POINTER.msg": "복사의 오버헤드가 큰 경우, 포인터나 스마트 포인터 컨테이너를 사용하도록 합니다.",
  "crulechk.USE_CONTAINER_MEMBER_FUNCTIONS.msg": "동일한 이름의 STL 알고리즘을 사용하는 것 보다 컨테이너의 멤버 함수를 사용하도록 합니다.",
  "crulechk.USE_CONTAINER_MEMBER_FUNCTIONS.sca.desc.default": "컨테이너의 내장된 메소드 {0}()를 사용하도록 합니다.",
  "crulechk.USE_DEFINED_STANDARD_FORMS.msg": "defined 전처리 구문은 두개의 표준 형식 중 하나가 사용되어야 합니다.",
  "crulechk.USE_EACH_ACCESS_SPECIFIER_EXACTLY_ONCE.msg": "클래스 선언은 'public', 'protected', 'private' 키워드를 명확하게 한번씩만 사용하여야 합니다.",
  "crulechk.USE_EMPTY_INSTEAD_OF_CHECKING_SIZE_AGAINST_ZERO.msg": "size()를 0과 비교하는 대신 empty() 함수를 사용하도록 합니다.",
  "crulechk.USE_EXTERN_TO_IMPORT_VARIABLE.msg": "extern 키워드는 변수를 가져올때 명시적으로 필요합니다.",
  "crulechk.USE_FERROR_THAN_COMPARE_ERRNO.msg1": "FILE 스트림 에러를 체크하기 위해서 errno보다 ferror()를 사용하십시오",
  "crulechk.USE_FUNCTION_IN_IF_CONDITION.msg": "조건문에서 함수 호출을 사용했습니다.",
  "crulechk.USE_LOWER_CASE_IN_INCLUDE_FILENAMES.msg": "include 지시자를 사용하거나 할 때, 파일 이름 및 파일 이름 참조시 소문자만 사용하도록 합니다.",
  "crulechk.USE_MAXIMUM_SIZED_BUFFER.default_desc": "배열의 크기가 {1} 입니다. MAX_PATH {0} 값 보다 작습니다.",
  "crulechk.USE_OF_INTEGER_CONSTANT_MACRO.msg": "금지된 소형 정수 상수 매크로 {0}를 사용했습니다.",
  "crulechk.USE_OF_LOW_SECURITY_ENCRYPTION_ALGORITHM.macro": "매크로 선언 값이 암호화 알고리즘에 권장되는 보안 강도를 만족하지 않습니다.",
  "crulechk.USE_OF_LOW_SECURITY_ENCRYPTION_ALGORITHM.same": "취약한 암호화 알고리즘이 사용되었습니다. 2, 3, 4의 파라미터 중 2개 이상의 파라미터 값이 동일합니다.",
  "crulechk.USE_OF_MULTIPLE_ALIGNAS.msg": "alignas 지정자가 한 변수 선언에 2개 이상 사용되었습니다.",
  "crulechk.USE_OF_SINGLETON_WITHOUT_SYNC.msg": "멀티 스레드 환경에서 싱글톤 패턴을 사용할 때는 동기화 메커니즘이 필요합니다.",
  "crulechk.USE_ONE_DECLARATION_PER_LINE.msg": "라인당 오로지 하나의 변수 선언만 허용됩니다.",
  "crulechk.USE_ONE_STATEMENT_PER_LINE.msg": "한 줄에는 오로지 하나의 구문만 사용해야 합니다.",
  "crulechk.USE_ONE_STATEMENT_PER_LINE.sca.desc.newline": "구문간에 라인을 달리 하도록 합니다.",
  "crulechk.USE_ONLY_ALLOWED_TYPE.msg1": "\"{0}\" 는 허용되지 않는 타입입니다.",
  "crulechk.USE_ONLY_PERMITTED_MACROS.msg": "매크로는 괄호 초기자, 상수, 괄호 수식, 한정자, 기억 클래스 명세, 혹은 do-while(0)구조에 대해서만 허용해야 합니다.",
  "crulechk.USE_OPEN_WITH_PERMISSION.msg1": "파일을 생성할 때 적절한 접근 권한도 함께 설정해야 합니다",
  "crulechk.USE_PARENTHESIS_TO_MACRO_REPLACEMENT_LIST.msg": "매크로의 모든 인자는 괄호로 감싸야 합니다.",
  "crulechk.USE_PASS_BY_REFERENCE.msg": "값 혹은 포인터를 전달하는 환경에서, 우선적으로 참조에 의한 전달을 사용합니다.",
  "crulechk.USE_POINTER_ARITHMETIC_ON_FIELD.msg": "필드값에 포인터 연산을 사용하지 않도록 합니다.",
  "crulechk.USE_PREPROCESSOR_ONLY_INCLUDEGUARDS.msg1": "전처리기는 file inclusion 과 include guards 에서 만 사용해야 합니다.",
  "crulechk.USE_PUBLIC_DERIAVTION_ONLY.msg": "상속시 public만 사용하도록 합니다.",
  "crulechk.USE_RSA_WITHOUT_OAEP.msg": "OAEP를 사용하지 않고 RSA 암호화 알고리즘을 사용하지 마십시오.",
  "crulechk.USE_RUNTIME_CONSTRAINT_HANDLERS.msg1": "바운드 검사 인터페이스를 호출할 경우에는 런타임 지정 핸들러를 사용해야 합니다.",
  "crulechk.USE_SAME_DEFAULT_VALUES.bMsg": "베이스 클래스의 가상 함수 입니다.",
  "crulechk.USE_SAME_DEFAULT_VALUES.msg": "함수를 재선언 및 오버라이딩 할 때 다른 선언과 마찬가지로 같은 디폴트 인자 값을 사용하도록 합니다.",
  "crulechk.USE_SAME_TYPE_WHEN_REDECLARING.msg": "변수나 함수를 재선언할 때 동일한 토큰을 가진 자료형을 사용해야 합니다.",
  "crulechk.USE_SHORT_FUNCTION.msg": "함수 파라미터 개수 및 줄수를 일정 이하가 되도록 사용합니다.",
  "crulechk.USE_SINGLE_RETURN.msg1": "{0}에 너무 많은 return 문이 있습니다.( {1} , 최대 = {2})",
  "crulechk.USE_SINGLE_RETURN.sca.desc.remove": "나머지 return문을 삭제합니다.",
  "crulechk.USE_SINGLE_RETURN.sca.note.desc.make_flow": "return문의 삭제로 동작이 변경될수 있음에 유의하세요.",
  "crulechk.USE_SINGLE_RETURN.yMsg": "{0} 번째 리턴 문장 입니다.",
  "crulechk.USE_SIZEOF_FOR_DATATYPE.msg1": "타입의 크기를 계산하려면 sizeof()를 사용해야 합니다.",
  "crulechk.USE_SIZEOF_ON_PARAM.msg": "함수 {0}의 {1}번째 파라미터는 반드시 sizeof()연산자를 사용해서 호출해야 합니다.",
  "crulechk.USE_SIZE_FOR_DESIGNATED_INITIALIZER.msg": "배열 {0} 은 지정 초기화 기능을 사용하여 초기화 했으나 명시적인 배열 크기가 누락되었습니다.",
  "crulechk.USE_STANDARD_CPP_LIBRARY_HEADERS.msg": "오래된 .h 헤더파일 대신 표준 C++ 라이브러리 헤더를 사용하도록 합니다.",
  "crulechk.USE_STATIC_IN_PUTENV.msg1": "인자로 자동 변수의 포인터가 올 경우 putenv() 함수를 호출하면 안됩니다.",
  "crulechk.USE_STATIC_IN_PUTENV.sca.desc.default": "putenv()의 인자로 자동 변수가 아닌 static 변수를 넘겨줍니다.",
  "crulechk.USE_STRTOL.msg": "문자열 토큰을 정수로 변환할 때는 strtol()이나 관련 함수를 사용하도록 합니다.",
  "crulechk.USE_STRTOL.sca.desc.default": "{0}() 대신 {1}()를 사용하도록 합니다.",
  "crulechk.USE_STRTOL.sca.note.desc.extra_character": "두번째 인자로 받은 포인터의 값이 공백이 아닌 경우 입력 끝에 숫자 외의 문자가 있다는 것을 뜻합니다.",
  "crulechk.USE_STRTOL.sca.note.desc.include_stdlib": "stdlib.h 를 포함해야 합니다.",
  "crulechk.USE_STRTOL.sca.note.desc.same_pointer": "두번째 인자로 받은 포인터가 원본 문자열의 포인터와 동일할 경우 문자열은 숫자가 아닙니다.",
  "crulechk.USE_SUFFIXES_FOR_FLOAT_CONSTANT.msg": "'float'형에 F 접미사를, 'long double'형에 L 접미사를 사용하도록 합니다.",
  "crulechk.USE_SUFFIXES_FOR_INTEGER_CONSTANT.msg": "'long'형에 L 접미사를, 'unsigned int'형에 U 접미사를, 'unsigned long'형에 UL 접미사를 사용하도록 합니다.",
  "crulechk.USE_SUFFIX_FOR_UNSIGNED_INTEGER_LITERALS.msg": "unsigned int 정수형 리터럴에 접미사 U를 사용하도록 합니다.",
  "crulechk.USE_TYPEDEF_TYPE_INSTEAD_OF_BASIC.msg1": "int, float 등의 수를 표현하는 타입은 기본 타입 대신 재정의한 타입을 사용해야 합니다.",
  "crulechk.USE_TYPEREF_NON_POINTER_TYPE.msg": "포인터가 아닌 자료형만 typedef를 사용하십시오",
  "crulechk.USE_UNSIGNED_INT_ON_DIVISION.msg": "나눗셈 연산 시 부호 없는 정수형을 제외하고는 어떤 타입도 사용하지 않습니다.",
  "crulechk.USE_VALUE_FROM_FGETPOS.msg1": "fgetpos()로 부터 리턴된 값만 fsetpos()에 사용해야 합니다.",
  "crulechk.USE_VISUALLY_DISTINCT_IDENTIFIER.msg1": "시각적으로 명확히 구분된 식별자를 사용해야 합니다. ({0} 과 혼동됩니다)",
  "crulechk.USING_COPY_INITIALIZATION.msg": "복사 초기화 방식 대신 직접 초기화 방식을 이용하여 클래스 형식의 변수를 정의해야 합니다.",
  "crulechk.USING_COPY_INITIALIZATION.sca.desc.default": "직접 초기화를 사용 합니다.",
  "crulechk.VARIADIC_IMPROPER_OBJECT_ARG.bmsg": " {0} 번째 가변 인자 {1} 의 타입이 부적절한 클래스 타입입니다.",
  "crulechk.VARIADIC_IMPROPER_OBJECT_ARG.msg1": "함수 {0} 의 가변 인자에 부적절한 클래스 타입을 가지는 객체를 전달했습니다.",
  "crulechk.VA_ARG_INTEGER_PROMOTION.msg": "정수 진급이 발생할 가능성이 있습니다.",
  "crulechk.VERIFY_PROVIDE_STANDARD_INTERFACE.cpMsg": "복사 생성자입니다.",
  "crulechk.VERIFY_PROVIDE_STANDARD_INTERFACE.cpassignMsg": "복사 대입 연산자입니다.",
  "crulechk.VERIFY_PROVIDE_STANDARD_INTERFACE.ctorMsg": "명시적인 기본 생성자입니다.",
  "crulechk.VERIFY_PROVIDE_STANDARD_INTERFACE.dtorMsg": "명시적인 기본 소멸자입니다.",
  "crulechk.VERIFY_PROVIDE_STANDARD_INTERFACE.msg": "모든 클래스가 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자에 대해 최소한의 표준 인터페이스를 제공하는지 확인해야 합니다.",
  "crulechk.VOID_KEYWORD_FOR_NO_PARAM.msg": "C에서 함수 선언 시, 파라미터가 없는 경우 인자에 void를 작성해야 합니다.",
  "crulechk.VOID_KEYWORD_FOR_NO_PARAM.sca.desc.default": "함수의 파라미터가 없으면 void 를 명시하도록 합니다.",
  "crulechk.VOLATILE_ACCESS_RHS_OF_LOGICAL_OP.msg1": "논리연산자(&&, ||)의 우항에서 Volatile 변수에 접근하고 있습니다.",
  "crulechk.VOLATILE_QUALIFIER_ON_INAPPROPRIATE_TARGET.msg": "부적절한 대상 {0}에 volatile 한정자를 사용했습니다.",
  "crulechk.VOLATILE_VALUE_MODIFICATION.default_desc": "참조 타입에 'volatile' 한정자를 사용하면 안됩니다.",
  "crulechk.WAIT_ALL_THREAD_BEFORE_DESTROY.msg": "다른 스레드의 mutex를 unlock 하거나 destroy하지 마십시오",
  "crulechk.WEAK_ENCRYPTION.HARDCODED_SALT.msg1": "암호화에 사용되는 salt 값이 하드 코딩 되어있습니다",
  "crulechk.WEAK_ENCRYPTION.INSUFFICIENT_KEY.msg1": "RSA 알고리즘에 적용되는 키는 {0}자 이상이여야 합니다.",
  "crulechk.WEAK_ENCRYPTION.PASSWORD.msg1": "암호로 사용한 변수({0}) 는 보안에 취약합니다",
  "crulechk.WEAK_ENCRYPTION.RISKY_ALGORITHM.msg1": "취약한 암호화 알고리즘을 사용되었습니다",
  "crulechk.WEAK_ENCRYPTION.RSA_PADDING.msg1": "{0} 함수의 {1} 번째 파라미터는 {2} 로 사용하지 말아야 합니다.",
  "crulechk.WEAK_PASSWORD_REQUIREMENTS.msg1": "암호 생성 시 강한 조건 검증을 수행해야 합니다.",
  "crulechk.WEAK_SERVER_CERTIFICATES.CPP.msg": "인증서 검증 함수의 {0} 번 인덱스의 인자값을 잘못 설정했습니다. 인증서 검증이 제대로 이루어지려면 이 값은 1이어야 합니다.",
  "crulechk.WRITE_DIRECTIVE_NESTED_PREPROCESSOR.msg": "전처리 조건문 내부에 속하는 전처리 지시자는 첫번째 컬럼에서 시작하여, #과 지시자 사이에 공백을 넣도록 합니다.",
  "crulechk.WRITE_DIRECTIVE_PREPROCESSOR.msg": "전처리 지시자는 첫번째 컬럼에서 시작하여, #과 지시자 사이에 공백이 없도록 합니다.",
  "crulechk.WRITE_STATIC_DECLARING_OPERATOR_NEW_AND_DELETE.msg": "new와 deleter 연산자의 재정의시 이 두개는 암시적으로 static이므로, 선언 시 static을 작성하도록 합니다.",
  "crulechk.WRITE_TO_READONLY_FILE.msg": "읽기 전용 파일에 쓰기를 시도합니다.",
  "crulechk.WRITE_VIRTUAL_DTOR_FOR_BASE_CLASS.derivedMsg": "상속한 클래스 입니다.",
  "crulechk.WRITE_VIRTUAL_DTOR_FOR_BASE_CLASS.msg": "베이스 클래스의 소멸자는 virtual로 작성해야 합니다.",
  "crulechk.WRITE_VIRTUAL_DTOR_FOR_BASE_CLASS.sca.desc.default": "부모 클래스의 소멸자를 virtual로 선언합니다.",
  "crulechk.WRITE_VIRTUAL_DTOR_FOR_BASE_CLASS.sca.note.desc.destructor": "소멸자의 정의를 구현해야 합니다.",
  "crulechk.WRITE_VIRTUAL_DTOR_FOR_BASE_CLASS.yMsg": "비 가상 소멸자 입니다.",
  "crulechk.WRONG_ERROR_HANDLING.msg1": "애플리케이션 독립적인 코드는 별도의 에러 처리 설명이 없는 에러 감지 코드를 제공해야 합니다.",
  "crulechk.WRONG_NUMBER_OF_PARAMETERS_IN_MACRO.msg": "함수 형태의 매크로는 모든 인자들을 포함하지 않고 사용되어서는 안됩니다.",
  "crulechk.WRONG_PREPROCESSING_TOKEN.msg1": "# 토큰 뒤에 전처리 토큰이 뒤따라야 합니다.",
  "cschk.ACCESS_CONTROL.ANONYMOUS_LDAP_BINDING.CSHARP.defect": "사실상 인증을 하지 않은 익명 바인딩으로 LDAP 쿼리를 실행하는 것은 공격자가 남용할 수 있습니다.",
  "cschk.ADDITION_ASSIGNMENT_OPERATOR.FOR_STRING_APPEND.CSHARP.defect": "연산자 '+='를 사용하여 문자열을 결합했습니다.",
  "cschk.ADD_EMPTY_STRING.CSHARP.defect": "빈 문자열을 + 연산에 사용했습니다.",
  "cschk.AVOID_MARKER_INTERFACE.CSHARP.defect": "빈 인터페이스의 사용을 지양합니다.",
  "cschk.AVOID_MUTABLE_IN_STRUCT.CSHARP.defect": "struct내에 mutable type이 정의되었습니다.",
  "cschk.AVOID_OUT_PARAMETER.CSHARP.defect": "out 매개 변수를 사용했습니다.",
  "cschk.AVOID_SINGLE_VALUE_CLASS.CSHARP.defect": "단일 값을 가지는 클래스를 정의했습니다.",
  "cschk.BAD_CALL.RANDOM_NEXT.CSHARP.defect": "안전하지 않은 난수를 생성했습니다.",
  "cschk.BAD_EQUALITY_EXPRESSION.FLOAT.CSHARP.defect": "부동소수점을 비교할 때 '==' 연산자를 사용했습니다.",
  "cschk.BAD_INTERFACE.ICLONEABLE.CSHARP.defect": "금지된 인터페이스를 구현했습니다.",
  "cschk.BAD_NAME.LOCAL_VARIABLE.CSHARP.defect": "지역변수는 소문자로 시작해야 합니다.",
  "cschk.BAD_NAME.NAMESPACE.CSHARP.defect": "네임스페이스 이름은 대문자로 시작해야 합니다.",
  "cschk.BAD_NAME.PARAMETER.CSHARP.defect": "매개변수의 이름은 소문자로 시작해야 합니다.",
  "cschk.BAD_OPERATOR.ASSIGNMENT_IN_COND.CSHARP.defect": "할당 연산이 아닌 비교 연산을 수행하려는 것인지 확인해야 합니다.",
  "cschk.BAD_OPERATOR.MULTIPLE_VARIABLE_ASSIGNMENT.CSHARP.defect": "하나의 값을 두 개 이상의 변수에 대입했습니다.",
  "cschk.BAD_POSITION.LITERAL_IN_EQUALS.CSHARP.defect": "변수.Equals(상수)를 사용했습니다.",
  "cschk.BAD_STRING_INSTANTIATION.CSHARP.defect": "new String()을 사용했습니다.",
  "cschk.CATCH_NULL_REFERENCE_EXCEPTION.CSHARP.defect": "NullReferenceException형식의 예외를 catch문에서 사용했습니다.",
  "cschk.COOKIE.DISABLED_HTTP_ONLY.CSHARP.defect": "쿠키의 HttpOnly 속성이 참이 아닙니다.",
  "cschk.COOKIE.OVERLY_BROAD_DOMAIN.CSHARP.defect.broad": "도메인 범위가 너무 넓게 설정되어 있습니다.",
  "cschk.COOKIE.OVERLY_BROAD_DOMAIN.CSHARP.defect.custom": "옵션으로 금지한 도메인을 사용합니다.",
  "cschk.COOKIE.OVERLY_BROAD_PATH.CSHARP.defect": "쿠키의 경로가 너무 넓게 설정되어 있습니다.",
  "cschk.CROSS_SITE_REQUEST_FORGERY.CSHARP.defect": "`@Html.AntiForgeryToken()`이 사용되지 않아 CSRF 공격에 취약합니다.",
  "cschk.DATA_LEAK_BETWEEN_SESSIONS.CSHARP.defect": "IHttpHandler 를 구현하는 클래스에 정보를 저장하는 필드가 포함되었습니다.",
  "cschk.DEEPLY_NESTED_IF_STATEMENT.CSHARP.defect": "지정한 횟수 이상의 if 중첩문을 사용했습니다.",
  "cschk.DESERIALIZATION_OF_UNTRUSTED_DATA.CSHARP.defect": "역직렬화시 보안에 취약한 함수를 사용합니다.",
  "cschk.DESIGN.ABSTRACT_TYPE.CONSTRUCTOR.CSHARP.defect": "public 형식이 추상이며 public 생성자를 가지고 있습니다.",
  "cschk.DESIGN.ENUM.MISSING_ZERO_VALUE.CSHARP.defect": "열거형에 0 값을 가진 멤버를 정의하지 않거나, 문제의 소지가 있는 방식으로 정의했습니다.",
  "cschk.DESIGN.EVENT_HANDLER.NON_GENERIC.CSHARP.defect": "void를 반환하며 해당 시그니처에 두 개의 매개 변수(첫 번째는 개체, 두 번째는 EventArgs에 할당될 수 있는 형식)를 포함하는 대리자가 형식에 포함되어 있으며, 포함 어셈블리가 .NET Framework 2.0를 대상으로 합니다.",
  "cschk.DESIGN.FIELD.NOT_DISPOSABLE.CSHARP.defect": "클래스가 System.IDisposable 형식인 인스턴스 필드를 선언하고 구현하지만 클래스가 IDisposable 을 구현하지 않습니다.",
  "cschk.DESIGN.IDISPOSABLE.BAD_PATTERN.CSHARP.defect": "IDisposable이 올바르게 구현되지 않았습니다.",
  "cschk.DESIGN.INDEXER.BAD_TYPE.CSHARP.defect": "public 또는 protected 형식에 System.Int32, System.Int64, System.Object 또는 System.String 이외의 인덱스 형식을 사용하는 public 또는 protected 인덱서가 들어 있습니다.",
  "cschk.DESIGN.INSTANCE_FIELD.VISIBLE.CSHARP.defect": "외부에서 볼 수 있는 형식에 외부에서 볼 수 있는 인스턴스 필드가 있습니다.",
  "cschk.DESIGN.MEMBER_SIGNATURE.NESTED_GENERIC.CSHARP.defect": "외부에서 볼 수 있는 멤버에 중첩된 형식 인수가 포함된 시그니처가 있습니다.",
  "cschk.DESIGN.NATIVE_FIELDS.NOT_DISPOSABLE.CSHARP.defect": "형식이 System.IntPtr 필드, System.UIntPtr 필드 또는 System.Runtime.InteropServices.HandleRef 필드를 참조하지만 System.IDisposable을 구현하지 않습니다.",
  "cschk.DESIGN.NESTED_TYPE.VISIBLE.CSHARP.defect": "외부에서 볼 수 있는 형식에 외부에서 볼 수 있는 형식 선언이 들어 있습니다. 중첩 열거형 및 Protected 형식은 이 규칙에서 예외입니다.",
  "cschk.DESIGN.OVERLOAD_ADD_SUB.MISSING_EQUALS.CSHARP.defect": "public 또는 protected 형식이 같음 연산자를 구현하지 않고 더하기 또는 빼기 연산자를 구현합니다.",
  "cschk.DESIGN.PARAMETER.UNNECESSARY_DERIVED_TYPE.CSHARP.defect": "메소드 선언에 파생 형식인 정식 매개 변수가 포함되어 있고 메소드가 매개 변수의 기본 형식인 멤버만 호출합니다.",
  "cschk.DESIGN.PINVOKE_METHODS.INCORRECT_CLASS.CSHARP.defect": "메소드가 플랫폼 호출 서비스를 사용하여 비관리 코드에 액세스하며 NativeMethods 클래스 중 하나의 멤버가 아닙니다.",
  "cschk.DESIGN.PROPERTY.WRITE_ONLY.CSHARP.defect": "public 또는 protected 속성에 set 접근자는 있지만 get 접근자가 없습니다.",
  "cschk.DESIGN.REF_PARAMETER.OBJECT.CSHARP.defect": "외부에서 볼 수 있는 메소드에 System.Object 형식의 참조 매개 변수가 포함되어 있습니다.",
  "cschk.DESIGN.SEALED_CLASS.PROTECTED_MEMBER.CSHARP.defect": "public 형식이 sealed 이면서 보호된 멤버나 보호된 중첩 형식을 선언합니다",
  "cschk.DESIGN.STATIC_CLASS.NOT_SEALED.CSHARP.defect": "public 또는 protected 형식이 정적 멤버만 포함하며 sealed(NotInheritable) 또는 static 한정자로 선언되지 않았습니다.",
  "cschk.DESIGN.STRING_METHOD.URI.CSHARP.defect": "메소드의 이름에 \"uri\", \"Uri\", \"urn\", \"Urn\", \"url\" 또는 \"Url\"이 포함되어 있고 메소드에서 문자열을 반환합니다.",
  "cschk.DESIGN.STRING_PARAMETER.URI.CSHARP.defect": "형식이 이름에 \"uri\", \"Uri\", \"urn\", \"Urn\", \"url\" 또는 \"Url\"가 포함된 문자열 매개 변수가 있는 메소드를 선언한 다음 System.Uri 매개 변수를 사용하는 해당 오버로드를 선언하지 않습니다.",
  "cschk.DESIGN.STRING_PROPERTY.URI.CSHARP.defect": "형식이 이름에 \"uri\", \"Uri\", \"urn\", \"Urn\", \"url\" 또는 \"Url\"이 포함된 문자열 속성을 선언합니다.",
  "cschk.DESIGN.STRING_URI_METHOD.IMPROPER_OVERLOAD.CSHARP.defect": "형식이 문자열 매개 변수를 System.Uri 매개 변수로만 바꾸어서 다른 메소드 오버로드를 선언하고, 문자열 매개 변수를 사용하는 오버로드가 Uri 매개 변수를 사용하는 오버로드를 호출하지 않습니다.",
  "cschk.DESIGN.TYPE.OUTSIDE_NAMESPACE.CSHARP.defect": "public 또는 protected 형식이 명명된 네임스페이스 외부에 정의되어 있습니다.",
  "cschk.DISABLED_HEADER_CHECKING.CSHARP.defect": "헤더 검사 기능을 끄면 애플리케이션이 헤더 변조 공격에 취약해집니다.",
  "cschk.DISABLED_VIEW_STATE_MAC.CSHARP.defect": "EnableViewStateMac을 거짓으로 설정하는 것은 취약합니다.",
  "cschk.DO_NOT_INSTANTIATE_OBJECTS_IN_LOOPS.CSHARP.defect": "Loop 안에서 오브젝트를 생성했습니다.",
  "cschk.DO_NOT_THROW_NULL_REFERENCE_EXCEPTION.CSHARP.defect": "throw new NullReferenceException()을 사용했습니다.",
  "cschk.DO_NOT_USE_HARD_CODING.IP_ADDRESS.CSHARP.defect": "IP 주소를 하드코딩하여 사용했습니다.",
  "cschk.EMPTY_CATCH_BLOCK.CSHARP.defect": "catch 블록의 내용이 비어 있습니다.",
  "cschk.EMPTY_FINALLY_BLOCK.CSHARP.defect": "finally 블록이 비어있습니다.",
  "cschk.EMPTY_WHILE_EMBEDDED_STATEMENT.CSHARP.defect": "while 문의 내부 블록이 비어있습니다.",
  "cschk.EXPOSURE_ERROR_MESSAGE.CSHARP.defect": "예외 처리 중에 예외 정보를 출력합니다.",
  "cschk.FORBIDDEN.COUNT_EQUALS_ZERO.CSHARP.defect": "Collection 객체에 Count()==0 혹은 Count()!=0 을 사용했습니다.",
  "cschk.FORBIDDEN.INDEXOF_STRING.CSHARP.defect": "IndexOf(String)을 사용했습니다.",
  "cschk.FORBIDDEN.MONITOR_PULSE.CSHARP.defect": "Monitor.Pulse()를 사용했습니다.",
  "cschk.FORMATTING.BETWEEN_MEMBER_DEFINITION.MISSING_BLANK_LINE.CSHARP.defect": "메소드 정의와 속성 정의 간에 최소 하나 이상의 빈 줄을 추가해야 합니다.",
  "cschk.FORMATTING.COMMENT.BLOCK_OF_ASTERISK.CSHARP.defect": "주석문을 감싸는 별표(*) 주석을 사용했습니다.",
  "cschk.FORMATTING.COMMENT.LOWERCASE_FIRST_LETTER.CSHARP.defect": "주석의 영문 문장이 소문자로 시작했습니다.",
  "cschk.FORMATTING.COMMENT.MISSING_PERIOD.CSHARP.defect": "주석의 문장끝에 마침표를 사용하지 않았습니다.",
  "cschk.FORMATTING.COMMENT.MISSING_SPACE_AFTER_DELIMITER.CSHARP.defect": "주석 구분자(//)와 주석문 사이에 공백이 없습니다.",
  "cschk.FORMATTING.CONTINUATION_LINE.BAD_INDENTATION.CSHARP.defect": "연속되는 줄에 들여쓰기를 하지 않았습니다.",
  "cschk.FORMATTING.LINQ.QUERY_CLAUSE_ALIGNMENT.CSHARP.defect": "LINQ 쿼리문 안에서 from 절 밑에 쿼리 절을 정렬해야 합니다.",
  "cschk.FORMATTING.LINQ.WHERE_CLAUSE_AFTER_OTHERS.CSHARP.defect": "LINQ 쿼리문 안에서 다른 쿼리절을 사용하기 전에 'where' 절을 사용해야 합니다.",
  "cschk.GLOBAL.HARD_CODED_STRING.LOCALE_DEPENDANT.CSHARP.defect": "메소드에서 특정 시스템 폴더 경로의 일부를 나타내는 문자열 리터럴을 사용합니다.",
  "cschk.HARDCODED_PASSWORD.CSHARP.defect": "하드코드된 비밀번호를 사용합니다.",
  "cschk.HARDCODED_PASSWORD_COMPARISON.CSHARP.defect": "하드코드된 비밀번호와 비교합니다.",
  "cschk.HASH.INSECURE_HASH_ITERATION_COUNT.CSHARP.defect": "해시 반복 횟수가 충분하지 않습니다.",
  "cschk.HASH.PREDICTABLE_SALT.CSHARP.defect": "솔트값이 쉽게 추측됩니다",
  "cschk.HTML_INPUT_HIDDEN.CSHARP.defect": "금지된 HtmlInputHidden를 사용했습니다.",
  "cschk.IMPROPER_AUTHORIZATION.CSHARP.defect": "부적절한 인증이 사용되었습니다.",
  "cschk.IMPROPER_SIGNATURE.CSHARP.defect": "서명 확인없이 JWT 토큰을 사용합니다.",
  "cschk.INADEQUATE_RSA_PADDING.CSHARP.defect": "OAEP 패딩 없이 RSA 암호화를 사용하는 것은 암호를 약하게 만듭니다.",
  "cschk.INTEROPERABILITY.AUTO_LAYOUT.COM_VISIBLE.CSHARP.defect": "COM(Component Object Model) 노출 형식은 LayoutKind.Auto로 설정한 System.Runtime.InteropServices.StructLayoutAttribute 특성으로 표시되어 있습니다.",
  "cschk.INTEROPERABILITY.CLASS_INTERFACE.AUTO_DUAL.CSHARP.defect": "COM(Component Object Model) 노출 형식은 ClassInterfaceType의 AutoDual 값으로 설정한 ClassInterfaceAttribute 특성으로 표시되어 있습니다.",
  "cschk.INTEROPERABILITY.COM_INTERFACE.OVERLOAD_METHOD.CSHARP.defect": "COM(Component Object Model) 노출 인터페이스는 오버로드된 메소드를 선언합니다.",
  "cschk.INTEROPERABILITY.COM_METHOD.EXTERNALLY_VISIBLE.CSHARP.defect": "System.Runtime.InteropServices.ComRegisterFunctionAttribute 또는 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 특성으로 표시된 메소드를 외부에서 볼 수 있습니다.",
  "cschk.INTEROPERABILITY.COM_METHOD.MISMATCH.CSHARP.defect": "형식에서 System.Runtime.InteropServices.ComRegisterFunctionAttribute 특성으로 표시된 메소드를 정의하지만 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 특성으로 표시된 메소드를 선언하지 않거나 그 반대의 경우입니다.",
  "cschk.INTEROPERABILITY.COM_SOURCE_INTERFACE.NOT_IDISPATCH.CSHARP.defect": "형식이 ComSourceInterfacesAttribute 속성으로 표시되었고, 특정된 인터페이스의 InterfaceTypeAttribute 속성의 값이 IntefaceIsDispatch 가 아닙니다.",
  "cschk.INTEROPERABILITY.COM_VISIBLE_TYPE.NOT_VISIBLE_BASE.CSHARP.defect": "외부에서 볼 수 있는 형식에 변경 가능한 참조 형식인, 외부에서 볼 수 있는 읽기 전용 필드가 포함되었습니다.",
  "cschk.INTEROPERABILITY.GET_LAST_ERROR.NOT_AFTER_PINVOKE.CSHARP.defect": "Marshal.GetLastWin32Error 메소드 또는 이와 동일한 기능의 Win32 GetLastError 함수를 호출했으며 직전의 호출이 플랫폼 호출 메소드에 대한 호출이 아닙니다.",
  "cschk.INTEROPERABILITY.PINVOKE.VISIBLE.CSHARP.defect": "public 형식의 public 또는 protected 메소드에 System.Runtime.InteropServices.DllImportAttribute 특성이 있습니다.",
  "cschk.JUMP_AT_THE_END_OF_LOOP.CSHARP.defect": "반복문 마지막에 분기문(break,continue)을 사용했습니다.",
  "cschk.KEY_MANAGEMENT.EMPTY_HMAC_KEY.CSHARP.defect": "HMAC의 비밀값이 비어있습니다.",
  "cschk.KEY_MANAGEMENT.HARDCODED_ENCRYPTION_KEY.CSHARP.defect": "대칭 암호화 함수의 비밀키가 하드코드 되었습니다.",
  "cschk.KEY_MANAGEMENT.HARDCODED_HMAC_KEY.CSHARP.defect": "HMAC의 비밀값이 하드코드 되었습니다.",
  "cschk.LEAK.SYSTEM_INFORMATION.CSHARP.defect": "시스템 정보 유출이 있습니다.",
  "cschk.MISSING.BRACES.FOR_LOOP.CSHARP.defect": "for문에 중괄호를 사용하지 않았습니다.",
  "cschk.MISSING.BRACES.WHILE_LOOP.CSHARP.defect": "while문에 중괄호를 사용하지 않았습니다.",
  "cschk.MISSING.BREAK.CASE.CSHARP.defect": "switch문 안에 모든 case block 에는 최종적으로 break가 있어야 합니다.",
  "cschk.MISSING.DEFAULT.SWITCH.CSHARP.defect": "switch문에 default case가 포함되지 않았습니다.",
  "cschk.MISSING_ATTRIBUTE.SERIALIZABLE.CSHARP.defect": "선언되어야 할 속성(attribute)이 선언되지 않았습니다.",
  "cschk.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.CSHARP.defect": "위험한 기능을 수행할 때 사전에 인증을 수행하지 않습니다.",
  "cschk.MISSING_BLANK_LINE_BEFORE_COMMENT.CSHARP.defect": "주석이 별도의 줄이 아닌, 코드가 포함된 줄 끝에 있습니다.",
  "cschk.MISSING_LOGIN_CONTROL.CSHARP.defect": "로그인 루틴은 반복 구문 등을 통해 수행 횟수가 제어되어야 합니다.",
  "cschk.MISSING_PARENTHESIS_IN_EXPRESSION.CSHARP.defect": "괄호를 사용하여 식의 절을 명확히 구분해야 합니다.",
  "cschk.NAMING.ENUM.INCORRECT_PREFIX.CSHARP.defect": "열거형에 이름이 열거형의 형식 이름으로 시작하는 멤버가 들어 있습니다.",
  "cschk.NAMING.IDENTIFIER.INCORRECT_PREFIX.CSHARP.defect": "외부에 노출되는 인터페이스의 이름이 대문자 \"I\"로 시작하지 않습니다. 또는 외부에 노출되는 형식 또는 메소드의 제네릭 형식 매개 변수 이름이 대문자 \"T\"로 시작하지 않습니다.",
  "cschk.NAMING.IDENTIFIERS.CASEINSENSITIVE_SAME.CSHARP.defect": "소문자로 변환했을 때 두 형식, 멤버, 매개 변수 또는 정규화된 네임스페이스의 이름이 서로 같습니다.",
  "cschk.NAMING.LINQ.NOT_USED_PASCAL_CASING.CSHARP.defect": "LINQ 쿼리문 안에서 익명 형식의 속성 이름에 별칭을 부여할 때, 파스칼 표기법을 사용해야 합니다.",
  "cschk.NULL_ARGUMENT.EQUALS.CSHARP.defect": "Equals 메소드의 인자가 null입니다.",
  "cschk.OBJECT_MODEL_VIOLATION.CSHARP.defect": "객체 모델을 위반했습니다. Equals와 GetHashCode 메소드를 동시에 오버라이드 해야 합니다.",
  "cschk.OBSOLETE.CSHARP.defect": "SqlClientPermission 객체 생성자의 두 번째 인자를 사용했습니다.",
  "cschk.OVERLY_BROAD_CATCH.CSHARP.defect": "예외 처리를 세분화하지 않았습니다.",
  "cschk.PASSWORD.EMPTY_PASSWORD.CSHARP.defect": "비밀번호가 빈 값입니다.",
  "cschk.PASSWORD.HARDCODED_PASSWORD.CSHARP.defect": "비밀번호가 하드코드 되었습니다.",
  "cschk.PASSWORD.PBE_EMPTY_PASSWORD.CSHARP.defect": "비밀번호 기반 암호화 함수의 비밀번호가 빈 값입니다.",
  "cschk.PASSWORD.PBE_HARDCODED_PASSWORD.CSHARP.defect": "비밀번호 기반 암호화 함수의 비밀번호가 하드코드 되었습니다.",
  "cschk.PASSWORD_IN_COMMENT.CSHARP.defect": "비밀번호가 주석내에 포함되어 있습니다.",
  "cschk.PERFORMANCE.REFERENCE_TYPE.STATIC_CONSTRUCTOR.CSHARP.defect": "참조 형식에서 명시적인 정적 생성자를 선언합니다.",
  "cschk.POOR_LOGGING_PRACTICE.CSHARP.defect": "로그를 보안상 취약한 방법으로 남깁니다.",
  "cschk.PORTABILITY_FLAW.FILE_SEPARATOR.CSHARP.defect": "하드코딩된 파일 구별자를 사용했습니다.",
  "cschk.PRACTICE.ARRAY_DECLARATION.COMPLICATED_SYNTAX.CSHARP.defect": "배열 선언시, 초기화에 복잡한 문법을 사용했습니다.",
  "cschk.PRACTICE.BOOLEAN_EXPRESSION.USED_AMP_AND_BITWISE_OR.CSHARP.defect": "조건문 안에 '&' 나 '|'을 사용했습니다.",
  "cschk.PRACTICE.CALL_TO_STATIC_MEMBER.WITH_DERIVED_CLASS_NAME.CSHARP.defect": "상위 클래스의 static 멤버를 하위 클래스의 이름을 통해 호출하지 말아야 합니다.",
  "cschk.PRACTICE.DELEGATE_TYPE.BAD_INSTANCE_CREATION.CSHARP.defect": "delegate타입의 객체 생성 시, 간결한 문법을 사용해야 합니다.",
  "cschk.PRACTICE.FINALLY_BLOCK.RESOURCE_DISPOSITION_ONLY.CSHARP.defect": "Finally 블록 안에 Dispose 메소드를 호출하는 문장만 있다면, using 문을 대신 사용해야 합니다.",
  "cschk.PRACTICE.LINQ.NOT_USED_IMPLICIT_TYPING.CSHARP.defect": "LINQ 쿼리문 안에서 쿼리 변수 및 범위 변수를 선언할 때 암시적 형식을 사용해야 합니다.",
  "cschk.PRACTICE.LOOP_VARIABLE.NOT_USED_IMPLICIT_TYPING.CSHARP.defect": "'for'문이나 'foreach'문의 루프변수 타입으로 암시적 타입을 사용해야 합니다.",
  "cschk.PRACTICE.OBJECT_INITIALIZATION.NOT_USED_INITIALIZER.CSHARP.defect": "객체 생성을 간략화하기 위해, 객체 initializers를 사용해야 합니다.",
  "cschk.PRACTICE.OBJECT_INSTANTIATION.NOT_USED_IMPLICIT_TYPING.CSHARP.defect": "객체 생성 시, 암시적 타입이 포함된 간결한 형태를 사용해야 합니다.",
  "cschk.PRACTICE.OBVIOUS_VARIABLE_TYPE.NOT_USED_IMPLICIT_TYPING.CSHARP.defect": "선언하는 변수의 타입이 명확하거나 중요하지 않은 경우, 암시적 타입을 사용해야 합니다.",
  "cschk.PRACTICE.STRINGBUILDER.SHORT_STRING_CONCATENATION.CSHARP.defect": "간단한 문자열을 합치기 위해서, + 연산자를 사용하는 것이 StringBuilder.Append 메소드를 호출하는 것보다 좋습니다.",
  "cschk.PRACTICE.TYPE.USED_UNSIGNED_TYPE.CSHARP.defect": "부호 없는 타입 대신에 int 타입을 사용해야 합니다.",
  "cschk.PRIVACY_VIOLATION_SHOULDER_SURFING.CSHARP.defect": "민감한 정보는 UI가 그려질 때 숨겨져야 합니다.",
  "cschk.PRIVATE_COLLECTION.CSHARP.defect": "특정 클래스의 컬렉션 타입의 private 필드 들이 private이 아닌 메소드에 의해서 레퍼런스가 반환되는 경우를 검출합니다.",
  "cschk.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.CSHARP.defect": "public 메소드로부터 전달된 데이터가 private으로 선언된 배열에 할당됩니다.",
  "cschk.SAQT.M.CS.7183.defect": "이 함수의 순환 복잡도는 {0}이며, 제한값은 {1}입니다. 순환 복잡도를 제한값 이하로 낮추도록 합니다.",
  "cschk.SAQT.M.CS.7186.defect": "이 함수의 최대 블록 중첩 깊이는 {0}이며, 제한값은 {1} 입니다. 최대 블록 중첩 깊이를 제한값 이하로 낮추도록 합니다.",
  "cschk.SAQT.M.CS.7192.defect": "이 함수의 파라미터 수는 {0}이며, 제한값은 {1}입니다. 파라미터 수를 제한값 이하로 낮추도록 합니다.",
  "cschk.SAQT.M.CS.7198.defect": "이 함수의 실행 가능 라인 수는 {0}이며, 제한값은 {1}입니다. 실행 가능 라인 수를 제한값 이하로 낮추도록 합니다.",
  "cschk.SECURITY.ARRAY_FIELD.READ_ONLY.CSHARP.defect": "배열을 보유하는 public 또는 protected 필드가 읽기 전용으로 선언되었습니다.",
  "cschk.SECURITY.ATTRIBUTE.SUPPRESSED_SECURITY.CSHARP.defect": "public 또는 protected 형식이나 멤버에 System.Security.SuppressUnmanagedCodeSecurityAttribute 특성이 있습니다.",
  "cschk.SECURITY.LINK_DEMAND.NOT_IDENTICAL.CSHARP.defect": "public 형식의 public 또는 protected 메소드가 메소드를 재정의하거나 인터페이스를 구현하고 이 메소드의 링크 요청이 인터페이스 또는 가상 메소드의 링크 요청과 같지 않습니다.",
  "cschk.SECURITY.MUTABLE_REFERENCE_TYPE.READ_ONLY.CSHARP.defect": "외부에서 볼 수 있는 형식에 변경 가능한 참조 형식인, 외부에서 볼 수 있는 읽기 전용 필드가 포함되었습니다.",
  "cschk.SECURITY.PRIVATE_INTERFACE_METHOD.NOT_SEALED.CSHARP.defect": "상속할 수 있는 public 형식에서 internal(Visual Basic의 경우 Friend) 인터페이스의 재정의 가능한 메소드 구현을 제공합니다.",
  "cschk.SECURITY.SERIALIZATION.INSECURE_CONSTRUCTOR.CSHARP.defect": "System.Runtime.Serialization.ISerializable 인터페이스를 구현한 클래스가 대리자(delegate) 또는 인터페이스가 아니며, 부분 신뢰 호출자를 허용하는 어셈블리에 선언되어 있습니다.",
  "cschk.SECURITY.TYPE_LINK_DEMAND.NO_INHERITANCE_DEMAND.CSHARP.defect": "public unsealed 형식이 링크 요청으로 보호되고, 재정의 가능한 메소드가 있으며, 형식과 메소드가 모두 상속 요청으로 보호되지 않습니다.",
  "cschk.THROW_NEW_EXCEPTION_IN_CATCH.CSHARP.defect": "캐치(catch)문에서 새로운 예외 객체를 생성하고 쓰로우(throw)합니다.",
  "cschk.TO_STRING_ON_ARRAY.CSHARP.defect": "배열 객체에 대해 ToString 메소드를 사용했습니다.",
  "cschk.TYPE_CHECK_WITH_NAME.CSHARP.defect": "타입의 이름으로 타입을 비교하고 있습니다.",
  "cschk.UNPULSED_OBJECT.CSHARP.defect": "Monitor.PulseAll()과 Wait()은 같이 사용해야 합니다.",
  "cschk.UNUSED.FORMAL_PARAMETER.CSHARP.defect": "메소드의 파라미터 중 사용하지 않는 변수가 있습니다.",
  "cschk.UNUSED.LOCAL_VARIABLE.CSHARP.defect": "사용하지 않는 지역 변수가 있습니다.",
  "cschk.UNUSED.PRIVATE_FIELD.CSHARP.defect": "사용하지 않는 private 필드가 있습니다.",
  "cschk.UNVERIFIABLE_NATIVE_INVOCATION.CSHARP.defect": "검증되지 않은 DLL을 import 되었습니다.",
  "cschk.USAGE.CONSTRUCTOR.VIRTUAL_METHOD_CALL.CSHARP.defect": "unsealed 형식의 생성자에서 해당 클래스에 정의된 가상 메소드를 호출합니다.",
  "cschk.USAGE.DISPOSABLE_TYPE.MISSING_FINALIZER.CSHARP.defect": "System.IDisposable을 구현하고, 관리되지 않는 리소스의 사용을 암시하는 필드를 포함하는 형식이 Object.Finalize에 설명된 종료자를 구현하지 않습니다.",
  "cschk.USAGE.DISPOSE.GC_SUPPRESS_FINALIZE.CSHARP.defect": "메소드에서 GC.SuppressFinalize를 호출하면서 이것(Visual Basic의 경우 Me)이 아닌 다른 개체를 전달합니다.",
  "cschk.USAGE.ENUM.FLAGS_ATTRIBUTE.CSHARP.defect": "외부에서 볼 수 있는 열거형이 FlagsAttribute로 표시되어 있고, 2의 거듭제곱 또는 열거형에 정의된 다른 값의 조합이 아닌 값이 하나 이상 들어 있습니다.",
  "cschk.USAGE.FIELDS.NON_SERIALIZABLE.CSHARP.defect": "serialize할 수 없는 형식의 인스턴스 필드가 serialize할 수 있는 형식에 정의되었습니다.",
  "cschk.USAGE.ISERIALIZABLE.BAD_IMPLEMENTATION.CSHARP.defect": "System.Runtime.Serialization.ISerializable 인터페이스를 상속하는 형식에 선언된 인스턴스 필드는 serialization 프로세스에 자동으로 포함되지 않습니다.",
  "cschk.USAGE.NAN.INCORRECTLY_TESTED.CSHARP.defect": "식이 F:System.Single.Nan 또는 F:System.Double.Nan에 대한 값을 테스트합니다.",
  "cschk.USAGE.OVERLOAD_EQ.MISSING_EQUALS.CSHARP.defect": "public 형식이 같음 연산자를 구현하지만 Object.Equals를 재정의하지 않습니다.",
  "cschk.USAGE.OVERLOAD_OPERATOR.NO_ALTERNATE.CSHARP.defect": "연산자 오버로드가 감지되었으며 예상되는 이름의 대체 메소드를 찾을 수 없습니다.",
  "cschk.USAGE.UNSEALED_PRIVATE_METHOD.DIFFERENT_ACCESSIBILITY.CSHARP.defect": "unsealed 형식의 private 메소드에 기본 형식에서 선언된 public 메소드와 동일한 시그니처가 있습니다. private 메소드가 final이 아닙니다.",
  "cschk.USE_ONE_DECLARATION_PER_LINE.CSHARP.defect": "한 줄에 여러 선언문을 작성했습니다.",
  "cschk.USE_ONE_STATEMENT_PER_LINE.CSHARP.defect": "한 줄에 여러 문장을 작성했습니다.",
  "cschk.USING_APPLICATION_EXIT.CSHARP.defect": "Application.Exit()을 사용했습니다.",
  "cschk.WEAK_CRYPTOGRAPHIC_HASH.CSHARP.defect": "안전하지 않은 해시값을 생성했습니다.",
  "cschk.WEAK_ENCRYPTION.DES.CSHARP.defect": "안전하지 않은 암호화 알고리즘을 사용했습니다.",
  "cschk.WEAK_ENCRYPTION.INSECURE_INITIALIZATION_VECTOR.CSHARP.defect": "초기화 벡터 값이 하드 코드 되었습니다.",
  "cschk.WEAK_ENCRYPTION.INSECURE_MODE_OF_OPERATION.CSHARP.defect": "ECB 모드는 취약합니다.",
  "cschk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.CSHARP.defect": "불충분한 키 크기를 암호화 알고리즘에 사용했습니다.",
  "cschk.WEAK_SERVER_CERTIFICATES.CSHARP.defect": "모든 인증서를 별도의 유효성 검증 없이 신뢰합니다.",
  "cschk.WEAK_SIGNATURE.INSUFFICIENT_KEY_SIZE.CSHARP.defect": "전자 서명을 위한 키의 크기가 충분하지 않습니다.",
  "cschk.WEAK_XML_TRANSFORMERS_SECURITY.CSHARP.defect.assign": ".Net Framework {0} 버전에서 {1}을 new XmlUrlResolver()로 설정합니다.",
  "cschk.WEAK_XML_TRANSFORMERS_SECURITY.CSHARP.defect.setting": ".Net Framework {0} 버전에서 XmlReader.Create 함수의 2번째 인자에 XmlReaderSettings을 사용하여 DtdProcessing.Parse와 XmlUrlResolver 전달합니다.",
  "cschk.WEAK_XML_TRANSFORMERS_SECURITY.CSHARP.defect.use": ".Net Framework {0} 버전에서 {1}를 사용합니다.",
  "csrex.COMMON.0_can_be_a_zero": "{0} 은(는) 0 일 가능성이 있습니다!",
  "csrex.COMMON.0_dereferenced_here_by_1": "여기에서 {0} 이(가) {1} 에 의해 참조되었습니다!",
  "csrex.COMMON.0_is_1": "{0} 은(는) {1} 로 설정되었습니다.",
  "csrex.COMMON.0_is_assumed_as_null": "{0} 은(는) Null 로 가정합니다.",
  "csrex.COMMON.0_is_assumed_as_zero": "{0} 은(는) 0이라고 가정합니다.",
  "csrex.COMMON.0_is_false": "{0} 은(는) false로 설정되었습니다.",
  "csrex.COMMON.0_is_true": "{0} 은(는) true로 설정되었습니다.",
  "csrex.COMMON.0_might_cause_sql_injection": "{0} 은(는) SQL 삽입 취약점을 발생시킬 수 있습니다.",
  "csrex.COMMON.ASSUME": "가정됨",
  "csrex.COMMON.EVALED": "계산됨",
  "csrex.COMMON.EXCEPTION_0": "예외 {0}",
  "csrex.COMMON.LOOP": "반복",
  "csrex.COMMON.RANDOM": "랜덤",
  "csrex.COMMON.arithmetic_overflow_for_0_evaluated_to_1_which_is_bigger_than_2_max_3": "{0} 에 대해 산술적 오버플로가 발생합니다. 계산 결과는 {1} 이며 {2} 형식의 최댓값 {3} 을(를) 벗어납니다.",
  "csrex.COMMON.arithmetic_overflow_for_0_evaluated_to_1_which_is_bigger_than_2_min_3": "{0} 에 대해 산술적 오버플로가 발생합니다. 계산 결과는 {1} 이며 {2} 형식의 최솟값 {3} 을(를) 벗어납니다.",
  "csrex.COMMON.call_to_0": "{0} 을(를) 호출합니다.",
  "csrex.COMMON.constant_integer": "상수인 정수",
  "csrex.COMMON.controller_entrance": "컨트롤러 {0} 의 동작 메소드 {1} 이(가) 수행됩니다.",
  "csrex.COMMON.dangerous_downcast_from_0_to_1": "{0} (으)로부터 {1} (으)로 위험한 다운캐스트가 수행되었습니다.",
  "csrex.COMMON.dereferenced_in_callee": "호출된 함수 안에서 참조되었습니다.",
  "csrex.COMMON.divided_by_zero_in_callee": "호출된 함수 안에 0으로 나누는 연산이 존재합니다.",
  "csrex.COMMON.escaped_by_exception": "예외가 발생하여 범위를 벗어납니다.",
  "csrex.COMMON.escaped_by_exception_from_0": "{0} (으)로부터 예외가 발생하여 범위를 벗어납니다.",
  "csrex.COMMON.evaled_as_zero": "0으로 계산됩니다.",
  "csrex.COMMON.file_delete": "파일을 지웁니다.",
  "csrex.COMMON.file_exist_check": "파일의 존재 유무를 체크합니다.",
  "csrex.COMMON.file_read": "파일을 읽습니다.",
  "csrex.COMMON.file_write": "파일을 씁니다.",
  "csrex.COMMON.from_method_0": "메소드 {0} (으)로부터",
  "csrex.COMMON.go_to_line_0": "{0} 번 줄로 진행합니다.",
  "csrex.COMMON.hardcoded_string": "하드코딩된 문자열",
  "csrex.COMMON.infinite_recursive_call_0_might_happen_here": "여기에서 종료되지 않을 가능성이 있는 재귀호출 {0} 이(가) 일어납니다.",
  "csrex.COMMON.iterator_api_misuse_here": "iterator API의 잘못된 사용이 발견되었습니다.",
  "csrex.COMMON.null_aliased_to_0": "Null이 {0} 에 지정되었습니다.",
  "csrex.COMMON.null_literal_found": "Null 리터럴이 발견되었습니다.",
  "csrex.COMMON.null_returned": "Null이 반환되었습니다.",
  "csrex.COMMON.race_condition_error_toctou_for_0_possible_here": "{0} 에 대해 TOCTOU 경쟁조건이 발견되었습니다.",
  "csrex.COMMON.resource_dangled": "더 이상 리소스를 참조할 수 없습니다.",
  "csrex.COMMON.resource_escaped": "리소스가 범위 밖으로 빠져나갑니다.",
  "csrex.COMMON.resource_type_0_allocated": "{0} 인 리소스 형식이 할당됩니다.",
  "csrex.COMMON.sign_then_seal_api_misuse_here": "직렬화 메소드의 호출 순서가 잘못되었습니다.",
  "csrex.COMMON.taint_propag.indexer.base": "추적 중인 값 {0}이 클래스 {1}의 인덱서에 사용되어 해당 베이스 객체 {2}을 추적합니다.",
  "csrex.COMMON.taint_propag.indexer.base.return": "인덱서를 사용하여 추적 중인 값 {0}에 접근했으므로 그 결과값을 추적합니다.",
  "csrex.COMMON.taint_propag.property.base": "추적 중인 값 {0}이 클래스 {1}의 속성 {2}에 지정되어 해당 베이스 객체 {3}을 추적합니다.",
  "csrex.COMMON.taint_sink.field": "추적 중인 값이 클래스 {0}의 필드 {1}에 지정되었으므로 추적 규칙을 위반했습니다.",
  "csrex.COMMON.taint_sink.property": "추적 중인 값이 클래스 {0}의 속성 {1}에 지정되었으므로 추적 규칙을 위반했습니다.",
  "csrex.COMMON.taint_source.field": "추적 규칙 옵션에 따라 클래스 {0}의 필드 {1}을 검출했으므로 추적하기 시작합니다.",
  "csrex.COMMON.taint_source.indexer": "추적 규칙 옵션에 따라 클래스 {0}의 인덱서를 검출했으므로 추적하기 시작합니다.",
  "csrex.COMMON.taint_source.property": "추적 규칙 옵션에 따라 클래스 {0}의 속성 {1}을 검출했으므로 추적하기 시작합니다.",
  "csrex.COMMON.tainted_value_aliased.custom_deconstruct": "추적 중인 값이 클래스 {0}에 정의된 사용자 정의 분해 메소드를 통해 {1}번째 요소로 추출되었습니다.",
  "csrex.COMMON.tainted_value_aliased.tuple_deconstruct": "추적 중인 값이 튜플의 {0}번째 요소를 통해 {1}에 지정되었습니다.",
  "csrex.COMMON.tainted_value_aliased_to_0": "오염된 값이 {0} 에 지정되었습니다.",
  "csrex.COMMON.tainted_value_appended": "오염된 값이 덧붙여집니다.",
  "csrex.COMMON.tainted_value_from_0_against_rule_1": "{0} (으)로부터 전달된 오염된 값이 규칙 {1} 에 위배되었습니다.",
  "csrex.COMMON.tainted_value_go_into_in_callee": "오염된 값이 호출된 함수에 전달됩니다.",
  "csrex.COMMON.tainted_value_reaches_0": "오염된 값이 {0} 에 도달했습니다.",
  "csrex.COMMON.tainted_value_returned": "오염된 값이 반환됩니다.",
  "csrex.COMMON.tainted_value_returned_by_0": "오염된 값이 {0} 매개 변수에 할당되어 함수 외부로 전달됩니다.",
  "csrex.COMMON.toctou_race_condition_detected": "TOCTOU 경쟁조건이 발견되었습니다.",
  "csrex.COMMON.toctou_race_condition_in_callee": "호출된 함수 안에 TOCTOU 경쟁조건이 존재합니다.",
  "csrex.COMMON.transaction_committed_0": "트랜잭션이 커밋되었습니다. ({0})",
  "csrex.COMMON.transaction_incomplete": "불완전한 트랜잭션입니다.",
  "csrex.COMMON.uncontrolled_recursion_in_callee": "호출된 함수 안에 종료하지 않을 가능성이 있는 재귀호출이 존재합니다.",
  "csrex.COMMON.view_entrance": "컨트롤러 {0} 의 동작 메소드 {1} 을(를) 통해 뷰로 이동합니다.",
  "csrex.COMMON.view_link": "뷰 {0} (으)로 이동합니다.",
  "csrex.SAQT.M.CS.7194.defect": "이 함수가 다른 함수에서 호출되는 수는 {0}이며, 제한값은 {1}입니다. 함수 호출자 값을 제한값 이하로 낮추기 바랍니다.",
  "csrex.SAQT.M.CS.7196.defect": "이 함수에서 다른 함수를 호출하는 수는 {0}이며, 제한값은 {1}입니다. 호출 대상 함수 값을 제한값 이하로 낮추도록 합니다.",
  "cstyleCast.description": "C++용 타입 변환(static_cast, const_cast, dynamic_cast and reinterpret_cast)을 사용해야 합니다.",
  "deadpointer.description": "포인터의 사용이 끝났습니다.",
  "deallocDealloc.description": "해제한 포인터를 다시 해제합니다.",
  "deallocret.description": "해제된 메모리를 리턴 혹은 역참조 합니다.",
  "deallocuse.description": "해제된 메모리를 접근합니다.",
  "derefInvalidIterator.description": "반복자에 접근하기 전에 유효성 검사를 해야 합니다.",
  "desc.ABSENCE_CALL_SUPER_IN_ACTIVITY_LIFECYCLE": "Android Activity에서 부모 클래스 메소드 호출 누락 체커는 Activity 클래스의 생명주기 관련 메소드를 오버라이딩할 때 맨 앞에 super의 메소드 호출을 넣지 않은 경우를 검출합니다.",
  "desc.ABSENCE_SET_MEASURED_DIMENSION_IN_OVERRIDE_ON_MEASURE": "onMeasure 메소드 오버라이딩 중 필수 호출 누락 체커는 View.onMeasure() 메소드를 오버라이딩할 때 setMeasuredDimension() 메소드를 호출하지 않는 경우를 검출합니다.",
  "desc.ACCESSING_CONSTANT_INDEX_IN_LOOP": "반복문 내에서 일정한 색인으로 배열 접근 체커는 반복문에서 항상 같은 색인 값을 갖는 배열 접근식을 검출합니다.",
  "desc.ACCESS_CONTROL.ANONYMOUS_LDAP_BINDING.CSHARP": "익명 LDAP 바인딩 사용 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.",
  "desc.ACCESS_CONTROL.AZURE.JS": "권한 없는 Azure 사용 체커는 권한 없는 데이터베이스 접근 체커는 권한을 확인하지 않은 채 검증되지 않은 외부 입력값이 Azure 쿼리에 사용되는 경우를 검출합니다.",
  "desc.ACCESS_CONTROL.DATABASE.JS": "권한 없는 데이터베이스 접근 체커는 권한을 확인하지 않은 채 외부 입력값이 키로 사용된 SQL 구문을 검출합니다.",
  "desc.ACCESS_CV_QUALIFIED_OBJECT_THROUGH_CV_UNQUALIFIED": "const 한정자를 제거하는 캐스팅 사용 체커는 const 객체를 수정하기 위해 const 한정자를 제거하는 캐스팅 사용하는 경우를 검출합니다.",
  "desc.ACCESS_NONEXISTENT_MEMBERS": "존재하지 않는 멤버에 접근하는 멤버-포인터 연산자 체커는 존재하지 않는 멤버에 멤버-포인터 연산자를 사용하여 접근하는 코드를 검출합니다.",
  "desc.ACCOUNT_INFO_IN_CODE.JS": "JavaScript 내에 존재하는 사용자 계정 정보 체커는 JavaScript 내에 사용자 계정 정보를 검출합니다.",
  "desc.ACTION_NOT_RESTRICTED_TO_POST.VBNET": "제한되지 않은 동작 체커는 모든 동작이 허용된 컨트롤러를 검출합니다.",
  "desc.ADDITION_ASSIGNMENT_OPERATOR.FOR_STRING_APPEND.CSHARP": "문자열을 += 연산으로 더함 체커는 연산자 '+='를 사용하여 스트링 값을 더하는 경우를 검출합니다.",
  "desc.ADD_EMPTY_STRING.CSHARP": "빈 문자열을 + 연산에 사용 체커는 빈 문자열을 +연산에 사용할 때 검출합니다.",
  "desc.ALLOCATE_SUFFICIENT_MEMORY": "충분하지 않은 메모리 할당 체커는 객체를 저장하기에 충분하지 않은 크기로 메모리를 할당하는 경우를 검출합니다.",
  "desc.ALREADY_DEFINE_IDENTIFIER": "정의되지 않은 매크로 식별자 사용 체커는 앞서 정의되지 않은 매크로 식별자를 ifdef, ifndef, defined 전처리 구문에 사용한 경우를 검출합니다.",
  "desc.ALREADY_OWNED_POINTER": "이미 소유한 포인터 체커는 이미 스마트 포인터에서 소유한 포인터를 다른 관련 없는 스마트 포인터에 저장하는 경우를 검출합니다.",
  "desc.ALTERNATING_INPUT_OUTPUT": "중간 정리 없이 파일 번갈아 읽고 쓰기 체커는 하나의 파일에 읽고 쓰기를 번갈아서 수행할 때 중간에 버퍼 비우기나 커서 재조정 등을 하지 않는 경우를 검출합니다.",
  "desc.ALWAYS_DISCARD_RESULT_OF_ASSIGN": "대입 연산자 결과 사용 체커는 대입 연산자의 결과값을 다른 식의 일부로 사용하는 경우를 검출합니다.",
  "desc.ALWAYS_SET_POINTER_TO_ZERO": "메모리 해제 후 포인터를 0으로 할당하지 않음 체커는 메모리 해제 후 포인터를 0으로 설정하지 않는 경우를 검출합니다.",
  "desc.ALWAYS_STRICT_MODE.CONFIG": "Strict 모드는 기존의 코드와 호환되며 기존에 무시되던 에러를 throwing하거나 위험한 메소드의 사용을 금지하는 등 소스 코드에 제한을 적용하여 소스 코드를 보다 더 안전하게 동작 시킵니다. Typescript에서는 명시적으로 소스 코드에 use stirct을 사용해도 되지만 alwaysStrict을 통해 stirct 모드가 자동으로 모든 소스 코드에 추가하도록 권장합니다.",
  "desc.ANDROID_ADD_JAVASCRIPT_INTERFACE": "Android에서 JavaScript 사용 체커는 addJavascriptInterface 메소드를 사용하는 코드를 검출합니다.",
  "desc.ANDROID_CLASS_LOADING_HIJACKING": "Android에서의 클래스 로딩 하이재킹 체커는 외부 저장 장치로부터 달빅 클래스 파일을 로드하는 경우를 검출합니다.",
  "desc.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH": "상대 경로에 의한 Android에서의 클래스 로딩 하이재킹 체커는 상대 경로를 사용해 달빅 클래스 파일을 로드하는 경우를 검출합니다.",
  "desc.ANDROID_CONTEXT_SEND_BROADCAST": "전역 브로드캐스트 사용 체커는 Context.sendBroadcast() 메소드 호출을 검출합니다.",
  "desc.ANDROID_GRANT_URI_PERMISSIONS": "암시적 인텐트에 권한 부여 체커는 암시적 인텐트를 사용하면서 추가 권한을 부여하는 경우를 검출합니다.",
  "desc.ANDROID_MANIFEST_AVOID_DEBUGGABLE_ACCESS": "활성화된 Android 매니페스트 내의 debuggable 옵션 체커는 Android 매니페스트 내의 debuggable 옵션을 활성화한 경우를 검출합니다.",
  "desc.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS": "활성화된 Android 매니페스트 내의 exported 옵션 체커는 Android 매니페스트 내의 exported 옵션을 활성화한 경우를 검출합니다.",
  "desc.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS_IN_RECEIVER": "Android 매니페스트 내의 receiver에서 exported 옵션 체커는 Android 매니페스트 내의 receiver에서 exported 옵션을 활성화하거나 없는 경우를 검출합니다.",
  "desc.ANDROID_MANIFEST_AVOID_USING_SHARED_USER_ID": "활성화된 Android 매니페스트 내의 sharedUserId 옵션 체커는 Android 매니페스트 내의 sharedUserId 옵션을 활성화한 경우를 검출합니다.",
  "desc.ANDROID_MANIFEST_INTENT_FILTER_ANY": "Android 인텐트 필터 사용 체커는 매니페스트 XML에서 모든 인텐트 필터 선언 위치를 검출합니다.",
  "desc.ANDROID_MANIFEST_USES_PERMISSION_ANY": "Android 퍼미션 사용 체커는 매니페스트 XML에서 모든 Android 퍼미션 사용 위치를 검출합니다.",
  "desc.ANDROID_MISSING_BROADCASTER_PERMISSION": "Android에서 브로드캐스터 권한 미설정 체커는 브로드캐스터에 리시버를 등록할 때 권한을 설정하지 않은 코드를 검출합니다.",
  "desc.ANDROID_PERMISSION_CHECK_BYPASS": "Android 권한 검사 우회 체커는 Context.checkCallingOrSelfPermission() 메소드 호출을 검출합니다.",
  "desc.ANDROID_RECEVIED_SSL_ERROR": "Android 보안 경고 알림 체커는 onReceivedSslError() 메소드에서 handler.proceed() 메소드를 별도의 분기 처리 없이 호출하는 코드를 검출합니다.",
  "desc.ANDROID_UNSAFE_HOSTNAME_VERIFICATION": "Android에서 안전하지 않은 호스트 이름 확인 체커는 HostnameVerifier 인터페이스에서 verify 함수의 리턴값을 true로만 작성한 코드를 검출합니다.",
  "desc.ANDROID_UNSAFE_HOSTNAME_VERIFICATION.KOTLIN": "Android에서 안전하지 않은 호스트 이름 확인 체커는 HostnameVerifier 인터페이스에서 verify 함수의 리턴값을 true로만 작성한 코드를 검출합니다.",
  "desc.ANDROID_WEB_SETTING_JAVA_SCRIPT": "WebView에서 위험한 JavaScript 허용 체커는 WebSettings.setJavaScriptEnabled() 메소드를 사용하여 JavaScript 실행을 허용하는 경우를 검출합니다.",
  "desc.ANDROID_XSS": "Android 크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.ARGUMENT_NAMES_SHALL_BE_MATCHED": "식별자가 일치하지 않은 매개 변수 체커는 함수 선언과 정의에서 매개 변수의 식별자가 서로 다른 경우를 검출합니다.",
  "desc.ARGUMENT_NAMES_SHALL_BE_MATCHED_GLOBAL": "함수 선언과 정의에서 같은 파라미터의 이름은 동일해야 합니다.",
  "desc.ARGUMENT_NUMBER_MISMATCH": "함수 매개 변수의 정의와 선언의 불일치 체커는 함수를 호출할 때 인자의 수가 정의된 매개 변수의 수와 일치하지 않는 코드를 검출합니다.",
  "desc.ARRAY_ACCESS_ON_POINTER": "배열이 아닌 타입에 배열 접근 연산자 사용 체커는 배열이 안니 일반 포인터 타입 객체에 배열 접근 연산을 사용한 수식을 검출합니다.",
  "desc.ASSEMBLER_INST_USE_ASM_DECLARATION": "asm 선언 없이 어셈블리어 명령어 사용 체커는 asm 선언 내부에 속해있지 않고 사용한 어셈블리어 명령어를 검출합니다.",
  "desc.ASSIGNMENT_OPERATOR_SHOULD_RETURN_REFERENCE": "참조형을 반환하지 않은 복사 대입 연산자 체커는 반환 타입이 참조형이 아닌 복사 대입 연산자의 오버로딩을 검출합니다.",
  "desc.ASSIGN_ADDRESS_TO_WIDER_SCOPE": "상위 영역 변수에 하위 영역 변수 주소 할당 체커는 하위 영역 변수의 주소를 상위 영역의 변수에 할당하는 경우를 검출합니다.",
  "desc.ASSIGN_BASE_CLASS_MEMBERS": "복사 대입 연산자에서 부모 클래스의 대입 연산 호출 누락 체커는 클래스가 상속하고 있는 부모 클래스의 대입 연산 호출을 누락한 복사 대입 연산자를 검출합니다.",
  "desc.ASSIGN_CLASS_MEMBERS": "복사 대입 연산자에서 필드 대입 누락 체커는 클래스가 포함하고 있는 필드 중 하나라도 대입을 누락한 복사 대입 연산자를 검출합니다.",
  "desc.ASSIGN_STRING_TO_CONST_POINTER_CHAR": "const char 포인터 외의 자료형에 문자열 할당 체커는 문자열을 할당 받은 객체의 타입이 const char 포인터가 아닌 경우를 검출합니다.",
  "desc.ASSUMPTIONS_ABOUT_FILE_CREATION": "무작정 파일 열기 체커는 파일을 열 때 기존 파일의 존재 여부를 알지 못하는 방식으로 여는 경우를 검출합니다.",
  "desc.ASYMMETRIC_OPERATOR_MUST_BE_DEFINED_AS_MEMBER": "메소드로 선언하지 않은 비대칭 연산자 체커는 메소드로 선언하는 방법을 사용하지 않은 비대칭 연산자 선언을 검출합니다.",
  "desc.ASYNCHRONOUS_CANCEL_THREADS": "비동기적 스레드 종료 체커는 pthread cancel 타입으로 PTHREAD_CANCEL_ASYNCHRONOUS 인자를 사용하는 코드를 검출합니다.",
  "desc.ATEXIT_HANDLER_CALLS_EXIT": "atexit 핸들러 함수에서 종료 함수 호출 체커는 atexit 핸들러로 등록된 함수에서 _Exit(), exit() 또는 abort() 함수를 호출하는 코드를 검출합니다.",
  "desc.ATOMIC_EXCHANGE_WEAK_SHOULD_BE_IN_LOOP": "atomic_compare_exchange_weak() 함수 실패 체커는 atomic_compare_exchange_weak() 함수를 반복문에 포함시키지 않은 수식을 검출합니다.",
  "desc.AT_LEAST_ONE_CASE_IN_SWITCH_STMT": "switch 구문에 case 절 누락 체커는 switch 구문 내부에서 case 절이나 default 절이 하나도 없는 경우를 검출합니다.",
  "desc.AT_LEAST_ONE_CASE_IN_SWITCH_STMT.MISRA2012": "switch 구문에 case 절 누락(Misra2012) 체커는 switch 구문 내부에서 두 개 이상의 case 절이 없는 경우를 검출합니다.",
  "desc.AT_LEAST_ONE_EXCEPTION_HANDLER": "메인 함수에서 모든 예외 핸들러 누락 체커는 메인 함수 내부에서 모든 예외를 처리할 수 있는 예외 핸들러가 없는 경우를 검출합니다.",
  "desc.AT_MOST_ONE_NON_ABSTRACT_BASE_CLASS": "다이아몬드 문제가 발생하는 상속 관계 체커는 순수 추상 클래스가 아닌 부모 클래스를 2개 이상 상속한 자식 클래스 선언을 검출합니다.",
  "desc.AUTHENTICATION_ATTEMPT_LIMIT": "로그인 입력 횟수 제한 누락 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.",
  "desc.AUTOCOMPLETE_PASSWORD": "비밀번호 필드에 적용된 자동완성 체커는 HTML 폼의 비밀번호 필드가 autocomplete 속성으로 지정된 경우를 검출합니다.",
  "desc.AUTOCOMPLETE_PASSWORD.VBS": "패스워드를 입력 받는 텍스트 박스는 자동완성을 꺼야합니다.",
  "desc.AVOID_AMBIGUOUS_GRAMMAR": "애매한 문법 사용 체커는 함수 스타일 캐스팅과 똑같이 생긴 문법으로 변수를 선언한 경우를 검출합니다.",
  "desc.AVOID_BITWISE_ON_SAME_DATA": "동일한 변수로 비트 및 산술 연산 체커는 동일한 변수를 비트 연산자와 산술 연산자의 피연산자로 사용하는 수식을 검출합니다.",
  "desc.AVOID_CALLING_FINALIZE": "finalize 메소드 직접 호출 금지 체커는 finalize() 메소드를 직접 호출하면 이슈를 검출합니다.",
  "desc.AVOID_CASTING_TO_VIRTUAL_CLASS": "가상 부모 클래스로 캐스팅 체커는 자식 클래스를 가상 부모 클래스로 캐스팅하는 수식을 검출합니다.",
  "desc.AVOID_CATCHING_GENERIC_EXCEPTION": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.",
  "desc.AVOID_CATCHING_GENERIC_EXCEPTION.OBJC": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.",
  "desc.AVOID_CATCHING_GENERIC_EXCEPTION.SWIFT": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.",
  "desc.AVOID_CATCHING_NPE": "NullPointerException을 catch 금지 체커는 NullPointerException 을 catch하는 구문을 검출합니다.",
  "desc.AVOID_CATCHING_THROWABLE": "catch 블록의 Throwable 타입 파라미터 체커는 catch 블록의 파라미터로 Throwable 타입이 존재하면 이슈를 검출합니다.",
  "desc.AVOID_CROSS_SITE_SCRIPTING": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.AVOID_DEADLOCK": "데드락 발생 체커는 사전에 정의된 순서로 뮤텍스를 잠그지 않아 데드락이 발생하는 경우를 검출합니다.",
  "desc.AVOID_DECIMAL_LITERALS_IN_BIG_DECIMAL_CONSTRUCTOR": "java.math.BigDecimal의 인자 실수 타입 체커는 BigDecimal 인자의 타입이 실수이면 검출합니다.",
  "desc.AVOID_DOWNCASTING": "클래스 다운캐스팅 체커는 부모 클래스의 포인터를 자식 클래스로 다운캐스팅 한 수식을 검출합니다.",
  "desc.AVOID_FINAL_LOCAL_VARIABLE": "Final 지역 변수의 초기화 누락 체커는 Final local variable이 선언과 함께 초기화되지 않거나 상수로 초기화될 경우 이슈를 검출합니다.",
  "desc.AVOID_FRIEND_FUNCTION_AND_CLASS": "금지된 friend 사용 체커는 클래스 선언에서 friend 키워드를 사용하는 경우를 검출합니다.",
  "desc.AVOID_GLOBAL_VARIABLES": "전역 변수 사용 체커는 전역 변수를 사용한 경우를 검출합니다.",
  "desc.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS": "인자값의 암시적 변환 체커는 함수를 호출할 때 인자값을 암시적으로 변환해야 하는 경우를 검출합니다.",
  "desc.AVOID_IMPLICIT_CONVERSION_OF_CLASS_TEMPLATE": "연관이 없는 클래스 템플릿간의 암시적 캐스팅 체커는 서로 연관성이 없는 클래스 템플릿 간에 암시적 캐스팅이 발생하는 수식을 검출합니다.",
  "desc.AVOID_INBAND_ERROR_INDICATOR": "대역 내 오류 표시자 사용 체커는 함수 인터페이스를 설계할 때 대역 내 오류 표시자를 사용하는 경우를 검출합니다.",
  "desc.AVOID_INFINITE_LOOP_WHEN_USE_PFM_TRY_CATCH": "PFM_TRY와 PFM_CATCH를 사용할 때 무한루프를 주의해야 합니다.",
  "desc.AVOID_INSTANCEOF_CHECKS_IN_CATCH_CLAUSE": "catch 구문의 인자 값을 instanceof 구문에서 사용 체커는 Catch 구문의 FormalParameter와 같은 이름의 변수에 instanceof 구문이 존재할 경우 이슈를 검출합니다.",
  "desc.AVOID_KEYWORD_AS_MACRO_NAME": "키워드를 매크로 이름으로 사용 체커는 매크로 정의에서 키워드를 이름으로 지정한 경우를 검출합니다.",
  "desc.AVOID_LOSING_EXCEPTION_INFORMATION": "예외 정보 접근 체커는 예외 정보에 접근하는 경우 이슈를 검출합니다.",
  "desc.AVOID_MARKER_INTERFACE.CSHARP": "비어 있는 인터페이스 체커는 빈 인터페이스를 사용하는 경우를 검출합니다.",
  "desc.AVOID_MEMORY_AND_RESOURCE_LEAKS_DURING_SERIALIZATION": "직렬화 도중 발생하는 메모리 및 리소스 누수 체커는 다른 직렬화된 객체에 대한 참조가 없는 데이터를 직렬화할 때 이전에 작성된 java.io.ObjectOutputStream 객체가 이후에 다시 사용되는 코드를 검출합니다.",
  "desc.AVOID_MUTABLE_IN_STRUCT.CSHARP": "구조체 안에 변경 가능한 형식 포함 체커는 구조체의 멤버 중 변경할 수 있는 형식이 포함된 경우를 검출합니다.",
  "desc.AVOID_OUT_PARAMETER.CSHARP": "out 매개 변수 사용 체커는 out 매개 변수를 사용하는 경우를 검출합니다.",
  "desc.AVOID_PARAM_NAME_IN_PROTOTYPE": "함수 포로토타입에 매개 변수 이름 사용 체커는 함수의 프로토타입을 선언할 때 매개 변수의 이름을 명시하는 경우를 검출합니다.",
  "desc.AVOID_PTHREAD_MUTEX_NORMAL": "잘못된 뮤텍스 타입 사용 체커는 PTHREAD_MUTEX_NORMAL 타입의 뮤텍스를 사용하는 경우를 검출합니다.",
  "desc.AVOID_RACE_CONDITION_WHEN_USING_LIBRARY": "라이브러리 함수에서 경쟁 조건 발생 체커는 다중 스레드 환경에서 사용하기에 안전하지 않은 라이브러리 함수를 호출한 경우를 검출합니다.",
  "desc.AVOID_RETHROWING_EXCEPTION": "throw 하는 구문 하나로 catch 블록의 구성 체커는 catch 구문에서 받는 예외의 레퍼런스를 단순히 throw 하는 구문 하나로 catch 블록이 이루어진 경우 이를 검출합니다.",
  "desc.AVOID_ROOT_EXCEPTION.ABAP": "CX_ROOT 예외 처리 체커는 CX_ROOT를 사용한 예외 처리를 검출합니다.",
  "desc.AVOID_SIDE_EFFECT_FROM_FUNCTION_CALL": "함수 호출 시 부수 효과 발생 체커는 함수를 호출할 때 부수 효과가 발생하는 수식이 있는 경우를 검출합니다.",
  "desc.AVOID_SIDE_EFFECT_IN_EXPRESSION": "수식에 부수 효과 발생 체커는 수식 내부에서 부수 효과가 일어나는 수식을 검출합니다.",
  "desc.AVOID_SIDE_EFFECT_IN_MACRO_ARG": "매크로 인자에 부수 효과 발생 체커는 매크로의 인자에 부수 효과가 발생할 수 있는 식을 전달하는 코드를 검출합니다.",
  "desc.AVOID_SIDE_EFFECT_IN_PARAMETERS": "함수 호출 시 인자의 부수 효과 발생 체커는 함수를 호출할 때 인자에 부수 효과가 발생하는 수식이 있는 경우를 검출합니다.",
  "desc.AVOID_SINGLE_VALUE_CLASS.CSHARP": "단일 필드 클래스 정의 체커는 단일 값을 가지는 클래스를 정의한 경우를 검출합니다.",
  "desc.AVOID_STRUCTURE_PADDING": "구조체 패딩을 통한 정보 누출 체커는 구조체를 통해 값을 전달할 때 중요 정보가 누출될 수도 있는 구조체 내의 패딩 존재를 검출합니다.",
  "desc.AVOID_SYNCHRONIZED_AT_METHOD_LEVEL": "메서드 synchronized로 선언 체커는 메서드를 synchronized로 선언하면 이슈를 검출합니다.",
  "desc.AVOID_THREAD_GROUP": "ThreadGroup 클래스의 사용 체커는 java.lang.Thread를 사용하면 이슈를 검출합니다.",
  "desc.AVOID_THROWING_GENERIC_EXCEPTION": "지나치게 일반적인 예외 던짐 체커는 std::exception 타입과 같이 지나치게 일반적인 예외를 던지는 수식을 검출합니다.",
  "desc.AVOID_THROWING_NULL_POINTER_EXCEPTION": "NullPointerException 객체 할당 체커는 NullPointerException으로 객체 할당을 하면 이슈를 검출합니다.",
  "desc.AVOID_THROWING_RAW_EXCEPTION_TYPES": "지나치게 일반적인 예외 객체 사용 체커는 일반적인 예외 객체를 사용하면 이슈를 검출합니다.",
  "desc.AVOID_USING_AWT_SWING": "AWT 및 Swing 사용 제한 체커는 EJB 프로그램에서 AWT 및 Swing을 사용하는 경우를 검출합니다.",
  "desc.AVOID_USING_HARD_CODE_IP": "IP 주소 하드 코딩 체커는 IP 주소가 하드 코드로 표현하면 이슈를 검출합니다.",
  "desc.AVOID_USING_JAVA_IO": "Java IO 사용 제한 체커는 EJB 프로그램에서 java.io 패키지를 사용하는 경우를 검출합니다.",
  "desc.AVOID_USING_NATIVE_CODE": "JNI의 사용 체커는 JNI을 사용하면 이슈를 검출합니다.",
  "desc.AVOID_USING_PUBLIC_STATIC_FINAL_ARRAY": "public static final 배열 사용 체커는 public static final 변경자가 지정된 배열 필드 선언을 검출합니다.",
  "desc.AVOID_USING_STATIC_KEYWORD": "이름 있는 네임스페이스에서 정적 객체 선언 체커는 이름을 가진 네임스페이스에서 정적으로 선언한 객체를 검출합니다.",
  "desc.AbstractClassWithoutAbstractMethod": "다른 클래스를 상속하거나 인터페이스를 참조하지 않고 추상 메소드를 갖지 않는 추상 클래스를 검출합니다.",
  "desc.AbstractClassWithoutAnyMethod": "메소드 선언이나 생성자 선언이 없는 추상 클래스를 검출합니다.",
  "desc.AbstractNaming": "인터페이스가 아닌 클래스 이름이 'Abstract' 로 시작하지 않는 경우 이를 검출합니다.",
  "desc.AccessorClassGeneration": "private으로 선언된 생성자를 외부에서 호출할 경우 접근자 클래스를 생성하며, 이를 검출합니다.",
  "desc.AddEmptyString": "빈 문자열을 '+' 연산에 사용하는 경우 이를 검출합니다.",
  "desc.ApexBadCrypto": "랜덤으로 생성하는 IV 와 key 를 만들때에는 Crypto 호출을 이용하는 것을 권장합니다.",
  "desc.ApexCRUDViolation": "SOQL/SOSL/DML 조작을 하기 전에 접근 권한을 확인 해야합니다.",
  "desc.ApexCSRF": "클래스 생성자나 init 메소드에서 DML 조작을 하는 것은 위헙합니다.",
  "desc.ApexDangerousMethods": "위험한 메소드를 사용했습니다.",
  "desc.ApexInsecureEndpoint": "보안을 위해서는 https를 사용해야 합니다.",
  "desc.ApexOpenRedirect": "외부 문자열로 바로 리다이렉트했습니다.",
  "desc.ApexSOQLInjection": "DML 쿼리에 외부 입력이 바로 들어갔습니다.",
  "desc.ApexSharingViolations": "sharing 없이 DML 메소드를 사용한 클래스가 있습니다.",
  "desc.ApexSuggestUsingNamedCred": "하드코드된 크리덴셜을 사용했습니다.",
  "desc.ApexUnitTestClassShouldHaveAsserts": "Apex 유닛 테스트는 최소한 한개의 assertion 을 포함해야 합니다.",
  "desc.ApexUnitTestShouldNotUseSeeAllDataTrue": "Apex 유닛테스트는 @isTest(seeAllData=true) 을 사용하면 안됩니다.",
  "desc.ApexXSSFromEscapeFalse": "addError 의 두 번째 인자가 false 입니다.",
  "desc.ApexXSSFromURLParam": "URL 파라미터를 받을 때에는 이스케이핑이나 필터링을 해야합니다.",
  "desc.AppendCharacterWithChar": "StringBuffer의 append()로 문자를 더하는 경우, char를 문자열로 사용하는 경우를 검출합니다.",
  "desc.ArgumentSize": "인자의 크기가 함수가 요구하는 것보다 작습니다.",
  "desc.ArrayIndexOutOfBounds": "배열 범위를 벗어난 곳에 접근합니다.",
  "desc.ArrayIndexOutOfBoundsCond": "배열을 접근하는 인덱스가 범위를 벗어납니다.",
  "desc.ArrayIndexThenCheck": "인덱스가 크기를 검사하기 전에 사용됩니다.",
  "desc.ArrayIsStoredDirectly": "인자로 받은 배열을 그대로 할당하는 코드을 검출합니다.",
  "desc.AssertWithSideEffect": "Assert문 안에서 함수를 호출하는 경우, 부작용이 발생할 수 있습니다",
  "desc.AssignBoolToFloat": "실수형에 부울 자료형을 할당합니다",
  "desc.AssignBoolToPointer": "포인터에 부울 자료형을 할당합니다",
  "desc.AssignIfError": "비교문과 할당문이 잘못 사용되고 있습니다.",
  "desc.AssignmentAddressToInteger": "정수형 변수에 포인터를 할당하는 것은 호환되지 않습니다",
  "desc.AssignmentInAssert": "Assert문 안에서 변수를 수정합니다",
  "desc.AssignmentInOperand": "피연산자에 할당 구문은 사용하지 않아야 합니다.",
  "desc.AssignmentIntegerToAddress": "포인터에 정수형을 할당하는 것은 호환되지 않습니다",
  "desc.AssignmentToNonFinalStatic": "안전하지 않은 정적 변수의 재할당을 검출합니다.",
  "desc.AtLeastOneConstructor": "인터페이스가 아닌 비 정적 클래스에 생성자 정의도, 정적 메소드 정의도 없는 경우 이를 검출합니다.",
  "desc.AutoVariables": "지역 변수의 주소가 함수의 파라미터에 할당합니다",
  "desc.AutoVariablesAssignGlobalPointer": "지역 변수로 선언된 배열이 전역 변수 포인터로 할당되고, 스코프를 벗어날 때 다시 할당되지 않았습니다",
  "desc.AutovarInvalidDeallocation": "Auto 변수의 할당 해제는 정의되지 않은 행동을 야기합니다.",
  "desc.AvoidAccessibilityAlteration": "getDeclaredConstructors(), getDeclaredConstructor(Class[]) 및 setAccessible() 메소드나 PriviligedAction 인터페이스는 변수나 클래스, 그리고 메소드의 visibility를 변화시킨다.",
  "desc.AvoidArrayLoops": "두 배열간에 loop 구문을 이용한 복사를 검출합니다.",
  "desc.AvoidAssertAsIdentifier": "변수 이름으로 사용하는 'assert'을 검출합니다.",
  "desc.AvoidAxisNavigation": "잘못된 축(axes)을 사용했습니다.",
  "desc.AvoidBranchingStatementAsLastInLoop": "반복문 마지막에 분기문(break, continue) 이 있을 경우 버그가 생길 가능성이 있습니다.",
  "desc.AvoidCallingFinalize": "finalize() 메소드를 직접 호출하는 경우를 검출합니다.",
  "desc.AvoidCatchingGenericException": "일반적인 예외를 try-catch 블록에서 처리하는 경우 이를 검출합니다.",
  "desc.AvoidCatchingNPE": "NullPointerException 을 catch하는 구문을 검출합니다.",
  "desc.AvoidCatchingThrowable": "catch 블록의 파라미터로 Throwable 타입 존재를 검출합니다.",
  "desc.AvoidConstantsInterface": "인터페이스가 메소드는 포함하지 않고, 필드만 가지는 경우 이를 검출합니다.",
  "desc.AvoidDecimalLiteralsInBigDecimalConstructor": "BigDecimal 을 사용할 때 소수점이 포함된 수치를 문자열 형태로 넣지 않은 경우 이를 검출합니다.",
  "desc.AvoidDeeplyNestedIfStmts": "지정한 회수 이상의 if 중첩문을 검출합니다.",
  "desc.AvoidDirectAccessTriggerMap": "Trigger.old나 Trigger.new 에 직접 접근했습니다.",
  "desc.AvoidDmlStatementsInLoops": "DML 문이 반복문 내에 사용되었습니다.",
  "desc.AvoidDollarSigns": "변수, 메소드, 클래스, 인터페이스명에 '$' 사용을 검출합니다.",
  "desc.AvoidDuplicateLiterals": "지정된 개수 이상의 동일한 문장 반복을 검출합니다.",
  "desc.AvoidEnumAsIdentifier": "변수 이름으로 사용하는 'enum'을 검출합니다.",
  "desc.AvoidFieldNameMatchingMethodName": "필드 이름과 메소드 이름이 동일한 경우 이를 검출합니다.",
  "desc.AvoidFieldNameMatchingTypeName": "필드 이름이 클래스 이름과 동일한 경우 이를 검출합니다.",
  "desc.AvoidFinalLocalVariable": "Final local variable을 선언과 함께 초기화 하지 않거나, 상수로 초기화하는 경우 이를 검출합니다.",
  "desc.AvoidGlobalModifier": "글로벌 클래스를 사용했습니다.",
  "desc.AvoidHardcodingId": "하드코딩된 ID를 사용했습니다.",
  "desc.AvoidInstanceofChecksInCatchClause": "Catch 구문의 FormalParameter와 같은 이름의 변수에 instanceof 구문이 있는 경우 이를 검출합니다.",
  "desc.AvoidInstantiatingObjectsInLoops": "Loop 내에서 객체 생성문을 검출합니다.",
  "desc.AvoidLiteralsInIfCondition": "조건문에서 하드코드된 리터럴을 검출합니다. 이들은 정적 변수나 private 멤버로 재정의 되어야 합니다.",
  "desc.AvoidLogicInTrigger": "트리거 안에 복잡한 로직이 존재합니다.",
  "desc.AvoidLosingExceptionInformation": "예외 정보에 접근만 하는 경우를 검출합니다.",
  "desc.AvoidMultipleUnaryOperators": "단항 연산자를 여러 번 연속해서 사용할 경우 이를 검출합니다.",
  "desc.AvoidPrefixingMethodParameters": "파라미터의 접두어로 'in' 또는 'out'을 사용했을 경우 가독성을 떨어 뜨립니다.",
  "desc.AvoidProtectedFieldInFinalClass": "Final 클래스에서 protected 변수 사용을 검출합니다.",
  "desc.AvoidReassigningParameters": "메소드 작성시 입력받은 파라미터에 재할당하는 구문을 검출합니다.",
  "desc.AvoidRethrowingException": "catch 구문에서 받는 예외의 레퍼런스를 단순히 throw 하는 구문 하나로 catch 블록이 이루어진 경우 이를 검출합니다.",
  "desc.AvoidSoqlInLoops": "새로운 객체를 반복문안에서 생성 했습니다.",
  "desc.AvoidSoslInLoops": "반복문안에 Sosl 호출이 있습니다.",
  "desc.AvoidStringBufferField": "StringBuffer를 ClassOrInterfaceType으로 쓰는 코드을 검출합니다.",
  "desc.AvoidSynchronizedAtMethodLevel": "메소드를 synchronized로 선언을 검출합니다.",
  "desc.AvoidThreadGroup": "클래스 선언 시 스레드 그룹 상속을 검출합니다.",
  "desc.AvoidThrowingNewInstanceOfSameException": "catch 구문에서 받은 오류를 그대로 throw 하는 경우 이를 검출합니다.",
  "desc.AvoidThrowingNullPointerException": "NullPointerException 객체 할당을 검출합니다.",
  "desc.AvoidThrowingRawExceptionTypes": "지나치게 일반적인 예외 객체 사용을 검출합니다.",
  "desc.AvoidUsingHardCodedIP": "하드코드된 IP를 검출합니다.",
  "desc.AvoidUsingNativeCode": "JNI의 사용은 애플리케이션의 이식성을 감소시키고 유지가 어렵게끔 하므로 권장하지 않습니다.",
  "desc.AvoidUsingOctalValues": "8진수로 표현된 상수를 사용하는 경우를 검출합니다.",
  "desc.AvoidUsingShortType": "short 타입의 사용은 메모리 사용량 감소보다 더 큰 악영향을 미치며 이를 사용하는 경우를 검출한다",
  "desc.AvoidUsingVolatile": "volatile의 행동 반경은 어느 정도는 잘못 알려져 있는 경향이 있기 때문에 애플리케이션의 유지보수나 이식성을 위해서는 사용되지 말아야 합니다.",
  "desc.BAD.FSS_FORM_PREFIX_NAMING.TOBE.JS": "금융감독원의 Form 전역변수와 Form 함수의 명명규칙을 검사합니다.",
  "desc.BAD.FSS_GLOBAL_PREFIX_NAMING.TOBE.JS": "금융감독원의 MiPlatform 프로젝트 내에 있는 단위시스템 전역변수와 단위시스템 함수의 명명규칙을 검사합니다.",
  "desc.BAD.LOCATION.COLUMN.SQL": "컬럼 명이 SELECT 키워드와 같은 행에 기술되어 있는 경우를 검출합니다.",
  "desc.BAD.LOCATION.ORDER_GROUP_BY.SQL": "ORDER BY, GROUP BY 절이 별도 줄에 기술되어 있지 않는 경우를 검출합니다.",
  "desc.BAD.UNION.SQL": "UNION ALL 대신 UNION을 사용한 경우를 검출합니다. 쿼리 성능 향상을 위해 UNION 대신 UNION ALL의 사용을 권장합니다.",
  "desc.BAD.USE_OF_FULL_OUTER_JOIN.SQL": "FULL OUTER JOIN을 사용한 경우를 검출합니다. UNION을 사용하는 것이 더 효과적일 수 있습니다.",
  "desc.BAD_ACCESS_VOLATILE_OBJ": "volatile이 아닌 변수로 volatile 변수 참조 체커는 volatile 한정자를 가지지 않은 변수로 volatile 변수를 참조하는 수식을 검출합니다.",
  "desc.BAD_ARGS.FORBIDDEN.AFTER_CALL": "함수 호출 후 특정 인자의 사용 체커는 특정 함수를 호출한 후에 특정 인자를 사용하는 코드를 검출합니다.",
  "desc.BAD_ARGUMENTS.UMASK": "잘못된 umask 인자 체커는 umask() 함수에 잘못된 값을 인자로 전달하는 경우를 검출합니다.",
  "desc.BAD_ARGUMENTS.UMASK.PYTHON": "잘못된 umask 인자 체커는 umask() 함수에 잘못된 값을 인자로 전달하는 경우를 검출합니다.",
  "desc.BAD_ARRAY_DECLARATION": "부적절한 배열 선언 체커는 배열을 선언할 때 타입 이름 뒤에 [] 대괄호를 입력하지 않은 코드를 검출합니다.",
  "desc.BAD_ASSERT_USAGE": "잘못된 assert 사용 체커는 부적절한 진단 테스트에서 assert를 사용하는 수식을 검출합니다.",
  "desc.BAD_ASSOCIATE_OPERATORS": "비교 연산자 중복 사용 체커는 다수의 비교 연산자를 괄호 없이 논리 연산자의 바로 뒤에 사용하는 수식을 검출합니다.",
  "desc.BAD_BLOCK_COMMENT": "잘못된 블록 주석 체커는 블록 주석의 시작과 끝이 지정한 문자가 아닌 경우를 검출합니다.",
  "desc.BAD_CALL.API.APPLE.OBJC": "잘못된 dispatch_once 사용 체커는 dispatch_once() 함수의 첫 번째 인자에 정적이 아닌 변수를 전달하는 경우를 검출합니다.",
  "desc.BAD_CALL.API.GETPW.OBJC": "금지된 함수 getpw 사용 체커는 getpw() 함수 호출을 검출합니다.",
  "desc.BAD_CALL.API.GETS.OBJC": "금지된 함수 gets 사용 체커는 gets() 함수 호출을 검출합니다.",
  "desc.BAD_CALL.API.MKSTEMP.OBJC": "위험한 임시 파일 생성 체커는 임시 파일을 부적절한 방법으로 생성하는 경우를 검출합니다.",
  "desc.BAD_CALL.API.MKTEMP.OBJC": "mktemp 함수를 통한 위험한 임시 파일 생성 체커는 위험한 mktemp() 함수를 사용해 임시 파일을 생성하는 경우를 검출합니다.",
  "desc.BAD_CALL.API.RANDOM.OBJC": "금지된 함수 random 사용 체커는 random() 함수 호출을 검출합니다.",
  "desc.BAD_CALL.API.SECURE_KEYCHAIN.OBJC": "Secure Keychain API의 잘못된 사용 체커는 Secure Keychain API를 용법에 맞지 않게 사용한 경우를 검출합니다.",
  "desc.BAD_CALL.API.STRCPY.OBJC": "금지된 함수 strcpy 사용 체커는 strcpy() 함수 호출을 검출합니다.",
  "desc.BAD_CALL.API.UNIX.OBJC": "Unix API의 잘못된 사용 체커는 Unix 계열 운영 체제의 API 함수를 규약대로 사용하지 않은 경우를 검출합니다.",
  "desc.BAD_CALL.API.VFORK.OBJC": "위험한 vfork 사용 체커는 위험한 vfork() 함수 호출을 검출합니다.",
  "desc.BAD_CALL.BACKGRND.BTM.PF": "SM에서 온디맨드 BTM을 Back-Ground Process로 호출시 'nohup' 으로 호출해야 합니다.",
  "desc.BAD_CALL.BREAK_POINT.ABAP": "BREAK-POINT 구문 사용 체커는 BREAK-POINT 구문을 검출합니다.",
  "desc.BAD_CALL.EXIT_CHECK_IN_SELECT_LOOP.ABAP": "반복문 내에서의 EXIT 및 CHECK 구문 사용 체커는 SELECT 루프 내에서 사용된 EXIT 및 CHECK를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN": "금지된 함수 호출 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.JS": "금지된 함수 호출 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.KOTLIN": "금지된 메소드 호출 체커는 사용이 금지된 메소드를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.LIB.PROCESS": "금지된 프로세스 관련 함수 사용 체커는 옵션에 지정된 프로세스 관련 함수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.LIB.RESOURCE": "금지된 리소스 제한 관련 함수 사용 체커는 옵션에 지정된 리소스 제한 관련 함수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.LIB.SIGNAL": "금지된 시그널 관련 함수 사용 체커는 옵션에 지정된 시그널 관련 함수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.LIB.TEMP": "위험한 임시 파일 생성 체커는 부적절한 방법으로 임시 파일을 생성하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.LIB.TIMER": "금지된 타이머 관련 함수 사용 체커는 옵션에 지정된 타이머 관련 함수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.LIB.TP": "금지된 TP 관련 함수 사용 체커는 옵션에 지정된 TP(TMAX) 관련 함수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.OBJC": "금지된 함수 호출 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.PARAM": "특정 함수 호출시 특정 인자를 사용하지 말아야 합니다.",
  "desc.BAD_CALL.FORBIDDEN.PARAM.LITERAL": "함수 호출 시 리터럴 혹은 문자열 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 위치의 인자에 리터럴 혹은 문자열로 전달하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.PARAM.NAME": "함수 호출 시 금지된 인자 사용 체커는 옵션에 지정된 함수를 호출할 때 사용이 금지된 인자를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.PARAM.NUMBER": "함수 호출 시 인자에 숫자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 숫자를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.PARAM.STRING": "함수 호출 시 금지된 문자열 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 문자열을 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.PHP": "금지된 함수 호출 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.PYTHON": "금지된 메소드 호출 체커는 사용이 금지된 메소드를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.SWIFT": "금지된 메소드 호출 체커는 사용이 금지된 메소드를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.VARARGS": "함수 호출 시 특정 인자에 변수 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 변수를 전달하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.VBNET": "금지된 함수 호출 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FORBIDDEN.VBS": "금지된 함수 호출 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.",
  "desc.BAD_CALL.FROM_DM_TO_ALL": "DM에서 PM, FM, DM 호출 금지 체커는 DM 에서 PM, FM, DM을 직접 호출한 경우를 검출합니다.",
  "desc.BAD_CALL.FROM_FM_TO_PM": "FM에서 PM 호출 금지 체커는 FM 에서 PM을 직접 호출한 경우를 검출합니다.",
  "desc.BAD_CALL.FROM_PM_TO_CUD_DM_SAME_COMPONENT": "동일 컴포넌트 내 PM에서 C/U/D용 DM 호출 금지 체커는 동일 컴포넌트 내의 PM 에서 생성, 수정, 삭제에 해당하는 DM을 호출하는 경우 이슈를 검출합니다.",
  "desc.BAD_CALL.FROM_PM_TO_DIRECT_PM": "PM간 연동거래 아닌 직접호출 사용 금지 체커는 PM 에서 다른 PM을 직접 호출한 경우를 검출합니다.",
  "desc.BAD_CALL.FROM_PM_TO_INDIRECT_CUD_DM_OTHER_COMPONENT": "PM에서 타 컴포넌트의 C/U/D용 DM 간접호출 금지 체커는 PM에서 다른 컴포넌트의 생성, 수정, 삭제에 해당하는 DM을 간접 호출 한 경우를 검출합니다.",
  "desc.BAD_CALL.IMPROPER_VARARGS": "함수 호출 시 명시된 상수 인자 값만큼 인자 미사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치를 정수 상수로 정의하지 않거나, 해당 값만큼 추가적인 인자가 존재하지 않는 코드를 검출합니다.",
  "desc.BAD_CALL.INCORRECT_SIZEOF.MEMCPY": "잘못된 sizeof 연산자의 인자 체커는 포인터나 복합 수식을 인자로 포함하는 sizeof 연산자의 결과를 memcpy()와 같은 옵션에 지정된 함수의 특정 인자로 전달하는 코드를 검출합니다",
  "desc.BAD_CALL.INVALID_ADDRESS.SCANF": "잘못된 scanf 함수 인자 체커는 scanf() 함수의 두 번째 이후 인자로 참조 주소 값이 전달되지 않는 경우를 검출합니다.",
  "desc.BAD_CALL.INVALID_BLOCK_SIZE.ALLOC": "포인터 크기에 어긋나는 메모리 할당 체커는 메모리 할당 크기로 할당 결과를 저장할 포인터 타입 크기의 배수가 전달되지 않는 경우를 검출합니다.",
  "desc.BAD_CALL.LIBRARY.MEMORY": "금지된 메모리 관련 함수 사용 체커는 옵션에 지정된 메모리 관련 함수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.MISSING_CALL_PARAM": "함수 호출시 특정 인자는 반드시 함수 호출로 작성해야 합니다.",
  "desc.BAD_CALL.MISSING_CALL_PARAM.EXTENDED": "함수 호출 시 명시된 인자 미사용 체커는 옵션에 지정된 특정 함수에서 지정된 함수를 해당 함수의 인자로 사용하지 않은 코드를 검출합니다.",
  "desc.BAD_CALL.NOT_ALLOWED.PARAM.NAME": "함수 호출 시 명시되지 않은 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 옵션에 명시되어 있는 인자를 사용하지 않은 코드를 검출합니다.",
  "desc.BAD_CALL.NOT_ALLOWED.PARAM.STRING": "함수 호출 시 문자열이 아닌 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 문자열이 아닌 값을 전달하는 코드를 검출합니다.",
  "desc.BAD_CALL.NUMBER_OF_VARARGS_MISMATCH": "가변인자의 변환 지시자와 인자 개수 불일치 체커는 가변인자를 받는 함수의 변환 지시자와 인자의 개수가 동일하지 않은 경우를 검출합니다.",
  "desc.BAD_CALL.PARAM": "지정된 함수의 지정된 파라미터는 상수만 호출해야 한다.",
  "desc.BAD_CALL.RANDOM_NEXT.CSHARP": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.REQUIRED": "정의된 필수 라이브러리 함수 호출 누락 체커는 옵션에 지정된 라이브러리 함수를 호출하지 않은 코드를 검출합니다.",
  "desc.BAD_CALL.REQUIRED.AFTER_CALL": "필수적인 후속 함수의 호출 누락 체커는 하나의 함수 본문 내에서 특정 함수가 호출되면 다른 함수가 추가로 반드시 호출되도록 짝지었으나 추가 함수 호출이 누락된 경우를 검출합니다.",
  "desc.BAD_CALL.REQUIRED.AFTER_CALL_TMP": "특정 함수 호출 후에 반드시 필수 함수를 호출해야 합니다.",
  "desc.BAD_CALL.REQUIRED.ARGS": "지정된 함수 호출의 인자값 확인 체커는 옵션에 지정된 함수를 호출할 때 지정된 인자로 호출하지 않은 코드를 검출합니다.",
  "desc.BAD_CALL.REQUIRED.LIB_CALL": "지정된 함수 호출 시 정의된 함수 호출 확인 체커는 특정 함수를 호출할 때 지정된 함수를 쌍으로 호출하지 않은 코드를 검출합니다.",
  "desc.BAD_CALL.REQUIRED.PARAM": "매개변수가 지정된 함수에서 금지된 함수 사용 체커는 옵션에 지정된 매개변수를 포함한 함수에서 금지된 함수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.REQUIRED.PRE_CALL": "특정 함수 호출전에 반드시 필수 함수를 호출해야 합니다.",
  "desc.BAD_CALL.REQUIRED.VARARGS": "함수 호출 시 변수가 아닌 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 변수가 아닌 값을 전달하는 코드를 검출합니다.",
  "desc.BAD_CALL.REQUIRED.WRAPPER": "명시된 함수 인자로만 허용된 함수 체커는 옵션에 지정된 특정 함수를 허용된 함수의 인자가 아닌 값으로 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.RUNTIME_GC": "Runtime.gc() 사용 금지 체커는 Runtime.gc() 함수를 사용한 경우 이슈를 검출합니다.",
  "desc.BAD_CALL.RUNTIME_PROCESS": "Runtime.process() 사용 금지 체커는 Runtime.process() 함수를 사용한 경우 이슈를 검출합니다.",
  "desc.BAD_CALL.SERVICE_MAIN.PF": "서비스 메인 블록에서 호출이 금지된 함수를 사용했습니다.",
  "desc.BAD_CALL.SYSTEM_CALL.ABAP": "시스템 함수 호출 체커는 SYSTEM-CALL 구문을 검출합니다.",
  "desc.BAD_CALL.SYSTEM_C_FUNCTION.ABAP": "시스템 C 함수 호출 체커는 CALL 구문을 검출합니다.",
  "desc.BAD_CALL.TO_DIRECT_ALL_OTHER_COMPONENT": "타 컴포넌트 PM/FM/DM 직접호출 금지 체커는 컴포넌트 메소드 내에서 다른 컴포넌트의 PM/FM/DM을 직접 호출 한 경우를 검출합니다.",
  "desc.BAD_CALL.TO_INDIRECT_ALL_SAME_COMPONENT": "동일 컴포넌트 내 간접호출 금지 체커는 동일한 컴포넌트 내의 메소드를 간접 호출 메소드를 이용하여 호출한 경우를 검출합니다.",
  "desc.BAD_CALL.TO_INDIRECT_DM_OTHER_APP": "타 애플리케이션 DM 간접 호출 금지 체커는 컴포넌트 메소드에서 다른 애플리케이션의 DM을 간접 호출하는 경우를 검출합니다.",
  "desc.BAD_CALL.TYPE_MISMATCH.REALLOC": "다른 구조체 타입의 realloc() 함수 호출 체커는 realloc() 함수에 포함된 첫 번째 매개변수의 구조체 타입과 해당 함수로 할당된 메모리를 가리키는 변수의 구조체 타입이 다른 코드를 검출합니다.",
  "desc.BAD_CALL.TYPE_MISMATCH.SPRINTF": "잘못된 sprintf() 함수 사용 체커는 배열의 크기를 고려하지 않고 sprintf() 함수를 사용하는 코드를 검출합니다.",
  "desc.BAD_CALL.TYPE_MISMATCH.STRING": "char 및 wchar_t 매개 변수 자료형 혼용 체커는 str 계열 함수(ex. strncpy)와 wcs 계열 함수(ex. wcsncpy)에 각각 char와 wchar_t 매개 변수 타입을 전달하지 않는 코드를 검출합니다.",
  "desc.BAD_CALLING_CONVENTION": "함수간 호출 규칙 검사 입니다.",
  "desc.BAD_CAST_COMPLEX_EXPR": "부호가 서로 다른 정수형 간의 캐스팅 체커는 signed 정수형과 unsigned 정수형간에 캐스팅이 일어나는 복합 수식절을 검출합니다.",
  "desc.BAD_COLLECTION_REMOVAL.INTEGER_TYPE": "잘못된 컬렉션 내 객체 제거 체커는 정수값을 담는 컬렉션 객체에 대해 remove 메소드의 인자로 정수 상수가 포함된 식을 사용하는 경우를 검출합니다.",
  "desc.BAD_COMMENT.MOD": "변경 주석을 형식에 맞게 작성해야합니다.",
  "desc.BAD_COMMENT.POSITION.BLOCK": "블록 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 블록 주석을 검출합니다.",
  "desc.BAD_COMMENT.POSITION.DOCUMENT": "문서화 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 문서화 주석을 검출합니다.",
  "desc.BAD_COMMENT.POSITION.END_OF_LINE": "한 줄 주석의 잘못된 사용 체커는 블록 안에서 한 줄 주석을 연속해서 사용하는 코드를 검출합니다.",
  "desc.BAD_COMMENT.POSITION.SINGLE": "한 줄 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 한 줄 주석을 검출합니다.",
  "desc.BAD_COMMENT.POSITION.TRAILING": "소스 코드 뒤 주석 형식 위반 체커는 코드 뒤에 이어 작성되는 한 줄 주석이 정해진 규격에 맞지 않는 경우를 검출합니다.",
  "desc.BAD_COMMENT.TYPE": "타입 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 타입 주석을 검출합니다.",
  "desc.BAD_COMPARE": "함수 호출 대신 함수 포인터 사용 체커는 함수 호출을 사용해야 하는 위치에 함수 포인터를 사용하는 코드를 검출합니다.",
  "desc.BAD_COMPARISON": "Double.NaN, Float.NaN 과의 비교 체커는 비교할 때 'Double.NaN' 혹은 'Float.NaN' 등과 비교하는 경우 이를 검출합니다.",
  "desc.BAD_COMPARISON.STRING": "잘못된 문자열 비교 연산 체커는 문자열을 비교할 때 직접 비교 연산(==, !=)을 사용한 경우를 검출합니다.",
  "desc.BAD_COMPOUND_STATEMENT.CURLY_BRACE": "누락된 복합 구문 시작 중괄호 체커는 제어문, 클래스, 메소드 선언 등 복합문의 시작 라인에 여는 중괄호가 없는 경우를 검출합니다.",
  "desc.BAD_COOKIE.NOT_SENT_OVER_SSL.PHP": "안전하지 않은 쿠키 체커는 쿠키를 암호화하지 않은 채로 전송하는 경우를 검출합니다.",
  "desc.BAD_COOKIE.NOT_SENT_OVER_SSL.SWIFT": "안전하지 않은 쿠키 체커는 쿠키를 암호화하지 않은 채로 전송하는 경우를 검출합니다.",
  "desc.BAD_COOKIE.PATH.PHP": "기본 경로에 의한 안전하지 않은 쿠키 체커는 쿠키 설정 시 경로가 기본 경로('/')로 설정된 경우를 검출합니다.",
  "desc.BAD_CROSS_ORIGIN_RESOURCE_SHARING.PHP": "과도하게 허용된 Cross-Origin Resource Sharing 정책 체커는 소스 코드 내에 과도하게 허용된 Cross-Origin Resource Sharing(CORS) 정책을 선언하는 경우를 검출합니다.",
  "desc.BAD_CROSS_ORIGIN_RESOURCE_SHARING.VBS": "과도하게 허용된 Cross-Origin Resource Sharing 정책 체커는 응답 헤더에 CORS 정책으로 모든 사이트를 허용하는 경우를 검출합니다.",
  "desc.BAD_CSTRING.SIZE_ARGUMENT.OBJC": "잘못된 문자열 함수 인자 체커는 C 표준 문자열 함수에 잘못된 크기 인자를 전달하는 경우를 검출합니다.",
  "desc.BAD_CURLYBRACE.DECLARATION": "중괄호 형식 위반 체커는 클래스나 메소드 선언에서 중괄호를 규격에 맞춰 사용하지 못한 경우를 검출합니다.",
  "desc.BAD_CURLY_BRACE_GENERAL": "일반적 중괄호 줄 바꿈 규칙 위반 체커는 중괄호 근처에서 언제 줄 바꿈을 해야 하는지에 대한 규칙을 위반한 경우를 검출합니다.",
  "desc.BAD_DB_TRANSACTION": "DB 트랜잭션의 잘못된 마무리 체커는 DB 트랜잭션에서 작업을 수행할 때 명시적으로 commit() 함수나 rollback() 함수에 대한 명시적 호출이 누락된 코드를 검출합니다.",
  "desc.BAD_EQ": "equals 및 == 연산자의 잘못된 사용 체커는 객체를 비교할 때 equals()와 == 두 가지 방식을 잘못 섞어서 사용한 것으로 판단되는 경우를 검출합니다.",
  "desc.BAD_EQUALITY_EXPRESSION.BOOLEAN": "잘못된 값으로 조건문 비교 연산 체커는 if 나 while 문에서 비교 연산을 수행할 때 0 또는 false 값을 사용하지 않는 코드를 검출합니다.",
  "desc.BAD_EQUALITY_EXPRESSION.FLOAT": "부동 소수점 값에 대한 동일성 비교 연산 체커는 '==' 혹은 '!=' 연산자를 사용하여 부동소수점을 비교하는 코드를 검출합니다.",
  "desc.BAD_EQUALITY_EXPRESSION.FLOAT.CSHARP": "부동 소수점 값에 대한 동일성 비교 연산 체커는 '==' 연산자를 사용하여 부동소수점을 비교하는 코드를 검출합니다.",
  "desc.BAD_EQUALITY_EXPRESSION.OBJECT.OBJC": "객체에 대한 == 연산자 사용 체커는 원시 타입이 아닌 두 객체를 비교할 때 객체의 내용물이 아닌 주소 값을 비교하는 경우를 검출합니다.",
  "desc.BAD_ERROR.INVALID_CODE": "함수 호출 시 지정된 문자열이 아닌 인자 사용 체커는 옵션에 지정된 함수를 호출할 때 특정 인자 위치에 지정된 문자열을 포함하지 않는 값을 사용하는 코드를 검출합니다.",
  "desc.BAD_ERROR.MISSING_INIT": "오류 반환 전에 초기화 함수 호출 누락 체커는 옵션에 지정된 오류 값을 반환하기 전에 초기화 함수를 호출하지 않는 코드를 검출합니다.",
  "desc.BAD_ERROR.MISSING_LOGGING": "오류 코드 반환 전 오류 로그 함수 호출 누락 체커는 옵션에 지정된 오류 코드를 반환하기 전에 오류 로그 함수를 호출하지 않는 코드를 검출합니다.",
  "desc.BAD_ERROR.MISSING_RETURN": "함수 호출 후 반환문 누락 체커는 옵션에 지정된 특정 함수를 호출한 후에 반환문을 사용하지 않은 코드를 검출합니다.",
  "desc.BAD_EXCEPTIONAL_CONDITION": "지정된 예외 처리 방식 위반 체커는 반드시 예외 처리가 필요한 예외 클래스를 처리하지 않았거나, 처리하지 말아야 할 예외 클래스를 처리한 경우를 검출합니다.",
  "desc.BAD_FORMAT.VIRTUAL_FUNC_INIT": "잘못된 형식의 순수 가상 함수 선언 체커는 순수 함수가 가상 함수로 선언되지 않은 경우를 검출합니다.",
  "desc.BAD_FORM_FORLOOP_CONTINUE": "비정형적인 for 구문에서 continue 구문 사용 체커는 일반적인 방식으로 사용하지 않은 for 구문 내부에서 continue 구문을 사용하여 반복문을 탈출하는 경우를 검출합니다.",
  "desc.BAD_FUNCTION_ADDRESSING": "잘못된 함수 식별자 사용 체커는 함수 식별자를 올바르지 않은 방법으로 사용한 경우를 검출합니다.",
  "desc.BAD_GLOBAL_COMMENT": "전역변수에 주석이 없을 경우를 검출 합니다.",
  "desc.BAD_HEADER_FILE.DATA": "extern으로 선언하지 않은 헤더에서의 변수 체커는 헤더 파일 내에서 변수를 정의할 때 extern 키워드가 사용되지 않은 경우를 검출합니다.",
  "desc.BAD_HEADER_FILE.DEFINE": "인클루드 가드 누락 체커는 파일의 시작과 끝에 인클루드 가드가 누락된 헤더를 검출합니다.",
  "desc.BAD_IF_BOOLEAN_VARIABLE_CONDITION": "조건으로 단일 변수 사용 체커는 if 구문의 조건식에 boolean 변수가 단독으로 사용되는 경우를 검출합니다.",
  "desc.BAD_IF_ONLY": "누락된 else 절 체커는 if 구문이 else 블록 없이 사용되는 경우를 검출합니다.",
  "desc.BAD_INCLUDE": "잘못된 헤더 포함 순서 체커는 정해진 순서로 헤더 파일을 포함하지 않은 경우를 검출합니다.",
  "desc.BAD_INCLUDE.DUPLICATED": "중복된 헤더 선언 체커는 하나의 파일에서 중복된 헤더를 선언하는 코드를 검출합니다.",
  "desc.BAD_INCLUDE.FORBIDDEN": "금지된 헤더 파일 사용 체커는 옵션에 지정된 사용 금지 헤더 파일을 include 하는 코드를 검출합니다.",
  "desc.BAD_INCLUDE.INVALID_PATH": "헤더 파일 포함 시 절대 경로 사용 체커는 헤더 파일을 include 할 때 절대 경로를 사용하는 코드를 검출합니다.",
  "desc.BAD_INCLUDE.REQUIRED": "지정된 필수 헤더 파일 누락 체커는 옵션에 지정된 필수 헤더 파일을 사용하지 않은 코드를 검출합니다.",
  "desc.BAD_INDENTATION.BLOCK": "블록 들여쓰기 규칙 위반 체커는 동일한 블록 내의 문장들의 들여쓰기가 각기 다른 경우를 검출합니다.",
  "desc.BAD_INDENTATION.CASE_LABELS": "case 블록 들여쓰기 규칙 위반 체커는 switch 구문에서 case 및 default 블록의 들여쓰기와 간격 규정을 위반한 경우를 검출합니다.",
  "desc.BAD_INDENTATION.CLASS": "클래스 선언 들여쓰기 규칙 위반 체커는 클래스 선언에서 들여쓰기 규칙을 지키지 않은 경우를 검출합니다.",
  "desc.BAD_INDENTATION.COMMENT": "잘못된 주석 들여쓰기 체커는 주석의 시작열과 설명 대상 줄의 시작열이 다를 경우를 검출합니다.",
  "desc.BAD_INDENTATION.DO_STATEMENT": "do-while 구문 중괄호 규칙 위반 체커는 do-while 구문에서 중괄호와 키워드 사이에 공백이 없는 코드를 검출합니다.",
  "desc.BAD_INDENTATION.FIELD": "필드 변수 선언 들여쓰기 규칙 위반 체커는 필드 변수 선언에서 들여쓰기 규칙을 지키지 않은 경우를 검출합니다.",
  "desc.BAD_INDENTATION.FOR_STATEMENT": "for 구문 들여쓰기 규칙 위반 체커는 for 구문의 반복 조건 부분을 여러 줄에 나눠쓸 때 지켜야 할 들여쓰기 규칙을 지키지 않는 경우를 검출합니다.",
  "desc.BAD_INDENTATION.IF_STATEMENT": "if 구문 들여쓰기 규칙 위반 체커는 조건식이 여러 줄로 나뉘었을 때 조건식의 들여쓰기가 제대로 되지 않은 경우를 검출합니다.",
  "desc.BAD_INDENTATION.IMPROPER_LENGTH": "탭 문자를 사용한 들여쓰기 체커는 들여쓰기를 할 때 스페이스가 아닌 탭을 사용한 라인을 검출합니다.",
  "desc.BAD_INDENTATION.METHOD": "메소드 선언 들여쓰기 규칙 위반 체커는 메소드 선언에서 들여쓰기 규칙을 지키지 않은 경우를 검출합니다.",
  "desc.BAD_INDENTATION.PACKAGE": "패키지 빈 줄 규칙 위반 체커는 파일 주석과 package 선언 구문 사이의 줄간격이 설정과 다르게 쓰인 경우를 검출합니다.",
  "desc.BAD_INDENTATION.SOURCE_CODE": "소스 코드 시작점에 존재하는 들여쓰기 체커는 소스 코드의 첫 시작이 첫 번째 컬럼이 아닌 경우를 검출합니다.",
  "desc.BAD_INDENTATION.SWITCH_STATEMENT": "switch 구문 줄 바꿈 규칙 위반 체커는 switch 구문의 검사식과 첫 번째 case 블록이 올바른 위치에 있지 않은 경우를 검출합니다.",
  "desc.BAD_INDENTATION.TRY_STATEMENT": "try 구문 들여쓰기 규칙 위반 체커는 try 구문에서 중괄호와 들여쓰기에 관련된 규칙 위반을 검출합니다.",
  "desc.BAD_INI.ALLOWED_URL_FOPEN.PHP": "활성화된 allowed_URL_fopen 옵션 체커는 php.ini에 allow_URL_fopen이 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.ALLOWED_URL_INCLUDE.PHP": "활성화된 allowed_URL_include 옵션 체커는 php.ini에 allow_URL_include가 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.COOKIE_DOMAIN.PHP": "INI에서 기본 도메인에 의한 안전하지 않은 쿠키 체커는 php.ini에 session.cookie_domain이 기본 도메인으로 설정된 경우를 검출합니다.",
  "desc.BAD_INI.COOKIE_NOT_SENT_OVER_SSL.PHP": "INI에서 안전하지 않은 쿠키 체커는 php.ini에 session.cookie_secure가 비활성화된 경우를 검출합니다.",
  "desc.BAD_INI.COOKIE_PATH.PHP": "INI에서 기본 경로에 의한 안전하지 않은 쿠키 체커는 php.ini에 session.cookie_path가 기본 경로('/')로 설정된 경우를 검출합니다.",
  "desc.BAD_INI.DISABLED_CGI_FORCE_REDIRECT.PHP": "비활성화된 cgi.force_redirect 옵션 체커는 php.ini에 cgi.force_redirect가 비활성화된 경우를 검출합니다.",
  "desc.BAD_INI.DISABLED_SAFE_MODE.PHP": "비활성화된 safe_mode 옵션 체커는 php.ini에 safe_mode가 비활성화된 경우를 검출합니다.",
  "desc.BAD_INI.ENABLED_FILE_UPLOADS.PHP": "활성화된 file_uploads 옵션 체커는 php.ini에 file_uploads가 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.ENABLED_MAGIC_QUOTES_GPC.PHP": "활성화된 magic_quotes_gpc 옵션 체커는 php.ini에 magic_quotes_gpc가 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.ENABLED_MAGIC_QUOTES_RUNTIME.PHP": "활성화된 magic_quotes_runtime 옵션 체커는 php.ini에 magic_quotes_runtime이 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.ENABLED_MAGIC_QUOTES_SYBASE.PHP": "활성화된 magic_quotes_sybase 옵션 체커는 php.ini에 magic_quotes_sybase가 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.ENABLED_REGISTER_GLOBALS.PHP": "활성화된 register_globals 옵션 체커는 php.ini에 register_globals가 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.LEAK.ERROR.PHP": "오류 정보 누출 체커는 php.ini에 display_errors가 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.LEAK.VERSION.PHP": "시스템 버전 정보 노출 체커는 php.ini에 expose_php가 활성화된 경우를 검출합니다.",
  "desc.BAD_INI.MISSING_OPEN_BASEDIR.PHP": "누락된 open_basedir 옵션 체커는 php.ini에 open_basedir이 존재하는 동시에 설정되어 있지 않은 경우를 검출합니다.",
  "desc.BAD_INI.MISSING_SAFE_MODE_EXEC_DIR.PHP": "누락된 safe_mode_exec_dir 옵션 체커는 php.ini에 safe_mode_exec_dir이 존재하는 동시에 설정되어 있지 않은 경우를 검출합니다.",
  "desc.BAD_INI.PERSISTENT_COOKIE.PHP": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.",
  "desc.BAD_INI.UNSET_HTTPONLY.PHP": "비활성화된 session.cookie_httponly 옵션 체커는 php.ini에 session.cookie_httponly가 비활성화된 경우를 검출합니다.",
  "desc.BAD_INI.USING_TRANS_SID.PHP": "활성화된 session.use_trans_sid 옵션 체커는 php.ini에 session.use_trans_sid가 활성화된 경우를 검출합니다.",
  "desc.BAD_INIT.INIT_AFTER_FIELD_DECLARATION": "초기값이 있는 필드 변수 선언 체커는 선언과 동시에 초기화되는 필드 변수를 검출합니다.",
  "desc.BAD_INIT.MISSING_AFTER_DECLARATION": "변수 선언 시 초기화 구문 미사용 체커는 변수를 선언할 때 초기화 구문을 기술하지 않은 경우를 검출합니다.",
  "desc.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION": "초기화가 누락된 지역 변수 선언 체커는 초기화가 없는 변수 선언을 검출합니다.",
  "desc.BAD_INIT.PURE_VIRTUAL": "0으로 초기화하지 않은 순수 가상 함수 체커는 순수 가상 함수를 0으로 초기화하지 않은 경우를 검출합니다.",
  "desc.BAD_INITIALIZATION.ARRAY": "부적절한 배열 초기화 체커는 char 배열을 문자열로 초기화할 때 배열의 크기가 문자열 길이 + 1보다 작은 선언을 검출합니다.",
  "desc.BAD_INTEGER_CONST_DEFINITION": "잘못된 진법의 정수 체커는 정수 상수를 10진수가 아닌 진법(8진수나 16진수)으로 정의하는 코드를 검출합니다.",
  "desc.BAD_INTEGER_EXPRESSION": "정수 타입이 다른 피연산자에 대입 및 비교 연산자 사용 체커는 다른 정수 타입의 피연산자에 대입 연산자나 비교 연산자를 사용하는 코드를 검출합니다.",
  "desc.BAD_INTERFACE.ICLONEABLE.CSHARP": "금지된 인터페이스 구현 체커는 구현하지 않도록 지정한 인터페이스를 구현하는 경우를 검출합니다.",
  "desc.BAD_LINE_WRAPPING": "줄 바꿈 규칙 위반 체커는 수식이나 인자 목록을 여러 줄에 걸쳐 작성할 때 잘못된 위치에서 줄 바꿈 한 경우를 검출합니다.",
  "desc.BAD_MACRO.DANGEROUS_USAGE": "위험한 방식으로 매크로 사용 체커는 매크로에 괄호를 잘못 사용한 수식을 포함하거나 매크로를 함수처럼 사용하는 코드를 검출합니다.",
  "desc.BAD_MACRO.DUPLICATED": "매크로 중복 선언 체커는 매크로를 중복으로 선언한 코드를 검출합니다.",
  "desc.BAD_MACRO.MISUSE": "잘못된 순서로 매크로 사용 체커는 매크로를 사용할 때 공유 리소스에서 쌍으로 호출해야 하는 후속 함수를 누락한 코드를 검출합니다.",
  "desc.BAD_MACRO.MULTI_STMT_WITHOUT_DO_WHILE": "여러 줄 매크로에서 do-while 문 누락 체커는 여러 개의 구문으로 작성된 매크로를 do-while 문으로 감싸지 않는 코드를 검출합니다.",
  "desc.BAD_MACRO.NAME_LENGTH.MISRA2012": "잘못된 매크로의 이름 길이 체커는 매크로의 이름 길이가 63자를 넘어가는 코드를 검출합니다.",
  "desc.BAD_MACRO.NAMING": "잘못된 매크로 이름 체커는 정해진 규칙에 맞지 않는 매크로 이름을 검출합니다.",
  "desc.BAD_MACRO.NO_PARENTHESES": "매크로 선언시 파라미터와 상수는 괄호로 감싸야 합니다.",
  "desc.BAD_MACRO.REPLACE_SECURE_FUNCTIONS": "금지된 함수 이름으로 매크로 선언 체커는 금지된 함수 이름으로 매크로를 선언하는 코드를 검출합니다.",
  "desc.BAD_MACRO.TRAILING_SEMICOLON": "매크로 정의에 세미콜론 사용 체커는 매크로를 정의할 때 치환 문자열이 세미콜론으로 끝나는 코드를 검출합니다.",
  "desc.BAD_MACRO_USAGE": "표준 라이브러리 식별자를 객체처럼 사용 체커는 매크로로 구현되었을 가능성이 있는 표준 라이브러리 식별자를 객체처럼 다루는 경우를 검출합니다.",
  "desc.BAD_MALLOC": "잘못된 동적 메모리 할당 체커는 문자열의 크기를 고려하지 않고 malloc()을 호출하는 코드를 검출합니다.",
  "desc.BAD_MALLOC.OBJC": "malloc의 잘못된 사용 체커는 malloc() 함수 사용과 관련된 메모리 누출, 이중 해제 및 해제 후 사용을 검출합니다.",
  "desc.BAD_MALLOC.SIZEOF.OBJC": "부적절한 malloc 인자의 값 체커는 malloc() 함수의 인자로 전달하기 위한 sizeof 연산을 잘못 사용한 경우를 검출합니다.",
  "desc.BAD_METHOD_DECLARATION": "메소드 선언 규칙 위반 체커는 메소드를 선언할 때 들여쓰기와 공백을 적절히 사용하지 않은 경우를 검출합니다.",
  "desc.BAD_MUTEX_LOCK.OBJC": "잠금 해제 없이 시그널 체커는 뮤텍스 잠금을 해제하기 전에 시그널을 보내는 경우를 검출합니다.",
  "desc.BAD_NAME.BATCH.HANA": "클래스 이름이 정해진 규칙에 위배됩니다.",
  "desc.BAD_NAME.BATCH_FILENAME.PF": "적절하지 않은 배치 파일 이름입니다.",
  "desc.BAD_NAME.BM.PF": "적절하지 않은 BM 파일 이름입니다.",
  "desc.BAD_NAME.BU": "BU 명명 규칙 위반 체커는 BU의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.CLASS": "잘못된 클래스 이름 체커는 클래스 이름이 C로 시작하지 않거나, 끝이 _c 혹은 _class로 끝나지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.CLASS.ABAP": "잘못된 CLASS 변수 이름 체커는 명명 규칙을 위반한 CLASS 변수를 검출합니다.",
  "desc.BAD_NAME.CLASS_METHOD_SAVING_BANKS": "클래스 이름과 메소드 이름이 정해진 명명 규칙에 맞지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.CLASS_OR_INTERFACE": "잘못된 클래스 및 인터페이스 이름 체커는 정해진 규칙에 맞지 않는 클래스 혹은 인터페이스의 이름을 검출합니다.",
  "desc.BAD_NAME.CO.HANA": "클래스 이름이 정해진 규칙에 위배됩니다.",
  "desc.BAD_NAME.CONSTANT": "잘못된 상수 이름 체커는 정해진 규칙에 맞지 않는 상수 이름을 검출합니다.",
  "desc.BAD_NAME.CONSTANT_CLASS.KOREAPOST": "상수 클래스 명명 규칙 위반 체커는 상수 클래스 이름이 [애플리케이션_코드]+[상수_그룹_이름]+[Const]가 아닌 경우를 검출합니다",
  "desc.BAD_NAME.CONTEXT_VARIABLE.PF": "적절하지 않은 컨텍스트 구조체 변수 이름입니다.",
  "desc.BAD_NAME.DATA.ABAP": "잘못된 DATA 변수 이름 체커는 명명 규칙을 위반한 DATA 변수를 검출합니다.",
  "desc.BAD_NAME.DBIO.PF": "적절하지 않은 DBIO 파일 이름입니다.",
  "desc.BAD_NAME.DEFINE": "잘못된 매크로 상수 정의 체커는 매크로 상수 정의시 대문자와 _ 외에 다른 문자를 사용한 경우를 검출합니다.",
  "desc.BAD_NAME.DM": "DM 명명 규칙 위반 체커는 DM의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.DM.ANNOTATION": "DM 어노테이션 명명 규칙 위반 체커는 DM 어노테이션의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.DO.HANA": "클래스 이름 혹은 변수 이름이 정해진 규칙에 위배됩니다.",
  "desc.BAD_NAME.DU": "DU 명명 규칙 위반 체커는 DU의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.DU.ANNOTATION": "DU 어노테이션 명명 규칙 위반 체커는 DU 어노테이션의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.DUPLICATED": "중복된 이름 체커는 클래스, 메소드, 변수 간에 중복 사용되는 이름을 검출합니다.",
  "desc.BAD_NAME.DUPLICATED.MISRA2012": "매크로와 중복된 이름 체커는 매크로 이름과 동일한 식별자를 사용하는 변수나 함수를 검출합니다.",
  "desc.BAD_NAME.ENUM": "잘못된 열거형 이름 체커는 열거형 정의시 대문자와 _ 외에 다른 문자를 사용한 경우를 검출합니다.",
  "desc.BAD_NAME.ENUM_PREFIX": "enum 내 상수에 지정된 접두사 미사용 체커는 enum 내에서 선언된 상수들에 지정한 접두사가 없는 경우를 검출합니다.",
  "desc.BAD_NAME.FM": "FM 명명 규칙 위반 체커는 FM의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.FM.ANNOTATION": "FM 어노테이션 명명 규칙 위반 체커는 FM 어노테이션의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.FORM.ABAP": "잘못된 FORM 이름 체커는 명명 규칙을 위반한 FORM을 검출합니다.",
  "desc.BAD_NAME.FU": "FU 명명 규칙 위반 체커는 FU의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.FU.ANNOTATION": "FU 어노테이션 명명 규칙 위반 체커는 FU 어노테이션의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.FUNCTION.ABAP": "잘못된 함수 이름 체커는 명명 규칙을 위반한 함수를 검출합니다.",
  "desc.BAD_NAME.GLOBAL_IDENTIFIER_NAME.MISRA2012": "잘못된 전역 변수의 이름 길이(Misra2012) 체커는 static 혹은 extern으로 선언된 전역 변수의 식별자 길이가 63을 넘는 코드를 검출합니다.",
  "desc.BAD_NAME.GLOBAL_VARIABLE": "잘못된 전역 변수 이름 체커는 사전에 정의된 전역 변수 접두사를 사용하지 않은 전역 변수 선언을 검출합니다.",
  "desc.BAD_NAME.GRID_COUNTER.PF": "적절하지 않은 그리드 카운터 이름입니다.",
  "desc.BAD_NAME.INTERFACE.ABAP": "잘못된 인터페이스 이름 체커는 명명 규칙을 위반한 인터페이스를 검출합니다.",
  "desc.BAD_NAME.LOCAL_VARIABLE.CSHARP": "잘못된 지역 변수 이름 체커는 지역 변수 이름이 대문자로 시작된 경우를 검출합니다.",
  "desc.BAD_NAME.METHOD": "잘못된 메소드 이름 체커는 정해진 규칙에 맞지 않는 메소드 이름을 검출합니다.",
  "desc.BAD_NAME.METHOD.ABAP": "잘못된 메소드 이름 체커는 명명 규칙을 위반한 메소드를 검출합니다.",
  "desc.BAD_NAME.NAMESPACE.CSHARP": "잘못된 네임스페이스 이름 체커는 네임스페이스의 이름이 소문자로 시작된 경우를 검출합니다.",
  "desc.BAD_NAME.ONLINE.HANA": "클래스 이름 혹은 변수 이름이 정해진 규칙에 위배됩니다.",
  "desc.BAD_NAME.PACKAGE": "패키지 이름 규칙 위반 체커는 올바르지 않은 패키지 이름을 검출합니다.",
  "desc.BAD_NAME.PARAMETER": "잘못된 매개 변수 이름 체커는 필수적으로 사용해야 할 접두사를 사용하지 않은 매개 변수 변수 이름을 검출합니다.",
  "desc.BAD_NAME.PARAMETER.CSHARP": "잘못된 매개 변수 이름 체커는 매개 변수의 이름이 대문자로 시작된 경우를 검출합니다.",
  "desc.BAD_NAME.PM": "PM 명명 규칙 위반 체커는 PM의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.POINTER_VARIABLE": "잘못된 포인터 변수 이름 체커는 사전에 정의된 이름 형식을 사용하지 않은 포인터 변수 선언을 검출합니다.",
  "desc.BAD_NAME.PROGRAM.ABAP": "잘못된 PROGRAM 이름 체커는 명명 규칙을 위반한 PROGRAM 이름을 검출합니다.",
  "desc.BAD_NAME.PU": "PU 명명 규칙 위반 체커는 PU의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.PU.ANNOTATION": "PU 어노테이션 명명 규칙 위반 체커는 PU 어노테이션의 명명 규칙이 정해진 형태를 만족하지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.REPORT.ABAP": "잘못된 REPORT 이름 체커는 명명 규칙을 위반한 REPORT를 검출합니다.",
  "desc.BAD_NAME.SERVICE.PF": "적절하지 않은 서비스 파일 이름입니다.",
  "desc.BAD_NAME.SERVICE_IN_OUT.PF": "적절하지 않은 컨텍스트 구조체 변수 이름입니다.",
  "desc.BAD_NAME.SERVICE_STRUCT.PF": "서비스 입/출력 구조체 이름 혹은 입/출력 구조체의 SUB 구조체 이름이 적절하지 않습니다.",
  "desc.BAD_NAME.SPECIAL_CHARACTER": "특수문자가 포함된 이름 체커는 지정한 특수 문자가 포함된 변수, 메소드, 클래스 이름을 검출합니다.",
  "desc.BAD_NAME.TOO_LONG": "너무 긴 이름 체커는 지정한 길이를 초과한 함수 및 변수, 필드 선언을 검출합니다.",
  "desc.BAD_NAME.USER_DEFINED_TYPE": "잘못된 사용자 정의 타입 이름 체커는 사용자 정의 타입 이름이 T로 시작하지 않거나, _t 혹은 _type으로 끝나지 않는 경우를 검출합니다.",
  "desc.BAD_NAME.VARIABLE": "잘못된 변수 이름 체커는 정해진 규칙에 맞지 않는 변수 이름을 검출합니다.",
  "desc.BAD_NAME.VARIABLE.HANA": "변수 이름은 정해진 규칙에 따라야 합니다.",
  "desc.BAD_NAME.VARIABLE_BY_TYPE": "구조체 타입의 지역변수 선언 시 명명규칙을 따라야 합니다.",
  "desc.BAD_OPERATION_WHILE_POSIX_LOCK": "블록될 수 있는 연산 수행 체커는 POSIX 잠금이 걸린 상태에서 블록이 발생할 수 있는 연산을 수행하는 수식을 검출합니다.",
  "desc.BAD_OPERATOR.ASSIGNMENT_IN_COND": "잘못된 대입 연산자 사용 체커는 조건을 계산하기 위해 비교 연산을 사용해야 하는 부분에 할당 연산을 수행하는 코드를 검출합니다.",
  "desc.BAD_OPERATOR.ASSIGNMENT_IN_COND.CSHARP": "잘못된 대입 연산자 사용 체커는 조건을 계산하기 위해 비교 연산을 사용해야 하는 부분에 할당 연산을 수행하는 코드를 검출합니다.",
  "desc.BAD_OPERATOR.EXPRESSION_IN_SIZEOF": "sizeof 인자에 수식 사용 체커는 sizeof의 인자가 수식인 경우를 검출합니다.",
  "desc.BAD_OPERATOR.LOGICAL_COMPARISON": "잘못된 비교 연산자 사용 체커는 할당 연산을 사용해야 하는 부분에 비교 연산을 수행하는 코드를 검출합니다.",
  "desc.BAD_OPERATOR.MULTIPLE_VARIABLE_ASSIGNMENT": "한 번에 여러 변수에 대입 체커는 한 구문에서 두 개 이상의 변수에 대입이 일어나는 경우를 검출합니다.",
  "desc.BAD_OPERATOR.MULTIPLE_VARIABLE_ASSIGNMENT.CSHARP": "여러 변수에 할당 체커는 하나의 값을 두 개 이상의 변수에 대입한 경우를 검출합니다.",
  "desc.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS": "논리 연산자 중복 사용 체커는 하나의 수식에서 논리 연산자를 두 번 이상 사용한 수식을 검출합니다.",
  "desc.BAD_ORGANIZATION.CLASS": "잘못된 클래스 내부 구성 체커는 클래스의 멤버 선언이 적절한 순서로 이루어지지 않은 경우를 검출합니다.",
  "desc.BAD_OVERRIDE": "부정확한 오버라이딩 체커는 잘못 오버라이딩한 메소드 정의를 검출합니다.",
  "desc.BAD_PARAM.PFM_SET_ERR.PF": "PFM_SET_ERR 매크로의 첫 번째 파라미터는 업무코드 4자리 + 숫자 5자리가 와야합니다.",
  "desc.BAD_PARAMETER_IN_ABS_LIST_VIEW_SET_CHOICE_MODE": "setChoiceMode 메소드의 choiceMode 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ACTIVITY_GET_PREFERENCES": "getPreferences 메소드의 mode 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ACTIVITY_SET_PROGRESS": "setProgress 메소드의 progress 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ACTIVITY_START_INTENT_SENDER": "startIntentSender 메소드의 extraFlags 인자로 0 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ADDRESS_ADDRESS_LINE": "AddressLine 관련 메소드의 index 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ALARM_MANAGER_SET": "set, setInexactRepeating, setRepeating 메소드의 type, intervalMillis 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ALERT_DIALOG_SET_BUTTON": "setButton 메소드의 whichButton 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ANIMATION_RESOLVE_SIZE": "resolveSize 메소드의 type 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ANIMATION_SET_REPEAT_MODE": "setRepeatMode 메소드의 repeatMode 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_ANIMATION_SET_Z_ADJUSTMENT": "setZAdjustment 메소드의 zAdjustment 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_AUDIO_MANAGER_ADJUST_STREAM_VOLUME": "adjustStreamVolume 메소드의 streamType, direction 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_AUDIO_MANAGER_GET_VIBRATE_SETTING": "getVibrateSetting 메소드의 vibrateType 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_AUDIO_MANAGER_SET_RINGER_MODE": "setRingerMode 메소드의 ringerMode 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_AUDIO_MANAGER_SET_VIBRATE_SETTING": "setVibrateSetting 메소드의 vibrateType, vibrateSetting인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_AUDIO_MANAGER_SHOULD_VIBRATE": "shouldVibrate 메소드의 vibrateType 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_AUDIO_RECORD_GET_MIN_BUFFER_SIZE": "getMinBufferSize 메소드의 audioFormat 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_BINDER_TRANSACT": "transact 메소드의 code 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_BITMAP_CREATE_BITMAP": "createBitmap 메소드의 width, height 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_BLUETOOTH_CLASS_HAS_SERVICE": "hasService 메소드의 service 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_ANTIBANDING": "setWhiteBalance 메소드의 value 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_COLOR_EFFECT": "setColorEffect 메소드의 value 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_FLASH_MODE": "setFlashMode 메소드의 value 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_FOCUS_MODE": "setFocusMode 메소드의 value 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_SCENE_MODE": "setSceneMode 메소드의 value 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_WHITE_BALANCE": "setWhiteBalance 메소드의 value 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CANVAS_SAVE_LAYER": "saveLayer, saveLayerAlpha 메소드의 saveFlags 인자로 미리 정해진 상수 및 그것들의 or 연산 결과 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CONTEXT_BIND_SERVICE": "bindService 메소드의 flags 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CONTEXT_CREATE_PACKAGE_CONTEXT": "createPackageContext 메소드의 flags 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CONTEXT_GET_SYSTEM_SERVICE": "getSystemService 메소드의 name 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CONTEXT_PERMISSION_PID": "Context 클래스의 permission 관련 메소드의 pid 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_CRITERIA_SET_ACCURACY": "setAccuracy 메소드의 accuracy 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_DATE_UTILS_FORMAT_DATE_RANGE": "formatDateRange 메소드의 flags 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_DATE_UTILS_GET_AMPM_STRING": "getAMPMString 메소드의 ampm 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_DATE_UTILS_GET_DAY_OF_WEEK_STRING": "getDayOfWeekString 메소드의 dayOfWeek, abbrev 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_DATE_UTILS_GET_MONTH_STRING": "getMonthString 메소드의 month, abbrev 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_DRAWABLE_SET_ALPHA": "setAlpha 메소드의 alpha 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_DRAWABLE_SET_LEVEL": "setLevel 메소드의 level 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_GEOCODER_GET_FROM_LOCATION_LATITUDE": "getFromLocation 메소드의 latitude 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_GEOCODER_GET_FROM_LOCATION_LONGITUDE": "getFromLocation 메소드의 longitude 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_GESTURE_STORE_SET_ORIENTATION_STYLE": "setOrientationStyle 메소드의 style 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_GESTURE_STORE_SET_SEQUENCE_TYPE": "setSequenceType 메소드의 type 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_GLSURFACE_VIEW_SET_RENDER_MODE": "setRenderMode 메소드의 renderMode 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_GPS_STATUS_LISTENER_ON_GPS_STATUS_CHANGED": "onGpsStatusChanged 메소드의 event 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_INPUT_METHOD_SERVICE_GET_TEXT_FOR_IME_ACTION": "getTextForImeAction 메소드의 imeOptions 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_INPUT_METHOD_SERVICE_SEND_DOWN_UP_KEY_EVENTS": "sendDownUpKeyEvents 메소드의 keyEventCode 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_INTENT_ADD_SET_FLAGS": "addFlags, setFlags 메소드의 flags 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_INTENT_FILTER_ADD_DATA_PATH": "addDataPath 메소드의 type 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_INTENT_FILTER_SET_PRIORITY": "setPriority 메소드의 priority 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_INTENT_PARSE_URI": "parseUri 메소드의 flags 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_LAYOUT_ANIMATION_CONTROLLER_SET_ORDER": "setOrder 메소드의 order 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_LOCATION_CONVERT_COORDINATE": "convert 메소드의 coordinate 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_LOCATION_CONVERT_OUTPUT_TYPE": "convert 메소드의 outputType 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_LOCATION_LISTENER_ON_STATUS_CHANGED": "onStatusChanged 메소드의 status 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_META_KEY_KEY_LISTENER_GET_META_STATE": "getMetaState 메소드의 meta 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_MOTION_EVENT_OBTAIN": "obtain 메소드의 action 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PACKAGE_MANAGER_FLAG_ZERO": "PackageManager 클래스의 몇몇 메소드의 flags 인자로 0 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PACKAGE_MANAGER_SET_APPLICATION_ENABLED_SETTING": "setApplicationEnabledSetting 메소드의 newState 및 flags 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PACKAGE_MANAGER_SET_COMPONENT_ENABLED_SETTING": "setComponentEnabledSetting 메소드의 newState 및 flags 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PAINT_SET_TEXT_SIZE": "setTextSize 메소드의 textSize 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PARCELABLE_WRITE_TO_PARCEL": "writeToParcel 메소드의 flags 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PHONE_NUMBER_UTILS_CALLED_PARTY_BCD_TO_STRING": "calledPartyBCDToString 메소드의 length 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PHONE_STATE_LISTENER_ON_CALL_STATE_CHANGED": "onCallStateChanged 메소드의 state 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PHONE_STATE_LISTENER_ON_DATA_ACTIVITY": "onDataActivity 메소드의 direction 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_PHONE_STATE_LISTENER_ON_DATA_CONNECTION_STATE_CHANGED": "onDataConnectionStateChanged 메소드의 state 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_POPUP_WINDOW_SET_INPUT_METHOD_MODE": "setInputMethodMode 메소드의 mode 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_SENSOR_MANAGER_REGISTER_LISTENER": "registerListener 메소드의 samplingPeriodUs 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_SENSOR_MANAGER_REMAP_COORDINATE_SYSTEM": "remapCoordinateSystem 메소드의 X, Y 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_SOUND_EFFECT_CONSTANTS_GET_CONTANT_FOR_FOCUS_DIRECTION": "getContantForFocusDirection 메소드의 direction 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_TELEPHONY_MANAGER_LISTEN": "listen 메소드의 events 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_TEXT_TO_SPEECH_QUEUE_MODE": "playEarcon, playSilence, speak 메소드의 queueMode 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_TIME_SET_MONTH": "set 메소드의 month 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_TIME_SET_MONTH_DAY": "set 메소드의 monthDay 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_VELOCITY_TRACKER_COMPUTE_CURRENT_VELOCITY": "computeCurrentVelocity 메소드의 maxVelocity 인자가 정해진 범위를 벗어난 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_VIEW_FOCUS": "View 클래스의 focus 관련 메소드의 direction 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_VIEW_FOCUS_SEARCH": "focusSearch 메소드의 direction 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_VIEW_GROUP_SET_DESCENDANT_FOCUSABILITY": "setDescendantFocusability 메소드의 focusability 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_VIEW_GROUP_SET_PERSISTENT_DRAWING_CACHE": "setPersistentDrawingCache 메소드의 drawingCacheToKeep 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_VIEW_SET_DRAWING_CACHE_QUALITY": "setDrawingCacheQuality 메소드의 quality 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_VIEW_SET_SCROLL_BAR_STYLE": "setScrollBarStyle 메소드의 style 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARAMETER_IN_VIEW_SET_VISIBILITY": "setVisibility 메소드의 visibility 인자로 미리 정해진 상수 외의 값을 전달하는 경우를 검출합니다.",
  "desc.BAD_PARENTHESIS": "괄호 공백 규칙 위반 체커는 괄호를 사용할 때 지켜야할 공백 사용 규칙을 위반한 경우를 검출합니다.",
  "desc.BAD_PASSWORD.EMPTY.OBJC": "비어 있는 비밀번호 체커는 비어 있는 비밀번호를 사용하는 코드를 검출합니다.",
  "desc.BAD_PASSWORD.EMPTY.SWIFT": "비어 있는 비밀번호 체커는 비어 있는 비밀번호를 사용하는 코드를 검출합니다.",
  "desc.BAD_PASSWORD.HARDCODED.OBJC": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.",
  "desc.BAD_PASSWORD.HARDCODED.SWIFT": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.",
  "desc.BAD_PATH_MANIPULATION": "너무 작은 경로 버퍼 체커는 PathAppend() 함수 호출 시 경로를 담을 버퍼의 크기가 너무 작은 수식을 검출합니다.",
  "desc.BAD_POSITION.LITERAL_IN_EQUALS.CSHARP": "변수에 대해 Equals 사용 체커는 변수.Equals(리터럴) 형태의 구문을 사용한 경우를 검출합니다.",
  "desc.BAD_PRIVILEGE_ASSIGNMENT": "seteuid() 함수의 잘못된 사용 체커는 seteuid() 함수를 사용하여 사용자에게 높은 권한을 부여하는 코드를 검출합니다.",
  "desc.BAD_PRIVILEGE_CONTROL.OBJC": "안전하지 않은 권한 제어 체커는 seteuid() 함수를 사용한 루트 권한 획득을 검출합니다.",
  "desc.BAD_PRIVILEGE_RELINQUISHMENT": "잘못된 순서로 권한 포기 체커는 잘못된 순서로 다수의 권한을 포기하는 코드를 검출합니다.",
  "desc.BAD_PRIVILEGE_RELINQUISHMENT.OBJC": "잘못된 순서로 권한 포기 체커는 잘못된 순서로 다수의 권한을 포기하는 코드를 검출합니다.",
  "desc.BAD_PRIVILEGE_RESET.OBJC": "안전하지 않은 권한 초기화 체커는 chroot() 함수 호출 후 seteuid() 함수 호출로 권한을 다시 초기화하지 않는 경우를 검출합니다.",
  "desc.BAD_QUALIFIER.FORBIDDEN": "금지된 한정자 키워드 사용 체커는 옵션에 금지된 한정자를 사용하여 변수를 선언하는 코드를 검출합니다.",
  "desc.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR": "함수의 포인터형 매개변수에 한정자 사용 체커는 옵션에 지정된 특정 함수의 매개변수 자료형으로 포인터를 선언할 때 지정된 한정자를 사용하는 코드를 검출합니다.",
  "desc.BAD_QUALIFIER.REQUIRED.PARAM_PTR": "함수의 포인터형 매개변수에 한정자 미사용 체커는 옵션에 지정된 특정 함수의 매개변수 자료형으로 포인터를 선언할 때 지정된 한정자를 사용하지 않은 코드를 검출합니다.",
  "desc.BAD_QUERY_TO_CUD_OTHER_APP.XSQL.CONFIG": "타 애플리케이션 DB C/U/D 쿼리 금지 체커는 DM이 수행하는 쿼리가 다른 애플리케이션 테이블의 생성, 수정, 삭제인 경우를 검출합니다.",
  "desc.BAD_QUERY_TO_R_OTHER_APP.XSQL.CONFIG": "타 애플리케이션 DB Read 쿼리 금지 체커는 DM이 수행하는 쿼리가 다른 애플리케이션 테이블을 읽는 경우를 검출합니다.",
  "desc.BAD_RETURN_IN_IF_STATEMENT": "if-else 반환문의 잘못된 사용 체커는 if-else 반환문에 return 문만 존재하는 코드를 검출합니다.",
  "desc.BAD_RETURN_TEST": "조건문의 비교 구문에서 정수형을 반환하는 함수 호출 체커는 if, while 및 for 의 비교문에서 정수형을 반환하는 함수를 피연산자로 호출하는 동시에 비교 연산자를 사용하지 않는 코드를 검출합니다.",
  "desc.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.",
  "desc.BAD_SECURITY_DECISION.UNTRUSTED_INPUT.PHP": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.",
  "desc.BAD_SEMICOLON.WHILE_STATEMENT": "Do while 문에서 while의 세미콜론 ';' 앞에는 공백이 없어야 합니다.",
  "desc.BAD_STRING_INSTANTIATION.CSHARP": "문자열의 인스턴스화 체커는 new String()을 사용한 경우를 검출합니다.",
  "desc.BAD_STRING_IN_COMMENT": "주석문에 헷갈리는 문자열 포함 체커는 주석문 안에 /*, */, // 와 같은 문자열이 포함된 경우를 검출합니다.",
  "desc.BAD_STRING_MANAGEMENT": "안전하지 않은 윈도우의 멀티 바이트 문자열 함수 사용 체커는 윈도우에서 제공하는 멀티 바이트 문자열 함수들 중 보안에 안전하지 않은 함수를 사용한 경우를 검출합니다.",
  "desc.BAD_STRUCT.ALIGNMENT": "데이터 정렬 배수가 아닌 구조체 크기 체커는 옵션에 지정된 데이터 정렬(data alignment)의 배수가 아닌 구조체 크기를 사용하는 코드를 검출합니다.",
  "desc.BAD_STRUCT.PADDING": "구조체 정의 시 패딩 비트 발생 체커는 구조체를 정의할 때 패딩 비트를 발생시키는 코드를 검출합니다.",
  "desc.BAD_STRUCT.SIZE": "너무 큰 구조체 체커는 옵션에 지정된 최대 구조체 크기를 초과하는 구조체를 정의하는 코드를 검출합니다.",
  "desc.BAD_STRUCT_MEMBER_ACCESS": "구조체 필드의 접근 횟수 제한 체커는 옵션에 지정된 특정 구조체의 필드에 지정된 횟수를 초과하여 접근하는 코드를 검출합니다.",
  "desc.BAD_SUFFIX_FOR_LONG_VALUE": "잘못된 long 타입 접미사 사용 체커는 long 타입 상수에서 소문자 L을 접미사로 사용하는 수식을 검출합니다.",
  "desc.BAD_THROW.FORBIDDEN_EXCEPTION": "허용되지 않은 타입의 예외 던짐 체커는 허용된 종류 이외의 예외 객체를 던지는 경우를 검출합니다.",
  "desc.BAD_TRY_CATCH_MACRO_USAGE": "잘못된 순서의 TRY CATCH 매크로 체커는 TRY CATCH 매크로를 사용할 때 CATCH 레이블 뒤에 TRY 매크로를 다시 사용하는 코드를 검출합니다.",
  "desc.BAD_TYPE.FLOAT": "금지된 실수 타입 사용 체커는 실수 타입 중 허용되지 않은 타입이 사용된 경우를 검출합니다.",
  "desc.BAD_TYPE.FORBIDDEN": "금지된 자료형 변수 선언 체커는 옵션에 지정된 자료형으로 변수를 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.FORBIDDEN.CHAR": "char 자료형 선언 사용 체커는 char 배열을 선언하는 경우를 제외하고 char 자료형을 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.FORBIDDEN.FLOAT": "부동 소수점 자료형 변수 선언 체커는 변수를 부동 소수점 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.INTEGER": "금지된 정수형 사용 체커는 정수형 중 허용되지 않은 타입이 사용된 경우를 검출합니다.",
  "desc.BAD_TYPE.NOT_ALLOWED": "허용되지 않은 자료형 지역 변수 선언 체커는 지역 변수를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_ALLOWED.ARRAY": "허용되지 않은 배열 자료형 지역 변수 선언 체커는 지역 변수의 배열 자료형을 허용되지 않은 배열 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_ALLOWED.COMPOUND": "허용되지 않은 자료형 복합형 변수 선언 체커는 배열, 문자열, 구조체와 같은 복합형 변수(compound variable)를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_ALLOWED.PTR": "허용되지 않은 자료형 포인터 변수 선언 체커는 포인터 변수를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_ALLOWED.TYPEDEF": "허용되지 않은 typedef 자료형 typedef 변수 선언 체커는 typedef을 통해 재정의된 미지정 자료형을 변수 또는 매개변수 선언에 사용하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_TYPEDEF": "재정의된 자료형이 아닌 변수 또는 함수 선언 체커는 변수 또는 함수를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_TYPEDEF.ARRAY": "재정의된 배열 자료형이 아닌 변수 또는 함수 선언 체커는 변수 또는 함수를 재정의된 자료형이 아닌 배열 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_TYPEDEF.MEMBER": "재정의된 자료형이 아닌 멤버 선언 체커는 멤버를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_TYPEDEF.PARAM": "재정의된 자료형이 아닌 매개변수 선언 체커는 옵션에 지정된 특정 위치의 매개변수를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_TYPEDEF.PTR": "재정의된 포인터 자료형이 아닌 변수 또는 함수 선언 체커는 변수 또는 함수를 재정의된 자료형이 아닌 포인터 자료형으로 선언하는 코드를 검출합니다.",
  "desc.BAD_TYPE.NOT_TYPEDEF.RETURN": "재정의된 자료형 함수 반환 체커는 옵션에 지정된 재정의 자료형이 아닌 자료형을 함수의 반환 타입으로 사용하는 코드를 검출합니다.",
  "desc.BAD_TYPE_CHECKING.VBS": "빈 값 검사 누락 체커는 빈 값 여부를 먼저 검사하지 않고 타입 검사를 하는 경우를 검출합니다.",
  "desc.BAD_TYPE_DECLARATION": "타입 선언 코딩 표준을 준수해야 합니다.",
  "desc.BAD_USE_SHIFT_OPERATORS_IN_SAME_DATA": "동일 데이터에 비트 연산과 산술 연산의 동시 수행 금지 체커는 동일한 데이터에 대해 산술 연산과 비트 연산이 동시에 수행되는 코드를 검출합니다.",
  "desc.BAD_VARIABLE_DECLARATION": "변수 선언 규칙 위반 체커는 변수 여러 개를 연속적으로 선언할 때 적당한 순서와 묶음으로 선언하지 않는 경우를 검출합니다.",
  "desc.BAD_VARIABLE_DECLARATION.FIELD": "필드 변수 선언 순서 위반 체커는 클래스의 필드 변수들을 정해진 순서에 맞게 선언하지 않은 경우를 검출합니다.",
  "desc.BAD_VARIABLE_DECLARATION.LOOP": "잘못된 루프 카운터 선언 체커는 for 구문의 루프 카운터 변수가 적절하게 선언되지 않은 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.ACCESSING": "접근 연산자 공백 규칙 위반 체커는 특정 객체의 내부에 접근할 때 사용하는 연산자들과 피연산자 사이에 공백이 있는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.ASSERT_KEYWORD": "assert 키워드 주위 공백 규칙 위반 체커는 assert 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.BASIC_OPERATORS": "연산자 사이 공백 누락 체커는 연산자 사이에 공백이 누락된 수식을 검출합니다.",
  "desc.BAD_WHITESPACE.CALL": "메소드 호출 시 공백 규칙 위반 체커는 함수 호출 시 함수 및 인자, 괄호 사이의 공백 규칙을 위반한 수식을 검출합니다.",
  "desc.BAD_WHITESPACE.CASTING": "캐스팅 공백 규칙 위반 체커는 캐스팅 연산자와 피연산자 사이에 공백이 없는 수식을 검출합니다.",
  "desc.BAD_WHITESPACE.CATCH_STATEMENT": "catch 구문 공백 규칙 위반 체커는 catch 구문과 괄호에 적절한 공백이 사용되지 않은 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.COMMA": "콤마 공백 규칙 위반 체커는 콤마 연산자를 사용할 때 공백 규칙을 위반한 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.DO_KEYWORD": "do-while 키워드 주위 공백 규칙 위반 체커는 do-while 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.FOR_KEYWORD": "for 키워드 주위 공백 규칙 위반 체커는 for 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.FOR_STATEMENT": "for 구문 공백 규칙 위반 체커는 for 구문의 표현식 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.FUNCTION": "함수 공백 규칙 위반 체커는 함수의 이름과 그 뒤의 괄호 사이에 공백이 있는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.IF_KEYWORD": "If 키워드 주위 공백 규칙 위반 체커는 if, else if 등의 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.IF_STATEMENT": "if 구문 공백 규칙 위반 체커는 if 구문에서 적절하게 공백이 사용되지 않은 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.INC_DEC_EXPRESSION": "증분 혹은 감소 연산자에서 잘못된 공백 사용 체커는 증분이나 감소 연산자를 사용할 때 피연산자와 연산자 사이에 공백이 있는 코드를 검출합니다.",
  "desc.BAD_WHITESPACE.KEYWORD": "키워드 주위 공백 규칙 위반 체커는 if, for, while 등의 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.POINTER": "포인터 공백 규칙 위반 체커는 포인터 연산자와 피연산자 사이에 공백이 있는 수식을 검출합니다.",
  "desc.BAD_WHITESPACE.SEMICOLON": "세미콜론 주위 공백 규칙 위반 체커는 세미콜론(;) 앞에 공백이 있는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.SWITCH_KEYWORD": "switch 키워드 주위 공백 규칙 위반 체커는 switch 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.SWITCH_STATEMENT": "switch 구문 공백 규칙 위반 체커는 switch 구문에서 적절하게 공백이 사용되지 않은 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.TRY_KEYWORD": "try-catch 키워드 주위 공백 규칙 위반 체커는 try-catch 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.WHILE_KEYWORD": "while 키워드 주위 공백 규칙 위반 체커는 while 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.",
  "desc.BAD_WHITESPACE.WHILE_STATEMENT": "while 구문 공백 규칙 위반 체커는 while 조건식과 여는 중괄호 사이에 공백이 없는 코드를 검출합니다.",
  "desc.BASE_CLASS_NOT_BE_VITRUAL_AND_NON_IN_SAME_HIERARCHY": "같은 계층 간 다른 상속 사용 체커는 최상위 부모 클래스의 상속 방식이 한가지로 이루어져 있지 않은 자식 클래스를 검출합니다.",
  "desc.BASE_CLASS_SHOULD_BE_DECLARED_VIRTUAL_ONLY_IN_DIAMOND_HIERARCHY": "다이아몬드 문제가 발생하는 비가상 상속 관계 체커는 다이아몬드 계층 구조를 가지는 부모 클래스를 가상으로 상속하지 않은 자식 클래스를 검출합니다.",
  "desc.BEAN_MEMBERS_SHOULD_SERIALIZE": "직렬화 가능하지 않은 bean 클래스 체커는 직렬화가 가능하지 않은 bean 클래스를 사용하면 이슈를 검출합니다.",
  "desc.BEWARE_LARGER_SIZE_INT_EXPR": "정수 연산 전 확장 캐스팅 누락 체커는 정수에 대해 비교 또는 사칙연산을 수행하기 전에 적절한 표현 범위를 갖는 타입으로 캐스팅하지 않는 경우를 검출합니다.",
  "desc.BEWARE_OF_COMPILER_OPTIMIZATIONS": "컴파일러 최적화에 의한 중요 정보 노출 체커는 컴파일러의 최적화에 의해 중요 정보를 정리하는 코드가 삭제되어 중요 정보가 노출될 가능성이 있는 경우를 검출합니다.",
  "desc.BEWARE_OF_PRECISION_LOSS": "정수에서 실수로 캐스팅하여 정밀도 손실 체커는 표현이 가능한 범위 차이에 의해 정밀도 손실이 일어날 수도 있는 정수형에서 실수형으로의 캐스팅을 검출합니다.",
  "desc.BEWARE_RACE_CONDITION": "fork() 함수에서 경쟁 조건 발생 체커는 파일 지시자와 fork() 함수를 동시에 사용하여 경쟁 조건이 발생하는 경우를 검출합니다.",
  "desc.BEWARE_THIRD_PARAM_IN_MAIN": "환경 변수 포인터에 의존 체커는 메인 함수의 인자로 전달된 환경 변수 포인터에 의존하는 수식을 검출합니다.",
  "desc.BEWARE_USE_FLEXIBLE_ARRAY_MEMBER": "가변 배열 필드를 가진 동적 생성하지 않은 구조체 체커는 가변 배열 필드를 가진 구조체를 동적으로 생성하지 않는 경우를 검출합니다.",
  "desc.BITFIELD_SIGNED_TYPE_AT_LEAST_TWO_BITS": "1비트로 선언한 signed 타입 비트 필드 체커는 비트 필드의 타입이 signed 타입이며 비트 필드의 크기가 1비트인 선언을 검출합니다.",
  "desc.BITWISE_OPERANDS_SHOULD_HAVE_SAME_TYPE": "타입이 서로 다른 비트 연산자의 피연산자 체커는 비트 연산자의 피연산자 타입이 서로 다른 수식을 검출합니다.",
  "desc.BITWISE_OPERATION_BOOLEAN": "진리 타입에 비트 연산 사용 체커는 참이나 거짓을 나타내는 타입의 값을 대상으로 비트 연산을 사용하는 경우를 검출합니다.",
  "desc.BITWISE_RESULT_SHALL_CAST_IMMEDIATELY": "unsigned 비트 연산의 캐스팅 누락 체커는 비트 연산에서 unsigned char 혹은 unsigned short 타입의 피연산자를 즉시 피연산자 타입으로 캐스팅하지 않은 수식을 검출합니다.",
  "desc.BIT_FIELDS_SHALL_BE_EXPLICIT_SIGNGED_TYPE": "허용되지 않은 타입으로 비트 필드 선언 체커는 비트 필드의 타입이 허용되지 않은 타입인 선언을 검출합니다.",
  "desc.BIT_OPERATION_ON_LOGICAL_EXPR": "조건문 안에서 or(|)과 and(&) 연산을 사용해서는 안됩니다.",
  "desc.BODY_SHOULD_BE_HIDDEN_WHEN_UNDEREFERENCED": "구조체 및 공용체 내부 구현 노출 체커는 구조체 혹은 공용체가 멤버 참조 연산의 피연산자로 사용되지 않았는데도 내부의 필드 구성이 코드에 포함되어 있는 경우를 검출합니다.",
  "desc.BOOLEAN_EXPR_IN_SWITCH": "switch 구문의 조건부에 Boolean 값 사용 체커는 조건부에 일반 변수가 아니라 Boolean 값이 나오는 switch 구문을 검출합니다.",
  "desc.BRACE_OF_STATEMENT_SHOULD_OCCUPY_LINE": "개별 라인을 가지지 않은 중괄호 형식 체커는 조건문이나 반복문의 중괄호가 각각 한 라인을 가지지 않은 경우를 검출합니다.",
  "desc.BSSC.NAMING_CONVENTION.FUNCTION": "BSSC 함수 명명 규칙 위반 체커는 함수의 이름이 BSSC 함수 명명 규칙을 위반하는 경우를 검출합니다.",
  "desc.BSSC.NAMING_CONVENTION.VARIABLE": "BSSC 변수 명명 규칙 위반 체커는 변수 이름이 BSSC 규칙을 위반하는 경우를 검출합니다.",
  "desc.BYTE_COMPARISON_STRUCT": "memcmp() 함수에 구조체 객체 사용 체커는 memcmp()의 피연산자로 구조체 객체를 사용하는 수식을 검출합니다.",
  "desc.BadBitmaskCheck": "연산자 '|'는 하나의 피연산자라도 0이 아닌 경우 항상 참입니다. '&'을 사용하려고 하셨습니까?",
  "desc.BadComparison": "비교할 때 == 을 이용하여 'Double.NaN' 혹은 'Float.NaN' 등과 비교하는 경우를 이를 검출합니다.",
  "desc.BeanMembersShouldSerialize": "만일 클래스가 bean이거나 bean으로부터 직접적, 혹은 간접적으로 참조될 경우 serializable될 필요가 있습니다.",
  "desc.BigIntegerInstantiation": "BigInteger.ZERO, BigInteger.ONE이나, BigInteger.TEN, BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.TEN(Java 1.5이상)등의 인스턴스를 생성하는 경우 이를 검출합니다.",
  "desc.BitwiseOnBoolean": "부울 자료형 변수가 비트 단위 연산자에 사용됩니다.",
  "desc.BooleanGetMethodName": "Boolean 타입을 반환하는 메소드가 'getX()'와 같이 이름 지어진 경우 이를 검출합니다.",
  "desc.BooleanInstantiation": "불린 값을 정의하며 선언시 new 혹은 valueOf() 등의 구문 사용을 검출합니다.",
  "desc.BooleanInversion": "비교할 때 =! pattern을 검출합니다.",
  "desc.BoostForeachError": "BOOST_FOREACH는 end() 반복자를 저장하고 있습니다. 컨테이너 내부를 변형하는 것은 정의되지 않은 행동입니다.",
  "desc.BrokenNullCheck": "널 검사를 수행하나, || 의 사용 등으로 인해 널 검사의 의미가 없어지는 경우 이를 검출합니다.",
  "desc.BufferAccessOutOfBounds": "버퍼의 범위를 벗어났습니다.",
  "desc.BufferNotZeroTerminated": "strncpy() 호출 뒤에 버퍼가 null로 종료되지 않습니다.",
  "desc.ByteInstantiation": "'new Byte', 'new java.lang.Byte' 등의 allocation 구문을 검출합니다.",
  "desc.CALL_AND_MESSAGE.OBJC": "함수 호출 및 메시징의 논리 오류 체커는 함수 호출과 메시지 전달 상의 논리적 오류를 검출합니다.",
  "desc.CALL_EVERY_FUNCTION_GLOBAL": "한 번도 호출되지 않은 함수 체커는 함수 본문은 정의하었지만 한 번도 호출되지 않은 함수를 검출합니다.",
  "desc.CALL_ORDER_POSSIBLE_SIDE_EFFECT": "논리 연산자의 우측항에서 함수 호출 체커는 논리 연산자의 우측항에서 함수를 호출하는 수식을 검출합니다.",
  "desc.CALL_SUPER": "부모 클래스 메소드 호출 누락 체커는 부모 클래스의 메소드를 호출해야 하는데 빠뜨린 메소드 오버라이딩 정의를 검출합니다.",
  "desc.CALL_SUPER_IN_CONSTRUCTOR": "상속 받는 클래스 생성자에서 super() 또는 다른 생성자를 미호출 체커는 상속 받는 클래스 생성자에서 super() 또는 다른 생성자를 호출하지 않으면 검출합니다.",
  "desc.CALL_UNINIT_VAR_WITH_CONST": "초기화되지 않은 포인터를 읽기 전용 인자로 전달 체커는 포인터가 가리키는 값을 초기화하지 않고 함수의 읽기 전용 인자로 전달하는 경우를 검출합니다.",
  "desc.CALL_VAARG_ON_INDETERMINATE_VALIST": "가변 길이 인자의 잘못된 재사용 체커는 가변 길이 인자 va_list 객체를 임의로 다른 함수에 전달하여 알 수 없는 값이 된 상태로 va_arg() 함수를 다시 호출하는 경우를 검출합니다.",
  "desc.CALL_VIRTUAL_IN_CONSTRUCTOR": "생성자나 소멸자에서 가상 함수를 직간접적으로 호출하지 마십시오.",
  "desc.CALL_VIRTUAL_WITHOUT_QUALIFIER_IN_CTOR_DTOR": "생성자에서 한정자 없는 가상 함수 호출 체커는 생성자 내부에서 한정자를 표시하지 않은 가상 함수을 호출한 수식을 검출합니다.",
  "desc.CANONICALIZE_URL_RECEIVED_BY_PROVIDER": "컨텐트 프로바이더를 통한 파일 교환 전 정규화 누락 체커는 컨텐트 프로바이더를 통해 파일을 교환하기 전에 파일 이름을 정규화하지 않는 코드를 검출합니다.",
  "desc.CASE_ENDS_WITH_WHEN_OTHERS.ABAP": "부적절한 WHEN OTHERS 절 위치 체커는 CASE 구문 중간에 있는 WHEN OTHERS 절을 검출합니다.",
  "desc.CAST_AFTER_MEM_ALLOC": "메모리 할당 값을 캐스팅 없이 사용 체커는 메모리 할당 값을 할당된 타입으로 캐스팅하지 않고 사용하는 경우를 검출합니다.",
  "desc.CAST_ALTERS_VALUE": "형변환(Type Casting)이 대상 값을 변경시키는 경우에 발생하는 오류입니다.",
  "desc.CAST_ALTERS_VALUE.EXT": "정수값에 대한 위험한 다운캐스팅 체커는 확인 없이 정수값을 표현범위가 줄어드는 방향으로 캐스팅하는 경우를 검출합니다.",
  "desc.CAST_ALTERS_VALUE.HORUS": "형변환(Type Casting)이 대상 값을 변경시키는 경우에 발생하는 오류입니다.",
  "desc.CAST_CHAR_TO_UNSIGNED_BEFORE_CONVERTING_INT": "문자를 큰 정수형 값으로 바로 변환 체커는 문자를 큰 정수값으로 변환하기 전에 unsigned 정수형 값을 거치지 않는 경우를 검출합니다.",
  "desc.CATCH_ALL_EXCEPTIONS_THROWN_EXPLICITLY": "명시적인 예외 처리에 catch 문 미처리 체커는 코드에서 명시적으로 던져지는 각 예외가 해당 지점으로 이어질 수있는 모든 호출 경로에서 호환 가능한 유형의 핸들러를 가지지 않은 경우를 검출합니다.",
  "desc.CATCH_EXCEPTIONS_BY_REFERENCE": "참조형이 아닌 타입을 예외로 받음 체커는 던진 예외를 참조형이 아닌 타입으로 받는 catch 구문을 검출합니다.",
  "desc.CATCH_EXCPETIONS_IN_HIERACHICAL_ORDER": "try-catch 문에서 여러 개의 핸들러가 있을 때, 핸들러는 하위 클래스부터 기초 클래스 순으로 선언해야 합니다.",
  "desc.CATCH_NULL_REFERENCE_EXCEPTION.CSHARP": "NullReferenceException 예외 처리 체커는 NullReferenceException을 catch하는 경우를 검출합니다.",
  "desc.CHECK.DUPLICATED_PARAM": "중복 매개 변수 사용 체커는 특정 함수를 호출할 때 동일한 매개 변수 변수를 사용한 경우를 검출합니다.",
  "desc.CHECK.FIELD_ARRAY_LENGTH": "불충분한 필드 길이 체커는 특정 구조체의 특정 필드 길이가 지정한 길이보다 짧은 경우를 검출합니다.",
  "desc.CHECK_ALIGNMENT_OF_MEMORY": "aligned_alloc() 함수로 할당한 메모리 재할당 체커는 aligned_alloc() 함수로 할당된 메모리를 realloc() 함수로 재할당하는 코드를 검출합니다.",
  "desc.CHECK_ERROR_AFTER_SETTING_ERRNO": "errno 설정 함수를 호출하면, 다음 함수 호출 이전에 errno 값을 0과 비교하여 오류 여부를 확인해야 합니다. errno는 오류가 발생하면 0이 아닌 값으로 설정되며, 설정 함수가 오류를 감지하지 않으면 값이 수정되지 않습니다.",
  "desc.CHECK_EXIST_LINK_FILES": "심볼릭 링크 확인 없이 파일 열기 체커는 심볼릭 링크의 존재를 확인하지 않고 파일을 여는 경우를 검출합니다.",
  "desc.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY": "누락된 실수 입력에 대한 Infinity 검사 체커는 부동 소수점을 가질 수 있는 외부 입력값을 적절하게 검사하지 않는 코드를 검사합니다.",
  "desc.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_NAN": "누락된 실수 입력에 대한 NaN 검사 체커는 부동 소수점을 가질 수 있는 외부 입력값을 적절하게 검사하지 않는 코드를 검사합니다.",
  "desc.CHECK_FOR_ASSIGNING_OBJECT_TO_ITSELF": "복사 대입 연산자에서 동일 포인터 미검사 체커는 인자로 넘어온 객체가 자기 자신과 같은지 비교하는 로직이 빠져 있는 복사 대입 연산자 선언을 검출합니다.",
  "desc.CHECK_POINTER_TYPE_OF_MEM_FUNCTIONS": "표준 라이브러리 함수인 memcpy, memmove, memcmp에 전달되는 포인터 인자들은 서로 호환되는 타입이어야 한다고 명시하고 있습니다. 이 함수들은 포인터 타입에 대해 엄격한 타입 호환성을 요구하기 때문입니다. 호환되지 않는 타입의 포인터를 사용하면 예상치 못한 동작을 유발할 수 있습니다.",
  "desc.CHECK_PTHREAD_MUTEX_LOCK_RETURN.OBJC": "pthread_mutex_lock 반환 값 검사 누락 체커는 pthread_mutex_lock() 함수를 호출하고 반환 값을 검사하지 않는 경우를 검출합니다.",
  "desc.CHROOT_JAIL_WITHOUT_CHANGE_WORK_DIR": "chroot() 함수 뒤에 chdir() 함수 누락 체커는 chroot() 함수로 루트 디렉토리를 변경한 후에 chdir() 함수로 디렉토리를 수정하지 않는 코드를 검출합니다.",
  "desc.CLASSCAST": "컬렉션 내 객체에 대한 위험한 다운캐스팅 체커는 컬렉션에 요소를 넣은 뒤, 그 컬렉션에서 다시 꺼낸 요소를 다른 타입으로 캐스팅하는 코드를 검출합니다.",
  "desc.CLASS_COMMENT": "클래스 주석의 형식 체커는 형식에 어긋난 클래스 주석을 검출합니다.",
  "desc.CLASS_MEMBER_SHOULD_NOT_BE_PUBLIC": "public으로 정의한 필드 체커는 클래스 선언에서 public 접근 한정자를 가지는 필드를 검출합니다.",
  "desc.CLASS_SHOULD_DECLARE_ASSIGNMENT_OPERATOR": "복사 대입 연산자를 정의하지 않은 클래스 체커는 명시적인 복사 대입 연산자를 정의하지 않은 클래스 선언을 검출합니다.",
  "desc.CLASS_SHOULD_DECLARE_CONSTRUCTOR": "생성자를 정의하지 않은 클래스 체커는 다만 1개의 명시적인 생성자도 정의하지 않은 클래스 선언을 검출합니다.",
  "desc.CLASS_SHOULD_DECLARE_COPY_CONSTRUCTOR": "복사 생성자를 정의하지 않은 클래스 체커는 명시적인 복사 생성자를 정의하지 않은 클래스 선언을 검출합니다.",
  "desc.CLASS_SHOULD_DECLARE_DESTRUCTOR": "소멸자를 정의하지 않은 클래스 체커는 명시적인 소멸자를 정의하지 않은 클래스 선언을 검출합니다.",
  "desc.CLEANUP_THREAD_SPECIFIC_STORAGE": "tss_create() 함수 사용 후 메모리 해제 확인 체커는 스레드 한정 저장소를 할당 한 후 해제 하지 않은 경우를 검출합니다.",
  "desc.CLEARTEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION": "주요 보안 정보 및 차량 정보의 평문 전송 체커는 주요 보안 정보, 혹은 차량 정보를 암호화나 무결성 검증 없이 평문으로 전송하는 경우를 검출합니다.",
  "desc.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.",
  "desc.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.",
  "desc.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 경우를 검출합니다.",
  "desc.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.",
  "desc.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION_ASPNET": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.",
  "desc.CND_WAIT_SHOULDE_BE_IN_LOOP": "반복문 없이 cnd_wait 사용 체커는 반복문으로 제어하지 않고 cnd_wait() 함수를 호출하는 경우를 검출합니다.",
  "desc.COCOA.AT_SYNC.OBJC": "동기화 지시자에 nil 전달 체커는 동기화 블록를 나타내는 @synchronized 지시자에 동기화 객체로 nil을 전달하는 경우를 검출합니다.",
  "desc.COCOA.CLASS_RELEASE.OBJC": "클래스에 대한 해제 체커는 인스턴스가 아닌 클래스에 [release], [retain], [autorelease] 메시지를 보내는 경우를 검출합니다.",
  "desc.COCOA.SELF_INIT.OBJC": "초기화되지 않은 self 체커는 초기화 메소드 내에서 self가 잘못 초기화되는 경우를 검출합니다.",
  "desc.CODE_INJECTION": "공격자가 소프트웨어의 의도된 동작을 변경하도록 임의 코드를 삽입하여 소프트웨어가 비정상적으로 동작하도록 하는 보안약점을 말합니다.",
  "desc.CODE_INJECTION.JS": "공격자가 소프트웨어의 의도된 동작을 변경하도록 임의 코드를 삽입하여 소프트웨어가 비정상적으로 동작하도록 하는 보안약점을 말합니다.",
  "desc.CODE_INJECTION.RETURN_ADDRESS": "반환 주소 수정에 의한 코드 삽입 체커는 함수의 반환 주소를 바꿔치기 할 수 있는 코드를 검출합니다.",
  "desc.COMBINED_INCREMENT_AND_DECREMENT_OPERATOR": "증감 연산자의 부적절한 사용 체커는 증감 연산자를 다른 연산자와 함께 사용하는 경우를 검출합니다.",
  "desc.COMMAND_INJECTION": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.COMMAND_INJECTION.JS": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.COMMAND_INJECTION.KOTLIN": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.COMMAND_INJECTION.PHP": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.COMMAND_INJECTION.PYTHON": "검증되지 않은 외부 입력 값이 운영체제 명령어로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 악영향을 미칠 수 있는 보안약점입니다.",
  "desc.COMMAND_INJECTION.TOBE.JS": "투비소프트 플랫폼 운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.COMMAND_INJECTION.VBNET": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값으로 실행되는 커맨드 명령을 검출합니다.",
  "desc.COMMAND_INJECTION.VBS": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.COMMAND_INJECTION_ASPNET": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.COMMENT_IN_CODE": "한 줄 코드 중간에 주석 사용 체커는 한 줄 소스 코드의 앞 혹은 중간에 주석이 끼어들어가있는 경우를 검출합니다.",
  "desc.COMPARE_EOF_TO_STANDARD_LIBRARY_FUNCTIONS": "표준 라이브러리 함수로부터 반환된 값은 수정하거나 형변환하지 않은 상태에서 EOF와 비교해야 한다고 명시하고 있습니다. 이는 EOF 값을 반환할 수 있는 함수들의 값이 수정된 후 비교될 경우, 올바르게 EOF 조건을 판별할 수 없기 때문입니다.",
  "desc.COMPARE_LOOP_COUNTER": "잘못된 루프 카운터 비교 체커는 잘못된 방법으로 루프 카운터를 사용한 for 구문을 검출합니다.",
  "desc.COMPARE_OBJECTS_WITH_EQUALS": "객체 비교 시 == 또는 != 사용 체커는 객체 비교 시 == 이나 != 의 사용을 하면 이슈를 검출합니다.",
  "desc.COMPLEX_CONTROL_IN_SWITCH": "다른 구문과 중첩된 switch 구문 체커는 switch 구문 내에서 for 구문이나 if 구문의 본문이 case 구문과 중첩되어 있는 경우를 검출합니다.",
  "desc.COMPLEX_FUNC_DECL": "복잡한 함수 선언 체커는 함수가 매우 복잡한 방법으로 선언되어 있는 경우를 검출합니다.",
  "desc.COMPLY_WITH_MODIFIER_ORDER": "한정자 나열 순서 위반 체커는 여러 한정자를 동시에 사용할 때 정해진 순서를 지키지 않은 경우를 검출합니다.",
  "desc.COMPOUND_ASSIGN_SHOULD_UPDATE_LEFT.SWIFT": "대입 연산의 좌측 피연산자 갱신 체커는 \" = \" 로 끝나는 이항 연산자가 왼쪽 피연산자를 업데이트 하지 않는경우를 검출합니다.",
  "desc.COMPOUND_LITERAL_ADDRESS_INSIDE_LOOP": "반복문에서 복합 리터럴 잘못 사용 체커는 복합 리터럴(Compound Literal)을 해석하는 방식을 제대로 이해하지 못하고 반복문에서 잘못 사용하는 경우를 검출합니다.",
  "desc.CONCATENATE_DIFF_TYPE_STR": "와이드 문자열과 일반 문자열 연결 체커는 와이드 문자열 상수와 일반 문자열 상수를 연결하는 수식을 검출합니다.",
  "desc.CONDITIONAL_OPERATION_WITHOUT_PARENTHESIS": "괄호 없이 조건 연산 사용 체커는 삼항 조건 연산식에서 ? 연산자 앞에 괄호 없이 다른 이항 연산자가 존재하는 경우를 검출합니다.",
  "desc.CONFIGURATION_SETTING": "시스템 혹은 구성 설정의 외부 제어 체커는 적절한 처리 없이 외부 입력값을 sethostid() 함수의 인자로 직접 사용하는 코드를 검출합니다.",
  "desc.CONSTANT_ON_LEFT_HANDSIDE": "비교 연산자 우측에 위치한 상수 체커는 변수와 상수를 비교할 때 상수가 오른쪽 피연산자로 사용된 경우를 검출합니다.",
  "desc.CONSTEXPR_IN_SWITCH": "switch 구문에서 constexpr 사용 체커는 switch 구문 및 case 구문에서 constexpr을 사용한 수식을 검출합니다.",
  "desc.CONSTRUCTOR_CALLS_OVERRIDABLE_METHOD": "부모 클래스의 생성자에서 가상 메소드 호출 체커는 부모 클래스의 생성자 내부에서 가상 메소드를 호출하면 이슈를 검출합니다.",
  "desc.CONST_IN_LOOP_TEST": "반복문 제어부에 상수 사용 체커는 반복문 제어부에 상수를 사용하는 코드를 검출합니다.",
  "desc.CONST_MEMBER_FUNCTION_SHOULD_NOT_RETURN_NONCONST": "const 메소드의 비 상수 핸들 반환 체커는 const로 선언되어 있으나 반환 타입이 비상수 핸들인 메소드를 검출합니다.",
  "desc.CONST_VALUE_MODIFICATION": "const 객체 수정 체커는 const로 선언된 변수의 값을 수정하는 경우를 검출합니다.",
  "desc.CONVERSION_OPERATOR_CLASS_TYPE": "클래스 타입에 대한 변환 연산자 선언 체커는 클래스 내부에서 선언된 다른 클래스 타입의 변환 연산자를 검출합니다.",
  "desc.CONVERSION_OPERATOR_FUNDAMENTAL_TYPE": "기본 타입에 대한 변환 연산자 선언 체커는 클래스 내부에서 선언된 기본 타입의 변환 연산자를 검출합니다.",
  "desc.CONVERT_FLOATING_POINT_IN_FLOATING_OPERATION": "부동소수점 연산에 정수를 사용하지 말아야 합니다.",
  "desc.CONVERT_INT_TO_FLOAT_FOR_FLOAT_OPERATION": "부동 소수점 연산 이전의 캐스팅 누락 체커는 부동 소수점을 연산 하기 전에 정수를 부동 소수점으로 캐스팅하지 않은 수식을 검출합니다.",
  "desc.COOKIE.DISABLED_HTTP_ONLY.CSHARP": "HttpOnly가 아닌 쿠키 체커는 HttpOnly 속성을 부여하지 않은 쿠키 사용을 검출합니다.",
  "desc.COOKIE.OVERLY_BROAD_DOMAIN.CSHARP": "광범위 도메인을 허용하는 쿠키 사용 체커는 광범위 도메인을 대상으로 하는 쿠키를 사용하는 코드를 검출합니다.",
  "desc.COOKIE.OVERLY_BROAD_DOMAIN.OBJC": "광범위 도메인을 허용하는 쿠키 사용 체커는 광범위 도메인을 대상으로 하는 쿠키를 사용하는 경우를 검출합니다.",
  "desc.COOKIE.OVERLY_BROAD_DOMAIN.SWIFT": "광범위 도메인을 허용하는 쿠키 사용 체커는 광범위 도메인을 대상으로 하는 쿠키를 사용하는 코드를 검출합니다.",
  "desc.COOKIE.OVERLY_BROAD_PATH.CSHARP": "광범위 경로를 허용하는 쿠키 사용 체커는 최상위 경로로 지정된 쿠키를 사용하는 코드를 검출합니다.",
  "desc.COOKIE.OVERLY_BROAD_PATH.OBJC": "광범위 경로를 허용하는 쿠키 사용 체커는 최상위 경로로 지정된 쿠키를 사용한 경우를 검출합니다.",
  "desc.COOKIE.OVERLY_BROAD_PATH.SWIFT": "광범위 경로를 허용하는 쿠키 사용 체커는 최상위 경로로 지정된 쿠키를 사용하는 코드를 검출합니다.",
  "desc.COOKIE.PERSISTENT.OBJC": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 경우를 검출합니다.",
  "desc.COOKIE.PERSISTENT.SWIFT": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.",
  "desc.CORE_FOUNDATION.CF_ERROR.OBJC": "CFErrorRef의 잘못된 사용 체커는 CFErrorRef* 형을 매개 변수로 받는 함수의 반환 타입이 void 형으로 선언된 경우를 검출합니다.",
  "desc.CORE_FOUNDATION.CF_NUMBER.OBJC": "잘못된 CFNumberCreate 사용 체커는 CFNumberCreate() 함수의 세 번째 인자의 비트 수가 두 번째 인자로 지정된 크기보다 작은 경우를 검출합니다.",
  "desc.CORE_FOUNDATION.CF_RETAIN_RELEASE.OBJC": "Core Foundation 메모리 관리 함수의 잘못된 사용 체커는 CFRetain(), CFRelease(), CFMakeCollectable() 함수의 인자로 널이 전달되는 경우를 검출합니다.",
  "desc.CORE_FOUNDATION.CONTAINER_OUT_OF_BOUNDS.OBJC": "CFArrayGetValueAtIndex 함수의 버퍼 오버플로우 체커는 버퍼 크기를 벗어난 CFArrayRef 버퍼 접근을 검출합니다.",
  "desc.CORE_FOUNDATION.CONTAINER_POINTER_SIZED_VALUES.OBJC": "잘못된 CFArrayCreate 사용 체커는 CFArrayCreate() 함수로 배열을 만들 때 포인터 배열을 전달하지 않는 경우를 검출합니다.",
  "desc.CORRECT_DECLARE_FLEXIBLE_ARRAY_MEMBER": "잘못된 가변형 배열 선언 체커는 올바르지 않은 문법으로 가변형 배열을 선언한 경우를 검출합니다.",
  "desc.CRITICAL_PUBLIC_VARIABLE_WITHOUT_CONST_MODIFIER": "const 한정자 없는 중요 public 변수 체커는 클래스에서 const 한정자 없이 public으로 선언한 중요한 필드를 검출합니다.",
  "desc.CRITICAL_PUBLIC_VARIABLE_WITHOUT_FINAL_MODIFIER": "final 한정자 없는 중요 public static 변수 체커는 임의로 변경되면 안되는 중요한, final 없이 선언된 public static 멤버 변수를 검출합니다.",
  "desc.CRITICAL_VARIABLE_IN_PUBLIC": "중요 public 변수 체커는 클래스에서 public으로 선언한 중요한 필드를 검출합니다.",
  "desc.CROSS_SITE_REQUEST_FORGERY": "사이트 간 요청 위조 체커는 폼 데이터 전달에 있어서 POST 방식을 사용하지 않았을 경우를 검출합니다.",
  "desc.CROSS_SITE_REQUEST_FORGERY.CSHARP": "크로스 사이트 요청 위조는 특정 웹 사이트에 대해서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격을 말합니다.",
  "desc.CROSS_SITE_REQUEST_FORGERY.JS": "Form 데이터를 전송하는 경우 공격자에 의하여 악의적인 웹 사이트가 사용자의 인증된 세션 안에서 원치 않은 행동을 할 수 있습니다.",
  "desc.CROSS_SITE_REQUEST_FORGERY.PHP": "사이트 간 요청 위조 체커는 폼 데이터 전달에 있어서 POST 방식을 사용하지 않았을 경우를 검출합니다.",
  "desc.CROSS_SITE_REQUEST_FORGERY.PYTHON": "크로스 사이트 요청 위조는 특정 웹 사이트에 대해서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격을 말합니다.",
  "desc.CROSS_SITE_REQUEST_FORGERY_ASPNET": "폼 형식으로 사이트에 요청 시 사이트 간 요청 위조(Cross Site Request Forgery) 방지 토큰을 생성, 전달하지 않을 경우 사이트 간 요청 위조 공격에 취약합니다.",
  "desc.CROSS_SITE_REQUEST_FORGERY_CSHARP": "사이트 간 요청 위조 체커는 폼 데이터 전달에 있어서 POST 방식을 사용하지 않았을 경우를 검출합니다.",
  "desc.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS": "localStorage에서 sessionStorage로 정보 누출 체커는 localStorage에서 sessionStorage로 데이터를 이동하는 경우를 검출합니다.",
  "desc.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS": "sessionStorage에서 localStorage로 정보 누출 체커는 sessionStorage에서 localStorage로 데이터를 이동하는 경우를 검출합니다.",
  "desc.CSRF.NODEJS.JS": "크로스사이트 요청 위조는 특정 웹 사이트에 대해서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격을 말합니다.",
  "desc.CTORS_SHOULD_NOT_HAVE_SIDE_EFFECT": "복사 생성자는 생략되지 않는다고 가정하지 마십시오.",
  "desc.CTYPE_VALUE_SHOULD_BE_USSIGNED_OR_EOF": "<ctype.h> 파일의 함수들은 정수형의 인자를 받지만, 인자 값이 unsigned char의 범위 내에 있거나 EOF 값이어야만 정상적인 동작을 보장합니다. 만약 다른 값이 전달되면 정의되지 않은 동작을 유발할 수 있습니다.",
  "desc.CYCLOMATIC_COMPLEXITY_METRIC": "함수 내 결정점 개수 확인 체커는 함수 내에 결정점(if, while, 케이스 구문)의 개수가 옵션에 지정된 수 이상인 경우를 검출합니다.",
  "desc.CallSuperFirst": "메소드의 처음에 super()를 호출하지 않을 경우 이를 검출합니다.",
  "desc.CallSuperInConstructor": "특정 생성자 안에서 super()이 호출되지 않지만, 다른 생성자에서는 호출할 경우 이를 검출합니다.",
  "desc.CallSuperLast": "메소드의 마지막에 super()를 호출하지 않을 경우 이를 검출합니다.",
  "desc.CastAddressToIntegerAtReturn": "반환 형식이 정수인 함수에서 포인터를 반환합니다",
  "desc.CastIntegerToAddressAtReturn": "반환 형식이 포인터인 함수에서 정수형을 반환합니다",
  "desc.CatchExceptionByValue": "예외는 레퍼런스 형식으로 처리되어야 합니다.",
  "desc.CheckResultSet": "ResultSet의 네비게이션 메소드(next, previous, first 및 last)를 사용할 경우 결과값에 대해 검사를 수행하지 않을 때을 검출합니다.",
  "desc.CheckSkipResult": "skip() 메소드를 사용할 시 요청받은 바이트 보다 작은 크기를 무시할 수 있습니다.",
  "desc.ClarifyCondition": "할당문과 비교문이 혼동됩니다. 괄호를 이용하여 수식을 명확히 하십시오.",
  "desc.ClassCastExceptionWithToArray": "컬렉션 타입의 객체들이 toArray() 메소드를 잘못된 방법으로 사용하여 프로그램 실행 중 ClassCastException을 발생시키는 경우를 검출합니다.",
  "desc.ClassNamingConventions": "클래스 이름 표준 위반을 검출합니다.",
  "desc.ClassWithOnlyPrivateConstructorsShouldBeFinal": "private 생성자만을 가지는 클래스는 내부 클래스에 의해 생성자가 호출되는 경우가 아니라면 반드시 final로 선언되어야 합니다.",
  "desc.CloneMethodMustImplementCloneable": "Cloneable 을 상속받지 않은 클래스에 대하여, clone() 메소드는 throw new CloneNotSuportException와 같이 단 하나의 줄으로 구성되어야 하며, clone() 메소드 자체 혹은 클래스 중 적어도 하나는 final 로 정의되어야 합니다.",
  "desc.CloneThrowsCloneNotSupportedException": "Final로 선언되지 않은 클래스 내의 clone() 메소드에서 파라미터를 받지 않고, CloneNotSupportedException을 상속하지 않는 경우 이를 검출합니다.",
  "desc.CloseResource": "지정한 resource의 사용 후 자원 해제 구문이 없는 경우 이를 검출합니다.",
  "desc.CollapsibleIfStatements": "불린 short-circuit 연산자를 이용하여 하나로 묶을 수 있는 두개의 if 조건을 검출합니다.",
  "desc.CommentSize": "정의한 주석 크기를 초과한 경우를 검출 합니다.",
  "desc.CompareBoolExpressionWithInt": "부울 자료형 변수가 0 또는 1이 아닌 다른 정수형 값과 비교됩니다.",
  "desc.CompareObjectsWithEquals": "객체 비교에 == 사용을 검출합니다. 비교를 위해서는 == 대신 equals()를 사용할 것을 권장합니다.",
  "desc.ComparisonError": "항상 거짓인 수식입니다.",
  "desc.ComparisonOfBoolWithBoolError": "부울 타입인 변수를 관계 연산자로 비교합니다",
  "desc.ComparisonOfFuncReturningBoolError": "부울 값을 반환하는 함수를 관계 연산자로 비교합니다",
  "desc.ComparisonOfTwoFuncsReturningBoolError": "부울 값을 반환하는 함수들을 관계 연산자로 비교합니다",
  "desc.ConfusingTernary": "Ternary 연산자의 조건절의 !=을 검출합니다.",
  "desc.ConsecutiveLiteralAppends": "StringBuffer의 append() 중첩 호출을 검출합니다.",
  "desc.ConsistentReturn": "Javascript에서 모든 반환 값이 존재하거나 존재하지 않아야 합니다.",
  "desc.ConstructorCallsOverridableMethod": "부모 클래스의 생성자 안에서 가상 메소드를 호출하는 경우를 검출합니다.",
  "desc.CopyCtorAndEqOperator": "클래스가 복사 연산자, 복사 생성자 둘 중에 하나만 있습니다.",
  "desc.CopyCtorPointerCopying": "포인터가 복사 생성자에서 새로운 메모리를 할당받는 대신 복사됩니다.",
  "desc.CouplingBetweenObjects": "서로 다른 많은 수의 객체가 멤버로서 존재할 경우 이를 검출합니다.",
  "desc.CoutCerrMisusage": "출력 스트림을 잘못 사용했습니다.",
  "desc.CyclomaticComplexity": "코드 복잡도를 유발하는 if, while, for, 케이스 구문에 관하여 지정한 개수 이상 사용할 경우 이슈를 검출합니다.",
  "desc.DANGEROUS_DOWNCAST": "정수값에 대한 위험한 다운캐스팅 체커는 확인 없이 정수값을 표현범위가 줄어드는 방향으로 캐스팅하는 경우를 검출합니다.",
  "desc.DANGEROUS_EXTRACTION.PHP": "위험한 extract 사용 체커는 외부 입력이 검증 없이 extract() 함수에 사용되는 경우를 검출합니다.",
  "desc.DANGEROUS_FUNCTION.ASP": "ASP 소스 코드 내에 취약한 함수를 검출합니다.",
  "desc.DANGEROUS_FUNC_CAST": "위험한 함수 포인터의 캐스팅 체커는 서명이 충돌하거나 반환 타입이 다른 함수 포인터로 캐스팅되는 코드를 검출합니다.",
  "desc.DANGEROUS_USE_OF_TAINTED_VALUES": "오염된 값의 위험한 사용 체커는 오염된 값을 검사 없이 위험한 방식으로 사용한 경우 이슈를 검출합니다.",
  "desc.DATA_LEAK_BETWEEN_SESSIONS": "세션 간 데이터 누출 체커는 다중 스레드 환경에서 서블릿에 필드 변수가 사용되는 경우를 검출합니다.",
  "desc.DATA_LEAK_BETWEEN_SESSIONS.CSHARP": "세션 간 데이터 누출 체커는 다중 스레드 환경에서 IHttpHandler 인터페이스를 구현하는 클래스에 필드 변수가 사용되는 경우를 검출합니다.",
  "desc.DATA_LEAK_BETWEEN_SESSIONS.KOTLIN": "세션 간 데이터 누출 체커는 다중 스레드 환경에서 서블릿에 필드 변수가 사용되는 경우를 검출합니다.",
  "desc.DATA_LEAK_BETWEEN_SESSIONS.URI": "특정 상황에서 세션 간 데이터 누출 체커는 다중 스레드 환경에서 서블릿에 필드 변수가 사용되는 경우를 검출합니다.",
  "desc.DATA_STORING.SENSITIVE_INFORMATION.TOBE.JS": "민감한 정보를 데이터셋에 저장 체커는 중요 정보를 데이터셋에 저장하는 경우를 검출합니다.",
  "desc.DEALLOCATORS_MUST_NOT_THROW_EXCEPTIONS": "메모리 해제 연산자에서 예외 던짐 체커는 메모리 해제 연산자 내부에서 예외를 던지는 수식을 검출합니다.",
  "desc.DEBUG_INFORMATION.WEB.CONFIG": "디버그 정보 노출 체커는 디버그 정보를 노출하도록 설정한 경우를 검출합니다.",
  "desc.DECLARE_AT_THE_BEGINNING_OF_BLOCK": "함수 상단에 선언되지 않은 지역 변수 체커는 지역 변수가 함수 상단에 선언되지 않은 경우를 검출합니다.",
  "desc.DECLARE_CONST_MEMBER_FUNCTION": "메소드의 const 선언 누락 체커는 상태를 변경하지 않으며 const 선언이 없는 클래스 메소드를 검출합니다.",
  "desc.DECLARE_CONTROL_VARIABLES_WITHIN_FOR": "for 문에서 선언되지 않은 루프 제어 변수 체커는 루프 제어 변수를 for 문에서 선언하지 않고 기존 변수를 사용한 경우를 검출합니다.",
  "desc.DECLARE_COPY_CONSTRUCTOR_PROTECTED": "추상 클래스 복사 대입 연산자를 public으로 선언 체커는 public 접근 권한을 가진 추상 클래스의 복사 대입 연산자를 검출합니다.",
  "desc.DECLARE_DESTRUCTOR_FOR_RESOURCE_CLASS": "복잡한 클래스에서의 소멸자 미정의 체커는 소멸자의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.",
  "desc.DECLARE_DESTRUCTOR_USING_NEW": "동적 할당을 사용한 클래스에서의 소멸자 미정의 체커는 소멸자의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.",
  "desc.DECLARE_EXPLICIT": "explicit 선언 누락 체커는 explicit 선언이 빠져있는 인자가 1개인 생성자를 검출합니다.",
  "desc.DECLARE_EXPLICIT_ASSIGNMENT_OPERATOR_WHEN_TEMPLATED": "복사 대입 연산자를 정의하지 않은 템플릿을 포함한 클래스 체커는 명시적인 복사 대입 연산자를 정의하지 않은 템플릿을 포함한 클래스 선언을 검출합니다.",
  "desc.DECLARE_EXTERNAL_OBJECT_ONLY_ONCE": "중복 선언된 extern 객체 및 함수 체커는 여러 헤더 파일에서 선언된 extern 객체 및 함수를 검출합니다.",
  "desc.DECLARE_EXTERN_IN_HEADER_FILES": "잘못된 헤더 파일에서 선언 체커는 헤더 파일 선언 규칙대로 헤더 파일에서 선언을 구성하지 않은 경우를 검출합니다.",
  "desc.DECLARE_NON_MEMBER_GENERIC_FUNC_IN_UNASSOCIATED_NAMESPACE": "네임스페이스에서 비멤버 템플릿 함수 선언 체커는 연관된 네임스페이스에서 선언된 비멤버 템플릿 함수를 검출합니다.",
  "desc.DECLARE_OBJECTS_SHARED_BETWEEN_THREADS": "저장 기간이 끝난 공유 객체 체커는 스레드간에 공유하는 객체의 저장 기간이 스레드 유지시간보다 짧은 경우를 검출합니다.",
  "desc.DECLARE_ONE_NAME_ONLY_IN_EACH_TYPEDEF": "typedef로 여러 타입 선언 체커는 typedef 선언 시 하나 이상의 타입을 선언한 경우를 검출합니다.",
  "desc.DECLARE_READ_ONLY_PARAMETERS": "const 참조형으로 선언하지 않은 클래스 타입 매개 변수 체커는 매개 변수로 사용할 클래스 타입을 const 참조형으로 선언하지 않은 경우를 검출합니다.",
  "desc.DECLARE_SPECIAL_METHOD_FOR_RESOURCE_CLASS": "복잡한 클래스에서의 특수 메소드 미정의 체커는 특수한 메소드의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.",
  "desc.DECLARE_SPECIAL_METHOD_USING_NEW": "동적 할당을 사용한 클래스에서의 특수 메소드 미정의 체커는 특수한 메소드의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.",
  "desc.DECLARE_STATIC_WHEN_UNLESS_EXTERNAL_LINKAGE": "외부 참조가 필요없는 파일 범위의 extern 객체 및 함수 체커는 외부에서 접근할 필요가 없으며 파일 범위에 extern으로 선언되어 있는 객체 및 함수를검출합니다.",
  "desc.DECLARE_TYPE_IN_HEADER_FILES": "헤더에서 해야 하는 정의 체커는 소스 파일이 아닌 헤더 파일에 정의하도록 규정된 것들을 소스 파일에서 선언한 경우를 검출합니다.",
  "desc.DECLARE_VARIABLE_INSIDE_SWITCH": "switch 문장 내에서, 첫번째 케이스구문 전에 변수를 선언하지 않도록 합니다.",
  "desc.DECLARE_VARIABLE_IN_MIDDLE_OF_BLOCK": "블록 초반에 변수 선언 체커는 변수가 블록의 초반부에 선언되지 않은 경우를 검출합니다.",
  "desc.DECREMENT_ON_BOOLEAN": "bool 형식에 감소 연산자 사용 체커는 bool 형식의 변수에 감소 연산자('--')를 사용하는 경우를 검출합니다.",
  "desc.DEEPLY_NESTED.ABAP": "깊게 중첩된 제어문 체커는 과도하게 중첩된 제어문을 검출합니다.",
  "desc.DEEPLY_NESTED_IF_STATEMENT.CSHARP": "깊게 중첩된 if 문 체커는 지정한 횟수 이상의 if 중첩문을 사용한 경우를 검출합니다.",
  "desc.DEEP_NESTING_BLOCKS": "너무 깊은 중첩 블록 체커는 중첩 블록 깊이가 지나치게 깊게 작성된 함수를 검출합니다.",
  "desc.DEFAULT_ARGUMENT_CONSISTENCY_WHEN_OVERRIDING": "오버라이드 하는 함수의 기본 인자 값 일치 여부 체커는 오버라이드 하는 함수의 기본 인자(default argument)의 값이 오버라이드 대상 함수와 일치하지 않은 경우를 검출합니다.",
  "desc.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS": "변할 수 있는 입력 및 내부 구성 요소의 직접 사용 체커는 변할 수 있는(mutable) 객체에 내부의 구성 요소를 저장하고 반환하기 전에 구성 요소의 복사본을 생성하지 않는 코드를 검출합니다.",
  "desc.DEFINE_INLINE_IN_HEADER_FILES": "잘못된 헤더 파일에서의 인라인 정의 체커는 헤더 파일 인라인 정의 규칙대로 헤더 파일에서 인라인 정의를 수행하지 않은 경우를 검출합니다.",
  "desc.DEFINE_OBJECT_AT_BLOCK_SCOPE": "단일 함수의 전역 변수 체커는 한 개의 함수에서만 전역 변수를 사용하는 경우를 검출합니다.",
  "desc.DEFINE_SET_NEW_HANDLER": "동적 할당 핸들러의 미설정 체커는 동적 할당을 사용했으나 동적 할당 핸들러의 정의되어 있지 않는 프로그램을 검출합니다.",
  "desc.DEFINE_TEMPLATE_IN_HEADER_FILES": "잘못된 헤더 파일에서의 템플릿 정의 체커는 헤더 파일 템플릿 정의 규칙대로 헤더 파일에서 템플릿 정의를 하지 않은 경우를 검출합니다.",
  "desc.DEFINE_WRAPPERS_AROUND_NATIVE_METHODS": "래핑되지 않은 네이티브 메소드 체커는 네이티브 메소드의 접근 제한자가 private로 선언된 경우 래퍼 메소드를 거치지 않고 직접 호출되는 코드를 검출합니다.",
  "desc.DENIAL_OF_SERVICE.REQUEST_FILE.JS": "파일 요청을 통한 서비스 거부 공격 체커는 검증되지 않은 외부 입력을 사용해 파일을 생성하는 경우를 검출합니다.",
  "desc.DEPRECATED.DATA_BEGIN_OF_OCCURS.ABAP": "DATA BEGIN OF OCCURS 구문 사용 체커는 DATA BEGIN OF OCCURS 구문을 검출합니다.",
  "desc.DEPRECATED.FORM.ABAP": "FORM 구문 사용 체커는 FORM을 검출합니다.",
  "desc.DEPRECATED.REFRESH_ITAB_FROM_TABLE.ABAP": "REFRESH FROM TABLE 구문 사용 체커는 REFRESH FROM TABLE 구문을 검출합니다.",
  "desc.DEREFERENCING_DOES_NOT_EXCEED_TWO_LEVELS": "두 단계를 넘는 역참조 체커는 한 문장 안에서 역참조가 2단계를 초과하여 중첩 사용된 경우를 검출합니다.",
  "desc.DESERIALIZATION_OF_UNTRUSTED_DATA.CSHARP": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 메소드를 사용하는 코드를 검출합니다.",
  "desc.DESERIALIZATION_OF_UNTRUSTED_DATA.JS": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 메소드를 사용하는 코드를 검출합니다.",
  "desc.DESERIALIZATION_OF_UNTRUSTED_DATA.KOTLIN": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 메소드나 어노테이션을 사용하는 코드를 검출합니다.",
  "desc.DESERIALIZATION_OF_UNTRUSTED_DATA.OBJC": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 프로토콜을 사용하는 코드를 검출합니다.",
  "desc.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 메소드를 사용하는 코드를 검출합니다.",
  "desc.DESERIALIZATION_OF_UNTRUSTED_DATA.SWIFT": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 프로토콜을 사용하는 코드를 검출합니다.",
  "desc.DESIGN.ABSTRACT_TYPE.CONSTRUCTOR.CSHARP": "public 형식이 추상이며 public 생성자를 가지고 있습니다.",
  "desc.DESIGN.ENUM.MISSING_ZERO_VALUE.CSHARP": "열거형에 0 값을 가진 멤버를 정의하지 않거나, 문제의 소지가 있는 방식으로 정의했습니다.",
  "desc.DESIGN.EVENT_HANDLER.NON_GENERIC.CSHARP": "void를 반환하며 해당 시그니처에 두 개의 매개 변수(첫 번째는 개체, 두 번째는 EventArgs에 할당될 수 있는 형식)를 포함하는 대리자가 형식에 포함되어 있으며, 포함 어셈블리가 .NET Framework 2.0를 대상으로 합니다.",
  "desc.DESIGN.FIELD.NOT_DISPOSABLE.CSHARP": "클래스가 System.IDisposable 형식인 인스턴스 필드를 선언하고 구현하지만 클래스가 IDisposable 을 구현하지 않습니다.",
  "desc.DESIGN.IDISPOSABLE.BAD_PATTERN.CSHARP": "IDisposable이 올바르게 구현되지 않았습니다.",
  "desc.DESIGN.INDEXER.BAD_TYPE.CSHARP": "System.Runtime.InteropServices.ComRegisterFunctionAttribute 또는 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 특성으로 표시된 메소드를 외부에서 볼 수 있습니다.",
  "desc.DESIGN.INSTANCE_FIELD.VISIBLE.CSHARP": "외부에서 볼 수 있는 형식에 외부에서 볼 수 있는 인스턴스 필드가 있습니다.",
  "desc.DESIGN.MEMBER_SIGNATURE.NESTED_GENERIC.CSHARP": "외부에서 볼 수 있는 멤버에 중첩된 형식 인수가 포함된 시그니처가 있습니다.",
  "desc.DESIGN.NATIVE_FIELDS.NOT_DISPOSABLE.CSHARP": "형식이 System.IntPtr 필드, System.UIntPtr 필드 또는 System.Runtime.InteropServices.HandleRef 필드를 참조하지만 System.IDisposable을 구현하지 않습니다.",
  "desc.DESIGN.NESTED_TYPE.VISIBLE.CSHARP": "외부에서 볼 수 있는 형식에 외부에서 볼 수 있는 형식 선언이 들어 있습니다. 중첩 열거형 및 Protected 형식은 이 규칙에서 예외입니다.",
  "desc.DESIGN.OVERLOAD_ADD_SUB.MISSING_EQUALS.CSHARP": "public 또는 protected 형식이 같음 연산자를 구현하지 않고 더하기 또는 빼기 연산자를 구현합니다.",
  "desc.DESIGN.PARAMETER.UNNECESSARY_DERIVED_TYPE.CSHARP": "메소드 선언에 파생 형식인 정식 매개 변수가 포함되어 있고 메소드가 매개 변수의 기본 형식인 멤버만 호출합니다.",
  "desc.DESIGN.PINVOKE_METHODS.INCORRECT_CLASS.CSHARP": "메소드가 플랫폼 호출 서비스를 사용하여 비관리 코드에 액세스하며 NativeMethods 클래스 중 하나의 멤버가 아닙니다.",
  "desc.DESIGN.PROPERTY.WRITE_ONLY.CSHARP": "public 또는 protected 속성에 set 접근자는 있지만 get 접근자가 없습니다.",
  "desc.DESIGN.REF_PARAMETER.OBJECT.CSHARP": "외부에서 볼 수 있는 메소드에 System.Object 형식의 참조 매개 변수가 포함되어 있습니다.",
  "desc.DESIGN.SEALED_CLASS.PROTECTED_MEMBER.CSHARP": "sealed 클래스에 잘못된 접근 한정자 사용 체커는 public sealed인 클래스에서 protected 멤버나 protected 중첩 클래스를 선언한 경우를 검출합니다.",
  "desc.DESIGN.STATIC_CLASS.NOT_SEALED.CSHARP": "public 또는 protected 형식이 정적 멤버만 포함하며 sealed(NotInheritable) 또는 static 한정자로 선언되지 않았습니다.",
  "desc.DESIGN.STRING_METHOD.URI.CSHARP": "메소드의 이름에 \"uri\", \"Uri\", \"urn\", \"Urn\", \"url\" 또는 \"Url\"이 포함되어 있고 메소드에서 문자열을 반환합니다.",
  "desc.DESIGN.STRING_PARAMETER.URI.CSHARP": "형식이 이름에 \"uri\", \"Uri\", \"urn\", \"Urn\", \"url\" 또는 \"Url\"가 포함된 문자열 매개 변수가 있는 메소드를 선언한 다음 System.Uri 매개 변수를 사용하는 해당 오버로드를 선언하지 않습니다.",
  "desc.DESIGN.STRING_PROPERTY.URI.CSHARP": "형식이 이름에 \"uri\", \"Uri\", \"urn\", \"Urn\", \"url\" 또는 \"Url\"이 포함된 문자열 속성을 선언합니다.",
  "desc.DESIGN.STRING_URI_METHOD.IMPROPER_OVERLOAD.CSHARP": "형식이 문자열 매개 변수를 System.Uri 매개 변수로만 바꾸어서 다른 메소드 오버로드를 선언하고, 문자열 매개 변수를 사용하는 오버로드가 Uri 매개 변수를 사용하는 오버로드를 호출하지 않습니다.",
  "desc.DESIGN.TYPE.OUTSIDE_NAMESPACE.CSHARP": "public 또는 protected 형식이 명명된 네임스페이스 외부에 정의되어 있습니다.",
  "desc.DESTRUCTORS_MUST_NOT_THROW_EXCEPTIONS": "소멸자에서 예외 던짐 체커는 예외를 외부로 던지는 소멸자를 검출합니다.",
  "desc.DESTRUCTOR_SHOULD_BE_VIRTUAL": "가상 함수를 포함한 클래스 소멸자를 비 가상으로 선언 체커는 가상 함수를 포함하고 있으며 소멸자를 가상으로 선언하지 않은 클래스를 검출합니다.",
  "desc.DESTRUCTOR_SHOULD_BE_VIRTUAL_IF_CLASS_HAS_VIRTUAL": "클래스가 가상 멤버 함수를 포함하고 있으면 소멸자를 가상 함수로 선언해야 합니다.",
  "desc.DIFFERENT_EXCEPTION_SPECIFICATION": "서로 다른 예외 명세 체커는 다른 번역 단위를 포함한 같은 함수의 예외 명세가 서로 다른 경우를 검출합니다.",
  "desc.DIFFERENT_FUNCTION_PTR_ASSIGN": "다른 타입의 함수 포인터를 대입했습니다.",
  "desc.DIFFERENT_MUTEX_ON_CONDITION_VARIABLE": "Mutex와 조건 변수는 짝을 이루어야 합니다.",
  "desc.DIFFERENT_TYPE_DECLARATIONS": "동일한 라인에 다른 자료형 선언 체커는 하나의 라인에서 다른 자료형을 사용하는 복수의 변수를 선언하는 코드를 검출합니다.",
  "desc.DIRECTLY_APPEND_POINTER_AND_AMPERSAND": "변수 이름에 붙은 포인터 및 참조자 연산자 체커는 포인터 또는 참조자 선언 시 '*'와 '&'를 변수 이름에 붙인 경우를 검출합니다.",
  "desc.DIRECT_MANAGEMENT_OF_CONNECTIONS": "연결의 직접 관리 체커는 J2EE 프로그램에서 연결을 직접 관리하는 DriverManager.getConnection() 메소드를 호출할 경우를 검출합니다.",
  "desc.DIRECT_USE_OF_INTEGER_LITERAL": "정수 리터럴 직접 사용 체커는 -1, 0, 1을 제외한 정수 리터럴을 직접 사용한 경우를 검출합니다.",
  "desc.DIRECT_USE_OF_SOCKETS": "소켓의 직접 사용 체커는 J2EE 프로그램에서 java.net.Socket 클래스를 통해 소켓을 직접 사용하는 경우를 검출합니다.",
  "desc.DIRECT_USE_OF_THREADS": "스레드의 직접 사용 체커는 J2EE 웹 애플리케이션에서 직접적으로 스레드를 사용하는 경우를 검출합니다.",
  "desc.DIRECT_USE_OF_UNSAFE_JNI": "안전하지 않은 JNI의 직접 사용 체커는 다른 언어로 작성된 프로그램을 JNI를 통해 사용하는 경우를 검출합니다.",
  "desc.DISABLED_HEADER_CHECKING.CSHARP": "누락된 헤더 검사 체커는 헤더 검사 기능이 꺼져있는 경우를 검출합니다.",
  "desc.DISABLED_HEADER_CHECKING.VBNET": "헤더 검사 비활성화 체커는 헤더 검사 기능이 비활성화시키는 코드를 검출합니다.",
  "desc.DISABLED_VIEW_STATE_MAC.CSHARP": "EnableViewStateMac 속성 비활성화 체커는 EnableViewStateMac 속성을 false로 설정하는 경우를 검출합니다.",
  "desc.DISABLED_VIEW_STATE_MAC.VBNET": "뷰 상태 MAC 비활성화 체커는 뷰 상태 MAC 검사 기능을 비활성화하는 코드를 검출합니다.",
  "desc.DISABLE_STRUTS_INPUT_VALIDATION_FRAMEWORK.CONFIG": "Struts 입력 유효성 검사 프레임워크 미사용 체커는 입력 유효성 검사를 위한 Struts의 프레임워크를 사용하지 않는 코드를 검출합니다.",
  "desc.DIVIDE_BY_ZERO": "0으로 나누기 연산 체커는 0으로 나누기를 수행하는 코드를 검출합니다.",
  "desc.DIVIDE_BY_ZERO.OBJC": "0으로 나누기 연산 체커는 0으로 나누기를 수행하는 코드를 검출합니다.",
  "desc.DIVIDE_BY_ZERO.RUST": "나눗셈은 기본적인 연산으로 분모가 0인 경우에는 정의되지 않으며 대부분의 경우 이를 처리하기 위해 실행 시간 에러나 패닉을 발생시킵니다.",
  "desc.DIVIDE_BY_ZERO_CSHARP": "0으로 나누기 연산 체커는 0으로 나누기를 수행하는 코드를 검출합니다.",
  "desc.DIV_BY_ZERO": "0으로 나누기 연산 체커는 0으로 나누기를 수행하는 코드를 검출합니다.",
  "desc.DIV_BY_ZERO.HORUS": "값으로 0으로 나눌때 발생합니다.",
  "desc.DIV_BY_ZERO.MISSING_CHECK": "미확인한 0으로 나눗셈 연산 체커는 나눗셈의 제수인 함수 인자 혹은 반환값을 이전에는 0 확인 후 사용했지만 이번에는 0 확인 없이 사용하는 코드를 검출합니다.",
  "desc.DJANGO_BAD_SLEEP": "Django에서 sleep() 함수 사용 체커는 Django 프레임워크를 통해 생성된 애플리케이션에서 요청에 응답할 때 sleep() 함수를 사용하는 경우를 검출합니다.",
  "desc.DJANGO_CONFIG_URL_HANDLER.PYTHON": "오류를 처리하지 않거나, 불충분하게 처리하여 오류 정보에 중요 정보(시스템 내부 정보 등)가 포함될 때, 발생할 수 있는 취약점으로 오류를 부적절하게 처리하여 발생하는 보안약점입니다.",
  "desc.DJANGO_DEBUG_ENABLED": "Django 디버그 설정에 의한 정보 노출 체커는 Django 프레임워크를 통해 생성된 애플리케이션 설정 파일에서 디버그 모드를 켜놓은 경우를 검출합니다.",
  "desc.DJANGO_FILE_RESPONSE_MANIPULATION": "DJANGO 파일 응답 조작 체커는 외부 입력으로부터 전달받은 경로로 파일을 생성하여 FileResponse를 생성하는 경우를 검출합니다.",
  "desc.DJANGO_XSS.PYTHON": "크로스 사이트 스크립트 공격은 웹 사이트에 악성 코드를 삽입하는 공격 방법입니다. 공격은 일반적으로 애플리케이션의 사용자를 목표로 삼으며, 자동으로 사용자가 악성 코드를 실행하게 하는 등의 피해를 입힐 수 있습니다.",
  "desc.DOUBLE.FORMAT_STRING.OBJC": "중복 형식화된 문자열 체커는 이미 형식화된 문자열을 다시 한 번 형식 문자열로 사용하는 경우를 검출합니다.",
  "desc.DOUBLE_CHECKED_LOCKING": "무의미한 잠금 중복 검사 체커는 불필요하게 잠금을 여러 번 검사하는 경우를 검출합니다.",
  "desc.DOUBLE_CLOSE": "리소스 이중 해제 체커는 이미 해제된 리소스를 다시 해제하려는 코드를 검출합니다.",
  "desc.DOUBLE_CLOSE.CURSOR": "SQL_CLOSE_CUR(\"A\",...) 함수를 통해 같은 커서를 두 번 이상 닫는 경우에 발생합니다.",
  "desc.DOUBLE_CLOSE.CURSOR_ARRAY": "SQL_CLOSE_CUR_ARR(\"A\",...) 함수를 통해 같은 커서 배열을 두 번 이상 닫는 경우에 발생합니다.",
  "desc.DOUBLE_CLOSE.RECORD": "다음의 함수로 해제하는 것을 두번 이상 할 경우에 발생 합니다.destroy_CCM4427Q51Req( ... );",
  "desc.DOUBLE_CLOSE_THREAD": "스레드 이중 해제 체커는 하나의 스레드에 join 및 detach 동작을 모두 수행하는 경우를 검출합니다.",
  "desc.DOUBLE_FREE": "메모리 이중 해제 체커는 이미 해제된 메모리를 다시 해제하려는 코드를 검출합니다.",
  "desc.DOUBLE_LOCK": "이중 잠금 체커는 이미 잠궈진 리소스에 다시 잠금을 거는 코드를 검출합니다.",
  "desc.DOUBLE_OPEN": "이중 리소스 접근 체커는 이미 열려 있는 파일을 다시 열려고 하면 이슈를 검출합니다.",
  "desc.DOUBLE_UNLOCK": "이중 잠금 해제 체커는 이미 잠금이 해제된 리소스의 잠금을 다시 해제하려고 시도하는 코드를 검출합니다.",
  "desc.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.",
  "desc.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 경우를 검출합니다.",
  "desc.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON": "원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고, 이를 실행하는 제품들이 종종 존재합니다. 이는 호스트 서버의 변조, DNS 스푸핑(Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행 할 수 있도록 합니다. 파일(및 해당 소프트웨어) 무결성을 확인하는 두 가지 주요 방법으로는 암호화 해시 및 디지털 서명이 있습니다. 무결성을 보장하기 위해 해시를 사용하고 가능하면 적절한 코드 서명 인증서를 사용하고 확인하는 것이 더 안전합니다.",
  "desc.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.",
  "desc.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK_CSHARP": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.",
  "desc.DO_DECL_VARS_AT_TOP_OF_FUNC": "함수 중간에 변수 선언 체커는 함수의 앞부분이 아닌 중간에 일부 변수를 선언하거나 초기화하는 코드를 검출합니다.",
  "desc.DO_NOT_ABRUPTLY_TERMINATE_THE_PROGRAM": "atexit() 함수로 등록한 핸들러에서 예외 발생 체커는 atexit() 함수로 등록한 함수에서 예외가 발생하는 경우를 검출합니다.",
  "desc.DO_NOT_ACCESS_ACCOUNT_INFORMATION": "계정 관련 정보에 접근하는 것을 검출합니다.",
  "desc.DO_NOT_ACCESS_OVERLAPPING_STORAGE": "공용체 필드 간의 대입 연산 체커는 수식을 평가하면서 서로 메모리 영역이 겹치는 공용체 필드 간에 대입이 발생하는 수식을 검출합니다.",
  "desc.DO_NOT_ACCESS_PRIVATE_MEMBER_OF_OUTER_CLASS": "외부 클래스의 private 멤버에 접근 체커는 내부 클래스에서 외부 클래스의 private 멤버에 접근하는 경우를 검출합니다.",
  "desc.DO_NOT_ACCESS_SHARED_OBJECT_IN_HANDLER": "시그널 핸들러의 공유 객체 접근 체커는 시그널 핸들러가 공유 객체에 접근하는 경우를 검출합니다.",
  "desc.DO_NOT_ALTER_CONTROL_VARIABLE_MORE_THAN_ONCE": "반복문 제어 변수를 두 번 이상 변경 체커는 반복문 내에서 반복 제어 변수를 두 번 이상 변경하는 경우를 검출합니다.",
  "desc.DO_NOT_APPEND_STRINGS": "문자열을 + 연산자 및 += 연산자로 더함 체커는 문자열에 대해 + 연산을 수행하는 경우를 검출합니다.",
  "desc.DO_NOT_ASSERT_AFTER_ATEXIT": "잘못된 종료 함수 핸들러 체커는 atexit() 함수를 사용하여 핸들러를 등록한 후에 assert() 함수를 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_ASSIGN_ADDRESS_TO_WIDER_SCOPE": "지역 변수 주소를 범위 밖 변수에 대입 체커는 함수 범위를 벗어나는 변수에 지역 변수의 주소를 대입하는 수식을 검출합니다.",
  "desc.DO_NOT_ASSIGN_EXTERNAL_DATA_TO_MEMBER_VARIABLES": "메서드 인수의 유효성 검사 필요 체커는 외부 입력값을 적절한 검증 없이 멤버 변수에 할당하는 코드를 검출합니다.",
  "desc.DO_NOT_ASSUME_CONSTANT_WITH_EXPR": "명명된 상수값 가정 체커는 이미 명명된 상수를 매크로로 가정하여 사용하는 수식을 검출합니다. BUFSIZE와 같은 알려진 상수 값을 수식으로 표현하지 않도록 합니다.",
  "desc.DO_NOT_ASSUME_ENV": "환경 변수의 값이 stack에 할당된 일정한 크기의 배열에 strcpy로 복사되어서는 안 된다.",
  "desc.DO_NOT_AUTO_DIAL_SITE.SWIFT": "자동 다이얼링 공격 방지 체커는 악성 사이트 방문 시 자동 다이얼링 공격을 방지하는 어떠한 제어도 구현하지 않는 경우를 검출합니다.",
  "desc.DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES": "신뢰할 수 없는 출처에 대한 보안 검사 체커는 신뢰할 수 없는 출처의 객체나 인수를 복사하지 않고 바로 보안 검사를 수행하는 코드를 검출합니다.",
  "desc.DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES_BAK": "믿을 수 없는 소스를 사용한 보안검사는 위험합니다.",
  "desc.DO_NOT_CALCULATE_SCALED_INT_TO_POINTER": "포인터 연산을 위한 포인터 크기 조정 금지 체커는 포인터 연산을 위해서 사용자가 임의로 포인터 크기를 조정한 경우를 검출합니다.",
  "desc.DO_NOT_CALL_EXEC": "Runtime.exec 사용 체커는 위험한 메소드인 Runtime.exec() 메소드 호출을 검출합니다.",
  "desc.DO_NOT_CALL_FUNC_WITH_COMPLEX_VALUE": "실수형의 값을 인자로 받는 함수에 complex 값을 넣지 말아야 합니다.",
  "desc.DO_NOT_CALL_RUN_FINALIZERS_ON_EXIT": "종료 시 finalizer 사용 체커는 위험한 메소드인 Runtime.runFinalizersOnExit() 또는 System.runFinalizersOnExit()를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_CALL_SIGNAL_IN_MULTI_THREAD": "다중 스레드 환경에서 signal 사용 체커는 다중 스레드 프로그램에서 signal() 함수를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_CALL_SIGNAL_WITHIN_HANDLER": "시그널 핸들링 중 인터럽트로 인한 경쟁 조건 체커는 인터럽트가 다시 발생 가능한 시그널을 핸들링하는 도중 signal() 함수를 호출하여 발생하는 경쟁 조건을 검출합니다.",
  "desc.DO_NOT_CALL_STREAM_IN_METHOD": "단일 바이트 혹은 문자 스트림에 여러 개의 버퍼 래퍼 생성 체커는 Scanner 및 BufferedInputStream과 같은 Non-blocking I/O를 지원하는 객체에 두 개 이상의 래퍼를 만들어 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_CALL_SYNCHRONIZED_METHOD_IN_LOOP": "반복문 내에서 동기화 메소드 사용 체커는 반복문 내에서 synchronized로 선언된 메소드를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_CALL_THREAD_RUN": "Thread 클래스의 run 메소드 사용 체커는 Thread.run을 사용하면 이슈를 검출합니다.",
  "desc.DO_NOT_CALL_UNLOCK_DIRECTLY_ON_MUTEX": "뮤텍스 unlock() 함수 예외 처리 없이 호출 금지 체커는 예외 처리 없이 뮤텍스 unlock() 함수를 호출하는 코드를 검출합니다.",
  "desc.DO_NOT_CAST_AWAY_CONST": "형변환으로 const를 없애지 말아야 합니다.",
  "desc.DO_NOT_CAST_FROM_INTEGRAL_TO_POINTER": "정수형을 포인터형으로 캐스팅 체커는 정수형을 포인터형으로 캐스팅하는 수식을 검출합니다.",
  "desc.DO_NOT_CAST_FROM_POINTER_TO_INTEGRAL": "포인터형을 정수형으로 캐스팅 체커는 포인터형을 정수형으로 캐스팅하는 수식을 검출합니다.",
  "desc.DO_NOT_CAST_FROM_VOID_POINTER_TO_POINTER": "void 포인터 캐스팅 체커는 void 포인터를 다른 포인터로 캐스팅하는 경우를 검출합니다.",
  "desc.DO_NOT_CAST_GENERIC_ITERATOR": "불필요한 반복자 변수 캐스팅 체커는 Iterator 타입 객체의 next() 메소드의 반환 값을 불필요하게 캐스팅하는 경우를 검출합니다.",
  "desc.DO_NOT_CAST_INT_TO_ENUM": "정수형을 열거형으로 캐스팅 체커는 정수형을 열거형으로 캐스팅하는 경우를 검출합니다.",
  "desc.DO_NOT_CAST_OR_DELETE_POINTER_TO_INCOMPLETE_CLASSES": "불완전한 클래스 포인터의 조작 체커는 불완전한 클래스를 캐스팅하거나 삭제하는 수식을 검출합니다.",
  "desc.DO_NOT_CAST_TO_AN_OUT_OF_RANGE_ENUM_VALUE": "범위 밖에 있는 열거 값 캐스팅 체커는 열거 값이 범위 내에 있는지 확인하지 않고 열거 값으로 캐스팅을 수행하는 코드를 검출합니다.",
  "desc.DO_NOT_CAST_TO_POINTER": "일반 및 포인터형을 다른 포인터형으로 캐스팅 체커는 일반형이나 포인터형을 다른 포인터형으로 캐스팅하는 수식을 검출합니다.",
  "desc.DO_NOT_CHANGE_OF_LOOP_CONTROL_VARIABLE": "loop 제어 변수 변경 금지 체커는 for 루프 내에서 제어 변수 변경할 경우 이슈를 검출합니다.",
  "desc.DO_NOT_CHANGE_PRECEDENCE_AND_ASSOCIATIVITY_OF_STANDARD_OPERATORS.SWIFT": "연산자 우선순위 변경 체커는 기본 연산자의 연산 순위와 결합 순위를 바꾸는 경우를 검출합니다.",
  "desc.DO_NOT_COMMENT_IN_CODE_SECTION": "코드 영역에서 사용한 주석 체커는 코드와 코드 사이에서 사용한 주석을 검출합니다.",
  "desc.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES": "부동 소수점 값을 문자열 표현으로 비교 체커는 double이나 float 값을 문자열로 변환하여 다른 문자열과 비교하는 경우를 검출합니다.",
  "desc.DO_NOT_CONTAIN_UNUSED_LABEL_IN_FUNCTION": "불필요한 레이블 체커는 함수 내에서 사용되지 않는 레이블을 검출합니다.",
  "desc.DO_NOT_CONVERT_FLOATING_TO_INTEGRAL": "실수형을 정수형으로 변환 체커는 표준 라이브러리를 사용하지 않고 실수형 타입을 정수형 타입으로 캐스팅하는 경우를 검출합니다.",
  "desc.DO_NOT_CREATE_INSTANCE_IN_LOOP": "반복문 안에서 인스턴스 생성 체커는 반복문 안에서 생성자를 사용하여 인스턴스를 생성하는 경우를 검출합니다.",
  "desc.DO_NOT_DECLARED_INLINE_WITHIN_CLASS_DECLARATION": "클래스 선언에서 정의된 메소드 체커는 클래스 선언 내부에서 정의된 인라인 메소드를 검출합니다.",
  "desc.DO_NOT_DECLARE_CONFLICTING_LINKAGE_CLASSIFICATIONS": "스토리지 클래스 충돌 체커는 동일한 함수나 객체의 스토리지 클래스가 선언 및 정의에서 서로 일치하지 않고 충돌하는 경우를 검출합니다.",
  "desc.DO_NOT_DECLARE_IN_LOOPS": "반복문에서 객체 선언 체커는 반복문에서 객체를 선언하는 코드를 검출합니다.",
  "desc.DO_NOT_DECLARE_OR_DEFINE_RESERVED_ID": "예약어를 식별자로 사용 체커는 예약어일 수 있는 단어를 식별자로 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_DEFINE_VARIADIC_FUNCTIONS": "가변 인자 사용 체커는 함수를 선언할 때 가변 인자를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_DERIVE_FROM_VIRTUAL_BASE": "가상 상속 사용 체커는 부모 클래스를 가상 상속한 자식 클래스를 검출합니다.",
  "desc.DO_NOT_DESTROY_A_MUTEX": "잠겨 있는 뮤텍스 파괴 체커는 잠긴 상태인 뮤텍스를 파괴하는 수식을 검출합니다.",
  "desc.DO_NOT_DISCARD_FUNCTION_RETURN_VALUE": "C++에서 함수 반환 결과 미사용 체커는 일부 예외를 제외하고 반환 값을 사용하지 않은 함수 호출 수식을 검출합니다.",
  "desc.DO_NOT_EXPLICIT_FLOATING_INTEGRAL_CONVERSION": "cvalue 식을 캐스팅 체커는 cvalue로 판단되는 수식을 캐스팅한 경우를 검출합니다.",
  "desc.DO_NOT_EXTERND_VALIDATION_CLASS": "Validation 클래스 상속 금지 체커는 클래스가 ActionForm 또는 DynaActionForm 클래스를 상속 받는 코드를 검출합니다.",
  "desc.DO_NOT_GET_DEVICE_ID": "기기의 IMEI를 읽는 경우를 검출합니다.",
  "desc.DO_NOT_GET_USIM_UNIQUE_ID": "단말기와 USIM의 고유 정보에 접근하는 것을 제한합니다.",
  "desc.DO_NOT_HARDCODE_IPv4_ADDRESS.OBJC": "하드코딩된 IP 체커는 코드에 직접 작성된 IPv4 주소를 검출합니다.",
  "desc.DO_NOT_HIDE_DEREFERENCE_OP": "매크로로 역참조 숨김 체커는 매크로 정의를 사용하여 포인터 역참조 연산을 보이지 않게 숨기는 경우를 검출합니다.",
  "desc.DO_NOT_HIDE_DEREFERENCE_OP_IN_TYPEDEF": "사용자 정의 타입으로 역참조 숨김 체커는 사용자 정의 타입을 사용하여 포인터 역참조 연산을 보이지 않게 숨기는 경우를 검출합니다.",
  "desc.DO_NOT_IMPORT_ON_DEMAND": "온디맨드 방식으로 import 체커는 '*' 형태로 import 하는 경우를 검출합니다.",
  "desc.DO_NOT_INCLUDE_COMMENT_IN_MACRO": "매크로에 주석 포함 체커는 매크로 정의 중간에 주석이 포함된 경우를 검출합니다.",
  "desc.DO_NOT_INCLUDE_PATH_SPECIFIER": "include 지시자에 경로문자 포함 체커는 #include 지시자에서 파일 이름에 경로 문자가 포함된 경우를 검출합니다.",
  "desc.DO_NOT_INC_ITER_WITH_VALUE_GREATER_THAN_ONE": "반복자에서 1보다 큰 값으로 증감 금지 체커는 반복문의 반복자에서 1보다 큰 상수값으로 증감 연산을 수행하는 코드를 검출합니다.",
  "desc.DO_NOT_INSTANTIATE_OBJECTS_IN_LOOPS.CSHARP": "반복문 내에서의 인스턴스 생성 체커는 반복문 안에서 객체를 생성한 경우를 검출합니다.",
  "desc.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS": "입출력 버퍼로 인한 외부 프로세스 무한 대기 체커는 입출력 버퍼를 제대로 관리하지 않아서 멈출 수도 있는 외부 프로세스 사용을 검출합니다.",
  "desc.DO_NOT_LOCK_OR_UNLOCK_IN_LOOP": "반복문 안에서 잠금 상태 변경 체커는 반복문 안에 잠금 및 잠금 해제 역할을 하는 메소드가 호출되는 경우를 검출합니다.",
  "desc.DO_NOT_LOG_UNSANITIZED_USER_INPUT": "로그 조작 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.",
  "desc.DO_NOT_MANIPULATE_TIME_T_DIRECTLY": "시간 관련 변수 직접 조작 체커는 time_t 타입의 변수를 직접 조작하는 수식을 검출합니다.",
  "desc.DO_NOT_MIX_ARITHMETIC_PRECISION": "산술 정밀도 혼용 수식 체커는 수식에서 산술 정밀도를 혼용하는 경우를 검출합니다.",
  "desc.DO_NOT_MIX_SIGNED_AND_UNSIGNED": "부호 혼용 수식 체커는 수식에서 부호를 혼용하는 경우를 검출합니다.",
  "desc.DO_NOT_MODIFY_KEY_OF_SET": "컨테이너의 키 수정 체커는 set이나 multiset 컨테이너 객체의 키를 수정하는 수식을 검출합니다.",
  "desc.DO_NOT_MODIFY_PRIVATE_IN_PUBLIC_FUNCTION": "외부 데이터를 private 필드에 저장 체커는 외부에서 접근 가능한 객체를 private 필드에 저장하는 경우를 검출합니다.",
  "desc.DO_NOT_MODIFY_STATIC_MEMBER_IN_COPY_CONSTRUCTOR": "복사 생성자에서 정적 필드값 변경 체커는 복사 생성자 내부에서 정적 필드의 값을 변경하는 수식을 검출합니다.",
  "desc.DO_NOT_MODIFY_THE_STANDARD_NAMESPACES": "표준 네임스페이스 변경 체커는 사용자가 임의로 std 네임스페이스를 정의한 경우를 검출합니다.",
  "desc.DO_NOT_NOTIFY_IN_SYNCHRONIZED": "동기화 블록 내에서 notify 사용 체커는 synchronized 블록 내에서 notify() 메소드를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_OPERATE_ENUMERATOR": "잘못된 열거자 연산 체커는 산술 연산자의 피연산자로 열거자를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_OPERATE_ON_FILES_IN_SHARED_DIRECTORIES": "공유 디렉토리 안의 파일은 주의하여 사용해야 합니다.",
  "desc.DO_NOT_OPERATE_ON_UNTRUSTED_FILE_LINKS": "신뢰할 수 없는 파일 링크 사용 체커는 파일 경로가 일반 파일이 아닌 링크 파일인지 확인하지 않고 접근하는 경우를 검출합니다.",
  "desc.DO_NOT_OVERLOAD_FUNCTION_WITH_SPECIALIZATION": "템플릿 특수화된 함수의 모호한 호출 체커는 템플릿 특수화가 존재하고 일반 함수와 모호성이 발생하는 호출 수식을 검출합니다.",
  "desc.DO_NOT_OVERLOAD_LAND_LOR_COMMA": "콤마 및 논리 연산자 오버로딩 체커는 콤마 및 논리 연산자를 오버로딩 한 클래스를 검출합니다.",
  "desc.DO_NOT_OVERLOAD_NONVIRTUAL_FUNCTION": "부모 클래스의 비가상 함수를 숨김 체커는 부모 클래스에서 선언된 비가상 함수를 사용할 수 없는 자식 클래스 선언을 검출합니다.",
  "desc.DO_NOT_OVERLOAD_NUMERIC_AND_POINTER": "모호한 타입 간의 오버로딩 함수 선언 체커는 오버로딩 함수들의 인자 타입이 포인터와 숫자같이 서로 모호한 함수를 검출합니다.",
  "desc.DO_NOT_OVERRIDE_ADDRESSOF": "주소 연산자 오버로딩 체커는 클래스에서 주소 연산자를 오버로딩한 메소드 선언을 검출합니다.",
  "desc.DO_NOT_READ_STREAM_IN_LOOP": "반복문 안에서 스트림 읽기 체커는 반복문 안에 스트림에 대한 read() 메소드가 호출되는 경우를 검출합니다.",
  "desc.DO_NOT_RECORD_MEDIA": "오디오 녹음이나 비디오 녹화를 검출합니다.",
  "desc.DO_NOT_RECURSIVELY_REENTER_DURING_INIT_STATIC": "정적 변수 초기화에서 재귀 함수 호출 체커는 정적 변수를 초기화할 때 재귀 함수 호출이 들어있는 수식을 검출합니다.",
  "desc.DO_NOT_REDEFINE_ERRNO": "errno 변수 재정의 체커는 errno 변수를 개별 소스 파일에서 직접 재정의하는 경우를 검출합니다.",
  "desc.DO_NOT_RELY_ON_ENUM_VALUE": "열거형의 정수값 의존 체커는 열거형을 내부적인 정수 표현값을 사용하여 명시적으로 비교하는 경우를 검출합니다.",
  "desc.DO_NOT_RELY_ON_THE_DEFAULT_AUTOMATIC_SIGNATURE_VERIFICATION": "기본 자동 서명 인증 사용 체커는 서명이 올바른지 추가로 확인을 수행하지 않고 기본 자동 서명 확인 프로세스만 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255": "write를 통한 부적절한 정수값 출력 체커는 0 에서 255 에 속하지 않은 정수값을 write 메소드를 사용하여 출력하는 경우를 검출합니다.",
  "desc.DO_NOT_REMOVE_CONST": "캐스팅으로 const 한정자 제거 체커는 const형 객체를 캐스팅하여 const 한정자를 제거하는 수식을 검출합니다.",
  "desc.DO_NOT_REMOVE_VOLATILE": "캐스팅으로 volatile 한정자 제거 체커는 volatile 형 객체를 캐스팅하여 volatile 한정자를 제거하는 수식을 검출합니다.",
  "desc.DO_NOT_RETURN_PRIVATE_FIELD_OF_OUTER_CLASS": "외부 클래스의 private 필드 반환 체커는 내부 클래스에서 외부 클래스의 private 멤버에 접근하여 직접 값을 반환하는 경우를 검출합니다.",
  "desc.DO_NOT_RETURN_SIGNAL_HANDLERS": "치명적 오류 시그널 핸들러에서 반환 체커는 프로그램이 종료되어야 하는 치명적인 오류 시그널 핸들러에서 암시적 혹은 명시적으로 값을 반환하는 경우를 검출합니다.",
  "desc.DO_NOT_REUSE_IDENTIFIER_NAME": "이름이 같은 식별자 체커는 어떠한 식별자라도 이름이 같은 경우를 검출합니다.",
  "desc.DO_NOT_REUSE_IDENTIFIER_WITH_EXTERNAL_LINKAGE": "외부 연결 식별자 중복 선언 체커는 링크 단계에서 다른 소스 파일에 선언된 동일한 식별자와 연결된 전역 식별자를 다른 범위에서 중복 선언한 경우를 검출합니다.",
  "desc.DO_NOT_REUSE_IDENTIFIER_WITH_STATIC_STORAGE": "이름이 같은 정적 객체 체커는 정적 객체로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.",
  "desc.DO_NOT_REUSE_PUBLIC_IDENTIFIERS": "Java 표준 라이브러리의 공용 식별자 재사용 체커는 표준 라이브러리의 공용 식별자와 동일하게 클래스나 인터페이스의 식별자를 정의하는 코드를 검출합니다.",
  "desc.DO_NOT_SEND_SMS": "SMS 전송을 시도하는 경우를 검출합니다.",
  "desc.DO_NOT_SLEEP_OR_YIELD_WITHOUT_CONTROL": "제어 없이 sleep 혹은 yield 사용 체커는 조건에 의한 제어 없이 sleep() 혹은 yeidl() 메소드를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_SPECIFY_BOUND_OF_ARRAY_FOR_STRING_LITERAL": "문자열로 초기화된 배열에 크기 지정 체커는 문자열 리터럴로 초기화되는 배열 선언에서 배열의 크기를 지정하는 경우를 검출합니다.",
  "desc.DO_NOT_STORE_RETURNED_POINTERS": "특정 함수의 반환 포인터 저장 체커는 특정 표준 라이브러리 함수에서 반환된 포인터를 역참조 수정이 가능한 변수에 저장하는 경우를 검출합니다.",
  "desc.DO_NOT_THROW_ITSELF_CAUSE_EXCEPTION": "throw 구문의 수식에서 예외 발생 체커는 예외를 던질때 사용하는 throw 구문의 수식을 평가한 결과가 예외를 발생시키는 수식인 경우를 검출합니다.",
  "desc.DO_NOT_THROW_NULL_REFERENCE_EXCEPTION.CSHARP": "NullReferenceException 예외 던짐 체커는 NullReferenceException 예외를 throw 구문으로 직접 던지는 경우를 검출합니다.",
  "desc.DO_NOT_TREAT_ARRAYS_POLYMORPHICALLY": "배열을 다형성으로 취급 금지 체커는 객체의 동적 포인터 형식과 다른 정적 포인터 형식으로 할당하면 이슈를 검출합니다.",
  "desc.DO_NOT_TYPEDEF_ARRAYTYPE": "typedef을 사용한 배열 타입 선언 체커는 배열 타입을 typedef로 선언한 경우를 검출합니다.",
  "desc.DO_NOT_USE_ABORT_STREAM_OPENED": "적절하지 않은 종료 체커는 fopen() 함수를 사용한 후에 적절하지 않은 종료 함수를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_ADJACENT_BINARY_OPERATOR": "이항 연산자 주위 공백 규칙 위반 체커는 접근 이항 연산자를 제외한 이항 연산자들과 전후 피연산자들 사이에 공백이 없는 수식을 검출합니다.",
  "desc.DO_NOT_USE_ANONYMOUS_LDAP_BIND.OBJC": "익명 LDAP 바인딩 사용 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_ANYTHING_OTHER_THAN_CONSTANT_CLASS_INTERFACE_TYPE": "상수 클래스 interface 타입 외 사용 금지 체커는 상수 클래스가 인터페이스로 생성되지 않은 경우 이슈를 검출합니다.",
  "desc.DO_NOT_USE_ANYTHING_OTHER_THAN_DM_REGULAR_RETURN_VALUE": "DM 정규 반환값 외 사용 금지 체커는 DM의 반환값이 IDataSet type이 아닌 경우를 검출합니다.",
  "desc.DO_NOT_USE_ANYTHING_OTHER_THAN_FM_REGULAR_RETURN_VALUE": "FM 정규 반환값 외 사용 금지 체커는 FM의 반환값이 IDataSet type이 아닌 경우를 검출합니다.",
  "desc.DO_NOT_USE_ANYTHING_OTHER_THAN_PM_REGULAR_RETURN_VALUE": "PM 정규 반환값 외 사용 금지 체커는 PM의 반환값이 IDataSet type이 아닌 경우를 검출합니다.",
  "desc.DO_NOT_USE_ANYTHING_OTHER_THAN_PUBLIC_STATIC_FINAL_DIRECTIVES_WHEN_DECLARING_CONSTANTS": "상수 선언 시 public static final 지시자 외 사용 금지 체커는 상수 선언이 public static final이 아닌 경우 검출합니다.",
  "desc.DO_NOT_USE_ANYTHING_OTHER_THAN_REGULAR_LOG": "정규 로그(ILog) 객체 외 사용 금지 체커는 ILog 객체 이외의 Log 객체를 사용한 경우 검출합니다.",
  "desc.DO_NOT_USE_ARRAY": "배열 자료형 변수 선언 체커는 옵션에 지정된 변수를 배열 자료형으로 선언하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_ARRAY_ACCESS": "배열 수식으로 배열 접근 체커는 배열 객체에 접근할 때 배열 연산자([])를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_ASSIGN_OPERATOR_IN_EXPRESSION": "수식 내에서 대입 연산 사용 체커는 수식 내에서 대입 연산을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_AUTO": "auto 키워드 사용 체커는 auto 키워드를 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_A_COPY_OF_A_FILE_OBJECT": "FILE 객체 복사 체커는 표준 라이브러리 FILE 객체를 복사하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_BIT_FIELD": "비트 필드 자료형 사용 체커는 멤버 변수를 비트 필드 자료형으로 선언하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_BOOLEAN_VECTOR": "bool 타입의 벡터 생성 체커는 벡터에 bool 타입을 담는 변수 선언을 검출합니다.",
  "desc.DO_NOT_USE_BREAK_CONTINUE": "break, continue문을 사용하면 안됩니다.",
  "desc.DO_NOT_USE_BREAK_EXCEPT_SWITCH_STMT": "switch 구문이 아닌 곳에서 break 구문 사용 체커는 switch 구문을 제외한 다른 문장에서 break 구문을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_BREAK_WITH_LABEL": "레이블을 사용한 break 구문 체커는 반복문 내에서 레이블을 사용해 특정 반복문을 지정해 중단하도록 하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_COMMA_OPERATOR": "콤마 연산자 사용 체커는 콤마 연산을 사용한 수식을 검출합니다.",
  "desc.DO_NOT_USE_COMMIT.XSQL.CONFIG": "SQL문에 COMMIT 금지 체커는 SQL 구문 내에서 COMMIT을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_CONSTANTS_AND_UTIL_CLASSES_OUTSIDE_OF_THE_CONSTS_PACKAGE": ".consts 패키지 외 상수/유틸 클래스 사용 금지 체커는 상수/유틸 클래스의 상위 패키지가 consts가 아닌 경우 검출합니다.",
  "desc.DO_NOT_USE_CONSTANT_OF_INNER_CLASS": "내부 클래스의 상수 체커는 내부 클래스에 정적 final로 선언된 상수 변수를 외부 클래스에서 직접 참조하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_CONST_FOR_SYMBOLIC_CONSTANT": "상수 대신 매직 넘버 또는 문자열 사용 체커는 코드에 심볼릭 상수가 아닌 매직 넘버나 문자열들을 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_CSTDIO": "cstdio 헤더 사용 체커는 cstdio 헤더 파일을 포함하는 전처리 구문을 검출합니다.",
  "desc.DO_NOT_USE_CSTRING": "cstring 헤더 사용 체커는 cstring 헤더 파일을 포함하는 전처리 구문을 검출합니다.",
  "desc.DO_NOT_USE_CTIME": "ctime 헤더 사용 체커는 ctime 헤더 파일을 포함하는 전처리 구문을 검출합니다.",
  "desc.DO_NOT_USE_C_STYLE_ALLOCATION": "C 스타일 메모리 관련 함수 사용 체커는 클래스 타입을 할당하거나 해제할 때, C 스타일 메모리 관련 함수를 사용한 수식을 검출합니다.",
  "desc.DO_NOT_USE_C_STYLE_CASTING": "C 스타일 캐스팅 사용 체커는 소스 코드에서 C 스타일 캐스팅을 사용한 수식을 검출합니다.",
  "desc.DO_NOT_USE_DANGEROUS_FUNCTIONS": "위험한 함수 사용 체커는 옵션에 지정된 위험하다고 알려진 함수를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_DANGEROUS_FUNCTIONS.OBJC": "위험한 함수 사용 체커는 옵션에 지정된 위험하다고 알려진 함수를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_DECLARED_VARIABLE_IN_LOOP": "반복문 내 변수 선언 금지 체커는 While, for 반복문 블록 내부 변수에 상수를 할당할 경우 검출합니다.",
  "desc.DO_NOT_USE_DECODE.XSQL.CONFIG": "DECODE문 사용 금지 체커는 SQL 구문 내에서 DECODE를 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_DEFAULT_ARGUMENT_WITH_OVERLOADED": "오버로딩된 함수에서 기본 인자 값 사용 체커는 오버로딩으로 정의된 함수에 기본 인자 값이 사용된 경우를 검출합니다.",
  "desc.DO_NOT_USE_DEF_WITHIN_A_BLOCK": "블록 내에서 define 및 undef 전처리 구문 사용 체커는 함수 본문과 같은 블록 내에서 define 이나 undef 전처리 구문을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_DEPRECATED_API": "사용 자제 API를 사용 체커는 사용을 자제할 것이 권고되는(deprecated) API를 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_DEPRECATED_FUNCTIONS": "더 이상 사용되지 않는 함수 호출 체커는 중요도가 떨어져서 더 이상 사용되지 않는 함수를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_DIGRAPH": "이중자 사용 체커는 이중자(digraph)를 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_DOWHILE": "Do-while 문을 사용했습니다.",
  "desc.DO_NOT_USE_DO_WHILE": "Do-While 문 사용 체커는 Do-While 문을 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_DU_WITHOUT_DATA_UNIT_INHERITANCE": "DataUnit 상속 없는 DU 사용 금지 체커는 DU가 pobis.framework.base.DataUnit를 상속 받지 않은 경우 검출합니다.",
  "desc.DO_NOT_USE_DYNAMICALLY_ALLOCATED_ARRAYS": "동적 할당한 배열 사용 체커는 동적으로 할당한 배열 타입의 변수 선언을 검출합니다.",
  "desc.DO_NOT_USE_DYNAMIC_ALLOCATION": "동적 할당 사용 체커는 동적 할당을 사용한 수식을 검출합니다.",
  "desc.DO_NOT_USE_ERRNO": "errno 지시자 사용 체커는 errno 지시자를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_EXPERIMENTAL_FIREFOX": "실험적인 파이어폭스 식별자를 사용하지 않도록 합니다.",
  "desc.DO_NOT_USE_EXPERIMENTAL_MS": "실험적인 익스플로러 식별자를 사용하지 않도록 합니다.",
  "desc.DO_NOT_USE_EXPERIMENTAL_OPERA": "실험적인 오페라 식별자를 사용하지 않도록 합니다.",
  "desc.DO_NOT_USE_EXPERIMENTAL_WEBKIT": "실험적인 웹킷 식별자를 사용하지 않도록 합니다.",
  "desc.DO_NOT_USE_EXTERN_OR_STATIC": "금지된 정적 및 외부 키워드 사용 체커는 옵션에 지정된 범위의 변수나 함수를 선언할 때 static 혹은 extren 키워드를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_EXTRA_CHARACTER_AFTER_PREPROCESSOR": "전처리 구문 뒤에 불필요한 문자 작성 체커는 정상적인 전처리 구문 형식 뒤에 공백을 제외한 불필요한 문자가 오는 경우를 검출합니다.",
  "desc.DO_NOT_USE_FENV_EXCEPTIONS": "금지된 fenv.h 헤더의 예외 처리 사용 체커는 fenv.h 헤더에 포함된 예외 처리 기능을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_FENV_H": "표준 헤더 <fenv.h> 를 사용하지 마십시오,",
  "desc.DO_NOT_USE_FINDDOMNODE.REACT": "React에는 주어진 클래스 인스턴스를 바탕으로 트리를 탐색해 DOM 노드를 찾을 수 있는 \"findDOMNode\"를 지원합니다. 하지만 \"findDOMNode\"는 부모가 특정 자식을 렌더링하는 것이 허용되어 추상화가 깨지는 원인이 됩니다.",
  "desc.DO_NOT_USE_FLOAT_AS_LOOP_COUNTERS": "루프 카운터에 실수 타입 사용 체커는 실수형 변수를 루프 카운터로 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_FLOAT_TYPE_FOR_LOOP_INDICES": "반복문 인덱스의 float 자료형 사용 체커는 반복문의 인덱스로 float 자료형을 사용하면 이슈를 검출합니다.",
  "desc.DO_NOT_USE_FORBIDDEN_FUNC": "사용 금지 함수 입니다.",
  "desc.DO_NOT_USE_FORBIDDEN_TYPE": "사용불가능한 타입 입니다.",
  "desc.DO_NOT_USE_FUNCTION_LIKE_MACRO": "매크로 함수 사용 체커는 매크로 함수를 정의하여 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_FU_WITHOUT_FUNCTION_UNIT_INHERITANCE": "FunctionUnit 상속 없는 FU 사용 금지 체커는 FU가 pobis.framework.base.FunctionUnit를 상속 받지 않은 경우 검출합니다.",
  "desc.DO_NOT_USE_GETLOGIN_IN_MULTI_THREAD": "다중 스레드 환경에서 getlogin() 함수 사용 체커는 다중 스레드 환경에서 사용자 계정을 가져오기 위해 getlogin() 함수를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_GIF_FORMAT": "gif 포맷은 사용하지 않도록 합니다.",
  "desc.DO_NOT_USE_GOTO_STATEMENT": "goto 구문 사용 금지 체커는 goto 구문이 정해진 제한을 어기고 사용되는 경우를 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING": "금지된 하드코드 사용 체커는 옵션에 지정된 변수 중 하나를 하드코딩하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING.CALL": "함수 호출 시 하드코딩된 인자 사용 체커는 옵션에 지정된 함수를 호출할 때 특정 인자 위치에 하드코딩된 값을 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING.INITIALIZATION": "변수 초기화 시 하드코딩된 값 사용 체커는 옵션에 지정된 변수를 초기화할 때 하드코딩된 값을 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING.IP_ADDRESS.CSHARP": "하드코딩된 IP 체커는 IP 주소를 하드코드해서 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING.IP_ADDRESS.SWIFT": "하드코딩된 IP 체커는 IP 주소를 하드코딩하여 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING.LITERAL": "하드코딩 사용 금지 체커는 소스코드 내 문자열(Literal) 사용을 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING.NUMBER": "숫자 상수 하드코드 체커는 정수나 실수 상수가 함수 인자나 수식 등에 직접 사용되는 경우를 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING.PASSWORD": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호가 SQLConnect() 함수에 포함되어 있는 경우를 검출합니다.",
  "desc.DO_NOT_USE_HARD_CODING.USERNAME": "하드코딩된 사용자 계정 체커는 하드코딩된 사용자 계정이 SQLConnect() 함수에 포함되어 있는 코드를 검출합니다.",
  "desc.DO_NOT_USE_HEXADECIMAL_ESCAPE": "16진수 이스케이프 시퀀스 사용 체커는 16진수 이스케이프 시퀀스를 사용한 수식을 검출합니다.",
  "desc.DO_NOT_USE_HTTP_PROTOCOL": "HTTP(HyperText Transfer Protocol)를 통한 통신은 패킷의 도청 위험이 있습니다. 이를 막기 위해 HTTP에 보안 통신인 SSL을 추가하여 사용하는 것이 HTTPS입니다.",
  "desc.DO_NOT_USE_HTTP_PROTOCOL.SWIFT": "HTTP 프로토콜을 통한 전송 체커는 HTTP 프로토콜을 사용하여 데이터를 서버로 보내는 경우를 검출합니다.",
  "desc.DO_NOT_USE_IF_DIRECTIVE": "if 전처리 구문 사용 체커는 if 전처리 구문가 사용된 경우를 검출합니다.",
  "desc.DO_NOT_USE_IMPLICIT_DECLARED_FUNCTION": "암시적 함수 선언 체커는 함수가 암시적으로 선언된 경우를 검출합니다.",
  "desc.DO_NOT_USE_IMPORTANT_FLAG": "!important 플래그는 사용하면 안 됩니다.",
  "desc.DO_NOT_USE_INLINE": "메소드의 인라인 선언 체커는 인라인으로 선언된 클래스 메소드를 검출합니다.",
  "desc.DO_NOT_USE_INSTANCE_OF_IN_CATCH": "catch문 내 instanceof 사용 금지 체커는 catch블럭 내에서 instanceof를 사용하는 경우 검출합니다.",
  "desc.DO_NOT_USE_IO_WITHOUT_BUFFER_PROCESSING": "Buffer 처리 없는 I/O 사용 금지 체커는 BufferedStream 없이 FileStream의 메소드 직접 사용한 경우 검출합니다.",
  "desc.DO_NOT_USE_IPv4.SPECIFIC_APIS.OBJC": "IPv4 전용 API 사용 체커는 사용이 금지된 IPv4 전용 함수들의 사용을 검출합니다.",
  "desc.DO_NOT_USE_LABEL_STATEMENT": "레이블 구문 사용 금지 체커는 레이블 구문을 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_LONGJMP": "longjmp() 함수 사용 체커는 longjmp() 함수를 사용하는 수식을 검출합니다.",
  "desc.DO_NOT_USE_LOWERCASE.XSQL.CONFIG": "SQL 영문 대문자 외 작성 금지 체커는 SQL 구문 내에서 소문자를 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_MODULAR": "나머지 연산 금지 체커는 나머지 연산(%)을 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_MULTILINE_IN_SINGLECOMMENT": "한 줄 주석문을 여러 줄로 작성 체커는 \"//\"으로 시작되는 한 줄 주석문에 역슬래시를 사용한 줄 분할이 존재하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_NESTED_TRY": "중첩된 try 구문 사용 체커는 try 구문의 블록 안에 또 다른 try 구문을 중첩해서 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_NON_CONST_FUNCTION_POINTER": "상수가 아닌 함수 포인터는 사용하지 않도록 합니다.",
  "desc.DO_NOT_USE_NON_STANDARD_CHARACTERS": "include 전처리 구문의 파일 이름에 비표준 문자 사용 체커는 include 전처리 구문으로 포함시키는 파일의 이름에 비표준 문자가 있는 경우를 검출합니다.",
  "desc.DO_NOT_USE_NOTIFY": "notify 사용 금지 체커는 notifiy()를 직접 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_NOT_NULL_ASSERTION_OPERATOR.KOTLIN": "널 반환 값 역참조 체커는 반환된 널 값을 확인 없이 역참조하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_NULL_MACRO": "널 매크로 사용 체커는 널 매크로를 사용한 수식을 검출합니다.",
  "desc.DO_NOT_USE_OCTAL": "8진수 사용 체커는 8진수를 사용하는 수식을 검출합니다.",
  "desc.DO_NOT_USE_OCTAL_ESCAPE": "8진수 이스케이프 시퀀스 사용 체커는 8진수 이스케이프 시퀀스를 사용하는 수식을 검출합니다.",
  "desc.DO_NOT_USE_OFFSETOF_MACRO": "offsetof 매크로 사용 체커는 offsetof 매크로를 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_OTHER_THAN_REGULAR_MEMBER_VARIABLE": "정규 멤버변수 외 사용 금지 체커는 허용하지 않은 멤버변수 사용을 검출합니다.",
  "desc.DO_NOT_USE_PARAMETERS_OTHER_THAN_DM_PARAMETERS": "DM 정규 파라미터 외 사용 금지 체커는 DM의 파라미터가 IDataSet, IOnlineContext type이 아닌 경우 검출합니다.",
  "desc.DO_NOT_USE_PARAMETERS_OTHER_THAN_FM_PARAMETERS": "FM 정규 파라미터 외 사용 금지 체커는 FM의 파라미터가 IDataSet, IOnlineContext type이 아닌 경우 검출합니다.",
  "desc.DO_NOT_USE_PARAMETERS_OTHER_THAN_PM_PARAMETERS": "PM의 정규 파라미터 외 사용 금지 체커는 PM의 파라미터가 IDataSet, IOnlineContext type이 아닌 경우 이슈를 검출합니다.",
  "desc.DO_NOT_USE_POINTER_ARITHMETIC": "포인터 연산 사용 체커는 포인터 연산을 하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_PRAGMA": "컴파일러에 종속적인 pragma 사용 체커는 컴파일러나 플랫폼 별로 고유한 지시사항을 전달하는 데 사용되는 #pragma의 사용을 검출합니다.",
  "desc.DO_NOT_USE_PRINTF": "출력 함수 사용 체커는 printf() 함수를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_PTHREAD_KILL": "pthread_kill() 함수 사용 체커는 pthread_kill() 함수를 호출하는 수식을 검출합니다.",
  "desc.DO_NOT_USE_PUBLIC_FIELD": "public 필드 사용 체커는 필드 변수에 public 한정자를 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_PUBLIC_METHODS_OTHER_THAN_PU_AND_PM": "PU, PM 외 public 메소드 사용 금지 체커는 PU 내에 PM 이외의 public 메소드가 존재할 경우 이슈를 검출합니다.",
  "desc.DO_NOT_USE_PU_WITHOUT_PROCESS_UNIT_INHERITANCE": "ProcessUnit 상속 없는 PU 사용 금지 체커는 PU가 pobis.framework.base.ProcessUnit를 상속 받지 않은 경우 이슈를 검출합니다.",
  "desc.DO_NOT_USE_RECURSION": "금지된 재귀 호출 체커는 함수 정의에 재귀 호출을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_REGISTER": "register 키워드 사용 체커는 register 키워드를 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_RESERVED_IN_MACRO": "예약어를 매크로 이름으로 사용 체커는 매크로 정의에서 예약어를 이름으로 지정한 경우를 검출합니다.",
  "desc.DO_NOT_USE_RESTRICT": "금지된 한정자 restrict 사용 체커는 restrict 타입 한정자 사용을 검출합니다.",
  "desc.DO_NOT_USE_ROLLBACK.XSQL.CONFIG": "SQL문에 COMMIT 금지 체커는 SQL 구문 내에서 ROLLBACK을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_SAME_NAME_IN_NESTED": "다른 범위의 이름이 같은 식별자 체커는 서로 다른 범위에 있는 식별자의 이름이 동일한 경우를 검출합니다.",
  "desc.DO_NOT_USE_SAME_SPELLING_IN_ANOTHER_NAMESPACE": "이름이 같은 서로 다른 이름 공간(name space)의 식별자 체커는 어떠한 이름 공간에 속한 식별자가 다른 이름 공간에 속한 식별자와 이름이 같은 경우를 검출합니다.",
  "desc.DO_NOT_USE_SELECT_ASTERISK.XSQL.CONFIG": "SELECT * 사용 금지 체커는 SQL 구문 내에서 SELECT *을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_SEMICOLON_AFTER_PREPROCESSOR": "전처리 구문 뒤에 세미콜론 작성 체커는 정상적인 전처리 구문 형식 뒤에 세미콜론이 오는 경우를 검출합니다.",
  "desc.DO_NOT_USE_SEQ_IN_ORDER_BY.XSQL.CONFIG": "ORDER BY 절에 순서값 사용 금지 체커는 ORDER BY 절에서 순서값을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_SERVERSOCKET": "Socket 클래스 사용 금지 체커는 java.net.Socket 혹은 java.net.ServerSocket 클래스를 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_SETJMP": "setjmp 매크로 사용 체커는 setjmp 매크로를 사용하는 수식을 검출합니다.",
  "desc.DO_NOT_USE_SETJMP_H": "표준 헤더 <setjmp.h> 를 사용하지 마십시오,",
  "desc.DO_NOT_USE_SETLOCALE": "setlocale 함수 사용 체커는 locale.h 라이브러리의 setlocale() 함수를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_SHARP_OPERATOR": "# 및 ## 연산으로 매크로 정의 체커는 # 연산이나 ## 연산을 사용하여 매크로를 정의하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_SHIFT_ON_SIGNED_VALUE": "부호가 있는 타입들을 대상으로 시프트(shift) 연산을 수행한 경우를 검출합니다.",
  "desc.DO_NOT_USE_SHORT": "short 타입 사용 체커는 모든 short 타입 사용을 검출합니다.",
  "desc.DO_NOT_USE_SIGNAL": "금지된 시그널 함수 사용 체커는 signal() 함수 호출을 검출합니다.",
  "desc.DO_NOT_USE_SIGNAL_HANDLING": "시그널 핸들링 사용 체커는 signal.h의 시그널 핸들링 기능을 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_SIZEOF_ON_ARRAY_PARAM": "배열 타입의 인자에 sizeof 연산자 사용 체커는 함수의 인자로 전달된 배열 타입의 변수에 sizeof 연산자를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_SIZEOF_ON_PTR": "포인터 타입에 sizeof 연산자 사용 체커는 포인터 타입에 sizeof 연산자를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_SMS.SWIFT": "SMS 기능 사용 체커는 SMS 관련 작업을 수행하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_STATIC_IN_HEADER": "헤더 파일에서 정적 한정자 사용 체커는 헤더 파일에서 함수 또는 변수 속성으로 정적 한정자를 사용하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_STDARG_FEATURE": "금지된 stdarg.h 헤더의 기능 사용 체커는 stdarg.h 헤더를 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_STDARG_H": "<stdarg.h>의 기능을 사용하지 마십시오",
  "desc.DO_NOT_USE_STDIO_H": "stdio 사용 체커는 stdio.h를 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_STL_CONTAINER_AS_PUBLIC_BASE_CLASSES": "STL 컨테이너를 상속 체커는 STL 컨테이너를 부모 클래스로 상속한 클래스를 검출합니다.",
  "desc.DO_NOT_USE_STRING_OPERATION_IN_LOG": "로그 내 문자열 연산(+) 사용 금지 체커는 로그 기록을 사용할 때 \"+\" 연산자를 사용하는 경우 이슈를 검출합니다.",
  "desc.DO_NOT_USE_STYLELINT_DISABLE": "stylelint-disable 태그를 제거해야 합니다.",
  "desc.DO_NOT_USE_STYLELINT_ENABLE": "stylelint-enable 태그를 제거해야 합니다.",
  "desc.DO_NOT_USE_SYNCHRONIZED_STATEMENT": "동기화 구문 사용 체커는 모든 synchronized 구문을 검출합니다.",
  "desc.DO_NOT_USE_SYSTEM": "금지된 system() 함수 사용 체커는 사용이 금지된 system() 함수를 호출하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_SYSTEM.OBJC": "system() 함수 호출 체커는 system() 함수를 호출하는 코드를 검출합니다.",
  "desc.DO_NOT_USE_SYSTEM_COLOR": "더이상 사용되지 않는 시스템 색상은 사용해선 안됩니다.",
  "desc.DO_NOT_USE_TERNARY_OPERATOR": "삼항 연산자 사용 체커는 삼항 연산자를 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_TGMATH_H": "금지된 헤더 tgmath.h 사용 체커는 표준 헤더 tgmath.h를 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_THREAD_INHERITANCE": "Thread 상속 금지 체커는 Thread를 상속히는 클래스가 있을 경우 이슈를 검출합니다.",
  "desc.DO_NOT_USE_THROWABLE_FUNCTION_IN_COPY_ASSIGNMENT": "예외가 발생하는 복사 대입 연산자 체커는 예외를 던지는 swap 로직을 구현한 복사 대입 연산자 선언을 검출합니다.",
  "desc.DO_NOT_USE_THROW_IN_CTOR_OR_DTOR": "생성자 및 소멸자에서 예외 던짐 체커는 직접적으로 throw 구문을 메소드 내부에서 사용하는 생성자 및 소멸자를 검출합니다.",
  "desc.DO_NOT_USE_TRIGRAPH": "삼중자 사용 체커는 소스 코드 내에서 삼중자를 사용하는 수식을 검출합니다.",
  "desc.DO_NOT_USE_UNBOUNDED_AGGREGATE_TYPE": "C 스타일 배열 사용 체커는 C 스타일의 배열을 사용한 변수 선언을 검출합니다.",
  "desc.DO_NOT_USE_UNDEF": "undef 전처리 구문 사용 체커는 undef 전처리 구문을 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_UNDEFINED_MACRO_IDENTIFIERS": "정의되지 않은 매크로 식별자 사용 체커는 미리 정의되지 않은 매크로 식별자를 사용한 전처리 구문을 검출합니다.",
  "desc.DO_NOT_USE_UNION": "공용체 사용 체커는 공용체를 선언한 경우를 검출합니다.",
  "desc.DO_NOT_USE_UNUSED_MACRO_GLOBAL": "불필요한 매크로 선언 체커는 프로젝트 어디에서도 사용되지 않는 매크로 선언을 검출합니다.",
  "desc.DO_NOT_USE_UNUSED_TAG_GLOBAL": "불필요한 태그 선언 체커는 프로젝트 어디에서도 사용되지 않는 태그 선언을 검출합니다.",
  "desc.DO_NOT_USE_UNUSED_TYPE_GLOBAL": "불필요한 타입 선언 체커는 프로젝트 어디에서도 사용되지 않는 타입 선언을 검출합니다.",
  "desc.DO_NOT_USE_USING_DIRECTIVE": "using 지시자 사용 체커는 명시적인 네임스페이스 한정자를 쓰거나, using 선언을 사용하지 않고 using 지시자를 사용한 경우를 검출합니다.",
  "desc.DO_NOT_USE_VARIABLE_LENGTH_ARRAY": "가변 길이 배열 사용 체커는 정적 배열을 선언할 때 정해지지 않은 크기로 선언한 경우를 검출합니다.",
  "desc.DO_NOT_USE_VFORK": "vfork() 함수 사용 체커는 vfork() 함수를 호출한 후에 execve() 함수를 호출하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_VOLATILE": "volatile 사용 체커는 모든 volatile 한정자 사용을 검출합니다.",
  "desc.DO_NOT_USE_VOLATILE_IN_COMPLEX_EXPRESSION": "복합 수식절에서 volatile 변수 사용 체커는 복합 수식절에서 volatile 한정자를 가진 변수를 피연산자로 두 번 이상 사용하는 수식을 검출합니다.",
  "desc.DO_NOT_USE_WIDE_CHARACTER": "와이드 문자열 사용 체커는 와이드 문자열을 사용하는 경우를 검출합니다.",
  "desc.DO_NOT_USE_WITH.SQL": "WITH 절 사용 금지 체커는 SQL 쿼리 내에서 WITH 절을 사용할 경우 이슈를 검출합니다.",
  "desc.DO_NOT_USE_WITH.SQL.CONFIG": "WITH 절 사용 금지 체커는 SQL 쿼리 내에서 WITH 절을 사용할 경우 이슈를 검출합니다.",
  "desc.DO_NOT_VIOLATE_CONSTRAINTS": "extern inline 함수의 제약 조건 위반 체커는 extern inline으로 선언된 함수에서 접근해선 안되는 객체에 접근하는 경우를 검출합니다.",
  "desc.DO_NOT_WAIT_IN_SYNCHRONIZED_WITHOUT_CONTROL": "동기화 블록 내에서 제어 없이 wait 사용 체커는 synchronized 블록 내에서 wait() 메소드를 호출할 때 아무런 제어가 없을 경우를 검출합니다.",
  "desc.DO_NOT_WRITE_CONFUSED_CHARACTER": "동일한 식별자에서 혼란스러운 문자 사용 체커는 동일한 식별자에서 숫자 '1'와 소문자 'l', 숫자 '0'과 대문자 'O'를 같이 쓰면 검출합니다.",
  "desc.DROPPED_ERROR_PAGE_J2EE.CONFIG": "사용자 정의 에러 페이지가 누락되면 기본 에러 페이지가 사용자에게 표시됩니다. 기본 에러 페이지는 서버의 내부 정보를 포함할 수 있고, 이는 공격자에게 유용한 정보를 제공할 수 있습니다.",
  "desc.DUPLICATED.DESIGNATED_INIT": "지정 초기화 리스트에서 중복 초기화 체커는 지정 초기화 리스트에서 같은 항목이 두 번 이상 표시된 경우를 검출합니다.",
  "desc.DUPLICATED_SECURITY_ROLE.CONFIG": "중복된 보안 역할 체커는 보안 역할이 중복되어 있는 경우를 검출합니다.",
  "desc.DUPLICATED_SERVLET_MAPPING.CONFIG": "중복된 서블릿 매핑 체커는 서블릿 매핑이 중복되어 있는 경우를 검출합니다.",
  "desc.DUPLICATE_CONDITION_IN_IF_SWITCH.SWIFT": "중복된 조건 검사 체커는 if 문 또는 switch 문에서 동일한 조건을 중복 확인 하는 경우를 검출합니다.",
  "desc.DYNAMIC_CODE_EVALUATION.VBS": "동적 계산 코드 삽입 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.",
  "desc.DYNAMIC_CODE_MANIPULATION": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 검출합니다.",
  "desc.DYNAMIC_CODE_MANIPULATION.JS": "동적 코드 조작 취약점 체커는 MongoDB에서 db.collection.find() 함수를 호출할 때 $where 오퍼레이터를 사용하는 코드를 검출합니다.",
  "desc.DYNAMIC_CODE_MANIPULATION.KOTLIN": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 검출합니다.",
  "desc.DYNAMIC_CODE_MANIPULATION.PHP": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 검출합니다.",
  "desc.DYNAMIC_CODE_MANIPULATION.PYTHON": "공격자가 소프트웨어의 의도된 동작을 변경하도록 코드를 삽입하여 소프트웨어가 비정상적으로 동작하도록 하는 보안약점을 말합니다. 사용자가 입력한 값을 받아 동적 코드를 실행하는 함수를 허용할 경우, 개발자가 의도하지 않은 코드를 실행하여 권한을 탈취하거나 인증 우회, 시스템 명령어 실행 등의 위험이 있습니다.",
  "desc.DYNAMIC_CODE_MANIPULATION_CSHARP": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 검출합니다.",
  "desc.DYNAMIC_TYPE_IN_CTOR_OR_DTOR": "객체의 동적 타입은 생성자 또는 소멸자에서 사용하면 안됩니다.",
  "desc.DataflowAnomalyAnalysis": "정의되지 않은 변수를 참조하거나 최근에 정의된 변수가 정의 해제되는 경우 또한 최근에 정의된 변수가 재정의 되는 경우를 검출합니다.",
  "desc.DefaultLabelNotLastInSwitchStmt": "switch 구문에 default 구문이 있으나, 케이스들의 마지막에 위치하지 않는 경우 이를 검출합니다.",
  "desc.DefaultPackage": "명시적인 범위를 사용하지 않고 기본 package private 수준을 사용할 경우 이를 검출합니다.",
  "desc.DoNotCallGarbageCollectionExplicitly": "System.gc() 호출, Runtime.gc() 호출 및 System.runFinalization() 호출을 검출합니다.",
  "desc.DoNotExtendJavaLangError": "예외를 java.lang.Error로부터 상속받은 경우를 검출합니다.",
  "desc.DoNotHardCodeSDCard": "SD카드의 저장 위치를 얻기 위해 Environment.getExternalStorgeDirectory() 대신 /sdcard를 직접 사용하는 경우 이를 검출합니다.",
  "desc.DoNotThrowExceptionInFinally": "finally 블록에서의 예외 throw을 검출합니다.",
  "desc.DontCallThreadRun": "외부에서 Thread.run() 메소드를 직접 호출하는 경우 이를 검출합니다.",
  "desc.DontImportJavaLang": "java.lang… import을 검출합니다.",
  "desc.DontImportSun": "sun.* 패키지 import를 검출합니다. 해당 패키지는 휴대가 용이하지 않으며 변화될 가능성이 존재합니다.",
  "desc.DontNestJsfInJstlIteration": "JSF 구성 요소의 custom action이 해당 body의 반복문에 포함되어 있는 경우 이를 검출합니다.",
  "desc.DontUseFloatTypeForLoopIndices": "float 자료형을 사용하여 반복문의 인덱스로 사용하는 것을 검출 합니다.",
  "desc.DoubleCheckedLocking": "부분적으로 생성된 객체가 중복 검사된 잠금 패턴에 의해 반환되는 경우, 스레드 안전하지 않으므로 이를 검출합니다.",
  "desc.DuplInheritedMember": "부모 클래스에서 정의된 변수 이름과 충돌합니다.",
  "desc.DuplicateImports": "중첩된 import 구문을 검출합니다.",
  "desc.DuplicateJspImports": "JSP 내에서 중복된 import 구문을 사용한 경우 이를 검출합니다.",
  "desc.EACH_COMMENT_LINE_LENGTH": "블록 주석의 길이 불일치 체커는 특정한 형태로 작성된 여러 줄 주석문에서 각 라인의 길이가 다르게 작성된 경우를 검출합니다.",
  "desc.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION": "비 문자가 포함된 채 입력 검증 체커는 입력 문자열을 검증하기 전에 정상 문자열이 아닌 것을 제거하지 않은 경우를 검출합니다.",
  "desc.EMERGENT_LANGUAGE_FEATURES_SHALL_NOT_BE_USED": "MISRA C:2012에서는 C11 표준에 추가된 언어 기능을 사용하지 말 것을 권고합니다. 이 기능들은 정의되지 않거나 명확하지 않은 동작을 유발할 수 있으며, 개발자가 예상하지 못한 동작을 할 수 있습니다",
  "desc.EMPTY_ARRAY_SIZE": "빈 배열 크기 체커는 크기를 명시하지 않고 배열 변수를 선언하는 경우를 검출합니다.",
  "desc.EMPTY_ARRAY_SIZE.MISRA2012": "extern으로 선언된 빈 배열의 크기 미지정 체커는 extern으로 선언된 배열 변수의 크기를 명시하지 않는 코드를 검출합니다.",
  "desc.EMPTY_BRANCH": "빈 분기 체커는 if 구문의 거짓 분기 혹은 switch 구문의 case 및 default 블록에 실행할 코드가 없는 경우를 검출합니다.",
  "desc.EMPTY_BRANCH.ELSE.ABAP": "빈 else 분기 체커는 ELSE 절로 끝나지 않는 IF-ELSEIF 구문을 검출합니다.",
  "desc.EMPTY_BRANCH.MISSING_ELSE": "if-else 문에서 else 누락 체커는 else 절로 끝나지 않는 if-else 구문을 검출합니다.",
  "desc.EMPTY_BRANCH.VBNET": "빈 분기 체커는 비어 있는 분기를 검출합니다.",
  "desc.EMPTY_BRANCH.WHEN_OTHERS.ABAP": "누락된 WHEN OTHERS 분기 체커는 WHEN OTHERS 절이 없는 CASE 구문을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK.ABAP": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK.CSHARP": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK.JS": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK.KOTLIN": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK.OBJC": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK.PHP": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK.PYTHON": "오류가 발생할 수 있는 부분을 확인하였으나, 이러한 오류에 대하여 예외 처리를 하지 않을 경우, 공격자는 오류 상황을 악용하여 개발자가 의도하지 않은 방향으로 프로그램이 동작하도록 할 수 있습니다.",
  "desc.EMPTY_CATCH_BLOCK.SWIFT": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_CATCH_BLOCK.VBNET": "빈 예외 처리 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.",
  "desc.EMPTY_EXTERN_ARRAY_SIZE": "extern variable이 배열일 경우 명시적으로 배열 크기를 지정해야 합니다.",
  "desc.EMPTY_FINALLY_BLOCK": "비어있는 FinallyBlock 체커는 Finally블록을 미작성시 검출합니다.",
  "desc.EMPTY_FINALLY_BLOCK.CSHARP": "빈 finally 블록 체커는 finally 블록이 비어 있는 경우를 검출합니다.",
  "desc.EMPTY_HMAC_KEY.SWIFT": "비어 있는 HMAC 키 체커는 HMAC 키가 비어 있는 경우를 검출합니다.",
  "desc.EMPTY_PASSWORD.CONFIG": "비어 있는 비밀번호 체커는 설정 파일에 암호를 빈 문자열로 저장하는 경우를 검출합니다.",
  "desc.EMPTY_SALT.PYTHON": "패스워드와 같은 중요 정보를 저장할 경우, 임의의 길이인 데이터를 고정된 크기의 해시값으로 변환해주는 일방향 해시 함수를 이용하여 저장합니다. 만약 중요 정보를 솔트(Salt)없이 일방향 해시 함수를 사용하여 저장한다면, 공격자는 미리 계산된 레인보우 테이블을 이용하여 해시값을 알아낼 수 있습니다.",
  "desc.EMPTY_SYNCHRONIZED_BLOCK": "synchronized 블럭 내부에 코드 미작성 체커는 sychronized 구문이 비어있으면 검출합니다.",
  "desc.EMPTY_TRY_BLOCK": "비어있는 TryBlock 체커는 Try블록을 미작성시 검출합니다.",
  "desc.EMPTY_WHILE": "빈 while 구문 체커는 본문에 아무런 내용이 없는 while 구문을 검출합니다.",
  "desc.EMPTY_WHILE_EMBEDDED_STATEMENT.CSHARP": "빈 while 구문 체커는 while 문이 선언되었지만 내부 블록이 비어 있는 경우를 검출합니다.",
  "desc.EMPTY_WHILE_STATEMENT": "빈 while 구문 체커는 while 구문이 비어 있는 코드를 검출합니다.",
  "desc.ENCAPSULATE_ASSEMBLER": "캡슐화 되지 않은 어셈블리어 코드 체커는 따로 함수로 분리되지 않고 사용하는 어셈블리어 코드를 검출합니다.",
  "desc.ENCLOSE_FUNCTIONS_IN_THE_UNNAMED_NAMESPACE": "소스 파일 전용 함수의 잘못된 선언 체커는 외부 인터페이스에 속해있지 않은 비 멤버 함수가 소스 파일에서 이름이 없는 네임스페이스 안에 들어있지 않은 경우를 검출합니다.",
  "desc.ENSURE_CONSISTENCY_OF_THE_PARAMETER_DECLARATION": "일관성 없는 매개 변수 선언 체커는 함수를 선언할 때 매개 변수 목록을 일관성있게 작성하지 않은 경우를 검출합니다.",
  "desc.ENSURE_EACH_IDENTIFIER_IS_DISTINCT": "고유하지 않은 식별자 체커는 고유하지 않은 식별자를 사용할 때 검출합니다.",
  "desc.ENSURE_LAST_LINE_IS_EMPTY": "비어 있지 않은 마지막 줄 체커는 소스 코드가 포함된 모든 파일의 마지막 줄이 빈 줄이 아닌 경우를 검출합니다.",
  "desc.ENSURE_MEMBER_TYPE_OF_STRUCT": "구조체의 멤버 변수들은 제한된 타입만 사용되어야 합니다.",
  "desc.ENSURE_PASSING_VECTOR_TYPE_TO_C_STYLE": "C 스타일 함수에 벡터 객체 전달 체커는 C 스타일을 사용하는 함수의 배열 인자에 올바른 방식으로 전달하지 않은 벡터 객체를 검출합니다.",
  "desc.ENSURE_PRIVILEGE_RELINQUISHMENT": "setuid() 함수의 잘못된 사용 체커는 setuid(getuid()) 함수를 호출한 후에 setuid(0) 함수를 호출하지 않는 코드를 검출합니다.",
  "desc.ENSURE_RETURN_VALUE_COMPARE": "반환 값이 적절한 타입과 비교되는지 확인해야 합니다.",
  "desc.ENSURE_SINGLE_ENTRY_AND_EXIT_POINT": "복합 구문의 복잡한 진입 및 탈출 체커는 switch 구문을 제외한 복합 구문에 진입 및 탈출 지점이 각기 한 개를 초과하는 경우를 검출합니다.",
  "desc.ENSURE_USING_NAMESPACE_POSITION": "잘못된 위치에 있는 using 지시자 체커는 using 지시자가 메인 소스 파일에서, 모든 #include 이후에 있지 않은 경우를 검출합니다.",
  "desc.EQUALS_METHOD_IS_OVERLOADED": "오버로딩된 equals 메소드 체커는 인자 타입을 java.lang.Object 대신 다른 타입으로 변경하여 정의한 equals() 메소드를 검출합니다.",
  "desc.ERROR_MESSAGE_INFORMATION_LEAK.JS": "응용 프로그램이 민감한 정보를 포함하는 오류 메시지를 생성해 외부에 제공하면 공격자의 악성 행위로 이어질 수 있습니다. 예외발생 시 예외 이름이나 추적 메시지(traceback)를 출력하는 경우, 프로그램 내부 구조를 쉽게 파악할 수 있습니다.",
  "desc.ERROR_WITHOUT_ACTION": "누락된 반환 값 검사 체커는 반환 값을 사용하지 않거나 반환 값을 검사했으나 아무런 방어 코드도 넣지 않은 경우를 검출합니다.",
  "desc.ERROR_WITHOUT_ACTION.OBJC": "대응하지 않은 반환 값 체커는 반환 값을 사용하지 않거나 반환 값을 검사했으나 아무런 방어 코드도 넣지 않은 경우를 검출합니다.",
  "desc.EUGENE_NAMING_CONVENTION": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_TOO_LONG_FUNCTION_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_TOO_LONG_VARIABLE_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_BSNAME_IN_FILENAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_BSNAME_IN_FUNCTION_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_CMNAME_IN_FILE_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_CMNAME_IN_FUNCTION_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_DATA_FILE_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_DEFAULT_DBIO": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_DSNAME_IN_FILE_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_FUNCTION_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_OSNAME_IN_FILE_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_OSNAME_IN_FUNCTION_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_STRUCTURE_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_UMNAME_IN_FILE_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_UMNAME_IN_FUNCTION_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_USER_DBIO": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EUGENE_WRONG_VARIABLE_NAME": "유진투자증권 코딩 표준의 명명법을 따릅니다.",
  "desc.EVAL_INJECTION": "동적 계산 코드 삽입 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.",
  "desc.EVAL_INJECTION.JS": "동적 계산 코드 삽입 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.",
  "desc.EVAL_INJECTION.PYTHON": "동적 계산 코드 삽입 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.",
  "desc.EXCEPTION.IGNORE_RETURN_VALUE.PF": "특정 API 사용시 반환값을 확인하여 예외처리 하는지 확인해야 합니다.",
  "desc.EXCEPTION.MISSING_HANDLE.RES.PF": "리소스 모듈 (BM, SM, BTM) 호출후 예외처리를 했는지 검증해야 합니다.",
  "desc.EXCESSIVE_FUNCTION_CALLS": "함수 호출 개수 초과 체커는 옵션에 지정된 함수 호출의 개수를 초과하여 함수 호출을 한 경우를 검출합니다.",
  "desc.EXCESSIVE_IFS": "연속된 if 문 사용 체커는 If 구문을 연속적으로 사용하는 코드를 검출합니다.",
  "desc.EXCESSIVE_SERVLET_MAPPING.CONFIG": "과도한 서블릿 매핑 체커는 여러 URL 패턴이 단일 서블릿에 매핑되어 있는 경우를 검출합니다.",
  "desc.EXCESSIVE_SESSION_TIMEOUT.CAKEPHP.PHP": "CakePHP에서 과도한 세션 유지 시간 체커는 CakePHP 라이브러리의 설정 함수인 Configure::write()에서 세션의 타임아웃을 옵션을 통해 주어진 일정 임계치 레벨 이하로 설정하는 경우를 검출합니다.",
  "desc.EXCESSIVE_SESSION_TIMEOUT.CONFIG": "과도한 세션 유지 시간 체커는 세션 유지 시간을 지나치게 길게 설정한 경우를 검출합니다.",
  "desc.EXCESSIVE_STACK_DEPTH": "스택에 너무 큰 버퍼 할당 체커는 지정된 크기를 초과하는 버퍼를 스택에 할당하는 코드를 검출합니다.",
  "desc.EXCLUDE_UNSANITIZED_USER_INPUT_FROM_FORMAT_STRINGS": "검증되지 않은 유저 입력을 포맷 스트링에 사용하면 안됩니다.",
  "desc.EXECL_REVEALS_DATA": "exec 시스템 함수 호출 시 사용자 입력 인자에 문자열 누락 체커는 사용자 입력을 인자로 전달하는 exec 시스템 함수를 호출할 때 해당 인자에 \"--\" 문자열이 포함되지 않는 코드를 검출합니다.",
  "desc.EXISTING_PASSWORD_RECOVERY": "안전하지 않은 비밀번호 복구 체커는 비밀번호를 복구할 때 임시 비밀번호를 새롭게 설정하는 것이 아니라 파일 등 외부로부터 기존 비밀번호를 가져와서 할당하는 코드를 검출합니다.",
  "desc.EXPLICIT_COPY_CONSTRUCTOR_WHEN_TEMPLATED_CONSTRUCTOR": "복사 생성자를 정의하지 않은 템플릿을 포함한 클래스 체커는 명시적인 복사 생성자를 정의하지 않은 템플릿을 포함한 클래스 선언을 검출합니다.",
  "desc.EXPLICIT_NAME_QUALIFIER_WHEN_TEMPLATED_BASE": "모호한 템플릿 부모 클래스 메소드 호출 체커는 템플릿 부모 클래스의 메소드 호출이 모호한 수식을 검출합니다.",
  "desc.EXPLICIT_NULL_TYPE.CONFIG": "null과 undefined를 구분하는 이슈는 수많은 버그의 원인이 됩니다. Typescript에서는 이를 해결하기 위해 strictNullChecks를 지원합니다. strictNullChecks는 이를 명확하게 구분하여 개발자가 null 혹은 undefined 값을 참조하는 것을 방지합니다.",
  "desc.EXPLICIT_RETURN_WHEN_NON_VOID_RETURN_FUNCTION": "non-void 반환 타입을 가지는 함수의 모든 exit 경로에는 식(expression)이 있는 명시적인 return 문이 있어야합니다.",
  "desc.EXPLICIT_VIRTUAL_KEYWORD": "가상으로 선언하지 않은 오버라이딩 메소드 체커는 자식 클래스에서 virtual 키워드 없이 오버라이딩한 메소드를 검출합니다.",
  "desc.EXPOSURE_ERROR_MESSAGE.CSHARP": "예외 정보 노출 체커는 예외를 처리할 때 예외 정보를 출력하는 코드를 검출합니다.",
  "desc.EXPOSURE_OF_ADMINISTRATION_PAGE": "관리자 페이지 노출 체커는 쉽게 유추할 수 있는 이름으로 관리자 페이지를 작성한 경우를 검출합니다.",
  "desc.EXPOSURE_OF_DANGEROUS_METHOD": "위험한 메소드 노출 체커는 지정된 메소드가 public으로 선언되어 있거나, 혹은 public으로 선언된 메소드 내에서 지정된 메소드를 호출하는 경우를 검출합니다.",
  "desc.EXPOSURE_OF_SYSTEM_DATA": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.",
  "desc.EXPOSURE_OF_SYSTEM_DATA.KOTLIN": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.",
  "desc.EXPOSURE_OF_SYSTEM_DATA.PYTHON": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보가 출력되는 경우를 검출합니다.",
  "desc.EXPOSURE_OF_SYSTEM_DATA_ASPNET": "시스템 정보 노출 체커는 시스템 정보를 출력하는 경우를 검출합니다.",
  "desc.EXPR_NOT_BOOLEAN": "Boolean 값을 암시적으로 비교 체커는 조건문 등에서 Boolean 값을 암시적으로 비교한 경우를 검출합니다.",
  "desc.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING": "시스템 혹은 구성 설정의 외부 제어 체커는 검증되지 않은 외부 입력값으로 시스템 설정이나 구성 설정을 변경하는 경우를 검출합니다.",
  "desc.EXTERN_VAR_AND_FUNC_SHOULD_BE_IN_INTERFACE_FILE": "인터페이스 파일이 아닌 곳에 선언된 extern 변수와 함수 체커는 extern 변수와 함수 정의가 인터페이스 파일이 아닌 곳에 선언된 경우를 검출합니다.",
  "desc.EmptyCatchBlock": "Catch 블록이 비어있습니다.",
  "desc.EmptyFinalizer": "파라미터가 없고 블록이 비어있는 finalize() 메소드를 검출합니다.",
  "desc.EmptyFinallyBlock": "Finally 블록이 비어있는 경우, 삭제 가능하므로 이를 검출합니다.",
  "desc.EmptyIfStmt": "If 블록이 비어있어 조건이 만족하여도 아무런 동작을 수행하지 않는 경우 이를 검출합니다.",
  "desc.EmptyInitializer": "비어있는 초기자를 검출합니다.",
  "desc.EmptyMethodInAbstractClassShouldBeAbstract": "추상도 네이티브도 아닌 클래스 에서 선언된 메소드의 구현부분이 없을 경우 해당 메소드는 반드시 추상 메소드가 되어야 합니다.",
  "desc.EmptyStatementBlock": "블록 안에 아무 내용이 없을 경우 삭제해야 합니다.",
  "desc.EmptyStatementNotInLoop": "Loop 문 이외에서 발견되는 비어있는 구문(단일 세미콜론)을 검출합니다.",
  "desc.EmptyStaticInitializer": "정적 초기자가 비어있는 경우 이를 검출합니다.",
  "desc.EmptySwitchStatements": "Switch 블록이 비어있어 아무런 동작을 수행하지 않는 경우 이를 검출합니다.",
  "desc.EmptySynchronizedBlock": "Synchronized 블록이 비어있는 경우 이를 검출합니다.",
  "desc.EmptyTryBlock": "Try 블록이 비어있어 아무런 동작을 수행하지 않는 경우 이를 검출합니다.",
  "desc.EmptyTryOrFinallyBlock": "try나 finally 구문이 비어있습니다.",
  "desc.EmptyWhileStmt": "While 블록이 비어있어 조건이 만족하여도 아무런 동작을 하지 않는 경우 이를 검출합니다.",
  "desc.EqualComparison": "Javascript에서 '==' 대신 '===', '!=' 대신 '!=='를 사용해야 합니다.",
  "desc.EqualsNull": "equals(null) 패턴을 검출합니다.",
  "desc.ExceptDeallocThrow": "유효하지 않은 상태에서 예외 처리로 흐름이 변경됩니다.",
  "desc.ExceptRethrowCopy": "발견된 예외의 원본이 아닌 복사본이 다시 throw합니다.",
  "desc.ExceptThrowInDestructor": "해당 클래스는 안전하지 않습니다. 소멸자에서 예외 처리로 흐름을 변경합니다.",
  "desc.ExceptionAsFlowControl": "Try-catch 구문을 이용한 flow control을 검출합니다.",
  "desc.ExcessiveClassLength": "지정한 수 이상의 줄을 포함하는 클래스를 검출합니다.",
  "desc.ExcessiveImports": "지정한 개수 이상의 import 구문을 검출합니다.",
  "desc.ExcessiveMethodLength": "지정한 수 이상의 줄을 포함하는 메소드를 검출합니다.",
  "desc.ExcessiveParameterList": "지정한 수 이상의 파라미터를 입력받는 메소드를 검출합니다.",
  "desc.ExcessivePublicCount": "지정한 개수 이상의 필드를 사용한 클래스를 검출합니다.",
  "desc.ExtendsObject": "표기하지 않아도 될 상속을 명시적으로 표기했을 경우 이슈를 검출합니다.",
  "desc.FIELD_ASSIGNED_IN_CONSTRUCTOR_SHOULD_BE_FINAL": "생성자를 통해 할당하는 변수는 final 로 선언해야 합니다.",
  "desc.FIELD_COMMENT": "필드 변수 주석의 형식 체커는 형식에 어긋난 필드 변수 주석을 검출합니다.",
  "desc.FILENAME_IN_ANGLE_BRACKET_OR_DOUBLE_QUOTATION": "형식이 맞지 않은 include 전처리 구문 체커는 include 전처리 구문 뒤에 오는 파일 이름이 지정된 형식을 벗어난 경우를 검출합니다.",
  "desc.FILE_COMMENT": "파일 주석의 형식 체커는 파일에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.",
  "desc.FILE_PERMISSION_MANIPULATION.PHP": "권한 조작 체커는 검증되지 않은 외부 입력값이 chmod에 사용되어 파일 권한이 변경되는 경우를 검출합니다.",
  "desc.FINALIZE_DECLARED_PUBLIC": "finalize()는 가비지 컬렉터에 의해 호출되는 메서드로, 주로 객체가 소멸될 때 리소스를 정리하기 위해 사용됩니다. finalize()는 protected로 선언되어야 합니다. public으로 선언된 경우, 외부에서 임의로 호출할 수 있어 객체를 불안정하게 하고, 예기치 않은 오류를 발생시킬 수 있습니다.",
  "desc.FINALIZE_DOES_NOT_CALL_SUPER_FINALIZE": "파라미터가 없는 finalize() 메서드 내 혹은 finally 블럭 마지막 문장에 super.finalize() 미사용 체커는 파라미터가 없는 finalize() 메서드 내 혹은 finally 블럭 마지막 문장에 super.finalize() 이 없으면 검출합니다.",
  "desc.FINALIZE_SHOULD_BE_PROTECTED": "finalize 메소드의 public 선언체커는 finalize 메소드를 public으로 선언하면 검출합니다.",
  "desc.FIND_STRING_IN_CONTENT": "지정한 문자열 사용 체커는 소스 코드 내에서 지정한 문자열이 있는 경우를 검출합니다.",
  "desc.FIRST_COLUMN.FUNCTION": "함수는 첫 번째 열에서 시작해야 합니다.",
  "desc.FIRST_COLUMN.GLOBAL": "전역 변수 선언은 첫 번째 열에서 시작해야 합니다.",
  "desc.FIRST_COLUMN.LOCAL": "함수가 선언된 첫 번째 열로부터 하나의 들여쓰기를 하고 지역 변수 선언을 해야만 합니다.",
  "desc.FIRST_COLUMN.PREPROCESSING": "전처리문은 첫 번째 열에서 시작해야 합니다.",
  "desc.FLEXIBLE_ARRAY_MEMBER": "구조체 내 가변 길이 배열 사용 체커는 구조체의 멤버 변수로 가변 길이 배열을 포함시키는 경우를 검출합니다.",
  "desc.FLOAT_BIT_REPRESENTATION": "실수형 값을 비트 단위로 접근 체커는 실수형으로 선언한 값을 비트 단위로 접근하는 캐스팅이나 선언 등을 검출합니다.",
  "desc.FLOAT_SHOULD_NOT_BE_TESTED_FOR_EQUALITY.SWIFT": "부동 소수점 값에 대한 관계 연산 체커는 float 타입의 변수에 대해서 관계 연산자를 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.ARITHMETIC_OPERATION.SQL": "수식에서 +,-,*,/ 등의 사칙 연산을 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.ASSIGNMENT.INNER_HTML.JS": "innerHTML에 할당 체커는 innerHTML에 값을 할당하는 경우를 검출합니다.",
  "desc.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS": "잘못된 대입 연산자 사용 체커는 조건을 계산하기 위해 비교 연산을 사용해야 하는 부분에 할당 연산을 수행하는 코드를 검출합니다.",
  "desc.FORBIDDEN.ASSIGN_ADDRESS": "함수 포인터에 주소 값 대입 체커는 함수 포인터에 주소 값을 직접 대입한 경우를 검출합니다.",
  "desc.FORBIDDEN.ASTERISK.SELECT.ABAP": "SELECT 구문 내 * 사용 체커는 *를 사용하여 모든 컬럼을 읽어들이는 SELECT 구문을 검출합니다.",
  "desc.FORBIDDEN.ASTERISK.SELECT.SQL": "SELECT 쿼리문에서 '*'을 사용한 경우를 검출합니다. 필요한 컬럼명을 명기하는 것을 권장합니다.",
  "desc.FORBIDDEN.BINDING_VARIABLE.SQL": "SELECT 절, FROM 절에 바인딩 변수를 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.BITWISE_OPERATION.JS": "비트 연산 수행 체커는 비트 연산자를 사용하는 경우에 검출됩니다.",
  "desc.FORBIDDEN.BYPASSING_BUFFER.ABAP": "BYPASSING BUFFER 절 사용 체커는 BYPASSING BUFFER 절을 사용한 SELECT 구문을 검출합니다.",
  "desc.FORBIDDEN.CALL.BATCH.PF": "배치에서 금지된 함수가 호출되었습니다.",
  "desc.FORBIDDEN.CALL.BM.PF": "BM에서 금지된 함수가 호출되었습니다.",
  "desc.FORBIDDEN.CALL.BM_TO_SM.PF": "BM에서 SM을 호출하지 마십시오.",
  "desc.FORBIDDEN.CALL.SM.PF": "서비스 모듈에서 금지된 함수가 호출되었습니다.",
  "desc.FORBIDDEN.COOKIE.PHP": "민감한 정보 쿠키 저장 체커는 보안 상 민감한 데이터를 쿠키에 저장하는 경유를 검출합니다.",
  "desc.FORBIDDEN.COUNT_EQUALS_ZERO.CSHARP": "컬렉션 크기를 0과 비교 체커는 컬렉션 객체에 Count()==0 혹은 Count()!=0을 사용한 경우를 검출합니다.",
  "desc.FORBIDDEN.DIRECT_JSP_ACCESS.CONFIG": "JSP 직접 접근 체커는 설정에서 JSP에 직접 접근하도록 하는 경우를 검출합니다.",
  "desc.FORBIDDEN.DISTINCT.ABAP": "DISTINCT 연산자 사용 체커는 DISTINCT 연산자를 사용한 SELECT 구문을 검출합니다.",
  "desc.FORBIDDEN.DISTINCT.SQL": "DISTINCT 사용을 검출합니다. DISTINCT대신 GROUP BY 사용을 권장합니다.",
  "desc.FORBIDDEN.DYNAMIC_CLAUSES.SELECT.ABAP": "동적 조건 SELECT 사용 체커는 동적 조건을 포함한 SELECT 구문을 검출합니다.",
  "desc.FORBIDDEN.EASY_DATABASE_NAME.JS": "부적절한 데이터베이스 이름 체커는 예측 가능한 데이터베이스 이름 사용을 검출합니다.",
  "desc.FORBIDDEN.EDIT.NATIVE_OBJECT_PROTOTYPE.JS": "네이티브 객체 프로토타입 수정 체커는 브라우저에 포함된 네이티브 객체의 프로퍼티를 수정하는 경우를 검출합니다.",
  "desc.FORBIDDEN.EQUALITY_FOR_BOXED_PRIMITIVES": "박스형 프리미티브의 값 비교 금지 체커는 객체형 타입인 변수가 equality 연산자의 피연산자로 사용되는 경우를 검출합니다.",
  "desc.FORBIDDEN.EQUAL_COMPARISON.JS": "부적절한 동등 비교 연산자 체커는 ===, !=== 대신 ==, !=를 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.EVAL_FUNCTION.JS": "원격 코드 실행 체커는 eval 함수를 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.FILE_IO.PF": "서비스 및 BM에서 파일처리를 하지 말아야 합니다.",
  "desc.FORBIDDEN.FLOAT_LOOP_COUNTER.OBJC": "루프 카운터에 실수 타입 사용 체커는 실수형 변수를 루프 카운터로 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.FROM_DUAL.SQL": "FROM DUAL 사용을 검출합니다.",
  "desc.FORBIDDEN.GLOBAL_VARIABLE.JS": "\"var\" 선언문을 사용하지 않고, 변수를 선언하여 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.INDEXOF_STRING.CSHARP": "IndexOf의 인자로 문자열 사용 체커는 IndexOf 메소드의 인자로 스트링 값을 사용할 때 검출합니다.",
  "desc.FORBIDDEN.INET_ADDRESS": "InetAddress 클래스내의 금지된 메소드를 사용했습니다.",
  "desc.FORBIDDEN.INSECURE_RANDOM.JS": "쉽게 예측 가능한 난수를 사용한다면, 공격자가 생성되는 다음 숫자를 예상해 시스템을 공격할 수 있습니다.",
  "desc.FORBIDDEN.INSTANCE_ACCESSING": "객체를 통한 정적 멤버 접근 체커는 클래스가 아닌 객체를 통해서 클래스의 정적 멤버에 접근하는 경우를 검출합니다.",
  "desc.FORBIDDEN.INTERNAL_STMT.ABAP": "내부 소스 코드 처리 구문 사용 체커는 내부적으로만 사용되어야 하는 구문을 검출합니다.",
  "desc.FORBIDDEN.LOCAL_STORAGE.JS": "localStorage 사용 체커는 localStrage를 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.LOWERCASE_KEYWORD.SQL": "특정 키워드에 대해 소문자로 사용된 경우를 검출합니다.",
  "desc.FORBIDDEN.MERGE.SQL": "금지된 Merge 문을 사용했습니다.",
  "desc.FORBIDDEN.MODIFY_PARAMETER": "값 전달 호출 함수에서 매개 변수 수정 체커는 함수의 본체에서 전달받은 매개 변수에 값을 대입한 경우를 검출합니다.",
  "desc.FORBIDDEN.MONITOR_PULSE.CSHARP": "Monitor.Pulse 사용 체커는 Monitor.Pulse()를 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.MULTI_DIMENSION_ARRAY": "다차원 배열 사용 금지 체커는 옵션에 설정된 최대 배열 단계수 이상으로 배열을 사용한 경우를 검출합니다.",
  "desc.FORBIDDEN.NATIVE.SQL.ABAP": "Native SQL 사용 체커는 EXEC 구문을 검출합니다.",
  "desc.FORBIDDEN.NEGATION_IN_CONDITION.SQL": "부정형 조건을 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.NESTED_DECODE.SQL": "DECODE 문 중첩 사용을 검출합니다.",
  "desc.FORBIDDEN.NOT_IN_COND.ABAP": "NOT IN 사용 체커는 NOT IN을 사용한 SQL 쿼리문을 검출합니다.",
  "desc.FORBIDDEN.NULL_IN_SECURITY_MANAGER": "setSecurityManager 함수의 인자에 null을 사용해서는 안됩니다.",
  "desc.FORBIDDEN.OVERRIDING_FINALIZE": "재정의한 finalize 메소드를 검출합니다.",
  "desc.FORBIDDEN.PARALLEL.SQL": "PARALLEL 사용을 검출합니다.",
  "desc.FORBIDDEN.PROPERTY_METHOD": "System property를 변경할 수 있는 메소드의 사용을 검출합니다.",
  "desc.FORBIDDEN.QUERY_IN_LOOP.ABAP": "반복문 내에서의 SELECT 구문 사용 체커는 LOOP 나 WHILE 구문 내에서 사용된 SELECT 구문을 검출합니다.",
  "desc.FORBIDDEN.RACE_CONDITION_METHOD": "Race condition을 유발할 수 있는 메소드를 사용했습니다.",
  "desc.FORBIDDEN.REPLACING_EMAIL_ADDRESS": "이메일 주소 변수에 대입 체커는 지정된 이메일 주소 변수에 값을 대입하는 경우를 검출합니다.",
  "desc.FORBIDDEN.SMS_SENDING.OBJC": "SMS 전송 API 사용 체커는 SMS 전송 API를 사용하는 경우를 검출합니다.",
  "desc.FORBIDDEN.STATEMENT_EXECUTE_QUERY": "java.sql.Statement.executeQuery 메소드를 사용했습니다.",
  "desc.FORBIDDEN.STATIC_KEYWORD_IN_PARAM": "배열 타입 매개 변수에 static 키워드 사용 체커는 함수 선언에서 배열 타입 매개 변수의 중괄호 사이에 static 키워드를 사용한 경우를 검출합니다.",
  "desc.FORBIDDEN.SYSDATE.SQL": "SYSDATE 사용을 검출합니다.",
  "desc.FORBIDDEN.TABLE.SQL": "금지된 테이블 사용 체커는 옵션으로 금지한 테이블 사용을 검출합니다.",
  "desc.FORBIDDEN.TABLE_COLUMN.SQL": "금지된 테이블 컬럼 사용 체커는 옵션으로 금지한 테이블 컬럼 사용을 검출합니다.",
  "desc.FORBIDDEN.TRIM_LENGTH": "String.trim().length()를 사용했습니다.",
  "desc.FORBIDDEN.WEAK_ALGORITHM.JS": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다.",
  "desc.FORBIDDEN.WEAK_MIUPDATER.TOBE.JS": "취약한 MiUpdater 사용 체커는 보안에 취약한 버전의 MiUpdater 사용을 검출합니다.",
  "desc.FORBIDDEN.WITH.SQL": "WITH문은 사용하지 않는다.",
  "desc.FORBIDDEN.WITH_STATEMENT.JS": "with 구문 사용 체커는 with 문을 사용할 경우에 검출됩니다.",
  "desc.FORBIDDEN.WITH_STATEMENT.VBS": "with 구문 사용 체커는 금지된 With 구문 사용을 검출합니다.",
  "desc.FORBIDDEN_ASSIGN_LITERAL": "특정 변수에 리터럴 직접 대입 체커는 지정된 조건을 만족하는 변수에 리터럴을 대입하는 경우를 검출합니다.",
  "desc.FORBIDDEN_CALL.BEFORE_CALL": "잘못된 순서로 함수 호출 체커는 옵션에 지정된 함수의 호출 순서를 지키지 않는 코드를 검출합니다.",
  "desc.FORBIDDEN_CALL.LOOP": "반복문에서 호출 금지 함수 사용 체커는 반복문에서 사용하지 않도록 옵션에 지정된 함수를 사용하는 코드를 검출합니다.",
  "desc.FORBIDDEN_DYNAMIC_TYPE_IN_CTOR_DTOR": "생성자와 소멸자에서 RTTI 사용 체커는 메소드 내부 구현에서 동적 타입 정보를 필요로 하는 명령어를 사용한 생성자나 소멸자를 검출합니다.",
  "desc.FORBIDDEN_SYSTEM_FUNCTION_CALL.SWIFT": "시스템 함수 호출 체커는 금지된 함수 system()를 호출하는경우를 검출합니다.",
  "desc.FORCE_UNWRAPPED_OPTIONALS.SWIFT": "강제로 해제한 옵셔널 체커는 옵셔널을 forced-unwrap하는 경우를 검출합니다.",
  "desc.FORMATTING.BETWEEN_MEMBER_DEFINITION.MISSING_BLANK_LINE.CSHARP": "메소드나 프로퍼티 선언문들 사이에 한 줄 이상이 빈 줄이 있어야 합니다.",
  "desc.FORMATTING.COMMENT.BLOCK_OF_ASTERISK.CSHARP": "주석문장을 감싸는 별표(*) 블록을 사용하지 말아야 합니다.",
  "desc.FORMATTING.COMMENT.LOWERCASE_FIRST_LETTER.CSHARP": "주석 문장은 대문자로 시작해야 합니다.",
  "desc.FORMATTING.COMMENT.MISSING_PERIOD.CSHARP": "주석 문장의 끝에 종결 문장 부호를 써주어야 합니다.",
  "desc.FORMATTING.COMMENT.MISSING_SPACE_AFTER_DELIMITER.CSHARP": "주석문장과 주석구분자(//) 사이에 공백이 있어야 합니다.",
  "desc.FORMATTING.CONTINUATION_LINE.BAD_INDENTATION.CSHARP": "하나의 문장이 여러 줄에 걸쳐 쓰여진 경우, 자동으로 들여쓰기가 되지 않았다면 하나의 탭(빈칸 4개)만큼 들여쓰기 해 주어야 합니다.",
  "desc.FORMATTING.LINQ.QUERY_CLAUSE_ALIGNMENT.CSHARP": "LINQ문 안에서 from절 밑에 쿼리문들을 정렬해야 합니다.",
  "desc.FORMATTING.LINQ.WHERE_CLAUSE_AFTER_OTHERS.CSHARP": "다른 쿼리문이 실행되기 전에 데이터셋을 축소하기 위하여 where절을 먼저 사용해야 합니다.",
  "desc.FORMAT_STRING": "포맷 스트링 체커는 포맷 명세와 실제 인자의 타입이 일치하지 않는 코드를 검출합니다.",
  "desc.FORMAT_STRING.KOTLIN": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 경우를 검출합니다.",
  "desc.FORMAT_STRING.OBJC": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 코드를 검출합니다.",
  "desc.FORMAT_STRING.PHP": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 코드를 검출합니다.",
  "desc.FORMAT_STRING.PYTHON": "검증되지 않은 외부 입력 값을 입출력 함수의 포맷 문자열로 사용하는 경우 발생할 수 있는 보안약점입니다. 공격자는 포맷 문자열을 이용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있습니다. 그 결과, 공격자는 취약한 프로세스의 권한을 취득하여 임의의 코드를 실행할 수 있습니다.",
  "desc.FORMAT_STRING.SWIFT": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 코드를 검출합니다.",
  "desc.FORMAT_STRING_ARGUMENT_NUMBER_MISMATCH": "포맷 스트링과 대상 인자 개수 불일치 체커는 특정 인자 위치로 문자열 형을 반환하는 함수에서 문자열 형태(%s, %x, %c등)와 그 대상 인자의 개수가 다른 경우를 검출합니다.",
  "desc.FORMAT_STRING_OVERFLOW": "포맷 스트링 길이 제한 누락 체커는 포맷 스트링을 통해 생성되는 문자열의 크기를 제한하지 않는 경우를 검출합니다.",
  "desc.FORM_CSRF_ATTR.HTML": "폼 태그 내에 csrf 속성이 있는지를 검사합니다.",
  "desc.FORWARD_NULL": "널 값 역참조 체커는 널 상수나 널이 할당된 변수를 역참조하는 경우를 검출합니다.",
  "desc.FORWARD_NULL_CSHARP": "널 값 역참조 체커는 널 상수나 널이 할당된 변수를 역참조하는 경우를 검출합니다.",
  "desc.FOR_LOOP_CONTROL_CHANGE_COND": "조건 혹은 증감절에 의해 루프 제어 변수값 변동 체커는 루프 제어 변수의 값이 조건절 혹은 증감절에서 변환된 경우를 검출합니다.",
  "desc.FOR_LOOP_NONBOOL_CONTROL_CHANGED": "Boolean 타입이 아닌 루프 제어 변수 체커는 루프 제어 변수가 반복문의 본문에서 값이 변할 경우 그 타입이 Boolean 타입이 아닌 경우를 검출합니다.",
  "desc.FREE_NON_HEAP": "스택 영역의 메모리 해제 체커는 힙 영역이 아닌 스택 영역에 할당된 메모리를 해제하는 코드를 검출합니다.",
  "desc.FREE_NON_HEAP.HORUS": "동적 할당 메모리가 아닌 메모리를 해제했습니다.",
  "desc.FREE_NULL_POINTER": "널 포인터를 메모리 해제할 경우에 검출되는 오류입니다.",
  "desc.FUNCTION_COMMENT": "함수 주석의 형식 체커는 함수에 해당하는 주석의 형식을 위반한 경우를 검출합니다.",
  "desc.FUNCTION_DEFINITION_TYPE_MISMATCH": "함수 정의와 선언 불일치 체커는 함수 정의와 선언에서 타입 이름이 일치하지 않는 경우를 검출합니다.",
  "desc.FUNCTION_SHALL_BE_DECL_FILE_SCOPE": "함수 내부에서의 함수 선언 체커는 함수가 파일 영역에서 선언되지 않고 함수 내부에서 선언된 경우를 검출합니다.",
  "desc.FUNCTION_TRY_BLOCK_SHOULD_NOT_REFERENCE_CLASS_DATA": "생성자 혹은 소멸자 catch 절에서 필드 접근 체커는 catch 절에서 내부 필드를 접근하는 function-try-block 으로 이루어진 생성자와 소멸자를 검출합니다.",
  "desc.FUNCTION_WITHOUT_DEFINITION": "함수 선언 후 함수 정의 누락 체커는 함수를 선언한 후에 같은 파일에서 해당 함수를 정의하지 않은 코드를 검출합니다.",
  "desc.FUNCTION_WITH_VOID_RETURN_TYPE_SHOULD_HAVE_EXTERNAL_SIDE_EFFECT": "외부 부수 효과를 가지지 않은 함수 선언 체커는 반환 타입이 void이고 외부에 아무런 영향을 미치지 않는 함수 선언을 검출합니다.",
  "desc.FieldDeclarationsShouldBeAtStartOfClass": "필드는 클래스의 최상단 또는 메소드, 생성자, 초기자, 내부 클래스 뒤에 선언해야 합니다.",
  "desc.FinalFieldCouldBeStatic": "인터페이스가 아닌 클래스 내부에서 필드를 상수 값을 할당하며 final로 선언하는 코드를 검출합니다.",
  "desc.FinalizeDoesNotCallSuperFinalize": "finally 블록 안의 super.finalize() 인 경우 이를 검출합니다.",
  "desc.FinalizeOnlyCallsSuperFinalize": "파라미터가 없고 super.finalize() 구문 하나만으로 이루어진 finalize() 메소드를 검출합니다.",
  "desc.FinalizeOverloaded": "finalize() 메소드에 파라미터 입력이 있는 경우 이를 검출합니다.",
  "desc.FinalizeShouldBeProtected": "finalize 메소드는 super.finalize()를 제외하고는 명시적으로 호출되어서는 안되므로 finalize가 public으로 선언된 경우를 검출합니다.",
  "desc.ForLoopShouldBeWhileLoop": "For 구문의 인덱스 초기화 및 업데이트 구문이 없는 경우 이를 검출합니다.",
  "desc.ForLoopsMustUseBraces": "중괄호를 사용하지 않은 for 구문을 검출합니다.",
  "desc.FunctionConst": "기술적으로 이 멤버 함수는 const로 만들 수 있습니다.",
  "desc.FunctionStatic": "기술적으로 이 멤버 함수는 static으로 만들 수 있습니다.",
  "desc.GENERAL_COMMENT": "주석의 형식 체커는 형식에 어긋난 일반적인 주석을 검출합니다.",
  "desc.GETCHAR_TO_INT": "잘못된 타입의 getchar 함수 반환값 사용 체커는 getchar() 함수의 반환값을 int보다 작은 타입에 대입하는 경우를 검출합니다.",
  "desc.GLOBAL.HARD_CODED_STRING.LOCALE_DEPENDANT.CSHARP": "메소드에서 특정 시스템 폴더 경로의 일부를 나타내는 문자열 리터럴을 사용합니다.",
  "desc.GOTO_JUMP_LATER_DECLARED_LABEL_ONLY": "되돌아가는 goto 구문 체커는 함수 안에서 goto 구문보다 먼저 등장하는 레이블로 점프하는 경우를 검출합니다.",
  "desc.GUARANTEE_EXCEPTION_SAFETY": "예외 안정성을 보장하지 않는 코드 체커는 프로그램이 예외에 의해 종료되는 경우 프로그램에 비정상적인 영향을 줄 가능성이 존재하는 코드를 검출합니다.",
  "desc.GenericsNaming": "제네릭명이 한 글자가 아니거나, 혹은 대문자가 아닌 경우 이를 검출합니다.",
  "desc.GlobalVariable": "단순히 `var` 선언문을 사용하지 않았을 경우를 검출합니다.",
  "desc.GodClass": "유지보수 측면에서 복잡한 God 클래스는 비효율적 클래스입니다.",
  "desc.GuardDebugLogging": "성능 및 메모리 문제를 방지하기 위해 isDebugEnabled() 검사를 사용하여 보호하여야 합니다.",
  "desc.HANDLE_ALL_EXCEPTIONS_BEFORE_MAIN_BEGINS_EXECUTE": "정적 범위의 객체 선언에서 발생하는 처리되지 않는 예외 체커는 객체를 함수 블록 범위 혹은 생성자 내에 선언하지 않고 정적 혹은 스레드 존속 범위에 선언했을 때, 처리되지 않는 예외가 발생하는 코드를 검출합니다.",
  "desc.HANDLE_ALL_EXCEPTIONS_IF_SPECIFIED": "예외 명세에 포함되지 않은 예외 던짐 체커는 함수 내부에서 예외 명세에 포함되어 있지 않은 예외를 던지는 구문을 검출합니다.",
  "desc.HANDLE_ALL_EXCEPTIONS_NOT_IN_SPEC": "예외 사양의 불일치 체커는 예외 사양 기술과 실제로 던지는 예외의 타입이 다른 함수 선언을 검출합니다.",
  "desc.HANDLE_FLOATING_POINT_ERRORS": "부동 소수점 오류 처리 누락 체커는 부동 소수점 연산을 수행한 후 오류를 처리하지 않는 경우를 검출합니다.",
  "desc.HANDLE_STANDARD_LIBRARY_ERROR": "사용되지 않은 표준라이브러리 반환 값 체커는 표준라이브러리의 반환 값을 사용하지 않은 수식을 검출합니다.",
  "desc.HANWHA_NAMING_CONVENTION": "한화증권용 헤더 네이밍 규칙 입니다.",
  "desc.HARDCODED_PASSWORD.CSHARP": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.",
  "desc.HARDCODED_PASSWORD.KOTLIN": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.",
  "desc.HARDCODED_PASSWORD.PYTHON": "프로그램 코드 내부에 하드코드된 중요 정보를 포함하거나 데이터베이스를 연결하는 정보 등을 포함하면 해커가 이를 이용하여 중요 정보들을 유출할 수 있습니다.",
  "desc.HARDCODED_PASSWORD_COMPARISON.CSHARP": "하드코딩된 비밀번호 비교 체커는 비밀번호를 하드코딩된 문자열과 비교하는 코드를 검출합니다.",
  "desc.HARDCODED_SET_FUNCTION": "Set함수 하드코딩 체커는 하드코딩된 정보를 사용하는 코드를 검출합니다. 사용할 특정 상수는 상수 변수에 저장해두고 이 변수를 통해 사용합니다.",
  "desc.HARD_CODED.CRYPTOGRAPHIC_KEY.KOTLIN": "하드코딩된 암호화 키 체커는 소스 코드 내에 하드코딩되어 사용되는 암호화 키를 검출합니다.",
  "desc.HARD_CODED.CRYPTOGRAPHIC_KEY.PHP": "하드코딩된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.",
  "desc.HARD_CODED.CRYPTOGRAPHIC_KEY.PYTHON": "하드코딩된 암호화 키 체커는 소스 코드 내에 하드코딩되어 사용되는 암호화 키를 검출합니다.",
  "desc.HARD_CODED.PASSWORD.GO": "하드코딩된 비밀번호는 보안 약점을 유발하는 일반적인 실수 중 하나입니다. 하드코딩이란, 소스 코드 내부에 고정된 값을 직접 입력하는 것을 말하며, 비밀번호를 직접 코드에 작성하는 것은 비밀번호가 유출되거나 다양한 환경 대응의 어려움 등의 문제를 초래할 수 있습니다.",
  "desc.HARD_CODED.PASSWORD.PHP": "하드코딩된 비밀번호 체커는 mysql_connect()에서 비밀번호에 해당하는 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.",
  "desc.HARD_CODED_CRYPTOGRAPHIC_KEY": "소스코드 내에 하드코드된 암호화키를 사용한 경우를 검출합니다.",
  "desc.HARD_CODED_CRYPTOGRAPHIC_KEY_CSHARP": "하드코딩된 암호화 키 체커는 소스 코드 내에서 하드코딩된 암호화 키를 사용하는 경우를 검출합니다.",
  "desc.HARD_CODED_DOMAIN_IN_HTML": "다른 사이트의 스크립트 포함 체커는 HTML 내에서 외부 사이트의 스크립트를 포함한 경우를 검출합니다.",
  "desc.HARD_CODED_PASSWORD.CONFIG": "설정 파일에 하드코딩된 비밀번호 체커는 설정 파일에 일반 텍스트 암호를 저장하는 경우를 검출합니다.",
  "desc.HARD_CODED_USER_NAME_AND_PASSWORD": "하드코딩된 사용자 이름과 비밀번호 체커는 사용자 이름과 비밀번호 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.",
  "desc.HARD_CODED_USER_NAME_AND_PASSWORD.VBNET": "하드코딩된 비밀번호 체커는 사용자의 ID, 비밀번호에 해당하는 매개 변수에 들어간 상수 문자열을 검출합니다.",
  "desc.HARD_CODED_USER_NAME_AND_PASSWORD_CSHARP": "하드코딩된 사용자 이름과 비밀번호 체커는 암호에 해당하는 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.",
  "desc.HARD_CODING.STRING_COMPARISON": "문자열 상수를 사용한 직접 비교 체커는 따옴표로 싸인 문자열 상수를 문자열 비교에 직접 사용하는 경우를 검출합니다.",
  "desc.HASH.INSECURE_HASH_ITERATION_COUNT.CSHARP": "반복 횟수가 적은 키 파생 함수 사용 체커는 해시 반복 횟수가 충분하지 않은 경우를 검출합니다.",
  "desc.HASH.PREDICTABLE_SALT.CSHARP": "쉬운 솔트 값 사용 체커는 솔트 값을 쉽게 유추할 수 있는 경우를 검출합니다.",
  "desc.HEADER_MANIPULATION.PHP": "HTTP 헤더 조작 체커는 검증되지 않은 외부 입력이 HTTP 응답 헤더에 포함되는 경우를 검출합니다.",
  "desc.HEADER_MANIPULATION.SWIFT": "HTTP 헤더 조작 체커는 검증되지 않은 외부 입력이 HTTP 응답 헤더에 포함되는 경우를 검출합니다.",
  "desc.HEADER_MANIPULATION.VBS": "HTTP 헤더 조작 체커는 검증되지 않은 외부 입력이 HTTP 응답 헤더에 포함되는 경우를 검출합니다.",
  "desc.HEAP_INSPECTION": "힙 메모리 조사 체커는 릴리즈 전 힙 메모리를 깨끗하게 삭제하지 않은 경우를 검출합니다.",
  "desc.HTML5.CROSS_DOCUMENT_MESSAGING.JS": "광범위한 도메인을 허용하는 페이지 간 메시지 체커는 postMessage() 함수의 도메인 인자로 \"*\"을 전달하는 경우를 검출합니다.",
  "desc.HTML_COMMENT_IN_JSP.JSP": "웹 프로그램의 정보 혹은 소스코드 등 중요한 정보를 주석문에 저장하는 경우 해커가 프로그램의 구조를 이해하여 숨겨진 페이지를 노출하는 등의 공격이 가능합니다.",
  "desc.HTML_INPUT_HIDDEN.CSHARP": "HtmlInputHidden 사용 체커는 HtmlInputHidden 객체를 생성하는 경우를 검출합니다.",
  "desc.HTTP.SECURITY_HEADER_SETTINGS.JS": "웹 브라우저는 HTTP를 통해 전송된 헤더를 사용하여 통신 표준과 보안 정책을 확인합니다. HTTP 헤더의 보안기능을 적절하게 사용하여 브라우저 클라이언트 측에서 실행되는 코드의 보안을 높이는 것은 보안 취약성을 완화하는 빠르고 효율적인 방법입니다.",
  "desc.HTTP_RESPONSE_SPLITTING": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.",
  "desc.HTTP_RESPONSE_SPLITTING.JS": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.",
  "desc.HTTP_RESPONSE_SPLITTING.OBJC": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.",
  "desc.HTTP_RESPONSE_SPLITTING.PHP": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.",
  "desc.HTTP_RESPONSE_SPLITTING.PYTHON": "HTTP 요청에 들어 있는 파라미터가 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(CarriageReturn)이나 LF(LineFeed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 이용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손 공격 등을 할 수 있습니다.",
  "desc.HTTP_RESPONSE_SPLITTING.SWIFT": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.",
  "desc.HTTP_RESPONSE_SPLITTING.VBNET": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.",
  "desc.HTTP_RESPONSE_SPLITTING_ASPNET": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.",
  "desc.HTTP_TRANSPORT.GET.OBJC": "GET 방식으로 전송 체커는 HTTP 통신시 GET 방식을 사용할 경우를 검출합니다.",
  "desc.HTTP_TRANSPORT.GET.PHP": "GET 방식으로 전송 체커는 http 프로토콜에서 GET방식의 요청을 시도하는 경우를 검출합니다.",
  "desc.HTTP_TRANSPORT.GET.SWIFT": "GET 방식으로 전송 체커는 GET 방식으로 전송을 수행하는 경우를 검출합니다.",
  "desc.HTTP_TRANSPORT.OBJC": "HTTP 프로토콜을 통한 전송 체커는 HTTP 통신을 수행하는 경우를 검출합니다.",
  "desc.HTTP_TRANSPORT.PHP": "HTTP 프로토콜을 통한 전송 체커는 HTTP 프로토콜을 통해 전송을 수행하는 경우를 검출합니다.",
  "desc.HUNGARIAN_NOTATION": "헝가리안 명명법 미사용 체커는 헝가리안 명명법을 사용하지 않은 식별자를 검출합니다.",
  "desc.IDENTICAL_EXP_ON_BOTH_SIDES.SWIFT": "같은 피연산자를 가진 이항 연산 체커는 이항 연산 기호의 양쪽에 같은 표현식이 존재 할 경우를 검출합니다.",
  "desc.IGNORED_RETURN_VALUE": "사용되지 않는 반환값 체커는 함수를 호출한 후에 반환값을 사용하지 않는 코드를 검출합니다.",
  "desc.IMPERSONATION_CONTEXT.VBNET": "가장된 권한에 의한 실행 체커는 가장된 자격 증명으로 실행하는 경우를 검출합니다.",
  "desc.IMPLEMENT_ABSTRACT_DATA_TYPES": "추상화되지 않은 데이터 타입 체커는 헤더 파일에서 구조체 등의 내부 구성이 직접 노출되는 경우를 검출합니다.",
  "desc.IMPLICITLY_UNWRAPPED_OPTIONALS.SWIFT": "암시적으로 해제한 옵셔널 타입 체커는 암묵적으로 해제된 옵셔널을 사용하는 경우를 검출합니다.",
  "desc.IMPLICIT_ANY_TYPE.CONFIG": "Typescript는 Compiler Options으로 noImplicitAny를 제공합니다. noImplicitAny는 암묵적으로 any로 유추되는 모든 변수에 대해 오류를 발생시킵니다. 타입을 유추하지 않고 any타입을 사용한다면 Typescript는 평범한 Javascript의 동작과 같습니다.",
  "desc.IMPLICIT_CASTING.ASSIGNMENT": "대입 시 암시적 캐스팅 체커는 대입 연산의 좌변과 우변 사이 타입이 달라서 암시적 캐스팅이 일어나는 경우를 검출합니다.",
  "desc.IMPLICIT_CASTING.CALL": "함수 호출 시 암시적 캐스팅 체커는 메소드 호출식의 인자에서 암시적 캐스팅이 일어나는 경우를 검출합니다.",
  "desc.IMPLICIT_CASTING.RETURN": "반환 시 암시적 캐스팅 체커는 메소드의 반환 타입과 실제 반환하는 값의 타입이 달라서 암시적 캐스팅이 일어나는 경우를 검출합니다.",
  "desc.IMPLICIT_CONVERSION_FLOAT_PARAM": "실수형 인자를 더 큰 타입으로 암시적 캐스팅 체커는 함수의 인자로 전달되는 실수형 값이 암시적으로 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.",
  "desc.IMPLICIT_CONVERSION_INT_PARAM": "정수형 인자를 더 큰 타입으로 암시적 캐스팅 체커는 함수의 인자로 전달되는 정수형 값이 암시적으로 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.",
  "desc.IMPLICIT_NARROW_FLOAT_CONVERSION": "실수형을 더 작은 타입으로 암시적 캐스팅 체커는 실수형 복합 수식절이 암시적으로 더 작은 타입의 실수형으로 캐스팅되는 수식을 검출합니다.",
  "desc.IMPLICIT_NARROW_INTEGER_CONVERSION": "정수형을 더 작은 타입으로 암시적 캐스팅 체커는 정수형 복합 수식절이 암시적으로 더 작은 타입의 정수형으로 캐스팅되는 수식을 검출합니다.",
  "desc.IMPLICIT_UNSIGNED_CHAR_TO_CHAR_HANDLING_INT": "문자 함수에 signed 문자형 전달 체커는 문자를 다루는 함수의 인자로 unsigned char 타입이 아닌 값을 전달한 경우를 검출합니다.",
  "desc.IMPLICIT_WIDEN_CAST_COMPLEX_FLOAT_EXPR": "실수형을 더 큰 타입으로 암시적 캐스팅 체커는 실수형 복합 수식절이 암시적으로 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.",
  "desc.IMPLICIT_WIDEN_CAST_COMPLEX_INT_EXPR": "정수형을 더 큰 타입으로 암시적 캐스팅 체커는 정수형 복합 수식절이 암시적으로 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.",
  "desc.IMPROPERLY_CTL_SEQ_MEM_ALLOC": "alloca()는 스택에 메모리를 할당하므로 반복문 내에서 잘못 사용하면 스택 오버플로우나 예기치 않은 동작이 발생할 수 있습니다.",
  "desc.IMPROPER_ARGUMENTS.HORUS": "잘못된 인자값 전달 입니다.",
  "desc.IMPROPER_AUTHORIZATION": "익명 LDAP 바인딩 사용 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.",
  "desc.IMPROPER_AUTHORIZATION.CSHARP": "부적절한 인증 체커는 사용자 인증 후 모든 실행 경로에 대해 적절하게 접근 제어를 수행하지 않는 코드를 검출합니다.",
  "desc.IMPROPER_AUTHORIZATION.KOTLIN": "익명 LDAP 바인딩 사용 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 경우를 검출합니다.",
  "desc.IMPROPER_AUTHORIZATION.PHP": "익명 LDAP 바인딩 사용 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.",
  "desc.IMPROPER_AUTHORIZATION.PYTHON": "부적절한 인증 체커는 사용자 인증 후 모든 실행 경로에 대해 적절하게 접근 제어를 수행하지 않는 코드를 검출합니다.",
  "desc.IMPROPER_AUTHORIZATION.SWIFT": "부적절한 인증 체커는 사용자 인증 후 모든 실행 경로에 대해 적절하게 접근 제어를 수행하지 않는 코드를 검출합니다.",
  "desc.IMPROPER_CARGO_SETTING.CONFIG": "Rust 언어로 개발할 때 컴파일러 옵션들을 설정하여, 소프트웨어의 안정성과 보안을 향상시킬 수 있습니다. debug-assertions와 overflow-checks는 Cargo의 설정 옵션으로, 각각 디버그 단언문의 활성화와 정수 오버플로우 체크를 제어합니다. 이러한 변수들을 오버라이드하면, 개발 중에 중요한 디버깅 정보나 오류 체크 기능을 손실할 수 있습니다. 이는 버그가 발생했을 때 문제를 찾고 수정하는 데 어려움을 초래할 수 있습니다.",
  "desc.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.",
  "desc.IMPROPER_COOKIE_FLAG_SETTING.GO": "웹 애플리케이션을 개발할 때에는 쿠키 설정을 올바르게 관리하는 것이 중요합니다. 잘못된 쿠키 설정은 Session hijacking, XSS, CSRF와 같은 보안약점을 유발합니다. 이를 막기 위해 보안 쿠키 플래그인 Secure, HttpOnly, SameSite를 적절하게 설정해야 합니다.",
  "desc.IMPROPER_DEBUG_LEVEL.CONFIG": "부적절한 로그 레벨 설정 체커는 Tomcat 디버그 레벨 3 이상을 사용한 경우를 검출합니다.",
  "desc.IMPROPER_MACRO_NAME": "대문자와 밑줄로 이루어지지 않은 매크로 이름 체커는 매크로로 선언된 이름에 대문자 알파벳과 밑줄(_)이 아닌 문자가 포함된 경우를 검출합니다.",
  "desc.IMPROPER_NULL_TERMINATION": "널로 끝나지 않는 문자열 체커는 수식에서 널로 끝나지 않는 문자열을 생성하거나 사용하게 되는 코드를 검출합니다.",
  "desc.IMPROPER_NULL_TERMINATION.HORUS": "문자열의 끝이 0이 아닙니다.",
  "desc.IMPROPER_OVERLOAD_OF_SUBSCRIPT_OPERATOR": "배열 연산자 오버로딩의 상수 버전 누락 체커는 배열 연산자 오버로딩을 상수와 비상수 버전 모두를 제공하지 않은 클래스를 검출합니다.",
  "desc.IMPROPER_PERMISSION.GO": "부적절한 파일 권한 설정은 운영체제가 파일에 대한 액세스를 제어하는 방법에 따라 시스템의 보안에 심각한 위협이 될 수 있습니다. 파일이나 디렉터리를 생성할 때, 그에 대한 적절한 권한 설정이 이루어지지 않으면 공격자가 그 파일이나 디렉터리를 이용하여 시스템을 공격하거나 민감한 데이터를 훔치는 등의 악의적인 행동을 취할 수 있습니다.",
  "desc.IMPROPER_RANDOM_USAGE": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.",
  "desc.IMPROPER_RANDOM_USAGE.PHP": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.",
  "desc.IMPROPER_REALLOC": "realloc 함수의 잘못된 사용 체커는 realloc() 함수의 반환 값을 저장할 변수와 첫 번째 인자가 같은 경우를 검출합니다.",
  "desc.IMPROPER_REFERENCE_XML_EXTERNAL_ENTITY": "취약한 XML 파서(parser)가 외부 값을 참조하는 XML 값을 처리할 때, 공격자가 삽입한 공격 구문이 동작되어 서버 파일 접근, 불필요한 자원 사용, 인증 우회, 정보 노출 등이 발생할 수 있습니다.",
  "desc.IMPROPER_RESTRICTION_OF_XML_ENTITY": "부적절한 XML 외부 엔터티 참조 체커는 XML 파싱 라이브러리를 사용하면서 외부 엔터티를 사용하도록 허용하는 코드를 검출합니다.",
  "desc.IMPROPER_RESTRICTION_OF_XML_ENTITY.OBJC": "부적절한 XML 외부 엔터티 참조 체커는 XML 파싱 라이브러리를 사용하면서 외부 엔터티를 사용하도록 허용하는 코드를 검출합니다.",
  "desc.IMPROPER_RESTRICTION_OF_XML_ENTITY.SWIFT": "부적절한 XML 외부 엔터티 참조 체커는 XML 파싱 라이브러리를 사용하면서 외부 엔터티를 사용하도록 허용하는 코드를 검출합니다.",
  "desc.IMPROPER_RETURN_STATEMENT": "반환 구문에서 괄호 누락 체커는 반환 값이 단일 변수나 값이 아닌 식을 반환할 때 괄호가 없는 경우를 검출합니다.",
  "desc.IMPROPER_SIGNATURE": "파일, 프로그램, 라이브러리, 코드와 관련하여 전자서명에 대한 유효성 검증이 적절하지 않아 공격자의 악의적인 코드가 실행될 위험이 있는 보안약점입니다.",
  "desc.IMPROPER_SIGNATURE.CSHARP": "부적절한 서명 체커는 전자 서명을 포함하는 파일을 사용할 때 서명을 확인하지 않는 코드를 검출합니다.",
  "desc.IMPROPER_SIGNATURE.JS": "부적절한 서명 체커는 전자 서명을 포함하는 파일을 사용할 때 서명을 확인하지 않는 코드를 검출합니다.",
  "desc.IMPROPER_SIGNATURE.JWT": "파일, 프로그램, 라이브러리, 코드의 전자서명에 대한 유효성 검증이 적절하지 않아 공격자의 악의적인 코드가 실행 가능한 보안약점입니다.",
  "desc.IMPROPER_SIGNATURE.KOTLIN": "부적절한 서명 체커는 전자 서명을 포함하는 파일을 사용할 때 서명을 확인하지 않는 코드를 검출합니다.",
  "desc.IMPROPER_SIGNATURE.VBNET": "부적절한 서명 체커는 전자 서명을 포함하는 파일을 사용할 때 서명을 확인하지 않는 코드를 검출합니다.",
  "desc.IMPROPER_SIGNATURE.XML": "파일, 프로그램, 라이브러리, 코드의 전자서명에 대한 유효성 검증이 적절하지 않아 공격자의 악의적인 코드가 실행 가능한 보안약점입니다.",
  "desc.IMPROPER_SSH_KEY_SETTING.GO": "ssh.InsecureIgnoreHostKey()는 SSH 클라이언트가 서버와의 연결을 설정할 때, 서버의 공개 키를 확인하지 않도록 하는 함수입니다. SSH 연결을 설정할 때, 보통 클라이언트는 처음 연결하는 서버의 공개 키를 저장하고, 그 후의 연결에서 이 키를 사용하여 서버의 신원을 확인합니다. 공개 키를 확인하지 않으면 이 과정에서 중간자 공격(Man-in-the-middle attack)이 발생할 수 있습니다.",
  "desc.IMPROPER_TLS_SETTING.GO": "InsecureSkipVerify 옵션은 클라이언트가 서버의 SSL/TLS 인증서를 검증하지 않도록 설정하는 것입니다. 이 옵션을 사용하면 서버의 인증서에 대한 검증을 하지 않기 때문에 중간자 공격이나 인증서 변조 등의 취약점이 생길 수 있습니다.",
  "desc.IMPROPER_TYPE_ASSIGN": "대입 시 변수와 값의 타입 불일치 체커는 변수에 값을 대입할 경우 서로 타입이 다른 수식을 검출합니다.",
  "desc.IMPROPER_TYPE_ASSIGN.PARAM_TYPE": "호출 인자 타입과 선언 매개 변수 타입 불일치 체커는 함수를 호출할 때 전달하는 인자의 타입과 함수 선언에서 지정한 매개 변수 타입이 서로 다른 경우를 검출합니다.",
  "desc.IMPROPER_TYPE_ASSIGN.PLAIN_CHAR": "대입 시 char 타입 간의 불일치 체커는 1바이트 크기의 문자형 및 정수형 변수에 잘못된 값을 대입한 경우를 검출합니다.",
  "desc.IMPROPER_TYPE_ASSIGN.PROMOTION.OBJC": "대입 시 암시적 캐스팅 체커는 대입 연산의 좌변과 우변 사이 타입이 달라서 암시적 캐스팅이 일어나는 경우를 검출합니다.",
  "desc.IMPROPER_USAGE.FILE_OBJECT": "FILE 객체의 잘못된 사용 체커는 FILE 객체의 포인터를 역참조하거나 객체 내부를 직접 조작한 경우를 검출합니다.",
  "desc.IMPROPER_VARIABLE_ACCESS": "비호환 포인터를 통한 메모리 접근 체커는 메모리에 저장된 값의 타입과 호환되지 않는 타입의 포인터를 사용하여 메모리에 접근하는 경우를 검출합니다.",
  "desc.INADEQUATE_RSA_PADDING.CSHARP": "부적절한 RSA 패딩 체커는 RAS 알고리즘 사용 시 부적절한 패딩 방식을 사용하는 경우를 검출합니다.",
  "desc.INAPPROPRIATE_HTTP.HEADERS.JS": "웹 브라우저는 HTTP를 통해 전송된 헤더를 사용하여 통신 표준과 보안 정책을 확인합니다. HTTP 헤더의 보안기능을 적절하게 사용하여 브라우저 클라이언트 측에서 실행되는 코드의 보안을 높이는 것은 보안 취약성을 완화하는 빠르고 효율적인 방법입니다.",
  "desc.INCLUDE_EXPLICIT_CASES_FOR_ALL_ALTERNATIVES": "일부 경우가 누락된 케이스문 체커는 모든 경우에 대한 명시적인 케이스문을 추가하지 않고 일부 경우를 작성하지 않은 경우를 검출합니다.",
  "desc.INCLUDE_STATIC_SPECIFIER_ON_REDECLARATION": "정적 스토리지 클래스를 가지지 않은 내부 링크 함수 체커는 내부 링크를 가지는 함수를 재선언할 때 정적 스토리지 클래스를 지정하지 않은 정의를 검출합니다.",
  "desc.INCLUDE_STDLIB_WITH_BRACKETS": "잘못된 헤더 포함 방법 체커는 헤더를 포함할 때 표준 라이브러리 헤더를 <>로, 다른 라이브러리를 \"\"로 포함하지 않는 경우를 검출합니다.",
  "desc.INCOMPLETE_STRUCT_UNION": "완전한 타입이 아닌 구조체 및 공용체 체커는 구조체 및 공용체가 완전한 타입이 아닌 경우를 검출합니다.",
  "desc.INCOMPLETE_VALIDATE_METHOD_DEFINITION": "불완전한 validate 메서드 정의 체커는 특정 클래스를 상속 받는 클래스에서 validate 메서드를 정의하지 않거나 잘못 정의하는 코드를 검출합니다.",
  "desc.INCONSISTENT_GLOBAL_VARIABLE_TYPE": "선언된 전역 변수명 재사용 시 extern 키워드 누락 체커는 이미 선언된 전역 변수와 동일한 변수명을 재사용할 때 extern 키워드를 사용하지 않은 코드를 검출합니다.",
  "desc.INCORRECT_BITWISE_SHIFT": "비트 시프트 연산을 수행할 때, 시프트할 비트 수가 0에서 31 사이가 아닌 경우 잘못된 연산이 발생할 수 있습니다.",
  "desc.INCORRECT_CONVERSION.NUMERIC_TYPES": "숫자 타입 간의 잘못된 캐스팅 체커는 정수형과 실수형 객체 사이에 검증 없이 캐스팅한 수식을 검출합니다.",
  "desc.INCORRECT_ERRNO_CHECK": "errno 값을 검사할 때, 마지막으로 호출된 함수가 errno를 설정하는 함수여야 합니다. errno를 설정하는 함수만이 오류가 발생했을 때 errno 값을 설정합니다. 이외에 다른 함수들은 errno를 설정하지 않거나 예기치 않게 설정할 수 있습니다.",
  "desc.INCORRECT_ORDER_OF_CONSTRUCTOR_INITIALIZERS": "순서가 올바르지 않은 초기화 리스트 목록 체커는 초기화 해야 할 필드들의 순서가 올바르지 않은 초기화 리스트 목록을 검출합니다.",
  "desc.INCORRECT_PERMISSION": "잘못된 권한 부여 체커는 사용자에게 읽기 또는 수정 권한을 잘못 부여하는 코드를 검출합니다.",
  "desc.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE": "중요한 리소스에 대한 잘못된 권한 할당 체커는 설정 파일, 실행 파일, 라이브러리 등을 SW 관리자가 아닌 사용자가 읽고 쓸 수 있는 코드를 검출합니다.",
  "desc.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.KOTLIN": "중요한 리소스에 대한 잘못된 권한 할당 체커는 설정 파일, 실행 파일, 라이브러리 등을 SW 관리자가 아닌 사용자가 읽고 쓸 수 있는 경우를 검출합니다.",
  "desc.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.PYTHON": "애플리케이션이 보안 관련 자원에 대한 읽기 또는 수정하기 권한을 의도하지 않게 허용한 경우, 권한을 갖지 않은 사용자가 해당 자원을 사용하게 될 수 있습니다.",
  "desc.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE_CSHARP": "중요한 리소스에 대한 잘못된 권한 할당 체커는 설정 파일, 실행 파일, 라이브러리 등을 SW 관리자가 아닌 사용자가 읽고 쓸 수 있는 코드를 검출합니다.",
  "desc.INCORRECT_POINTER_SCALING": "부정확한 포인터 연산 체커는 포인터의 연산이 정확하지 않게 수행되는 경우를 검출합니다.",
  "desc.INCORRECT_SERIAL_PERSISTENT_FIELDS_MODIFIER": "잘못된 serialPersistentFields 필드 한정자 체커는 private static final로 선언하지 않은 serialPersistentFields 필드를 검출합니다.",
  "desc.INCORRECT_USE_OF_AUTOBOXING_AND_UNBOXING": "오토박싱과 언박싱은 기본형 데이터를 래퍼 클래스 객체로 변환하거나 그 반대로 변환하는 과정을 의미합니다. 기본형 데이터를 객체로 변환하는 오토박싱 과정에서 새로운 객체가 생성되고, 이 객체는 힙 메모리에 저장됩니다. 이는 가비지 컬렉터의 부담을 증가시키고, 메모리 사용량을 늘리게 됩니다. 특히 반복문에서 오토박싱이나 언박싱이 일어나면, 반복 횟수만큼 객체가 생성되어 메모리 사용량이 증가하고 성능 저하를 유발할 수 있습니다.",
  "desc.INCORRECT_USE_OF_PLACEMENT_NEW": "적절하지 않은 객체를 대상으로 하는 메모리 지정 new 연산 체커는 충분한 공간이 있는지 확인되지 않았거나 적절하게 정렬되지 않은 객체에 대해 메모리 지정 new (Placement new) 연산이 수행되는 코드를 검출합니다.",
  "desc.INCREMENT_ON_BOOLEAN": "bool 형식에 증가 연산자 사용 체커는 bool 형식의 변수에 증가 연산자('++')를 사용하는 경우를 검출합니다.",
  "desc.INDICATE_SIGNEDNESS_TYPEDEF": "typedef로 부호 없는 숫자 타입 선언 체커는 typedef 선언 시 부호를 명시하지 않은 숫자 타입을 선언하는 코드를 검출합니다.",
  "desc.INEFFECTIVE_BOOLEAN_LOGICAL_OP": "Boolean 타입이 아닌 논리 연산자의 피연산자 체커는 논리 연산자들의 피연산자 타입이 Boolean이 아닌 수식을 검출합니다.",
  "desc.INFINITE_RECURSIVE_CALL": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.",
  "desc.INFINITE_RECURSIVE_CALL.JS": "재귀의 순환 횟수를 제어하지 못하여 할당된 메모리나 프로그램 스택 등의 자원을 과다하게 사용하면 위험합니다. 대부분의 경우, 귀납 조건이 없는 재귀 함수는 무한 루프에 빠져들게 되고 자원고갈을 유발함으로써 시스템의 정상적인 서비스를 제공할 수 없게 합니다.",
  "desc.INFINITE_RECURSIVE_CALL.PHP": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.",
  "desc.INFINITE_RECURSIVE_CALL.PYTHON": "재귀의 순환 횟수를 제어하지 못하여 할당된 메모리나 프로그램 스택 등의 자원을 과다하게 사용하면 위험합니다. 대부분의 경우, 귀납 조건이 없는 재귀 함수는 무한 루프에 빠져들게 되고 자원고갈을 유발함으로써 시스템의 정상적인 서비스를 제공할 수 없게 합니다.",
  "desc.INFORMATION_LEAK": "정보 누출 체커는 프로그램의 중요한 내부 정보가 오류 메시지와 같은 수단을 통해 노출되는 코드를 검출합니다.",
  "desc.INFORMATION_LEAK.ERROR.GO": "응용 프로그램이 민감한 정보를 포함하는 오류 메시지를 생성해 외부에 제공하면 공격자의 악성 행위로 이어질 수 있습니다. 예외 발생 시 오류 내용을 그대로 출력하는 경우, 프로그램 내부 구조를 쉽게 파악할 수 있습니다.",
  "desc.INFORMATION_LEAK.RUNTIME_ERROR": "Java 런타임 오류 메시지를 통한 정보 노출 체커는 민감한 정보가 런타임 오류 메시지를 통해 노출되는 코드를 검출합니다.",
  "desc.INFORMATION_LEAK.TOBE.JS": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.",
  "desc.INFORMATION_LEAK_ANDROID": "Android에서의 정보 누출 체커는 중요 정보를 Android의 SD카드에 저장하는 경우를 검출합니다.",
  "desc.INLINE_FUNCTION_SHALL_BE_STATIC": "inline 함수 선언에서 static 누락 체커는 inline 함수가 static으로 선언되지 않은 경우를 검출합니다.",
  "desc.INPUT_FUNCTION_ERROR_HANDLING": "입력 함수의 오류 처리 누락 체커는 문자 데이터를 변환하기 위한 입력 함수에서 발생한 오류를 처리하지 않는 경우를 검출합니다.",
  "desc.INSECURE_HASH_ITERATION_COUNT.PYTHON": "패스워드 해시를 생성할 때, 반복 횟수가 충분히 크지 않으면 해시값을 예측하기 쉬워집니다.",
  "desc.INSECURE_PERSISTENT_COOKIE.PYTHON": "쿠키는 브라우저 세션에 관계 없이 지속적으로 저장되도록 설정할 수 있으며 디스크에 기록되어 다음 브라우저 세션이 시작되었을 때 메모리에 로드됩니다. 개인정보, 인증 정보 등이 이와 같은 영속적인 쿠키(Persistent Cookie)에 저장된다면 공격자가 이를 활용하여 정보를 노출시킬 수 있습니다.",
  "desc.INSECURE_RANDOM.PYTHON": "적절하지 않은 난수 값 사용은 예측 가능한 난수를 사용하여 생기는 보안약점입니다. 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능합니다.",
  "desc.INSECURE_RANDOMNESS.VBS": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.",
  "desc.INSECURE_TEMPORARY_FILE.PYTHON": "위험한 임시 파일 생성 체커는 임시 파일을 부적절한 방법으로 생성하는 경우를 검출합니다.",
  "desc.INSECURE_TOUCHID_IMPLEMENTATION.SWIFT": "취약한 프레임워크에 의존한 보안 결정 체커는 LocalAuthentication 프레임워크, LAContext를 사용하여 사용자를 인증하는 경우를 검출합니다.",
  "desc.INSECURE_UNPICKLE.PYTHON": "역직렬화는 바이너리 파일이나 바이트 스트림을 연산하여 객체 구조로 복원시키는 방법입니다. 네트워크를 이용하여 직렬화된 정보를 수신자에게 전달하는 과정에서 공격자가 전송 또는 스트림을 조작할 수 있는 경우에 무결성 침해, 원격 코드 실행, 서비스 거부 공격 등이 발생할 수 있는 보안약점입니다.",
  "desc.INSERT_DERIVED_INTO_CONTAINER_HOLDING_BASE": "자식 클래스 객체를 컨테이너에 삽입 체커는 부모 클래스 객체를 저장하는 컨테이너에 자식 클래스 객체를 저장하는 수식을 검출합니다.",
  "desc.INSERT_WITHOUT_COLUMN.XSQL.CONFIG": "대상 컬럼 지정 없는 INSERT 절 사용 금지 체커는 INSERT 절을 작성할 때 컬럼명을 작성하지 않은 경우를 검출합니다.",
  "desc.INSTANTIATE_TEMPLATES": "인스턴스화되지 않은 템플릿 체커는 한 번도 인스턴스화되지 않은 템플릿 요소를 검출합니다.",
  "desc.INSUFFICIENT_INIT_ARRAY": "구조체 및 배열의 중괄호 초기화 요소 부족 체커는 명시된 구조체나 배열의 크기보다 중괄호 초기화 데이터가 부족한 정의를 검출합니다.",
  "desc.INSUFFICIENT_PUBLIC_EXPONENT": "최적화되지 않은 공개 키 지수 체커는 비대칭 키 RSA 사용 시 공개 키 지수가 65537이 아닌 경우를 검출합니다.",
  "desc.INSUFFICIENT_SESSION_EXPIRATION": "과도한 세션 유지 시간 체커는 HttpSession.setMaxInactiveInterval()의 인자로 -1이 전달되는 경우를 검출합니다.",
  "desc.INSUFFICIENT_SESSION_ID.CONFIG": "불충분한 세션 ID 길이 체커는 세션 ID 길이가 너무 짧은 경우를 검출합니다.",
  "desc.INTEGER_OVERFLOW": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.",
  "desc.INTEGER_OVERFLOW.HORUS": "정수 연산의 결과가 표현할 수 있는 값의 범위를 벗어났습니다.",
  "desc.INTEGER_OVERFLOW.OBJC": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.",
  "desc.INTEGER_OVERFLOW.TYPE_CONV.GO": "Go 언어에서 문자열을 정수로 변환할 때는 주로 strconv.Atoi와 strconv.ParseInt 두 가지 함수를 사용합니다. strconv.Atoi는 문자열을 int 타입으로 변환합니다. Go 언어의 int 타입은 시스템에 따라 크기가 다르며, 32비트 시스템에서는 int32, 64비트 시스템에서는 int64로 동작합니다. 따라서 문자열을 int로 변환한 후, 이를 다시 작은 범위의 정수 타입으로 변환하려고 하면 오버플로가 발생할 수 있습니다.",
  "desc.INTEGER_OVERFLOW_CSHARP": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.",
  "desc.INTEGER_PRECISION": "부적절한 정수 정밀도 체커는 부적절한 상수 정밀도를 사용한 경우를 검출합니다.",
  "desc.INTEGER_UNDERFLOW": "정수 언더플로우 체커는 덧셈이나 뺄셈, 곱셈을 하는 곳에서 계산의 결과값이 각 타입에 맞게 허용된 최소값보다 작은 값으로 내려가면 검출합니다.",
  "desc.INTENT_DATA_LEAK_ANDROID": "다른 객체에 전달할 Intent에 외부에서 전달된 Intent 혹은 Intent 데이터를 사용하는 경우 이슈로 검출합니다.",
  "desc.INTEROPERABILITY.AUTO_LAYOUT.COM_VISIBLE.CSHARP": "COM(Component Object Model) 노출 형식은 LayoutKind.Auto로 설정한 System.Runtime.InteropServices.StructLayoutAttribute 특성으로 표시되어 있습니다.",
  "desc.INTEROPERABILITY.CLASS_INTERFACE.AUTO_DUAL.CSHARP": "COM(Component Object Model) 노출 형식은 ClassInterfaceType의 AutoDual 값으로 설정한 ClassInterfaceAttribute 특성으로 표시되어 있습니다.",
  "desc.INTEROPERABILITY.COM_INTERFACE.OVERLOAD_METHOD.CSHARP": "COM(Component Object Model) 노출 인터페이스는 오버로드된 메소드를 선언합니다.",
  "desc.INTEROPERABILITY.COM_METHOD.EXTERNALLY_VISIBLE.CSHARP": "System.Runtime.InteropServices.ComRegisterFunctionAttribute 또는 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 특성으로 표시된 메소드를 외부에서 볼 수 있습니다.",
  "desc.INTEROPERABILITY.COM_METHOD.MISMATCH.CSHARP": "형식에서 System.Runtime.InteropServices.ComRegisterFunctionAttribute 특성으로 표시된 메소드를 정의하지만 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 특성으로 표시된 메소드를 선언하지 않거나 그 반대의 경우입니다.",
  "desc.INTEROPERABILITY.COM_SOURCE_INTERFACE.NOT_IDISPATCH.CSHARP": "형식이 ComSourceInterfacesAttribute 속성으로 표시되었고, 특정된 인터페이스의 InterfaceTypeAttribute 속성의 값이 IntefaceIsDispatch 가 아닙니다.",
  "desc.INTEROPERABILITY.COM_VISIBLE_TYPE.NOT_VISIBLE_BASE.CSHARP": "외부에서 볼 수 있는 형식에 변경 가능한 참조 형식인, 외부에서 볼 수 있는 읽기 전용 필드가 포함되었습니다.",
  "desc.INTEROPERABILITY.GET_LAST_ERROR.NOT_AFTER_PINVOKE.CSHARP": "Marshal.GetLastWin32Error 메소드 또는 이와 동일한 기능의 Win32 GetLastError 함수를 호출했으며 직전의 호출이 플랫폼 호출 메소드에 대한 호출이 아닙니다.",
  "desc.INTEROPERABILITY.PINVOKE.VISIBLE.CSHARP": "public 형식의 public 또는 protected 메소드에 System.Runtime.InteropServices.DllImportAttribute 특성이 있습니다.",
  "desc.INT_TO_CHAR": "정수형을 문자형으로 변환 체커는 정수형을 문자형으로 변환하는 코드를 검출합니다.",
  "desc.INVALID_COLUMN_COMMENT.XSQL.CONFIG": "컬럼 주석 작성규칙 위반 체커는 SQL 구문 내에서 컬럼 주석을 단일 라인 주석(--)으로 작성한 경우를 검출합니다.",
  "desc.INVALID_DATA_TO_ASCTIME": "asctime() 함수에 유효하지 않은 입력값 사용 체커는 asctime() 함수에서 유효하지 않거나 검증되지 않는 입력값을 사용하는 코드를 검출합니다.",
  "desc.INVALID_ITERATOR": "무효화된 반복자 체커는 무효화된 반복자를 사용한 수식을 검출합니다.",
  "desc.INVALID_MESSAGE_ID_IN_EXCEPTION": "해당 업무 메시지ID 외 사용 금지 체커는 POBISException 예외를 전달할 때 메시지가 해당 업무 메시지ID가 아닌 경우 이슈를 검출합니다.",
  "desc.INVALID_MESSAGE_ID_IN_SETOKMSG": "해당 업무 메시지ID 외 사용 금지 체커는 setOkMsg 함수를 사용할 때 메시지가 해당 업무 메시지ID가 아닌 경우 이슈를 검출합니다.",
  "desc.INVALID_OPERAND_TYPE.JS": "잘못된 피연산자 타입 체커는 잘못된 타입의 피연산자를 사용한 경우에 검출됩니다.",
  "desc.INVALID_SERVLET.CONFIG": "잘못 설정한 서블릿 사용 체커는 설정이 잘못된 서블릿이 있는 경우를 검출합니다.",
  "desc.INVOCATION_OF_EQUALS_ON_ARRAY": "배열들 간의 equals 사용 체커는 두 비교 대상 객체가 배열 타입인 equals() 메소드 호출을 검출합니다.",
  "desc.INVOKE_VIRTUAL_FUNCTION_FROM_CTOR_OR_DTOR": "생성자 혹은 소멸자에서 가상 함수 호출 체커는 가상 함수를 호출한 생성자나 소멸자를 검출합니다.",
  "desc.IOWithoutPositioning": "IO 작업들 사이에는 positioning 작업이 필요합니다.",
  "desc.ITERATOR": "Iterator 및 ListIterator에서 next() 혹은 previous()를 호출할 때 진행할 element의 존재 여부를 확인하지 않은 경우를 검출합니다.",
  "desc.IdempotentOperations": "항등식(예: x=x)은 아무런 효과가 없기 때문에 이를 검출합니다.",
  "desc.IdenticalConditionAfterEarlyExit": "동일한 조건문이 존재합니다. 첫 번째 조건문에 함수가 종료되어 두 번째 조건문은 사용되지 않는 코드입니다.",
  "desc.IfElseStmtsMustUseBraces": "중괄호를 사용하지 않은 if ... else 구문을 검출합니다.",
  "desc.IfStmtsMustUseBraces": "중괄호로 코드 블록을 둘러싸지 않는 if statement을 검출합니다.",
  "desc.IframeMissingSrcAttribute": "IFrame은 반드시 src 속성을 가져야 합니다.",
  "desc.IgnoredReturnValue": "함수의 반환값이 사용되지 않습니다.",
  "desc.ImmutableField": "private 필드 중 초기화 이후 값이 한 번도 변화하지 않은 경우 이를 검출합니다.",
  "desc.ImportFromSamePackage": "package로 정한 후 같은 package import을 검출합니다.",
  "desc.IncorrectLogicOperator": "논리합이 항상 참을 반환합니다.",
  "desc.Incrementboolean": "부울 자료형 변수를 증가시킬 때 ++ 연산자를 이용하는 것은 C++ 표준에서 더 이상 사용되지 않습니다. 대신 true를 직접 대입해야 합니다.",
  "desc.InefficientEmptyStringCheck": "String.trim().length()를 빈 문자열 검사 방식으로 사용하는 경우 이를 검출합니다.",
  "desc.InefficientStringBuffering": "StringBuffer 의 선언 인자 혹은 append()에 + 를 이용한 문자열 조합을 검출합니다.",
  "desc.InitializerList": "멤버 변수가 초기화 목록에서 잘못된 위치에 있습니다.",
  "desc.InnaccurateNumericLiteral": "변수에 범위를 초과한 수를 정의한 경우 의도치 않게 변경되어 동작할 수 있습니다.",
  "desc.InsecureCmdLineArgs": "커맨드 라인 인자가 너무 긴 경우 버퍼 오버런이 발생할 수 있습니다.",
  "desc.InstantiationToGetClass": "PrimarySuffix에 getClass를 찾아서 그 형제 노드에 PrimaryPrefix/AllocationExpression이 있고, PrimarySuffix 가 2개인 경우 이를 검출합니다.",
  "desc.InsufficientStringBufferDeclaration": "빈 StringBuffer 생성을 검출합니다.",
  "desc.IntegerInstantiation": "'new Integer', 'new java.lang.Integer' 등의 allocation 구문을 검출합니다.",
  "desc.InvalidFunctionArg": "함수의 n번째 인자가 유효하지 않습니다. 특정 값을 가지고 있지만 해당 값의 범위가 올바르지 않습니다.",
  "desc.InvalidFunctionArgBool": "함수의 n번째 인자가 유효하지 않습니다. 부울 형식이 아닌 다른 값이 필요합니다.",
  "desc.InvalidTestForOverflow": "오버플로우는 정의되지 않은 행동입니다. 오버플로우를 이용한 검사는 유효하지 않습니다.",
  "desc.JSON_INJECTION.JS": "JSON 삽입 체커는 겁증되지 않은 외부 입력값이 JSON 데이터 생성에 사용되는 경우를 검출합니다.",
  "desc.JUMP_AT_THE_END_OF_LOOP.CSHARP": "반복문 마지막에 점프문 사용 체커는 반복문 마지막에 분기문(break,continue)을 사용한 경우를 검출합니다.",
  "desc.JUMP_OVER_SCOPE": "블록 간 점프 체커는 goto 구문과 대상 레이블이 서로 무관한 블록에 분리되어 있는 경우를 검출합니다.",
  "desc.JUMP_SHOULD_BE_CONDITIONAL.SWIFT": "조건문 속에 포함되지 않은 제어문 체커는 제어문이 조건문 속에서 사용되지 않은 경우를 검출합니다.",
  "desc.JUMP_SHOULD_NOT_BE_FOLLOWED_BY_OTHERS.SWIFT": "제어문 후 작성된 코드 체커는 한 코드 블록 내에서 사용된 분기문 및 반환문을 뒤따르는 코드가 존재하는 경우를 검출합니다.",
  "desc.JUnit4SuitesShouldUseSuiteAnnotation": "@RunWith(Suite.class) 어노테이션이 되어있지 않은 테스트 suite를 검출합니다.",
  "desc.JUnit4TestShouldUseAfterAnnotation": "@After 어노테이션이 되어있지 않은 tearDown 메소드를 검출합니다.",
  "desc.JUnit4TestShouldUseBeforeAnnotation": "@Before 어노테이션이 되어있지 않은 setUp 메소드를 검출합니다.",
  "desc.JUnit4TestShouldUseTestAnnotation": "@Test 어노테이션이 되어있지 않은, test로 시작하는 모든 메소드들을 검출합니다.",
  "desc.JUnitAssertionsShouldIncludeMessage": "인자를 3개 입력하지 않은 assertEquals() 메소드 호출을 검출합니다.",
  "desc.JUnitSpelling": "setUp()나 tearDown()의 JUnit 프레임워크 메소드에 대해 이름을 잘못 선언한 경우를 검출합니다.",
  "desc.JUnitStaticSuite": "JUnit 테스트 안의 suite() 메소드는 정적 public으로 선언되어야 합니다.",
  "desc.JUnitTestContainsTooManyAsserts": "JUnit test는assert의 수가 많으면 테스트가 복잡해지고 정확성을 떨어뜨립니다.",
  "desc.JUnitTestsShouldIncludeAssert": "JUnit 테스트에서 어떠한 assertion도 포함하지 않았다면 이를 검출합니다.",
  "desc.JUnitUseExpected": "예외가 발생하는 경우 @Test(expected) 어노테이션이 되어있지 않은 부분을 검출합니다.",
  "desc.JspEncoding": "meta 태그가 유실되었거나 페이지 내에 인코딩 정보가 명시가 되어있지 않은 경우 이를 검출합니다.",
  "desc.JumbledIncrementer": "Loop incrementer 들을 섞어서 사용하는 경우를 검출합니다.",
  "desc.KEYWORD_AS_IDENTIFIER.ABAP": "키워드를 변수 이름으로 사용하지 마십시오.",
  "desc.KEY_MANAGEMENT.EMPTY_HMAC_KEY.CSHARP": "비어 있는 HMAC 비밀 키 체커는 HMAC 함수를 사용할 때 비밀 키가 비어 있는 값인 경우를 검출합니다.",
  "desc.KEY_MANAGEMENT.HARDCODED_ENCRYPTION_KEY.CSHARP": "하드코딩된 대칭 키 알고리즘 비밀 키 체커는 소스 코드 내에 하드코딩되어 사용되는 대칭 키 중 비밀 키를 검출합니다.",
  "desc.KEY_MANAGEMENT.HARDCODED_HMAC_KEY.CSHARP": "하드코딩된 HMAC 비밀 키 체커는 HMAC의 비밀 키가 하드코드 되었있는 경우를 검출합니다.",
  "desc.KOSCOM.NAMING_CONVENTION.FUNCTION": "함수 이름이 명명규칙에 맞지 않습니다.",
  "desc.KnownConditionTrueFalse": "조건문의 결과가 정해져 있습니다.",
  "desc.LANGUAGE_EXTENSION_SHOULD_NOT_BE_USED": "특정 컴파일러 전용 확장 코드 사용 체커는 특정 환경 및 컴파일러에서만 사용할 수 있는 확장 코드를 사용한 경우를 검출합니다.",
  "desc.LDAP_INJECTION": "LDAP 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 LDAP 쿼리문을 검출합니다.",
  "desc.LDAP_INJECTION.KOTLIN": "LDAP 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 LDAP 쿼리문을 검출합니다.",
  "desc.LDAP_INJECTION.OBJC": "LDAP 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 사용하는 경우를 검출합니다.",
  "desc.LDAP_INJECTION.PHP": "LDAP 삽입 체커는 공격자가 외부 입력을 통해서 의도하지 않은 LDAP 명령어를 수행할 수 있는 경우를 검출합니다.",
  "desc.LDAP_INJECTION.PYTHON": "검증되지 않은 외부 입력 값이 LDAP(Lightweight Directory Access Protocol) 명령어로 사용될 경우, 공격자가 LDAP 명령문의 구성을 마음대로 바꿀 수 있는 보안약점입니다.",
  "desc.LDAP_INJECTION.SWIFT": "LDAP 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 사용하는 경우를 검출합니다.",
  "desc.LDAP_INJECTION.VBNET": "LDAP 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 LDAP 쿼리문을 검출합니다.",
  "desc.LDAP_INJECTION_ASPNET": "LDAP 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 사용하는 코드를 검출합니다.",
  "desc.LEAK.CURSOR": "SQL_OPEN_CUR(\"A\") 함수를 통해 데이터베이스의 커서를 열었다면 SQL_CLOSE_CUR(\"A\",...) 함수를 통해 닫아 줘야 합니다.",
  "desc.LEAK.CURSOR_ARRAY": "SQL_OPEN_CUR_ARR(\"A\") 함수를 통해 데이터베이스 커서 배열을 열었다면 SQL_CLOSE_CUR_ARR(\"A\",...) 함수를 통해 닫아 줘야 합니다.",
  "desc.LEAK.DEBUG_INFORMATION.CAKEPHP.PHP": "CakePHP 시스템 정보 노출 체커는 CakePHP 라이브러리의 Configure::write() 함수로 시스템 정보가 출력되는 경우를 검출합니다.",
  "desc.LEAK.ERROR_INFORMATION.PHP": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.",
  "desc.LEAK.ERROR_INFORMATION.PYTHON": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다. 오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "desc.LEAK.INFORMATION.PRIVILEGED_BLOCK": "특권 블록으로 인한 정보 누출 체커는 private이 아닌 메소드 내에서 java.security.AccessController.doPrivileged()를 호출하는 경우를 검출합니다.",
  "desc.LEAK.MEMORY": "메모리 누수 체커는 더 이상 필요하지 않은 할당된 메모리를 해제하지 않는 코드를 검출합니다.",
  "desc.LEAK.MEMORY.OBJC": "메모리 누수 체커는 더 이상 필요하지 않은 할당된 메모리를 해제하지 않는 코드를 검출합니다.",
  "desc.LEAK.RECORD": "다음의 함수로 생성한 동적 레코드를 make_CCM4427Q51Req_I_RECORD( ... );다음의 함수로 해제해야만 합니다. destroy_CCM4427Q51Req( ... );",
  "desc.LEAK.RESOURCE": "리소스 누수 체커는 파일, 소켓 등 리소스를 할당한 후에 해제하지 않는 코드를 검출합니다.",
  "desc.LEAK.RESOURCE.PHP": "리소스 누수 체커는 특정 리소스가 할당된 다음, 회수되지 않은 경우를 검출합니다.",
  "desc.LEAK.RESOURCE.PYTHON": "파일 디스크립터, 힙 메모리, 소켓 등은 프로그램의 유한한 자원입니다. 이러한 자원을 할당 받아 사용한 후 반환하지 않는다면 프로그램 오류로 인해 서비스 거부 공격을 유발할 수 있습니다.",
  "desc.LEAK.SYSTEM_INFORMATION.CSHARP": "시스템 정보 노출 체커는 catch 구문에서 시스템 정보를 출력하는 경우를 검출합니다.",
  "desc.LEAK.SYSTEM_INFORMATION.VBNET": "시스템 정보 노출 체커는 catch 구문에서 시스템 정보를 출력하는 경우를 검출합니다.",
  "desc.LEAK.SYSTEM_INFORMATION.VBS": "시스템 정보 노출 체커는 시스템 정보를 출력하는 경우를 검출합니다.",
  "desc.LEAST_PRIVILEGE_VIOLATION": "회수되지 않은 작업 권한 체커는 높은 권한을 부여하여 작업을 수행한 후에 해당 권한을 회수하지 않는 코드를 검출합니다.",
  "desc.LEAST_PRIVILEGE_VIOLATION.W32": "윈도우 함수 사용 중 최소 권한 위반 체커는 윈도우 함수 CreateProcess*(), RegCreateKey*(), SHRegCreate*(), SHRegOpen*() 등을 사용할 때 권한에 유의 하지 않고 사용하는 경우를 검출합니다.",
  "desc.LEFTOVER_DEBUG_CODE": "남겨둔 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.",
  "desc.LEFTOVER_DEBUG_CODE.JS": "디버깅 목적으로 삽입된 코드는 개발이 완료되면 제거해야 합니다. 디버그 코드는 설정 등의 민감한 정보 또는 의도하지 않은 시스템 제어로 이어지는 정보를 담고 있을 수 있습니다. 디버그 코드가 남겨진 채로 배포될 경우, 공격자가 식별 과정을 우회하거나 의도하지 않은 정보 노출 문제가 발생할 수 있습니다.",
  "desc.LEFTOVER_DEBUG_CODE.KOTLIN": "남겨둔 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.",
  "desc.LEFTOVER_DEBUG_CODE.OBJC": "남겨둔 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.",
  "desc.LEFTOVER_DEBUG_CODE.PHP": "남겨둔 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.",
  "desc.LEFTOVER_DEBUG_CODE.PYTHON": "디버그 목적으로 작성된 코드는 개발이 완료되면 제거해야 합니다. 디버그 코드가 남겨진 채로 배포될 경우, 공격자가 식별 과정을 우회하거나 의도하지 않은 정보와 제어 정보가 노출될 수 있습니다.",
  "desc.LEFTOVER_DEBUG_CODE.SWIFT": "남겨둔 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.",
  "desc.LEFTOVER_DEBUG_CODE.TOBE.JS": "남겨둔 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.",
  "desc.LEFTOVER_DEBUG_CODE.VBNET": "남겨둔 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.",
  "desc.LEFTOVER_DEBUG_METHOD.KOTLIN": "남겨둔 디버그 함수 체커는 삭제되지 않고 남아 있는 디버그 함수를 검출합니다.",
  "desc.LIMIT.QUICK_TABS_TEXT_FONT.TOBE.JS": "너무 긴 QuickTabsTextFont 속성 문자열 체커는 QuickTabsTextFont 속성에 매우 긴 문자열이 입력된 경우를 검출합니다.",
  "desc.LIMIT_DBIO_FETCH.PF": "DBIO Fetch 건수가 기준치를 초과했습니다.",
  "desc.LIMIT_OPERATOR_PRECEDENCE": "괄호 없는 복합 수식 연산자 체커는 복합 수식에서 우선순위가 다른 연산자를 괄호 없이 사용하는 경우를 검출합니다.",
  "desc.LIMIT_REPETITION.PF": "입/출력 구조체의 서브 구조체 반복 횟수를 제한해야 합니다.",
  "desc.LOAD_LIBRARY_USING_ABSOLUTE_PATH": "java.lang.System.loadLibrary 메소드의 인자는 절대 경로여야 합니다.",
  "desc.LOGGER_ERROR_IN_CATCH": "예외 발생 시 logger.error를 이용하여 로그를 남겨야 합니다.",
  "desc.LOGICAL_OP_SHALL_BE_PRIMARY_EXPR": "논리 연산자에서 허용되지 않은 피연산자 사용 체커는 논리 연산자의 피연산자로 변수나 상수, 괄호 수식을 제외한 수식을 사용한 경우를 검출합니다.",
  "desc.LOG_FORGING.JS": "로그 조작 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.",
  "desc.LOG_FORGING.OBJC": "로그 조작 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.",
  "desc.LOG_FORGING.PHP": "로그 조작 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.",
  "desc.LOG_FORGING.PYTHON": "로그 조작 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.",
  "desc.LOG_FORGING.TOBE.JS": "투비소프트 플랫폼 로그 조작 체커는 검증되지 않은 사용자 입력을 플랫폼 로그에 출력하는 경우를 검출합니다.",
  "desc.LOG_FORGING.VBS": "로그 조작 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.",
  "desc.LOG_FORGING_ANDROID": "Android 내부의 민감한 데이터를 로그에 사용하는 경우를 검출합니다.",
  "desc.LOG_SENSITIVE_INFORMATION": "로그에 민감한 정보 기록 체커는 개인 식별 정보 같은 민감한 정보를 로그에 기록하는 코드를 검출합니다.",
  "desc.LOG_SENSITIVE_INFORMATION_ANDROID": "Android에서 민감한 정보의 로그 기록 체커는 외부에서 가져온 데이터를 로그에 출력하는 경우를 검출합니다.",
  "desc.LawOfDemeter": "Coupling 이 발생할 instance 들의 메소드 사용을 금지합니다.",
  "desc.LocalHomeNamingConvention": "Session EJB의 Local Home 인터페이스의 이름은 LocalHome으로 끝나야 합니다.",
  "desc.LocalInterfaceSessionNamingConvention": "Session EJB의 Local 인터페이스의 이름은 Local로 끝나야 합니다.",
  "desc.LocalVariableCouldBeFinal": "할당이 한번만 진행된 변수가 final이 아닌 경우 이를 검출합니다.",
  "desc.LoggerIsNotStaticFinal": "정적 final로 선언되지 않은 로거를 검출합니다.",
  "desc.LogicInversion": "식에 ! 가 붙었을때 반대의 비교연산을 했을 경우를 검출합니다.",
  "desc.LongInstantiation": "'new Long', 'new java.lang.Long' 등의 allocation 구문을 검출합니다.",
  "desc.LongVariable": "변수 길이가 정해진 수, $minimum 보다 긴 경우 이를 검출합니다.",
  "desc.LooseCoupling": "인터페이스(예: Set)가 아닌 구현 타입(예: HashSet)을 사용하는 경우 이를 검출합니다.",
  "desc.MACRO_IF_EXPRESSION_SHALL_EVAL_TO_BOOLEAN": "전처리 구문 조건식의 결과값 제약 위반 체커는 전처리 구문의 #if 와 #elif의 표현식의 결과값이 0 또는 1이 아닌 경우를 검출합니다.",
  "desc.MAIN_IN_GLOBAL_NAMESPACE": "메인 함수가 아닌 함수의 이름을 main으로 사용 체커는 함수 이름을 main으로 사용했으나 프로그램의 맨 처음에 호출되는 메인 함수가 아닌 일반 함수를 검출합니다.",
  "desc.MAKE_BINARY_OPERATORS_NONMEMBERS": "멤버 산술 연산자의 오버로딩 체커는 산술 연산을 오버로딩한 메소드 정의를 검출합니다.",
  "desc.MAKE_COPYING_EFFICIENT_FOR_OBJECT": "컨테이너 객체의 복사 연산 누락 체커는 복사 생성자와 복사 대입 연산자가 누락된 컨테이너 객체 타입을 검출합니다.",
  "desc.MAKE_MEMBER_DATA_PRIVATE": "멤버 변수를 private 접근 권한으로 만듭니다.",
  "desc.MAKE_PREDICATES_PURE_FUNCTIONS": "인자에 의존하지 않는 조건자 체커는 반환 결과가 인자에 의존하지 않는 조건자 선언을 검출합니다.",
  "desc.MALICIOUS.CODE.PATTERN": "악성 코드 패턴을 검출합니다.",
  "desc.MALICIOUS.URL": "악성 URL 코드를 검출합니다.",
  "desc.MALLOC.HORUS": "이미 해제한 메모리를 다시 해제했습니다.",
  "desc.MAX_LINE_LENGTH": "최대 줄길이 제한 체커는 규정된 소스 라인의 최대 길이를 넘긴 경우를 검출합니다.",
  "desc.MAY_OVERFLOW_WRAP.RUST": "산술 연산이 오버플로우를 발생시킬 가능성이 있을 때 특수화된 함수나 타입을 사용해야 합니다. 산술 연산 중 오버플로우가 발생하면 예기치 않은 결과를 초래할 수 있으며 이는 종종 보안 취약점으로 이어질 수 있습니다. 따라서, 오버플로우 가능성이 있는 산술 연산에서는 이를 적절히 처리해야 합니다.",
  "desc.MDBAndSessionBeanNamingConvention": "MessageDriveBean이나 SessionBean의 경우 'Bean'으로 끝나는 이름을 사용하도록 해야합니다.",
  "desc.MEMBER_FUNCTION_SHOULD_NOT_RETURN_NON_CONST_HANDLER": "non-const 핸들러를 클래스 데이터로 반환 금지 체커는 멤버 함수가 non-const 핸들러를 클래스 데이터로 반환한 경우를 검출합니다.",
  "desc.MEMCACHE_INJECTION.PYTHON": "Memcached 삽입 체커는 외부 입력으로부터 전달받은 데이터를 확인 없이 memcache에 저장하는 경우를 검출합니다.",
  "desc.MEMCPY_WITH_OVERLAPPING_REGIONS": "메모리 영역이 겹치는 인자 체커는 함수에 겹치는 메모리 영역을 가리키는 다수의 인자를 전달하는 코드를 검출합니다.",
  "desc.MEMORY_COMPARISON_OF_FLOAT_POINT_VALUES": "float 타입에 대해 비교 연산 수행 체커는 float 타입에 대해 메모리 비교 연산을 수행한 경우를 검출합니다.",
  "desc.MEMORY_LEAK.HORUS": "메모리 릭입니다.",
  "desc.METHOD_COMMENT": "메소드 주석의 형식 체커는 형식에 어긋난 메소드 주석을 검출합니다.",
  "desc.METHOD_IGNORES_RETURN_VALUE": "누락된 문자열 메소드 반환 값 사용 체커는 지정된 문자열 변환 메소드가 반환하는 값을 무시하는 호출을 검출합니다.",
  "desc.METHOD_NAME_IS_NOT_INTENDED": "의심스러운 메소드 이름 체커는 이름을 실수로 잘못 쓴 것으로 보이는 메소드 정의를 검출합니다.",
  "desc.MINIMAL_SCOPE": "변수의 최소 유효범위 체커는 변수가 특정 파일(또는 함수)에서만 사용되는 경우 그 해당 파일(또는 함수)에 대해서 정적으로 선언되지 않은 경우를 검출합니다.",
  "desc.MINIMISE_MIXING_OF_ITERATOR": "반복자 타입을 혼합하여 사용 체커는 반복자 타입을 혼합해서 사용한 선언을 검출합니다.",
  "desc.MINIMISE_USE_AUTOPTR": "auto_ptr의 잘못된 사용 체커는 몇가지 상황을 충족 했을 경우 auto_ptr로 선언한 변수를 검출합니다.",
  "desc.MINIMIZE_VARIABLE_LIVE_RANGE": "너무 넓은 변수 활성 범위 체커는 지역 변수를 사용 직전보다 이르게 선언하여 오랫동안 범위에 살아있게 되는 경우를 검출합니다.",
  "desc.MIPLATFORM_FORM_DATASET_ID_PREFIX.KEUMKAMWON": "금융감독원 규칙에서는 MIPLATFORM의 Form Dataset ID prefix가 \"ds_\" 이어야 합니다.",
  "desc.MIPLATFORM_GLOBAL_DATASET_ID_PREFIX.KEUMKAMWON": "금융감독원 규칙에서는 MIPLATFORM의 Global Dataset ID prefix가 \"USD_\" 이어야 합니다.",
  "desc.MIPLATFORM_GLOBAL_VAR_ID_PREFIX.KEUMKAMWON": "금융감독원 규칙에서는 MIPLATFORM의 Global 변수 ID prefix가 \"U_\" 이어야 합니다.",
  "desc.MISMATCH.COLUMN_VALUE.INSERT.SQL": "일치하지 않는 컬럼 입력 갯수 체커는 테이블 컬럼의 수와 입력의 수가 일치하지 않는 INSERT 구문을 검출합니다.",
  "desc.MISMATCH.MALLOC_TO_DELETE": "동적 메모리 할당 함수로 할당된 메모리를 delete로 해제 시도 체커는 malloc() 과 같은 함수로 할당된 메모리 영역을 delete로 해제하려고 시도하는 코드를 검출합니다.",
  "desc.MISMATCH.MALLOC_TO_DELETE_ARRAY": "동적 메모리 할당 함수로 할당된 메모리를 delete[]로 해제 시도 체커는 malloc 같은 함수로 할당된 메모리 영역을 delete[]로 해제하려고 시도하는 코드를 검출합니다.",
  "desc.MISMATCH.NEW_ARRAY_TO_DELETE": "new[]로 할당된 메모리를 delete로 해제 시도 체커는 new[] 연산자로 할당된 메모리 영역을 delete로 해제하려고 시도하는 코드를 검출합니다.",
  "desc.MISMATCH.NEW_ARRAY_TO_FREE": "new[]로 할당된 메모리를 free로 해제 시도 체커는 new[] 연산자로 할당된 메모리 영역을 free()로 해제하려고 시도하는 코드를 검출합니다.",
  "desc.MISMATCH.NEW_TO_DELETE_ARRAY": "new로 할당된 메모리를 delete[]로 해제 시도 체커는 new 연산자로 할당된 메모리 영역을 delete[]로 해제하려고 시도하는 코드를 검출합니다.",
  "desc.MISMATCH.NEW_TO_FREE": "new로 할당된 메모리를 free로 해제 시도 체커는 new 연산자로 할당된 메모리 영역을 free로 해제하려고 시도하는 코드를 검출합니다.",
  "desc.MISMATCH.RESOURCE": "리소스 할당 및 해제 함수의 불일치 체커는 리소스의 할당과 해제가 서로 일치하는 함수로 처리하지 않은 경우를 검출합니다.",
  "desc.MISMATCH.WINAPI": "메모리 할당을 하는 Windows API를 사용할 때 할당과 해제의 짝이 맞지 않는 경우에 발생하는 오류입니다.",
  "desc.MISMATCH_RETURN_TYPE": "반환 타입과 값의 불일치 체커는 함수 선언 반환 타입과 실제 반환하는 값의 타입이 다른 수식을 검출합니다.",
  "desc.MISMATCH_STORAGE_CLASS": "스토리지 클래스 불일치 체커는 동일한 함수나 객체가 외부 링크와 정적 링크 두가지를 동시에 가진 경우를 검출합니다.",
  "desc.MISMATCH_VALIDATOR_AND_FORM_FIELD": "Struts2 프레임워크를 사용하는 웹 애플리케이션에서 유효성 검사가 설정된 폼 필드가 자바 클래스에 정의된 폼 필드와 일치하지 않을 경우, 올바른 유효성 검사가 이루어지지 않습니다.",
  "desc.MISSING.ALIAS.TABLE.SQL": "테이블 명에 alias 가 생략되어 있는 경우를 검출합니다.",
  "desc.MISSING.ASC_DESC.ORDER_BY.SQL": "ORDER BY 절에서 ASC/DESC를 명기하지 않은 경우를 검출합니다. ASC 또는 DESC를 명기하는 것을 권장합니다.",
  "desc.MISSING.BRACES.FOR_LOOP.CSHARP": "누락된 for 구문 중괄호 체커는 for 문에 중괄호를 사용하지 않은 경우를 검출합니다.",
  "desc.MISSING.BRACES.WHILE_LOOP.CSHARP": "누락된 while 구문 중괄호 체커는 while 문에 중괄호를 사용하지 않은 경우를 검출합니다.",
  "desc.MISSING.BREAK.CASE.CSHARP": "case구문에서 누락된 break 구문 체커는 switch 문 안에 break가 없는 케이스 구문을 검출합니다.",
  "desc.MISSING.COLUMN.INSERT.SQL": "INSERT 쿼리문에서 테이블의 컬럼이 명기되어 있지 않은 경우를 검출합니다. 컬럼을 모두 명기하는 것을 권장합니다.",
  "desc.MISSING.COMMENT.BINDING_VARIABLE.SQL": "바인딩 변수에 대한 주석이 존재하지 않습니다.",
  "desc.MISSING.COMMENT.COLUMN_IN_SELECT.SQL": "누락된 조회 컬럼 주석 체커는 조회 컬럼 뒤 주석이 누락된 SELECT 구문을 검출합니다.",
  "desc.MISSING.DEFAULT.SWITCH.CSHARP": "누락된 switch 구문 내 기본 케이스 체커는 switch 문에 기본 케이스가 없는 경우를 검출합니다.",
  "desc.MISSING.DESIGNATED_INIT": "지정 초기화 리스트에서 일부 항목 누락 체커는 지정 초기화 리스트에서 초기값이 주어지지 않은 일부 요소가 존재하는 경우를 검출합니다.",
  "desc.MISSING.FUNCTION_DECLARATION": "선언 없는 함수 호출 체커는 함께 컴파일 되는 모든 소스 안에서 선언을 찾을 수 없는 이름의 함수가 호출된 경우를 검출합니다.",
  "desc.MISSING.INDEX_HINT.SQL": "SELECT, INSERT 또는 DELETE 쿼리문에서 인덱스 HINT를 사용하지 않은 경우를 검출합니다. 인덱스 HINT를 포함시키는 것을 권장합니다.",
  "desc.MISSING.ORDER_BY.SELECT.ABAP": "SELECT 구문에서 누락된 ORDER BY 절 체커는 ORDER BY 절 없이 사용된 SELECT 구문을 검출합니다.",
  "desc.MISSING.SORT_KEY.ABAP": "누락된 SORT 키 체커는 정렬에 사용될 필드를 명시하지 않는 SORT 구문을 검출합니다.",
  "desc.MISSING.TABLE_ALIAS.JOIN.SQL": "테이블을 JOIN하는 경우 FROM 절에 지정된 테이블에 ALIAS가 명기되어 있지 않는 경우를 검출합니다. 테이블 ALIAS를 명기하는 것을 권장합니다.",
  "desc.MISSING.WHERE.DELETE.ABAP": "DELETE 구문에서 누락된 WHERE 절 체커는 WHERE 절이 없는 DELETE 구문을 검출합니다.",
  "desc.MISSING.WHERE.DELETE_UPDATE.SQL": "DELETE 또는 UPDATE 구문에서 누락된 WHERE 절 체커는 WHERE 절을 포함하지 않은 DELETE 또는 UPDATE 구문을 검출합니다.",
  "desc.MISSING.WHERE.SELECT.ABAP": "SELECT 구문에서 누락된 WHERE 절 체커는 WHERE 절 없이 사용된 SELECT 구문을 검출합니다.",
  "desc.MISSING.WHERE.SELECT.SQL": "SELECT 구문에서 누락된 WHERE 절 체커는 WHERE 절이 존재하지 않는 SELECT 구문을 검출합니다.",
  "desc.MISSING.WHERE.UPDATE.ABAP": "UPDATE 구문에서 누락된 WHERE 절 체커는 WHERE 절이 누락된 UPDATE 구문을 검출합니다.",
  "desc.MISSING_ATTRIBUTE.SERIALIZABLE.CSHARP": "누락된 Serializable 속성 체커는 ISerializable 인터페이스를 구현하지만 Serializable 속성을 선언하지 않은 클래스를 검출합니다.",
  "desc.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.CSHARP": "중요 기능에 대한 인증 제어 누락 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.",
  "desc.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN": "중요 기능에 대한 인증 제어 누락 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.",
  "desc.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PHP": "중요 기능에 대한 인증 제어 누락 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.",
  "desc.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PYTHON": "보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 부적절하게 구현한 경우 발생할 수 있는 보안약점입니다. 여기에는 적절한 인증 없는 중요 기능 허용, 부적절한 인가 등이 포함됩니다.",
  "desc.MISSING_AUTHENTICATION_CONTROL": "인증 제어 누락 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.",
  "desc.MISSING_AUTHENTICATION_CONTROL.OBJC": "인증 제어 누락 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.",
  "desc.MISSING_AUTHENTICATION_CONTROL.SWIFT": "인증 제어 누락 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.",
  "desc.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION": "중요 기능에 대한 인증 제어 누락 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.",
  "desc.MISSING_BLANK_LINE": "빈 줄 누락 체커는 빈 줄을 집어넣도록 약속되어 있는 곳에 적절한 빈 줄이 들어가있지 않은 곳을 검출합니다.",
  "desc.MISSING_BLANK_LINE.IMPORT": "import 구문 사이 줄 바꿈 규칙 위반 체커는 서로 다른 성격의 import 구문 사이에 빈 줄이 없는 경우를 검출합니다.",
  "desc.MISSING_BLANK_LINE.SECTION": "메소드 안에서 구역 별 빈 줄 규칙 위반 체커는 메소드 안에서 섹션 별로 적절한 빈 줄이 삽입되지 않은 경우를 검출합니다.",
  "desc.MISSING_BLANK_LINE_BEFORE_COMMENT": "주석 시작 전 누락된 빈 줄 체커는 주석이 시작하기 전 소스 코드와 주석 사이에 빈 줄이 없는 경우를 검출합니다.",
  "desc.MISSING_BLANK_LINE_BEFORE_COMMENT.CSHARP": "주석은 코드의 끝이 아니라 별도의 줄을 할당하여 작성해야 합니다.",
  "desc.MISSING_BLOCK_IN_CONTROL_STATEMENT": "복합 구문에서 중괄호 누락 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.",
  "desc.MISSING_BRACE_IN_IF_STATEMENT": "if 구문 중괄호 누락 체커는 if 구문의 각 분기별 코드를 중괄호 없이 작성한 경우를 검출합니다.",
  "desc.MISSING_BREAK_IN_CASE": "case 문에서 break 구문 누락 체커는 break 구문으로 끝나지 않는 case 문을 검출합니다.",
  "desc.MISSING_BREAK_IN_CASE.MISRA2008": "case 문에서 break 구문 누락 체커는 break 구문으로 끝나지 않는 case 문을 검출합니다.",
  "desc.MISSING_BREAK_OR_THROW_IN_CASE": "case문 종료 누락 체커는 switch-case 문에서 내용이 있는 case문이 throw 또는 break 문으로 종료되지 않은 경우를 검출합니다.",
  "desc.MISSING_CATCH_BLOCKING_IO_ERROR.PYTHON": "BlockingIOError 예외 처리 누락 체커는 BlockingIOError 예외 처리 없이 해당 예외를 발생시킬 수 있는 API를 호출하는 경우를 검출합니다.",
  "desc.MISSING_CATCH_CONNECTION_ERROR.PYTHON": "ConnectionError 예외 처리 누락 체커는 ConnectionError 예외 처리 없이 해당 예외를 발생시킬 수 있는 API를 호출하는 경우를 검출합니다.",
  "desc.MISSING_CATCH_FILE_EXISTS_ERROR.PYTHON": "FileExistError 예외 처리 누락 체커는 FileExistError 예외 처리 없이 해당 예외를 발생시킬 수 있는 API를 호출하는 경우를 검출합니다.",
  "desc.MISSING_CAUSE_EXCEPTION_IN_THROW": "원인 Exception 전달 누락 금지 체커는 catch블럭 내에서 throw시 원인 Exception을 파라미터로 전달하지 않은 경우 검출합니다.",
  "desc.MISSING_CHECK_OF_INPUT": "입력 검사 누락 체커는 입력으로 지정된 변수를 if 등의 조건문으로 검사를 수행하지 않고 사용하는 경우를 검출합니다.",
  "desc.MISSING_CLASS_IN_SOURCE_FILE": "public 클래스 혹은 인터페이스 선언이 없는 파일 체커는 소스 파일내에 올바른 이름의 public 클래스 혹은 인터페이스가 존재하지 않는 경우를 검출합니다.",
  "desc.MISSING_COMPOUND_STATEMENT": "복합 구문에서 중괄호 누락 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.",
  "desc.MISSING_CUSTOM_ERROR_PAGE.WEB.CONFIG": "기본 오류 페이지 사용 체커는 오류가 발생했을 때 사용하는 오류 페이지가 기본 오류 페이지인 경우를 검출합니다.",
  "desc.MISSING_DEBUG_CHECK": "디버깅 모드 확인 누락 체커는 디버깅 함수를 호출하기 전에 디버깅 모드인지를 확인하지 않는 코드를 검출합니다.",
  "desc.MISSING_DEFAULT_IN_SWITCH": "Switch 문에서 Default 미사용 체커는 Switch 문에서 Default를 사용하지 않는 코드를 검출합니다.",
  "desc.MISSING_EXPLICIT_TYPE": "함수 선언 시 명시적으로 반환 타입을 적어야 합니다.",
  "desc.MISSING_FILTER_DEFINITION.CONFIG": "존재하지 않는 필터 사용 체커는 존재하지 않는 필터를 가리키는 필터 매핑을 검출합니다.",
  "desc.MISSING_FINALLY_IN_TRY_CATCH": "finally 블록 누락 체커는 try 구문에 finally 블록이 없는 경우를 검출합니다.",
  "desc.MISSING_FUNCTION_DEFINITION_PARAMETER": "함수 선언, 정의에 인자가 없을 경우 void 를 명시해야 합니다.",
  "desc.MISSING_FUNCTION_RETURN_TYPE": "함수의 반환 타입 정의 누락 체커는 함수의 반환 타입을 정의하지 않는 코드를 검출합니다.",
  "desc.MISSING_INPUT_VALIDATION": "입력 검증이 필요합니다.",
  "desc.MISSING_INTEGRITY_CHECK": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.",
  "desc.MISSING_LOGIN_CONTROL": "로그인 입력 횟수 제한 누락 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.",
  "desc.MISSING_LOGIN_CONTROL.CSHARP": "로그인 입력 횟수 제한 누락 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.",
  "desc.MISSING_LOGIN_CONTROL.KOTLIN": "로그인 입력 횟수 제한 누락 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.",
  "desc.MISSING_LOGIN_CONTROL.OBJC": "로그인 입력 횟수 제한 누락 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.",
  "desc.MISSING_LOGIN_CONTROL.PHP": "로그인 입력 횟수 제한 누락 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.",
  "desc.MISSING_LOGIN_CONTROL.PYTHON": "로그인 입력 횟수 제한 누락 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 경우를 검출합니다.",
  "desc.MISSING_LOGIN_CONTROL.SWIFT": "로그인 입력 횟수 제한 누락 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.",
  "desc.MISSING_MESSAGE_ID_WHEN_GENERATING_MAC": "MAC 생성 시 누락된 메시지 식별 값 체커는 MAC을 생성할 때 메시지 식별 값을 포함시키지 않아 공격자가 인증 값을 재사용할 수 있는 경우를 검출합니다.",
  "desc.MISSING_NORMALIZATION_BEFORE_VALIDATION": "유효성 검사 전 정규화 누락 체커는 경로에 대해 유효성을 검증하기 전에 파일 이름을 정규화하지 않은 코드를 검출합니다.",
  "desc.MISSING_OPERATION_MESSAGE.SWIFT": "지문 요청 사유 메시지 누락 체커는 사용자에게 지문 입력을 요청할 때 그 이유를 명시하지 않는 경우를 검출합니다.",
  "desc.MISSING_PACKAGE_DECLARATION": "패키지 선언 누락 체커는 소스 파일 맨 위에 패키지 선언이 없는 경우를 검출합니다.",
  "desc.MISSING_PARENTHESIS_IN_EXPRESSION": "괄호 없이 복잡한 식 체커는 연산이 지정한 크기보다 클 때 괄호를 통해 우선순위를 정해주지 않은 경우를 검출합니다.",
  "desc.MISSING_PARENTHESIS_IN_EXPRESSION.CSHARP": "표현식 안에서 명확한 절을 만들기 위해 괄호를 사용해야 합니다.",
  "desc.MISSING_PASSWORD_RECOVERY_CONTROL": "비밀번호 복구 시도 횟수 제한 누락 체커는 비밀번호 복구 시도 횟수를 제한하기 위한 로직을 구현하지 않은 경우를 검출합니다.",
  "desc.MISSING_REQUIRE_CRYPTO_STEP": "암호화에 필요한 함수 호출 누락 체커는 암호화에 필요한 함수들의 호출이 누락된 경우를 검출합니다.",
  "desc.MISSING_RETURN": "반환 구문 누락 체커는 반환 타입이 void가 아닌 함수 중 반환 구문이 포함되지 않는 함수를 검출합니다.",
  "desc.MISSING_RETURN.FUNCTION.VBS": "반환 구문 누락 체커는 함수 안에 반환 구문이 없는 경우를 검출합니다.",
  "desc.MISSING_SERIAL_VERSION_UID": "java.io.Serializable 을 상속 받은 클래스 내에서 serialVersionUID 미선언 체커는 java.io.Serializable 을 상속 받은 클래스 내에서 serialVersionUID 에 값을 지정하지 않으면 검출합니다.",
  "desc.MISSING_SYNCHRONIZED_FOR_OVERRIDING": "Synchronized 메소드를 오버라이딩 할 때 synchronized 제어자를 사용하지 않을 경우를 검출합니다.",
  "desc.MISSING_TABLE_OWNER.XSQL.CONFIG": "소유자가 누락된 테이블 선언 금지 체커는 SQL 구문 중 FORM 절에서 소유자가 없는 테이블 명을 작성한 경우를 검출합니다.",
  "desc.MISSING_VALIDATION_OF_ARRAY_INDEX": "배열의 인덱스로 사용된 매개변수의 유효성 검증 누락 체커는 매개변수를 배열의 인덱스로 사용할 때 해당 인덱스에 대한 유효성을 검증하지 않은 코드를 검출합니다.",
  "desc.MISSING_WRAPPER_ON_VARIABLE": "함수 호출 시 명시된 함수가 아닌 인자 사용 체커는 옵션에 지정된 함수에서 특정 인자 위치에 지정된 자료형 함수가 아닌 값을 인자로 사용하는 코드를 검출합니다.",
  "desc.MISSING_XML_VALIDATION_CSHARP": "XML 검증 누락 체커는 외부로부터 생성된 XML 문서를 검증 없이 사용하는 경우를 검출합니다.",
  "desc.MISUSE_OF_TRY_CATCH": "잘못 사용한 예외 던짐 체커는 조건문 내에서 사용한 throw 구문을 검출합니다.",
  "desc.MIXED_REQUIREDNESS_MODEL.VBNET": "해당 클래스는 필수 속성과 비필수 속성을 모두 포함합니다.",
  "desc.MIXED_TYPE_COMPARISON": "서로 다른 타입끼리 비교하지 마십시오.",
  "desc.MODIFICATION_CONTROL_VAR_IN_LOOP": "for 구문의 본문에서 루프 카운터 변경 체커는 for 구문의 증감부가 아닌 본문에서 루프 카운터를 변경하는 수식을 검출합니다.",
  "desc.MULTIPLE_ALLOC_IN_SINGLE_STMT": "한 문장에 두 번 이상 메모리 할당을 하지 말아야 합니다.",
  "desc.MULTIPLE_BINDS_TO_SAME_PORT": "동일 포트에 다수의 서비스 사용 체커는 여러 개의 서비스에서 하나의 포트를 사용하는 코드를 검출합니다.",
  "desc.MULTIPLE_BINDS_TO_THE_SAME_PORT": "동일 포트에 여러 개의 바인딩 체커는 하나의 포트를 여러 개의 서비스에 사용하는 경우를 검출합니다.",
  "desc.MULTIPLE_DECLARATION_IN_NAMESPACE": "같은 네임스페이스에서의 함수 오버로딩 체커는 동일한 네임스페이스 내에서 오버로딩한 함수 선언을 검출합니다.",
  "desc.MULTIPLE_ENV_WITH_SAME_NAME": "대소문자 구분 없이 동일한 환경 변수 이름 체커는 대소문자 구분이 없으면 동일한 이름으로 식별되는 환경 변수를 사용하는 수식을 검출합니다.",
  "desc.MULTIPLE_FILE_ATTRIBUTES": "불확실한 파일 식별 체커는 한가지 방법으로만 파일을 식별하는 경우를 검출합니다.",
  "desc.MULTIPLE_SIGNAL_TO_SAME_HANDLER": "하나의 시그널 핸들러에 여러 시그널 연결 체커는 하나의 시그널 핸들러에 여러 시그널이 연결된 경우를 검출합니다.",
  "desc.MUST_CALL.BATCH_EXIT.PF": "배치 서비스 정상/에러 종료시 Commit/Rollback 을 처리하지 않았습니다.",
  "desc.MUST_CALL_BASE_CONSTRUCTOR": "부모 클래스의 생성자 호출 누락 체커는 부모 클래스의 생성자를 호출하지 않은 자식 클래스의 생성자를 검출합니다.",
  "desc.MUST_CATCH_ALL_EXCEPTION_IN_DTOR": "소멸자에서 처리 불가능한 예외 발생 체커는 소멸자 내부에서 처리할 수 없는 예외가 발생하는 수식을 검출합니다.",
  "desc.MUST_CATCH_ALL_EXCEPTION_IN_MAIN": "메인 함수에서 처리 불가능한 예외 발생 체커는 메인 함수 내부에서 처리할 수 없는 예외가 발생하는 수식을 검출합니다.",
  "desc.MUST_HAVE_AN_IDENTIFIER": "식별자를 가지지 않은 매개 변수 체커는 식별자를 가지지 않은 매개 변수가 있는 함수 프로토타입 선언을 검출합니다.",
  "desc.MUST_NOT_BE_MUTATE_SRC_OBJ": "복사 연산자 내에서 원본 객체 수정 체커는 복사 생성자 혹은 복사 할당 연산자 내에서 인자로 받은 원본 객체의 멤버 변수 값이 변경되는 경우를 검출합니다.",
  "desc.MUTABLE_COMPARISON": "compareTo 내에서 변할 수 있는 필드 사용 체커는 Comparable.compareTo() 메소드를 오버라이딩 정의할 때 변경될 수 있는 필드들이 사용된 경우를 검출합니다.",
  "desc.MUTABLE_EQUALS": "equals 내에서 변할 수 있는 필드 사용 체커는 객체를 비교하는 메소드를 실행할 때 변경 가능한 필드를 사용하는 코드를 검출합니다.",
  "desc.MUTABLE_HASHCODE": "hashCode 내에서 변할 수 있는 필드 사용 체커는 Object.hashCode() 메소드를 오버라이딩 정의할 때 변경될 수 있는 필드들이 사용된 경우를 검출합니다.",
  "desc.MUTUALLY_VISIBLE_ID_SHOULD_BE_UNIQUE": "앞부분이 동일한 식별자 체커는 범위를 공유하는 식별자가 일정한 수의 앞글자만을 고려했을 때 유일하게 정의되지 않은 경우를 검출합니다.",
  "desc.MallocOnClassError": "string을 포함하는 클래스의 인스턴스를 malloc()으로 할당합니다.",
  "desc.MallocOnClassWarning": "생성자가 있는 클래스의 인스턴스를 malloc()으로 할당합니다.",
  "desc.MemsetClass": "생성자 또는 소멸자를 포함하는 클래스에 memfunc을 사용했습니다.",
  "desc.MemsetClassFloat": "실수형을 포함하는 클래스에 memset()을 사용했습니다.",
  "desc.MemsetClassReference": "레퍼런스를 포함하는 클래스에 memfunc을 사용했습니다.",
  "desc.MemsetFloat": "memset의 두 번째 파라미터가 실수형입니다. 실수 자료형의 표현은 구현에 따라 다릅니다.",
  "desc.MemsetValueOutOfRange": "memset의 두번 째 인자가 'unsigned char'형과 호환되지 않습니다",
  "desc.MemsetZeroBytes": "0바이트를 채우기 위해 memset 호출됩니다.",
  "desc.MethodArgumentCouldBeFinal": "final이 아닌 메소드 인자가 할당 되지 않을 경우 이를 검출합니다.",
  "desc.MethodNamingConventions": "메소드 이름 표준 위반을 검출합니다.",
  "desc.MethodReturnsInternalArray": "클래스 내부 배열의 직접 반환을 검출합니다.",
  "desc.MethodWithSameNameAsEnclosingClass": "생성자가 아닌 클래스 이름과 같은 메소드를 검출합니다.",
  "desc.MisleadingVariableName": "필드가 아닌 변수 이름이 'm_'로 시작하는 경우 필드 변수와의 구분에 있으므로 혼란을 일으킬 수 있기 때문에 이를 검출합니다.",
  "desc.MismatchingBitAnd": "비트마스크를 잘못 사용했습니다. 결과는 항상 0입니다.",
  "desc.MisplacedNullCheck": "컬렉션 객체에 .size()==0 혹은 .size()!=0 사용을 검출합니다.",
  "desc.MissingBreakInSwitch": "Switch 블록 내에 break 구문이 없고, 반환 구문과 throw 구문의 개수가 케이스 레이블 개수보다 작은 경우 이를 검출합니다.",
  "desc.MissingSerialVersionUID": "Serializable 혹은 java.io.Serializable 중 하나를 상속한 non-abstract 클래스내 serialVersionUID 선언구가 없는 클래스를 검출합니다.",
  "desc.MissingStaticMethodInNonInstantiatableClass": "클래스가 private한 생성자를 가지고 있으며 이외에 어떠한 정적 메소드나 필드를 가지지 않는 경우, 해당 클래스는 사용될 수 없으므로 이를 검출합니다.",
  "desc.ModuloAlwaysTrueFalse": "모듈러 연산을 이용한 비교가 항상 정해져있습니다.",
  "desc.MoreThanOneLogger": "단일 클래스 내 로거로 선언한 객체가 2개 이상인 경우 이를 검출합니다.",
  "desc.MultiCondition": "else if문이 항상 거짓입니다. 이전 if 조건과 같습니다.",
  "desc.NAMESPACE_IN_HEADER_SHOULD_BE_NAMED": "헤더 파일에 있는 이름 없는 네임스페이스 체커는 소스 파일이 아닌 헤더 파일에 위치한 이름 없는 네임스페이스를 검출합니다.",
  "desc.NAMES_WITH_WIDER_SCOPE_SHOULD_BE_LONGER": "하위 범위 변수 이름에 상위 범위 변수 이름 포함 체커는 하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하는 경우를 검출합니다.",
  "desc.NAME_IS_USED_IN_STANDARD_LIBRARY": "표준 라이브러리 식별자 재사용 체커는 표준 라이브러리에서 사용되는 식별자와 동일한 객체명이나 함수명을 사용하는 경우를 검출합니다.",
  "desc.NAME_SHOULD_NOT_START_WITH_UNDERSCORE": "밑줄로 시작하는 식별자 체커는 식별자 이름이 밑줄(_)로 시작하는 경우를 검출합니다.",
  "desc.NAMING.ENUM.INCORRECT_PREFIX.CSHARP": "열거형에 이름이 열거형의 형식 이름으로 시작하는 멤버가 들어 있습니다.",
  "desc.NAMING.IDENTIFIER.INCORRECT_PREFIX.CSHARP": "외부에 노출되는 인터페이스의 이름이 대문자 \"I\"로 시작하지 않습니다. 또는 외부에 노출되는 형식 또는 메소드의 제네릭 형식 매개 변수 이름이 대문자 \"T\"로 시작하지 않습니다.",
  "desc.NAMING.IDENTIFIERS.CASEINSENSITIVE_SAME.CSHARP": "소문자로 변환했을 때 두 형식, 멤버, 매개 변수 또는 정규화된 네임스페이스의 이름이 서로 같습니다.",
  "desc.NAMING.LINQ.NOT_USED_PASCAL_CASING.CSHARP": "LINQ문 안에서 익명 타입의 프로퍼티 이름에 별칭을 부여할 때 파스칼 형식을 사용해야 합니다.",
  "desc.NAMING_CONVENTION.ENUM": "명명 규칙을 위반했을 경우 검출합니다. 모두 소문자로 구성하고 _e로 끝냅니다. 단어들로 구성될 경우 단어들 사이를 _로 구분합니다. Enum의 멤버는 모두 대문자로 구성하고, 단어들로 구성될 경우 단어들 사이를 _로 구분합니다.",
  "desc.NAMING_CONVENTION.FUNCTION": "함수 이름에 대한 명명 규칙을 위반했을 경우 검출합니다.모두 소문자로 구성하고, 단어들로 구성될 경우 단어들 사이를 _로 구분해야 합니다.",
  "desc.NAMING_CONVENTION.HEADER": "소스 파일에 include된 헤더 파일의 명명 규칙 검사 입니다.",
  "desc.NAMING_CONVENTION.STRUCTURE": "명명 규칙을 위반했을 경우 검출합니다. 모두 소문자로 구성하고 _s로 끝냅니다. 단어들로 구성될 경우 단어들 사이를 _로 구분합니다.",
  "desc.NAMING_CONVENTION.TYPE": "타입 명명 규칙 위반 체커는 타입을 선언할 때 명명 규칙을 위반한 경우를 검출합니다.",
  "desc.NAMING_CONVENTION.UNION": "명명 규칙을 위반했을 경우 검출합니다. 모두 소문자로 구성하고 _u로 끝냅니다. 단어들로 구성될 경우 단어들 사이를 _로 구분합니다.",
  "desc.NAMING_CONVENTION.VARIABLE": "변수 이름에 대한 명명 규칙을 위반했을 경우 검출합니다. 모두 소문자로 구성하고, 단어들로 구성될 경우 단어들 사이를 _로 구분해야 합니다. 전역변수의 경우 g_로 시작해야 합니다.",
  "desc.NARROW_CAST_COMPLEX_FLOAT_EXPR": "실수형을 더 큰 타입으로 캐스팅 체커는 실수형 복합 수식절이 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.",
  "desc.NARROW_CAST_COMPLEX_INTEGRAL_EXPR": "정수형을 더 큰 타입으로 캐스팅 체커는 정수형 복합 수식절이 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.",
  "desc.NEGATIVE_FILE_DESCRIPTOR": "특정 함수에 금지된 음수 인자 전달 체커는 파일/소켓 관련 함수의 인자에 음수를 전달하는 코드를 검출합니다.",
  "desc.NEGATIVE_MOD_OPERATION": "음수로 모듈러 연산 체커는 모듈러 연산자의 피연산자로 음수를 사용하는 수식을 검출합니다.",
  "desc.NEGATIVE_NUMBER_PROPERTY.JS": "잘못된 음수 설정값 체커는 음수로 설정되지 않아야 하는 설정값이 음수로 설정된 경우를 검출합니다.",
  "desc.NESTED_SELECT.ABAP": "중첩된 SELECT 구문 사용 체커는 SELECT 구문 안에서 사용된 SELECT 구문을 검출합니다.",
  "desc.NEVER_CREATE_CONTAINERS_OF_AUTO_PTRS": "auto_ptr의 컨테이너 생성 체커는 컨테이너에 auto_ptr 타입을 담는 변수 선언을 검출합니다.",
  "desc.NEVER_QUALIFY_REFERENCE_TYPE": "const 나 volatile 을 레퍼런스 형으로 만들면 안됩니다.",
  "desc.NEVER_USE_RAW_TYPE": "타입 매개 변수 없이 제네릭 타입 사용 체커는 제네릭으로 정의된 컬렉션 클래스 타입을 타입 매개 변수 없이 사용하는 경우를 검출합니다.",
  "desc.NEW_DELETE_INSTEAD_OF_MALLOC_FREE": "malloc과 free대신 new와 delete를 사용해야 합니다.",
  "desc.NONEFFECTIVE_FUNCTION_CALL": "무의미한 함수 호출 체커는 함수를 호출했으나 프로그램 흐름에 영향을 주지 않는 코드를 검출합니다.",
  "desc.NONSERIALIZABLE_OBJECT_STORED_IN_SESSION": "직렬화할 수 없는 객체의 세션 저장 체커는 직렬화할 수 없는 객체를 세션에 저장하는 코드를 검출합니다.",
  "desc.NONSYNCHRONIZED_METHOD_OVERRIDES_SYNCHRONIZED_METHOD": "오버라이딩 중 동기화 누락 체커는 synchronized 한정자를 가진 메소드를 오버라이딩할 때 synchonized로 선언하지 않는 경우를 검출합니다.",
  "desc.NON_CONSTANT_PTR_TO_FUNCTION": "const 로 선언하지 않은 함수 포인터 체커는 함수 포인터 선언 시 const를 붙이지 않은 경우를 검출합니다.",
  "desc.NON_DYNAMIC_CAST_ON_VIRTUAL_BASE_CLASS_PTR": "가상 부모 클래스의 잘못된 캐스팅 체커는 가상으로 상속한 부모 클래스를 잘못된 방법으로 캐스팅한 수식을 검출합니다.",
  "desc.NON_NULL_PARAMETER.OBJC": "널 인자 전달 체커는 매개 변수로 널을 받아선 안되는 것으로 알려진 함수에 인자로 널 포인터가 전달되는 경우를 검출합니다.",
  "desc.NON_PRIVATE_FIELD_IN_ACTION_CLASS": "Apache Struts 2에서 ActionSupport 클래스는 액션 클래스의 기본 클래스로, 폼 데이터를 캡슐화하고 유효성을 검사하는 데 사용됩니다. ActionSupport 클래스의 필드는 일반적으로 private으로 선언하여 데이터의 무결성과 캡슐화를 유지해야 합니다. public 필드를 사용하면 데이터 유출 및 무결성 문제가 발생할 수 있습니다.",
  "desc.NON_SERIALIZABLE_OBJECT_IN_SESSION.VBNET": "HttpSessionState 속성으로 비직렬화 객체 저장 체커는 세션에 추가되는 [Serialization] 속성을 포함하지 않는 객체를 검출합니다.",
  "desc.NON_THREAD_SAFE_SINGLETON": "싱글톤 패턴은 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴입니다. 그러나 다중 스레드 환경에서 적절한 동기화 없이 싱글톤을 구현하면 여러 스레드가 동시에 인스턴스를 생성하려고 시도할 수 있어 싱글턴을 보장할 수 없습니다.",
  "desc.NORETURN_DECLARED": "noreturn 으로 선언한 함수에서 반환 체커는 함수의 속성을 [[noreturn]] 으로 선언한 함수에서 반환 구문이 있는 경우를 검출합니다.",
  "desc.NORMALIZE_STRINGS_BEFORE_VALIDATING_THEM": "문자열을 검증하기 전에 normalize 해야합니다.",
  "desc.NOT_BE_ASSIGNED_TO_OVERLAPPING_OBJECTS": "메모리 영역이 겹치는 객체 간의 대입 연산 체커는 수식을 평가하면서 서로 메모리 영역이 겹치는 부분 간에 대입이 발생하는 수식을 검출합니다.",
  "desc.NOT_EXIST.EXTRA_CODES.PF": "setErrLog() 이후에 로직이 있어야 합니다.",
  "desc.NOT_LAST_DEFAULT_CASE": "default 절로 끝나지 않은 switch 구문 체커는 switch 구문의 마지막 절이 default 절이 아닌 경우를 검출합니다.",
  "desc.NOT_LAST_DEFAULT_CASE.MISRA2012": "default 절로 시작하거나 끝나지 않은 switch 구문 체커는 switch 구문의 시작 혹은 마지막 절이 default 절이 아닌 경우를 검출합니다.",
  "desc.NO_BITWISE_SIGNED": "비트 연산자에서 signed 정수형 사용 체커는 signed 정수형 객체를 비트 연산자의 피연산자로 사용하는 수식을 검출합니다.",
  "desc.NO_BRACKETS_TO_SWITCH_BODY": "switch 구문에서 중괄호 누락 체커는 switch 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.",
  "desc.NO_BRACKETS_TO_THEN_ELSE": "if 구문에서 중괄호 누락 체커는 if-elseif-else 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.",
  "desc.NO_CASE_IN_NESTED_BLOCK": "switch 구문 외에서 case 구문 사용 체커는 switch 구문이 아닌 다른 복합 구문에서 case 구문이나 같은 유형인 default 구문을 사용한 경우를 검출합니다.",
  "desc.NO_CONTINUE_STMT": "continue 구문 사용 체커는 소스 코드에서 continue 구문을 사용한 경우를 검출합니다.",
  "desc.NO_EXEC_STMT_BEFORE_FIRST_SWITCH_CASE": "switch 구문 안의 실행 불가능한 코드 체커는 switch 구문에서 첫 번째 케이스 레이블보다 위에 작성된 실행 가능한 구문을 검출합니다.",
  "desc.NO_EXPLICIT_TYPE_CASTING": "대입 시 암시적 캐스팅 사용 체커는 값을 대입할 경우 서로 타입이 다르고 암시적인 캐스팅이 발생하는 수식을 검출합니다.",
  "desc.NO_FUNCTION_DEFINITION_IN_HEADER": "헤더 파일에서 함수 정의 금지 체커는 헤더 파일에서 함수를 정의한 경우를 검출합니다.",
  "desc.NO_GLOBAL_VARIABLES_BETWEEN_FUNCTIONS": "함수 정의 사이에 전역 변수 선언 체커는 함수와 함수 정의 사이에 있는 전역 변수 선언을 검출합니다.",
  "desc.NO_INC_EXPR_IN_FOR_LOOP": "for 구문에서 루프 카운터 증감 연산 누락 체커는 증감부에서 루프 카운터에 대한 증감 연산이 누락된 for 구문을 검출합니다.",
  "desc.NO_MEMBER_FUNCTION_IN_STRUCT": "구조체를 클래스처럼 사용 체커는 구조체에 멤버 함수를 포함시키거나 멤버에 접근 제어자를 사용하는 경우를 검출합니다.",
  "desc.NO_MORE_THAN_ONE_BREAK": "반복문 내에서 break 구문 중복 사용 체커는 break 구문을 두 번 이상 사용한 반복문을 검출합니다.",
  "desc.NO_MORE_THAN_ONE_SHARP_OPERATOR": "# 및 ## 연산으로 중복 매크로 정의 체커는 # 연산이나 ## 연산을 두 번 이상 사용하여 하나의 매크로를 정의하는 코드를 검출합니다.",
  "desc.NO_PREPROCESSING_DIRECTIVE_IN_MACRO": "매크로 함수에서 다른 전처리 구문 사용 체커는 전처리 구문을 매크로 함수의 인자로 사용하는 경우를 검출합니다.",
  "desc.NO_PUBLIC_CONSTRUCTOR_FOR_ABSTRACT_CLASS": "추상 클래스 생성자를 public으로 선언 체커는 public 접근 권한을 가진 추상 클래스의 생성자를 검출합니다.",
  "desc.NO_REAL_DECLARATION_FOR_VARIABLE": "실체 없는 extern 선언 체커는 다른 소스 파일 어디에서도 선언을 찾을 수 없는 변수가 extern으로 선언된 경우를 검출합니다.",
  "desc.NO_SEMICOLON_ON_SAME_STMT": "잘못된 세미콜론 사용 체커는 if, for, while 구문과 같은 줄에 세미콜론이 위치하는 수식을 검출합니다.",
  "desc.NO_SHIFT_SIGNED": "시프트 연산자에서 signed 정수형 사용 체커는 signed 정수형 객체를 시프트 연산자의 피연산자로 사용하는 수식을 검출합니다.",
  "desc.NO_SIDE_EFFECT_STMT": "부수 효과가 없는 구문 체커는 구문 내에 부수 효과가 전혀 없는 구문을 검출합니다.",
  "desc.NO_TEST_EXPR_IN_FOR_LOOP": "for 구문에서 비교 연산 누락 체커는 평가부에서 루프 카운터에 대한 비교 연산이 누락된 for 구문을 검출합니다.",
  "desc.NPathComplexity": "특정 메소드의 NPath complexity는 메소드 내의 비순환적 실행 경로 개수를 의미합니다.",
  "desc.NULL_ARGUMENT.EQUALS.CSHARP": "Equals 메소드를 통한 널 검사 체커는 Equals() 메소드를 사용하여 개체를 널과 비교하는 경우를 검출합니다. 해당 결과는 항상 거짓이 됩니다.",
  "desc.NULL_DEREF": "이 체커는 포인터 값이 널임을 고려하지 않고 널 포인터가 가리키는 값을 읽는 코드를 검출합니다.",
  "desc.NULL_DEREF.CHECK_AFTER_DEREF": "역참조 후 널 확인 체커는 널 확인 없이 역참조한 값을 나중에 널과 비교하는 코드를 검출합니다.",
  "desc.NULL_DEREF.HORUS": "널 포인터 역참조가 발생했습니다.",
  "desc.NULL_DEREF.MALLOC_FAILED": "할당 실패로 인한 널 역참조 체커는 메모리 할당에 실패했을 때 널을 반환하는 함수로부터 반환된 포인터에 대해 널 확인을 하지 않고 역참조하는 코드를 검출합니다.",
  "desc.NULL_DEREF.MISSING_CHECK": "널 미확인 역참조 체커는 함수의 인자로 전달되거나 다른 함수에서 반환된 포인터를 이전에는 널 확인 후 사용했지만 이번에는 널 확인 없이 사용하는 코드를 검출합니다.",
  "desc.NULL_DEREF.OBJC": "널 값 역참조 체커는 널 상수나 널이 할당된 변수를 역참조하는 경우를 검출합니다.",
  "desc.NULL_DEREFERENCE.PHP": "널 값 역참조 체커는 널이 할당된 변수를 널 확인 없이 역참조하는 경우를 검출합니다.",
  "desc.NULL_DEREFERENCE.PYTHON": "Null Pointer 역참조는 \"객체가 Null이 될 수 없다.\"라고 하는 가정을 위반했을 때 발생합니다. 공격자가 의도적으로 Null Pointer 역참조를 발생시키는 경우, Null Pointer Exception을 발생시켜 보안 논리를 우회하거나 디버깅 정보를 확인할 수 있습니다.",
  "desc.NULL_RETURN": "널 반환 값 역참조 체커는 반환된 널 값을 확인 없이 역참조하는 경우를 검출합니다.",
  "desc.NULL_RETURN_CSHARP": "널 반환 값 역참조 체커는 반환된 널 값을 확인 없이 역참조하는 경우를 검출합니다.",
  "desc.NULL_RETURN_STD": "표준 라이브러리 널 반환 값 역참조 체커는 Java 표준 라이브러리 메소드중에서 널을 반환할 가능성이 있는 메소드의 반환 값을 확인 없이 역참조하는 경우를 검출합니다.",
  "desc.NULL_RETURN_STD_CSHARP": "표준 라이브러리 널 반환 값 역참조 체커는 C# 표준 라이브러리 메소드 중에서 널을 반환할 가능성이 있는 메소드의 반환 값을 확인 없이 역참조하는 경우를 검출합니다.",
  "desc.NULL_RETURN_USR": "사용자가 작성한 library들 중에 널을 반환할 가능성이 있는 메소드들로부터 값을 특정 변수에 할당한 뒤, 이 변수의 널 확인을 하지 않고 바로 역참조하는 경우에 발생합니다.",
  "desc.NULL_RETURN_USR_CSHARP": "사용자가 작성한 library들 중에 널을 반환할 가능성이 있는 메소드들로부터 값을 특정 변수에 할당한 뒤, 이 변수의 널 확인을 하지 않고 바로 역참조하는 경우에 발생합니다.",
  "desc.NULL_SHALL_BE_POINTER_CONSTANT": "포인터 변수에 정수형 널 대입 체커는 포인터 타입 변수에 정수형 0을 대입한 경우를 검출합니다.",
  "desc.NULL_SHALL_NOT_BE_INTERGER_VALUE": "정수값으로 사용한 널 포인터 체커는 일반 정수값을 사용해야 할 곳에서 널 포인터를 사용한 수식을 검출합니다.",
  "desc.NULL_STATEMENT_FOUND": "빈 문장 사용 체커는 특정한 방식의 사용만 예외적으로 허용되는 빈 문장이 허용되지 않는 방식으로 사용된 경우를 검출합니다.",
  "desc.NcssConstructorCount": "NCSS는 주석을 무시하며 실제 구문의 개수만을 센다. 또한 여러 줄로 분리된 하나의 구문은 한 개로 간주합니다.",
  "desc.NcssMethodCount": "NCSS는 주석을 무시하며 실제 구문의 개수만을 센다.",
  "desc.NcssTypeCount": "NCSS는 주석을 무시하며 실제 구문의 개수만을 센다.",
  "desc.NegativeArraySize": "배열의 크기를 음수로 선언하는 것은 정의되지 않은 행동입니다.",
  "desc.NegativeIndex": "인덱스 -1은 범위를 벗어납니다.",
  "desc.NegativeMemoryAllocationSize": "메모리 할당 크기가 음수입니다.",
  "desc.NoClassAttribute": "'class' 속성은 허용되지 않으며, 이를 사용한 경우를 검출합니다.",
  "desc.NoConstructor": "클래스가 생성자를 포함하지 않습니다.",
  "desc.NoCopyConstructor": "클래스가 포인터를 포함하는 경우에는 복사 연산자를 지정하는 것이 권장됩니다.",
  "desc.NoExplicitConstructor": "클래스가 생성자를 포함하지만 명시적으로 정의되어 있지 않습니다.",
  "desc.NoHtmlComments": "HTML 주석은 애플리케이션 서버와 클라이언트간의 페이로드를 증가시킵니다.",
  "desc.NoInlineScript": "HTML의 인라인 스크립트의 사용을 검출합니다.",
  "desc.NoInlineStyleInformation": "JSP 파일에 스타일과 관련된 정보가 포함된 경우 이를 검출합니다.",
  "desc.NoJspForward": "JSP 파일들간의 forwarding을 사용한 경우 이를 검출합니다.",
  "desc.NoLongScripts": "JSP 파일에 긴 스크립트(예: Javascript)가 포함된 경우 이를 검출합니다.",
  "desc.NoPackage": "package 선언문이 없는 코드을 검출합니다.",
  "desc.NoScriptlets": "JSP 파일에 Scriplet이 포함된 경우 이를 검출합니다.",
  "desc.NonCaseLabelInSwitchStatement": "Switch 구문 내에 일반적인 케이스 넘버링에 의한 레이블이 아닌 다른 레이블링을 한 경우 이를 검출합니다.",
  "desc.NonStaticInitializer": "비정적인 초기화 블록은 생성자가 호출 될 때마다 항상 이전에 호출되는 경우 검출합니다.",
  "desc.NonThreadSafeSingleton": "스레드 안전하지 않은 정적 싱글턴의 사용을 검출합니다.",
  "desc.NullAssignment": "선언 시를 제외한 변수에 널 할당을 검출합니다.",
  "desc.OBJECT_MODEL_VIOLATION.CSHARP": "동일성과 해시 코드의 의미 불일치 체커는 두 객체의 동일성을 비교하는 메소드와 해시 코드를 계산하는 메소드 중 어느 한 쪽만 오버라이딩으로 구현된 경우를 검출합니다.",
  "desc.OBSOLETE.CSHARP": "SqlClientPermission의 잘못된 사용 체커는 SqlClientPermission 생성자에 두 번째 인자가 있는 경우를 검출합니다.",
  "desc.ONE_DEFINITION_RULE": "하나 이상의 정의 금지 체커는 모든 인라인이 아닌 함수 또는 객체가 하나 이상의 정의를 가지면 검출합니다.",
  "desc.ONE_READ_CHAR_PUSH_BACK": "ungetc() 함수 반복 호출 체커는 ungetc() 함수를 여러 번 호출하는 경우를 검출합니다.",
  "desc.ONLY_ARG_DEPENDENT_LOOKUP": "모호한 템플릿 함수 호출 체커는 템플릿 함수 호출이 모호한 수식을 검출합니다.",
  "desc.ONLY_DECLARE_TRIVIAL_FUNCTINS_INLINE": "복잡한 함수의 인라인 선언 체커는 인라인으로 선언된 복잡한 함수를 검출합니다.",
  "desc.ONLY_INLINE_NON_VIRTUAL_CTOR_DTOR": "특수 메소드의 인라인 선언 체커는 인라인으로 선언된 일부 클래스 메소드를 검출합니다.",
  "desc.ONLY_INLINE_SIMPLE_FUNCTION": "커다란 함수의 인라인 선언 체커는 인라인으로 선언된 커다란 함수를 검출합니다.",
  "desc.ONLY_LOOP_CONTROL_IN_FOR": "for 구조에는 loop_control_variable만 사용되어야 합니다.",
  "desc.ONLY_LOOP_COUNT_INC_DEC": "for 구문에서 루프 카운터가 아닌 변수를 증감 연산 체커는 증감부에서 루프 카운터가 아닌 변수에 대해 증감 연산을 한 for 구문을 검출합니다.",
  "desc.ONLY_MAIN_IN_GLOBAL_SCOPE": "전역 범위에서 변수 및 함수 선언 체커는 전역 범위에서 메인 함수와 네임스페이스 선언을 제외한 변수 및 함수 선언을 검출합니다.",
  "desc.ONLY_ONE_LOOP_COUNT_INIT": "for 구문에서 루프 카운터가 아닌 변수를 초기화 체커는 초기화 영역에서 루프 카운터가 아닌 변수를 초기화한 for 구문을 검출합니다.",
  "desc.ONLY_THROW_OBJECT_OF_CLASS_TYPE": "허용되지 않은 타입의 예외 던짐 체커는 허용되지 않은 타입을 예외로 던지는 수식을 검출합니다.",
  "desc.ONLY_VIRTUAL_FUNC_DEFINITION_ON_INHERIT_HIERARCHY": "가상 함수의 중복 정의 체커는 부모 클래스에서 이미 정의한 가상 함수를 자식 클래스에서 재정의하는 경우를 검출합니다.",
  "desc.OPEN_REDIRECT": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPEN_REDIRECT.CPP": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPEN_REDIRECT.JS": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPEN_REDIRECT.KOTLIN": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL을 사용한 자동 연결을 검출합니다.",
  "desc.OPEN_REDIRECT.OBJC": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPEN_REDIRECT.PHP": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPEN_REDIRECT.PYTHON": "검증되지 않은 외부 입력 값을 외부사이트의 주소로 사용하여 자동으로 연결하는 서버 프로그램은 피싱 공격에 노출될 수 있습니다. 클라이언트에서 전송된 URL 주소로 연결하기 때문에 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속하도록 공격할 수 있습니다.",
  "desc.OPEN_REDIRECT.SWIFT": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL을 사용한 자동 연결을 검출합니다.",
  "desc.OPEN_REDIRECT.TOBE.JS": "다이얼로그롤 통한 신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPEN_REDIRECT.VBNET": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPEN_REDIRECT.VBS": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPEN_REDIRECT_ANDROID": "외부에서 전달된 Intent의 데이터를 검증없이 webView에서 로드할 경우 검출한다.",
  "desc.OPEN_REDIRECT_ASPNET": "신뢰할 수 없는 주소로 자동 연결 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.",
  "desc.OPERATOR_NEW_AND_DELETE_MISMATCHED": "메모리 연산자들의 오버로딩 영역 불일치 체커는 new와 delete 연산자 오버로딩 중에서 어느 한쪽이 빠져 있는 클래스를 검출합니다.",
  "desc.OPTIONAL_SUBMODEL_REQUIRED.VBNET": "Required 속성이 없는 상위 모델 체커는 Required 속성을 지니는 하위 모델을 포함하는 Required 속성이 없는 상위 모델을 검출합니다.",
  "desc.ORDERING_TO_CATCH_SQLEXCEPTION": "SQLException 외 추가 예외 처리 누락 체커는 데이타베이스에 접근할 때 SQLException이 아닌 예외를 처리하지 않는 경우를 검출합니다.",
  "desc.ORDER_EXCEPTIONS_FROM_DERIVED_TO_BASE": "순서가 올바르지 않은 catch 블록 체커는 catch 블록의 인자 타입이 자식에서 부모 순으로 정렬되어 있지 않은 catch 문을 검출합니다.",
  "desc.ORGANIZE_CLASS_DEFINE": "클래스에서 잘못된 접근 권한 순서 체커는 멤버 선언이 public, protected, private 순으로 되어 있지 않은 클래스를 검출합니다.",
  "desc.OS_COMMAND_INJECTION": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.OS_COMMAND_INJECTION.JS": "적절한 검증절차를 거치지 않은 사용자 입력값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 악영향을 미칠 수 있습니다.",
  "desc.OS_COMMAND_INJECTION.OBJC": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.",
  "desc.OS_COMMAND_INJECTION.SWIFT": "운영 체제 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 경우를 검출합니다.",
  "desc.OVERLOADED_FUNCTION_TEMPLATE_NOT_BE_SPECIALIZED": "명시적 특수화된 함수의 모호한 호출 체커는 명시적 특수화가 존재하는 오버로딩 함수들을 호출한 수식을 검출합니다.",
  "desc.OVERLY_BROAD_CATCH.CSHARP": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.",
  "desc.OVERLY_BROAD_CATCH.KOTLIN": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.",
  "desc.OVERLY_BROAD_CATCH.PHP": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.",
  "desc.OVERLY_BROAD_CATCH.PYTHON": "발생할 수 있는 오류들에 대한 예외처리를 각각 하지 않고 광범위하게 사용한다면 개발자가 예기치 않은 문제가 발생할 수 있는 보안약점입니다.",
  "desc.OVERLY_BROAD_CATCH.VBNET": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.",
  "desc.OVERRIDE_ALL_OVERLOADS_OF_BASE_CLASS": "오버로딩 함수들의 오버라이딩 누락 체커는 부모 클래스에서 오버로딩 된 가상 함수들을 1개라도 오버라이딩하는 것을 누락한 자식 클래스를 검출합니다.",
  "desc.OVERRIDE_HASHCODE_AND_EQUALS": "동일성과 해시 코드의 의미 불일치 체커는 두 객체의 동일성을 비교하는 메소드와 해시 코드를 계산하는 메소드 중 어느 한 쪽만 오버라이딩으로 구현된 경우를 검출합니다.",
  "desc.OVERRIDE_PURE_TO_NON_PURE": "순수 가상 함수의 오버라이딩 체커는 순수 가상 함수를 또다시 순수 가상 함수로 오버라이딩하는 메소드 선언을 검출합니다.",
  "desc.OVERRUN.CONTAINER": "컨테이너 오버플로우 체커는 컨테이너의 용량을 넘어서는 데이터를 삽입하거나 접근하는 수식을 검출합니다.",
  "desc.OVERRUN.DYNAMIC": "동적 할당 버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 경우를 검출합니다.",
  "desc.OVERRUN.DYNAMIC.BAD_COND": "잘못된 조건으로 인한 동적 할당 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.",
  "desc.OVERRUN.DYNAMIC.IN_FUNC_CALL": "함수의 동적 할당 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.OVERRUN.DYNAMIC.IN_FUNC_CALL.BAD_COND": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.OVERRUN.DYNAMIC.IN_FUNC_CALL.BAD_COND_delete": "잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽을 때 발생하는 오류입니다.",
  "desc.OVERRUN.DYNAMIC.IN_FUNC_CALL_delete": "잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽을 때 발생하는 오류입니다.",
  "desc.OVERRUN.DYNAMIC.MEMSET": "memcpy(), strncpy()와 같이 범위 지정을 통해 메모리 상의 데이터를 특정 크기(길이)만큼 복사하는 함수를 사용할 때, Buffer Overrun 오류 입니다.",
  "desc.OVERRUN.DYNAMIC.MEMSET.BAD_COND": "memcpy(), strncpy()와 같이 범위 지정을 통해 메모리 상의 데이터를 특정 크기(길이)만큼 복사하는 함수를 사용할 때 범위의 검사가 잘못 되었을 경우 검출하는 버퍼오버런 오류 입니다.",
  "desc.OVERRUN.DYNAMIC.STRCPY": "strcpy()와 같이 문자열을 처리하는 함수를 사용할 때, 동적으로 할당된 버퍼에서 Buffer Overrun 오류가 발생하는 경우에 검출되는 오류 입니다.",
  "desc.OVERRUN.HORUS": "버퍼 오버런입니다.",
  "desc.OVERRUN.STATIC": "버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리 값을 쓰거나 읽는 코드를 검출합니다.",
  "desc.OVERRUN.STATIC.BAD_COND": "잘못된 조건으로 인한 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.",
  "desc.OVERRUN.STATIC.IN_FUNC_CALL": "함수의 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.OVERRUN.STATIC.IN_FUNC_CALL.BAD_COND": "잘못된 조건으로 인한 함수의 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.OVERRUN.STATIC.IN_FUNC_CALL.BAD_COND_delete": "-",
  "desc.OVERRUN.STATIC.IN_FUNC_CALL_delete": "잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽을 때 발생하는 오류입니다.",
  "desc.OVERRUN.STATIC.MEMSET": "범위 지정 복사 함수로 인한 버퍼 오버플로우 체커는 memcpy(), strncpy()와 같이 범위 지정을 통해 메모리에서 특정 크기의 데이터를 복사하는 함수를 잘못 사용한 코드를 검출합니다.",
  "desc.OVERRUN.STATIC.MEMSET.BAD_COND": "memcpy(), strncpy()와 같이 범위 지정을 통해 메모리 상의 데이터를 특정 크기(길이)만큼 복사하는 함수를 사용할 때 범위의 검사가 잘못 되었을 경우 검출하는 Buffer Overrun 오류 입니다.",
  "desc.OVERRUN.STATIC.MEMSET.BAD_COND.HORUS": "memcpy(), strncpy()와 같이 범위 지정을 통해 메모리 상의 데이터를 특정 크기(길이)만큼 복사하는 함수를 사용할 때 범위의 검사가 잘못 되었을 경우 검출하는 Buffer Overrun 오류 입니다.",
  "desc.OVERRUN.STATIC.MEMSET.EXT": "memcpy(), strncpy()와 같이 범위 지정을 통해 메모리 상의 데이터를 특정 크기(길이)만큼 복사하는 함수를 사용할 때, Buffer Overrun 오류 입니다.",
  "desc.OVERRUN.STATIC.STRCPY": "strcpy()와 같이 문자열을 처리하는 함수를 사용할 때, Buffer Overrun 오류가 발생하는 경우에 검출되는 오류입니다.",
  "desc.OVERRUN.STATIC.STRCPY.OBJC": "문자열 함수의 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 문자열 함수 호출을 검출합니다.",
  "desc.OVERRUN.STRCPY.HORUS": "STRCPY계열 함수에서 메모리 오버런 현상이 있을 경우를 검출 합니다.",
  "desc.OVERRUN_STATIC.OBJC": "고정 버퍼 오버플로우 체커는 고정 길이 배열의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.",
  "desc.OneDeclarationPerLine": "한 줄에 여러 개의 변수를 선언 했을 경우를 검출합니다.",
  "desc.OnlyOneReturn": "메소드 내에 다수의 반환 구문을 검출합니다.",
  "desc.OperatorEq": "'class::operator='는 클래스의 레퍼런스를 반환해야 합니다.",
  "desc.OperatorEqMissingReturnStatement": "void 함수가 아닌 함수에서 반환하지 않는 것은 정의되지 않은 행동입니다.",
  "desc.OperatorEqRetRefThis": "'operator='는 반드시 'this' 인스턴스의 레퍼런스를 반환해야 합니다.",
  "desc.OperatorEqShouldBeLeftUnimplemented": "'operator='는 'this' 인스턴스의 레퍼런스를 반환하거나 private으로 선언되어 구현되지 않은 상태로 있어야 합니다.",
  "desc.OperatorEqToSelf": "'operator='는 스스로 할당하지 말아야 합니다.",
  "desc.OperatorEqVarError": "멤버 변수가 복사 연산자에서 할당되지 않습니다.",
  "desc.OppositeInnerCondition": "안쪽의 if문의 조건이 반대입니다.",
  "desc.OptimizableToArrayCall": "toArray() 에 PrimarySuffix로 인덱스가 0인 배열을 생성하여 넣은 경우 이를 검출합니다.",
  "desc.OutOfBounds": "인덱스가 범위를 벗어납니다.",
  "desc.PACKAGE_COMMENT": "패키지 주석의 형식 체커는 형식에 어긋난 패캐지 주석을 검출합니다.",
  "desc.PACKAGE_PATH.NICE": "Biz 단의 소스의 패키지 경로와 xml의 소스 경로 비교하여 다른 경우 검출합니다.",
  "desc.PARAMETER_POINTER_TO_LOCAL": "지역 변수 주소를 외부에서 참조 체커는 지역 변수의 주소를 함수의 인자를 통해 외부에서 참조하는 경우를 검출합니다.",
  "desc.PASSWORD.EMPTY_PASSWORD.CSHARP": "비어 있는 비밀번호 체커는 비밀번호를 초기화할 때 빈 값을 지정하는 경우를 검출합니다.",
  "desc.PASSWORD.HARDCODED_PASSWORD.CSHARP": "비밀번호가 하드코드 되었습니다.",
  "desc.PASSWORD.PBE_EMPTY_PASSWORD.CSHARP": "빈 비밀번호로 키 파생 함수 사용 체커는 암호 기반 키 파생 함수를 빈 비밀번호로 사용하는 경우를 검출합니다.",
  "desc.PASSWORD.PBE_HARDCODED_PASSWORD.CSHARP": "하드코딩된 비밀번호로 키 파생 함수 사용 체커는 암호 기반 키 파생 함수에 사용되는 비밀번호가 하드코딩된 경우를 검출합니다.",
  "desc.PASSWORD_INSECURE_SUBMISSION": "GET 방식에 의한 비밀번호 노출 체커는 GET 방식으로 비밀번호를 전송한 경우를 검출합니다.",
  "desc.PASSWORD_IN_COMMENT": "주석문에 비밀번호 노출 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.",
  "desc.PASSWORD_IN_COMMENT.ASP": "ASP 소스 주석 코드 내에 비밀번호 정보를 검출합니다.",
  "desc.PASSWORD_IN_COMMENT.CSHARP": "주석문에 비밀번호 노출 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.",
  "desc.PASSWORD_IN_COMMENT.KOTLIN": "주석문에 비밀번호 노출 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.",
  "desc.PASSWORD_IN_COMMENT.OBJC": "주석문에 비밀번호 노출 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.",
  "desc.PASSWORD_IN_COMMENT.PHP": "주석문에 비밀번호 노출 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.",
  "desc.PASSWORD_IN_COMMENT.PYTHON": "주석에 ID, 패스워드 등 보안과 관련된 내용을 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 소프트웨어 개발자가 편의를 위해서 주석문에 패스워드를 적어둔 경우, 소프트웨어가 완성된 후에는 그것을 제거하는 것이 매우 어렵게 됩니다. 또한, 공격자가 소스코드에 접근할 수 있다면, 아주 쉽게 시스템에 침입할 수 있습니다.",
  "desc.PASSWORD_IN_SERVLET_COMMENT": "서블릿 주석문에 비밀번호 노출 체커는 서블릿 코드의 주석문 안에 비밀번호에 대한 정보가 포함된 경우를 검출합니다.",
  "desc.PASSWORD_MANAGEMENT.WEB.CONFIG": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다. 릴리즈 시 설정 파일에 비밀번호를 입력해놓으면 안됩니다.",
  "desc.PASSWORD_MANAGEMENT_HARDCODED_PASSWORD": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.",
  "desc.PASSWORD_MANAGEMENT_HEAP_INSPECTION": "메모리 덤프에서 비밀번호 노출 체커는 비밀번호를 문자열 객체에 저장하는 경우를 검출합니다.",
  "desc.PASSWORD_MANAGEMENT_PASSWORD_IN_COMMENT": "주석문에 비밀번호 노출 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.",
  "desc.PASSWORD_MANAGEMENT_PASSWORD_IN_REDIRECT": "주소창에서 비밀번호 노출 체커는 비밀번호가 포함된 응답을 GET 방식으로 보내는 경우를 검출합니다.",
  "desc.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION": "암호화 없이 비밀번호 저장 체커는 비밀번호를 암호화하지 않은 채로 외부에 저장한 경우를 검출합니다.",
  "desc.PASSWORD_SAVED_WITHOUT_ENCRYPTION_ASPNET": "암호화 없이 비밀번호 저장 체커는 비밀번호를 암호화하지 않은 채로 외부에 저장한 경우를 검출합니다.",
  "desc.PASS_BY_VALUE": "구조체와 같은 크기가 큰 데이터를 함수의 인자로 전달할 때 발생하는 오류입니다.",
  "desc.PASS_OBJECT_OF_CORRECT_TYPE_TO_VA_START": "va_start 매크로 제약사항 위반 체커는 가변 인자를 다룰때 사용하는 va_start 매크로의 제약 사항을 위반한 경우를 검출합니다.",
  "desc.PATH_CONTAMINATION.GO": "경로 조작은 사용자가 애플리케이션에서 예상하지 못한 파일에 액세스하거나 수정할 수 있는 취약점입니다. 이는 사용자 입력을 제한 없이 파일 경로로 사용했을 때 발생할 수 있습니다. 사용자 입력을 그대로 파일 경로로 사용하는 것은 매우 위험합니다. 가능한 한 사용자 입력을 파일 경로로 사용하지 않아야 합니다. 반드시 사용해야 하는 경우라면, 사용자 입력에 대한 철저한 검증이 필요합니다.",
  "desc.PATH_CONTAMINATION.JS": "검증되지 않은 외부 입력 값으로 시스템 자원에 접근할 경우, 공격자가 입력 값을 조작하여 시스템이 보호하는 자원에 접근할 수 있는 보안약점입니다. 공격자는 이를 이용하여 자원의 수정 및 삭제, 시스템 정보 누출, 시스템 자원 간 충돌로 인한 서비스 장애 등을 유발시킬 수 있습니다.",
  "desc.PATH_MANIPULATION.KOTLIN": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 경우를 검출합니다.",
  "desc.PATH_MANIPULATION.OBJC": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.",
  "desc.PATH_MANIPULATION.PHP": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.",
  "desc.PATH_MANIPULATION.PYTHON": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.",
  "desc.PATH_MANIPULATION.VBNET": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.",
  "desc.PATH_MANIPULATION.VBS": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.",
  "desc.PATH_TRAVERSAL": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.",
  "desc.PATH_TRAVERSAL.TOBE.JS": "투비소프트 플랫폼 경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.",
  "desc.PATH_TRAVERSAL_ANDROID": "외부에서 올수 있는 Intent 입력을 통하여 \"디렉토리 경로 문자열\" 생성이 필요한 경우, 외부 입력에서 경로 조작에 사용될 수 있는 문자를 필터링하지 않으면, 예상 밖의 영역에 대한 경로 문자열이 가능해져 시스템 정보누출, 서비스 장애 등을 유발 시킬 수 있습니다.",
  "desc.PATH_TRAVERSAL_ASPNET": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.",
  "desc.PERFORMANCE.REFERENCE_TYPE.STATIC_CONSTRUCTOR.CSHARP": "참조 형식에서 명시적인 정적 생성자를 선언합니다.",
  "desc.PERSISTENT_AUTHENTICATION.VBNET": "지속적인 권한 설정 체커는 두 번째 인자 값이 true인 RedirectFromLoginPage() 메소드를 검출합니다.",
  "desc.PERSISTENT_COOKIE": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.",
  "desc.PERSISTENT_COOKIE.CPP": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키의 지속 시간을 길게 설정한 코드를 검출합니다.",
  "desc.PERSISTENT_COOKIE.KOTLIN": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 경우를 검출합니다.",
  "desc.PERSISTENT_COOKIE_ASPNET": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.",
  "desc.PLACE_PLAIN_CHAR": "plain char 타입에 숫자 사용 체커는 부호 표시가 없는 일반 char 타입의 변수에 숫자를 대입하거나 비교하는 수식을 검출합니다.",
  "desc.PLACE_SIGNED_CHAR": "signed char 타입에 문자 사용 체커는 unsigned char 혹은 signed char 타입의 변수에 문자를 대입하거나 비교하는 수식을 검출합니다.",
  "desc.PLAINTEXT_PASSWORD": "비밀번호를 평문으로 저장 체커는 비밀번호를 암호화하지 않고 저장하는 코드를 검출합니다.",
  "desc.PLAIN_CHAR_OPERATION": "plain char 타입에 산술 연산 사용 체커는 부호 표시가 없는 일반 char 타입의 변수에 산술 연산을 사용하는 수식을 검출합니다.",
  "desc.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 코드를 검출합니다.",
  "desc.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.OBJC": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 코드를 검출합니다.",
  "desc.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 코드를 검출합니다.",
  "desc.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 경우를 검출합니다.",
  "desc.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 경우를 검출합니다.",
  "desc.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.TOBE.JS": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 코드를 검출합니다.",
  "desc.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.",
  "desc.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 경우를 검출합니다.",
  "desc.POINTER_ARITHMETIC_NOT_ON_ARRAY": "배열이 아닌 타입에 포인터 연산 사용 체커는 배열이 아닌 일반 포인터 타입 객체에 포인터 연산을 사용한 수식을 검출합니다.",
  "desc.POOR_LOGGING_PRACTICE.CSHARP": "잘못된 로거 사용 체커는 금지된 메소드를 사용하여 로그를 남기는 경우를 검출합니다.",
  "desc.POOR_LOGGING_PRACTICE.JS": "잘못된 로거 사용 체커는 금지된 메소드를 사용하여 로그를 남기는 경우를 검출합니다.",
  "desc.PORTABILITY_FLAW.FILE_SEPARATOR.CSHARP": "하드코딩된 파일 구분자 체커는 하드코딩된 파일 구분 문자를 사용하는 경우를 검출합니다.",
  "desc.PORTABILITY_FLAW.FILE_SEPARATOR.PYTHON": "하드코딩된 경로 구분자 체커는 하드코딩된 경로 구분 문자를 사용하는 경우를 검출합니다.",
  "desc.POSTFIX_OPERATOR_SHOULD_RETURN_CONST": "잘못된 후위 연산자의 한정자 체커는 반환 값에 상수 한정자가 없는 후위 증감 연산자 오버로딩을 검출합니다.",
  "desc.POSTPONE_VARIABLE_DEFINITIONS": "너무 넓은 변수 활성 범위 체커는 지역 변수를 사용 직전보다 이르게 선언하여 오랫동안 범위에 살아있게 되는 경우를 검출합니다.",
  "desc.POTENTIAL_INFINITE_LOOP": "잠재된 무한 반복의 가능성 체커는 반복 구문에서 잠재적으로 무한 반복의 가능성이 있는 코드를 검출합니다.",
  "desc.POTENTIAL_INFINITE_LOOP.PF": "무한 루프에 빠질 위험이 있습니다.",
  "desc.PRACTICE.ARRAY_DECLARATION.COMPLICATED_SYNTAX.CSHARP": "선언문에서 배열을 초기화할 때, 간략한 문법을 사용해야 합니다.",
  "desc.PRACTICE.BOOLEAN_EXPRESSION.USED_AMP_AND_BITWISE_OR.CSHARP": "필요 없는 비교식의 수행을 건너 뛰어 예기치 않은 예외발생과 수행시간 증가를 피하려면, 비교식을 작성할 때 & 대신에 &&를, | 대신에 ||를 사용해야 합니다.",
  "desc.PRACTICE.CALL_TO_STATIC_MEMBER.WITH_DERIVED_CLASS_NAME.CSHARP": "부모 클래스에 정의된 static 멤버를 자식 클래스의 이름으로 호출하지 말아야 합니다.",
  "desc.PRACTICE.DELEGATE_TYPE.BAD_INSTANCE_CREATION.CSHARP": "delegate 타입의 객체를 생성할 때 간략한 문법을 사용해야 합니다.",
  "desc.PRACTICE.FINALLY_BLOCK.RESOURCE_DISPOSITION_ONLY.CSHARP": "try-finally 문장에서 finally 블록 안에 Dispose 메소드 호출만 있는 경우에 using문으로 대체해야 합니다.",
  "desc.PRACTICE.LINQ.NOT_USED_IMPLICIT_TYPING.CSHARP": "LINQ문 안에서 쿼리 변수나 범위 변수를 선언할 때, 암시적 타입을 사용해야 합니다.",
  "desc.PRACTICE.LOOP_VARIABLE.NOT_USED_IMPLICIT_TYPING.CSHARP": "for문과 foreach의 루프변수의 타입은 암시적 타입을 사용해야 합니다.",
  "desc.PRACTICE.OBJECT_INITIALIZATION.NOT_USED_INITIALIZER.CSHARP": "객체 생성을 간략화하기 위해, 객체 이니셜라이저를 사용해야 합니다.",
  "desc.PRACTICE.OBJECT_INSTANTIATION.NOT_USED_IMPLICIT_TYPING.CSHARP": "객체를 인스턴스화할 때, 간략한 형태인 암시적 타입을 사용해야 한다.",
  "desc.PRACTICE.OBVIOUS_VARIABLE_TYPE.NOT_USED_IMPLICIT_TYPING.CSHARP": "할당문을 통해 명확한 타입 유추가 가능하거나 타입이 중요하지 않을 때, 암시적 타입을 사용해야 합니다.",
  "desc.PRACTICE.STRINGBUILDER.SHORT_STRING_CONCATENATION.CSHARP": "짧을 문자열을 연결하기 위해, StringBuilder의 Append 메소드를 사용하기보단 + 연산자를 사용해야 합니다.",
  "desc.PRACTICE.TYPE.USED_UNSIGNED_TYPE.CSHARP": "다른 라이브러리와 상호작용이 쉽게 이루어지도록, unsigned타입 대신에 일반적으로 사용되는 'int'를 사용해야 합니다.",
  "desc.PRECEDE_INCLUDE": "파일 최상단에 위치하지 않은 include 전처리 구문 체커는 include 전처리 구문이 파일 최상단에 위치하지 않은 경우를 검출합니다.",
  "desc.PREDICATES_SHOULD_NOT_HAVE_NONSTATIC_DATA": "조건자에서 비정적 필드 값 수정 체커는 비정적 필드 값을 수정하는 조건자 메소드 선언을 검출합니다.",
  "desc.PREFER_SPECIAL_MEMBER_AND_OVERLOADED_OP": "적절하지 않은 클래스 객체를 대상으로 하는 C 표준 라이브러리 사용 체커는 일부 C 표준 라이브러리를 사용하여 Non-trivial 클래스 객체 혹은 비표준 레이아웃 클래스 객체를 조작하는 경우를 검출합니다.",
  "desc.PREFER_TO_USE_SIGNED_VALUE": "부호없는 숫자 값 사용 체커는 부호없는 숫자 값을 사용한 경우를 검출합니다.",
  "desc.PREMATURE_THREAD_TERMINATION": "다중 스레드 환경에서 자식 스레드 분리 여부 확인 체커는 부모 스레드가 조인을 통해 자식을 기다리거나, 부모 스레드가 먼저 끝나야 하는 경우 detach를 통해 자식 스레드를 분리하지 않은 경우를 검출합니다.",
  "desc.PRESERVE_ARRAY_DIMENSION": "포인터로 붕괴하는 배열 체커는 함수 인자로 전달하여 포인터로 붕괴하는 배열 객체를 검출합니다.",
  "desc.PRESERVE_THREAD_SAFETY_AND_LIVENESS": "잘못된 조건 변수 사용 체커는 조건 변수를 잘못 사용하여 스레드 안정성과 유효성이 떨어지는 경우를 검출합니다.",
  "desc.PREVENT_DATA_RACES": "다중 스레드 환경에서 비트 필드 접근 체커는 서로 다른 스레드에서 인접한 비트 필드를 수정하는 경우를 검출합니다.",
  "desc.PREVENT_DESERIALIZATION_OF_UNTRUSTED_DATA": "직렬화(Serialization)는 인스턴스 정보를 바이트 스트림으로 복사하는 작업으로, 메모리 상에서 실행되고 있는 객체의 상태를 그대로 복제하여 파일로 저장하거나 수신 측에 전달합니다. 역직렬화(Deserialization)는 반대 연산으로 바이너리 파일이나 바이트 스트림으로부터 객체 구조로 복원합니다. 이 때, 송신자가 네트워크를 이용하여 직렬화된 정보를 수신자에게 전달하는 과정에서 공격자가 전송 또는 저장된 스트림을 조작할 수 있는 경우에는 신뢰할 수 없는 역직렬화를 이용하여 무결성 침해, 원격 코드 실행, 서비스 거부 공격 등이 발생할 수 있는 보안약점입니다.",
  "desc.PREVENT_MATH_FUNCTIONS_ERROR": "수학 함수 범위 오류 체커는 수학 함수에서 도메인 오류 및 영역 예러가 발생한 경우를 검출합니다.",
  "desc.PREVENT_OPERATIONS_ON_DEVICES": "파일 연산을 장치에 수행 체커는 파일을 대상으로만 적용 가능한 연산을 장치에 대해 수행하는 경우를 검출합니다.",
  "desc.PREVENT_SENSITIVE_DATA_WRITE_TO_DISK": "메모리의 중요 정보가 디스크를 통해 노출 체커는 메모리에 남아 있이던 중요 정보가 의도하지 않게 디스크에 기록되어 외부로 노출되는 경우를 검출합니다.",
  "desc.PREVENT_XML_INSERTION": "XML 삽입 방지 체커는 XML 문서에 신뢰할 수 없는 외부 입력 값이 사용되는 경우에, 입력 값에 대한 적절한 필터링이 수행되지 않는 코드를 검출합니다.",
  "desc.PRIVACY.ACCOUNT": "소스 코드에 존재하는 계좌 정보 체커는 소스 코드 내에 계좌 정보를 검출합니다.",
  "desc.PRIVACY.CREDIT_CARD": "소스 코드에 존재하는 신용 카드 정보 체커는 소스 코드 내에 신용 카드 정보를 검출합니다.",
  "desc.PRIVACY.DRIVER_LIC": "소스 코드 내에 존재하는 운전 면허 번호 정보 체커는 소스 코드 내에 운전 면허 번호 정보를 검출합니다.",
  "desc.PRIVACY.EMAIL": "소스 코드에 존재하는 이메일 정보 체커는 소스 코드 내에 이메일 정보를 검출합니다.",
  "desc.PRIVACY.FOREIGNER_ID": "소스 코드에 존재하는 외국인 등록 번호 정보 체커는 소스 코드 내에 외국인 등록 번호 정보를 검출합니다.",
  "desc.PRIVACY.IP": "소스 코드 내에 존재하는 IP 정보 체커는 소스 코드 내에 IP 정보를 검출합니다.",
  "desc.PRIVACY.NATIONAL_ID": "소스 코드 내에 존재하는 주민 등록 번호 정보 체커는 소스 코드 내에 주민 등록 번호 정보를 검출합니다.",
  "desc.PRIVACY.PASSPORT": "소스 코드 내에 존재하는 여권 번호 정보 체커는 소스 코드 내에 여권 번호 정보를 검출합니다.",
  "desc.PRIVACY.PHONE": "소스 코드 내에 존재하는 전화 번호 정보 체커는 소스 코드 내에 전화 번호 정보를 검출합니다.",
  "desc.PRIVACY_CONCERNS_USING_GEOLOCATION_API": "Geolocation API의 사용 전 사용자 권한 확인 누락 체커는 Geolocation API를 사용하여 사용자의 위치 정보를 얻을 때 사용자의 권한을 확인하지 않는 코드를 검출합니다.",
  "desc.PRIVACY_VIOLATION.JS": "민감한 정보 노출 체커는 민감한 정보를 쉽게 노출될 수 있는 저장소에 저장하는 경우를 검출합니다.",
  "desc.PRIVACY_VIOLATION_SHOULDER_SURFING.CSHARP": "UI가 그려지는 동안 민감한 정보 노출 체커는 UI가 그려지는 동안 민감한 정보가 노출된 경우를 검출합니다.",
  "desc.PRIVATE_COLLECTION": "private 컬렉션 노출 체커는 private이 아닌 메소드에서 private으로 선언된 배열 또는 컬렉션 타입 필드의 객체가 그대로 반환되는 경우를 검출합니다.",
  "desc.PRIVATE_COLLECTION.ASSIGN": "외부 데이터를 private 컬렉션에 저장 체커는 외부에서 접근 가능한 컬렉션 객체나 포인터 객체를 private 컬렉션이나 포인터 필드에 저장하는 경우를 검출합니다.",
  "desc.PRIVATE_COLLECTION.CSHARP": "private 컬렉션 노출 체커는 private이 아닌 메소드에서 private으로 선언된 배열 또는 컬렉션 타입 필드의 객체가 그대로 반환되는 경우를 검출합니다.",
  "desc.PRIVATE_COLLECTION.KOTLIN": "private 컬렉션 노출 체커는 private이 아닌 메소드에서 private으로 선언된 배열 또는 컬렉션 타입 필드의 객체가 그대로 반환되는 경우를 검출합니다.",
  "desc.PRIVATE_COLLECTION.PYTHON": "private로 선언된 배열을 public으로 선언된 메소드를 통해 반환하면 배열의 레퍼런스가 외부에 공개되어 외부에서 배열 수정과 객체 속성 변경이 가능해지는 보안 약점입니다.",
  "desc.PROCESS_CONTROL": "안전하지 않은 코드 적재 체커는 적재할 라이브러리 파일을 상대 경로로 지정할 경우를 검출합니다.",
  "desc.PROHIBIT_DELETE_CONTAIN_ELEMENT_NUM": "배열 해제시 인덱스를 명시 체커는 delete 구문으로 배열을 해제할 때 인덱스를 명시한 수식을 검출합니다.",
  "desc.PROHIBIT_ENUM_TYPE_BITFIELD": "열거형 비트 필드 선언 체커는 비트 필드의 타입이 열거형인 선언을 검출합니다.",
  "desc.PROHIBIT_ENUM_TYPE_BITFIELD2": "열거형을 비트필드 타입으로 사용하면 안됩니다.",
  "desc.PROHIBIT_FUNC_IN_STDLIB": "금지된 표준 라이브러리 사용 체커는 표준 라이브러리 함수 중 일부 금지된 함수를 호출한 수식을 검출합니다.",
  "desc.PROHIBIT_FUNC_IN_TIME": "금지된 시간 라이브러리 사용 체커는 시간 라이브러리 헤더를 포함한 전처리 구문을 검출합니다.",
  "desc.PROHIBIT_INCORRECT_USE_OF_JOIN": "JOIN 규칙 가이드 외 JOIN SQL 구문이 사용되었습니다.",
  "desc.PROHIBIT_NONSTANDARD_SQL": "ANSI SQL 비표준 구문을 사용했습니다.",
  "desc.PROHIBIT_NONSTANDARD_TYPE_CONVERSION": "ANSI SQL 비표준 형 변환 규칙이 사용되었습니다.",
  "desc.PROHIBIT_USE_OF_BTRIM": "ANSI SQL 비표준 공백 제거 규칙을 사용했습니다.",
  "desc.PROHIBIT_USE_OF_CBRT": "ANSI SQL 비표준 세제곱근 반환 규칙을 사용했습니다.",
  "desc.PROHIBIT_USE_OF_DECODE": "ANSI SQL 비표준 조건 규칙을 사용했습니다.",
  "desc.PROHIBIT_USE_OF_ILIKE": "ANSI SQL 비표준 검색 규칙이 사용되었습니다.",
  "desc.PROHIBIT_USE_OF_INNER_JOIN": "ANSI SQL 비표준 INNER JOIN 규칙을 사용했습니다.",
  "desc.PROHIBIT_USE_OF_MAINTENANCE_HEAVY_FUNCTION": "유지 보수가 어려운 함수가 사용되었습니다.",
  "desc.PROHIBIT_USE_OF_NONSTANDARD_HIERARCHICAL_QUERIES": "ANSI SQL 비표준 계층형 쿼리 검출 규칙이 사용되었습니다.",
  "desc.PROHIBIT_USE_OF_NVL": "ANSI SQL 비표준 null 검출 규칙을 사용했습니다.",
  "desc.PROHIBIT_USE_OF_OUTER_JOIN": "ANSI SQL 비표준 OUTER JOIN 규칙이 사용되었습니다.",
  "desc.PROHIBIT_USE_OF_POW": "ANSI SQL 비표준 제곱함수 검출 규칙이 사용되었습니다.",
  "desc.PROVIDE_OUTPUT_OPERATOR": "출력 연산자 미제공 체커는 ostream을 위한 출력 연산자를 제공하지 않은 클래스를 검출합니다.",
  "desc.PROVIDE_PROPERLY_ALIGNED_POINTERS_TO_PLACEMENT_NEW": "잘못된 placement new 사용 체커는 정렬 문제가 있는 주소 값을 placement new로 사용한 수식을 검출합니다.",
  "desc.PTR_EXCEED_TWO_LEVELS": "2레벨을 초과하는 포인터 사용 체커는 포인터 변수 선언 시 포인터의 레벨이 2를 초과하는 선언을 검출합니다.",
  "desc.PUBLICLY_DERIVED_CLASS_SHOULD_BE_ABSTRACT": "비 추상 클래스를 public으로 상속 체커는 자식 클래스에서 public으로 상속한 비 추상 클래스를 검출합니다.",
  "desc.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY": "외부 데이터를 private 배열에 저장 체커는 외부에서 접근 가능한 배열 객체를 private 배열 필드 변수에 저장하는 경우를 검출합니다.",
  "desc.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.CSHARP": "외부 데이터를 private 배열에 저장 체커는 외부에서 접근 가능한 배열 객체를 private 배열 필드 변수에 저장하는 경우를 검출합니다.",
  "desc.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN": "외부 데이터를 private 배열에 저장 체커는 외부에서 접근 가능한 배열 객체를 private 배열 필드 변수에 저장하는 경우를 검출합니다.",
  "desc.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.PYTHON": "public으로 선언된 메소드의 인자가 private으로 선언된 배열에 저장되는 경우 private 배열을 외부에서 접근하여 배열 수정과 객체 속성 변경을 발생시키는 보안약점입니다.",
  "desc.PUBLIC_FIELD_SHOULD_BE_USED_WITHOUT_METHOD": "메소드와 public 인스턴스 필드 동시 사용 체커는 메소드 정의를 포함하는 클래스 안에 있는 public 인스턴스 필드 선언을 검출합니다.",
  "desc.PUBLIC_STATIC_FIELD_WITHOUT_CONST": "const로 선언되지 않은 public 정적 멤버 변수 체커는 객체에 const 키워드로 표시되지 않은 public 정적 멤버 변수가 포함하는 경우를 검출합니다.",
  "desc.PackageCase": "package 이름이 소문자로만 이루어지지 않은 경우 이를 검출합니다.",
  "desc.PointerAdditionResultNotNull": "비교문이 잘못되었습니다. 오버플로우를 이용한 포인터 연산은 정의되지 않은 행동입니다.",
  "desc.PointerArithBool": "포인터 연산의 결과가 부울 자료형으로 변환됩니다. 부울 자료형은 정의되지 않은 행동이 있지 않는 이상 항상 true로 설정됩니다.",
  "desc.PointerOutOfBounds": "정의되지 않은 행동, 포인터 연산이 범위를 벗어납니다.",
  "desc.PositionLiteralsFirstInComparisons": "상수와 변수를 equals()로 비교시 변수.equals(상수)의 패턴을 검출합니다.",
  "desc.PossibleBufferAccessOutOfBounds": "복사되는 대상이 복사하는 목적지보다 크기가 큰 경우 오버플로우가 발생할 수 있습니다.",
  "desc.PrematureDeclaration": "변수 선언이 사용될 블록 바로 전에 이루어지지 않았을 경우를 검출합니다.",
  "desc.PreserveStackTrace": "Catch 구문에서 새로운 예외를 생성하는 구문을 검출합니다.",
  "desc.ProperCloneImplementation": "객체의 clone() 메소드에서 super.clone()을 호출하지 않은 경우 이를 검출합니다.",
  "desc.ProperLogger": "로거는 정적 private final로 선언되어야 하며 올바른 클래스를 가져야 합니다.",
  "desc.PurgedConfiguration": "이미 검출된 설정입니다",
  "desc.RACE_CONDITION": "TOCTOU 취약점. 파일 이름만 확인하고 사용하는 방식은 위험합니다.",
  "desc.RACE_CONDITION.EXT": "파일 이름에 의존하여 생기는 TOCTOU 경쟁 조건 체커는 파일 이름을 통한 파일 상태 확인과 실제 파일 사용 사이의 시간 차로 인해 발생하는 경쟁 조건을 검출합니다.",
  "desc.RACE_CONDITION.HORUS": "TOCTOU 취약점. 파일 이름만 확인하고 사용하는 방식은 위험합니다.",
  "desc.RACE_CONDITION.SWITCH": "switch 문 사용 중 경쟁 조건 발생 체커는 스위치(switch)문의 평가 식의 결과값이 실행 중 변할 위험이 있는 경우를 검출합니다.",
  "desc.RACE_CONDITION_STATIC_DATABASE_CONNECTION": "데이터베이스 연결 경쟁 조건 체커는 데이터베이스 연결 객체를 정적으로 선언한 경우를 검출합니다.",
  "desc.READ_WRITE_BINARY_DATA": "잘못된 이진 데이터 전송 체커는 다른 시스템으로 잘못된 이진 데이터를 전송하는 경우를 검출합니다.",
  "desc.REDOS.JS": "정규식 서비스 거부(ReDoS)는 Dos 공격의 종류로 대부분의 정규식이 극단적인 상황에서 매우 느리게 작동하는 것을 이용합니다. 공격자는 취약한 정규식을 이용하여 응용 프로그램에 부하를 주거나 중단되도록 할 수 있습니다.",
  "desc.REDUNDANT_CAST": "불필요한 캐스팅 체커는 이미 해당 타입인 값을 다시 그 타입으로 명시적 캐스팅하는 경우를 검출합니다.",
  "desc.REDUNDANT_CONDITION": "불필요한 조건식 체커는 항상 만족되거나 절대로 만족될 수 없는 조건식을 사용하는 코드를 검출합니다.",
  "desc.REDUNDANT_NAME": "동일한 이름의 지역 변수와 정적 변수 체커는 동일한 이름의 정적 변수와 지역 변수를 사용하는 코드를 검출합니다.",
  "desc.REFER_ATOMIC_VARIABLE_MANY_TIMES_IN_EXPRESSION": "표현식에서 원자 변수 두 번 참조 체커는 표현식에서 atomic 변수를 두 번 참조한 경우를 검출합니다.",
  "desc.REGISTRY.LEAK.TOBE.JS": "레지스트리 누수 체커는 레지스트리 변수를 사용 후에 초기화하지 않는 경우를검출합니다.",
  "desc.RELATIONSHIPS_IN_CONSTANT_DEFINITIONS": "상수 사이의 관계 누락 체커는 복수의 연관된 상수에 대한 관계를 식으로 사용하지 않고 각각을 독립적으로 선언하는 경우를 검출합니다.",
  "desc.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.",
  "desc.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.",
  "desc.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 경우를 검출합니다.",
  "desc.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.",
  "desc.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION_ASPNET": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.",
  "desc.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.",
  "desc.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.",
  "desc.RELIANCE_ON_UNTRUSTED_INPUTS": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.",
  "desc.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.",
  "desc.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.PYTHON": "애플리케이션이 외부 입력값에 대한 신뢰를 전제로 보호 메커니즘을 사용하는 경우, 공격자가 입력값을 조작할 수 있다면 보호 메커니즘을 우회할 수 있습니다. 그러므로 충분한 암호화, 무결성 체크를 수행하고 이와 같은 메커니즘이 없는 경우에는 외부 사용자에 의한 입력값을 신뢰해서는 안 됩니다.",
  "desc.REMOTE_CODE_EXECUTION.PHP": "동적 계산 코드 삽입 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.",
  "desc.REPRESENTATION_SIGNED_INTEGER": "특정한 signed 표현 가정 체커는 특정한 signed 정수의 표현을 가정하는 경우를 검출합니다.",
  "desc.RESET_SIGNAL_HANDLER": "시그널 핸들러의 지속 사용 실패 체커는 운영 체제 환경으로 인해 시그널 핸들러를 유지시키는 데 실패하는 경우를 검출합니다.",
  "desc.RESET_SIGNAL_HANDLER.OBJC": "시그널 핸들러의 지속 사용 실패 체커는 운영 체제 환경으로 인해 시그널 핸들러를 유지시키는 데 실패하는 경우를 검출합니다.",
  "desc.RESET_STRING_ON_FGETS_FAILURE": "파일 읽기 실패 후 버퍼 초기화 누락 체커는 함수가 파일을 읽는 데 실패하여 결과값을 저장할 문자열 버퍼를 초기화하지 않는 경우를 검출합니다.",
  "desc.RESOURCE_INJECTION": "리소스 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스(resource) 식별자를 검출합니다.",
  "desc.RESOURCE_INJECTION.JS": "검증되지 않은 외부 입력 값으로 시스템 자원에 접근할 경우, 공격자가 입력 값을 조작하여 시스템이 보호하는 자원에 접근할 수 있는 보안약점입니다. 공격자는 이를 이용하여 자원의 수정 및 삭제, 시스템 정보 누출, 시스템 자원 간 충돌로 인한 서비스 장애 등을 유발시킬 수 있습니다.",
  "desc.RESOURCE_INJECTION.OBJC": "리소스 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스(resource) 식별자를 검출합니다.",
  "desc.RESOURCE_INJECTION.PORT.VBS": "포트 리소스 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 포트 ID를 검출합니다.",
  "desc.RESOURCE_INJECTION.PYTHON": "검증되지 않은 외부 입력 값으로 시스템 자원에 접근할 경우, 공격자가 입력 값을 조작하여 시스템이 보호하는 자원에 접근할 수 있는 보안약점입니다. 공격자는 이를 이용하여 자원의 수정 및 삭제, 시스템 정보 누출, 시스템 자원 간 충돌로 인한 서비스 장애 등을 유발시킬 수 있습니다.",
  "desc.RESOURCE_INJECTION.SWIFT": "리소스 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스(resource) 식별자를 검출합니다.",
  "desc.RESOURCE_INJECTION_ASPNET": "리소스 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스 식별자를 검출합니다.",
  "desc.RESOURCE_LEAK": "리소스 누수 체커는 파일, 소켓 등 리소스를 할당한 후에 해제하지 않는 코드를 검출합니다.",
  "desc.RESOURCE_LEAK_CSHARP": "리소스 누수 체커는 파일, 소켓 등 리소스를 할당한 후에 해제하지 않는 코드를 검출합니다.",
  "desc.RESTRICT_PARAM_VALUE_RANGE": "함수의 상수 인자 제한 범위 위반 체커는 상수 인자를 전달하며 어떤 함수를 호출할 때 그 상수 인자가 사전에 지정된 범위를 초과한 경우를 검출합니다.",
  "desc.RESTRICT_USE_OF_EXTERN_KEYWORD": "extern 키워드 사용 체커는 extern 키워드를 사용한 경우를 검출합니다.",
  "desc.RETURN_EMPTY_ARRAY_INSTEAD_OF_NULL": "빈 배열 대신 널 반환 체커는 한 함수 안에서 배열 객체를 반환하는 구문과 널을 반환하는 구문이 동시에 존재하는 경우를 검출합니다.",
  "desc.RETURN_ERRNO_WITH_ERRNO_T_TYPE": "잘못된 오류 번호 반환 타입 체커는 errno 관련 오류 코드를 반환하는 함수의 반환 타입이 errno_t로 선언되지 않은 경우를 검출합니다.",
  "desc.RETURN_FLOAT_CASTING": "실수형 캐스팅 없이 값 반환 체커는 실수형을 반환하는 함수에서 값을 실수형으로 캐스팅하지 않고 반환하는 구문을 검출합니다.",
  "desc.RETURN_FREE": "해제된 변수 반환 체커는 이미 해제된 메모리를 가리키는 변수를 반환하는 코드를 검출합니다.",
  "desc.RETURN_FROM_FINALLY_BLOCK": "finally 블럭 내부에서 return 사용 체커는 finally 블록 내부에서 return 을 하면 검출합니다.",
  "desc.RETURN_IN_CATCH_STATEMENT": "catch 블록에서 반환 구문 사용 체커는 catch 블록 안에 반환 구문이 있는 경우를 검출합니다.",
  "desc.RETURN_LOCAL": "지역 변수의 주소 반환 체커는 지역 변수의 주소를 반환하는 코드를 검출합니다.",
  "desc.RETURN_PARAM_ADDR": "매개변수의 주소값 반환 체커는 함수 매개변수의 주소값을 반환하는 수식을 검출합니다.",
  "desc.RETURN_REFERENCE_PARAM": "참조로 받은 인자 값의 반환 체커는 함수에서 참조 또는 const 참조로 전달된 인자를 참조 혹은 포인터로 반환하는 구문을 검출합니다.",
  "desc.RETURN_REFERENCE_PARAM2": "레퍼런스 형이나 const 레퍼런스 형으로 넘어온 인자의 레퍼런스나 포인터를 반환하면 안됩니다.",
  "desc.RETURN_SHALL_NOT_HAVE_EXPRESSION": "void 함수에서 값 반환 체커는 반환 타입이 void인 함수가 반환문에서 값을 반환하는 경우를 검출합니다.",
  "desc.RETURN_VALUE_SHOULD_BE_CONST": "허용된 상수가 아닌 반환 사용 체커는 함수의 반환 구문에서 옵션에 지정된 상수가 아닌 값을 사용하는 코드를 검출합니다.",
  "desc.REUSE_NAME_IN_DIFFERENT_FILE": "파일 간 식별자 중복 체커는 다른 파일에서 같은 함수명 혹은 변수명을 재사용하는 경우를 검출합니다.",
  "desc.REVERSIBLE_ONE_WAY_HASH": "취약한 해시 알고리즘 체커는 보안성이 약한 해시 알고리즘을 사용한 경우를 검출합니다.",
  "desc.RedundantCondition": "잉여 조건이 있습니다.",
  "desc.RedundantFieldInitializer": "기본값과 같은 값으로 초기화하지 않아야 합니다.",
  "desc.RemoteInterfaceNamingConvention": "Session EJB의 Remote 인터페이스의 이름은 Session이나 EJB, 또는 Bean으로 끝나지 말아야 합니다.",
  "desc.RemoteSessionInterfaceNamingConvention": "Session EJB의 Remote Home 인터페이스의 이름은 Home으로 끝나야 합니다.",
  "desc.ReplaceEnumerationWithIterator": "Enumeration 타입 사용을 검출합니다.",
  "desc.ReplaceHashtableWithMap": "Hashtable 타입 사용을 검출합니다.",
  "desc.ReplaceVectorWithList": "Vector 타입 사용을 검출합니다.",
  "desc.ReturnAddressOfAutoVariable": "Auto로 선언된 변수의 주소가 함수에서 반환됩니다.",
  "desc.ReturnAddressOfFunctionParameter": "함수 파라미터의 주소가 반환됩니다.",
  "desc.ReturnEmptyArrayRatherThanNull": "배열을 반환하는 메소드에서 널 반환 구문을 검출합니다.",
  "desc.ReturnFromFinallyBlock": "finally 블록 안에서 반환 구문을 사용하는 경우를 검출합니다.",
  "desc.ReturnLocalVariable": "지역 변수로 선언된 배열의 주소가 함수에서 반환됩니다.",
  "desc.ReturnReference": "지역 변수의 레퍼런스가 반환됩니다.",
  "desc.SAFELY_EXTRACT_FILES_FROM_ZIPINPUTSTREAM": "안전하지 않은 ZipInputStream에서의 파일 추출 체커는 신뢰할 수 없는 압축 파일을 해제할 때 파일 크기와 이름을 확인하지 않는 경우를 검출합니다.",
  "desc.SAME_THE_NUMBER_OF_PARAMETERS": "함수 선언 시 설정한 인자의 갯수와 호출 시 사용한 인자의 갯수가 일치하지 않습니다.",
  "desc.SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX": "신뢰할 수 없는 정규식 체커는 검증되지 않은 외부 입력이 포함된 정규식 문자열을 검출합니다.",
  "desc.SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX_ASPNET": "신뢰할 수 없는 정규식 체커는 검증되지 않은 외부 입력이 포함된 정규식 문자열을 검출합니다.",
  "desc.SAST.SW.DART.6457": "소스 코드 내에 하드코드된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.",
  "desc.SAST.SW.DART.6458": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.",
  "desc.SAST.SW.DART.6459": "소스 코드 내에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.",
  "desc.SAST.SW.DART.6460": "소스 코드나 주석 내에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.",
  "desc.SAST.SW.DART.6462": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다. 하지만 해시 함수인 MD5나 SHA1의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다.",
  "desc.SAST.SW.DART.6463": "암호학적으로 안전하지 않은 난수 생성기는 예측 가능한 값들을 생성할 수 있으며, 이는 보안 취약점으로 이어질 수 있습니다.",
  "desc.SAST.SW.DART.6464": "취약한 암호화 알고리즘은 공격자에게 데이터를 해독할 수 있는 기회를 제공할 수 있습니다. 예전에는 해독하는데 몇 십 억년이 걸릴 것이라고 예상되던 알고리즘이 지금은 며칠이나 몇 시간 내에 해독되기도 합니다. RC2, DES, Blowfish 등의 알고리즘이 여기에 해당됩니다.",
  "desc.SAST.SW.DART.6465": "RSA 암호화는 공개키 암호화 방식 중 하나로, 키의 길이에 따라 암호의 강도가 달라집니다. 현재, 대부분의 상황에서 적절하다고 간주되는 키 길이는 2048 bits입니다. 현재의 컴퓨팅 능력으로는 이를 깨트리는 것이 실질적으로 불가능하기 때문입니다.",
  "desc.SAST.SW.DART.6491": "주석문 내에 하드코드된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.",
  "desc.SAST.SW.DART.6492": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.",
  "desc.SAST.SW.DART.6493": "주석문에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.",
  "desc.SAST.SW.DART.6494": "주석문에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.",
  "desc.SAST.SW.LUA.7155": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.",
  "desc.SAST.SW.LUA.7156": "소스 코드 내에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.",
  "desc.SAST.SW.LUA.7157": "소스 코드에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.",
  "desc.SAST.SW.LUA.7158": "소스 코드 내에 하드코딩된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.",
  "desc.SAST.SW.LUA.7159": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다. 하지만 해시 함수인 MD5나 SHA1의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다.",
  "desc.SAST.SW.LUA.7160": "암호학적으로 안전하지 않은 난수 생성기는 예측 가능한 값들을 생성할 수 있으며, 이는 보안 취약점으로 이어질 수 있습니다.",
  "desc.SAST.SW.LUA.7161": "RSA 암호화는 공개키 암호화 방식 중 하나로, 키의 길이에 따라 암호의 강도가 달라집니다. 현재, 대부분의 상황에서 적절하다고 간주되는 키 길이는 2048 bits입니다. 현재의 컴퓨팅 능력으로는 이를 깨트리는 것이 실질적으로 불가능하기 때문입니다.",
  "desc.SAST.SW.LUA.7162": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.",
  "desc.SAST.SW.LUA.7163": "주석문에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.",
  "desc.SAST.SW.LUA.7164": "주석문에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.",
  "desc.SAST.SW.LUA.7165": "주석문 내에 하드코드된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.",
  "desc.SAST.SW.LUA.7166": "디버그 문은 개발 과정에서 로깅을 위해 사용됩니다. 하지만, 이러한 디버그 문은 프로덕션 코드에서는 성능 저하를 일으키고, 민감한 정보를 로그로 노출할 위험이 있어 제거되어야 합니다.",
  "desc.SAST.SW.LUA.7168": "취약한 암호화 알고리즘은 공격자에게 데이터를 해독할 수 있는 기회를 제공할 수 있습니다. 예전에는 해독하는데 몇 십 억년이 걸릴 것이라고 예상되던 알고리즘이 지금은 며칠이나 몇 시간 내에 해독되기도 합니다. RC2, DES, Blowfish 등의 알고리즘이 여기에 해당됩니다.",
  "desc.SAVE_UNNECESSARY_REALLOCATION": "컨테이너의 재할당 발생 체커는 컨테이너의 불필요한 재할당이 발생하는 수식을 검출합니다.",
  "desc.SAVING_UNSERIALIZABLE_OBJECTS_TO_DISK": "직렬화되지 않은 객체를 저장하려 하면 NotSerializableException 예외가 발생하여 데이터 손실 및 시스템 충돌이 발생할 수 있습니다.",
  "desc.SCOPE_FOR_IN_VARIABLE.JS": "for 구문 내에서의 부적절한 변수 선언 체커는 for 내에서 변수를 선언해서 사용하는 경우에, var 선언문을 사용하지 않았을 경우에 검출됩니다.",
  "desc.SCRIPT_INJECTION.REACT": "JSON.stringify()는 JavaScript 값이나 객체를 JSON 문자열로 변환하기 위해 사용됩니다. 일반적으로 JSON.stringify()는 별다른 위험이 없는 API이나 HTML 기반 환경에서 사용하면 XSS위험이 있습니다.",
  "desc.SECURITY.ARGUMENT.ASSERT": "Assert를 사용하여 메소드 인수의 유효성 검사 금지 체커는 메소드의 인자를 assert 구문에 사용하면 검출합니다.",
  "desc.SECURITY.ARGUMENT.DOPRIVILEGE": "권한이 있는 블록에 신뢰할 수 없는 변수 허용 금지 체커는 AccessController.doPrivileged() 메소드에서 외부 값이 검증 없이 사용되면 검출합니다.",
  "desc.SECURITY.ARGUMENT.LOGGER": "지정한 예외 처리 블록에서 java.util.logging.Logger 를 사용하여 로그를 작성할 경우를 검출합니다.",
  "desc.SECURITY.ARGUMENT.READ.BYTE": "read() 메소드 사용 시 버퍼 배열 확인 체커는 read() 메소드의 인자가 byte[] 일 때 길이 관련 인자가 없으면 검출합니다.",
  "desc.SECURITY.ARGUMENT.THREAD_POOL": "스레드 풀을 사용 시 같은 풀을 사용하여 sub-task 수행 금지 체커는 스레드 풀을 사용할 때 같은 풀을 사용하여 sub-task 를 수행하면 검출합니다.",
  "desc.SECURITY.ARGUMENT.XML_INJECTION": "SAX 와 DOM 과 같은 XML parser 를 이용하여 파싱 할 때 외부에서 입력받은 값을 그대로 사용했을 경우를 검출합니다.",
  "desc.SECURITY.ARRAY_FIELD.READ_ONLY.CSHARP": "배열을 보유하는 public 또는 protected 필드가 읽기 전용으로 선언되었습니다.",
  "desc.SECURITY.ASSERT.BOOLEAN": "assert 문에서 사용된 표현식에 부수효과 발생 가능 체커는 Assert 문에서 메소드를 호출하거나 incremental, assignment 문을 사용하면 검출합니다.",
  "desc.SECURITY.ASSIGN.BIG_INTEGER": "BigInter.toByteArray() 를 byte[] 에 바로 할당 할 경우를 검출합니다.",
  "desc.SECURITY.ATTRIBUTE.SUPPRESSED_SECURITY.CSHARP": "public 또는 protected 형식이나 멤버에 System.Security.SuppressUnmanagedCodeSecurityAttribute 특성이 있습니다.",
  "desc.SECURITY.BIG_INTEGER_EXTENDABLE": "BigInteger 클래스가 확장성을 유지되는 경우를 검출합니다.",
  "desc.SECURITY.CALL.APPEND.LOOP": "컬렉션 클래스에 삽입 메소드 호출 체커는 컬렉션 관련 클래스에 삽입 메소드를 호출하면 검출 합니다.",
  "desc.SECURITY.CALL.BIG_ENDIAN": "little endian 을 호환하는 메소드를 제공 체커는 Big endian 으로만 읽기/쓰기 가능한 메소드들을 호출하면 검출합니다.",
  "desc.SECURITY.CALL.DEFAULT_READ_OBJECT": "readObject 메소드 내에 defaultReadObject 메소드 호출이 있는지 확인 합니다.",
  "desc.SECURITY.CALL.DELETE_ON_EXIT": "프로그램을 종료하기 전 임시 파일 제거 체커는 createTempFile() 메소드를 호출한 후에 deleteOnExit() 메소드를 호출하면 검출합니다.",
  "desc.SECURITY.CALL.DEPRECATED": "보안에 취약하다고 여겨지는 메소드를 사용했을 경우를 검출합니다.",
  "desc.SECURITY.CALL.DO_PRIVILEGED": "AccessController 클래스의 doPrivileged 메소드를 호출 할 때 두 번째 인자가 없을 경우를 검출 합니다.",
  "desc.SECURITY.CALL.FILE_DELETE": "파일 관련된 에러 감지 및 처리 체커는 파일 객체의 인스턴스에서 delete() 메소드를 단독으로 호출하면 검출합니다.",
  "desc.SECURITY.CALL.GET_CONTEXT_CLASS_LOADER": "getContextClassLoader 메소드를 호출 할 경우 검출 합니다.",
  "desc.SECURITY.CALL.KEY_EQUALS": "key.equals() 메소드로 암호 키 비교 체커는 key.equals() 메소드로 암호 키를 비교하면 이슈를 검출합니다.",
  "desc.SECURITY.CALL.LOCK_HOLDING": "잠금 객체를 가지고 있는 동안 블록 될 수 있는 작업 수행 금지 체커는 Synchronized 선언한 메소드 내부에 스레드를 멈추게 하는 메소드가 호출되면 검출합니다.",
  "desc.SECURITY.CALL.PUBLIC_METHOD": "readObject() 메소드 내에 재정의 가능한 메소드 호출 체커는 readObject() 메소드 내에 오버라이딩하는 메소드 호출이 있으면 검출합니다.",
  "desc.SECURITY.CALL.RAW_COLLECTION": "원시 타입의 컬렉션에서 메소드를 호출 체커는 원시 타입의 컬렉션에서 메소드를 호출하면 이슈를 검출합니다.",
  "desc.SECURITY.CALL.REFLECTION": "reflection 사용 확인 체커는 클래스, 메소드, 필드에 접근 권한을 설정할 수 있는 reflection을 사용하면 이슈를 검출합니다.",
  "desc.SECURITY.CALL.REFLECT_PERMISSION": "java.lang.ReflectPermission 사용 체커는 java.lang.ReflectPermission을 사용하여 권한을 얻으면 검출합니다.",
  "desc.SECURITY.CALL.REMOVE.LOOP": "반복에 사용되는 컬렉션 수정 방지 체커는 Loop 에서 컬렉션의 아이템을 삭제하면 이슈를 검출합니다.",
  "desc.SECURITY.CALL.SECURITY_CHECK": "보안 관리 검사를 통해 민감한 연산 보호 체커는 지정한 메소드 내에 보안 검사를 하는 메소드 호출이 없으면 검출합니다.",
  "desc.SECURITY.CALL.SHUTDOWN_HOOK": "addShutdownHook 메소드가 호출 된 후에 halt 메소드 호출을 했을 경우를 검출합니다.",
  "desc.SECURITY.CALL.SYSTEM_GETENV": "System.getEnv() 메소드 호출 체커는 System.getEnv() 메소드를 호출하면 이슈를 검출합니다.",
  "desc.SECURITY.CALL.THREAD_INTERRUPTED": "스레드 풀에 submit 된 태스크 인터럽트 허용 체커는 스레드를 상속하거나 Runnable 을 구현하는 클래스 에서 synchronized 블록을 사용할 때 Thread.interrupted() 메소드를 호출 하지 않으면 검출합니다.",
  "desc.SECURITY.CALL.THREAD_START": "객체의 생성자에서 this 참조자가 탈출하지 못하도록 방지 체커는 생성자 내에서 스레드 실행 메소드가 호출되면 검출합니다.",
  "desc.SECURITY.CALL.THREAD_STOP": "Thread.stop() 메소드 호출 확인 체커는 Thread.stop() 메소드를 호출하면 이슈를 검출합니다.",
  "desc.SECURITY.CALL.THROWS.FINALLY": "메소드에서 생성된 예외 미처리 체커는 메소드에서 생성한 예외 들에 대한 예외처리를 하지 않으면 검출합니다.",
  "desc.SECURITY.CALL.UNLOCK": "unlock() 메소드를 finally 블록 내에서 호출 하지 않은 경우를 검출합니다.",
  "desc.SECURITY.CALL.URL_EQUALS": "URL.equals() 메소드 호출 확인 체커는 URL.equals() 메소드를 호출하면 이슈를 검출합니다.",
  "desc.SECURITY.CALL.WAIT.LOOP": "Synchronized 블록 내에서 wait 또는 await 메소드가 반복문이 아닌 곳에 있을 경우 검출합니다.",
  "desc.SECURITY.CAST.FLOAT_DOUBLE": "정수형 타입에서 부동 소수점 타입으로 형변환 시 손실 주의 체커는 float 형 변수를 int 또는 long 형으로 cast하거나, double 형 변수를 long 형으로 cast하는 경우 이슈를 검출합니다.",
  "desc.SECURITY.CHECK.OVERRIDE_METHOD": "보호되지 않은 자식 클래스의 의존 관계 체커는 수퍼 클래스가 수정될 때 자식 클래스의 모든 관련 불변 값이 유지되지 못하면 이슈를 검출합니다.",
  "desc.SECURITY.CLASS.CLONE": "중요한 클래스 복사 금지 체커는 중요한 클래스를 상속하고 Cloneable을 구현하는 클래스의 하위 클래스에서 clone() 메소드를 구현하는 경우 이슈를 검출합니다.",
  "desc.SECURITY.CLASS.MUTABLE_COPY": "변경 가능한 생성자 인자 값으로 필드 값 할당 체커는 생성자 인자 값으로 변경 가능한 값을 받아 필드 값으로 할당하면 검출합니다.",
  "desc.SECURITY.CLASS_IN_TRUST_PACKAGE": "신뢰할 수 없는 코드 사용 체커는 신뢰할 수 없는 코드를 사용하는 경우를 검출합니다.",
  "desc.SECURITY.COMPARE.CLASS_NAME": "클래스 이름으로 클래스 비교 체커는 클래스 이름으로 클래스를 비교하는 코드를 검출합니다.",
  "desc.SECURITY.COMPARE.CYCLIC_ORDER": "compareTo 메소드 내에서 cyclic order를 나타내는 클래스가 사용된 경우를 검출합니다.",
  "desc.SECURITY.DECLARE.CLASS_NAME.JSL": "Java standard library에 존재하는 클래스 이름과 같은 클래스를 선언할 경우 이슈를 검출합니다.",
  "desc.SECURITY.DECLARE.INPUTSTREAM.WRAPPER": "메소드 내에 BufferedInputStream 의 내부 인스턴스가 System.in 를 인자로 사용하여 생성되었을 경우를 검출합니다.",
  "desc.SECURITY.DECLARE.INSTANCE.ORDER": "클래스 초기화 순서 체커는 생성자 내에 필드 멤버의 연산을 할 때 필드 멤버와 instance 생성의 순서가 잘 못 되면 검출 합니다.",
  "desc.SECURITY.DECLARE.LOCK_OBJECT": "Synchronized 블록에서 사용하는 잠금 객체가 public이거나 private volatile일 경우 이슈를 검출합니다.",
  "desc.SECURITY.DEPLOY.REMOTELY_MONITORING": "원격 모니터링이 가능한 애플리케이션 배포 금지 체커는 애플리케이션의 원격 모니터링이 가능하도록 설정하는 경우를 검출합니다.",
  "desc.SECURITY.DISABLE.BYTECODE_VERIFICATION": "바이트코드 검증 비활성화 금지 체커는 바이트코드 검증을 비활성화하는 옵션을 사용하는 경우를 검출합니다.",
  "desc.SECURITY.EXCEPTION_THROWING_CONSTRUCTOR": "생성자 내에서 예외 생성 체커는 생성자 내에서 예외를 생성하면 검출합니다.",
  "desc.SECURITY.EXPRESSION.BITWISE_OPERATION": "하나의 식에 시프트 연산과 사칙 연산이 동시에 사용되었을 경우를 검출 합니다.",
  "desc.SECURITY.FILE.GLOBAL_ACCESS": "Android 내부 저장소 파일에 공개 접근 체커는 내부 저장소에 있는 파일에 접근할 때 MODE_PRIVATE 모드로 접근하지 않는 경우를 검출합니다.",
  "desc.SECURITY.FILE_AND_FLAG.LOOP": "블로킹 작업을 수행하는 스레드가 종료될 수 있는지 파악 체커는 Volatile flag 또는 Thread.interrupted 메소드와 함께 파일 I/O 메소드를 While 문 표현식에 사용하면 검출합니다.",
  "desc.SECURITY.FLOAT_MAX_VALUE": "strictfp 를 사용하지 않았을 경우를 검출 합니다.",
  "desc.SECURITY.IMPLEMENT.EXTERNALIZABLE": "외부화 가능한 객체의 덮어쓰기 방지 체커는 Externalizable 을 구현하는 클래스에서 특정 메소드를 호출 할 때 synchronize 블록이 없으면 검출",
  "desc.SECURITY.IMPROPER_RESTORATION_ON_FAILURE": "예외에 대한 부적절한 복원 체커는 try 블록에서 예외를 throw하고, 그 아래에서 필드에 값을 할당하면 검출합니다.",
  "desc.SECURITY.INCOMPLETE_STATIC_INITIALIZER": "불완전한 정적 초기화 블록 체커는 불완전하게 초기화될 수 있는 정적 필드가 있으면 검출합니다.",
  "desc.SECURITY.INFINITE_LOOP": "무한 루프 체커는 영원히 끝나지 않을 수도 있는 반복문을 검출합니다.",
  "desc.SECURITY.INFINITE_LOOP.KOTLIN": "무한 루프 체커는 영원히 끝나지 않을 수도 있는 반복문을 검출합니다.",
  "desc.SECURITY.INFORMATION_LEAK.EXCEPTION": "특정 예외 처리를 하는 Catch 문 안에 정보가 유출 될 수 있는 메소드를 호출 한 경우를 검출합니다.",
  "desc.SECURITY.INITIALIZER.THREAD": "클래스를 초기화 하는 도중에 background 스레드 사용 금지 체커는 클래스가 초기화 되기 전에 스레드가 사용되면 검출합니다.",
  "desc.SECURITY.INNER_CLASS.SERIALIZABLE": "내부 클래스의 인스턴스가 직렬화되지 않음 체커는 내부 클래스가 Serializable 을 구현할 때 정적 내부 클래스가 아니면 검출합니다.",
  "desc.SECURITY.INTER_CLASS_CYCLE": "클래스 초기화 순환 체커는 클래스 내에 초기화 순환이 있으면 검출합니다.",
  "desc.SECURITY.LINK_DEMAND.NOT_IDENTICAL.CSHARP": "public 형식의 public 또는 protected 메소드가 메소드를 재정의하거나 인터페이스를 구현하고 이 메소드의 링크 요청이 인터페이스 또는 가상 메소드의 링크 요청과 같지 않습니다.",
  "desc.SECURITY.LOOP_VARIABLE_FINAL": "for-each 문 루프 변수의 final 한정자 확인 체커는 for-each문 내에 사용된 루프변수에 final 한정자가 없으면 검출합니다.",
  "desc.SECURITY.METHOD.LOCALE": "문자열에 toUpperCase(), 또는 toLowerCase()를 할 때 locale 설정이 없을 경우를 검출 합니다.",
  "desc.SECURITY.METHOD.OVERRIDE": "보안 검사를 수행하는 메소드는 private 또는 final 로 선언 체커는 지정한 메소드가 public 이지만 final 이 아니면 검출합니다.",
  "desc.SECURITY.METHOD.OVERRIDE.CLONEABLE": "clone() 메소드로부터 오버라이드할 수 있는 메소드를 호출 금지 체커는 clone() 메소드에서 오버라이딩이 가능한 메소드가 호출되면 검출합니다.",
  "desc.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS": "getPermissions 오버라이딩 함수에서 super.getPermissions 호출 확인 체커는 URLClassLoader 를 상속받은 클래스의 getPermissions 오버라이딩 함수에서 super.getPermissions 를 호출하지 않으면 검출합니다.",
  "desc.SECURITY.METHOD.OVERRIDE.STATIC": "수퍼 클래스 혹 은 수퍼 인터페이스에 선언된 메소드를 숨기는 클래스 메소드 선언 금지 체커는 상속하는 클래스에 오버라이딩 메소드가 public 정적이면 검출 합니다.",
  "desc.SECURITY.METHOD.PROTECTED": "Protected 메소드 접근 가능 체커는 메소드가 protected 한정자를 갖지만 하위 클래스에서 public으로 오버라이딩하면 검출합니다.",
  "desc.SECURITY.METHOD.SERIALIZABLE": "Serializable 을 구현하는 클래스에서 특정 메소드를 구현할 경우 보안 검사 메소드가 호출하지 않으면 검출합니다.",
  "desc.SECURITY.MISSING.ACCESS_PERMISSION": "파일 생성(작성) 시 올바른 권한 설정 없이 파일을 생성하는 경우를 검출합니다.",
  "desc.SECURITY.MUTABLE_REFERENCE_TYPE.READ_ONLY.CSHARP": "외부에서 볼 수 있는 형식에 변경 가능한 참조 형식인, 외부에서 볼 수 있는 읽기 전용 필드가 포함되었습니다.",
  "desc.SECURITY.PARTIALLY_INITIALIZED_OBJECT": "부분적으로 초기화될 수 있는 객체 확인 체커는 스레드 내부에서 생성될 때 부분적으로 초기화 되어 사용될 수 있는 객체가 있으면 검출합니다.",
  "desc.SECURITY.PATTERN.METHOD_CHAINING": "체인된 메소드가 호출될 때는 원자적 특징 확인 체커는 스레드 안전하지 않은 메소드 체이닝 패턴을 검출합니다.",
  "desc.SECURITY.PATTERN.THREAD_PER_MESSAGE": "다수의 요청을 받을 때는 스레드 풀을 사용하여 서비스 처리 체커는 메시지 별 스레드 패턴에서 스레드 풀을 사용하지 않으면 검출 합니다.",
  "desc.SECURITY.PRIVATE_FIELD.INNER_CLASS": "내부 클래스 안에 있는 public 메소드에서 외부 클래스의 private 필드를 사용 할 경우를 검출 합니다.",
  "desc.SECURITY.PRIVATE_INTERFACE_METHOD.NOT_SEALED.CSHARP": "상속할 수 있는 public 형식에서 internal(Visual Basic의 경우 Friend) 인터페이스의 재정의 가능한 메소드 구현을 제공합니다.",
  "desc.SECURITY.PUBLISH_BEFORE_INITIALIZATION": "초기화 전에 인스턴스에 publish 확인 체커는 특정 클래스에서 초기화 전에 인스턴스에 publish 하면 검출합니다.",
  "desc.SECURITY.RETURN.INPUTSTREAM_READ": "InputStream.read() 메소드의 반환 값 확인 체커는 InputStream.read() 메소드의 반환 값을 정수형 변수로 받지 않고 -1 과 비교하면 검출합니다.",
  "desc.SECURITY.RETURN.INTEGER_DATA": "readInt() 메소드의 반환 값 마스킹 처리 체커는 long 타입의 변수에 readInt() 메소드의 반환 값을 '0xFFFFFFFFL' 마스킹 없이 사용하면 검출합니다.",
  "desc.SECURITY.RETURN.WRAP_OR_DUPLICATE": "duplicate() 메소드를 통해 CharBuffer 형의 값 복사 금지 체커는 duplicate() 메소드를 통해 CharBuffer 형의 값을 복사하면 검출합니다.",
  "desc.SECURITY.SERIALIZABLE.FIELD.TRANSIENT": "암호화되지 않은 중요한 데이터의 직렬화 체커는 필드가 private transient가 아니면 검출합니다.",
  "desc.SECURITY.SERIALIZABLE.METHOD_MODIFIER": "readResolve 와 writeReplace 메소드가 protected 가 아닐 경우를 검출합니다.",
  "desc.SECURITY.SERIALIZABLE.METHOD_OVERRIDE": "직렬화 구현 메소드들의 오버라이딩 체커는 Serializable 구현 메소드 들을 오버라이딩 하지 않았거나 예외를 생성하지 않으면 검출합니다.",
  "desc.SECURITY.SERIALIZABLE.PRIVATE_MUTABLE_COMPONENT": "readObject 메소드 내에서 private으로 선언된 변경될 수 있는 구성 요소에 대한 defensive copy 가 없을 경우를 검출합니다.",
  "desc.SECURITY.SERIALIZATION.INSECURE_CONSTRUCTOR.CSHARP": "취약한 직렬화 생성 허용 체커는 특정 어셈블리 내에서 일반 생성자의 보안 요구사항이 직렬화 생성자에는 적용되지 않은 경우를 검출합니다.",
  "desc.SECURITY.SPLIT_MULTI_BYTE_ENCODED": "문자열 클래스 내에서 다중 바이트 문자를 다룰 때 인코딩 문제가 발생할 경우를 검출 합니다.",
  "desc.SECURITY.STRING.ENCODING": "InputStreamReader, OutputStreamWriter 객체의 인코딩 관련 파라미터 타입도 검사합니다.",
  "desc.SECURITY.SYNCHRONIZE.ATOMIC_VALUE": "공유 변수에 대해 원자성 보장 체커는 멀티 스레드 환경에서 공유 변수에 대한 복합 연산을 수행할 때, 해당 공유 변수에 대해서 원자성(Atomic)이 보장되지 않는 코드를 검출합니다.",
  "desc.SECURITY.SYNCHRONIZE.BACK_COLLECTION": "백업 컬렉션에 접근할 수 있는 경우 컬렉션뷰 동기화 금지 체커는 다른 컬렉션에서 가져온 값으로 초기화되면 검출합니다.",
  "desc.SECURITY.SYNCHRONIZE.CLASS_LOCK": "Synchronized 블록에 사용되는 잠금 클래스에 private final로 선언한 필드가 있을 경우 이슈를 검출합니다.",
  "desc.SECURITY.SYNCHRONIZE.GET_CLASS": "getClass() 메소드를 잠금 객체로 사용 체커는 Synchronize 블락에서 getClass() 메소드를 잠금 객체로 사용하면 검출합니다.",
  "desc.SECURITY.SYNCHRONIZE.IMMUTABLE_OBJECT": "변경 불가능한 객체 (Immutable object) 가 synchronized 하지 않은 메소드에서 사용될 경우를 검출 합니다.",
  "desc.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION": "높은 레벨의 동시성 객체를 이용하여 내재된 잠금 방식으로 동기화 금지 체커는 Lock 혹은 Condition 인터페이스를 구현한 객체를 사용해 내재된 잠금 방식으로 동기화 처리를 하는 경우 이슈를 검출합니다.",
  "desc.SECURITY.SYNCHRONIZE.METHOD.LOCK_FIELD": "Private boolean 타입의 필드를 메소드에서 공유 데이터로 사용할 때 메소드가 synchronized가 아닐 경우 이슈를 검출합니다.",
  "desc.SECURITY.SYNCHRONIZE.ORDER": "교착 상태 체커는 synchronized 블록 내에서 동일한 클래스로 또 한번 잠금을 사용하는 경우 이슈를 검출합니다.",
  "desc.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT": "재사용 가능한 객체를 잠금 객체로 사용 체커는 재사용 가능한 객체를 synchronized의 잠금 객체로 사용하면 이슈를 검출합니다",
  "desc.SECURITY.SYNCHRONIZE.STATIC.FIELD": "신뢰할 수 없는 코드에 의해 수정될 수 있는 static 필드에 접근 동기화 필요 체커는 정적 필드가 synchronized 블록 안에 정의되지 않으면 검출합니다.",
  "desc.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED": "execute() 메소드 수행 시 try-finally 블록 사용 확인 체커는 ThreadLocal 타입의 필드를 가진 클래스에 대해서 execute() 메소드를 수행할 때, try-finally 블록을 사용하지 않으면 검출합니다.",
  "desc.SECURITY.THREAD.SHARED_VARIABLE": "run() 메소드에 있는 필드 타입 확인 체커는 run() 메소드에 있는 필드의 타입이 primitive 이며 volatile 이 아니면 검출합니다.",
  "desc.SECURITY.THROW.THREAD_POOL": "스레드 풀에서 실행되는 태스크가 실패할 때 애플리케이션에 상황을 통지할 것을 보장 체커는 스레드 풀 객체 생성으로 Executors.newFixedThreadPool() 메소드를 사용하면 검출 합니다.",
  "desc.SECURITY.TYPE.AUTO_CONVERSION": "컬렉션 관련 객체의 메소드 호출 시 인자 타입이 연산에 의해 변경될 경우를 검출합니다.",
  "desc.SECURITY.TYPE_LINK_DEMAND.NO_INHERITANCE_DEMAND.CSHARP": "public unsealed 형식이 링크 요청으로 보호되고, 재정의 가능한 메소드가 있으며, 형식과 메소드가 모두 상속 요청으로 보호되지 않습니다.",
  "desc.SECURITY.VARIABLE_IN_EXPRESSION": "하나의 식 안에서 한 변수가 두번 이상 update 되었을 경우를 검출합니다.",
  "desc.SECURITY_DECISION_ON_DNS_LOOKUP": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.",
  "desc.SECURITY_DECISION_ON_DNS_LOOKUP.OBJC": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.",
  "desc.SECURITY_DECISION_ON_DNS_LOOKUP.SWIFT": "DNS 조회에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.",
  "desc.SENSITIVE_COOKIE.FLAG.JS": "일반적으로 세션 정보는 웹 애플리케이션에서 쿠키를 사용하여 전송됩니다. 그러나 부적절하게 쿠키 플래그를 사용하면 MITM 공격이나 XSS를 이용한 쿠키 탈취 등의 세션 관리 취약점에 노출될 수 있습니다.",
  "desc.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE": "안전하지 않은 쿠키 체커는 쿠키를 암호화하지 않은 채로 전송하는 경우를 검출합니다.",
  "desc.SERVER_SIDE_REQUEST_FORGERY": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 경우를 검출합니다.",
  "desc.SERVER_SIDE_REQUEST_FORGERY.GO": "외부 사용자로부터 입력받은 데이터를 그대로 URL로 사용하는 것은 위험합니다. 이로 인해 악의적인 요청이 전송되어 서버사이드 요청 위조와 같은 문제가 생길 수 있습니다. 이는 공격자가 서버로 하여금 내부 네트워크에 대한 요청을 보내도록 조작하는 보안 약점입니다.",
  "desc.SERVER_SIDE_REQUEST_FORGERY.JS": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 코드를 검출합니다.",
  "desc.SERVER_SIDE_REQUEST_FORGERY.KOTLIN": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 경우를 검출합니다.",
  "desc.SERVER_SIDE_REQUEST_FORGERY.PHP": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 코드를 검출합니다.",
  "desc.SERVER_SIDE_REQUEST_FORGERY.PYTHON": "검증되지 않은 외부 입력 값이 서버 간의 요청에 사용되면 악의적인 행위가 발생할 수 있는 보안약점입니다. 웹 서버에 취약한 애플리케이션이 존재하는 경우 공격자는 URL 또는 요청문을 위조하여 접근 통제를 우회하는 방식으로 비정상적인 동작을 유도하거나 신뢰된 네트워크에 있는 데이터를 획득할 수 있습니다.",
  "desc.SERVER_SIDE_REQUEST_FORGERY_CSHARP": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 코드를 검출합니다.",
  "desc.SERVICE_ANNOTATION_GUIDE": "Service 주석 가이드 체커는 PGH 에서 서비스 단위로 ServiceDescription 어노테이션 작성 여부를 검출합니다. 해당 어노테이션을 통해 웹 정보 화면에서 서비스별 주석 검색이나 향후 서비스에 대한 메타정보 생성용으로 사용해야 하므로 필수로 작성하셔야 합니다.",
  "desc.SERVLET_WORK_WITH_COMMITTED_RESPONSE": "응답이 커밋된 서블릿의 작업 수행 체커는 서블릿의 응답이 커밋된 후 특정 동작이 수행되는 코드를 검출합니다.",
  "desc.SETTING_MANIPULATION.PYTHON": "시스템 혹은 구성 설정의 외부 제어 체커는 검증되지 않은 외부 입력값으로 시스템 설정이나 구성 설정을 변경하는 경우를 검출합니다.",
  "desc.SETTING_MANIPULATION.VBS": "시스템 혹은 구성 설정의 외부 제어 체커는 검증되지 않은 외부 입력값으로 시스템 설정이나 구성 설정을 변경하는 경우를 검출합니다.",
  "desc.SET_ERRNO_ZERO_BEFORE_CALL_FUNC": "초기화되지 않은 errno 체커는 errno를 통해 오류 상황을 알리는 함수를 호출하기 전에 errno를 0으로 초기화하지 않는 경우를 검출합니다.",
  "desc.SET_HTTP_ONLY_COOKIES.WEB.CONFIG": "HttpOnly가 아닌 쿠키 체커는 HttpOnly 속성을 부여하지 않은 쿠키 사용을 검출합니다.",
  "desc.SET_STATIC_IN_NON_STATIC": "인스턴스 메소드 내에서의 정적 필드 변경 체커는 인스턴스 메소드 코드 중 정적 필드에 값을 대입하는 구문을 검출합니다.",
  "desc.SHIFT_EXCEEDS_BIT_WIDTH": "대상 타입의 크기보다 큰 시프트 연산 체커는 대상 타입의 비트 크기보다 크게 시프트 연산자(>>, <<)를 적용하는 코드를 검출합니다.",
  "desc.SHIFT_NEGATIVE": "음수 값 시프트 연산 체커는 음수 값에 시프트 연산자(>>, <<)를 적용하는 코드를 검출합니다.",
  "desc.SIDE_EFFECT.DESIGNATED_INIT": "지정 초기화 리스트에서 부수 효과 발생 체커는 지정 초기화 리스트의 값 계산식에 부수 효과가 존재하는 경우를 검출합니다.",
  "desc.SIDE_EFFECT.INITIALIZER_LISTS": "초기화 리스트에서 부수 효과 발생 체커는 초기화 리스트의 초기값 계산식에 부수 효과가 존재하는 경우를 검출합니다.",
  "desc.SIDE_EFFECTS_IN_UNEVALUATED_OPERANDS": "특정 수식들은 피연산자를 계산하지 않습니다.",
  "desc.SIDE_EFFECT_RHS_OF_LOGICAL_OP": "논리 연산자의 우측항에 부수 효과 발생 체커는 논리 연산자의 우측항에서 부수 효과를 발생시키는 연산자를 사용하는 수식을 검출합니다.",
  "desc.SIGNAL_HANDLER_CALLS_LONGJMP": "시그널 핸들러로 등록된 함수에서는 longjmp()를 호출하여서는 안됩니다.",
  "desc.SIGNAL_HANDLER_CALLS_UNSAFE_FUNCTION": "시그널 핸들러 함수에서 비동기식 동작 시 안전하지 않은 함수 호출 체커는 비동기식으로 동작할 때 시그널 핸들러로 등록된 함수에서 안전하지 않은 함수를 호출하는 경우를 검출합니다.",
  "desc.SIGNAL_HANDLER_USES_NON_VOLATILE_VARIABLE": "시그널 핸들러에서 volatile이 아닌 변수 사용 체커는 시그널 핸들러에서 volatile로 선언되지 않은 전역 변수를 사용하는 경우를 검출합니다.",
  "desc.SIGNATURE_DECLARE_THROWS_EXCEPTION": "메서드 또는 생성자 선언 시 throws Exception 사용 체커는 메서드 또는 생성자 선언 시 throws Exception 을 검출합니다.",
  "desc.SIGN_SEAL_WRITE": "잘못된 직렬화 순서 체커는 객체를 직렬화할 때 서명, 봉인, 출력의 순서로 작업하지 않는 경우를 검출합니다.",
  "desc.SINGLE_ARGUMENTED_CONSTRUCTOR_SHOULD_BE_EXPLICIT": "인자가 하나인 생성자는 explicit 으로 선언해야 합니다.",
  "desc.SINGLE_LOOP_COUNTER": "1개가 아닌 루프 카운터 체커는 루프 카운터가 1개가 아닌 for 구문을 검출합니다.",
  "desc.SINGLE_OR_MULTI_COMMENT": "지정된 방식이 아닌 주석문 사용 체커는 한 줄 주석 혹은 여러 줄 주석 중 옵션에 지정된 방식이 아닌 것으로 작성된 주석문을 검출합니다.",
  "desc.SIZEOF_DO_NOT_CONTAIN_SIDE_EFFECTS": "sizeof 피연산자에 부수 효과 발생 체커는 sizeof 피연산자에 부수 효과가 발생하는 수식을 검출합니다.",
  "desc.SIZE_CALCULATION": "메모리 동적 할당을 받기위한 함수 malloc을 사용할 때 자료형의 크기가 다를 경우를 검출합니다.",
  "desc.SLOWLORIS_ATTACK.GO": "Slowloris는 서버에 느리게 요청을 보내어, 서버의 동시 연결 수를 소비하고 다른 사용자의 접근을 막는 공격입니다. 이 공격은 일부분만 전송된 요청으로 서버의 연결을 계속 열려 있게 만들어, 서버가 새로운 연결을 수용하지 못하도록 만듭니다.",
  "desc.SMTP_COMMAND_INJECTION.PYTHON": "SMTP 명령어 삽입 체커는 외부 입력으로부터 전달받은 위험한 데이터로 SMTP 명령을 실행하는 경우를 검출합니다.",
  "desc.SOCKET_IN_WRONG_STATE": "잘못된 소켓 함수 사용 체커는 소켓 관련 함수를 잘못 사용하는 코드를 검출합니다.",
  "desc.SOURCECODE_IN_COMMENT": "주석 내 코드 체커는 주석 내에 소스 코드가 있는 경우를 검출합니다.",
  "desc.SPECIFY_CLASS_MODIFIER.SWIFT": "암시적인 클래스 접근 제어 체커는 엑세스 레벨을 정의하지 읺고 사용하는 경우를 검출합니다.",
  "desc.SPECIFY_LENGTH_TYPEDEF": "스토리지 크기 없이 typedef 선언 체커는 기본 숫자 타입에 대한 typedef 선언에서 스토리지의 크기가 명시되지 않은 경우를 검출합니다.",
  "desc.SQLCC.DOES_NOT_EXIST.COLUMN": "존재하지 않는 컬럼 체커는 존재하지 않는 컬럼을 사용하는 SQL 구문을 검출합니다.",
  "desc.SQLCC.DOES_NOT_EXIST.TABLE": "존재하지 않는 테이블 체커는 존재하지 않는 테이블을 사용하는 SQL 구문을 검출합니다.",
  "desc.SQLCC.INVALID_EXPRESSION": "구문 오류 체커는 문법적으로 잘못된 구문을 검출합니다.",
  "desc.SQLCC.INVALID_TABLE_NAME": "유효하지 않은 테이블 이름 체커는 유효하지 않은 테이블 이름을 검출합니다.",
  "desc.SQLCC.MISMATCH.COLUMN_IS_NOT_IN_GROUP_BY": "잘못된 GROUP BY 절 체커는 GROUP BY 사용 시 SELECT 구문에 기술된 모든 단일 컬럼이 GROUP BY 절에 기술되지 않은 SQL 구문을 검출합니다.",
  "desc.SQLCC.MISMATCH.COLUMN_IS_NOT_IN_ORDER_BY": "SELECT 구문에 포함되지 않은 ORDER BY 절 컬럼 체커는 ORDER BY 절에 기술된 컬럼을 포함하지 않는 SELECT 구문을 검출합니다..",
  "desc.SQLCC.MISMATCH.DATETIME": "날짜 형식 오류 체커는 날짜 형식에 맞지 않는 입력을 검출합니다.",
  "desc.SQLCC.MISMATCH.LENGTH": "컬럼 크기를 초과하는 입력 체커는 컬럼에서 허용된 길이를 초과하는 입력을 검출합니다.",
  "desc.SQLCC.MISMATCH.NUMBER_TYPE": "유효하지 않은 숫자 형식 체커는 데이터베이스에 숫자로 정의된 컬럼에 다른 형식의 값을 입력하는 DML 구문을 검출합니다.",
  "desc.SQLCC.NULL_IN_NOT_NULL_COLUMN": "널 값을 허용하지 않는 컬럼에 널 값 입력 체커는 NOT 널 컬럼에 널 값을 입력하는 구문을 검출합니다.",
  "desc.SQLCC.NULL_IN_NOT_NULL_COLUMN_PK": "PRIMARY KEY 컬럼에 널 값 입력 체커는 PRIMARY KEY 컬럼에 널 값을 입력하는 구문을 검출합니다.",
  "desc.SQLCC.UNUSED.COLUMN": "사용하지 않는 컬럼 체커는 데이터베이스에는 존재하나 DML 구문에서 한 번도 사용되지 않은 컬럼을 검출합니다.",
  "desc.SQLCC.UNUSED.TABLE": "사용하지 않는 테이블 체커는 데이터베이스에는 존재하나 DML 구문에서 한 번도 사용되지 않는 테이블을 검출합니다.",
  "desc.SQL_ID_PREFIX_PATTERN.KEUMKAMWON": "금융감독원 규칙에서는 IBATIS의 SQL ID prefix가 적절한 규칙을 따라 작성되어야 합니다.",
  "desc.SQL_INJECTION": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION.GO": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.",
  "desc.SQL_INJECTION.IBATIS": "IBATIS SQL 삽입 체커는 클라이언트에서 애플리케이션으로 들어가는 입력 데이터를 통하여 생성되는 SQL 구문을 검출합니다.",
  "desc.SQL_INJECTION.JS": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION.KOTLIN": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION.MYBATIS": "MYBATIS SQL 삽입 체커는 클라이언트에서 애플리케이션으로 들어가는 입력 데이터를 통하여 생성되는 SQL 구문을 검출합니다.",
  "desc.SQL_INJECTION.OBJC": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION.PHP": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION.PYTHON": "'데이터베이스와 연동된 웹 프로그램'에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.",
  "desc.SQL_INJECTION.SWIFT": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION.VBNET": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION.VBS": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION_ASPNET": "SQL 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 SQL 쿼리를 생성하기 위해 사용하는 코드를 검출합니다.",
  "desc.SQL_INJECTION_HIBERNATE": "Hibernate에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 Hibernate API의 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION_JDO": "JDO API에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 JDO API의 SQL 쿼리 또는 JDOQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION_MYSQL.JS": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.",
  "desc.SQL_INJECTION_NOSQL.JS": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.",
  "desc.SQL_INJECTION_ORM.JS": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.",
  "desc.SQL_INJECTION_PERSISTENCE": "J2EE Persistence API에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 J2EE Persistent API의 SQL 쿼리를 검출합니다.",
  "desc.SQL_INJECTION_POSTGRESQL.JS": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.",
  "desc.SSI_INJECTION": "SSI 삽입 체커는 검증되지 않은 외부 입력값이 사용된 Server-Side Includes(SSI)를 검출합니다.",
  "desc.STACK_ADDRESS_ESCAPE.OBJC": "스택 변수 주소 할당 체커는 함수가 반환되고 나면 접근할 수 없어지는 지역 변수의 주소를 참조하는 경우를 검출합니다.",
  "desc.STANDARD_CHARACTERS": "비표준 문자 사용 체커는 문자열 리터럴에 표준 문자 외의 문자를 사용한 경우를 검출합니다.",
  "desc.STANDARD_ESCAPE_SEQUENCE": "비표준 이스케이프 시퀀스 사용 체커는 ISO C 표준에 명시되지 않은 이스케이프 시퀀스를 사용하는 경우를 검출합니다.",
  "desc.STANDARD_LIBRARY_FUNCTIONS_SHOULD_BE_CONST": "표준 라이브러리 함수인 localeconv, getenv, setlocale, strerror 에 의해 반환된 포인터는 const를 가진 포인터로만 사용되어야 한다고 명시하고 있습니다. 이 함수들은 내부적으로 정적 데이터를 반환하고, 데이터를 수정하려고 하면 예상하지 못한 동작을 유발할 수 있습니다. 따라서, 반환된 포인터를 수정 불가능한 const 포인터로 처리해야 합니다.",
  "desc.STANDARD_LIBRARY_RETURNED_POINTER_SHOULD_NOT_BE_REUSED": "표준 라이브러리 함수인 asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale, strerror에 의해 반환된 포인터는 동일한 함수의 후속 호출 이후에 재사용하지 말 것을 권고합니다. 이러한 함수들은 내부적으로 정적 버퍼를 사용하여 데이터를 저장하며, 후속 호출 시 버퍼가 덮어써질 수 있습니다.",
  "desc.STATIC_FOR_VARIABLE_USED_IN_ONLY_ONE_FILE": "static으로 선언하지 않은 전역 변수 체커는 한 소스 파일 내에서만 사용하는 전역 변수를 static 키워드 없이 선언한 경우를 검출합니다.",
  "desc.STRICT_MODE.CONFIG": "Typescript에서 Strict 설정은 광범위한 유형 검사 동작을 활성화하여 프로그램의 정확도를 높이고 오류의 발생을 줄일 수 있습니다. 이 기능을 비활성화하면 취약한 메소드가 사용되거나 각종 오류들이 무시되어 소스 코드에 잠재적인 취약점이 생길 수 있습니다.",
  "desc.STRICT_MODE.JS": "ECMAScript 5.1부터 JavaScript는 strict 모드가 도입되었습니다. Strict 모드는 제한된 버전을 선택하여 일반적인 코드와 다른 방식으로 동작합니다. Strict 모드와 기존의 코드는 호환되며 기존에 무시되던 에러를 throwing하거나 위험한 메소드의 사용을 금지하는 등 소스코드에 제한을 적용하여 소스코드를 보다 더 안전하게 동작 시킵니다.",
  "desc.STRICT_USE_FOPEN_MODE": "잘못된 모드로 fopen() 함수 호출 체커는 잘못된 모드 매개 변수를 전달하여 fopen() 함수를 호출하는 경우를 검출합니다.",
  "desc.STRING.DUPLICATED.ABAP": "중복된 문자열 상수 사용 체커는 반복되어 사용된 동일한 내용의 문자열 상수를 검출합니다.",
  "desc.STRING_CONVERSION_WITH_CONSTRUCTOR": "생성자를 사용한 문자열 변환 체커는 어떤 객체를 생성한 다음 즉시 toString() 메소드로 문자열로 변환하는 경우를 검출합니다.",
  "desc.STRING_LITERAL_MODIFICATION": "문자열 리터럴 수정 체커는 문자열 리터럴의 내용을 수정하는 수식을 검출합니다.",
  "desc.STRING_NORMALIZATION_REQUIRED_BEFORE_VALIDATION": "유효성 검사 전 문자열 정규화 필요 체커는 신뢰할 수 없는 외부 입력값에 대한 유효성을 검사하기 전에 문자열을 정규화(Normalize)하지 않은 코드를 검출합니다.",
  "desc.STRTOK_CHANGES_STRING": "strtok() 함수의 첫 번째 인자 재사용 체커는 strtok() 함수를 호출하는 데 사용된 첫 번째 인자를 재사용하는 경우를 검출합니다.",
  "desc.STRUTS.DUPLICATE_VALIDATION_FORM.CONFIG": "스트럿츠 : 중복 밸리데이션 양식 체커는 Apache Struts Validator를 통해 입력 양식의 유효성을 검사하는 경우, 두 개 이상의 검증 양식 이름이 동일한 코드를 검출합니다.",
  "desc.STRUTS_VALIDATOR_TURNED_OFF.CONFIG": "Struts2 프레임워크를 사용하는 웹 애플리케이션에서 기본적으로 유효성 검사 인터셉터가 활성화되어 있습니다. 그러나 개발자가 유효성 검사를 비활성화하거나 특정 메서드에서 제외하면, 사용자 입력에 대한 검증이 이루어지지 않아 악의적인 입력이 시스템에 전달될 수 있습니다.",
  "desc.SUPPLY_AN_INITIAL_VALUE_FOR_EACH_ENTRIES": "생성자에서 초기화 대상 누락 체커는 생성 과정에서 포함해야 할 초기화 대상 중 누락된 것이 있는 생성자를 검출합니다.",
  "desc.SWITCH_CASE_IN_SAME_SCOPE": "가까운 범위에 있지 않은 case 구문 체커는 switch 문과 가장 가까운 범위에 있지 않은 case 구문을 검출합니다.",
  "desc.SYMBOLIC_LINK_RACE_CONDITION": "심볼릭 링크 TOCTOU 경쟁 조건 체커는 lstat() 함수의 호출 결과에만 의존하여 파일에 접근하는 코드를 검출합니다.",
  "desc.SYMBOLIC_LINK_RACE_CONDITION.OBJC": "심볼릭 링크 TOCTOU 경쟁 조건 체커는 lstat() 함수의 호출 결과에만 의존하여 파일에 접근하는 코드를 검출합니다.",
  "desc.SYMMETRIC_OPERATOR_SHOULD_BE_DEFINED_AS_FRIEND": "friend로 선언하지 않은 대칭 연산자 체커는 friend 키워드가 없는 대칭 연산자 선언을 검출합니다.",
  "desc.SYNTACTICALLY_AMBIGUOUS_DECLARATIONS": "문법적으로 애매한 선언 체커는 작성된 코드가 표현식인지 혹은 선언문인지 해석하기 애매한 경우를 검출합니다.",
  "desc.SYSTEM_INFORMATION_LEAK.OBJC": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.",
  "desc.SYSTEM_INFORMATION_LEAK.SWIFT": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.",
  "desc.SYSTEM_INFORMATION_LEAK_EXTERNAL": "!!",
  "desc.SYSTEM_PRINTLN": "System.(out | err).print~ 메서드 사용 체커는 System.out.print() 혹은 System.err.print() 메서드를 사용하면 이슈를 검출합니다.",
  "desc.ScopeForInVariable": "for문 내에서 변수를 사용할 시 범위를 고려해야 합니다.",
  "desc.SelfInitialization": "멤버 변수가 자신의 값으로 초기화합니다.",
  "desc.ShortClassName": "클래스 이름이 다섯글자 이하일 경우를 검출합니다.",
  "desc.ShortInstantiation": "'new Short', 'new java.lang.Short' 등의 allocation 구문을 검출합니다.",
  "desc.ShortMethodName": "3자리 미만 메소드 이름을 검출합니다.",
  "desc.ShortVariable": "변수 선언 시 for 구문의 인덱스, 혹은 catch 구문의 파라미터로 사용하는 예외를 받는 변수를 제외하고 변수 이름의 길이가 1, 2 인 변수을 검출합니다.",
  "desc.SignatureDeclareThrowsException": "메소드 선언 시 'throws Exception' 구문을 검출합니다.",
  "desc.SimpleDateFormatNeedsLocale": "SimpleDateFormat 객체를 생성할 때 Locale을 설정하지 않은 경우 이를 검출합니다.",
  "desc.SimplifyBooleanAssertion": "assertTrue나 assertFalse 테스트 내에서 ! 연산자를 사용한 경우 이를 검출합니다.",
  "desc.SimplifyBooleanExpressions": "수식에서 == 표현 앞이나 뒤의 참 혹은 거짓 값을 검출합니다.",
  "desc.SimplifyBooleanReturns": "불린 값을 if-else 를 사용하여 반환하는 경우 이를 검출합니다.",
  "desc.SimplifyConditional": "instanceof 구문은 널 인자가 들어올 경우 거짓을 반환하므로 사용 이전에 추가적인 널 확인이 필요하지 않습니다.",
  "desc.SimplifyStartsWith": "startsWith() 인자로 3자의 입력이 들어오며, \" \"로 시작하고 \" \"로 끝나는 경우 이를 검출합니다.",
  "desc.SingularField": "하나의 메소드에서만 사용되며, 처음 사용되는 것이 값의 할당 연산인 private 변수를 검출합니다.",
  "desc.SizeArgumentAsChar": "크기 인자가 char 타입의 상수로 주어집니다.",
  "desc.StaticEJBFieldShouldBeFinal": "SessionBean, EJBHome, EJBLocalObject, EJBObject 를 상속받은 클래스 내에 필드 선언이 정적이고 final이 아닌 경우 이를 검출합니다.",
  "desc.StdCyclomaticComplexity": "코드 복잡도를 유발하는 if, while, for, 케이스 구문을 10개 이상 사용하는 경우 이슈를 검출합니다.",
  "desc.StlMissingComparison": "루프 내 반복자 증가 후에 값 체크를 하지 않았습니다.",
  "desc.StringBufferInstantiationWithChar": "StringBuffer 선언시 인자로 ' ' 로 묶인 캐릭터 사용을 검출합니다.",
  "desc.StringInstantiation": "new String(...)을 검출합니다.",
  "desc.StringToString": "문자열 객체에서 toString() 호출을 검출합니다.",
  "desc.StrncatUsage": "strncat을 위험하게 사용합니다.",
  "desc.SuspiciousConstantFieldName": "인터페이스가 아닌 클래스 내에서, final이 아닌 변수 이름이 대문자로만 이루어진 경우 이를 검출합니다.",
  "desc.SuspiciousEqualsMethodName": "메소드 이름과 파라미터 개수가 equals(Object)와 유사한 경우, equals(Object)를 오버라이딩하고자 의도한 것이 아닐 수 있기 때문에 이를 검출합니다.",
  "desc.SuspiciousHashcodeMethodName": "메소드 이름과 반환형이 hashCode()와 유사한 경우, hashCode()를 오버라이딩하고자 의도한 것이 아닐 수 있기 때문에 이를 검출합니다.",
  "desc.SuspiciousOctalEscape": "문자열에서 발견된 의심스러운 8진수 이스케이프 시퀀스를 검출합니다.",
  "desc.SwitchDensity": "Switch 레이블에서 지정한 수 이상의 코드 줄 수를 검출합니다.",
  "desc.SwitchStmtsShouldHaveDefault": "Switch 문장에 default 케이스가 포함되지 않은 경우를 검출합니다.",
  "desc.SystemPrintln": "System.out.print(), 혹은 System.err.print() 메소드 호출을 검출합니다.",
  "desc.TABLE_NAME_CONVENTION.SQL": "잘못된 테이블 이름명 체커는 옵션으로 주어지는 정규식에 일치하지 않는 테이블 이름을 검출합니다.",
  "desc.TAG_NAME_SHALL_BE_A_UNIQUE": "이름이 같은 태그 체커는 태그로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.",
  "desc.TAINTED_LOOP_BOUND": "외부로부터 유입된 정보(환경 이나 사용자 관련 데이터)가 반복문의 제어 조건으로 쓰이는 경우에 발생하는 오류입니다.",
  "desc.TAKE_CARE_WHEN_USING_RENAME": "확인 없이 rename 함수 사용 체커는 rename() 함수를 호출할 때 파일 이름이 중복되는 상황에 대응하지 않는 경우를 검출합니다.",
  "desc.TEMPLATE_SPECIALIZATION_SHOULD_BE_SAME_FILE": "다른 파일에서 선언된 템플릿 특수화 체커는 기본 템플릿 선언이 이루어진 파일에서 선언되지 않은 템플릿 특수화를 검출합니다.",
  "desc.TEMPLATE_WITH_POTENTIALLY_CONFLICTING_METHODS": "잠재적으로 충돌 가능한 클래스 템플릿 메소드 체커는 템플릿 인스턴스화 과정에서 충돌이 발생할 수 있는 메소드 선언을 검출합니다.",
  "desc.TEMPORARY_FILE_WRITING.OBJC": "공개 디렉토리에 임시 파일 생성 체커는 임의의 사용자가 접근 가능한 디렉토리에 임시 파일을 생성하는 코드를 검출합니다.",
  "desc.TEMP_LIFETIME_OBJ_MODIFICATION": "임시 객체 수정 체커는 수식의 결과로 인해 생성된 임시 객체를 변경하는 경우를 검출합니다.",
  "desc.TERNARY_OP_SHOULD_NOT_RETURN_THE_SAME_VAL.SWIFT": "동일한 값을 반환하는 삼항 연산자 체커는 삼항 연산자가 조건과 무관하게 같은 값을 반환하는 경우를 검출합니다.",
  "desc.TESTED_AGAINST_CONSTANT_VALUE": "반복문 종료 조건에 복잡한 식 사용 체커는 for 구문의 반복 횟수에 관한 조건을 계산할 때 상수가 아닌 복잡한 식을 사용한 경우를 검출합니다.",
  "desc.TEST_CHECKER": "한줄설명",
  "desc.THREAD_SHARE_LOCAL_VARIABLE": "지역 변수를 공유하는 스레드 체커는 POSIX thread 가 지역 변수를 공유한 경우를 검출합니다.",
  "desc.THROW_NEW_EXCEPTION_IN_CATCH.CSHARP": "catch 블록에서 새로운 예외 생성 체커는 catch 블록 내에서 새로운 예외 객체를 생성하고 던지는 경우를 검출합니다.",
  "desc.THROW_NOT_IN_CATCH_STMT": "빈 throw 구문 체커는 예외 핸들러 밖에서 아무런 객체를 던지지 않고 사용되는 throw 구문을 검출합니다.",
  "desc.THROW_NOT_IN_CATCH_STMT2": "catch 블록 외에서는 빈 throw(throw;) 를 사용해서는 안됩니다.",
  "desc.THROW_NULL": "널 예외 던짐 체커는 명시적으로 널 포인터를 예외로 던지는 구문을 검출합니다.",
  "desc.THROW_NULL2": "명시적으로 널을 throw 해서는 안됩니다.",
  "desc.THROW_PTR_TYPE": "포인터 타입 예외 던짐 체커는 포인터 타입을 예외로 던지는 구문을 검출합니다.",
  "desc.THROW_PTR_TYPE2": "예외 객체는 포인터 타입이어서는 안됩니다.",
  "desc.TMP_FILE_IN_SHARED_DIR": "공개 디렉토리에서 임시 파일 생성 체커는 임의의 사용자가 접근 가능한 공개 디렉토리에서 임시 파일을 생성하는 코드를 검출합니다.",
  "desc.TOCTOU_RACE_CONDITION": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.",
  "desc.TOCTOU_RACE_CONDITION.KOTLIN": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.",
  "desc.TOCTOU_RACE_CONDITION.PYTHON": "동시 수행을 지원하는 병렬 시스템이나 하나 이상의 프로세스가 동작되는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안약점입니다. 병렬시스템(멀티프로세스로 구현한 응용프로그램)에서는 자원(파일, 소켓 등)을 사용하기에 앞서 자원의 상태를 검사합니다. 하지만, 자원을 사용하는 시점과 검사하는 시점이 다르기 때문에, 검사하는 시점(Time Of Check)에 존재하던 자원이 사용하던 시점(Time Of Use)에 사라지는 등 자원의 상태가 변하는 경우가 발생합니다.",
  "desc.TOCTOU_RACE_CONDITION_CSHARP": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.",
  "desc.TOC_TOU_ACCESS": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.",
  "desc.TOC_TOU_ACCESS.OBJC": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.",
  "desc.TOC_TOU_ACCESS.SWIFT": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.",
  "desc.TOO_BIG.STRUCT_SIZE.PF": "전체 버퍼 크기가 기준을 초과하지 말아야 합니다.",
  "desc.TOO_BIG_FILE.ABAP": "너무 큰 소스 파일 체커는 라인 수가 제한을 넘는 소스 파일을 검출합니다.",
  "desc.TOO_BIG_FUNCTION": "너무 긴 함수 코드 체커는 지정된 제한 길이보다 많은 라인으로 작성된 함수를 검출합니다.",
  "desc.TOO_COMPLEX_FOR_STATEMENT": "지나치게 복잡한 for 구문 체커는 for 구문의 초기화 및 갱신 구문에 지정한 숫자보다 많은 수식이 사용된 경우를 검출합니다.",
  "desc.TOO_FEW_WHEN.ABAP": "너무 적은 WHEN 절 체커는 3개 미만의 WHEN 절을 포함하는 CASE 구문을 검출합니다.",
  "desc.TOO_LONG_COLUMN": "너무 긴 코드 라인 체커는 코드 한 줄의 길이가 사전에 옵션을 통해 정의된 길이를 초과하는 경우를 검출합니다.",
  "desc.TOO_LONG_COLUMN.ABAP": "너무 긴 코드 라인 체커는 코드 한 줄의 길이가 사전에 옵션을 통해 정의된 길이를 초과하는 경우를 검출합니다.",
  "desc.TOO_LONG_COLUMN_SCSS_SASS": "SCSS/SASS 에서 너무 긴 컬럼을 사용하지 않도록 합니다.",
  "desc.TOO_LONG_IDENTIFIER": "너무 긴 식별자 체커는 대상이 되는 식별자의 길이가 31자를 넘어서는 경우를 검출합니다.",
  "desc.TOO_LONG_SOURCE_CODE_BEFORE_COMMENT": "주석 시작 전 너무 긴 소스 코드 체커는 주석이 시작하기 전 소스 코드의 길이가 지정한 길이를 초과할 경우를 검출합니다.",
  "desc.TOO_MANY_BRANCH_IN_LOOP.ABAP": "반복문 내 너무 많은 분기 체커는 제어문을 남용한 반복문을 검출합니다.",
  "desc.TOO_MANY_EXECUTABLE_PATH": "너무 많은 실행 경로 체커는 함수 안에 실행 가능한 경로가 지나치게 많은 경우를 검출합니다.",
  "desc.TOO_MANY_INIT_ARRAY": "구조체 및 배열의 중괄호 초기화 요소 초과 체커는 명시된 구조체 및 배열의 크기보다 초기화 데이터가 많은 정의를 검출합니다.",
  "desc.TOO_MANY_METHODS": "과도한 함수 정의 체커는 옵션에 허용된 값보다 많은 함수를 정의하는 파일을 검출합니다.",
  "desc.TOO_MANY_NONCYCLIC_EXECUTION_PATH": "너무 많은 직선 실행 경로 체커는 함수에 반복문으로 인한 순환을 제외하고 직선으로 실행 가능한 경로가 지나치게 많은 경우를 검출합니다.",
  "desc.TOO_MANY_RETURNS": "함수 내 반환 구문은 하나만을 기술하는 것을 원칙으로 합니다.",
  "desc.TO_STRING_ON_ARRAY.CSHARP": "배열에 대해 toString 사용 체커는 배열 객체에 대한 ToString 메소드를 호출을 검출합니다.",
  "desc.TRACE_OUTPUT.WEB.CONFIG": "Trace 로그 노출 체커는 Trace 로그 정보를 출력하도록 설정한 경우를 검출합니다.",
  "desc.TRANSACTION.GET.TOBE.JS": "GET 방식으로 트랜잭션 수행 체커는 GET 방식으로 전송을 수행하는 경우를 검출합니다.",
  "desc.TRANSACTION.NOT_BINARY.TOBE.JS": "이진 타입을 사용하지 않는 트랜잭션 체커는 이진 타입을 사용하지 않고, 트랜잭션 함수를 통해 데이터를 전송하는 경우를 검출합니다.",
  "desc.TRANSACTION.PLAIN.TOBE.JS": "트랜잭션을 통해 민감한 정보를 평문으로 전송 체커는 트랜잭션 함수를 통해 데이터를 평문으로 전송하는 경우를 검출합니다.",
  "desc.TRANSACTION.SYNC.TOBE.JS": "비효율적인 동기화 방식 트랜잭션 체커는 동기방식으로 트랜잭션 함수를 사용하는경우를 검출합니다.",
  "desc.TRANSACTION_INJECTION.TOBE.JS": "트랜잭션 삽입 체커는 검증되지 않은 외부 입력이 트랜잭션 함수에 사용되는 경우를 검출합니다.",
  "desc.TRUST_BOUNDARY_VIOLATION": "신뢰 범위 위반 체커는 신뢰할 수 없는 데이터와 신뢰할 수 있는 데이터가 섞여있는 경우를 검출합니다.",
  "desc.TRYLOCK_FAIL": "잠궈진 리소스에 trylock 시도 체커는 pthread_mutex_trylock() 함수를 사용하여 이미 잠금을 수행한 리소스를 다시 호출하는 코드를 검출합니다.",
  "desc.TYPEDEF_NAME_SHALL_BE_A_UNIQUE": "이름이 같은 typedef 체커는 typedef로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.",
  "desc.TYPE_CHECK_WITH_NAME.CSHARP": "이름에 기반한 타입 검사 체커는 한 객체의 타입을 클래스 이름 기반으로 판단하는 경우를 검출합니다.",
  "desc.TYPE_MISMATCH_IN_TERNARY": "삼항 연산자에서 타입 불일치 체커는 삼항 연산자에서 조건부로 선택될 수 있는 두 가지 식의 타입이 일치하지 않는 경우를 검출합니다.",
  "desc.TYPE_OVERRUN.BAD_COND": "잘못된 조건으로 인한 필드 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.",
  "desc.TYPE_OVERRUN.IN_FUNC_CALL": "함수의 필드 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.TYPE_OVERRUN.IN_FUNC_CALL.BAD_COND": "잘못된 조건으로 인한 함수의 필드 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.TYPE_OVERRUN.IN_FUNC_CALL.BAD_COND_delete": "-",
  "desc.TYPE_OVERRUN.IN_FUNC_CALL_delete": "-",
  "desc.TYPE_OVERRUN.MEMSET": "잘못된 조건으로 인해 구조체 안에 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽을 때 발생하는 오류 입니다.",
  "desc.TYPE_OVERRUN.MEMSET.BAD_COND": "잘못된 조건으로 인해 memset 같은 함수를 통해 구조체 안에 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽을 때 발생하는 오류 입니다.",
  "desc.TYPE_OVERRUN.STATIC": "필드 버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 경우를 검출합니다.",
  "desc.TYPE_UNDERRUN.BAD_COND": "잘못된 조건으로 인한 필드 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼를 벗어난 메모리 영역을 읽거나 쓰는 코드를 검출합니다.",
  "desc.TYPE_UNDERRUN.IN_FUNC_CALL": "함수의 필드 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.TYPE_UNDERRUN.IN_FUNC_CALL.BAD_COND": "잘못된 조건으로 인한 함수의 필드 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.TYPE_UNDERRUN.IN_FUNC_CALL.BAD_COND_delete": "-",
  "desc.TYPE_UNDERRUN.IN_FUNC_CALL_delete": "-",
  "desc.TYPE_UNDERRUN.MEMSET": "음수의 크기를 가지고 memcpy 함수를 호출하면 구조체의 유효 범위 이전의 영역을 참조하는 오류가 발생합니다.",
  "desc.TYPE_UNDERRUN.MEMSET.BAD_COND": "잘못된 조건문으로 검사한 크기 값을 가지고 memcpy 같은 함수를 통해 할당된 구조체의 유효 범위 이전의 영역을 참조하는 경우에 발생하는 오류입니다.",
  "desc.TYPE_UNDERRUN.STATIC": "필드 버퍼 언더플로우 체커는 메모리에서 객체의 유효범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.",
  "desc.TerminateStrncpy": "strncpy() 호출 뒤에 버퍼가 null로 종료되지 않을 수 있습니다.",
  "desc.TestClassWithoutTestCases": "테스트 클래스는 test로 시작하는 테스트 메소드를 가져야 하며, 이를 위반한 경우를 검출합니다.",
  "desc.ThisSubtraction": "this 포인터에 빼기 연산자를 사용합니다. '->'를 사용하려는 의도인지 확인해야 합니다.",
  "desc.ThrowInNoexceptFunction": "예외를 발생하지 않는다고 명시한 함수에서 예외를 발생합니다.",
  "desc.TooFewBranchesForASwitchStatement": "지정된 수 보다 적은 케이스를 갖는 switch 구문을 검출합니다.",
  "desc.TooManyFields": "지나치게 많은 필드를 갖는 클래스는 포함관계를 활용한 객체 등을 활용하여 재설계되어야 합니다.",
  "desc.TooManyMethods": "지나치게 많은 메소드를 갖는 클래스는, 복잡도를 줄이기 위해 리팩토링 되어야 합니다.",
  "desc.TooManyStaticImports": "정적 import 구문이 지정한 수를 초과하는 경우 이를 검출합니다.",
  "desc.Toomanyconfigs": "#ifdef 설정을 너무 많이 사용했습니다.",
  "desc.UNARY_NEGATIVE_OP_ON_UNSIGNED": "unsigned 정수형 변수에 단항 마이너스 연산자 사용 체커는 unsigned 정수형 변수에 단항 마이너스 연산자를 사용하는 수식을 검출합니다.",
  "desc.UNBOUNDED_SOURCE_TO_ARRAY": "스택 배열에 외부 데이터 저장 체커는 사용자 외부 입력 데이터를 스택 배열에 저장하는 수식을 검출합니다.",
  "desc.UNCAUGHT_EXCEPTION": "누락된 예외 처리 체커는 함수에서 예외가 발생하지만 이를 처리하지 않은 코드를 검출합니다.",
  "desc.UNCAUGHT_EXCEPTION.JS": "uncaughtException을 사용하면 개발자가 사전에 처리하지 못한 오류가 발생해도 이를 처리할 수 있습니다. 하지만 노드 공식 문서에도 이를 최후의 수단으로 사용할 것이라 명시하고 있습니다. uncaughtException는 오류가 발생한 후에 프로그램이 종료되는 것을 보장할 수 없기 때문입니다.",
  "desc.UNCHECKED_NULL": "널 미확인 역참조 체커는 널 여부를 확인한 적이 있는 값을 후 확인 없이 역참조하는 경우를 검출합니다.",
  "desc.UNCHECKED_NULL_CSHARP": "널 미확인 역참조 체커는 널 여부를 확인한 적이 있는 값을 후 확인 없이 역참조하는 경우를 검출합니다.",
  "desc.UNCHECKED_OGNL_EXPRESSION": "확인되지 않은 OGNL 식 체커는 외부 입력 값을 확인하지 않고 객체를 생성하는 데 사용한 코드를 검출합니다.",
  "desc.UNCHECKED_SPEL_EXPRESSION.SPRING": "확인되지 않은 SpEL 식 체커는 외부 입력 값을 확인하지 않고 SpelExpression을 생성하는 데 사용한 코드를 검출합니다.",
  "desc.UNCHECK_ARRAY_LENGTH": "부적절한 가변 길이 배열 크기 체커는 길이를 제한하지 않고 가변 길이 배열을 선언하는 경우를 검출합니다.",
  "desc.UNCONTROLLED_RECURSION": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.",
  "desc.UNCONTROLLED_RECURSION.OBJC": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.",
  "desc.UNCONTROLLED_RECURSION.SWIFT": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.",
  "desc.UNDECIDABLE_DIVISION": "불확실한 값으로 나누기 체커는 나누기 연산에서 불확실한 값으로 나누기를 수행한 경우를 검출합니다.",
  "desc.UNDEFINED_BINARY_OPERATOR.OBJC": "초기화되지 않은 값을 이항 연산에서 사용 체커는 초기화되지 않은 변수를 이항 연산식의 피연산자로 사용하는 경우를 검출합니다.",
  "desc.UNDERRUN.DYNAMIC": "동적 할당 버퍼 언더플로우 체커는 메모리에서 객체의 유효 범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.",
  "desc.UNDERRUN.DYNAMIC.BAD_COND": "잘못된 조건으로 인한 동적 할당 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.",
  "desc.UNDERRUN.DYNAMIC.IN_FUNC_CALL": "함수의 동적 할당 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.UNDERRUN.DYNAMIC.IN_FUNC_CALL.BAD_COND": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.UNDERRUN.DYNAMIC.IN_FUNC_CALL.BAD_COND_delete": "-",
  "desc.UNDERRUN.DYNAMIC.IN_FUNC_CALL_delete": "-",
  "desc.UNDERRUN.STATIC": "버퍼 언더플로우 체커는 메모리에서 객체의 유효범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.",
  "desc.UNDERRUN.STATIC.BAD_COND": "잘못된 조건으로 인한 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼를 벗어난 메모리 영역을 읽거나 쓰는 코드를 검출합니다.",
  "desc.UNDERRUN.STATIC.IN_FUNC_CALL": "함수의 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.UNDERRUN.STATIC.IN_FUNC_CALL.BAD_COND": "잘못된 조건으로 인한 함수의 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.",
  "desc.UNDERRUN.STATIC.IN_FUNC_CALL.BAD_COND_delete": "-",
  "desc.UNDERRUN.STATIC.IN_FUNC_CALL_delete": "-",
  "desc.UNEXPECTED_SIGN_EXTENSION": "의도하지 않은 부호 확장 체커는 음수 값이 unsigned 로 변환되어 저장될 수 있는 수식을 검출합니다.",
  "desc.UNINIT": "초기화되지 않은 변수 사용 체커는 초기화되지 않은 지역 변수를 사용하는 코드를 검출합니다.",
  "desc.UNINIT.HORUS": "초기화되지 않은 값을 사용했습니다.",
  "desc.UNINITIALIZED.ARRAY_SUBSCRIPT.OBJC": "초기화되지 않은 값을 배열에서 사용 체커는 초기화되지 않은 변수로 배열 참조를 수행하는 경우를 검출합니다.",
  "desc.UNINITIALIZED.ASSIGN.OBJC": "초기화되지 않은 값 대입 체커는 초기화되지 않은 변수를 다른 변수에 대입하는 코드를 검출합니다.",
  "desc.UNINITIALIZED.BRANCH.OBJC": "초기화되지 않은 값을 조건식에 사용 체커는 초기화되지 않은 변수를 조건문의 조건식으로 사용하는 경우를 검출합니다.",
  "desc.UNINITIALIZED.UNDEFINED_RETURN.OBJC": "초기화되지 않은 값 반환 체커는 초기화되지 않은 값을 반환하는 경우를 검출합니다.",
  "desc.UNIQUE_HEADER_FILE_NAME": "헤더 파일 이름 중복 체커는 C99 표준에 따라 해석할 때 같은 이름으로 취급될 수 있는 중복 헤더 파일을 검출합니다.",
  "desc.UNIQUE_VALUE_IN_ENUMERATOR": "열거형 목록의 부분 대입 체커는 열거형 목록의 요소 중 일부에만 값을 대입하여 선언한 경우를 검출합니다.",
  "desc.UNIVERSAL_CHARACTER_TROUGH_CONCATENATION": "매크로 연결에서 유니버설 문자 사용 체커는 매크로의 연결에서 유니코드와 같은 유니버설 문자가 인자로 전달되는 경우를 검출합니다.",
  "desc.UNMATCH_TYPE_PTR_COMPARE": "다른 배열의 요소에 대한 비교 연산 체커는 같은 배열 요소가 아닌 객체 간에 비교 연산을 수행하는 수식을 검출합니다.",
  "desc.UNMATCH_TYPE_PTR_SUBTRACT": "다른 배열의 요소에 대한 포인터 감소 연산 체커는 같은 배열 요소가 아닌 객체 간에 포인터 감소 연산을 수행하는 수식을 검출합니다.",
  "desc.UNNAMED_STRUCT_UNION_MEMBERS": "이름 없는 필드 선언 체커는 구조체나 공용체에서 이름이 없는 필드를 선언한 경우를 검출합니다.",
  "desc.UNNECESSARY_BLOCK.JS": "불필요한 블록 체커는 블필요한 블록이 사용된 경우에 검출됩니다.",
  "desc.UNNECESSARY_PARENTHESES.JS": "불필요한 괄호 체커는 불필요한 괄호를 사용한 경우에 검출됩니다.",
  "desc.UNNOTIFIED_OBJECT": "notify되지 않은 객체 체커는 한 클래스 안에서 notify() 혹은 notifyAll() 메소드 호출 없이 wait() 메소드 호출만 존재하는 경우를 검출합니다.",
  "desc.UNPULSED_OBJECT.CSHARP": "pulse 되지 않은 객체 체커는 Monitor.PulseAll() 메소드와 Monitor.Wait() 메소드를 동시에 사용하지 않은 경우를 검출합니다.",
  "desc.UNREACHABLE_CASE": "불필요한 케이스 체커는 switch 구문에서 절대 도달할 일이 없는 케이스 레이블을 검출합니다.",
  "desc.UNREACHABLE_CODE": "실행되지 않는 코드 체커는 어떠한 경우에도 도달할 수 없는 코드 블록을 검출합니다.",
  "desc.UNREACHABLE_CODE.JS": "도달할 수 없는 코드 체커는 'return' 또는 'break', 'continue', 'throw' 문에 후행하는 다른 구문들이 있어 접근할수 없는 구문이 발생하는 경우를 검출합니다.",
  "desc.UNREACHABLE_CODE_STRING_COMPARE": "문자열 비교로 도달할 수 없는 코드 체커는 문자열 비교로 이루어진 조건문 체인에서 도달할 수 없는 조건문 본문을 검출합니다.",
  "desc.UNREASONABLE_PARAMETER": "잘못된 인자값으로 함수 길이 할당 체커는 함수에 길이를 정하는 인자의 값이 음수이거나 너무 큰 코드를 검출합니다.",
  "desc.UNREASONABLE_PARAMETER.OBJC": "부적절한 길이 인자의 값 체커는 길이를 인자로 받는 함수에 해당 인자로 음수 혹은 너무 큰 값이 전달되는 경우를 검출합니다.",
  "desc.UNRELEASED_LOCK": "해제되지 않은 잠금 체커는 메소드 내에서 잠금 객체를 사용하여 잠금을 했지만 해당 메소드 내에서 잠금 해제를 해주지 않는 경우를 검출합니다.",
  "desc.UNRESTRICTED_UPLOAD.FILE.PHP": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드 받는 코드를 검출합니다.",
  "desc.UNRESTRICTED_UPLOAD.FILE.VBNET": "제한되지 않은 파일 업로드 체커는 확장자 검사를 하지 않고 서버에 업로드되는 파일을 검출합니다.",
  "desc.UNRESTRICTED_UPLOAD_OF_FILE": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드 받는 코드를 검출합니다.",
  "desc.UNRESTRICTED_UPLOAD_OF_FILE.CPP": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드하도록 허용하는 코드를 검출합니다.",
  "desc.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드받는 것을 검출합니다.",
  "desc.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON": "1) 서버에서 실행될 수 있는 스크립트 파일(asp, jsp, php, sh, ...)이 업로드 가능하고, 2) 이 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부 명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있는 보안약점입니다.",
  "desc.UNRESTRICTED_UPLOAD_OF_FILE_ASPNET": "제한되지 않은 파일 업로드 체커는 업로드하는 파일 타입과 크기를 제한하지 않는 경우를 검출합니다.",
  "desc.UNSAFE_JACKSON_DESERIALIZATION": "안전하지 않은 Jackson 역직렬화 체커는 Jackson 라이브러리를 통해서 역직렬화를 구현하거나, 민감한 데이터를 신뢰할 수 없는 출처에서 가져오는 코드를 검출합니다.",
  "desc.UNSAFE_REFLECTION": "리플렉션(Reflection) 기능을 사용할 때 외부로부터 입력받은 데이터를 사용하여 클래스나 메서드를 동적으로 선택하고 실행할 때 발생합니다. 이러한 방식은 공격자가 악의적인 데이터를 입력하여 원하지 않는 코드를 실행하거나, 시스템을 제어할 수 있게 만듭니다.",
  "desc.UNSAFE_REFLECTION.OBJC": "안전하지 않은 리플렉션 체커는 검증되지 않은 외부 입력을 리플렉션의 인자로 사용하는 경우를 검출합니다.",
  "desc.UNSAFE_REFLECTION.VBS": "안전하지 않은 리플렉션 체커는 검증되지 않은 외부 입력을 리플렉션의 인자로 사용하는 경우를 검출합니다.",
  "desc.UNSAFE_XSTREAM_DESERIALIZATION": "안전하지 않은 XStream 역직렬화 체커는 XStream.fromXML() 메소드를 호출하는 코드를 검출합니다.",
  "desc.UNSALTED_ONE_WAY_HASH": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.",
  "desc.UNSPECIFY_BUFFER_LENGTH_CIN": "명시되지 않은 cin의 최대 버퍼 크기 체커는 입력 받을 수 있는 문자열의 최대 버퍼 크기를 설정하지 않은 cin 입력 연산자 호출을 검출합니다.",
  "desc.UNSUITABLE_BITFIELD_TYPE": "잘못된 비트 필드 타입 체커는 unsigned int나 signed int 타입이 아닌 타입으로 비트 필드를 선언한 경우를 검출합니다.",
  "desc.UNSYNCHRONIZED_ACCESS_TO_SHARED_DATA_MULTITHREAD": "다중 스레드 환경에서 static 변수와 같은 공유 자원에 대한 비동기화된 접근으로 인해 발생합니다. 비동기화되지 않은 접근은 데이터 경합(race condition)을 유발하여 예기치 않은 동작, 데이터 손상, 보안 취약점 등을 초래할 수 있습니다.",
  "desc.UNSYNCHRONIZED_STATIC_DATE_FORMATTER": "공유되는 immutable 객체의 가시성 보장 체커는 synchronized로 선언되어 있지 않는 특정 메소드에 final이나 volatile이 아닌 필드가 사용되는 경우를 검출합니다.",
  "desc.UNTRUSTED_DATA_IN_PRIVILEGED_BLOCK": "특권 블록 내의 신뢰할 수 없는 데이터 체커는 매개 변수로 전달된 신뢰할 수 없는 데이터가 곧바로 특권 블록 내에서 사용되는 경우를 검출합니다.",
  "desc.UNUSED.FORMAL_PARAMETER.CSHARP": "사용하지 않는 매개 변수 체커는 메소드의 매개 변수 중 사용하지 않는 변수가 있는 경우를 검출합니다.",
  "desc.UNUSED.LOCAL_VARIABLE": "사용되지 않은 지역 변수 체커는 지역 변수를 선언한 후에 사용하지 않는 코드를 검출합니다.",
  "desc.UNUSED.LOCAL_VARIABLE.CSHARP": "사용되지 않은 지역 변수 체커는 지역 변수를 선언한 후에 사용하지 않는 코드를 검출합니다.",
  "desc.UNUSED.PRIVATE_FIELD.CSHARP": "사용하지 않는 private 필드 체커는 사용하지 않는 private 필드를 검출합니다.",
  "desc.UNUSED_CATCH_HANDLER": "사용하지 않은 예외 처리 구문 체커는 함수 내에서 절대로 사용될 일이 없는 예외 처리 구문을 검출합니다.",
  "desc.UNUSED_IMPORT": "불필요한 import 구문 체커는 삭제해도 무방한 import 구문을 검출합니다.",
  "desc.UNUSED_PARAMETER": "사용하지 않는 매개 변수 체커는 함수에서 그 값을 사용하지 않는 매개 변수를 검출합니다.",
  "desc.UNUSED_PARAMETER.MISRA2008": "가상 함수에서 사용하지 않은 매개 변수 체커는 사용되지 않은 매개 변수가 있는 가상 함수 선언을 검출합니다.",
  "desc.UNUSED_STATIC_VARIABLE": "사용하지 않는 정적 변수 체커는 사용하지 않는 정적 변수를 포함하는 코드를 검출합니다.",
  "desc.UNUSED_VALUE": "사용되지 않는 변수 체커는 변수에 값을 할당한 후에 해당 변수를 실행 경로에서 사용하지 않는 코드를 검출합니다.",
  "desc.UNUSED_VARIABLE": "함수내에서 사용되지 않는 변수를 검출 합니다.",
  "desc.UNUSED_VARIABLE.OBJC": "사용되지 않는 변수 체커는 변수를 선언한 후에 사용하지 않는 코드를 검출합니다.",
  "desc.UNVALIDATED_WEB_API_MODEL.VBNET": "신뢰할 수 없는 모델 체커는 함수 내에서 ModelState.IsValid 속성을 확인하지 않은 HttpPost() 속성을 지닌 함수를 검출합니다.",
  "desc.UNVERIFIABLE_NATIVE_INVOCATION.CSHARP": "안전하지 않은 DLL 사용 체커는 검증되지 않은 DLL을 적재하는 경우를 검출합니다.",
  "desc.USAGE.CONSTRUCTOR.VIRTUAL_METHOD_CALL.CSHARP": "unsealed 형식의 생성자에서 해당 클래스에 정의된 가상 메소드를 호출합니다.",
  "desc.USAGE.DISPOSABLE_TYPE.MISSING_FINALIZER.CSHARP": "System.IDisposable을 구현하고, 관리되지 않는 리소스의 사용을 암시하는 필드를 포함하는 형식이 Object.Finalize에 설명된 종료자를 구현하지 않습니다.",
  "desc.USAGE.DISPOSE.GC_SUPPRESS_FINALIZE.CSHARP": "메소드에서 GC.SuppressFinalize를 호출하면서 이것(Visual Basic의 경우 Me)이 아닌 다른 개체를 전달합니다.",
  "desc.USAGE.ENUM.FLAGS_ATTRIBUTE.CSHARP": "외부에서 볼 수 있는 열거형이 FlagsAttribute로 표시되어 있고, 2의 거듭제곱 또는 열거형에 정의된 다른 값의 조합이 아닌 값이 하나 이상 들어 있습니다.",
  "desc.USAGE.FIELDS.NON_SERIALIZABLE.CSHARP": "serialize할 수 없는 형식의 인스턴스 필드가 serialize할 수 있는 형식에 정의되었습니다.",
  "desc.USAGE.ISERIALIZABLE.BAD_IMPLEMENTATION.CSHARP": "System.Runtime.Serialization.ISerializable 인터페이스를 상속하는 형식에 선언된 인스턴스 필드는 serialization 프로세스에 자동으로 포함되지 않습니다.",
  "desc.USAGE.NAN.INCORRECTLY_TESTED.CSHARP": "F:System.Single.Nan 또는 F:System.Double.Nan에 대한 값을 테스트합니다.",
  "desc.USAGE.OVERLOAD_EQ.MISSING_EQUALS.CSHARP": "public 형식이 같음 연산자를 구현하지만 Object.Equals를 재정의하지 않습니다.",
  "desc.USAGE.OVERLOAD_OPERATOR.NO_ALTERNATE.CSHARP": "연산자 오버로드가 감지되었으며 예상되는 이름의 대체 메소드를 찾을 수 없습니다.",
  "desc.USAGE.UNSEALED_PRIVATE_METHOD.DIFFERENT_ACCESSIBILITY.CSHARP": "unsealed 형식의 private 메소드에 기본 형식에서 선언된 public 메소드와 동일한 시그니처가 있습니다. private 메소드가 final이 아닙니다.",
  "desc.USE.PROPER_VARIABLE_NAME.JS": "잘못된 변수 이름 체커는 정해진 규칙에 맞지 않는 변수 이름을 검출합니다.",
  "desc.USELESS_ASSIGNMENT": "불필요한 할당 체커는 할당을 수행했음에도 포함된 변수의 값을 변경시키지 않는 코드를 검출합니다.",
  "desc.USELESS_OVERRIDING_METHOD": "상위 클래스에서 정의된 메서드와 동일한 이름에 메서드 내에서 상위 클래스 내에 동일 이름의 메서드 호출 체커는 상위 클래스에서 정의된 메서드와 동일한 이름에 메서드 내에서 상위 클래스 내에 동일 이름의 메서드를 호출하면 이슈를 검출합니다.",
  "desc.USE_ADJACENT_UNARY_OPERATOR": "단항 연산자 주위 공백 규칙 위반 체커는 ++ 또는 ?와 같은 단항 연산자와 피연산자 사이에 공백이 있는 경우를 검출합니다.",
  "desc.USE_AFTER_CLOSE": "자원을 반환한 후에는 다시 사용하지 말아야 합니다.",
  "desc.USE_AFTER_CLOSE.EXT": "리소스 반환 후 사용 체커는 리소스를 반환한 후에 다시 사용하는 경우를 검출합니다.",
  "desc.USE_AFTER_CLOSE.HORUS": "자원을 반환한 후에는 다시 사용하지 말아야 합니다.",
  "desc.USE_AFTER_FREE": "해제 후 사용 체커는 해제된 메모리 블록을 다시 참조하는 코드를 검출합니다.",
  "desc.USE_AFTER_FREE.HORUS": "메모리를 해제한 후 사용했습니다.",
  "desc.USE_AFTER_FREE.OBJC": "해제 후 사용 체커는 해제된 메모리 블록을 다시 참조하는 코드를 검출합니다.",
  "desc.USE_AFTER_MOVE": "이동한 객체의 재사용 체커는 이동한 객체에 의존하여 이를 재사용하는 코드를 검출합니다.",
  "desc.USE_AFTER_RELEASE.RESOURCE.PHP": "해제 후 사용 체커는 리소스를 반환한 후에 다시 사용하는 경우를 검출합니다.",
  "desc.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES": "파일 이름 및 경로에 사용된 비 ASCII 문자 체커는 파일 이름과 경로에 ASCII 코드에 포함되지 않는 문자를 사용한 경우를 검출합니다.",
  "desc.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES_CSHARP": "파일 이름 및 경로에 사용된 비 ASCII 문자 체커는 파일 이름과 경로에 ASCII 코드에 포함되지 않는 문자를 사용한 경우를 검출합니다.",
  "desc.USE_BLOCK_SYNCHRONIZED": "블록 단위의 synchronization을 사용하는 것을 권장합니다.",
  "desc.USE_BRACES.JS": "복합 구문에서 중괄호 누락 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.",
  "desc.USE_BRACE_MULTI_DIMENSION_ARRAY_INIT": "구조체 및 배열 내부 구조와 중괄호 초기화 불일치 체커는 구조체와 배열을 초기화할 때 내부 구조와 다른 형태로 중괄호 초기화를 사용한 경우를 검출합니다.",
  "desc.USE_CODEGUARD_WHEN_DECLARING_CLASS": "클래스 정의 헤더에 인클루드 가드 누락 체커는 클래스를 정의하였으며 인클루드 가드가 누락된 헤더를 검출합니다.",
  "desc.USE_COMPATIBLE_ENCODINGS_ON_BOTH_SIDES_OF_FILE_OR_NETWORK_IO": "파일이나 네트워크 입출력을 사용 할 때 호환되는 인코딩을 사용하여 읽고 써야 합니다.",
  "desc.USE_CONCURRENT_HASH_MAP": "ConcurrentHaspMap 미사용 체커는 java.util.Map 사용 시 ConcurrentHashMap을 사용하지 않으면 검출합니다.",
  "desc.USE_CONST_GLOBAL_AND_STATIC": "const로 선언하지 않은 전역또는 정적 변수 체커는 전역 변수나 정적 변수가 const로 선언되어 있지 않은 경우를 검출합니다.",
  "desc.USE_CONST_OBJECT_OR_ENUMERATORS": "매크로를 사용한 상수 정의 체커는 상수 정의에 const 객체나 열거형 대신 매크로를 사용한 경우를 검출합니다.",
  "desc.USE_CONST_POINTER_FOR_STRING_VAR": "const로 선언하지 않은 문자열 상수 체커는 문자열 상수를 가리키는 포인터가 const로 선언되지 않은 경우를 검출합니다.",
  "desc.USE_CONST_WHENEVER_POSSIBLE": "소극적인 const 사용 체커는 포인터 매개변수를 선언할 때 const를 사용할 수 있는 곳에 const를 사용하지 않은 경우를 검출합니다.",
  "desc.USE_CONST_WITH_MACRO": "매크로 없이 상수 사용 체커는 매크로로 정의하지 않은 상수를 사용하는 코드를 검출합니다.",
  "desc.USE_CONTAINERS_OF_POINTER": "컨테이너에 클래스 타입 사용 체커는 컨테이너에 담는 타입이 오버헤드가 큰 클래스 타입인 객체의 선언을 검출합니다.",
  "desc.USE_CONTAINER_MEMBER_FUNCTIONS": "STL 알고리즘 함수 사용 체커는 동일한 이름의 컨테이너 메소드 대신 STL 알고리즘을 사용한 수식을 검출합니다.",
  "desc.USE_CORRECT_BYTE_ORDERING": "올바르지 않은 바이트 순서 사용 체커는 recv()로 받는 데이터를 ntohl()로 변환하여 받지 않거나, send()로 보낼 데이터를 htonl()로 변환하지 않을 경우를 검출합니다.",
  "desc.USE_DANGEROUS_INNERHTML.REACT": "\"dangerouslySetInnerHTML\"는 브라우저 DOM에서 \"innerHTML\"을 사용하기 위한 React의 대체 방법입니다. React는 기본적으로 대부분의 값을 렌더링하기 전에 Escape하여 안전하지만 해당 기능은 이를 지원하지 않아 XSS공격에 쉽게 노출될 수 있기 때문에 위험합니다.",
  "desc.USE_DEFINED_STANDARD_FORMS": "형식이 맞지 않은 defined 전처리 구문 체커는 defined 전처리 구문의 사용 방식이 지정된 형식을 벗어난 경우를 검출합니다.",
  "desc.USE_EACH_ACCESS_SPECIFIER_EXACTLY_ONCE": "순서가 올바르지 않은 접근 한정자 체커는 접근 한정자가 올바른 순서로 되어 있지 않은 클래스를 검출합니다.",
  "desc.USE_EMPTY_INSTEAD_OF_CHECKING_SIZE_AGAINST_ZERO": "size 함수를 사용한 텅빈 컨테이너 확인 체커는 size() 함수의 반환 값을 0과 비교하는 경우를 검출합니다.",
  "desc.USE_EQUALS_TO_COMPARE_STRINGS": "비교 연산자를 통한 문자열의 상수 비교 체커는 문자열을 ==, != 를 통해서 문자열 상수와 비교하면 이슈를 검출합니다.",
  "desc.USE_EXTERN_TO_IMPORT_VARIABLE": "외부 변수에서 extern 키워드 누락 체커는 extern 키워드 없이 외부 변수를 사용하는 코드를 검출합니다.",
  "desc.USE_FERROR_THAN_COMPARE_ERRNO": "잘못된 파일 스트림 오류 확인 체커는 파일 스트림 오류를 확인하기 위해 errno 지시자를 사용하는 경우를 검출합니다.",
  "desc.USE_FUNCTION_IN_IF_CONDITION": "조건문 내에 함수 사용 체커는 옵션에 지정된 함수 외에 함수를 조건문 내에서 사용한 경우를 검출합니다.",
  "desc.USE_LOWER_CASE_IN_INCLUDE_FILENAMES": "포함할 헤더 이름에 대문자 사용 체커는 #include 지시자에서 파일 이름에 대문자가 포함된 경우를 검출합니다.",
  "desc.USE_MAXIMUM_SIZED_BUFFER": "최대 크기 버퍼 사용 체커는 옵션에 지정된 경로 최대 크기보다 작은 크기의 버퍼를 사용하는 코드를 검출합니다.",
  "desc.USE_NEW_THROW_CAUSE": "예외 자체 처리 시, CommUtil.newThrowCuase 메소드를 사용해야 합니다.",
  "desc.USE_NOTIFY_ALL_INSTEAD_OF_NOTIFY": "notify 메서드 사용 시 인자 없음 체커는 notify 메서드의 인자 미사용 체커는 notify() 의 인자가 없으면 검출합니다.",
  "desc.USE_OF_CLASS_LOADER": "EJB 컨테이너는 특정 클래스 로딩 규칙을 준수하여 애플리케이션의 안정성과 보안을 보장합니다. 그러나 개발자가 직접 클래스 로더를 사용하여 클래스를 로드하면, 이는 컨테이너의 클래스 로딩 규칙을 우회하게 되어 보안 취약점을 초래할 수 있습니다.",
  "desc.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY": "하드코딩된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.",
  "desc.USE_OF_INNER_CLASS_CONTAINING_SENSITIVE_DATA": "민감한 데이터를 포함하는 내부 클래스 체커는 중첩 선언된 내부 클래스에서 외부 클래스의 private 필드에 접근하는 경우를 검출합니다.",
  "desc.USE_OF_INSUFFICIENT_RANDOM_VALUES": "너무 단순한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.",
  "desc.USE_OF_INSUFFICIENT_RANDOM_VALUES.KOTLIN": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.",
  "desc.USE_OF_INSUFFICIENT_RANDOM_VALUES.OBJC": "부적절한 난수 생성 체커는 예측 가능한 난수가 사용되는 경우를 검출합니다.",
  "desc.USE_OF_INSUFFICIENT_RANDOM_VALUES.SWIFT": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.",
  "desc.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.",
  "desc.USE_OF_LOW_SECURITY_ENCRYPTION_ALGORITHM": "낮은 보안 강도의 암호화 알고리즘 사용 체커는 권장되는 보안 강도를 만족하지 않는 암호화 알고리즘이나 해시 함수를 사용하는 코드를 검출합니다.",
  "desc.USE_OF_SINGLETON_WITHOUT_SYNC": "싱글톤 패턴은 클래스의 인스턴스가 하나만 존재하도록 보장하지만, 멀티 스레드 환경에서 동기화 없이 사용하면 여러 개의 인스턴스가 생성될 수 있습니다. 이는 데이터 무결성을 해치고 예기치 않은 동작을 초래할 수 있습니다.",
  "desc.USE_OF_SOCKETS": "EJB에서 서버 소켓 사용 체커는 EJB 프로그램에서 bean 내부에서 서버 소켓(ServerSocket)을 직접 사용하여 클라이언트에 서비스를 제공하는 경우를 검출합니다.",
  "desc.USE_OF_SYNCHRONIZATION_PRIMITIVES": "동기화 기본 요소 사용 주의 체커는 EJB 규격에서 synchronized 메서드를 사용하는 코드를 검출합니다.",
  "desc.USE_ONE_CASE_PER_LINE": "한 줄에 작성된 여러 개의 case 구문 체커는 한 줄에 하나 이상의 케이스 문과 default문을 사용하는 경우를 검출합니다.",
  "desc.USE_ONE_DECLARATION_PER_LINE": "한 줄에 작성된 여러 개의 선언 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.",
  "desc.USE_ONE_DECLARATION_PER_LINE.CSHARP": "한 줄에 하나의 선언문만 있어야 합니다.",
  "desc.USE_ONE_STATEMENT_PER_LINE": "한 줄에 작성된 여러 개의 구문 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.",
  "desc.USE_ONE_STATEMENT_PER_LINE.CSHARP": "한 줄에 하나의 문장만 사용해야 합니다.",
  "desc.USE_ONLY_ALLOWED_TYPE": "사용가능한 타입 입니다.",
  "desc.USE_ONLY_PERMITTED_MACROS": "불필요한 매크로 선언 체커는 정해진 사용 방법을 벗어나도록 매크로를 선언한 경우를 검출합니다.",
  "desc.USE_OPEN_WITH_PERMISSION": "잘못된 접근 권한으로 파일 생성 체커는 접근 제한을 충분히 설정하지 않고 파일을 생성하는 경우를 검출합니다.",
  "desc.USE_PARAMETERIZED_QUERY.VBNET": "매개 변수화되지 않은 쿼리 사용 체커는 매개 변수화 되지 않은 값을 사용한 SQL 쿼리문을 검출합니다.",
  "desc.USE_PARENTHESIS_TO_MACRO_REPLACEMENT_LIST": "인자를 괄호로 감싸지 않은 매크로 함수 선언 체커는 # 연산 및 ## 연산을 제외하고 함수형 매크로의 인자를 괄호로 감싸지 않고 선언되는 경우를 검출합니다.",
  "desc.USE_PASS_BY_REFERENCE": "참조 값 전달 미사용 체커는 클래스 타입의 인자가 값이나 포인터로 되어 있는 함수 선언을 검출합니다.",
  "desc.USE_POINTER_ARITHMETIC_ON_FIELD": "필드 참조에 대한 포인터 연산 체커는 구조체나 클래스의 필드를 참조한 포인터에 대해 덧셈 등의 포인터 연산을 사용하는 경우를 검출합니다.",
  "desc.USE_PREPROCESSOR_ONLY_INCLUDEGUARDS": "전처리기는 file inclusion 과 include guards 에서 만 사용해야 합니다.",
  "desc.USE_PUBLIC_DERIAVTION_ONLY": "public 상속 미사용 체커는 public 외의 방법으로 상속을 한 클래스를 검출합니다.",
  "desc.USE_RSA_WITHOUT_OAEP": "OAEP를 사용하지 않고 RSA 암호화 알고리즘 사용 체커는 OAEP를 사용하지 않고 RSA 암호화 알고리즘을 사용한 경우를 검출합니다.",
  "desc.USE_RUNTIME_CONSTRAINT_HANDLERS": "경계 검사 함수 사용 전 핸들러 등록 누락 체커는 경계 검사 함수를 호출하기 전에 런타임 지정 핸들러를 등록하지 않은 경우를 검출합니다.",
  "desc.USE_SAME_DEFAULT_VALUES": "상속 클래스의 기본 인자 값 불일치 체커는 부모 클래스의 가상 함수와 기본 인자 값이 다른 자식 클래스의 가상 함수 선언을 검출합니다.",
  "desc.USE_SAME_TYPE_WHEN_REDECLARING": "재선언 시 토큰 불일치 체커는 객체, 함수 반환 타입 또는 함수 매개 변수에 사용되는 타입이 모든 선언 및 재선언에서 동일한 토큰이 아닌 경우를 검출합니다.",
  "desc.USE_SHIFT_OPERATORS_CORRECTLY": "시프트(Shift) 연산자의 올바른 사용 체커는 외부 입력값을 시프트 연산에 사용할 때 적절한 검증 과정이 생략된 코드를 검출합니다.",
  "desc.USE_SHORT_FUNCTION": "너무 길고 복잡한 함수 체커는 일정 이상으로 라인 수가 많거나 매개 변수가 여러 개인 함수를 검출합니다.",
  "desc.USE_SINGLE_RETURN": "다수의 반환 구문 사용 체커는 한 함수 안에서 옵션에 명시된 반환 구문 최대 수를 초과하여 반환 구문을 사용하는 경우를 검출합니다.",
  "desc.USE_SIZEOF_FOR_DATATYPE": "타입 크기 계산에서 sizeof 미사용 체커는 sizeof를 사용하지 않고 타입 크기를 계산한 값이 필요한 함수를 호출하는 경우를 검출합니다.",
  "desc.USE_SIZEOF_ON_PARAM": "sizeof 연산자 미사용 체커는 특정 함수 호출 시 특정 인자가 sizeof 연산자가 아닌 수식을 검출합니다.",
  "desc.USE_STANDARD_CPP_LIBRARY_HEADERS": "오래된 표준 헤더 파일 사용 체커는 오래된 표준 헤더 파일을 포함한 줄을 검출합니다.",
  "desc.USE_STATIC_IN_PUTENV": "putenv() 함수에 자동 변수 포인터 전달 체커는 putenv() 함수에 자동 변수 포인터를 인자로 전달하는 경우를 검출합니다.",
  "desc.USE_STRICTFP_FOR_DIVISION": "strictfp 한정자 없는 나누기 체커는 strictfp 한정자 없이 부동 소수점 나누기 수식을 사용한 메소드 또는 클래스를 검출합니다.",
  "desc.USE_STRTOL": "잘못된 문자열 정수 변환 체커는 문자열을 정수로 변환할 때 신뢰성 있는 오류 처리를 제공하는 함수가 사용되지 않은 경우를 검출합니다.",
  "desc.USE_SUFFIXES_FOR_FLOAT_CONSTANT": "접미사가 없는 float 타입 상수 체커는 float 상수에 접미사 F을, long double 상수에 접미사 L을 사용하지 않은 경우를 검출합니다.",
  "desc.USE_SUFFIXES_FOR_INTEGER_CONSTANT": "접미사가 없는 정수형 상수 체커는 상수값에 대문자 접미사를 명시하지 않은 경우를 검출합니다.",
  "desc.USE_SUFFIX_FOR_UNSIGNED_INTEGER_LITERALS": "unsigned int 자료형에 접미사 U 사용 체커는 unsigned int 타입의 정수형 리터럴에는 대문자로 접미사 \"U\"로 명시하지 않은 경우를 검출합니다.",
  "desc.USE_SYNCHRONIZED_PUBLIC_METHOD": "동기화되지 않은 public 메소드 체커는 public으로 선언된 메소드에서 필드 변수가 사용되었지만 synchronized 한정자는 없는 경우를 검출합니다.",
  "desc.USE_TAB_BETWEEN_TYPE_AND_IDENTIFIER": "타입과 식별자 사이 탭 누락 체커는 변수 선언 시 타입과 식별자 사이를 탭으로 구분하지 않은 경우를 검출합니다.",
  "desc.USE_TYPEDEF_TYPE_INSTEAD_OF_BASIC": "typedef 없이 기본 숫자 타입 사용 체커는 기본 숫자 타입을 typedef로 선언하지 않고 사용한 구문을 검출합니다.",
  "desc.USE_TYPEREF_NON_POINTER_TYPE": "포인터형을 typedef로 선언 체커는 함수 포인터를 제외하고 포인터형을 typedef로 선언한 경우를 검출합니다.",
  "desc.USE_UNSIGNED_INT_ON_DIVISION": "나누기 연산 시 unsigned 정수형 사용 체커는 나누기 연산을 수행할 때 분자나 분모에 signed 정수형이 존재하는 코드를 검출합니다.",
  "desc.USE_UTILITY_CLASS": "유틸 클래스의 미사용 체커는 유틸 클래스가 아닌 정적 요소만 존재하는 클래스를 작성하면 이슈를 검출합니다.",
  "desc.USE_VALUE_FROM_FGETPOS": "잘못된 fsetpos() 함수 인자 전달 체커는 fsetpos() 함수의 인자에 fgetpos()의 반환값 이외의 값을 전달하는 경우를 검출합니다.",
  "desc.USE_VISUALLY_DISTINCT_IDENTIFIER": "시각적으로 비슷한 식별자 체커는 시각적으로 비슷하여 구별하기 어려운 식별자를 사용하는 경우를 검출합니다.",
  "desc.USING_APPLICATION_EXIT.CSHARP": "Application.Exit 메소드 사용 체커는 Application.Exit()을 사용한 경우를 검출합니다.",
  "desc.USING_BAD_PANIC.RUST": "unwrap(), expect(), assert!()와 같이 Rust 프로그램을 패닉 상태로 만들고 예기치 않게 종료시킬 수 있는 함수와 매크로의 사용을 피해야 합니다. 패닉이 발생하면 리소스가 일관되지 않은 상태로 남을 수 있고, 데이터 손실이 발생하거나 제대로 처리되지 않을 때 취약점이 노출될 수 있습니다.",
  "desc.USING_BAD_RAW_POINTER.RUST": "Rust의 특정 타입들은 into_raw를 통해 raw pointer로 변환될 수 있으며 이는 FFI (Foreign Function Interface) 바인딩과 같이 언어 간의 인터페이스에서 특히 유용합니다. 하지만 into_raw에 의해 변환된 원시 포인터가 적절히 처리되지 않으면 메모리 누수, 데이터 손상, 그리고 애플리케이션의 불안정성을 초래할 수 있습니다.",
  "desc.USING_BOX_LEAK.RUST": "Rust에서 Box::leak 같은 함수를 사용하면 의도적으로 메모리 누수를 발생시킬 수 있습니다. 이는 일부 특정 상황에서는 필요하다고 여겨질 수 있습니다. 그러나 제어되지 않은 메모리 누수는 시스템 리소스를 불필요하게 소모합니다.",
  "desc.USING_COPY_INITIALIZATION": "복사 초기화 방식 사용 체커는 복사 초기화 방식으로 정의한 클래스 형식의 변수를 검출합니다.",
  "desc.USING_DIRECT_INDEX.RUST": "직접적인 배열 인덱싱은 잠재적으로 패닉을 일으킬 수 있으며 이는 런타임 중에 프로그램을 중단시킬 위험을 갖고 있습니다. 이를 위해 인덱스가 배열의 범위 내에 있는지 확실하게 확인하거나, 패닉 없이 Option을 반환하는 get 메소드를 사용해야 합니다.",
  "desc.USING_DYNAMIC_CLASS_LOADING": "동적 클래스 로딩 사용 체커는 java.lang.Class.forName() 메소드 호출을 검출합니다.",
  "desc.USING_FORGET.RUST": "std::mem 혹은 core::mem 모듈의 forget 함수는 객체의 소유권을 가져가고, 그 객체의 소멸자(destructor)가 호출되지 않게 합니다. 이는 메모리 누수의 원인이 될 수 있고 리소스가 제대로 해제되지 않을 가능성이 있기 때문에 안전성과 관련된 코드에서는 큰 문제를 일으킬 수 있습니다.",
  "desc.USING_HASH_WITHOUT_SALT": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.",
  "desc.USING_HASH_WITHOUT_SALT.KOTLIN": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.",
  "desc.USING_HASH_WITHOUT_SALT_CSHARP": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.",
  "desc.USING_INCOMPATIBLE_TYPE_WITH_C.RUST": "FFI(외부 함수 인터페이스)를 통해 다른 언어와 인터페이스 할 때 데이터 무결성을 유지하기 위해 데이터 타입의 호환성을 보장하는 것이 중요합니다. C-호환 타입은 메모리 내의 데이터 레이아웃이 C 언어의 레이아웃을 따르도록 보장하여 FFI 컨텍스트에서 예측 가능하고 상호 운용 가능하게 만들기 때문에 중요합니다.",
  "desc.USING_MANUALLY_DROP.RUST": "ManuallyDrop은 Rust에서 명시적으로 메모리를 관리하고 메모리 해제를 수동으로 제어할 수 있는 래퍼 타입입니다. 이는 소멸자를 명시적으로 호출하지 않고 소유권을 유지하면서 드랍이 발생하지 않도록 제어하는 경우에 사용합니다.",
  "desc.USING_SYSTEM_EXIT": "프로그램 즉시 종료 API 호출 체커는 VM을 종료시키는 System.exit()과 같은 메소드 호출을 검출합니다.",
  "desc.USING_TRY_MACRO.RUST": "코드의 가독성을 향상시키고 에러 처리를 보다 명확하게 하기 위해 ? 연산자를 사용하고, 더 이상 권장되지 않는 try! 매크로의 사용을 피해야 합니다. try! 매크로는 오래된 문법이며 ? 연산자가 도입되면서 사용을 권장하지 않게 되었습니다. try! 매크로를 사용하는 것은 코드의 일관성을 해칠 뿐만 아니라 개발자들에게 혼동을 줄 수 있습니다.",
  "desc.USING_UNINIT_MEM.RUST": "Rust 1.38.0부터 deprecated된 std::mem::uninitialized 또는 std::mem::MaybeUninit 타입의 사용은 초기화되지 않은 메모리의 사용이나 드롭을 가능하게 하여 예측할 수 없는 동작과 메모리 안전 문제를 초래할 수 있습니다.",
  "desc.USING_UNSAFE.RUST": "unsafe 블록은 Rust에서 메모리 안전성을 보장하지 않기 때문에 가능한 피해야 합니다. 그러나, C 언어 함수를 사용, 임베디드 프로그래밍, 불가피한 경우에는 unsafe를 사용할 수 있습니다.",
  "desc.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.",
  "desc.UncommentedEmptyConstructor": "주석이 없는 빈 생성자는 의도적으로 비워둔 생성자인지 확인하기 어려우므로 이를 검출합니다.",
  "desc.UncommentedEmptyMethodBody": "주석이 없는 빈 메소드는 의도적으로 비워둔 메소드인지 확인하기 어려우므로 이를 검출합니다.",
  "desc.UnconditionalIfStatement": "If 조건문에 'true' 및 'false' 의 값을 넣는 경우 이를 검출합니다.",
  "desc.UnhandledExceptionSpecification": "함수가 호출될 때 예외를 처리하는 코드가 없습니다.",
  "desc.UninitMemberVar": "멤버 변수가 생성자에서 초기화되지 않습니다.",
  "desc.UnnecessaryBlock": "불필요한 블록은 삭제 해야합니다.",
  "desc.UnnecessaryBooleanAssertion": "불린 리터럴에 관한 JUnit 테스트의 assert 구문은 항상 같은 값에 대해 판별하기 때문에 불필요합니다.",
  "desc.UnnecessaryCaseChange": "대소문자 비교에서 toUpperCase/toLowerCase().equals()를 사용할 때 검출된다.",
  "desc.UnnecessaryConstructor": "클래스 안에 파라미터 받지 않고, 아무 예외도 생성하지 않는 public 메소드 선언이 단 한줄 있는 경우 이를 검출합니다.",
  "desc.UnnecessaryConversionTemporary": "기본 타입에 toString()을 사용하는 경우를 검출합니다.",
  "desc.UnnecessaryFinalModifier": "Final로 선언된 클래스(Interface 제외) 안에서 final 로 선언되지 않은 메소드를 검출합니다.",
  "desc.UnnecessaryFullyQualifiedName": "import 에 정의하고 fully qualified name을 사용했을 경우를 검출합니다.",
  "desc.UnnecessaryLocalBeforeReturn": "바로 반환할 변수를 생성하는 코드를 검출합니다.",
  "desc.UnnecessaryModifier": "필드는 정적 public final, 메소드는 추상 public품고 있는 클래스 혹은 인터페이스는 정적 public 이므로 이를 명시적으로 쓰는 행위를 검출합니다.",
  "desc.UnnecessaryParentheses": "PrimarySurfix 처럼 보이는 PrimaryPrefix을 검출합니다.",
  "desc.UnnecessaryReturn": "Void 타입의 메소드 안의 반환 구문을 검출합니다.",
  "desc.UnnecessaryWrapperObjectCreation": "파싱 메소드(예: Integer.parseInt(...))는 직접 호출되어야 합니다. 이를 위반한 경우를 검출합니다.",
  "desc.UnpreciseMathCall": "해당 함수는 매우 크거나 작은 값에서 정확하지 않은 값을 반환합니다.",
  "desc.UnreachableCode": "반환 구문 또는 'break', 'continue', 'throw' 문은 항상 블록 마지막에 사용되야 합니다.",
  "desc.UnsafeClassDivZero": "클래스의 공개 인터페이스가 안전하지 않습니다. 파라미터에 0이 들어가면 'Division by zero' 오류가 발생할 수 있습니다.",
  "desc.UnsynchronizedStaticDateFormatter": "SimpleDateFormat 변수의 format()을 시행하는 메소드가 synchronized로 선언되지 않은 경우 이슈를 검출합니다.",
  "desc.UnusedFormalParameter": "메소드의 파라미터로 받고 사용하지 않는 변수를 검출합니다.",
  "desc.UnusedLocalVariable": "사용하지 않는 지역변수를 검출합니다.",
  "desc.UnusedNullCheckInEquals": "특정 객체의 널 검사 이후 해당 객체로부터 equals()를 호출하지 않는 경우 이를 검출합니다.",
  "desc.UnusedPrivateField": "사용하지 않는 private 변수를 검출합니다.",
  "desc.UnusedPrivateFunction": "사용되지 않는 private 함수가 있습니다.",
  "desc.UnusedPrivateMethod": "사용하지 않는 private 메소드를 검출합니다.",
  "desc.UseArrayListInsteadOfVector": "Vector 타입 사용을 검출합니다.",
  "desc.UseArraysAsList": "asList 메소드를 사용하지 않고 loop 구문을 통해 리스트를 생성하는 경우 이를 검출합니다.",
  "desc.UseAssertEqualsInsteadOfAssertTrue": "객체가 서로 같음을 판단하기 위해서 assertTrue(x.equals(y))를 사용한 경우를 검출합니다.",
  "desc.UseAssertNullInsteadOfAssertTrue": "객체의 널 여부를 판단하기 위해 assertTrue(x==null), 혹은 assertFalse(x==null)을 사용한 경우를 검출합니다.",
  "desc.UseAssertSameInsteadOfAssertTrue": "객체의 참조가 서로 같음을 판단하기 위해서 assertTrue(x==y)를 사용한 경우를 검출합니다.",
  "desc.UseAssertTrueInsteadOfAssertEquals": "assert관련 메소드를 사용시 assertEqual() 보다 assertTrue(), assertFalse()를 사용할 것을 권장합니다.",
  "desc.UseCollectionIsEmpty": "컬렉션 객체에 .size()==0 혹은 .size()!=0 사용을 검출합니다.",
  "desc.UseConcatOnce": "XPath concat() 함수를 중첩해서 사용했습니다.",
  "desc.UseConcurrentHashMap": "ConcurrentHashMap을 사용하지 않은 경우를 검출합니다.",
  "desc.UseCorrectExceptionLogging": "로거로 선언된 객체에 대하여, catch 블록 안에서 객체의 PrimarySuffix 인자를 하나만 받으며, 이 인자 이름이 catch 구문의 FormalParameter 이름과 같은 경우 이를 검출합니다.",
  "desc.UseEqualsToCompareStrings": "문자열 비교를 ==, != 를 통해서 문자열 상수와 비교하는 경우 이를 검출합니다.",
  "desc.UseIndexOfChar": "문자열의 indexOf()를 호출할 경우 indexOf(String)을 사용한 경우를 검출합니다.",
  "desc.UseInitializationList": "변수가 생성자 내부에서 초기화됩니다. 성능을 고려하여 초기화 목록을 이용하는 것을 고려하십시오.",
  "desc.UseLocaleWithCaseConversions": "toLowerCase(), toUpperCase() 사용 시 인자 미 사용을 검출합니다.",
  "desc.UseNotifyAllInsteadOfNotify": "notify() 구문에 인자를 전달하지 않는 사용을 검출합니다.",
  "desc.UseObjectForClearerAPI": "API의 재사용, 수정 등의 유지보수 측면에서 API의 인자를 단일 객체로 사용할 것을 권장합니다.",
  "desc.UseProperClassLoader": "PrimarySuffix로 getClassLoader 사용을 검출합니다.",
  "desc.UseStringBufferForStringAppends": "수식에서 +=를 사용한 문자열 추가를 검출합니다.",
  "desc.UseStringBufferLength": "StringBuffer의 길이 비교 목적의.toString().equals()의 사용을 검출합니다.",
  "desc.UseUtilityClass": "만일 특정 클래스가 정적 요소만을 보유하고 있는 경우, 이를 싱글턴으로 만들 것을 권장합니다.",
  "desc.UseVarargs": "배열보다 varargs를 사용할 것을 권장합니다.",
  "desc.UselessAssignmentArg": "함수의 파라미터에 값을 넣는 것은 함수 밖에 영향을 미치지 않습니다",
  "desc.UselessAssignmentPtrArg": "함수의 파라미터에 값을 넣어도 함수 외부에는 영향을 미치지 않습니다.",
  "desc.UselessOperationOnImmutable": "불변 객체의 계산은 자신을 스스로 바꾸지 않기 때문에 결과 값을 그냥 두는 경우 이를 검출합니다.",
  "desc.UselessOverridingMethod": "단순히 super 클래스의 메소드 호출하면 될 것을 다시 같은 이름의 메소드를 만들어 안에 super 클래스의 동일 이름 메소드 호출을 검출합니다.",
  "desc.UselessParentheses": "불필요한 괄호를 제거해야 합니다.",
  "desc.UselessStringValueOf": "문자열에 값을 더할 때 String.valueOf()의 호출을 검출합니다.",
  "desc.VA_ARG_INTEGER_PROMOTION": "정확하지 않은 가변인자 타입 체커는 va_arg 매크로에 사용하는 인자의 타입이 정확하지 않은 수식을 검출합니다.",
  "desc.VERIFY_PROVIDE_STANDARD_INTERFACE": "표준 인터페이스 미제공 체커는 최소한의 표준 인터페이스를 제공하지 않는 클래스를 검출합니다.",
  "desc.VLA_SIZE.OBJC": "부적절한 가변 길이 배열 크기 체커는 길이 표현식의 값이 정의되어 있지 않거나 0으로 정의된 VLA 선언을 검출합니다.",
  "desc.VOID_KEYWORD_FOR_NO_PARAM": "인자가 없는 함수에서 void 키워드 누락 체커는 인자가 없는 함수 선언에서 인자 목록에 void 키워드를 명시하지 않은 경우를 검출합니다.",
  "desc.VOID_PARAMETER_SHALL_NOT_BE_USED": "void 매개 변수 타입 사용 체커는 void 타입을 매개 변수의 타입으로 사용한 함수 선언을 검출합니다.",
  "desc.VOID_RETURN_VALUE_SHALL_NOT_BE_USED": "void 함수의 반환 값 사용 체커는 반환 타입이 void로 선언된 함수의 반환 값을 사용하는 경우를 검출합니다.",
  "desc.VOLATILE_ACCESS_RHS_OF_LOGICAL_OP": "논리 연산자의 우측항에서 volatile 객체 사용 체커는 논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하는 수식을 검출합니다.",
  "desc.VOLATILE_VALUE_MODIFICATION": "참조 타입에 volatile 한정자 사용 체커는 참조 타입 변수에 금지된 volatile 한정자를 사용하는 코드를 검출합니다.",
  "desc.VariableNamingConventions": "변수 이름 표준 위반을 검출합니다.",
  "desc.VfCsrf": "페이지 로드시에 VF 액션을 호출 합니다.",
  "desc.VfUnescapeEl": "EL에서 유저 입력을 받을 때 이스케이핑을 해야합니다.",
  "desc.VirtualDestructor": "상속한 부모 클래스에 가상 소멸자가 없습니다.",
  "desc.WAIT_ALL_THREAD_BEFORE_DESTROY": "다른 스레드의 뮤텍스 조작 체커는 다른 스레드의 뮤텍스를 잠금 해제하거나 파괴한 경우를 검출합니다.",
  "desc.WEAK_CRYPTOGRAPHIC_HASH.CSHARP": "취약한 해시 알고리즘 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.",
  "desc.WEAK_CRYPTOGRAPHIC_HASH.GO": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다. 하지만 해시 함수인 MD5나 SHA의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다.",
  "desc.WEAK_CRYPTOGRAPHIC_HASH_HARDCODED_SALT": "하드코딩된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.",
  "desc.WEAK_CRYPTOGRAPHIC_NETWORK.GO": "IP 주소로 \"0.0.0.0\"을 사용하면, 시스템의 모든 네트워크 인터페이스에서 들어오는 모든 연결 요청을 수신하겠다는 것을 의미합니다. 일반적으로 서버는 특정 네트워크 인터페이스에서만 연결을 받아들이는 것이 좋습니다. 그렇지 않으면, 예상치 못한 네트워크 인터페이스에서 들어오는 연결 요청을 받아들일 수 있어, 해커가 이를 이용해 공격을 시도할 수 있습니다.",
  "desc.WEAK_CRYPTOGRAPHIC_PACKAGE.GO": "Go 언어에서 unsafe, testing 등 특정 상황에서 필요할 수 있지만, 제한된 상황에서만 사용되는 패키지가 있습니다. unsafe는 메모리 안전성을 우회할 가능성이 생기고, testing는 테스트 환경에서만 적합하기 때문에 프로덕션 코드에서는 사용하지 않는 등의 문제가 있습니다.",
  "desc.WEAK_CRYPTOGRAPHIC_RANDOM.GO": "취약한 난수 알고리즘을 사용하면 결과값이 예측 가능하여 생기는 보안약점입니다. 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능합니다.",
  "desc.WEAK_ENCRYPTION.DES.CSHARP": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.DES.VBS": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION.HARDCODED_KEY.OBJC": "하드코딩된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.HARDCODED_KEY.SWIFT": "하드코딩된 암호화 키 체커는 소스 코드 내에 하드코딩되어 사용되는 암호화 키를 검출합니다.",
  "desc.WEAK_ENCRYPTION.HARDCODED_SALT": "하드코딩된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.HASH.OBJC": "취약한 해시 알고리즘 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.HASH.PHP": "취약한 해시 알고리즘 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.HASH.VBS": "취약한 해시 알고리즘 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.HASH.WITHOUT_SALT.PHP": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSECURE_INITIALIZATION_VECTOR.CSHARP": "하드코딩된 초기화 벡터 체커는 초기화 벡터 값이 하드코딩되어 있는 경우를 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSECURE_MODE_OF_OPERATION.CSHARP": "ECB 모드로 암호화 알고리즘 사용 체커는 암호화할 때 ECB 모드를 사용하는 경우를 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키를 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.CSHARP": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키를 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.GO": "RSA 암호화는 공개키 암호화 방식 중 하나로, 키의 길이에 따라 암호의 강도가 달라집니다. 현재, 대부분의 상황에서 적절하다고 간주되는 키 길이는 2048 bits입니다. 현재의 컴퓨팅 능력으로는 이를 깨트리는 것이 실질적으로 불가능하기 때문입니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.JS": "충분하지 않은 키 길이 사용은 길이가 짧은 키를 사용할 때 생기는 보안약점입니다. 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 이를 이용해 공격자가 암호화된 데이터나 패스워드를 복호화 할 수 있게 됩니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.KOTLIN": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키를 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.OBJC": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.PHP": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.SWIFT": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.VBNET": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.VBS": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION.PASSWORD": "취약한 암호화 알고리즘의 비밀번호 체커는 단순한 암호화 알고리즘으로 비밀번호를 암호화하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.RISKY_ALGORITHM": "취약한 암호화 알고리즘 체커는 안전하지 않은 암호화 알고리즘을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.RISKY_ALGORITHM.OBJC": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION.RISKY_ALGORITHM.PHP": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION.RSA_PADDING": "부적절한 RSA 패딩 체커는 RSA 알고리즘을 사용할 때 부적절한 패딩 방식을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION.VBNET": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION_ALGORITHM.KOTLIN": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION_ALGORITHM.PYTHON": "개발자들은 환경설정 파일에 저장된 비밀번호를 보호하기 위하여 간단한 인코딩 함수를 사용하여 비밀번호를 감추는 방법을 사용하기도 합니다. 그렇지만 base64와 같은 지나치게 간단한 인코딩 함수로는 비밀번호를 제대로 보호할 수 없습니다.",
  "desc.WEAK_ENCRYPTION_HASH.EMPTY_PBE_SALT.OBJC": "비어 있는 솔트 체커는 암호화 키의 솔트에 공백이 사용된 경우를 검출합니다.",
  "desc.WEAK_ENCRYPTION_HASH.EMPTY_PBE_SALT.SWIFT": "비어 있는 솔트 체커는 암호화 키의 솔트에 공백을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION_HASH.HARDCODED_PBE_SALT.SWIFT": "하드코딩된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION_HASH.INSECURE_PBE_ITERATION.SWIFT": "반복 횟수가 적은 키 파생 함수 사용 체커는 암호 기반 키 파생 함수에서 사용하는 반복 횟수가 지나치게 낮은 경우를 검출합니다.",
  "desc.WEAK_ENCRYPTION_HASH.NIL_PBE_SALT.SWIFT": "널 솔트 사용 체커는 암호화 키의 솔트에 nil 값을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION_HASH.NULL_PBE_SALT.OBJC": "널 솔트 사용 체커는 암호화 키의 솔트에 nil 값이 사용된 경우를 검출합니다.",
  "desc.WEAK_ENCRYPTION_HASH.SWIFT": "취약한 해시 알고리즘 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.",
  "desc.WEAK_ENCRYPTION_INADEQUATE_RSA_PADDING": "부적절한 RSA 패딩 체커는 RAS 알고리즘 사용 시 부적절한 패딩 방식을 사용하는 경우를 검출합니다.",
  "desc.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.",
  "desc.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.PYTHON": "충분하지 않은 키 길이 사용은 길이가 짧은 키를 사용할 때 생기는 보안약점입니다. 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 이를 이용해 공격자가 암호화된 데이터나 패스워드를 복호화 할 수 있게 됩니다.",
  "desc.WEAK_ENCRYPTION_OPTION.SWIFT": "ECB 모드로 암호화 알고리즘 사용 체커는 암호화할 때 ECB 모드를 사용하는 경우를 검출합니다.",
  "desc.WEAK_HASH.JS": "패스워드와 같이 중요 정보를 저장할 경우, 가변 길이 데이터를 고정된 크기의 해시값으로 변환해주는 일방향 해시 함수를 이용해 저장할 수 있습니다. 만약 중요 정보를 솔트(Salt)없이 일방향 해시 함수를 사용해 저장한다면, 공격자는 미리 계산된 레인보우 테이블을 이용해 해시값을 알아낼 수 있습니다.",
  "desc.WEAK_PASSWORD.EMPTY_PASSWORD.JS": "비어 있는 비밀번호 체커는 비어 있는 비밀번호를 사용하는 코드를 검출합니다.",
  "desc.WEAK_PASSWORD.HARDCODED_PASSWORD.JS": "하드코딩된 비밀번호 체커는 XMLHttpRequest.open에서 비밀번호에 해당하는 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.",
  "desc.WEAK_PASSWORD_ALGORITHM.STRING": "취약한 암호화 알고리즘을 사용한 소스코드를 검출합니다.",
  "desc.WEAK_PASSWORD_REQUIREMENTS": "약한 비밀번호 요구사항 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.",
  "desc.WEAK_PASSWORD_REQUIREMENTS.KOTLIN": "약한 비밀번호 요구사항 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 받아들이는 경우를 검출합니다.",
  "desc.WEAK_PASSWORD_REQUIREMENTS.OBJC": "약한 비밀번호 요구사항 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.",
  "desc.WEAK_PASSWORD_REQUIREMENTS.PHP": "약한 비밀번호 요구사항 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.",
  "desc.WEAK_PASSWORD_REQUIREMENTS.PYTHON": "강한 패스워드 조합 규칙을 만족하지 않으면, 사용자 계정이 취약하게 되는 보안약점입니다.",
  "desc.WEAK_PASSWORD_REQUIREMENTS.SWIFT": "약한 비밀번호 요구사항 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.",
  "desc.WEAK_PASSWORD_REQUIREMENTS.VBNET": "약한 비밀번호 요구사항 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.",
  "desc.WEAK_PASSWORD_REQUIREMENTS_ASPNET": "약한 비밀번호 요구사항 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES": "취약한 서버 인증서 검증 체커는 X509TrustManager 클래스를 상속한 자식 클래스에서 오버라이드 함수를 재정의하지 않거나 예외를 throw하지 않는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.CPP": "취약한 서버 인증서 검증 체커는 인증서를 적절하게 검증하지 않는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.CSHARP": "취약한 서버 인증서 검증 체커는 SSL/TLS 세션을 생성할 때 X.509 인증서의 유효성을 검사하지 않고 모든 인증서를 신뢰하는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.JS": "취약한 서버 인증서 검증 체커는 인증되지 않은 서버의 접속을 거부하는 rejectUnauthorized 옵션 값을 false로 설정한 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.KOTLIN": "취약한 서버 인증서 검증 체커는 X509TrustManager 클래스를 상속한 자식 클래스에서 오버라이드 함수를 재정의하지 않거나 예외를 throw하지 않는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.OBJC": "취약한 서버 인증서 검증 체커는 인증서를 적절하게 검증하지 않는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.PHP": "취약한 서버 인증서 검증 체커는 SSL/TLS 세션을 생성할 때 X.509 인증서의 유효성을 검사하지 않고 모든 인증서를 신뢰하는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.PYTHON": "취약한 서버 인증서 검증 체커는 SSL/TLS 세션을 생성할 때 X.509 인증서의 유효성을 검사하지 않고 모든 인증서를 신뢰하는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.SWIFT": "취약한 서버 인증서 검증 체커는 인증서를 적절하게 검증하지 않는 코드를 검출합니다.",
  "desc.WEAK_SERVER_CERTIFICATES.VBNET": "취약한 서버 인증서 검증 체커는 SSL/TLS 연결에서 서버 인증서를 확인하지 않은 코드를 검출합니다.",
  "desc.WEAK_SIGNATURE.INSUFFICIENT_KEY_SIZE.CSHARP": "불충분한 전자 서명 키 길이 체커는 전자 서명을 위한 키의 크기가 옵션에 지정한 길이보다 작을 경우를 검출합니다.",
  "desc.WEAK_SSL_CERTIFICATE.OBJC": "취약한 SSL 인증서 체커는 취약한 SSL인증서를 허용하는 곳을 검출합니다.",
  "desc.WEAK_SSL_PROTOCOL.SWIFT": "취약한 SSL 프로토콜 체커는 SSLv2, SSLv23 및 SSLv3 프로토콜을 사용하는 경우를 검출합니다.",
  "desc.WEAK_XML_TRANSFORMERS_SECURITY": "취약한 XML 변환 보안 체커는 별도의 보안 옵션을 지정하지 않고 XML 파서를 바로 사용한 경우를 검출합니다.",
  "desc.WEAK_XML_TRANSFORMERS_SECURITY.CSHARP": "취약한 XML 변환 보안 체커는 별도의 보안 옵션을 지정하지 않고 XML 파서를 바로 사용한 경우를 검출합니다.",
  "desc.WEAK_XML_TRANSFORMERS_SECURITY.JS": "XML 문서에는 DTD(Document Type Definition)를 포함할 수 있으며, DTD는 XML 엔터티(entity)를 정의합니다. 부적절한 XML 외부개체 참조 보안약점은 서버에서 XML 외부 엔터티를 처리할 수 있도록 설정된 경우에 발생할 수 있습니다. 취약한 XML parser가 외부값을 참조하는 XML을 처리할 때, 공격자가 삽입한 공격 구문이 동작되어 서버 파일 접근, 불필요한 자원 사용, 인증 우회, 정보 노출 등이 발생할 수 있습니다.",
  "desc.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN": "취약한 XML 변환 보안 체커는 별도의 보안 옵션을 지정하지 않고 XML 파서를 바로 사용한 경우를 검출합니다.",
  "desc.WEAK_XML_TRANSFORMERS_SECURITY.PHP": "취약한 XML 변환 보안 체커는 별도의 보안 옵션을 지정하지 않고 XML 파서를 바로 사용한 경우를 검출합니다.",
  "desc.WEAK_XML_TRANSFORMERS_SECURITY.PYTHON": "부적절한 XML 외부 개체 참조는 서버에서 XML 외부 엔터티를 처리할 수 있도록 설정된 경우에 발생할 수 있는 보안약점입니다. 취약한 XML 파서(parser)가 외부 값을 참조하는 XML 값을 처리할 때, 공격자가 삽입한 공격 구문이 동작되어 서버 파일 접근, 불필요한 자원 사용, 인증 우회, 정보 노출 등이 발생할 수 있습니다.",
  "desc.WRITE_DIRECTIVE_NESTED_PREPROCESSOR": "공백 없이 전처리 지시자 사용 체커는 전처리 지시자가 첫 번째 컬럼에서 시작하지 않거나 #과 전처리 지시자 이름 사이에 공백이 없는 경우를 검출합니다.",
  "desc.WRITE_DIRECTIVE_PREPROCESSOR": "전처리 지시자에 공백 사용 체커는 전처리 지시자가 첫 번째 컬럼에서 시작하지 않거나 #과 전처리 지시자 이름 사이에 공백이 있는 경우를 검출합니다.",
  "desc.WRITE_STATIC_DECLARING_OPERATOR_NEW_AND_DELETE": "정적으로 선언하지 않은 메모리 연산자 오버로딩 체커는 클래스에서 정적으로 선언하지 않은 new 와 delete 연산자 오버로딩을 검출합니다.",
  "desc.WRITE_TO_READONLY_FILE": "읽기 전용 파일에 쓰기 시도 체커는 읽기 모드로 열린 파일에 쓰기를 시도한 경우를 검출합니다.",
  "desc.WRITE_VIRTUAL_DTOR_FOR_BASE_CLASS": "부모 클래스 소멸자를 비 가상으로 선언 체커는 소멸자를 가상으로 선언하지 않은 부모 클래스를 검출합니다.",
  "desc.WRONG_ERROR_HANDLING": "잘못된 오류 처리 체커는 애플리케이션 독립적인 코드에서 오류 감지 메커니즘을 제공하지 않는 경우를 검출합니다.",
  "desc.WRONG_EXCEPTION_HANDLING_IN_PM": "POBISException 외 사용 금지 체커는 PM에서 POBISException 예외를 처리하지 않은 경우를 검출합니다.",
  "desc.WRONG_NUMBER_OF_PARAMETERS_IN_MACRO": "인자 개수가 모자란 매크로 함수 사용 체커는 매크로 함수 사용 시 모든 인자들을 포함하지 않고 사용하는 경우를 검출합니다.",
  "desc.WRONG_PREPROCESSING_TOKEN": "잘못된 전처리 구문 토큰 체커는 #토큰 이후에 올바른 전처리 토큰이 이어지지 않는 전처리 구문을 검출합니다.",
  "desc.WhileLoopsMustUseBraces": "중괄호를 사용하지 않은 while 구문을 검출합니다.",
  "desc.Wrongmathcall": "수학 함수에 해당 값을 넘겨주는 것은 의도하지 않은 기본 값을 반환할 수 있습니다.",
  "desc.XHR_INJECTION.JS": "XHR 삽입 체커는 검증되지 않은 외부 입력이 AJAX를 위한 XMLHttpRequest 객체에 사용되는 경우를 검출합니다.",
  "desc.XML_EXTERNAL_ENTITY_ATTACKS": "XML 외부 엔터티 공격 체커는 외부 엔터티에 대한 참조를 포함하는 XML 입력이 부적절하게 구성된 XML 파서에 의해 처리되는 코드를 검출합니다.",
  "desc.XPATH_INJECTION": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.",
  "desc.XPATH_INJECTION.CPP": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.",
  "desc.XPATH_INJECTION.KOTLIN": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.",
  "desc.XPATH_INJECTION.OBJC": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.",
  "desc.XPATH_INJECTION.PHP": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.",
  "desc.XPATH_INJECTION.PYTHON": "검증되지 않은 외부 입력 값을 XQuery 또는 XPath 쿼리문을 생성하는 문자열로 사용하는 경우 공격자가 쿼리문의 구조를 변경하는 임의의 쿼리를 실행하여 허가되지 않은 데이터를 열람하거나 인증 절차를 우회할 수 있는 보안약점입니다.",
  "desc.XPATH_INJECTION.SWIFT": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.",
  "desc.XPATH_INJECTION.VBNET": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.",
  "desc.XPATH_INJECTION_ASPNET": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.",
  "desc.XQUERY_INJECTION": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.",
  "desc.XQUERY_INJECTION.CPP": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.",
  "desc.XQUERY_INJECTION.OBJC": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.",
  "desc.XQUERY_INJECTION.PHP": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.",
  "desc.XQUERY_INJECTION.PYTHON": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.",
  "desc.XQUERY_INJECTION.VBNET": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.",
  "desc.XQUERY_INJECTION_ASPNET": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.",
  "desc.XSLT_INJECTION_CSHARP": "XSLT 삽입 체커는 검증되지 않은 XSL 스타일 시트를 사용한 XSL 변환 명령 실행을 검출합니다.",
  "desc.XSS": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.XSS.DOM.JS": "DOM 기반 크로스 사이트 스크립트 체커는 외부 입력값을 검증 없이 DOM 객체 출력에 사용하는 경우를 검출합니다.",
  "desc.XSS.JSTL_COUT_ESCAPE_XML_FALSE": "escapeXml 설정으로 인한 크로스 사이트 스크립팅 체커는 JSTL의 c:out 태그를 사용할 때 escapeXml 속성을 false로 지정하는 경우를 검출합니다.",
  "desc.XSS.LOCAL_STORAGE.JS": "localStorage를 통한 크로스 사이트 스크립트 체커는 검증되지 않은 데이터를 웹 브라우저에 보내는 경우를 검출합니다.",
  "desc.XSS.NODEJS.JS": "크로스 사이트 스크립트 공격은 웹 사이트에 악성 코드를 삽입하는 공격 방법입니다. 공격은 일반적으로 애플리케이션의 사용자를 목표로 삼으며, 자동으로 사용자가 악성 코드를 실행하게 하는 등의 피해를 입힐 수 있습니다. 예를 들어, 검증되지 않은 외부 입력이 동적 웹 페이지 생성에 사용될 경우, 전송된 동적 웹 페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출 등의 공격을 유발할 수 있습니다.",
  "desc.XSS.OBJC": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.XSS.PHP": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.XSS.PYTHON": "크로스 사이트 스크립트 공격은 웹 사이트에 악성 코드를 삽입하는 공격 방법입니다. 공격은 일반적으로 애플리케이션의 사용자를 목표로 삼으며, 자동으로 사용자가 악성 코드를 실행하게 하는 등의 피해를 입힐 수 있습니다.",
  "desc.XSS.SWIFT": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.XSS.VBNET": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.XSS.VBS": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.XSS.WARNING": "외부에서 입력한 문자열을 특정 조건부 필터링 등을 사용하여 결과 페이지를 생성할 경우 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출될 수 있습니다.",
  "desc.XSS_ASPNET": "크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.",
  "desc.XSS_ATTRIBUTE": "속성값에 의한 크로스 사이트 스크립트 체커는 외부에서 전달된 요청에 부여된 속성값을 검증 없이 HTML 출력에 사용하는 경우를 검출합니다.",
  "desc.XSS_DOM": "DOM 기반 크로스 사이트 스크립트 체커는 외부 입력값을 검증 없이 JSP의 DOM 객체 출력에 사용하는 경우를 검출합니다.",
  "desc.XSS_ERROR_MESSAGE": "오류 메시지를 통한 크로스 사이트 스크립트 체커는 오류 메시지를 전송할 때 외부 입력과 함께 전송하는 경우를 검출합니다.",
  "desc.XSS_ERROR_MESSAGE_ASPNET": "오류 메시지를 통한 크로스 사이트 스크립트 체커는 오류 메시지를 전송할 때 외부 입력과 함께 전송하는 경우를 검출합니다.",
  "desc.XSS_ETC.GO": "Go 언어에서 template.CSS나 template.Srcset 등의 이스케이프를 하지 않는 함수를 사용하면 크로스 사이트 스크립트(XSS) 공격에 노출됩니다. 사용자 입력값을 직접 전달하는 것은 매우 위험합니다. 사용자 입력값은 공격자가 예측할 수 없는 방식으로 변경될 수 있으므로, 이를 바탕으로 CSS를 생성하는 등의 행위는 해커에게 공격 벡터를 제공하는 것과 마찬가지입니다.",
  "desc.XSS_FROM_URL.REACT": "URL 값을 악의적인 값으로 수정하게 허용하면 XSS와 같은 공격에 노출될 수 있습니다. 특히 \"javascript:\"가 포함된 주소를 사용하여 URL을 조작할 경우 공격자의 의도대로 악성 스크립트를 실행할 수 있게 됩니다.",
  "desc.XSS_HTML.GO": "Go 언어의 html/template 패키지는 HTML 템플릿을 생성하고 처리하는 데 사용되는 유용한 도구입니다. 이 패키지는 HTML 이스케이프 기본적으로 처리하여 크로스 사이트 스크립트(XSS) 공격을 방지하도록 도와줍니다. 그러나 html/template 패키지의 template.HTML와 template.HTMLAttr이라는 두 가지 특수한 함수는 HTML 이스케이프 처리가 되지 않습니다. 이 함수들에 검증되지 않은 외부 입력 값이 포함된다면 XSS 공격에 취약하게 됩니다.",
  "desc.XSS_JS.GO": "Go 언어의 html/template 패키지에는 template.JS와 template.JSStr라는 함수가 있습니다. 이 함수는 문자열을 JavaScript 코드로 간주하는데, 이 때문에 크로스 사이트 스크립트(XSS) 공격의 위험이 있습니다. 이 함수들은 템플릿 내에서 JavaScript 코드로 해석되기 때문에, 사용자 입력을 검증하지 않고 변환하면 사용자가 공격 코드를 주입할 수 있습니다.",
  "desc.XSS_TEMPLATE.GO": "Go 언어에서는 text/template와 html/template 두 개의 템플릿 엔진을 제공합니다. text/template 패키지는 HTML 이스케이프 기능을 제공하지 않습니다. 사용자 입력이 HTML 콘텐츠로 직접 삽입될 때, 이스케이프 되지 않은 HTML 태그나 스크립트 코드는 공격자가 악성 스크립트를 주입하는 데 사용될 수 있습니다. text/template를 사용해 웹 애플리케이션에서 HTML을 생성하면, 개발자가 직접 모든 동적 콘텐츠를 이스케이프 해야 하므로 XSS 공격에 쉽게 노출될 수 있습니다.",
  "desc.XSS_URL.GO": "Go 언어의 template.URL는 안전하다고 간주되는 URL을 생성합니다. 하지만 사용자 입력값이 포함될 경우, 공격자가 조작된 URL을 생성하여 사용자를 위험한 사이트로 이동시키거나 스크립트를 실행시킬 수 있습니다.",
  "desc.XSS_VANILLA_JS.JS": "크로스 사이트 스크립트 공격은 웹 사이트에 악성 코드를 삽입하는 공격 방법입니다. 공격은 일반적으로 애플리케이션의 사용자를 목표로 삼으며, 자동으로 사용자가 악성 코드를 실행하게 하는 등의 피해를 입힐 수 있습니다. 예를 들어, 검증되지 않은 외부 입력이 동적 웹 페이지 생성에 사용될 경우, 전송된 동적 웹 페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출 등의 공격을 유발할 수 있습니다.",
  "desc.accessForwarded": "forward 함수에 인자로 사용된 변수에 접근합니다.",
  "desc.accessMoved": "move함수에 사용된 변수에 접근합니다.",
  "desc.arithOperationsOnVoidPointer": "void 포인터에 산술 연산을 하는 것은 의도치 않은 동작을 할 수 있습니다.",
  "desc.charBitOp": "char 변수와 비트 연산을 합니다.",
  "desc.charLiteralWithCharPtrCompare": "char 문자를 포인터와 비교합니다.",
  "desc.checkCastIntToCharAndBack": "char 타입과 EOF를 비교합니다.",
  "desc.clarifyCalculation": "계산 순서를 명확하게 해야합니다.",
  "desc.clarifyStatement": "*A++ 와 같은 비효율적인 문이 있습니다.",
  "desc.commaSeparatedReturn": "Return문 안에 comma 가 있습니다.",
  "desc.comparisonFunctionIsAlwaysTrueOrFalse": "같은 값을 비교합니다.",
  "desc.constStatement": "상수로 시작하는 문이 있습니다.",
  "desc.cstyleCast": "C++용 타입 변환을 사용해야 합니다.",
  "desc.deadpointer": "포인터의 사용이 끝났습니다.",
  "desc.deallocDealloc": "해제한 포인터를 다시 해제합니다.",
  "desc.deallocret": "해제된 메모리를 리턴 혹은 역참조 합니다.",
  "desc.deallocuse": "해제된 메모리를 접근합니다.",
  "desc.derefInvalidIterator": "반복자에 접근하기 전에 유효성 검사를 해야합니다.",
  "desc.doubleFree": "메모리가 두번 해제 되었습니다.",
  "desc.duplicateBranch": "조건문 안의 내용이 다른 조건문과 일치합니다.",
  "desc.duplicateBreak": "연속적으로 나오는 return, break, continue, goto, throw 문은 불필요합니다.",
  "desc.duplicateExpression": "논리 연산의 양쪽에 같은 식이 있습니다.",
  "desc.duplicateExpressionTernary": "삼항연산자의 양쪽 식이 같습니다.",
  "desc.eraseDereference": "무효화된 반복자가 사용됩니다.",
  "desc.fflushOnInputStream": "input stream에 대해 fflush함수를 호출했습니다.",
  "desc.floatConversionOverflow": "큰값의 float 수를 정수로 바꾸는 것은 오버플로우가 일어날 수 있습니다.",
  "desc.funcArgNamesDifferent": "함수 정의와 선언의 인자 이름이 다릅니다.",
  "desc.funcArgOrderDifferent": "함수 정의와 선언의 인자순서가 다릅니다.",
  "desc.incompleteArrayFill": "배열이 불완전하게 채워집니다.",
  "desc.incorrectStringBooleanError": "문자열의 boolean 값은 항상 참입니다.",
  "desc.incorrectStringCompare": "substr 의 길이와 비교하는 스트링이 맞지 않습니다.",
  "desc.integerOverflow": "정수 overflow 가 발생합니다.",
  "desc.invalidIterator1": "반복자가 무효화 됩니다.",
  "desc.invalidIterator2": "push_back, push_front, insert 후에는 반복자가 무효화 됩니다.",
  "desc.invalidLengthModifierError": "포맷 스트링의 'I' 는 단독으로 쓰일 수 없습니다.",
  "desc.invalidPointer": "push_back 호출 뒤에는 가리키고 있던 포인터들은 무효화 됩니다.",
  "desc.invalidPointerCast": "포인터 끼리의 캐스팅은 호환성에 문제가 생길 수 있습니다.",
  "desc.invalidPrintfArgType_float": "포맷 스트링의 %f는 double 타입을 인자로 받아야 합니다.",
  "desc.invalidPrintfArgType_n": "포맷 스트링의 %n은 int* 타입을 인자로 받아야 합니다.",
  "desc.invalidPrintfArgType_p": "포맷 스트링의 %p는 포인터 타입을 인자로 받아야 합니다.",
  "desc.invalidPrintfArgType_s": "포맷 스트링의 %s는 char* 타입을 인자로 받아야 합니다.",
  "desc.invalidPrintfArgType_sint": "포맷 스트링의 %i는 int 타입을 인자로 받아야 합니다.",
  "desc.invalidPrintfArgType_uint": "포맷 스트링의 %u는 unsigned int 타입을 인자로 받아야 합니다.",
  "desc.invalidScanfArgType_float": "포맷 스트링의 %f는 float* 타입을 인자로 받아야 합니다.",
  "desc.invalidScanfArgType_int": "포맷 스트링의 %d는 int* 타입을 인자로 받아야 합니다.",
  "desc.invalidScanfArgType_s": "포맷 스트링의 %s는 char* 타입을 인자로 받아야 합니다.",
  "desc.invalidScanfFormatWidth": "포맷 스트링내의 길이는 버퍼 크기보다 작아야 합니다.",
  "desc.invalidscanf": "scanf() 함수 내에 길이 제한을 걸지 않았습니다.",
  "desc.iterators": "다른 컨테이너에 같은 반복자를 사용합니다.",
  "desc.leakNoVarFunctionCall": "함수 내에서 할당된 메모리를 해제 하지 않습니다.",
  "desc.leakReturnValNotUsed": "할당 함수의 리턴값이 저장되지 않습니다.",
  "desc.leakUnsafeArgAlloc": "함수 인자내에 다른 함수에서 예외가 발생할경우 메모리 누수가 발생할 수 있습니다.",
  "desc.literalWithCharPtrCompare": "문자열을 변수와 바로 비교합니다.",
  "desc.memleak": "메모리 누수가 있습니다.",
  "desc.memleakOnRealloc": "realloc 이 실패 했을 때 기존 할당된 메모리의 누수가 일어날 수 있습니다.",
  "desc.mismatchAllocDealloc": "알맞은 메모리 해제를 사용해야 합니다.",
  "desc.mismatchSize": "할당된 메모리의 크기가 타입의 크기의 배수가 아닙니다.",
  "desc.mismatchingContainers": "다른 컨테이너의 반복자들이 같이 사용됩니다.",
  "desc.missingInclude": "Include 파일을 찾을 수 없습니다.",
  "desc.multiplySizeof": "sizeof()값을 곱해서 다시 sizeof()에 넣었습니다.",
  "desc.nanInArithmeticExpression": "Inf/NaN 을 연산에 사용했습니다.",
  "desc.nullPointer": "널 포인터 역참조가 있습니다.",
  "desc.nullPointerArithmetic": "널 포인터로 수식 계산을 합니다.",
  "desc.nullPointerDefaultArg": "인자의 기본값이 사용될 경우 널포인터 역참조가 발생할 수 있습니다.",
  "desc.nullPointerRedundantCheck": "널 체크가 중복 되었거나, 널포인터 역참조 가능성이 있습니다.",
  "desc.overlappingStrcmp": "조건식이 겹치는 부분이 있습니다.",
  "desc.passedByValue": "함수 인자는 레퍼런스로 넘기는 것을 추천합니다.",
  "desc.pointerLessThanZero": "포인터 값은 음수가 될수 없습니다.",
  "desc.pointerPositive": "포인터는 음수가 될 수 없습니다.",
  "desc.pointerSize": "포인터 변수가 그대로 sizeof 에 사용됩니다.",
  "desc.postfixOperator": "prefix ++/-- 연산을 사용하는것이 효율적입니다.",
  "desc.publicAllocationError": "포인터에 할당하기 전에 해제 하지 않으면 메모리 누수가 발생 할 수 있습니다.",
  "desc.raceAfterInterlockedDecrement": "InterlockedDecrement() 함수의 리턴값을 이용해야 합니다.",
  "desc.readWriteOnlyFile": "쓰기 전용으로 연 파일을 읽습니다.",
  "desc.reademptycontainer": "빈 STL 컨테이너를 읽습니다.",
  "desc.redundantAssignInSwitch": "switch 문에서 이전 값이 사용되기 전에 다시 대입 되었습니다.",
  "desc.redundantAssignment": "변수의 이전 값이 사용되기 전에 다른 값이 대입 되었습니다.",
  "desc.redundantCopy": "이전 버퍼의 내용이 사용되기 전에 다시 쓰였습니다.",
  "desc.redundantCopyInSwitch": "버퍼의 이전값이 사용되기 전에 다시 쓰였습니다.",
  "desc.redundantCopyLocalConst": "const reference 타입을 쓰면 불필요한 데이터 복사를 막을수 있습니다.",
  "desc.redundantIfRemove": "STL 컨테이너안의 원소를 제거 할 때 불필요한 체크가 있습니다.",
  "desc.redundantPointerOp": "의미 없는 포인터 연산입니다.",
  "desc.resourceLeak": "리소스 누수가 발생합니다.",
  "desc.returnTempReference": "임시 오브젝트의 레퍼런스가 반환됩니다",
  "desc.seekOnAppendedFile": "append 모드로 연 파일은 repositioning 되지 않습니다.",
  "desc.selfAssignment": "자기자신을 대입하는 문이 있습니다.",
  "desc.shiftNegative": "음수 비트만큼의 쉬프트 연산은 의도하지 않은 동작을 할 수 있습니다.",
  "desc.shiftNegativeLHS": "음수 값에 비트쉬프트 연산을 했습니다.",
  "desc.shiftTooManyBits": "사이즈보다 큰 비트를 쉬프트 연산 하는것을 의도치 않은 동작을 할 수 있습니다.",
  "desc.shiftTooManyBitsSigned": "부호 있는 값에 너무 큰 값을 비트 쉬프트 연산에 사용합니다.",
  "desc.signConversion": "sign conversion 이 일어납니다.",
  "desc.signedCharArrayIndex": "배열의 인덱스로 char 타입을 사용했습니다.",
  "desc.sizeofCalculation": "sizeof 안에 계산식이 있습니다.",
  "desc.sizeofDereferencedVoidPointer": "sizeof(void) 는 ISO C 표준이 아닙니다.",
  "desc.sizeofDivisionMemfunc": "메모리 함수 안에서 sizeof 값으로 나누기를 합니다.",
  "desc.sizeofFunctionCall": "sizeof 안에 함수 호출이 있습니다.",
  "desc.sizeofVoid": "sizeof(void) 는 ISO C 표준이 아닙니다.",
  "desc.sizeofsizeof": "sizeof 를 중첩해서 호출합니다.",
  "desc.sizeofwithnumericparameter": "sizeof 함수의 인자로 상수값이 들어갑니다.",
  "desc.sizeofwithsilentarraypointer": "함수의 인자로 들어온 배열의 sizeof 값은 포인터의 크기입니다.",
  "desc.sprintfOverlappingData": "sprintf 계열 함수를 사용 할때 오버래핑이 일어납니다.",
  "desc.staticStringCompare": "불필요한 문자열 비교입니다.",
  "desc.stlBoundaries": "반복자에 <, > 연산자를 사용합니다.",
  "desc.stlIfFind": "find() 함수의 결과값을 정확히 체크해야 합니다.",
  "desc.stlIfStrFind": "string::find() 는 비효율적입니다. string::compare()이 더 효율적입니다.",
  "desc.stlOutOfBounds": "크기 만큼의 버퍼 접근은 범위를 벗어납니다.",
  "desc.stlSize": "size 함수로 비었는지 검사합니다.",
  "desc.stlcstr": "c_str 함수의 리턴 값은 후에 유효하지 않을 수 있습니다.",
  "desc.stlcstrParam": "string 타입을 인자로 받는 함수에 c_str() 의 결과를 넣는 것은 비효율적입니다.",
  "desc.stlcstrReturn": "c_str 함수의 결과를 바로 리턴값으로 사용하는 것은 비효율 적입니다.",
  "desc.strPlusChar": "문자열 값에 char 값을 더합니다.",
  "desc.stringCompare": "같은 문자열 변수를 비교합니다.",
  "desc.stringLiteralWrite": "문자열 을 직접 바꾸는 것은 의도치 않은 동작을 할 수 있습니다.",
  "desc.suspiciousCase": "case 안의 논리 연산이 있습니다.",
  "desc.suspiciousEqualityComparison": "조건문에 의심스러운 대입연산이 있습니다.",
  "desc.suspiciousSemicolon": "세미콜론의 사용이 의심됩니다.",
  "desc.truncLongCastAssignment": "long 값을 int 에 대입합니다.",
  "desc.truncLongCastReturn": "int 값이 long 으로 리턴됩니다.",
  "desc.unassignedVariable": "변수에 값이 대입 되지 않았습니다.",
  "desc.uninitStructMember": "구조체 멤버가 초기화되지 않았습니다.",
  "desc.uninitdata": "메모리가 할당되었지만 초기화되지 않았습니다.",
  "desc.uninitstring": "String 을 초기화 하지 않고 strncpy 와 같은 함수에 사용합니다.",
  "desc.uninitvar": "변수가 초기화 되지 않았습니다.",
  "desc.unknownEvaluationOrder": "계산 순서에 따라 의도하지 않은 작동을 할 수 있습니다.",
  "desc.unknownSignCharArrayIndex": "배열의 인덱스로 char 타입을 사용했습니다.",
  "desc.unreachableCode": "return, break, continue, goto, throw 문 뒤에 있는 코드는 실행되지 않습니다.",
  "desc.unsafeClassCanLeak": "이 필드는 메모리 누수 가능성이 있습니다.",
  "desc.unsignedLessThanZero": "부호없는 변수를 0보다 작은지 비교합니다.",
  "desc.unsignedPositive": "부호 없는 변수를 0보다 크거나 같은지 비교합니다.",
  "desc.unusedFunction": "사용되지 않는 함수입니다.",
  "desc.unusedLabel": "사용되지 않는 레이블입니다.",
  "desc.unusedLabelSwitch": "사용되지 않는 레이블입니다.",
  "desc.unusedScopedObject": "더이상 사용되지 않는 객체 입니다.",
  "desc.unusedStructMember": "구조체 멤버가 사용되지 않았습니다.",
  "desc.unusedVariable": "사용되지 않는 변수입니다.",
  "desc.useAutoPointerArray": "new[] 로 만든 포인터에 auto_ptr을 사용하면 안됩니다.",
  "desc.useAutoPointerContainer": "STL 컨테이너 안에 auto_ptr, unique_ptr 포인터를 저장합니다.",
  "desc.useAutoPointerCopy": "auto_ptr 값이 카피 될 경우, 원본 포인터는 기능을 할 수 없습니다.",
  "desc.useAutoPointerMalloc": "malloc으로 생성된 포인터를 auto_ptr에 사용하면 안됩니다.",
  "desc.useClosedFile": "열려 있지 않은 파일을 사용합니다.",
  "desc.uselessCallsCompare": "str.find(str) 은 항상 0을 리턴합니다.",
  "desc.uselessCallsEmpty": "의미없는 empty 함수의 호출입니다.",
  "desc.uselessCallsRemove": "std::remove 의 리턴값이 무시됩니다.",
  "desc.uselessCallsSubstr": "substr만 호출합니다.",
  "desc.uselessCallsSwap": "같은 변수를 스왑합니다.",
  "desc.va_end_missing": "va_end()가 호출되지 않습니다.",
  "desc.va_list_usedBeforeStarted": "va_start 호출 전에 va_list가 사용됩니다.",
  "desc.va_start_referencePassed": "va_start 인자로 레퍼런스를 사용하는것은 의도치 않은 동작을 할 수 있습니다.",
  "desc.va_start_subsequentCalls": "va_end() 호출이 생략되었습니다.",
  "desc.va_start_wrongParameter": "va_start 에 있는 인자가 함수의 마지막 인자가 아닙니다.",
  "desc.varFuncNullUB": "가변인자 함수의 마지막 인자가 NULL 일경우 의도치 않은 동작을 할 수 있습니다.",
  "desc.variableScope": "변수의 scope를 줄일 수 있습니다.",
  "desc.writeReadOnlyFile": "읽기전용으로 연 파일에 쓰기 작업을 합니다.",
  "desc.wrongPipeParameterSize": "pipe 함수에 인자로 들어가는 정수형 버퍼의 사이즈는 2여야 합니다.",
  "desc.wrongPrintfScanfArgNum": "printf 포맷 스트링의 인자 갯수가 올바르지 않습니다.",
  "desc.wrongPrintfScanfParameterPositionError": "포맷 스트링 내의 'n$'는 맞는 인자를 가져야 합니다.",
  "desc.zerodiv": "0으로 나누기를 합니다.",
  "desc.zerodivcond": "0 체크가 중복이거나, 0으로 나누기가 발생할 수 있습니다.",
  "doubleFree.description": "메모리가 두번 해제 되었습니다.",
  "duplicateBranch.description": "조건문 안의 내용이 다른 조건문과 일치합니다. 제대로 작성된 코드인지 확인이 필요합니다.",
  "duplicateBreak.description": "연속적으로 나오는 return, break, continue, goto, throw 문은 불필요합니다.",
  "duplicateExpression.description": "논리 연산의 양쪽에 같은 식이 있습니다. 제대로 작성된 코드인지 확인이 필요합니다.",
  "duplicateExpressionTernary.description": "삼항연산자의 양쪽 식이 같습니다.",
  "edg.FORMAT_STRING.1": "{0} 인자 이전에 포맷 스트링이 종료됩니다.",
  "edg.FORMAT_STRING.1.brief": "인자 이전에 포맷 스트링이 종료됩니다.",
  "edg.FORMAT_STRING.2": "이 포맷 스트링에 추가적인 인자가 필요합니다. : {0}",
  "edg.FORMAT_STRING.2.brief": "이 포맷 스트링에 추가적인 인자가 필요합니다.",
  "edg.FORMAT_STRING.3": "인자가 대응되는 포맷 스트링 변환 문자와 호환되지 않습니다. : {0}",
  "edg.FORMAT_STRING.3.brief": "인자가 대응되는 포맷 스트링 변환 문자와 호환되지 않습니다.",
  "edg.UNUSED_VARIABLE": "변수 {0}이(가) 선언되었으나, 한 번도 사용되지 않았습니다.",
  "edg.UNUSED_VARIABLE.brief": "변수가 선언되었으나, 한 번도 사용되지 않았습니다.",
  "edgpog.ARGUMENT_NUMBER_MISMATCH.too_few": "함수 호출 인자가 너무 적습니다.",
  "edgpog.ARGUMENT_NUMBER_MISMATCH.too_many": "함수 호출 인자가 너무 많습니다.",
  "edgpog.BAD_FORMAT.VIRTUAL_FUNC_INIT.msg": "순수함수는 반드시 가상함수로 선언되어야 합니다.",
  "edgpog.BAD_INIT.PURE_VIRTUAL.msg": "순수 가상함수는 반드시 0으로 초기화 되어야 합니다.",
  "edgpog.BAD_VLA_PARAMETER.msg": "허용되지 않은 가변 크기 배열 타입의 파라미터를 포함하여 함수를 선언했습니다.",
  "edgpog.COND_COMP_MISMATCH.msg_endif": "#if 지시자가 시작되었으나 현재 파일에 대응하는 조건부 컴파일 종료 지시자가 없습니다.",
  "edgpog.COND_COMP_MISMATCH.msg_if": "이 조건부 컴파일 종료 지시자에 대응하는 #if 가 없습니다.",
  "edgpog.FILENAME_IN_ANGLE_BRACKET_OR_DOUBLE_QUOTATION.msg": "#include 전처리문은 <filename> 형태나 \"filename\"을 따라야 합니다.",
  "edgpog.MISSING.FUNCTION_DECLARATION.msg": "함수가 선언되지 않고 사용되었습니다.",
  "edgpog.MISSING_FUNCTION_RETURN_TYPE.msg": "함수 선언에서 반환 타입이 생략되었습니다.",
  "edgpog.PROHIBIT_DELETE_CONTAIN_ELEMENT_NUM.msg": "배열을 delete 구문으로 해제하면서 인덱스를 명시했습니다.",
  "edgpog.VOID_PARAMETER_SHALL_NOT_BE_USED.msg": "매개 변수의 타입으로 void 타입을 사용하지 않도록 합니다.",
  "edgpog.VOID_RETURN_VALUE_SHALL_NOT_BE_USED.msg": "반환 타입이 void인 함수의 리턴값을 사용했습니다.",
  "eraseDereference.description": "무효화된 반복자가 사용됩니다.",
  "fflushOnInputStream.description": "input stream에 대해 fflush 함수를 호출했습니다. 따라서 Linux가 아닌 시스템에서 정의되지 않은 동작을 수행할 수 있습니다.",
  "floatConversionOverflow.description": "큰값의 float 수를 정수로 바꾸는 것은 오버플로우가 일어날 수 있습니다.",
  "funcArgNamesDifferent.description": "함수 정의와 선언의 인자 이름이 다릅니다.",
  "funcArgOrderDifferent.description": "함수 정의와 선언의 인자 이름이 다릅니다.",
  "gochk.HARD_CODED.PASSWORD.GO.defect": "하드코드된 비밀번호로 추정되는 데이터가 발견되었습니다.",
  "gochk.IMPROPER_COOKIE_FLAG_SETTING.GO.defect": "부적절한 쿠키 설정으로 XSS, CSRF 등의 보안약점에 노출됩니다. 안전한 쿠키 플래그를 설정하기 바랍니다.",
  "gochk.IMPROPER_PERMISSION.GO.defect": "광범위한 권한을 설정하여 공격자가 악의적인 행동을 취할 수 있습니다.",
  "gochk.IMPROPER_SSH_KEY_SETTING.GO.defect": "ssh.InsecureIgnoreHostKey()는 중간자 공격을 유발하므로 사용하지 않는 것이 안전합니다.",
  "gochk.IMPROPER_TLS_SETTING.GO.defect": "`InsecureSkipVerify`을 설정하면 인증서에 대한 검증을 하지 않기 때문에 중간자 공격에 취약합니다.",
  "gochk.INFORMATION_LEAK.ERROR.GO.defect": "오류 메시지의 내용이 출력문에 포함될 경우, 해커에게 시스템에 대한 중요 정보가 노출될 수 있습니다.",
  "gochk.INTEGER_OVERFLOW.TYPE_CONV.GO.defect": "`strconv.Atoi`는 시스템에 따라 크기가 변하여 오버플로 위험이 있습니다.",
  "gochk.PATH_CONTAMINATION.GO.defect.sink": "경로 조작 위험이 함수에 외부 입력값이 필터링 없이 포함되어 위험합니다.",
  "gochk.SERVER_SIDE_REQUEST_FORGERY.GO.defect.sink": "사용자로부터 입력받은 데이터를 그대로 URL로 사용하는 것은 위험합니다.",
  "gochk.SLOWLORIS_ATTACK.GO.defect": "Timeout을 설정을 하지 않으면 Slowloris 공격에 취약합니다.",
  "gochk.SQL_INJECTION.GO.defect.sink": "외부에서 입력받은 값이 바인딩 처리없이 쿼리문에 사용되어 위험합니다.",
  "gochk.WEAK_CRYPTOGRAPHIC_HASH.GO.defect": "취약한 해시 알고리즘을 사용하면 무작위 대입 공격에 노출됩니다.",
  "gochk.WEAK_CRYPTOGRAPHIC_NETWORK.GO.defect": "네트워크 인터페이스에서 들어오는 모든 연결 요청을 수신하여 위험합니다. 명확한 IP 주소를 사용하기 바랍니다.",
  "gochk.WEAK_CRYPTOGRAPHIC_PACKAGE.GO.defect": "불필요한 패키지를 사용하여 보안 문제가 생길 수 있습니다.",
  "gochk.WEAK_CRYPTOGRAPHIC_RANDOM.GO.defect": "취약한 난수 알고리즘을 사용하면 해커에게 쉽게 공격당할 수 있습니다.",
  "gochk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.GO.defect": "RSA 키 길이는 2048 bits 이상을 사용하는 것이 안전합니다.",
  "gochk.XSS_ETC.GO.defect.sink": "{0} 에 외부 입력값이 포함된다면 XSS 공격에 취약합니다.",
  "gochk.XSS_HTML.GO.defect.sink": "{0} 에 외부 입력 값이 포함된다면 XSS 공격에 취약하기 때문에 특수문자를 이스케이프 한 후 사용해야 합니다.",
  "gochk.XSS_JS.GO.defect.sink": "{0} 에 외부 입력 값이 포함된다면 XSS 공격에 취약하기 때문에 특수문자를 이스케이프 한 후 사용해야 합니다.",
  "gochk.XSS_TEMPLATE.GO.defect": "'text/template'는 XSS 공격에 취약하기 때문에 'html/template'를 사용해야 합니다.",
  "gochk.XSS_URL.GO.defect.sink": "`template.URL`에 외부 입력 값이 포함된다면 XSS 공격에 취약하기 때문에 이스케이프 한 후 사용해야 합니다.",
  "horus.ACCESS_NONEXISTENT_MEMBERS.default_desc_0": "존재하지 않는 멤버 {0} 에 접근합니다.",
  "horus.ACCESS_NONEXISTENT_MEMBERS.deref_0": "멤버 포인터 {0} 가 가리키는 값이 널 포인터 입니다. 널 역참조 오류가 발생합니다.",
  "horus.ALREAY_OWNED_POINTER.default_desc_0": "이미 소유한 포인터인 {0} 값을 저장하지 않도록 합니다.",
  "horus.ALTERNATING_INPUT_OUTPUT.default_desc": "파일 입출력을 번갈아 실행할 때 문제가 없게 하기 위해서는 사이에 파일을 flush 하거나 파일의 위치를 정해주는 함수 호출을 사용해야 합니다.",
  "horus.ATEXIT_HANDLER_CALLS_EXIT.default_desc": "모든 종료 핸들러는 반드시 일반적인 방법으로 리턴해야 합니다.",
  "horus.AVOID_DEADLOCK.default_desc": "사전 정의된 순서로 잠궈 데드락을 방지합니다.",
  "horus.CALL_EVERY_FUNCTION_GLOBAL.default_desc": "이 함수가 호출되지 않았습니다.",
  "horus.CAST_ALTERS_VALUE.EXT.cast_0_from_0_to_1": "{0} 타입에서 {1} 타입으로 캐스팅 하는 것은 {2} 식의 결과를 바꿀 수 있습니다.",
  "horus.CHECK_ALIGNMENT_OF_MEMORY.default_desc": "함수 realloc()은 정렬된 메모리 블락을 할당하지 않습니다.",
  "horus.CLEARTEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.default_desc_0": "민감한 정보 {0} 가 평문의 형태로 제어기 외부에 전송됩니다.",
  "horus.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.default_desc": "민감한 정보가 안전성 검사 없이 외부로 전송되고 있습니다.",
  "horus.CODE_INJECTION.RETURN_ADDRESS.default_desc_0": "스택 영역에 속한 {0} 배열의 오프셋과 저장하는 값 모두 위험한 값입니다. 코드 삽입 공격이 발생할 수 있습니다.",
  "horus.COMMON.arg_0_mb_1_2": "인수 {0} 의 값은 반드시 {1} {2} 이어야 합니다.",
  "horus.COMMON.argu_0_type_1_arguement": "전달된 {1} 인자의 타입은 {0} 입니다.",
  "horus.COMMON.assign_0_to_1": "{0} 식을 {1} 식에 대입합니다.",
  "horus.COMMON.assign_0_to_1_field": "{1} 필드에 {0} 식을 대입합니다.",
  "horus.COMMON.assign_alloc_to_0": "할당한 메모리를 {0} 식에 대입합니다.",
  "horus.COMMON.assign_type_0_to_1": "{0} 형식의 값을 {1} 식에 대입합니다.",
  "horus.COMMON.assume_0_equal_1": "{0} 식이 {1} 식과 같다고 가정합니다.",
  "horus.COMMON.assume_0_equal_to_zero": "{0} 식이 0과 같다고 가정합니다.",
  "horus.COMMON.assume_0_false": "{0} 식이 false로 설정되었다고 가정합니다.",
  "horus.COMMON.assume_0_non_zero": "{0} 식이 0이 아니라고 가정합니다.",
  "horus.COMMON.assume_0_not_equal_1": "{0} 식이 {1} 식과 같지 않다고 가정합니다.",
  "horus.COMMON.assume_0_not_equal_to_zero": "{0} 식이 0과 같지 않다고 가정합니다.",
  "horus.COMMON.assume_0_not_match_cases": "{0} 식이 모든 케이스에 속하지 않는다고 가정합니다.",
  "horus.COMMON.assume_0_not_null": "{0} 식이 Null 포인터가 아니라고 가정합니다.",
  "horus.COMMON.assume_0_null": "{0} 식이 Null 포인터라고 가정합니다.",
  "horus.COMMON.assume_0_op1_2": "{0} 식이 {1} {2} (이)라고 가정합니다.",
  "horus.COMMON.assume_0_true": "{0} 식이 true로 설정되었다고 가정합니다.",
  "horus.COMMON.assume_0_zero": "{0} 식이 0이라고 가정합니다.",
  "horus.COMMON.calc_0": "{0} 식을 계산합니다.",
  "horus.COMMON.calling_0": "{0} 함수를 호출합니다.",
  "horus.COMMON.calling_cnd_signal": "cnd_signal() 함수를 호출합니다.",
  "horus.COMMON.calling_exit": "종료 함수를 호출합니다.",
  "horus.COMMON.calling_mtx_destroy": "mtx_destroy() 함수를 호출합니다.",
  "horus.COMMON.calling_signal": "signal() 함수를 호출합니다.",
  "horus.COMMON.calling_x": "함수를 호출합니다.",
  "horus.COMMON.captures_0": "{0} 식을 캡쳐합니다.",
  "horus.COMMON.cast_alters_0": "{0} 식의 캐스팅 결과로 값이 바뀔 수 있습니다.",
  "horus.COMMON.changed_field_0": "{0} 필드의 값이 변경됩니다.",
  "horus.COMMON.check_field_0": "{0} 필드 선언을 확인합니다.",
  "horus.COMMON.check_handler": "핸들러 등록을 확인합니다.",
  "horus.COMMON.check_memory_0": "{0} 식이 가리키고 있는 메모리 값을 확인합니다.",
  "horus.COMMON.check_resource_0": "{0} 식이 가리키고 있는 리소스 값을 확인합니다.",
  "horus.COMMON.check_var_0": "{0} 변수 선언을 확인합니다.",
  "horus.COMMON.cond_0_1_2": "({0} {1} {2} 인 경우)",
  "horus.COMMON.default_branch": "'default' 분기를 선택합니다.",
  "horus.COMMON.deref": "포인터를 참조합니다.",
  "horus.COMMON.div_by_0": "{0} 식의 결과가 0이기 때문에 값을 0으로 나눕니다.",
  "horus.COMMON.dyn_cast_failed": "참조 형식의 동적 캐스팅이 실패했습니다.",
  "horus.COMMON.enter_loop": "반복문에 진입합니다.",
  "horus.COMMON.enter_then": "'then' 구문에 진입합니다.",
  "horus.COMMON.exception_raised": "예외가 발생합니다.",
  "horus.COMMON.exit_loop": "반복문을 탈출합니다.",
  "horus.COMMON.expr_0_can_be_nullptr": "{0} 식은 Null 포인터일 수 있습니다.",
  "horus.COMMON.expr_0_can_be_zero": "{0} 식은 0일 수 있습니다.",
  "horus.COMMON.field_0_decl": "{0} 필드를 선언합니다.",
  "horus.COMMON.field_0_decl_uninit": "{0} 생성자 초기화 작업 없이 필드를 선언합니다.",
  "horus.COMMON.file_allocated": "파일 형식의 리소스를 할당합니다.",
  "horus.COMMON.file_failed": "파일 형식의 리소스 할당이 실패합니다.",
  "horus.COMMON.file_released": "파일 형식의 리소스를 해제합니다.",
  "horus.COMMON.handle_allocated": "핸들 형식의 리소스를 할당합니다.",
  "horus.COMMON.handle_failed": "핸들 형식의 리소스 할당이 실패합니다.",
  "horus.COMMON.handle_released": "핸들 형식의 리소스를 해제합니다.",
  "horus.COMMON.invalid_iter": "반복자가 무효화 되었습니다.",
  "horus.COMMON.jmp_to_0": "{0} 번 줄로 이동합니다.",
  "horus.COMMON.jmp_to_case_0_1": "case {0} 구문이 있는 {1} 번 줄로 이동합니다.",
  "horus.COMMON.jmp_to_default_0": "'default' 구문이 있는 {0} 번 줄로 이동합니다.",
  "horus.COMMON.last": "가장 마지막으로 변경된 값입니다.",
  "horus.COMMON.length_0_can_be_zero_ret_1": "{1} 이 반환되었을 때 {0} 의 길이는 0일 수 있습니다.",
  "horus.COMMON.location_access_0": "{0} 식이 가리키고 있는 메모리 값에 액세스합니다.",
  "horus.COMMON.location_access_func_0": "{0} 함수 내에서 메모리 값에 액세스합니다.",
  "horus.COMMON.loop_cond_is_false": "반복 조건은 false로 설정되었습니다.",
  "horus.COMMON.loop_cond_is_true": "반복 조건은 true로 설정되었습니다.",
  "horus.COMMON.lost_0": "{0} 식이 가리키고 있는 값을 잃어버립니다.",
  "horus.COMMON.mem_0_aligned_allocated": "{0} 형식의 정렬된 메모리를 할당합니다.",
  "horus.COMMON.mem_0_allocated": "{0} 형식 메모리를 할당합니다.",
  "horus.COMMON.mem_0_is_relinquished": "{0} 형식 메모리의 소유권이 이전되었습니다.",
  "horus.COMMON.mem_0_released": "{0} 형식 메모리를 해제합니다.",
  "horus.COMMON.mem_bound_0": "{0} 식이 메모리에서 허용된 범위를 벗어난 영역을 참조합니다.",
  "horus.COMMON.moved_0": "객체 {0} 의 값이 이동합니다.",
  "horus.COMMON.mutex_created": "뮤텍스를 생성합니다.",
  "horus.COMMON.mutex_locked": "뮤텍스를 잠갔습니다.",
  "horus.COMMON.mutex_unlocked": "뮤텍스의 잠금을 해제합니다.",
  "horus.COMMON.no_case_0": "'switch' 구문이 일치하지 않습니다. {0} 번 줄로 이동합니다.",
  "horus.COMMON.not_enter_then": "'then' 구문에 진입하지 않음.",
  "horus.COMMON.pass_arg_0_thread": "스레드에 인수 {0} 값을 전달합니다.",
  "horus.COMMON.passed_val_0_is_1": "인수 {0} 에 전달된 값은 {1} 입니다.",
  "horus.COMMON.propargate_exception": "함수 밖으로 예외를 전파합니다.",
  "horus.COMMON.reallocation_failed": "재할당에 실패",
  "horus.COMMON.regist_0_atexit": "atexit() 함수에서 {0} 함수를 등록합니다.",
  "horus.COMMON.regist_0_signal": "signal() 함수에서 {0} 함수를 등록합니다.",
  "horus.COMMON.regist_0_thread": "스레드 함수에서 {0} 함수를 등록합니다.",
  "horus.COMMON.rem_by_0": "나머지 연산의 피연산자 {0} 값은 음수일 수 있습니다.",
  "horus.COMMON.return_alloc_val": "반환 값은 할당한 값입니다.",
  "horus.COMMON.return_type_val_0": "반환 값은 {0} 형식의 값입니다.",
  "horus.COMMON.return_val_0": "반환 값은 {0} 입니다.",
  "horus.COMMON.return_x": "함수를 반환합니다.",
  "horus.COMMON.short_circuit_land": "'&&'의 왼쪽 항은 false로 설정되었습니다. 따라서 모든 조건은 false입니다.",
  "horus.COMMON.short_circuit_lor": "'||'의 왼쪽 항은 true로 설정되었습니다. 따라서 모든 조건은 true입니다.",
  "horus.COMMON.size_0": "버퍼 크기는 {0} 입니다.",
  "horus.COMMON.size_0_index_1": "버퍼 크기는 {0} 이나, 인덱스는 {1} 입니다.",
  "horus.COMMON.size_0_index_op1_2": "버퍼 크기는 {0} 이나, 인덱스는 {1} {2} 입니다.",
  "horus.COMMON.size_0_index_over_1_2": "버퍼 크기는 {0} 이나, 인덱스는 {1} 값을 넘습니다(인덱스 <= {2}).",
  "horus.COMMON.size_0_index_under_1_2": "버퍼 크기는 {0} 이나, 인덱스는 {1} 값보다 작습니다(인덱스 >= {2}).",
  "horus.COMMON.socket_allocated": "소켓 형식의 리소스를 할당합니다.",
  "horus.COMMON.socket_failed": "소켓 형식의 리소스 할당이 실패합니다.",
  "horus.COMMON.socket_released": "소켓 형식의 리소스를 해제합니다.",
  "horus.COMMON.taint_enter": "안전하지 않은 값을 입력합니다.",
  "horus.COMMON.taint_propagate": "안전하지 않은 값을 전파합니다.",
  "horus.COMMON.taint_use": "안전하지 않은 값을 사용했습니다.",
  "horus.COMMON.taint_use_0": "{0} 수식에서 안전하지 않은 값을 사용했습니다.",
  "horus.COMMON.thread_detach_0": "{0} 스레드 객체를 분리시켰습니다.",
  "horus.COMMON.thread_join_0": "{0} 스레드 객체를 종료 대기시켰습니다.",
  "horus.COMMON.uninit_0": "{0} 식은 정의되지 않은 값입니다.",
  "horus.COMMON.v_0_is_local": "{0} 식이 가리키는 값은 지역 변수 입니다.",
  "horus.COMMON.var_0_decl": "{0} 변수를 선언합니다.",
  "horus.COMMON.var_0_decl_uninit": "초기화 구문 없이 {0} 변수를 선언합니다.",
  "horus.CONFIGURATION_SETTING.default_desc_0": "시스템 설정 {0}을 외부에서 결정할 수 있습니다.",
  "horus.DANGEROUS_USE_OF_TAINTED_VALUES.dangerous_func_0": "오염된 {0} 값이 위험한 함수의 인자로 사용되었습니다.",
  "horus.DANGEROUS_USE_OF_TAINTED_VALUES.loop_var_0": "오염된 {0} 값이 반복문의 루프 제어에 사용되었습니다.",
  "horus.DANGEROUS_USE_OF_TAINTED_VALUES.offset_0": "오염된 {0} 값이 포인터의 오프셋으로 사용되었습니다.",
  "horus.DECLARE_OBJECTS_SHARED_BETWEEN_THREADS.default_desc": "쓰레드간에 공유하는 객체는 적절한 저장기간을 가지도록 선언합니다.",
  "horus.DIV_BY_ZERO.MISSING_CHECK.default_0": "{0} 식의 결과는 0 일 수 있습니다. 그러면 0 체크 없이 값을 0으로 나눕니다.",
  "horus.DIV_BY_ZERO.MISSING_CHECK.default_desc": "0 체크 없이 값을 0으로 나눕니다.",
  "horus.DIV_BY_ZERO.default_0": "값을 0으로 나눕니다. {0} 식의 결과는 0 입니다.",
  "horus.DIV_BY_ZERO.default_desc": "값을 0으로 나눕니다.",
  "horus.DOUBLE_CLOSE.default_desc": "이미 닫은 자원을 다시 닫으려고 합니다.",
  "horus.DOUBLE_FREE.delete_nonowned_mem": "할당되지 않은 메모리를 해제합니다.",
  "horus.DOUBLE_FREE.delete_released_mem": "이미 해제된 메모리를 해제합니다.",
  "horus.DOUBLE_FREE.free_nonowned_mem": "할당되지 않은 메모리를 해제합니다.",
  "horus.DOUBLE_FREE.free_released_mem": "이미 해제된 메모리를 해제합니다.",
  "horus.DOUBLE_LOCK.default_desc": "이미 잠근 mutex를 다시 잠급니다.",
  "horus.DOUBLE_OPEN.default_desc": "이미 열려 있는 파일을 다시 열려고 합니다.",
  "horus.DOUBLE_UNLOCK.default_desc": "이미 열은 mutex를 다시 열려고 합니다.",
  "horus.DO_NOT_ACCESS_SHARED_OBJECT_IN_HANDLER.default_desc_0": "시그널 핸들러 내부에서 {0} 공유 객체에 접근하면 안됩니다.",
  "horus.DO_NOT_CALL_SIGNAL_WITHIN_HANDLER.default_desc": "인터럽트가 발생할 수 있는한 시그널 핸들러에서 signal()을 호출해서는 안됩니다.",
  "horus.DO_NOT_CAST_TO_AN_OUT_OF_RANGE_ENUM_VALUE.default_desc": "값의 범위 검사 없이 범위가 없는 열거형으로 캐스팅을 수행합니다.",
  "horus.DO_NOT_DESTROY_A_MUTEX.default_desc": "뮤텍스가 잠겨있는 동안에는 뮤텍스를 파괴하지 않도록 합니다.",
  "horus.DO_NOT_RETURN_SIGNAL_HANDLERS.default_desc": "시그널 핸들러에서 명시적/암시적으로 리턴을 사용하지 마십시오.",
  "horus.DUPLICATE_THREAD_EXECUTION.default_desc_0": "이전에 처리된 {0} 스레드 객체의 수명 주기를 다시 한번 처리했습니다.",
  "horus.EXECL_REVEALS_DATA.default_desc": "함수 execl()을 '--' 옵션 없이 위험하게 사용합니다.",
  "horus.FREE_NON_HEAP.default_desc_0": "{0} 식이 가리키는 메모리는 힙 메모리에서 할당하지 않았습니다.",
  "horus.FUNCTION_PARAM_ARRAY_OVERFLOW.default_desc": "함수 매개변수 {0} 에 명시된 배열 크기는 {1} 이지만, 전달된 인자의 배열 크기는 {2} 로 더 작습니다.",
  "horus.GUARANTEE_EXCEPTION_SAFETY.default_desc": "예외가 발생합니다. 객체의 상태 중 일부만 변경될 수 있습니다.",
  "horus.IMPROPER_ARGUMENTS.HORUS.default": "잘못된 인자값 접근 입니다.",
  "horus.IMPROPER_ARGUMENTS.HORUS.overlapping": "인자값은 절대로 중첩된 버퍼를 전달하면 안 됩니다.",
  "horus.IMPROPER_AUTHORIZATION.default_desc_0": "정보 {0}에 대한 권한을 검증하는 코드가 존재하지 않습니다.",
  "horus.IMPROPER_NULL_TERMINATION.HORUS.arg_to_0": "Argument to {0} is not a null-terminated string",
  "horus.IMPROPER_NULL_TERMINATION.HORUS.arg_to_0_is_1": "Argument to {0} is the address of the label '{1}', which is not a null-terminated string",
  "horus.IMPROPER_NULL_TERMINATION.HORUS.arg_to_0_which": "Argument to {0} is, which is not a null-terminated string",
  "horus.IMPROPER_NULL_TERMINATION.HORUS.default": "인자값이 0으로 끝나는 문자열이 아닙니다.",
  "horus.IMPROPER_NULL_TERMINATION.default_desc_0": "인자 {0} 값은 널로 끝나는 문자열이 아닙니다.",
  "horus.IMPROPER_NULL_TERMINATION.string_0": "{0}의 생성자에 외부에서 입력된 값을 전달했습니다. 문자의 개수를 제한하는 값도 같이 전달해야 합니다.",
  "horus.IMPROPER_NULL_TERMINATION.use_cin_0": "cin의 결과를 문자열 배열 {0}에 담았습니다. std::string을 사용하도록 합니다.",
  "horus.INCORRECT_USE_OF_PLACEMENT_NEW.alignas_decl": "버퍼 공간이 적절하게 정렬되지 않았습니다.",
  "horus.INCORRECT_USE_OF_PLACEMENT_NEW.small_0_1": "{0} 타입에 필요한 공간 {1} 보다 더 적은 공간이 객체에 할당되었습니다.",
  "horus.INFORMATION_LEAK.default_desc_0": "민감한 정보 {0} 값이 유출될 수 있습니다.",
  "horus.INTEGER_OVERFLOW.default_desc_0": "{0} {1} {2}의 결과값은 오버플로우가 발생할 수 있습니다.",
  "horus.INTEGER_OVERFLOW.taint_0": "안전하지 않은 {0} 값을 사용합니다. 오버플로우가 발생할 수 있습니다.",
  "horus.INTEGER_OVERFLOW.unary_0": "{0} {1}의 결과값은 오버플로우가 발생할 수 있습니다.",
  "horus.INTEGER_UNDERFLOW.default_desc_0": "{0} {1} {2} 식의 연산 결과는 최소값 아래로 내려갈 수 있습니다.",
  "horus.INTEGER_UNDERFLOW.taint_0": "안전하지 않은 {0} 값을 사용합니다. 최소값 아래로 내려갈 수 있습니다.",
  "horus.INTEGER_UNDERFLOW.unary_0": "{0} {1} 식의 연산 결과는 최소값 아래로 내려갈 수 있습니다.",
  "horus.INVALID_ITERATOR.default_desc_0": "무효화된 {0} 반복자를 사용했습니다.",
  "horus.INVALID_ITERATOR.different_0_1": "{0} 반복자와 {1} 반복자가 서로 다른 객체를 가리킵니다.",
  "horus.INVALID_ITERATOR.not_precedes_0_1": "범위의 시작을 나타내는 {0} 반복자가 범위의 끝을 나타내는 {1} 반복자보다 앞에 오지 않습니다.",
  "horus.LDAP_INJECTION.default_desc_0": "외부에서 결정할 수 있는 LDAP 질의문 {0}을 실행합니다.",
  "horus.LEAK.MEMORY.default_desc": "할당한 메모리에서 메모리 누수 가능성이 있습니다.",
  "horus.LEAK.MEMORY.default_desc_0": "{0} 식이 가리키는 메모리에서 메모리 누수 가능성이 있습니다.",
  "horus.LEAK.MUTEX.default_desc": "뮤텍스 누수 가능성이 있습니다.",
  "horus.LEAK.MUTEX.default_desc_0": "{0} 식이 가리키는 뮤텍스에서 메모리 누수 가능성이 있습니다.",
  "horus.LEAK.RESOURCE.default_desc": "리소스 누수 가능성이 있습니다.",
  "horus.LEAK.RESOURCE.default_desc_0": "{0} 식이 가리키는 리소스에서 메모리 누수 가능성이 있습니다.",
  "horus.MEMCMP_STRING_COMPARISON.memcmp_0": "`memcmp`의 첫 번째 인자 {0}에 널 종료 문자열을 사용했습니다.",
  "horus.MEMCMP_STRING_COMPARISON.memcmp_0_1": "`memcmp`의 첫 번째 인자 {0}과 두 번째 인자 {1}에 null 종료 문자열을 사용했습니다.",
  "horus.MEMCMP_STRING_COMPARISON.memcmp_1": "`memcmp`의 두 번째 인자 {0}에 null 종료 문자열을 사용했습니다.",
  "horus.MEMCPY_WITH_OVERLAPPING_REGIONS.default_desc_0": "{0} 함수에서 중첩된 영역을 가지는 메모리에 대해 호출합니다. 겹치는 메모리 영역 사이에 복사를 하면 그 결과는 정의되어 있지 않습니다.",
  "horus.MISMATCH.MALLOC_TO_DELETE.default_desc": "malloc() 함수로 할당한 메모리는 delete 가 아닌 free() 함수로 해제 합니다.",
  "horus.MISMATCH.MALLOC_TO_DELETE_ARRAY.default_desc": "malloc() 함수로 할당한 메모리는 delete[] 가 아닌 free() 함수로 해제 합니다.",
  "horus.MISMATCH.NEW_ARRAY_TO_DELETE.default_desc": "new[] 로 할당한 메모리는 delete가 아닌 delete[] 로 해제 합니다.",
  "horus.MISMATCH.NEW_ARRAY_TO_FREE.default_desc": "new[] 로 할당한 메모리는 free()함수가 아닌 delete[] 로 해제 합니다.",
  "horus.MISMATCH.NEW_TO_DELETE_ARRAY.default_desc": "new 로 할당한 메모리는 delete[] 가 아닌 delete 로 해제 합니다.",
  "horus.MISMATCH.NEW_TO_FREE.default_desc": "new로 할당한 메모리는 free() 함수가 아닌 delete 로 해제 합니다.",
  "horus.MISMATCH.RESOURCE.default_desc": "적절하지 않은 함수로 리소스를 해제하고 있습니다.",
  "horus.MISSING_MESSAGE_ID_WHEN_GENERATING_MAC.default_desc": "MAC 생성 시 메시지 식별 값이 누락되었습니다.",
  "horus.MISSING_NORETURN_DECL.default_desc_0": "반환하지 않는 함수 {0} 에 _Noreturn 지정자가 선언되어 있지 않습니다.",
  "horus.MISSING_RETURN.default_desc": "리턴문이 빠져 있습니다.",
  "horus.MUST_NOT_BE_MUTATE_SRC_OBJ.default_desc_0": "인자로 받은 원본 객체 {0} 값을 수정했습니다.",
  "horus.NEGATIVE_FILE_DESCRIPTOR.default_desc": "음수 값의 파일 서술자를 사용합니다.",
  "horus.NEGATIVE_MOD_OPERATION.default_desc_0": "나머지 연산의 {0} 피연산자가 음수일 수 있습니다.",
  "horus.NEGATIVE_MOD_OPERATION.mod_0_1": "나머지 연산의 피연산자가 음수일 수 있습니다. {0}의 결과는 {1} 입니다.",
  "horus.NORETURN_DECLARED.C.default_desc_ex": "_Noreturn 으로 선언한 함수에서 명시적 반환 구문을 사용했습니다.",
  "horus.NORETURN_DECLARED.C.default_desc_im": "_Noreturn 으로 선언한 함수에서 암시적인 반환이 발생했습니다.",
  "horus.NORETURN_DECLARED.default_desc": "[[noreturn]] 으로 선언한 함수에서 반환 구문을 사용하지 않도록 합니다.",
  "horus.NORETURN_DECLARED.default_desc_ex": "[[noreturn]]으로 선언한 함수에서 명시적 반환 구문을 사용했습니다.",
  "horus.NORETURN_DECLARED.default_desc_im": "[[noreturn]]으로 선언한 함수에서 암시적인 반환이 발생했습니다.",
  "horus.NULL_DEREF.CHECK_AFTER_DEREF.default_desc": "이미 역참조 된 포인터를 널 포인터 인지 검사합니다.",
  "horus.NULL_DEREF.CHECK_AFTER_DEREF.default_desc_0": "{0} 식이 이미 역참조 된 포인터를 널 포인터 인지 검사합니다.",
  "horus.NULL_DEREF.HORUS.access_field_0": "필드 '{0}'에 접근할 때 널 포인터 역참조가 발생했습니다.",
  "horus.NULL_DEREF.HORUS.array_access": "배열 접근 결과가 널 포인터 역참조 입니다.",
  "horus.NULL_DEREF.HORUS.default": "널 포인터 역참조 입니다.",
  "horus.NULL_DEREF.HORUS.deref_undef": "정의되지 않은 포인터에 의한 널 포인터 역참조 입니다.",
  "horus.NULL_DEREF.HORUS.from_var_0": "(변수 '{0}'(으)로부터 발생했습니다.)",
  "horus.NULL_DEREF.HORUS.instantiation": "함수 호출 과정에서 널 포인터 역참조가 발생했습니다.",
  "horus.NULL_DEREF.HORUS.ld_from_field_0": "(읽어들인 필드 '{0}'으로부터 발생했습니다.)",
  "horus.NULL_DEREF.HORUS.ld_from_var_0": "(읽어들인 변수 '{0}'으로부터 발생했습니다.)",
  "horus.NULL_DEREF.HORUS.null_str_0": "'{0}' 함수 호출 과정중 인자값이 널 포인터 역참조 입니다.",
  "horus.NULL_DEREF.HORUS.null_str_func": "문자열 함수 호출 과정중 인자값이 널 포인터 역참조 입니다.",
  "horus.NULL_DEREF.HORUS.via_field_0": "(필드 '{0}'(으)로부터 발생했습니다.)",
  "horus.NULL_DEREF.MALLOC_FAILED.default_desc": "메모리 할당이 실패할 경우에 널포인터를 참조합니다.",
  "horus.NULL_DEREF.MALLOC_FAILED.default_desc_0": "메모리 할당이 실패할 경우에 {0} 에서 가리키고 있는 널포인터를 참조합니다.",
  "horus.NULL_DEREF.MISSING_CHECK.default_desc": "널 포인터 역참조일 가능성이 있는 곳에서 널 체크 없이 사용합니다.",
  "horus.NULL_DEREF.MISSING_CHECK.default_desc_0": "널 포인터 역참조일 가능성이 있는 {0} 식에서 널 체크 없이 사용합니다.",
  "horus.NULL_DEREF.default_desc": "널 포인터 역참조 입니다.",
  "horus.NULL_DEREF.default_desc_0": "{0} 식이 가리키고 있는 메모리에서 널 포인터 역참조 입니다.",
  "horus.OPEN_REDIRECT.CPP.default_desc_0": "위험 요소를 찾아내 제거하는 {0} 메소드를 잘 정의하여, 외부에서 들어온 값을 인자로 넘기기 전에 호출합니다.",
  "horus.OS_COMMAND_INJECTION.default_desc_0": "외부에서 결정할 수 있는 운영체제 명령문 {0}을 실행합니다.",
  "horus.OVERRUN.CONTAINER.access_under_0": "컨테이너를 접근하는 인덱스가 {0} 입니다. 음수를 인덱스 값에 전달할 경우 범위를 벗어난 메모리 접근 문제가 발생할 수 있습니다.",
  "horus.OVERRUN.CONTAINER.access_under_cond_0_1": "컨테이너를 접근하는 인덱스가 {0} {1} 입니다. 음수를 인덱스 값에 전달할 경우 범위를 벗어난 메모리 접근 문제가 발생할 수 있습니다.",
  "horus.OVERRUN.CONTAINER.default_desc_0": "컨테이너 용량이 부족합니다. 컨테이너의 용량은 {0} 입니다.",
  "horus.OVERRUN.DYNAMIC.BAD_COND.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.OVERRUN.DYNAMIC.IN_FUNC_CALL.BAD_COND.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.OVERRUN.DYNAMIC.IN_FUNC_CALL.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.OVERRUN.DYNAMIC.STRCPY.default": "문자열 버퍼의 크기를 벗어난 접근입니다.",
  "horus.OVERRUN.DYNAMIC.STRCPY.index_0": "문자열 버퍼의 크기를 벗어난 접근입니다. 인덱스는 {0} 입니다.",
  "horus.OVERRUN.DYNAMIC.STRCPY.size_0": "문자열 버퍼의 크기를 벗어난 접근입니다. 배열의 사이즈는 {0} 입니다.",
  "horus.OVERRUN.DYNAMIC.STRCPY.size_0_index_1": "문자열 버퍼의 크기를 벗어난 접근입니다. 배열의 사이즈는 {0} 인데 인덱스는 {1} 입니다.",
  "horus.OVERRUN.DYNAMIC.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.OVERRUN.HORUS.array": "배열 요소에 대해 범위를 벗어난 메모리 접근 입니다.",
  "horus.OVERRUN.HORUS.default": "범위를 벗어난 메모리 접근 입니다.",
  "horus.OVERRUN.HORUS.function": "'{0}' 함수에서 배열 요소에 대해 범위를 벗어난 메모리 접근이 발생했습니다.",
  "horus.OVERRUN.HORUS.strcpy": "문자열 함수에서 배열 요소에 대해 범위를 벗어난 메모리 접근이 발생했습니다.",
  "horus.OVERRUN.STATIC.BAD_COND.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.OVERRUN.STATIC.IN_FUNC_CALL.BAD_COND.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.OVERRUN.STATIC.IN_FUNC_CALL.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.OVERRUN.STATIC.MEMSET.EXT.function": "배열 크기를 벗어난 요소를 접근합니다.",
  "horus.OVERRUN.STATIC.MEMSET.EXT.function_0": "{0} 함수에서 배열 크기를 벗어난 요소를 접근합니다.",
  "horus.OVERRUN.STATIC.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.PARAMETER_POINTER_TO_LOCAL.default_desc": "스택 영역의 주소 값을 인자에 붙입니다.",
  "horus.PATH_TRAVERSAL.default_desc_0": "외부에서 결정할 수 있는 파일 경로 {0} 값을 적절한 검사 없이 접근합니다.",
  "horus.PLAINTEXT_PASSWORD.default_desc_0": "패스워드 {0}값을 암호화하지 않고 사용합니다.",
  "horus.PRESERVE_THREAD_SAFETY_AND_LIVENESS.default_desc": "조건 변수 사용시 쓰레드 안정성과 유효성을 유지합니다.",
  "horus.PREVENT_DATA_RACES.default_desc": "멀티 쓰레드 환경에서 비트필드 접근시 데이터의 경쟁을 방지합니다.",
  "horus.PREVENT_MATH_FUNCTIONS_ERROR.arg_0_mb_1_2": "인자 {0} 의 값은 반드시 {1} {2} 이어야 합니다.",
  "horus.PREVENT_MATH_FUNCTIONS_ERROR.invalid_arg_0": "{0} 함수에서 잘못된 인자값을 사용합니다.",
  "horus.PROCESS_CONTROL.default_desc_0": "외부에서 결정할 수 있는 파일의 상대 경로로 라이브러리 {0}를 읽어 들입니다.",
  "horus.RACE_CONDITION.EXT.default_desc": "파일의 상태 정보를 검사하고 파일을 여는 사이에 파일의 상태가 변경되었을 수 있습니다.",
  "horus.REDUNDANT_CONDITION.default_desc_f": "{0} 연산의 결과가 항상 거짓입니다.",
  "horus.REDUNDANT_CONDITION.default_desc_t": "{0} 연산의 결과가 항상 참입니다.",
  "horus.RESET_SIGNAL_HANDLER.default_desc": "구현마다 다른 시그널 핸들러의 지속성에 대한 세부사항을 이해해야 합니다.",
  "horus.RESOURCE_INJECTION.default_desc_0": "외부에서 결정할 수 있는 네트워크 소켓 번호 {0}를 사용합니다.",
  "horus.RETURN_FREE.default_desc": "이미 해제된 메모리를 리턴합니다.",
  "horus.RETURN_FREE.default_desc_0": "{0} 메모리를 해제한 후 리턴합니다.",
  "horus.RETURN_LOCAL.default_desc": "스택 주소를 리턴합니다. 함수가 끝나면 이 주소는 유효하지 않습니다.",
  "horus.RETURN_LOCAL.object": "스택 주소를 소유한 객체를 리턴합니다. 함수가 끝나면 이 주소는 유효하지 않습니다.",
  "horus.SAQT.M.CCPP.7180.default_0_1": "이 함수의 순환 복잡도는 {0}이며, 제한값은 {1}입니다. 순환 복잡도를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7184.default_0_1": "이 함수의 최대 블록 중첩 깊이는 {0}이며, 제한값은 {1} 입니다. 최대 블록 중첩 깊이를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7187.default_0_1": "이 함수의 파라미터 수는 {0}이며, 제한값은 {1}입니다. 파라미터 수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7188.default_0_1": "이 함수가 다른 함수에서 호출되는 수는 {0}이며, 제한값은 {1}입니다. 함수 호출자 값을 제한값 이하로 낮추기 바랍니다.",
  "horus.SAQT.M.CCPP.7189.default_0_1": "이 함수에서 다른 함수를 호출하는 수는 {0}이며, 제한값은 {1}입니다. 호출 대상 함수 값을 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7190.default_0_1": "이 함수의 실행 가능 라인 수는 {0}이며, 제한값은 {1}입니다. 실행 가능 라인 수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7191.default_0_1": "이 함수의 파라미터 수는 {0}이며, 제한값은 {1}입니다. 파라미터 수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7199.default_0_1": "이 함수의 문장 개수는 {0}이며, 제한값은 {1}입니다. 문장 개수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7200.default_0_1": "이 함수의 유일한 피연산자 수는 {0}이며, 제한값은 {1}입니다. 유일한 피연산자 수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7201.default_0_1": "이 함수의 유일한 연산자 수는 {0}이며, 제한값은 {1}입니다. 유일한 연산자 수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7202.default_0_1": "이 함수의 총 피연산자 수는 {0}이며, 제한값은 {1}입니다. 총 피연산자 수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7203.default_0_1": "이 함수의 총 연산자 수는 {0}이며, 제한값은 {1}입니다. 총 피연산자 수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7204.default_0_1": "이 함수의 어휘량 크기는 {0}이며, 제한값은 {1}입니다. 어휘량 크기를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7205.default_0_1": "이 함수의 컴포넌트 길이는 {0}이며, 제한값은 {1}입니다. 컴포넌트 길이를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7206.default_0_1": "이 함수의 평균 문장 크기는 {0}이며, 제한값은 {1}입니다. 평균 문장 크기를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7207.default_0_1": "이 함수의 결정 문장 개수는 {0}이며, 제한값은 {1}입니다. 결정 문장 개수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7208.default_0_1": "이 함수의 탈출점 개수는 {0}이며, 제한값은 {1}입니다. 탈출점 개수를 제한값 이하로 낮추도록 합니다.",
  "horus.SAQT.M.CCPP.7209.default_0_1": "이 함수의 제어하지 않은 점프문 개수는 {0}이며, 제한값은 {1}입니다. 제어하지 않은 점프문 개수를 제한값 이하로 낮추도록 합니다.",
  "horus.SHIFT_EXCEEDS_BIT_WIDTH.bound_0": "시프트 연산을 최소 {0} 만큼 {2} 타입의 값에 대해서 적용하는데 이는 타입이 표현하는 비트의 크기 최댓값 {1}을 넘습니다.",
  "horus.SHIFT_EXCEEDS_BIT_WIDTH.default_desc_0": "시프트 연산을 {0} 만큼 {2} 타입의 값에 대해서 적용하는데 이는 타입이 표현하는 비트의 크기 최댓값 {1}을 넘습니다.",
  "horus.SHIFT_NEGATIVE.bound_0": "시프트 연산을 음수(<= {0})에 대해서 적용합니다.",
  "horus.SHIFT_NEGATIVE.default_desc": "시프트 연산을 음수에 대해서 적용합니다.",
  "horus.SHIFT_NEGATIVE.default_desc_0": "시프트 연산을 음수 {0}에 대해서 적용합니다.",
  "horus.SIGNAL_HANDLER_CALLS_UNSAFE_FUNCTION.default_desc": "시그널 핸들러 내에서 비동기식에 안전한 함수만 호출해야 합니다.",
  "horus.SQL_INJECTION.default_desc_0": "외부에서 결정할 수 있는 SQL 질의문 {0} 값을 적절한 검사 없이 실행합니다.",
  "horus.TRYLOCK_FAIL.default_desc": "이미 mutex가 lock 되어 있기 때문에 try lock은 성공할 수 없습니다.",
  "horus.TYPE_OVERRUN.BAD_COND.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.TYPE_OVERRUN.IN_FUNC_CALL.BAD_COND.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.TYPE_OVERRUN.IN_FUNC_CALL.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.TYPE_OVERRUN.STATIC.default_desc_0": "{0} 식이 버퍼의 끝을 넘어서는 메모리를 참조 합니다.",
  "horus.TYPE_UNDERRUN.BAD_COND.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.TYPE_UNDERRUN.IN_FUNC_CALL.BAD_COND.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.TYPE_UNDERRUN.IN_FUNC_CALL.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.TYPE_UNDERRUN.STATIC.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNBOUNDED_SOURCE_TO_ARRAY.unbounded_0_to_1": "제한되지 않은 {0} 값을 크기가 정해진 배열에 복사합니다.",
  "horus.UNCAUGHT_EXCEPTION.default_desc_0": "의도치 않은 예외가 발생하는 {0} 함수가 호출되었습니다.",
  "horus.UNDERRUN.DYNAMIC.BAD_COND.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNDERRUN.DYNAMIC.IN_FUNC_CALL.BAD_COND.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNDERRUN.DYNAMIC.IN_FUNC_CALL.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNDERRUN.DYNAMIC.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNDERRUN.STATIC.BAD_COND.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNDERRUN.STATIC.IN_FUNC_CALL.BAD_COND.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNDERRUN.STATIC.IN_FUNC_CALL.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNDERRUN.STATIC.default_desc_0": "{0} 식이 버퍼의 시작 지점 이전의 메모리를 참조 합니다.",
  "horus.UNHANDLED_EXCEPTION_IN_NOEXCEPT.default_desc_0": "noexcept로 선언된 함수 {0} 에서 처리되지 않은 예외가 전파되어 프로그램 강제 종료를 유발합니다.",
  "horus.UNINIT.ATOMIC.default_desc_0": "올바르게 초기화 되지 않은 원자적 객체 {0} 를 사용했습니다.",
  "horus.UNINIT.default_desc_0": "정의되지 않은 값을 사용합니다. {0} 식은 정의되지 않은 값 입니다.",
  "horus.UNREACHABLE_CODE.default_desc": "default 구문이 실행되지 않습니다.",
  "horus.UNREACHABLE_CODE.default_desc_f": "{0}식의 결과가 false이므로, true구문으로 도달하지 못합니다.",
  "horus.UNREACHABLE_CODE.default_desc_switch": "switch문의 조건식의 결과가 항상 {0}입니다.",
  "horus.UNREACHABLE_CODE.default_desc_t": "{0}식의 결과가 true이므로, false구문으로 도달하지 못합니다.",
  "horus.UNREACHABLE_CODE.default_desc_while": "{0}식의 결과가 false이므로, while 구문은 실행되지 않습니다.",
  "horus.UNREASONABLE_PARAMETER.big_0_1": "길이를 나타내는 인자로 미리 정한 값 {1} 을 넘는 큰 수 {0} 를 사용합니다.",
  "horus.UNREASONABLE_PARAMETER.default_desc_0": "길이를 나타내는 인자로 음수 {0} 을 사용합니다.",
  "horus.UNREASONABLE_PARAMETER.meaningless": "길이를 나타내는 인자로 의미 없는 0 값을 사용합니다.",
  "horus.UNRESTRICTED_UPLOAD_OF_FILE.CPP.default_desc_0": "외부에서 결정할 수 있는 파일 {0} 값을 적절한 검사 없이 접근합니다.",
  "horus.UNSUPPORTED_TIMEOUT_MUTEX.default_desc_0": "mtx_timedlock() 함수에 타임아웃 기능을 지원하지 않은 뮤텍스 {0} 를 전달했습니다.",
  "horus.USELESS_ASSIGNMENT.default_desc_0": "같은 값 {0} 을 연속으로 대입했습니다.",
  "horus.USE_AFTER_CLOSE.EXT.default_desc": "해제한 리소스를 사용하려고 합니다.",
  "horus.USE_AFTER_FREE.default_desc": "이미 해제된 메모리를 사용합니다.",
  "horus.USE_AFTER_FREE.default_desc_0": "이미 해제된 {0} 식이 가리키는 메모리를 사용합니다.",
  "horus.USE_AFTER_MOVE.default_desc_0": "{0} 객체가 이동한 이후에 다시 참조됩니다.",
  "horus.USE_CORRECT_BYTE_ORDERING.need_hton_0": "{0} 값이 htonl() 또는 htons() 함수를 이용하여 네트워크 바이트 순서로 변환되지 않았습니다.",
  "horus.USE_CORRECT_BYTE_ORDERING.need_ntoh_0": "{0} 값이 ntohl() 또는 ntohs() 함수를 이용하여 호스트 바이트 순서로 변환되지 않았습니다.",
  "horus.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.default_desc_0": "하드코드된 상수 문자열로 암호화 키 {0}를 사용하면 안 됩니다.",
  "horus.XPATH_INJECTION.CPP.default_desc_0": "XPath에 사용되는 외부 입력 데이터 {0}에 대하여 필터링해야 합니다.",
  "horus.XQUERY_INJECTION.CPP.default_desc_0": "XQuery에 사용되는 외부 입력 데이터 {0}에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "html.AUTOCOMPLETE_PASSWORD.msg": "패스워드 필드가 autocomplete으로 지정되어 있습니다.",
  "html.HARD_CODED_DOMAIN_IN_HTML.msg": "외부 사이트의 스크립트가 포함되어 있습니다.",
  "html.PASSWORD_INSECURE_SUBMISSION.msg": "패스워드 필드가 GET방식으로 전송됩니다.",
  "incompleteArrayFill.description": "배열이 불완전하게 채워집니다. 버퍼의 크기를 곱하려는 것을 실수했을 가능성이 있습니다.",
  "incorrectStringBooleanError.description": "문자열의 boolean 값은 항상 참입니다.",
  "incorrectStringCompare.description": "substr 의 길이와 비교하는 스트링이 맞지 않습니다.",
  "integerOverflow.description": "정수 overflow 가 발생합니다.",
  "invalidIterator1.description": "반복자가 무효화 됩니다.",
  "invalidIterator2.description": "push_back, push_front, insert 후에는 반복자가 무효화 됩니다.",
  "invalidLengthModifierError.description": "포맷 스트링의 'I' 는 단독으로 쓰일 수 없습니다.",
  "invalidPointer.description": "push_back 호출 뒤에는 가리키고 있던 포인터들은 무효화 됩니다.",
  "invalidPointerCast.description": "포인터 끼리의 캐스팅은 호환성에 문제가 생길 수 있습니다.",
  "invalidPrintfArgType_float.description": "포맷 스트링의 %f는 double 타입을 인자로 받아야 합니다.",
  "invalidPrintfArgType_n.description": "포맷 스트링의 %n은 int* 타입을 인자로 받아야 합니다.",
  "invalidPrintfArgType_p.description": "포맷 스트링의 %p는 포인터 타입을 인자로 받아야 합니다.",
  "invalidPrintfArgType_s.description": "포맷 스트링의 %s는 char* 타입을 인자로 받아야 합니다.",
  "invalidPrintfArgType_sint.description": "포맷 스트링의 %i는 int 타입을 인자로 받아야 합니다.",
  "invalidPrintfArgType_uint.description": "포맷 스트링의 %u는 unsigned int 타입을 인자로 받아야 합니다.",
  "invalidScanfArgType_float.description": "포맷 스트링의 %f는 float* 타입을 인자로 받아야 합니다.",
  "invalidScanfArgType_int.description": "포맷 스트링의 %d는 int* 타입을 인자로 받아야 합니다.",
  "invalidScanfArgType_s.description": "포맷 스트링의 %s는 char* 타입을 인자로 받아야 합니다.",
  "invalidScanfFormatWidth.description": "포맷 스트링내의 길이는 버퍼 크기보다 작아야 합니다.",
  "invalidscanf.description": "scanf() 함수 내에 길이 제한이 없을 경우 큰 입력 값이 들어왔을 때, 문제가 발생 할 수 있습니다.",
  "iterators.description": "다른 컨테이너에 같은 반복자를 사용합니다.",
  "jfsem.COMMON.0_can_be_a_zero": "{0} 은(는) 0일 가능성이 있습니다.",
  "jfsem.COMMON.0_dereferenced_here_by_1": "여기에서 {0} 가 {1} 에 의해 참조되었습니다.",
  "jfsem.COMMON.0_is_1": "{0} 은(는) {1} 입니다",
  "jfsem.COMMON.0_is_assumed_as_null": "{0} 은(는) Null이라고 가정합니다.",
  "jfsem.COMMON.0_is_assumed_as_zero": "{0} 은(는) 0이라고 가정합니다.",
  "jfsem.COMMON.0_is_false": "{0} 은(는) false로 설정되었습니다.",
  "jfsem.COMMON.0_is_true": "{0} 은(는) true로 설정되었습니다.",
  "jfsem.COMMON.0_might_cause_sql_injection": "{0} 은(는) SQL 삽입 취약점을 발생시킬 수 있습니다.",
  "jfsem.COMMON.ASSUME": "가정됨",
  "jfsem.COMMON.EVALED": "계산됨",
  "jfsem.COMMON.EXCEPTION_0": "예외 {0}",
  "jfsem.COMMON.LOOP": "반복",
  "jfsem.COMMON.RANDOM": "랜덤",
  "jfsem.COMMON.arithmetic_overflow_for_0_evaluated_to_1_which_is_bigger_than_2_max_3": "{0} 에 대해 산술적 오버플로가 발생합니다. 계산 결과는 {1} 이며 {2} 형식의 최댓값 {3} 을(를) 벗어납니다.",
  "jfsem.COMMON.arithmetic_overflow_for_0_evaluated_to_1_which_is_bigger_than_2_min_3": "{0} 에 대해 산술적 오버플로가 발생합니다. 계산 결과는 {1} 이며 {2} 형식의 최솟값 {3} 을(를) 벗어납니다.",
  "jfsem.COMMON.attribute_android_exported_is_set_true": "{0} 에서 android:exported 속성이 true로 설정되었습니다.",
  "jfsem.COMMON.attribute_android_intent_filter_is_used_in": "{0} 에서 {1} 인텐트 필터가 활성화되었습니다.",
  "jfsem.COMMON.attribute_android_permission_is_used": "uses-permission 태그를 통해 {0} 권한이 활성화되었습니다.",
  "jfsem.COMMON.attribute_android_sharedUserId_is_present": "android:sharedUserId 속성이 존재합니다.",
  "jfsem.COMMON.avoid_leak_during_serialization": "직렬화 객체의 메모리가 누수됩니다.",
  "jfsem.COMMON.call_to_0": "{0} 을(를) 호출합니다.",
  "jfsem.COMMON.clue_value_get": "값을 가져옵니다.",
  "jfsem.COMMON.clue_value_get_vector": "벡터로부터 값을 가져옵니다.",
  "jfsem.COMMON.clue_value_put": "값을 설정합니다.",
  "jfsem.COMMON.clue_value_put_vector": "벡터에 값을 넣습니다.",
  "jfsem.COMMON.constant_integer": "상수인 정수",
  "jfsem.COMMON.custom_error_page_off_in_config": "커스텀 오류 페이지가 false로 설정되어 있습니다.",
  "jfsem.COMMON.dangerous_downcast_from_0_to_1": "{0} (으)로부터 {1} (으)로 위험한 다운캐스트가 수행되었습니다.",
  "jfsem.COMMON.debug_information_in_config": "디버그 정보가 포함될 것입니다.",
  "jfsem.COMMON.dereferenced_in_callee": "호출된 함수 안에서 참조되었습니다.",
  "jfsem.COMMON.divided_by_zero_in_callee": "호출된 함수 안에 0으로 나누는 연산이 존재합니다.",
  "jfsem.COMMON.escaped_by_exception": "예외가 발생하여 범위를 벗어납니다.",
  "jfsem.COMMON.escaped_by_exception_from_0": "{0} (으)로부터 예외가 발생하여 범위를 벗어납니다.",
  "jfsem.COMMON.evaled_as_zero": "0으로 계산됩니다.",
  "jfsem.COMMON.file_delete": "파일을 지웁니다.",
  "jfsem.COMMON.file_exist_check": "파일의 존재 유무를 체크합니다.",
  "jfsem.COMMON.file_read": "파일을 읽습니다.",
  "jfsem.COMMON.file_write": "파일을 씁니다.",
  "jfsem.COMMON.go_to_line_0": "{0} 번 줄로 진행합니다.",
  "jfsem.COMMON.hardcoded_string": "하드코딩된 문자열",
  "jfsem.COMMON.http_only_cookies_off_in_config": "httpOnlyCookies는 false로 설정되었습니다.",
  "jfsem.COMMON.infinite_recursive_call_0_might_happen_here": "종료되지 않을 가능성이 있는 재귀호출 {0} 이(가) 여기에서 일어납니다.",
  "jfsem.COMMON.invalid_sql_id_0": "SQL id {0} 이(가) 규칙에 위배되었습니다.",
  "jfsem.COMMON.invalid_xml_id_0": "XML id {0} 이(가) 규칙에 위배되었습니다.",
  "jfsem.COMMON.iterator_api_misuse_here": "iterator API의 잘못된 사용이 발견되었습니다.",
  "jfsem.COMMON.load_summary.not_include_method": "{0} 함수가 분석 대상 소스에 포함되지 않아 재정의된 함수 {1}를 호출합니다. 이 가정으로 인해 분석 결과가 부정확할 가능성이 있습니다.",
  "jfsem.COMMON.load_summary.override_method.class": "클래스 {0}의 세부 클래스를 {1}로 가정하고 함수 {2}를 호출합니다. 이 가정으로 인해 분석 결과가 부정확할 가능성이 있습니다.",
  "jfsem.COMMON.load_summary.override_method.interface": "{0} 인터페이스의 구현 클래스를 {1}로 가정하고 함수 {2}를 호출합니다. 이 가정으로 인해 분석 결과가 부정확할 가능성이 있습니다.",
  "jfsem.COMMON.load_summary.parent_method": "{0} 클래스에서 {1} 함수가 재정의되지 않아 상위 클래스의 함수 {2}를 호출합니다.",
  "jfsem.COMMON.null_aliased": "Null이 지정되었습니다.",
  "jfsem.COMMON.null_aliased_from_0": "Null이 {0} 로부터 지정되었습니다.",
  "jfsem.COMMON.null_aliased_to_0": "Null이 {0} 에 지정되었습니다.",
  "jfsem.COMMON.null_aliased_to_0_from_1": "Null이 {1} 로부터 {0} 로 지정되었습니다.",
  "jfsem.COMMON.null_literal_found": "Null 리터럴이 발견되었습니다.",
  "jfsem.COMMON.null_returned": "Null이 반환되었습니다.",
  "jfsem.COMMON.password_in_config": "암호가 남아있습니다.",
  "jfsem.COMMON.race_condition_error_toctou_for_0_possible_here": "{0} 에 대해 TOCTOU 경쟁조건이 발견되었습니다.",
  "jfsem.COMMON.resource_dangled": "더 이상 리소스를 참조할 수 없습니다.",
  "jfsem.COMMON.resource_escaped": "리소스가 범위 밖으로 빠져나갑니다.",
  "jfsem.COMMON.resource_leak_may_occur_here": "여기에서 리소스 누수가 발생할 위험이 있습니다.",
  "jfsem.COMMON.resource_type_0_allocated": "형식이 {0} 인 리소스가 할당됩니다.",
  "jfsem.COMMON.sign_then_seal_api_misuse_here": "직렬화 메소드의 호출 순서가 잘못되었습니다.",
  "jfsem.COMMON.state_changed.delete": "{0}을 통해 파일을 삭제합니다.",
  "jfsem.COMMON.state_changed.exists": "{0}을 통해 파일이 존재하는지 확인합니다.",
  "jfsem.COMMON.state_changed.has_next": "{0}을 통해 반복자를 다음 위치로 옮길 수 있는지 확인합니다.",
  "jfsem.COMMON.state_changed.has_previous": "{0}을 통해 반복자를 이전 위치로 옮길 수 있는지 확인합니다.",
  "jfsem.COMMON.state_changed.init": "{0}을 통해 직렬화 객체를 초기화합니다.",
  "jfsem.COMMON.state_changed.next": "{0}을 통해 반복자를 다음 위치로 옮깁니다.",
  "jfsem.COMMON.state_changed.previous": "{0}을 통해 반복자를 이전 위치로 옮깁니다.",
  "jfsem.COMMON.state_changed.read": "{0}을 통해 파일을 읽습니다.",
  "jfsem.COMMON.state_changed.remove": "{0}을 통해 현재 위치에 있는 요소를 삭제합니다.",
  "jfsem.COMMON.state_changed.seal": "{0}을 통해 직렬화된 데이터를 봉인합니다.",
  "jfsem.COMMON.state_changed.sign": "{0}을 통해 직렬화된 데이터에 서명합니다.",
  "jfsem.COMMON.state_changed.write": "{0}을 통해 직렬화된 데이터를 출력합니다.",
  "jfsem.COMMON.state_changed.write2": "{0}을 통해 직렬화 객체 초기화 없이 직렬화된 데이터를 출력합니다.",
  "jfsem.COMMON.taint_flow.accessed_array": "추적 중인 값이 배열에 영향을 미쳐 배열 접근 결과값을 추적합니다.",
  "jfsem.COMMON.taint_flow.assigned_to_0": "추적 중인 값이 {0}에 지정되었습니다.",
  "jfsem.COMMON.taint_flow.passed_to_callee": "추적 중인 값이 호출되는 함수에 전달됩니다.",
  "jfsem.COMMON.taint_flow.returned_from_0": "추적 중인 값이 메소드 {0}의 반환값에 영향을 주어 반환값을 추적합니다.",
  "jfsem.COMMON.taint_propag.init_call.all": "추적 중인 값 {0}이 분석 대상 소스에 코드가 없는 클래스 {1}의 생성자 호출에 참조되어 관련된 모든 값에 영향을 주었다고 간주합니다. 이 가정으로 인해 분석 결과가 부정확할 가능성이 있습니다.",
  "jfsem.COMMON.taint_propag.init_call.nth_param.base": "추적 중인 값 {0}이 클래스 {1} 생성자의 {2}번째 매개변수에 사용되었으므로 초기화되는 객체 {3}을 추적합니다.",
  "jfsem.COMMON.taint_propag.method_call.all": "추적 중인 값 {0}이 분석 대상 소스에 코드가 없는 메소드 {1} 호출에 참조되어 관련된 모든 값에 영향을 주었다고 간주합니다. 이 가정으로 인해 분석 결과가 부정확할 가능성이 있습니다.",
  "jfsem.COMMON.taint_propag.method_call.base.return": "추적 중인 값 {0}이 메소드 {1}의 베이스 객체에 사용되었으므로 해당 반환값을 추적합니다.",
  "jfsem.COMMON.taint_propag.method_call.nth_param.base": "추적 중인 값 {0}이 메소드 {1}의 {2}번째 매개변수에 사용되었으므로 해당 베이스 객체 {3}을 추적합니다.",
  "jfsem.COMMON.taint_propag.method_call.nth_param.return": "추적 중인 값 {0}이 메소드 {1}의 {2}번째 매개변수에 사용되었으므로 해당 반환값을 추적합니다.",
  "jfsem.COMMON.taint_propag.string_append": "추적 중인 값이 문자열 연결에 사용되었으므로 해당 결과값을 추적합니다.",
  "jfsem.COMMON.taint_sink.array_index": "추적 중인 값이 배열 접근식에서 첨자로 사용되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.array_size": "추적 중인 값이 새로 할당 받을 배열의 크기에 사용되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.init_call.any_param": "추적 중인 값이 클래스 {0} 생성자의 임의의 매개변수로 사용되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.init_call.base": "추적 중인 값이 클래스 {0} 생성자를 통해 초기화되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.init_call.nth_param": "추적 중인 값이 클래스 {0} 생성자의 {1}번째 매개변수로 사용되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.int_operation": "추적 중인 값이 정수 연산에 사용되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.method_call.any_param": "추적 중인 값이 메소드 {0}의 임의의 매개변수로 사용되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.method_call.base": "추적 중인 값이 메소드 {0}의 베이스 객체로 사용되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.method_call.nth_param": "추적 중인 값이 메소드 {0}의 {1}번째 매개변수로 사용되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_sink.variable": "추적 중인 값이 변수 {0}에 지정되었으므로 추적 규칙을 위반했습니다.",
  "jfsem.COMMON.taint_source.const_integer_any": "추적 규칙 옵션에 따라 모든 상수 정수에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.const_string_any": "추적 규칙 옵션에 따라 모든 상수 문자열에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.const_string_specific": "추적 규칙 옵션에 따라 특정 상수 문자열 {1}을 포함하는 문자열에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.init_call.base": "추적 규칙 옵션에 따라 클래스 {1}의 생성자가 호출되었으므로 초기화된 객체 {0}를 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.init_call.nth_param": "추적 규칙 옵션에 따라 클래스 {1}의 생성자의 {2}번째 인자에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.method_call.base": "추적 규칙 옵션에 따라 메소드 {1}의 베이스 객체에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.method_call.nth_param": "추적 규칙 옵션에 따라 메소드 {1}의 {2}번째 인자에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.method_call.return": "추적 규칙 옵션에 따라 메소드 {0}의 반환값이 사용되었으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.overflowed_integer": "추적 규칙 옵션에 따라 표현 범위를 벗어난 정수에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.param_of_any": "추적 규칙 옵션에 따라 전달받은 모든 매개변수에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.param_of_method": "추적 규칙 옵션에 따라 {1} 메소드에서 전달 받은 매개변수에 해당하는 {0}를 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.req_param": "추적 규칙 옵션에 따라 HTTP 요청 매개변수에 대한 접근을 검출했으므로 추적하기 시작합니다.",
  "jfsem.COMMON.taint_source.req_param.specific": "추적 규칙 옵션에 따라 HTTP 요청 매개변수에 대한 접근을 검출했으므로 추적하기 시작합니다. 접근한 매개변수의 이름은 {0}입니다.",
  "jfsem.COMMON.tainted_value_aliased_to_0": "오염된 값이 {0} 에 지정되었습니다.",
  "jfsem.COMMON.tainted_value_appended": "오염된 값이 덧붙여집니다.",
  "jfsem.COMMON.tainted_value_from_0_against_rule_1": "오염된 값이 {0} (으)로부터 전달되었으므로 규칙 {1} 을 위반했습니다.",
  "jfsem.COMMON.tainted_value_go_into_in_callee": "오염된 값이 호출된 함수에 전달됩니다.",
  "jfsem.COMMON.tainted_value_reaches_0": "오염된 값이 {0}에 도달했습니다.",
  "jfsem.COMMON.tainted_value_returned": "오염된 값이 반환됩니다.",
  "jfsem.COMMON.toctou_race_condition_detected": "TOCTOU 경쟁조건이 발견되었습니다.",
  "jfsem.COMMON.toctou_race_condition_in_callee": "호출된 함수 안에 TOCTOU 경쟁조건이 존재합니다.",
  "jfsem.COMMON.trace_output_on_in_config": "Trace 로그 출력이 true로 설정되어 있습니다.",
  "jfsem.COMMON.transaction_committed_0": "트랜잭션이 커밋되었습니다. ({0})",
  "jfsem.COMMON.transaction_incomplete": "불완전한 트랜잭션입니다.",
  "jfsem.COMMON.uncontrolled_recursion_in_callee": "호출된 함수 안에 종료하지 않을 가능성이 있는 재귀호출이 존재합니다.",
  "jfsem.FORMAT_STRING.sca.desc.default": "첫 번째 인자에 문자열 변수를 전달하지 않는 것이 좋습니다.",
  "jfsem.FORMAT_STRING.sca.note.desc.default": "문자열을 그대로 출력할 때는 첫 번째 인자로 상수 \"%s\"를, 두 번째 인자로 문자열 변수를 전달합니다.",
  "jfsem.FORWARD_NULL.sca.desc.default": "변수 {0}가 null일 수 있으므로 확인 후 사용합니다.",
  "jfsem.FORWARD_NULL.sca.desc.init_field_complex": "필드 변수의 초기값이 복잡한 식일 경우 예외 처리를 할 수 있도록 생성자에서 초기화합니다.",
  "jfsem.FORWARD_NULL.sca.desc.use_temp_var": "식이 null일 수 있으므로 예외 처리를 위해 임시 변수에 저장한 후 사용합니다.",
  "jfsem.FORWARD_NULL.sca.note.desc.conditional": "변수 {0}가 null인 경우 나머지 조건을 확인할 필요가 없습니다.",
  "jfsem.FORWARD_NULL.sca.note.desc.default": "변수 {0}가 null일 수 있으므로 확인하여 개별적으로 처리합니다.",
  "jfsem.FORWARD_NULL.sca.note.desc.init_field_simple": "변수 {0}가 null인 경우 적당한 상수를 초기값으로 사용합니다.",
  "jfsem.HTTP_RESPONSE_SPLITTING.sca.desc.default": "값을 확신할 수 없는 문자열이 HTTP 응답 헤더에 전달되는 경우 개행문자를 제거하고 전달합니다.",
  "jfsem.HTTP_RESPONSE_SPLITTING.sca.note.desc.default": "replaceAll 메소드로 문자열 안의 개행문자를 모두 제거할 수 있습니다.",
  "jfsem.INTEGER_OVERFLOW.sca.desc.array_access": "배열 접근 인덱스로 확인되지 않은 정수값이 사용되면 위험합니다.",
  "jfsem.INTEGER_OVERFLOW.sca.desc.array_create": "새로 할당하는 배열의 크기에 확인되지 않은 정수값이 전달되면 위험합니다.",
  "jfsem.INTEGER_OVERFLOW.sca.note.desc.array_access": "배열에 접근하기 전에 인덱스가 0 이상 배열 크기 미만인지 확인합니다.",
  "jfsem.INTEGER_OVERFLOW.sca.note.desc.array_create": "배열을 할당하기 전에 크기가 적당한 범위안에 있는지 확인합니다.",
  "jfsem.NULL_RETURN.sca.desc.default": "변수 {0}가 null일 수 있으므로 확인 후 사용합니다.",
  "jfsem.NULL_RETURN.sca.desc.init_field_complex": "필드 변수의 초기값이 복잡한 식일 경우 예외 처리를 할 수 있도록 생성자에서 초기화합니다.",
  "jfsem.NULL_RETURN.sca.desc.use_temp_var": "식이 null일 수 있으므로 예외 처리를 위해 임시 변수에 저장한 후 사용합니다.",
  "jfsem.NULL_RETURN.sca.note.desc.conditional": "변수 {0}가 null인 경우 나머지 조건을 확인할 필요가 없습니다.",
  "jfsem.NULL_RETURN.sca.note.desc.default": "변수 {0}가 null일 수 있으므로 확인하여 개별적으로 처리합니다.",
  "jfsem.NULL_RETURN.sca.note.desc.init_field_simple": "변수 {0}가 null인 경우 적당한 상수를 초기값으로 사용합니다.",
  "jfsem.NULL_RETURN_STD.sca.desc.default": "변수 {0}가 null일 수 있으므로 확인한 후 사용합니다.",
  "jfsem.NULL_RETURN_STD.sca.desc.init_field_complex": "필드 변수의 초기값이 복잡한 식일 경우 예외 처리를 할 수 있도록 생성자에서 초기화합니다.",
  "jfsem.NULL_RETURN_STD.sca.desc.use_temp_var": "예외 처리를 위해 식이 null을 생성할 수 있는 경우 임시 변수에 저장한 후 사용합니다.",
  "jfsem.NULL_RETURN_STD.sca.note.desc.conditional": "변수 {0}가 null일 경우 나머지 조건을 확인할 필요가 없습니다.",
  "jfsem.NULL_RETURN_STD.sca.note.desc.default": "변수 {0}가 null일 경우를 확인하여 개별적으로 처리합니다.",
  "jfsem.NULL_RETURN_STD.sca.note.desc.init_field_simple": "변수 {0}가 null일 경우 적당한 상수를 초기값으로 사용합니다.",
  "jfsem.NULL_RETURN_USR.sca.desc.default": "변수 {0}가 null일 수 있으므로 확인 후 사용합니다.",
  "jfsem.NULL_RETURN_USR.sca.desc.init_field_complex": "필드 변수의 초기값이 복잡한 식일 경우 예외 처리를 할 수 있도록 생성자에서 초기화합니다.",
  "jfsem.NULL_RETURN_USR.sca.desc.use_temp_var": "null을 만들 수 있는 식은 일단 임시 변수에 저장하여 예외 처리 후 사용합니다.",
  "jfsem.NULL_RETURN_USR.sca.note.desc.conditional": "변수 {0}가 null일 경우 나머지 조건을 확인할 필요가 없습니다.",
  "jfsem.NULL_RETURN_USR.sca.note.desc.default": "변수 {0}가 null일 경우를 체크해 따로 처리합니다.",
  "jfsem.NULL_RETURN_USR.sca.note.desc.init_field_simple": "변수 {0}가 null일 경우 적당한 상수를 초기값으로 사용합니다.",
  "jfsem.OPEN_REDIRECT.sca.desc.default": "위험 요소를 찾아내 제거하는 {0} 메소드를 잘 정의하여, 외부에서 들어온 값을 인자로 넘기기 전에 호출합니다.",
  "jfsem.PATH_TRAVERSAL.sca.desc.default": "위험 요소를 찾아내 제거하는 {0} 메소드를 잘 정의하여, 외부에서 들어온 값을 인자로 넘기기 전에 호출합니다.",
  "jfsem.PERSISTENT_COOKIE.sca.desc.constant": "쿠키의 지속 시간을 너무 길게 설정하면 위험합니다.",
  "jfsem.PERSISTENT_COOKIE.sca.desc.variable": "적절한 범위인지 확인되지 않은 값이 쿠키의 지속 시간으로 설정되면 위험합니다.",
  "jfsem.PERSISTENT_COOKIE.sca.note.desc.constant": "지속 시간을 적당히 짧은 시간으로 대체합니다.",
  "jfsem.PERSISTENT_COOKIE.sca.note.desc.variable": "지속 시간을 적당히 짧은 시간으로 제한합니다.",
  "jfsem.SAQT.M.JAVA.7193.defect": "이 함수가 다른 함수에서 호출되는 수는 {0}이며, 제한값은 {1}입니다. 함수 호출자 값을 제한값 이하로 낮추기 바랍니다.",
  "jfsem.SAQT.M.JAVA.7195.defect": "이 함수에서 다른 함수를 호출하는 수는 {0}이며, 제한값은 {1}입니다. 호출 대상 함수 값을 제한값 이하로 낮추도록 합니다.",
  "jfsem.SCAFFOLD.0_th_param_dereferenced_here_by_1": "{0} 번 매개 변수가 {1} 에 의해 참조되었습니다!",
  "jfsem.SCAFFOLD.param_dereferenced_here_by_scaffold": "여기에서 메소드 매개 변수가 라이브러리나 스캐폴드 내부에서 참조되었습니다!",
  "jfsem.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.sca.desc.default": "Cookie 객체에 setSeure(true)를 호출해 보안 속성을 설정합니다.",
  "jfsem.UNCHECKED_NULL.sca.desc.default": "변수 {0}가 null일 수 있으므로 확인 후 사용합니다.",
  "jfsem.UNCHECKED_NULL.sca.desc.init_field_complex": "필드 변수의 초기값이 복잡한 식일 경우 예외 처리를 할 수 있도록 생성자에서 초기화합니다.",
  "jfsem.UNCHECKED_NULL.sca.desc.use_temp_var": "식이 null일 수 있으므로 예외 처리를 위해 임시 변수에 저장한 후 사용합니다.",
  "jfsem.UNCHECKED_NULL.sca.note.desc.conditional": "변수 {0}가 null인 경우 나머지 조건을 확인할 필요가 없습니다.",
  "jfsem.UNCHECKED_NULL.sca.note.desc.default": "변수 {0}가 null일 수 있으므로 확인하여 개별적으로 처리합니다.",
  "jfsem.UNCHECKED_NULL.sca.note.desc.init_field_simple": "변수 {0}가 null인 경우 적당한 상수를 초기값으로 사용합니다.",
  "jfsem.UNRESTRICTED_UPLOAD_OF_FILE.sca.desc.default": "위험 요소를 찾아내 제거하는 {0} 메소드를 잘 정의하여, 외부에서 들어온 값을 인자로 넘기기 전에 호출합니다.",
  "jfsem.UNSAFE_REFLECTION.defect": "검증되지 않은 외부 입력 값 {0}가 {1} 메소드에 사용되었습니다.",
  "jfsem.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.sca.desc.default": "Random 대신 암호학적으로 안전한 SecureRandom 클래스를 사용하십시오.",
  "jfsem.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.sca.desc.default": "알고리즘에 따라 권장되는 크기 이상의 키를 사용하십시오.",
  "jfsem.WEAK_PASSWORD_REQUIREMENTS.msg1": "암호 생성 시 강한 조건 검증을 수행해야 합니다.",
  "jfsem.XSS.sca.desc.default": "위험 요소를 찾아내 제거하는 {0} 메소드를 잘 정의하여, 외부에서 들어온 값을 인자로 넘기기 전에 호출합니다.",
  "jfsyn.ABSENCE_CALL_SUPER_IN_ACTIVITY_LIFECYCLE.defect": "Activity 생명주기 메소드의 맨 앞에 super의 해당 메소드 호출이 필요합니다.",
  "jfsyn.ABSENCE_SET_MEASURED_DIMENSION_IN_OVERRIDE_ON_MEASURE.defect": "오버라이딩 된 View.onMeasure 메소드에서 setMeasuredDimension을 호출하지 않고 있습니다.",
  "jfsyn.ACCESSING_CONSTANT_INDEX_IN_LOOP.defect.lit": "반복문 내에서 상수 인덱스를 이용하여 배열에 접근하지 않도록 합니다. {0}",
  "jfsyn.ACCESSING_CONSTANT_INDEX_IN_LOOP.defect.var": "배열 접근에 사용된 인덱스가 반복문 수행 중 변하지 않는 값일 수 있습니다. {0}",
  "jfsyn.ALWAYS_INCLUDE_THROW_IN_CATCH.defect": "CATCH 블록에 THROW 문 또는 대체 주석이 존재하지 않습니다.",
  "jfsyn.ANDROID_ADD_JAVASCRIPT_INTERFACE.defect": "addJavascriptInterface 함수를 사용합니다.",
  "jfsyn.ANDROID_ADD_JAVASCRIPT_INTERFACE.defect.set": "setJavascriptInterface 함수를 사용합니다.",
  "jfsyn.ANDROID_CONTEXT_SEND_BROADCAST.defect": "해당 메소드를 통해 외부로 intent 내용이 전달 될 수 있습니다.",
  "jfsyn.ANDROID_GRANT_URI_PERMISSIONS.defect": "암묵적 intent 를 사용하며, 위험 가능성이 있는 flag 를 사용했습니다.",
  "jfsyn.ANDROID_MISSING_BROADCASTER_PERMISSION.defect": "권한 설정없이 registerReceiver 함수를 사용합니다.",
  "jfsyn.ANDROID_PERMISSION_CHECK_BYPASS.defect": "checkCallingOrSelfPermission() 메소드를 사용하여 권한이 우회할 수 있습니다.",
  "jfsyn.ANDROID_RECEVIED_SSL_ERROR.defect": "onReceivedSslError() 메소드 내의 handler.proceed() 메소드는 분기문 안에서 호출되어야 합니다.",
  "jfsyn.ANDROID_UNSAFE_HOSTNAME_VERIFICATION.defect": "HostnameVerifier의 verify 함수가 항상 true 값을 반환합니다.",
  "jfsyn.ANDROID_WEB_SETTING_JAVA_SCRIPT.defect": "Javascript 가 허용되도록 설정되었습니다.",
  "jfsyn.ASSIGNMENT_IN_OPERAND.defect": "제어문의 조건절에 할당식이 포함되어 있습니다.",
  "jfsyn.AUTOCOMPLETE_PASSWORD.defect": "패스워드 입력에는 자동완성 기능이 적용되어서는 안됩니다.",
  "jfsyn.AVOID_CALLING_FINALIZE.defect": "finalize() 가 호출되었습니다.",
  "jfsyn.AVOID_CATCHING_GENERIC_EXCEPTION.defect": "일반적인 예외가 try-catch 블록 내에서 사용되었습니다.",
  "jfsyn.AVOID_CATCHING_NPE.defect": "NullPointerException 이 사용되었습니다.",
  "jfsyn.AVOID_CATCHING_THROWABLE.defect": "catch 블록의 파라미터로 Throwable 타입이 사용되었습니다.",
  "jfsyn.AVOID_DECIMAL_LITERALS_IN_BIG_DECIMAL_CONSTRUCTOR.defect": "BigDecimal 의 인자로 실수 타입이 사용되었습니다.",
  "jfsyn.AVOID_FINAL_LOCAL_VARIABLE.defect": "적절하지 않은 final 지역 변수 선언이 존재합니다.",
  "jfsyn.AVOID_INSTANCEOF_CHECKS_IN_CATCH_CLAUSE.defect": "Catch 구문 내 인자 값과 같은 이름인 변수에 instanceof 구문이 존재합니다.",
  "jfsyn.AVOID_LOSING_EXCEPTION_INFORMATION.defect": "예외 정보에 접근했습니다.",
  "jfsyn.AVOID_RETHROWING_EXCEPTION.defect": "catch 블록 내부가 해당 예외의 레퍼런스를 throw 하는 구문 하나로만 이루어져 있습니다.",
  "jfsyn.AVOID_SYNCHRONIZED_AT_METHOD_LEVEL.defect": "메서드 선언에 synchronized를 사용했습니다.",
  "jfsyn.AVOID_THREAD_GROUP.defect": "ThreadGroup 클래스가 사용되었습니다.",
  "jfsyn.AVOID_THROWING_NULL_POINTER_EXCEPTION.defect": "NullPointerException 객체 할당을 했습니다.",
  "jfsyn.AVOID_THROWING_RAW_EXCEPTION_TYPES.defect": "일반적인 예외 객체가 throw 되었습니다.",
  "jfsyn.AVOID_USING_AWT_SWING.defect": "{0}를 사용하면 안됩니다.",
  "jfsyn.AVOID_USING_HARD_CODE_IP.defect": "IP 주소를 하드코딩했습니다.",
  "jfsyn.AVOID_USING_JAVA_IO.defect": "EJB 규격에는 Java I/O 패키지 클래스 사용이 금지되어있습니다.",
  "jfsyn.AVOID_USING_NATIVE_CODE.defect": "JNI가 사용되었습니다.",
  "jfsyn.AVOID_USING_PUBLIC_STATIC_FINAL_ARRAY.defect": "정적 public final 배열을 사용하지 않도록 합니다.",
  "jfsyn.BAD_ARRAY_DECLARATION.defect.bracket": "대괄호는 타입 바로 뒤에 작성해야 합니다.",
  "jfsyn.BAD_ARRAY_DECLARATION.defect.white_space": "대괄호 앞에 공백이 없어야 합니다.",
  "jfsyn.BAD_CALL.FORBIDDEN.defect": "금지된 메소드를 호출하지 않도록 합니다.",
  "jfsyn.BAD_CALL.FROM_DM_TO_ALL.defect": "DM 내부에서 {0} 를 호출하지 말아야 합니다. DM에서 PM, FM, DM을 호출하는 것은 금지되었습니다.",
  "jfsyn.BAD_CALL.FROM_FM_TO_PM.defect": "FM 내부에서 PM {0} 를 호출하지 말아야 합니다.",
  "jfsyn.BAD_CALL.FROM_PM_TO_CUD_DM_SAME_COMPONENT.defect": "PM 내부에서 {0} 를 호출하지 말아야 합니다. 동일한 컴포넌트의 PM에서 C/U/D DM을 호출하는 것은 금지되었습니다.",
  "jfsyn.BAD_CALL.FROM_PM_TO_DIRECT_PM.defect": "PM 내부에서 다른 PM {0} 를 호출하지 말아야 합니다.",
  "jfsyn.BAD_CALL.FROM_PM_TO_INDIRECT_CUD_DM_OTHER_COMPONENT.defect": "PM 내부에서 {0} 를 잘못된 방법으로 호출하지 말아야 합니다. PM에서 다른 컴포넌트의 C/U/D DM을 간접호출하는 것은 금지되었습니다.",
  "jfsyn.BAD_CALL.RUNTIME_GC.defect": "Runtime.gc() 함수를 호출합니다.",
  "jfsyn.BAD_CALL.RUNTIME_PROCESS.defect": "Runtime.process() 함수를 호출합니다.",
  "jfsyn.BAD_CALL.TO_DIRECT_ALL_OTHER_COMPONENT.defect": "{0} 를 호출하지 말아야 합니다. 이 컴포넌트 메소드에서 직접적으로 다른 컴포넌트의 PM, FM, DM을 호출하는 것은 금지되었습니다.",
  "jfsyn.BAD_CALL.TO_INDIRECT_ALL_SAME_COMPONENT.defect": "{0} 를 잘못된 방법으로 호출하지 말아야 합니다. 동일한 컴포넌트의 메소드를 간접 호출로 호출하는 것은 금지되었습니다.",
  "jfsyn.BAD_CALL.TO_INDIRECT_DM_OTHER_APP.defect": "{0} 를 잘못된 방법으로 호출하지 말아야 합니다. 다른 애플리케이션의 DM을 간접 호출로 호출하는 것은 금지되었습니다.",
  "jfsyn.BAD_COLLECTION_REMOVAL.INTEGER_TYPE.defect": "제거될 정수 값은 해당 콜렉션의 타입으로 캐스팅되어야 합니다.",
  "jfsyn.BAD_COMMENT.POSITION.BLOCK.defect.empty_missing": "이 주석 전에 빈 줄이 추가되어야 합니다.",
  "jfsyn.BAD_COMMENT.POSITION.BLOCK.defect.indent_before_close": "이 주석은 다음 라인의 닫는 중괄호보다 깊이 들여쓰기 되어야합니다.",
  "jfsyn.BAD_COMMENT.POSITION.BLOCK.defect.indent_mismatch": "이 주석의 들여쓰기가 다음 라인의 들여쓰기와 일치하지 않습니다.",
  "jfsyn.BAD_COMMENT.POSITION.BLOCK.defect.indent_mismatch_incomment": "블럭 주석 안에 있는 주석들의 들여쓰기가 일치하지 않습니다.",
  "jfsyn.BAD_COMMENT.POSITION.DOCUMENT.defect.empty_missing": "이 주석 전에 빈 줄이 추가되어야 합니다.",
  "jfsyn.BAD_COMMENT.POSITION.DOCUMENT.defect.indent_before_close": "이 주석은 다음 라인의 닫는 중괄호보다 깊이 들여쓰기 되어야합니다.",
  "jfsyn.BAD_COMMENT.POSITION.DOCUMENT.defect.indent_mismatch": "이 주석의 들여쓰기가 다음 라인의 들여쓰기와 일치하지 않습니다.",
  "jfsyn.BAD_COMMENT.POSITION.DOCUMENT.defect.indent_mismatch_incomment": "문서화 주석 안에 있는 주석들의 들여쓰기가 일치하지 않습니다.",
  "jfsyn.BAD_COMMENT.POSITION.END_OF_LINE.defect.white_space_missing": "블록 내에 있는 한 줄 주석이 연속되게 사용됐습니다.",
  "jfsyn.BAD_COMMENT.POSITION.SINGLE.defect.empty_missing": "이 주석 전에 빈 줄이 추가되어야 합니다.",
  "jfsyn.BAD_COMMENT.POSITION.SINGLE.defect.indent_before_close": "이 주석은 다음 라인의 닫는 중괄호보다 깊이 들여쓰기 되어야합니다.",
  "jfsyn.BAD_COMMENT.POSITION.SINGLE.defect.indent_mismatch": "이 주석의 들여쓰기가 다음 라인의 들여쓰기와 일치하지 않습니다.",
  "jfsyn.BAD_COMMENT.POSITION.TRAILING.defect.indent_missing": "해당 주석은 이전 주석과 동일하게 들여쓰기 되어야합니다.",
  "jfsyn.BAD_COMMENT.POSITION.TRAILING.defect.white_space_missing": "주석과 소스 코드 사이에 빈 칸이 추가되어야 합니다.",
  "jfsyn.BAD_COMPARISON.defect": "비교 연산자에 NaN 값이 사용되었습니다.",
  "jfsyn.BAD_COMPOUND_STATEMENT.CURLY_BRACE.defect.invalid_indent": "중괄호의 들여쓰기가 잘못되었습니다.",
  "jfsyn.BAD_COMPOUND_STATEMENT.CURLY_BRACE.defect.invalid_position": "중괄호의 위치가 잘못되었습니다.",
  "jfsyn.BAD_COMPOUND_STATEMENT.CURLY_BRACE.defect.invalid_whitespace": "중괄호 앞에 공백이 있어야 합니다.",
  "jfsyn.BAD_CURLYBRACE.DECLARATION.defect.different_line": "왼쪽 중괄호는 선언과 동일한 줄에 위치해야 합니다.",
  "jfsyn.BAD_CURLYBRACE.DECLARATION.defect.invalid_indent": "오른쪽 중괄호를 포함하고 있는 문장의 들여쓰기는 왼쪽 중괄호를 포함하고 있는 문장의 들여쓰기와 동일해야 합니다.",
  "jfsyn.BAD_CURLYBRACE.DECLARATION.defect.not_right_after": "왼쪽 중괄호는 블록이 비어있다면 오른쪽 중괄호 바로 옆에 위치해야 합니다.",
  "jfsyn.BAD_CURLY_BRACE_GENERAL.defect.bad_after_open_char": "여는 중괄호 뒤에 허용되지 않는 문자 \"{0}\"(코드 0x{1})가 발견되었습니다.",
  "jfsyn.BAD_CURLY_BRACE_GENERAL.defect.bad_after_open_strict": "중괄호를 연 후 즉시 줄바꿈 해야합니다.",
  "jfsyn.BAD_CURLY_BRACE_GENERAL.defect.bad_close": "닫는 중괄호는 줄바꿈 후에 써야합니다.",
  "jfsyn.BAD_CURLY_BRACE_GENERAL.defect.bad_open_inline": "줄바꿈 후 중괄호를 열어야합니다.",
  "jfsyn.BAD_CURLY_BRACE_GENERAL.defect.bad_open_newline": "줄바꿈 하지 않고 중괄호를 열어야합니다.",
  "jfsyn.BAD_EQ.defect": "잘못된 동등 비교 연산이 사용되었습니다.",
  "jfsyn.BAD_EQUALITY_EXPRESSION.FLOAT.defect": "실수 값에 대해서 동등 비교 연산을 수행하지 않도록 합니다.",
  "jfsyn.BAD_EXCEPTIONAL_CONDITION.defect.caught": "해당 예외 조건은 처리되지 말아야 합니다.",
  "jfsyn.BAD_EXCEPTIONAL_CONDITION.defect.uncaught": "처리가 필요한 예외 조건이 처리되지 않았습니다.",
  "jfsyn.BAD_IF_BOOLEAN_VARIABLE_CONDITION.defect": "boolean 변수를 조건식에 바로 사용하지 마십시오.",
  "jfsyn.BAD_IF_BOOLEAN_VARIABLE_CONDITION.sca.desc.cmp_false": "boolean 변수를 직접 반전해 사용하는 대신 false와 비교합니다.",
  "jfsyn.BAD_IF_BOOLEAN_VARIABLE_CONDITION.sca.desc.cmp_true": "boolean 변수를 직접 사용하는 대신 true와 비교합니다.",
  "jfsyn.BAD_IF_ONLY.defect": "if 구문이 else 없이 사용되었습니다.",
  "jfsyn.BAD_IF_ONLY.sca.desc.default": "빈 else 블록이라도 명시적으로 넣어주도록 합니다.",
  "jfsyn.BAD_INDENTATION.BLOCK.defect.not_same": "블록 내의 구문들은 같은 크기로 들여쓰기 되어야 합니다.",
  "jfsyn.BAD_INDENTATION.BLOCK.defect.smaller": "구문의 들여쓰기 크기는 {0} 과(와) 같거나 커야 합니다. 현재 들여쓰기의 크기는 {1} 입니다.",
  "jfsyn.BAD_INDENTATION.CASE_LABELS.defect": "switch 레이블의 들여쓰기는 올바른 형식으로 작성되어야 합니다.",
  "jfsyn.BAD_INDENTATION.CLASS.defect.class_indent": "class 구문의 들여쓰기가 잘못 작성되었습니다.",
  "jfsyn.BAD_INDENTATION.CLASS.defect.extends": "extends 구문은 클래스 선언과 같은 줄에 위치해야 합니다.",
  "jfsyn.BAD_INDENTATION.CLASS.defect.implements": "implements 구문은 클래스 선언 다음 줄에 위치해야 합니다.",
  "jfsyn.BAD_INDENTATION.CLASS.defect.implements_indent": "implements 구문의 들여쓰기가 잘못 작성되었습니다.",
  "jfsyn.BAD_INDENTATION.DO_STATEMENT.defect": "do 키워드와 중괄호 사이에 공백이 있어야 합니다.",
  "jfsyn.BAD_INDENTATION.FIELD.defect": "필드의 들여쓰기가 잘못 작성되었습니다.",
  "jfsyn.BAD_INDENTATION.FOR_STATEMENT.defect": "for 구문이 여러 줄로 구성된 경우 각 줄의 들여쓰기가 정렬되어야 합니다.",
  "jfsyn.BAD_INDENTATION.IF_STATEMENT.defect.all": "if 조건문의 식들은 {0} 칸보다 더 들여쓰기 되어야 합니다.",
  "jfsyn.BAD_INDENTATION.IF_STATEMENT.defect.max": "if 블록 내 구문들은 최대 {0} 칸 만큼 들여쓰기 되어야 합니다.",
  "jfsyn.BAD_INDENTATION.IMPROPER_LENGTH.defect.not_tab": "탭 문자는 사용되어서는 안됩니다.",
  "jfsyn.BAD_INDENTATION.IMPROPER_LENGTH.defect.tab": "코드 전에는 공백 문자가 사용되어야 합니다.",
  "jfsyn.BAD_INDENTATION.METHOD.defect": "메소드의 들여쓰기가 잘못 작성되었습니다.",
  "jfsyn.BAD_INDENTATION.METHOD.defect.miss_blank": "메소드와 메소드 정의 사이에 공백이 존재해야 합니다.",
  "jfsyn.BAD_INDENTATION.PACKAGE.defect": "패키지의 들여쓰기가 잘못 작성되었습니다.",
  "jfsyn.BAD_INDENTATION.SOURCE_CODE.defect": "소스코드는 첫 번째 열에서 시작되어야 합니다.",
  "jfsyn.BAD_INDENTATION.SWITCH_STATEMENT.defect": "switch 구문의 들여쓰기는 올바른 형식으로 작성되어야 합니다.",
  "jfsyn.BAD_INDENTATION.SWITCH_STATEMENT.defect.bad_indent": "case 키워드의 들여쓰기가 switch 키워드 들여쓰기와 같아야 합니다.",
  "jfsyn.BAD_INDENTATION.TRY_STATEMENT.defect.catch_indent": "catch 블록의 들여쓰기는 try 블록의 들여쓰기인 {0} 과(와) 동일해야 합니다.",
  "jfsyn.BAD_INDENTATION.TRY_STATEMENT.defect.catch_start": "catch 블록은 이전 블록 바로 다음에 시작되어야 합니다.",
  "jfsyn.BAD_INDENTATION.TRY_STATEMENT.defect.finally_indent": "finally 블록의 들여쓰기는 try 블록의 들여쓰기인 {0} 과(와) 동일해야 합니다.",
  "jfsyn.BAD_INDENTATION.TRY_STATEMENT.defect.finally_start": "finally 블록은 이전 블록 바로 다음에 시작되어야 합니다.",
  "jfsyn.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.defect": "필드 변수는 선언 직후 초기화 되어서는 안됩니다.",
  "jfsyn.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.defect": "지역 변수가 선언 직후 초기화 되지 않았습니다.",
  "jfsyn.BAD_LINE_WRAPPING.defect.after_comma": "쉼표 후에는 줄 바꿈을 해서는 안됩니다.",
  "jfsyn.BAD_LINE_WRAPPING.defect.after_operator": "연산자 후에는 줄 바꿈을 해서는 안됩니다.",
  "jfsyn.BAD_LINE_WRAPPING.defect.before_comma": "쉼표 전에는 줄 바꿈을 해서는 안됩니다.",
  "jfsyn.BAD_LINE_WRAPPING.defect.before_operator": "연산자 전에는 줄 바꿈을 해서는 안됩니다.",
  "jfsyn.BAD_LINE_WRAPPING.defect.invalid": "잘못된 줄 바꿈입니다.",
  "jfsyn.BAD_LINE_WRAPPING.defect.top_level": "줄 바꿈은 최상위 식에서만 허용됩니다.",
  "jfsyn.BAD_LINE_WRAPPING.defect.wrong_column": "줄 바꿈시 열 정렬이 잘못되었습니다.",
  "jfsyn.BAD_METHOD_DECLARATION.defect.empty": "인자가 존재하지 않으나 공백이 존재합니다.",
  "jfsyn.BAD_METHOD_DECLARATION.defect.forbidden": "메소드 선언 시 괄호 이전의 공백은 허용되지 않습니다.",
  "jfsyn.BAD_METHOD_DECLARATION.defect.indentation": "인자의 들여쓰기가 잘못 작성되었습니다.",
  "jfsyn.BAD_METHOD_DECLARATION.defect.missing": "인자의 공백이 잘못 작성되었습니다. 공백 열은 {0} 입니다.",
  "jfsyn.BAD_METHOD_DECLARATION.defect.parenthesis": "괄호의 들여쓰기가 잘못 작성되었습니다.",
  "jfsyn.BAD_NAME.BU.defect": "BU 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.CLASS_METHOD_SAVING_BANKS.defect.class": "{0} 클래스 명명 규칙에 맞지 않는 이름이 사용되었습니다.",
  "jfsyn.BAD_NAME.CLASS_METHOD_SAVING_BANKS.defect.method": "{0} 클래스 {1}에 속하는 {2} 메소드의 명명 규칙에 맞지 않는 이름이 사용되었습니다.",
  "jfsyn.BAD_NAME.CLASS_METHOD_SAVING_BANKS.defect.private": "Unit에 속하는 private 메소드 명명 규칙에 맞지 않는 이름이 사용되었습니다.",
  "jfsyn.BAD_NAME.CLASS_OR_INTERFACE.defect": "클래스나 인터페이스의 이름은 대문자로 시작해야 합니다.",
  "jfsyn.BAD_NAME.CONSTANT.defect": "허용되지 않은 상수 이름입니다.",
  "jfsyn.BAD_NAME.CONSTANT_CLASS.KOREAPOST.defect": "상수 클래스 명명 규칙을 위반했습니다.",
  "jfsyn.BAD_NAME.DM.ANNOTATION.defect": "DM 어노테이션 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.DM.defect": "DM 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.DU.ANNOTATION.defect": "DU 어노테이션 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.DU.defect": "DU 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.DUPLICATED.defect.class": "{0} 은(는) 이미 클래스 이름으로 사용되고 있습니다.",
  "jfsyn.BAD_NAME.DUPLICATED.defect.method": "{0} 은(는) 이미 메소드 이름으로 사용되고 있습니다.",
  "jfsyn.BAD_NAME.DUPLICATED.defect.variable": "{0} 은(는) 이미 변수 이름으로 사용되고 있습니다.",
  "jfsyn.BAD_NAME.FM.ANNOTATION.defect": "FM 어노테이션 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.FM.defect": "FM 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.FU.ANNOTATION.defect": "FU 어노테이션 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.FU.defect": "FU 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.METHOD.defect": "메소드의 이름은 소문자로 시작해야 합니다.",
  "jfsyn.BAD_NAME.PACKAGE.defect": "허용되지 않은 패키지 이름입니다.",
  "jfsyn.BAD_NAME.PACKAGE.defect.upper": "최상위 패키지 레벨의 이름이 규칙에 맞지 않습니다.",
  "jfsyn.BAD_NAME.PARAMETER.defect": "잘못된 파라미터 이름입니다.",
  "jfsyn.BAD_NAME.PM.defect": "PM 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.PU.ANNOTATION.defect": "PU 어노테이션 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.PU.defect": "PU 명명 규칙이 잘못되었습니다.",
  "jfsyn.BAD_NAME.SPECIAL_CHARACTER.defect": "이름에서 허용되지 않은 특수문자가 사용되었습니다.",
  "jfsyn.BAD_NAME.TOO_LONG.defect": "이름의 길이가 허용된 최대 길이인 {0} 을(를) 초과합니다.",
  "jfsyn.BAD_NAME.VARIABLE.defect.all": "{0} 변수 {1}의 이름은 다음의 패턴에 맞게 작성해야 합니다. {2}",
  "jfsyn.BAD_NAME.VARIABLE.defect.some": "{0} 변수 {1}의 이름은 다음의 패턴 {2}에 맞게 작성해야 하는데, 이 중 {3} 의 패턴에 어긋납니다.",
  "jfsyn.BAD_OPERATOR.ASSIGNMENT_IN_COND.defect": "할당 연산이 아닌 비교 연산을 수행하려는 것인지 확인해야 합니다.",
  "jfsyn.BAD_OPERATOR.ASSIGNMENT_IN_COND.sca.desc.default": "조건문 내에서 할당 연산을 수행한 부분을 비교 연산으로 변경합니다.",
  "jfsyn.BAD_OPERATOR.ASSIGNMENT_IN_COND.sca.note.desc.move_assign": "만약 조건문에서 할당 연산을 사용하려는 경우 가능하면 조건문 밖에서 처리하도록 합니다.",
  "jfsyn.BAD_OPERATOR.MULTIPLE_VARIABLE_ASSIGNMENT.defect": "여러 개의 변수에 동시에 할당을 수행하지 않도록 합니다.",
  "jfsyn.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.defect": "정확한 개수의 논리 연산이 사용되어야 합니다.",
  "jfsyn.BAD_ORGANIZATION.CLASS.defect": "클래스 내 요소들의 순서가 잘못되었습니다.",
  "jfsyn.BAD_OVERRIDE.defect": "해당 메소드의 오버라이드가 정상적으로 이루어지지 않았습니다.",
  "jfsyn.BAD_PARAMETER_IN_ABS_LIST_VIEW_SET_CHOICE_MODE.defect": "AbsListView.setChoiceMode의 choiceMode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ACTIVITY_GET_PREFERENCES.defect": "Activity.getPreferences의 mode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ACTIVITY_SET_PROGRESS.defect": "Activity.setProgress의 progress 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ACTIVITY_START_INTENT_SENDER.defect": "Activity.startIntentSender의 flags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ADDRESS_ADDRESS_LINE.defect": "Address.getAddressLine, Address.setAddressLine의 index 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ALARM_MANAGER_SET.defect": "AlarmManager.set, AlarmManager.setInexactRepeating, AlarmManager.setRepeating의 type 또는 intervalMillis 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ALERT_DIALOG_SET_BUTTON.defect": "AlertDialog.setButton의 whichButton 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ANIMATION_RESOLVE_SIZE.defect": "Animation.resolveSize의 type 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ANIMATION_SET_REPEAT_MODE.defect": "Animation.repeatMode의 repeatMode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_ANIMATION_SET_Z_ADJUSTMENT.defect": "Animation.setZAdjustment의 zAdjustment 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_AUDIO_MANAGER_ADJUST_STREAM_VOLUME.defect": "AudioManager.adjustStreamVolume의 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_AUDIO_MANAGER_GET_VIBRATE_SETTING.defect": "AudioManager.getVibrateSetting의 mode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_AUDIO_MANAGER_SET_RINGER_MODE.defect": "AudioManager.setRingerMode의 ringerMode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_AUDIO_MANAGER_SET_VIBRATE_SETTING.defect": "AudioManager.setVibrateSetting의 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_AUDIO_MANAGER_SHOULD_VIBRATE.defect": "AudioManager.shouldVibrate의 vibrateType 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_AUDIO_RECORD_GET_MIN_BUFFER_SIZE.defect": "AudioRecord.getMinBufferSize의 audioFormat 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_BINDER_TRANSACT.defect": "Binder.transact의 code 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_BITMAP_CREATE_BITMAP.defect": "Bitmap.createBitmap의 width, height 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_BLUETOOTH_CLASS_HAS_SERVICE.defect": "BluetoothClass.hasService의 service 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_ANTIBANDING.defect": "Camera.Parameters.setAntibanding의 antibanding 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_COLOR_EFFECT.defect": "Camera.Parameters.setWhiteBalance의 value 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_FLASH_MODE.defect": "Camera.Parameters.setFlashMode의 value 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_FOCUS_MODE.defect": "Camera.Parameters.setFocusMode의 value 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_SCENE_MODE.defect": "Camera.Parameters.setSceneMode의 value 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CAMERA_PARAMETER_SET_WHITE_BALANCE.defect": "Camera.Parameters.setWhiteBalance의 value 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CANVAS_SAVE_LAYER.defect": "Canvas.saveLayer 혹은 saveLayerAlpha의 saveFlags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CONTEXT_BIND_SERVICE.defect": "Context.bindService의 flags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CONTEXT_CREATE_PACKAGE_CONTEXT.defect": "Context.createPackageContext의 flags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CONTEXT_GET_SYSTEM_SERVICE.defect": "Context.getSystemService의 name 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CONTEXT_PERMISSION_PID.defect": "Context 클래스의 permission 관련 메소드의 pid 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_CRITERIA_SET_ACCURACY.defect": "Criteria.setAccuracy의 accuracy 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_DATE_UTILS_FORMAT_DATE_RANGE.defect": "DateUtils.formatDateRange의 flags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_DATE_UTILS_GET_AMPM_STRING.defect": "DateUtils.getAMPMString의 ampm 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_DATE_UTILS_GET_DAY_OF_WEEK_STRING.defect": "DateUtils.getDayOfWeekString의 dayOfWeek 또는 abbrev 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_DATE_UTILS_GET_MONTH_STRING.defect": "DateUtils.getMonthString의 month 또는 abbrev 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_DRAWABLE_SET_ALPHA.defect": "Drawable.setAlpha의 alpha 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_DRAWABLE_SET_LEVEL.defect": "Drawable.setLevel의 level 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_GEOCODER_GET_FROM_LOCATION_LATITUDE.defect": "Geocoder.getFromLocation의 latitude 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_GEOCODER_GET_FROM_LOCATION_LONGITUDE.defect": "Geocoder.getFromLocation의 longitude 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_GESTURE_STORE_SET_ORIENTATION_STYLE.defect": "GestureStore.setOrientationStyle의 style 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_GESTURE_STORE_SET_SEQUENCE_TYPE.defect": "GestureStore.setSequenceType의 type 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_GLSURFACE_VIEW_SET_RENDER_MODE.defect": "GLSurfaceView.setRenderMode의 renderMode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_GPS_STATUS_LISTENER_ON_GPS_STATUS_CHANGED.defect": "GpsStatus.Listener.onGpsStatusChanged의 event 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_INPUT_METHOD_SERVICE_GET_TEXT_FOR_IME_ACTION.defect": "InputMethodService.getTextForImeAction의 imeOptions 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_INPUT_METHOD_SERVICE_SEND_DOWN_UP_KEY_EVENTS.defect": "InputMethodService.sendDownUpKeyEvents의 keyEventCode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_INTENT_ADD_SET_FLAGS.defect": "Intent.addFlags 또는 Intent.setFlags의 flags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_INTENT_FILTER_ADD_DATA_PATH.defect": "IntentFilter.addDataPath의 type 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_INTENT_FILTER_SET_PRIORITY.defect": "IntentFilter.setPriority의 priority 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_INTENT_PARSE_URI.defect": "Intent.parseUri의 flags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_LAYOUT_ANIMATION_CONTROLLER_SET_ORDER.defect": "LayoutAnimationController.setOrder의 order 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_LOCATION_CONVERT_COORDINATE.defect": "Location.convert의 coordinate 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_LOCATION_CONVERT_OUTPUT_TYPE.defect": "Location.convert의 outputType 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_LOCATION_LISTENER_ON_STATUS_CHANGED.defect": "LocationListener.onStatusChanged의 status 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_META_KEY_KEY_LISTENER_GET_META_STATE.defect": "MetaKeyKeyListener.getMetaState의 meta 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_MOTION_EVENT_OBTAIN.defect": "MotionEvent.obtain의 action 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PACKAGE_MANAGER_FLAG_ZERO.defect": "메소드의 flags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PACKAGE_MANAGER_SET_APPLICATION_ENABLED_SETTING.defect": "PackageManager.setComponentEnabledSetting의 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PACKAGE_MANAGER_SET_COMPONENT_ENABLED_SETTING.defect": "PackageManager.setComponentEnabledSetting의 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PAINT_SET_TEXT_SIZE.defect": "Paint.setTextSize의 textSize 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PARCELABLE_WRITE_TO_PARCEL.defect": "Parcelable.writeToParcel의 flags 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PHONE_NUMBER_UTILS_CALLED_PARTY_BCD_TO_STRING.defect": "PhoneNumberUtils.calledPartyBCDToString의 length 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PHONE_STATE_LISTENER_ON_CALL_STATE_CHANGED.defect": "PhoneStateListener.onCallStateChanged의 state 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PHONE_STATE_LISTENER_ON_DATA_ACTIVITY.defect": "PhoneStateListener.onDataActivity의 direction 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_PHONE_STATE_LISTENER_ON_DATA_CONNECTION_STATE_CHANGED.defect": "PhoneStateListener.onDataConnectionStateChanged의 state 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_POPUP_WINDOW_SET_INPUT_METHOD_MODE.defect": "PopupWindow.setInputMethodMode의 mode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_SENSOR_MANAGER_REGISTER_LISTENER.defect": "SensorManager.registerListener의 samplingPeriodUs 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_SENSOR_MANAGER_REMAP_COORDINATE_SYSTEM.defect": "SensorManager.remapCoordinateSystem의 X 또는 Y 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_SOUND_EFFECT_CONSTANTS_GET_CONTANT_FOR_FOCUS_DIRECTION.defect": "SoundEffectConstants.getContantForFocusDirection의 direction 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_TELEPHONY_MANAGER_LISTEN.defect": "TelephonyManager.listen의 events 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_TEXT_TO_SPEECH_QUEUE_MODE.defect": "TextToSpeech.playEarcon, TextToSpeech.playSilence, TextToSpeech.speak 메소드의 queueMode 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_TIME_SET_MONTH.defect": "Time.set의 month 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_TIME_SET_MONTH_DAY.defect": "Time.set의 monthDay 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_VELOCITY_TRACKER_COMPUTE_CURRENT_VELOCITY.defect": "VelocityTracker.computeCurrentVelocity의 maxVelocity 인자에 허용 범위를 벗어난 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_VIEW_FOCUS.defect": "focus 관련 메소드의 direction 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_VIEW_FOCUS_SEARCH.defect": "View.focusSearch의 direction 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_VIEW_GROUP_SET_DESCENDANT_FOCUSABILITY.defect": "ViewGroup.setDescendantFocusability의 focusability 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_VIEW_GROUP_SET_PERSISTENT_DRAWING_CACHE.defect": "ViewGroup.setPersistentDrawingCache의 drawingCacheToKeep 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_VIEW_SET_DRAWING_CACHE_QUALITY.defect": "View.setDrawingCacheQuality의 quality 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_VIEW_SET_SCROLL_BAR_STYLE.defect": "View.setScrollBarStyle의 style 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARAMETER_IN_VIEW_SET_VISIBILITY.defect": "View.setVisibility의 visibility 인자에 잘못된 값이 전달되었습니다.",
  "jfsyn.BAD_PARENTHESIS.defect.different_column": "여러 줄에 위치한 괄호 쌍은 동일한 열에 위치해야 합니다.",
  "jfsyn.BAD_PARENTHESIS.defect.forbidden_left": "안쪽의 왼쪽 괄호 다음에는 공백을 작성하여서는 안됩니다.",
  "jfsyn.BAD_PARENTHESIS.defect.forbidden_right": "안쪽의 오른쪽 괄호 이전에는 공백을 작성하여서는 안됩니다.",
  "jfsyn.BAD_PARENTHESIS.defect.required_left": "가장 바깥쪽의 왼쪽 괄호 다음에 공백이 필요합니다.",
  "jfsyn.BAD_PARENTHESIS.defect.required_right": "가장 바깥쪽의 오른쪽 괄호 이전에 공백이 필요합니다.",
  "jfsyn.BAD_PARENTHESIS.defect.something_before_right": "새로운 줄에 작성된 오른쪽 괄호 이전에는 아무것도 작성되어서는 안됩니다.",
  "jfsyn.BAD_RETURN_IN_IF_STATEMENT.defect": "if-else문 내부에 return 구문만 있습니다. 코드 간결화가 가능합니다.",
  "jfsyn.BAD_THROW.FORBIDDEN_EXCEPTION.defect": "옵션으로 허용되지 않은 클래스의 예외 객체 {0}를 throw 합니다.",
  "jfsyn.BAD_THROW.FORBIDDEN_EXCEPTION.defect.prohibited": "옵션으로 금지된 클래스의 예외 객체 {0}를 throw 합니다.",
  "jfsyn.BAD_TYPE.FLOAT.defect": "실수형 타입을 사용하지 않도록 합니다.",
  "jfsyn.BAD_TYPE.INTEGER.defect": "정수형 타입을 사용하지 않도록 합니다.",
  "jfsyn.BAD_USE_SHIFT_OPERATORS_IN_SAME_DATA.defect": "동일 데이터에 비트 연산과 산술 연산의 동시 수행하지 말아야 합니다.",
  "jfsyn.BAD_VARIABLE_DECLARATION.FIELD.defect": "필드의 순서가 잘못되었습니다.",
  "jfsyn.BAD_VARIABLE_DECLARATION.LOOP.defect.outer": "반복문에서 사용되는 변수는 반복문 내에서 선언되어야 합니다.",
  "jfsyn.BAD_VARIABLE_DECLARATION.LOOP.defect.prohibited": "반복문에서 사용되는 변수의 이름이 금지된 형식으로 작성되었습니다.",
  "jfsyn.BAD_VARIABLE_DECLARATION.defect": "동일한 타입을 지닌 변수들은 묶어서 작성하도록 합니다.",
  "jfsyn.BAD_WHITESPACE.ACCESSING.defect": "접근 연산자 주위에는 공백을 작성하지 않도록 합니다.",
  "jfsyn.BAD_WHITESPACE.ASSERT_KEYWORD.defect": "키워드와 괄호 사이에는 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.CALL.defect.after_method": "메소드 이름 이후에 공백이 존재합니다.",
  "jfsyn.BAD_WHITESPACE.CALL.defect.before_argument": "인자 이전에 공백이 존재하지 않습니다.",
  "jfsyn.BAD_WHITESPACE.CALL.defect.exist_but_no_argument": "인자가 존재하지 않지만 공백이 존재합니다.",
  "jfsyn.BAD_WHITESPACE.CALL.defect.no_around_argument": "전체 인자 주위에 공백이 존재하지 않습니다.",
  "jfsyn.BAD_WHITESPACE.CALL.defect.preceding_comma": "쉼표 이전에 공백이 존재합니다.",
  "jfsyn.BAD_WHITESPACE.CALL.defect.wrong_around_argument": "전체 인자 주위에 {0}개의 공백이 필요합니다.",
  "jfsyn.BAD_WHITESPACE.CALL.defect.wrong_around_argument_detail": "{1} 인자 주위에 {0}개의 공백이 필요합니다.",
  "jfsyn.BAD_WHITESPACE.CASTING.defect.double": "캐스팅 연산자 뒤에 공백이 사용되어야 합니다.",
  "jfsyn.BAD_WHITESPACE.CASTING.defect.single": "캐스팅 연산자 뒤에 공백이 사용되어야 합니다.",
  "jfsyn.BAD_WHITESPACE.CATCH_STATEMENT.defect": "catch 구문의 공백은 올바른 형식으로 작성되어야 합니다.",
  "jfsyn.BAD_WHITESPACE.COMMA.defect.after": "쉼표 이후에 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.COMMA.defect.before": "쉼표 이전에 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.DO_KEYWORD.defect": "키워드와 괄호 사이에는 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.FOR_KEYWORD.defect": "키워드와 괄호 사이에는 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.FOR_STATEMENT.defect.between": "for 구문과 식 사이에 공백이 존재하지 않습니다.",
  "jfsyn.BAD_WHITESPACE.FOR_STATEMENT.defect.forinit": "for 초기화 표현식에서 3개 이상의 변수를 사용하지 않습니다.",
  "jfsyn.BAD_WHITESPACE.FOR_STATEMENT.defect.forupdate": "for 증분 표현식에서 3개 이상의 변수를 사용하지 않습니다.",
  "jfsyn.BAD_WHITESPACE.IF_KEYWORD.defect": "키워드와 괄호 사이에는 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.IF_STATEMENT.defect": "if 구문의 공백은 올바른 형식으로 작성되어야 합니다.",
  "jfsyn.BAD_WHITESPACE.INC_DEC_EXPRESSION.defect": "증분, 감소 연산자와 피연산자 사이에 공백이 있으면 안됩니다.",
  "jfsyn.BAD_WHITESPACE.KEYWORD.defect": "키워드와 괄호 사이에는 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.SEMICOLON.defect": "세미콜론 앞에 공백이 없어야 합니다.",
  "jfsyn.BAD_WHITESPACE.SWITCH_KEYWORD.defect": "키워드와 괄호 사이에는 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.SWITCH_STATEMENT.defect": "switch 구문의 공백을 올바른 형식으로 작성해야 합니다.",
  "jfsyn.BAD_WHITESPACE.TRY_KEYWORD.defect": "키워드와 괄호 사이에는 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.WHILE_KEYWORD.defect": "키워드와 괄호 사이에는 공백이 존재해야 합니다.",
  "jfsyn.BAD_WHITESPACE.WHILE_STATEMENT.defect.after_exp": "while 조건식과 중괄호 사이에 공백이 있어야 합니다.",
  "jfsyn.BEAN_MEMBERS_SHOULD_SERIALIZE.defect": "Bean 클래스의 Serializable 인터페이스 구현이 필요합니다.",
  "jfsyn.CALL_SUPER.defect": "해당 메소드는 super() 메소드를 반드시 호출해야 합니다.",
  "jfsyn.CALL_SUPER_IN_CONSTRUCTOR.defect": "생성자 내부에서 super() 또는 다른 생성자를 호출하지 않았습니다.",
  "jfsyn.CANONICALIZE_URL_RECEIVED_BY_PROVIDER.defect": "컨텐트 프로바이더를 통해 파일을 교환하기 전 정규화 과정이 누락되었습니다.",
  "jfsyn.CANONICALIZE_URL_RECEIVED_BY_PROVIDER.source": "File 객체 생성 시 Uri 정보가 이용됐습니다.",
  "jfsyn.CATCH_THROW_EXCEPTION_CHECKER.defect": "catch 블록에서 throw 할 때 생성한 Exception 객체를 인자값에 포함하지 않았습니다.",
  "jfsyn.CHECK_METHOD_NAME_IN_FILE_PATH.defect": "메소드가 해당 파일 경로의 메소드 명명 규칙을 위반했습니다.",
  "jfsyn.CLASSCAST.defect": "위험한 클래스 형변환이 수행되었습니다.",
  "jfsyn.CODE_INJECTION.defect": "외부입력 값을 검증 없이 eval()에서 사용했습니다.",
  "jfsyn.CODE_INJECTION.source": "외부 값 입력이 확인됐습니다. {0}",
  "jfsyn.COMBINED_INCREMENT_AND_DECREMENT_OPERATOR.defect": "다른 연산자와 함께 증감 연산자를 사용하지 않도록 합니다.",
  "jfsyn.COMMON.file": "연관된 {0} 파일로 이동합니다.",
  "jfsyn.COMMON.jsp_include": "파일이 포함되었습니다.",
  "jfsyn.COMMON.jsp_tainted_include": "포함된 파일에서 오염된 값이 발견되었습니다.",
  "jfsyn.COMMON.tainted": "오염된 값이 발견되었습니다.",
  "jfsyn.COMMON.tainted_assigned": "오염된 값이 할당되었습니다.",
  "jfsyn.COMPARE_OBJECTS_WITH_EQUALS.defect": "equals() 를 사용하지 않았습니다.",
  "jfsyn.COMPLY_WITH_MODIFIER_ORDER.defect": "{0} 순서로 사용된 제어자를 {1} 순서로 재배치 해야합니다.",
  "jfsyn.COMPLY_WITH_MODIFIER_ORDER.sca.desc.default": "제어자를 순서에 맞게 재배치합니다.",
  "jfsyn.CONDITIONAL_OPERATION_WITHOUT_PARENTHESIS.defect": "삼항연산자의 조건절에서 사용되는 이항 연산에는 괄호를 사용해야 합니다.",
  "jfsyn.CONSTANT_CLASS_METHOD.defect": "상수 클래스 내 불필요한 메소드가 검출되었습니다.",
  "jfsyn.CONSTRUCTOR_CALLS_OVERRIDABLE_METHOD.defect": "부모 클래스의 생성자에서 가상 메소드가 호출되었습니다.",
  "jfsyn.CRITICAL_PUBLIC_VARIABLE_WITHOUT_FINAL_MODIFIER.defect": "중요한 public 변수가 final 한정자 없이 사용되었습니다.",
  "jfsyn.CROSS_SITE_REQUEST_FORGERY.defect.critical_function": "위험한 기능이 아무런 인증 과정 없이 사용되었습니다.",
  "jfsyn.CROSS_SITE_REQUEST_FORGERY.defect.method_get": "method 속성 값을 get으로 설정하지 않도록 합니다.",
  "jfsyn.CROSS_SITE_REQUEST_FORGERY.defect.missing_authentication": "파일 내 토큰 비교를 통한 인증 과정이 존재하지 않습니다.",
  "jfsyn.DATA_LEAK_BETWEEN_SESSIONS.URI.defect": "final로 선언되지 않은 필드가 사용되었습니다.",
  "jfsyn.DATA_LEAK_BETWEEN_SESSIONS.defect": "final로 선언되지 않은 필드가 사용되었습니다.",
  "jfsyn.DATA_LEAK_BETWEEN_SESSIONS.sca.desc.move": "필드에 선언된 변수 {0}을 변수가 사용되는 메소드의 로컬 변수로 옮깁니다.",
  "jfsyn.DATA_LEAK_BETWEEN_SESSIONS.sca.desc.remove": "필드에 선언된 변수 {0}를 삭제합니다.",
  "jfsyn.DATA_LEAK_BETWEEN_SESSIONS.sca.note.desc.move": "메소드 간에 값이 공유되는 변수가 필요할 경우 호출할 때 인자로 넘기는 등의 다른 방식을 사용하세요.",
  "jfsyn.DECLARE_AT_THE_BEGINNING_OF_BLOCK.defect": "선언은 메소드 블록의 시작 부분에 위치해야 합니다.",
  "jfsyn.DEFINE_WRAPPERS_AROUND_NATIVE_METHODS.defect": "입력 값 검사 없이 네이티브 메소드가 호출됩니다.",
  "jfsyn.DEFINE_WRAPPERS_AROUND_NATIVE_METHODS.defect.private_native": "private이 아닌 native 메소드가 선언되었습니다.",
  "jfsyn.DEFINE_WRAPPERS_AROUND_NATIVE_METHODS.source": "네이티브 메소드가 선언되었습니다.",
  "jfsyn.DIFFERENT_GROUP_CLASS_CALL.defect": "타 업무그룹 내 호출 규약을 위반한 클래스가 검출되었습니다.",
  "jfsyn.DIFFERENT_MESSAGE_CODE.defect": "타 업무 메시지 코드 규약을 위반한 문자열이 검출되었습니다.",
  "jfsyn.DIRECT_MANAGEMENT_OF_CONNECTIONS.defect": "연결 관리를 위해 DriverManager.getConnection() 메소드를 직접 호출하지 않도록 합니다.",
  "jfsyn.DIRECT_USE_OF_INTEGER_LITERAL.defect": "정수 리터럴 {0} 가 변수에 저장되지 않은 채 코드에 직접 사용되었습니다.",
  "jfsyn.DIRECT_USE_OF_SOCKETS.defect": "Socket를 직접 생성하거나 사용하지 않도록 합니다.",
  "jfsyn.DIRECT_USE_OF_THREADS.defect": "Thread 를 직접 생성하거나 사용하지 않도록 합니다.",
  "jfsyn.DIRECT_USE_OF_UNSAFE_JNI.defect": "안전하지 않은 JNI가 사용되었습니다.",
  "jfsyn.DOUBLE_CHECKED_LOCKING.defect": "이중 확인 잠금(Double checked locking, DCL)이 사용되었습니다.",
  "jfsyn.DO_NOT_ACCESS_ACCOUNT_INFORMATION.defect": "계정 관련 정보에 접근했습니다.",
  "jfsyn.DO_NOT_ACCESS_PRIVATE_MEMBER_OF_OUTER_CLASS.defect": "외부 클래스의 private 멤버에 접근하지 않도록 합니다.",
  "jfsyn.DO_NOT_APPEND_STRINGS.defect": "문자열을 +, 혹은 += 연산 등으로 덧붙이지 않도록 합니다.",
  "jfsyn.DO_NOT_ASSIGN_EXTERNAL_DATA_TO_MEMBER_VARIABLES.defect": "외부 입력 값을 적절한 검증 없이 멤버 객체에 할당하면 안됩니다.",
  "jfsyn.DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES.defect": "신뢰할 수 없는 출처에 대한 보안 검사를 수행합니다.",
  "jfsyn.DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES.source": "신뢰할 수 없는 값이 파라미터로 전달됩니다. {0}",
  "jfsyn.DO_NOT_CALL_EXEC.defect": "위험한 Runtime.exec() 메소드를 호출하지 않도록 합니다.",
  "jfsyn.DO_NOT_CALL_OVERRIDABLE_METHODS_FROM_CONSTRUCTORS.defect": "생성자 내부에서 오버라이드 가능한 메소드가 검출되었습니다.",
  "jfsyn.DO_NOT_CALL_RUN_FINALIZERS_ON_EXIT.defect": "위험한 runFinalizersOnExit() 메소드를 호출하지 않도록 합니다.",
  "jfsyn.DO_NOT_CALL_STREAM_IN_METHOD.defect": "메소드가 호출될 때 마다 단일 스트림에 대해 새로운 버퍼 래퍼가 생성됩니다.",
  "jfsyn.DO_NOT_CALL_SYNCHRONIZED_METHOD_IN_LOOP.defect": "반복문 내에서 synchronized 메소드를 호출하지 않도록 합니다.",
  "jfsyn.DO_NOT_CALL_THREAD_RUN.defect": "Thread 클래스의 run 메소드의 사용이 검출되었습니다.",
  "jfsyn.DO_NOT_CAST_GENERIC_ITERATOR.defect": "제네릭 iterator의 다음 값을 캐스팅 하지 않도록 합니다.",
  "jfsyn.DO_NOT_CHANGE_OF_LOOP_CONTROL_VARIABLE.defect": "for 루프 내에서 제어 변수 변경합니다.",
  "jfsyn.DO_NOT_COMPARE_NULL_USING_EQUALS.defect": "`null` 값과 특정값을 비교할 때 `.equals()` 메소드를 사용했습니다.",
  "jfsyn.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.defect": "메소드 금지 패턴이 검출되었습니다.",
  "jfsyn.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.defect": "금지된 Exception 인스턴스를 생성하고 사용했습니다.",
  "jfsyn.DO_NOT_CREATE_INSTANCE_IN_LOOP.defect": "반복문 내에서 객체를 생성하지 않도록 합니다.",
  "jfsyn.DO_NOT_CREATE_UNNECESSARY_STRING_INSTANCE.defect": "불필요한 String 인스턴스가 생성되었습니다.",
  "jfsyn.DO_NOT_EXTERND_VALIDATION_CLASS.defect": "ActionForm 클래스를 상속받으면 안됩니다.",
  "jfsyn.DO_NOT_EXTERND_VALIDATION_CLASS.defect.extend_dyna": "DynaActionForm 클래스를 상속받으면 안됩니다.",
  "jfsyn.DO_NOT_GET_DEVICE_ID.defect": "TelephonyManager.getDeviceId를 호출했습니다.",
  "jfsyn.DO_NOT_GET_USIM_UNIQUE_ID.defect": "TelephonyManager.getSubscriberId 혹은 TelephonyManager.getSimSerialNumber를 호출했습니다.",
  "jfsyn.DO_NOT_IMPORT_ON_DEMAND.defect": "import 구문은 온디맨드(on-demand) 형식으로 작성되어서는 안됩니다.",
  "jfsyn.DO_NOT_LOCK_OR_UNLOCK_IN_LOOP.defect": "반복문 내에서 잠금(lock)이나 해제(unlock) 메소드를 호출하지 않도록 합니다.",
  "jfsyn.DO_NOT_NOTIFY_IN_SYNCHRONIZED.defect": "synchronized 블록이나 메소드 내에서 notify() 메소드를 호출하지 않도록 합니다.",
  "jfsyn.DO_NOT_READ_STREAM_IN_LOOP.defect": "반복문 내에서 스트림을 읽지 않도록 합니다.",
  "jfsyn.DO_NOT_RECORD_MEDIA.defect": "오디오나 비디오를 기록하는 MediaRecorder.start가 호출되었습니다.",
  "jfsyn.DO_NOT_RELY_ON_THE_DEFAULT_AUTOMATIC_SIGNATURE_VERIFICATION.defect": "별도의 추가 검증없이 기본으로 이루어지는 자동 서명 인증에 의존합니다.",
  "jfsyn.DO_NOT_RETURN_PRIVATE_FIELD_OF_OUTER_CLASS.defect": "외부 클래스의 private 필드를 반환하지 않도록 합니다.",
  "jfsyn.DO_NOT_REUSE_PUBLIC_IDENTIFIERS.defect": "Java 표준 라이브러리의 공용 식별자를 재사용했습니다. {0}",
  "jfsyn.DO_NOT_SEND_SMS.defect": "SMS 전송 메소드를 호출했습니다.",
  "jfsyn.DO_NOT_SLEEP_OR_YIELD_WITHOUT_CONTROL.defect": "sleep()이나 yield() 메소드를 제어 구문 없이 호출하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_ADJACENT_BINARY_OPERATOR.defect.adjacent": "이항 연산자는 피연산자와 붙여서 작성하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_ADJACENT_BINARY_OPERATOR.defect.white_space": "연산자 사용 시 {0} 개의 공백을 작성해야 합니다.",
  "jfsyn.DO_NOT_USE_ANYTHING_OTHER_THAN_CONSTANT_CLASS_INTERFACE_TYPE.defect": "상수 클래스를 class로 선언합니다.",
  "jfsyn.DO_NOT_USE_ANYTHING_OTHER_THAN_DM_REGULAR_RETURN_VALUE.defect": "DM의 반환값이 IDataSet type이 아닙니다.",
  "jfsyn.DO_NOT_USE_ANYTHING_OTHER_THAN_FM_REGULAR_RETURN_VALUE.defect": "FM의 반환값이 IDataSet type이 아닙니다.",
  "jfsyn.DO_NOT_USE_ANYTHING_OTHER_THAN_PM_REGULAR_RETURN_VALUE.defect": "PM의 반환값이 IDataSet type이 아닙니다.",
  "jfsyn.DO_NOT_USE_ANYTHING_OTHER_THAN_PUBLIC_STATIC_FINAL_DIRECTIVES_WHEN_DECLARING_CONSTANTS.defect": "상수 선언이 public static final이 아닙니다.",
  "jfsyn.DO_NOT_USE_ANYTHING_OTHER_THAN_REGULAR_LOG.defect": "Log 객체를 사용합니다.",
  "jfsyn.DO_NOT_USE_BREAK_WITH_LABEL.defect": "레이블과 함께 break 구문을 사용하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_CLASS_MEMBER_VARIABLE.defect": "클래스 멤버 변수가 사용되었습니다.",
  "jfsyn.DO_NOT_USE_CLASS_MEMBER_VARIABLE_FINAL.defect": "클래스에 final 멤버 변수가 선언되어 있습니다.",
  "jfsyn.DO_NOT_USE_CONSTANTS_AND_UTIL_CLASSES_OUTSIDE_OF_THE_CONSTS_PACKAGE.defect": "상수/유틸 클래스의 상위 패키지가 consts가 아닙니다.",
  "jfsyn.DO_NOT_USE_CONSTANT_OF_INNER_CLASS.defect": "내부 클래스의 상수를 사용하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_CONSTANT_OF_INNER_CLASS.source": "내부 클래스 내에 상수가 정의되었습니다.",
  "jfsyn.DO_NOT_USE_DECLARED_VARIABLE_IN_LOOP.defect": "반복문 내부 변수에 상수를 할당합니다.",
  "jfsyn.DO_NOT_USE_DEPRECATED_API.defect": "더 이상 사용하지 않는 폐기된 API가 import 되었습니다.",
  "jfsyn.DO_NOT_USE_DU_WITHOUT_DATA_UNIT_INHERITANCE.defect": "DataUnit 상속 없는 DU 사용을 금지합니다.",
  "jfsyn.DO_NOT_USE_FLOAT_TYPE_FOR_LOOP_INDICES.defect": "반복문의 인덱스로 float 자료형이 사용되었습니다.",
  "jfsyn.DO_NOT_USE_FU_WITHOUT_FUNCTION_UNIT_INHERITANCE.defect": "FunctionUnit 상속 없는 FU 사용을 금지합니다.",
  "jfsyn.DO_NOT_USE_HARD_CODING.LITERAL.defect": "문자열이 하드코딩 되었습니다.",
  "jfsyn.DO_NOT_USE_HARD_CODING.NUMBER.defect": "숫자 상수가 하드코딩 되었습니다.",
  "jfsyn.DO_NOT_USE_HTTP_PROTOCOL.defect": "HTTP 프로토콜을 사용하여 중요 정보를 전송하는 경우 스니핑을 통해 데이터가 유출될 수 있습니다.",
  "jfsyn.DO_NOT_USE_INNER_CLASS.defect": "Inner 클래스가 사용되었습니다.",
  "jfsyn.DO_NOT_USE_INSTANCE_OF_IN_CATCH.defect": "catch 블럭 내부에서 instanceof를 사용합니다.",
  "jfsyn.DO_NOT_USE_IO_WITHOUT_BUFFER_PROCESSING.defect": "BufferedStream 없이 FileStream의 메소드 직접 사용합니다.",
  "jfsyn.DO_NOT_USE_NESTED_TRY.defect": "중첩된 try-catch 구문을 사용하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_NOTIFY.defect": "synchronized 메소드 내에서 notify() 메소드를 호출하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_OTHER_THAN_REGULAR_MEMBER_VARIABLE.defect": "허용하지 않은 멤버 변수를 선언합니다.",
  "jfsyn.DO_NOT_USE_PARAMETERS_OTHER_THAN_DM_PARAMETERS.defect": "DM의 파라미터가 IDataSet, IOnlineContext type이 아닙니다.",
  "jfsyn.DO_NOT_USE_PARAMETERS_OTHER_THAN_FM_PARAMETERS.defect": "FM의 파라미터가 IDataSet, IOnlineContext type이 아닙니다.",
  "jfsyn.DO_NOT_USE_PARAMETERS_OTHER_THAN_PM_PARAMETERS.defect": "PM의 파라미터가 IDataSet, IOnlineContext type이 아닙니다.",
  "jfsyn.DO_NOT_USE_PUBLIC_FIELD.defect": "캡슐화를 위해 public 필드를 사용하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_PUBLIC_METHODS_OTHER_THAN_PU_AND_PM.defect": "PU 내에 PM외의 public 메소드가 존재합니다.",
  "jfsyn.DO_NOT_USE_PU_WITHOUT_PROCESS_UNIT_INHERITANCE.defect": "PU가 pobis.framework.base.ProcessUnit를 상속 받지 않습니다.",
  "jfsyn.DO_NOT_USE_SERVERSOCKET.defect": "{0} 을 사용한 데이터 교환은 위험합니다.",
  "jfsyn.DO_NOT_USE_SHIFT_ON_SIGNED_VALUE.defect": "해당 타입에 shift 연산을 사용하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_SHORT.defect": "short 타입을 사용하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_SIMPLE_DATE_FORMAT.defect": "SimpleDateFormat 클래스 사용이 발견되었습니다.",
  "jfsyn.DO_NOT_USE_STRING_OPERATION_IN_LOG.defect": "로그 기록시 + 연산자를 사용하여 문자열을 연결합니다.",
  "jfsyn.DO_NOT_USE_SYNCHRONIZED_STATEMENT.defect": "synchronized 구문을 사용하는 대신 synchronized 메소드를 사용하도록 합니다.",
  "jfsyn.DO_NOT_USE_THREAD_INHERITANCE.defect": "Thread를 상속하는 클래스를 선언합니다.",
  "jfsyn.DO_NOT_USE_VOLATILE.defect": "volatile을 사용하지 않도록 합니다.",
  "jfsyn.DO_NOT_USE_WITH.SQL.defect": "쿼리 내에서 WITH 절을 사용하고 있습니다.",
  "jfsyn.DO_NOT_WAIT_IN_SYNCHRONIZED_WITHOUT_CONTROL.defect": "synchronized 메소드 내에서 제어 구문 없이 wait() 메소드를 호출하지 않도록 합니다.",
  "jfsyn.DYNAMIC_CODE_MANIPULATION.defect.use_localvar": "외부 입력 값 {0} 이(가) 별도의 검증 없이 사용됐습니다.",
  "jfsyn.DYNAMIC_CODE_MANIPULATION.defect.use_only_method": "외부 입력 값을 별도의 검증 없이 바로 사용했습니다.",
  "jfsyn.EMPTY_BRANCH.defect": "해당 분기가 비어있습니다.",
  "jfsyn.EMPTY_CATCH_BLOCK.defect": "catch 블록이 비어있습니다.",
  "jfsyn.EMPTY_CATCH_BLOCK.sca.desc.default": "catch 블록 안에 적절한 오류 처리 코드를 삽입합니다.",
  "jfsyn.EMPTY_CLASS_BLOCK.defect": "빈 클래스 블록이 검출되었습니다.",
  "jfsyn.EMPTY_DO_WHILE_BLOCK.defect": "빈 do/while 블록이 검출되었습니다.",
  "jfsyn.EMPTY_FINALLY_BLOCK.defect": "finally 블록이 비어있습니다.",
  "jfsyn.EMPTY_FOR_BLOCK.defect": "빈 for 구문 블록이 검출되었습니다.",
  "jfsyn.EMPTY_IF_BLOCK.defect": "빈 조건문 블록이 검출되었습니다.",
  "jfsyn.EMPTY_METHOD_BLOCK.defect": "빈 메소드 블록이 검출되었습니다.",
  "jfsyn.EMPTY_STRING_CHECK.defect": "빈 문자열을 확인할 때 .isEmpty()를 사용하세요.",
  "jfsyn.EMPTY_SWITCH_BLOCK.defect": "빈 switch 구문이 검출되었습니다.",
  "jfsyn.EMPTY_SYNCHRONIZED_BLOCK.defect": "synchronized 내부가 비어있습니다.",
  "jfsyn.EMPTY_TRY_BLOCK.defect": "Try 블록이 비어있습니다.",
  "jfsyn.EMPTY_TRY_CATCH_BLOCK.defect": "빈 예외 처리 블록이 검출되었습니다.",
  "jfsyn.EMPTY_WHILE_STATEMENT.defect": "while 구문이 비어있을땐 중괄호를 사용하지 않도록 합니다.",
  "jfsyn.EQUALS_METHOD_IS_OVERLOADED.defect": "오버라이드된 equals() 메소드 파라미터의 타입이 java.lang.Object 가 아닙니다.",
  "jfsyn.EVAL_INJECTION.defect": "위험한 값이 사용되었습니다.",
  "jfsyn.EXPOSURE_OF_ADMINISTRATION_PAGE.defect": "쉽게 접근 가능한 관리자 페이지 이름을 사용하지 않도록 합니다.",
  "jfsyn.EXPOSURE_OF_DANGEROUS_METHOD.defect.call": "위험한 메소드가 public 메소드 내에서 호출되었습니다.",
  "jfsyn.EXPOSURE_OF_DANGEROUS_METHOD.defect.declare": "위험한 메소드가 public으로 선언되었습니다.",
  "jfsyn.EXPOSURE_OF_DANGEROUS_METHOD.sca.desc.call": "위험한 메소드 {0}을 호출하는 메소드 {1}의 공개 범위를 private으로 변경합니다.",
  "jfsyn.EXPOSURE_OF_DANGEROUS_METHOD.sca.desc.declare": "위험한 메소드 {0}의 공개 범위를 private으로 변경합니다.",
  "jfsyn.EXPOSURE_OF_SYSTEM_DATA.defect": "민감한 시스템 데이터가 노출되었습니다.",
  "jfsyn.EXPOSURE_OF_SYSTEM_DATA.sca.desc.default": "민감한 시스템 데이터를 노출시키는 코드를 삭제합니다.",
  "jfsyn.FINALIZE_DECLARED_PUBLIC.defect": "finalize()를 public으로 선언하여 외부에서 임의로 호출할 수 있습니다.",
  "jfsyn.FINALIZE_DOES_NOT_CALL_SUPER_FINALIZE.defect": "마지막 문장에 super.finalize() 를 호출해야 합니다.",
  "jfsyn.FINALIZE_SHOULD_BE_PROTECTED.defect": "finalize 메소드가 public으로 선언되었습니다.",
  "jfsyn.FORBIDDEN.EQUALITY_FOR_BOXED_PRIMITIVES.defect": "equals() 메소드를 사용해서 비교해야 합니다.",
  "jfsyn.FORBIDDEN.INSTANCE_ACCESSING.defect": "객체에 접근하는 대신 클래스를 사용하도록 합니다.",
  "jfsyn.FORBIDDEN.REPLACING_EMAIL_ADDRESS.defect": "이메일 주소를 재설정하지 않도록 합니다.",
  "jfsyn.FORBIDDEN_ASSIGN_LITERAL.defect": "변수 {0}에 상수값을 대입하는 것은 금지되어있습니다.",
  "jfsyn.FORBIDDEN_ASSIGN_LITERAL.sca.desc.default": "해당 라인을 삭제합니다.",
  "jfsyn.FORBIDDEN_CLASS.defect": "금지된 클래스 이름이 검출되었습니다.",
  "jfsyn.FORBIDDEN_PACKAGE.defect": "금지된 패키지 이름이 검출되었습니다.",
  "jfsyn.FOR_LOOP_CONTROL_VARIABLE.defect": "FOR 문을 제어하는 변수가 정해진 규칙을 위반했습니다.",
  "jfsyn.HARD_CODED_USER_NAME_AND_PASSWORD.defect": "{0}의 {1}번째 파라미터에 하드코드된 정보가 사용되어 해커가 데이터를 악용할 가능성이 높아집니다.",
  "jfsyn.HARD_CODING.STRING_COMPARISON.defect.hard_coded": "문자열 비교를 위해 하드코딩된 값이 사용되었습니다.",
  "jfsyn.HARD_CODING.STRING_COMPARISON.defect.wrong_side": "상수 값은 equals() 메소드의 좌측에 위치해야 합니다.",
  "jfsyn.IMPLICIT_CASTING.ASSIGNMENT.defect": "할당된 값이 묵시적으로 캐스팅됩니다.",
  "jfsyn.IMPLICIT_CASTING.CALL.defect": "호출에 사용되는 인자가 묵시적으로 캐스팅됩니다.",
  "jfsyn.IMPLICIT_CASTING.RETURN.defect": "반환되는 값이 묵시적으로 캐스팅됩니다.",
  "jfsyn.IMPROPER_AUTHORIZATION.defect": "부적절한 인증이 사용되었습니다.",
  "jfsyn.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.defect.exception": "부적절한 예외가 처리되었습니다.",
  "jfsyn.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.defect.null_check": "반환된 값이 null검사 없이 참조되었습니다.",
  "jfsyn.IMPROPER_REFERENCE_XML_EXTERNAL_ENTITY.defect.SAXBuilder": "외부개체 참조 제한 설정이 필요합니다. 해결 방법 코드를 참고해 주세요. SAXBuilder",
  "jfsyn.IMPROPER_REFERENCE_XML_EXTERNAL_ENTITY.defect.SAXReader": "외부개체 참조 제한 설정이 필요합니다. 해결 방법 코드를 참고해 주세요. SAXReader",
  "jfsyn.IMPROPER_REFERENCE_XML_EXTERNAL_ENTITY.defect.dbf": "외부개체 참조 제한 설정이 필요합니다. 해결 방법 코드를 참고해 주세요. DocumentBuilderFactory",
  "jfsyn.IMPROPER_REFERENCE_XML_EXTERNAL_ENTITY.defect.saxpf": "외부개체 참조 제한 설정이 필요합니다. 해결 방법 코드를 참고해 주세요. SAXParserFactory",
  "jfsyn.IMPROPER_REFERENCE_XML_EXTERNAL_ENTITY.defect.sf": "외부개체 참조 제한 설정이 필요합니다. 해결 방법 코드를 참고해 주세요. SchemaFactory",
  "jfsyn.IMPROPER_REFERENCE_XML_EXTERNAL_ENTITY.defect.tf": "외부개체 참조 제한 설정이 필요합니다. 해결 방법 코드를 참고해 주세요. TransformerFactory",
  "jfsyn.IMPROPER_REFERENCE_XML_EXTERNAL_ENTITY.defect.xmlif": "외부개체 참조 제한 설정이 필요합니다. 해결 방법 코드를 참고해 주세요. XMLInputFactory",
  "jfsyn.IMPROPER_RETURN_STATEMENT.defect": "식이 있는 반환 값은 괄호로 둘러쌓여야 합니다.",
  "jfsyn.IMPROPER_SIGNATURE.JWT.defect.builder": "signWith()를 통해 JWT를 서명하여 생성해야 합니다.",
  "jfsyn.IMPROPER_SIGNATURE.JWT.defect.create": "전자서명 알고리즘을 사용하지 않고 JWT를 생성했습니다.",
  "jfsyn.IMPROPER_SIGNATURE.JWT.defect.parser": "parseClaimsJws()을 통해 JWT서명을 검증해야 합니다.",
  "jfsyn.IMPROPER_SIGNATURE.JWT.defect.require": "암호화 알고리즘을 사용하지 않고 JWT의 전자서명을 검증했습니다.",
  "jfsyn.IMPROPER_SIGNATURE.XML.defect": "setProperty()를 통해 속성을 설정하지 않으면 XML 보안 검증 모드를 실행하지 않습니다.",
  "jfsyn.IMPROPER_SIGNATURE.defect.false_param": "JarFile 생성자의 두 번째 파라미터가 false입니다.",
  "jfsyn.IMPROPER_SIGNATURE.defect.one_param": "JarFile을 초기화할 때 전자서명을 검증하지 않았습니다.",
  "jfsyn.IMPROPER_SIGNATURE.source": "File 변수가 선언되었습니다. {0}",
  "jfsyn.INCOMPLETE_VALIDATE_METHOD_DEFINITION.defect": "validate 메서드를 정의해야 합니다.",
  "jfsyn.INCOMPLETE_VALIDATE_METHOD_DEFINITION.defect.no_super": "validate 메서드 내에서 super.validate 메서드를 호출해야 합니다.",
  "jfsyn.INCORRECT_BITWISE_SHIFT.defect": "잘못된 비트 시프트 연산으로 예상치 못한 결과를 초래할 수 있습니다.",
  "jfsyn.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.defect": "중요 자원에 잘못된 권한이 부여되었습니다.",
  "jfsyn.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.sca.desc.set_executable": "setExecutable의 인자를 false로 바꾸어 실행 권한을 제거합니다.",
  "jfsyn.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.sca.desc.umask": "umask 명령의 인자를 77로 바꾸어 접근 권한을 제한합니다.",
  "jfsyn.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.sca.note.desc.set_executable": "쓰기 권한과 실행 권한이 동시에 주어지지 않아야 위험한 코드가 실행될 가능성을 줄일 수 있습니다.",
  "jfsyn.INCORRECT_SERIAL_PERSISTENT_FIELDS_MODIFIER.defect": "serialPersistentFields에 잘못된 한정자가 사용되었습니다.",
  "jfsyn.INCORRECT_USE_OF_AUTOBOXING_AND_UNBOXING.defect": "반복문 내 잘못된 오토박싱 및 언박싱은 성능 저하를 일으킬 수 있습니다.",
  "jfsyn.INFINITE_RECURSIVE_CALL.defect": "재귀호출을 제어하지 않고 수행합니다.",
  "jfsyn.INFORMATION_LEAK.RUNTIME_ERROR.defect": "민감한 정보가 런타임 오류 메시지를 통해 노출되었습니다. {0}",
  "jfsyn.INSUFFICIENT_SESSION_EXPIRATION.defect": "세션이 절대로 끝나지 않도록 설정되었습니다.",
  "jfsyn.INVALID_MESSAGE_ID_IN_EXCEPTION.defect": "업무 메시지가 공용 혹은 해당 업무 메시지 ID가 아닙니다.",
  "jfsyn.INVALID_MESSAGE_ID_IN_SETOKMSG.defect": "업무 메시지가 공용 혹은 해당 업무 메시지 ID가 아닙니다.",
  "jfsyn.INVOCATION_OF_EQUALS_ON_ARRAY.defect": "배열을 대상으로 equals() 메소드를 호출하지 않도록 합니다.",
  "jfsyn.LEAK.INFORMATION.PRIVILEGED_BLOCK.defect.call": "doPrivileged() 메소드는 private 메소드 내에서만 호출되어야 합니다.",
  "jfsyn.LEAK.INFORMATION.PRIVILEGED_BLOCK.defect.type": "doPrivileged() 의 argument는 PrivilegedAction<Void> 타입이어야만 합니다.",
  "jfsyn.LEFTOVER_DEBUG_CODE.defect": "디버그 목적으로 작성된 코드가 남아있습니다.",
  "jfsyn.LEFTOVER_DEBUG_CODE.sca.desc.default": "디버그 목적으로 작성된 코드는 삭제합니다.",
  "jfsyn.LOGGER_METHOD_ARGUMENT.defect": "로거 객체의 메소드 인자 값으로 금지된 패턴을 사용했습니다.",
  "jfsyn.LOG_SENSITIVE_INFORMATION.defect": "민감한 정보가 로그에 출력됩니다.",
  "jfsyn.LOG_SENSITIVE_INFORMATION_ANDROID.defect": "민감한 정보가 로그에 출력되었습니다.",
  "jfsyn.MAX_LINE_LENGTH.defect": "허용된 최대 길이를 초과했습니다.",
  "jfsyn.METHOD_IGNORES_RETURN_VALUE.defect": "메소드의 반환 값이 무시되었습니다.",
  "jfsyn.METHOD_NAME_IS_NOT_INTENDED.defect": "클래스 내에 {0} 이(가) 정의됩니다. {1} 을(를) 오버라이드하려는 의도인지 확인해야 합니다.",
  "jfsyn.METHOD_NAMING.defect": "메소드가 해당 패키지의 종속적인 메소드 명명 규칙을 위반했습니다.",
  "jfsyn.METHOD_NAMING_IN_SPECIFIC_PACKAGE.defect": "메소드가 해당 패키지의 종속적인 메소드 명명 규칙을 위반했습니다.",
  "jfsyn.MINIMIZE_VARIABLE_LIVE_RANGE.defect": "변수 {0}의 선언을 좀 더 실제 사용 위치 가까이로 옮겨야합니다.",
  "jfsyn.MISMATCH_VALIDATOR_AND_FORM_FIELD.defect": "설정된 폼 필드가 자바 클래스에 정의된 필드와 일치하지 않습니다.",
  "jfsyn.MISMATCH_VALIDATOR_AND_FORM_FIELD.source": "필드 변수 {0}이 존재하지 않습니다.",
  "jfsyn.MISSING_AUTHENTICATION_CONTROL.defect": "해당 페이지 내 필요한 인증 제어가 존재하지 않습니다.",
  "jfsyn.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.defect": "위험한 기능을 수행할 때 사전에 인증을 수행하지 않습니다.",
  "jfsyn.MISSING_BLANK_LINE.IMPORT.defect.blank": "import 구문 앞에는 빈 줄이 존재해야 합니다.",
  "jfsyn.MISSING_BLANK_LINE.IMPORT.defect.order": "import 구문의 순서가 허용되지 않은 형식으로 작성되었습니다.",
  "jfsyn.MISSING_BLANK_LINE.SECTION.defect": "메소드 내 섹션 블록 사이에는 빈 줄이 존재해야 합니다.",
  "jfsyn.MISSING_BLANK_LINE.defect.few": "{0}개의 빈 줄이 필요하지만 그보다 적은 빈 줄이 존재합니다.",
  "jfsyn.MISSING_BLANK_LINE.defect.many": "{0}개의 빈 줄이 필요하지만 그보다 많은 빈 줄이 존재합니다.",
  "jfsyn.MISSING_BLOCK_IN_CONTROL_STATEMENT.defect": "{0} 구문으로 제어되는 코드는 중괄호로 감싸도록 규정되어있습니다.",
  "jfsyn.MISSING_BLOCK_IN_CONTROL_STATEMENT.sca.desc.default": "중괄호를 사용합니다.",
  "jfsyn.MISSING_BRACE_IN_IF_STATEMENT.defect": "if 구문에서 중괄호가 사용되어야 합니다.",
  "jfsyn.MISSING_BREAK_IN_CASE.defect": "case 구문 내 break가 존재하지 않습니다.",
  "jfsyn.MISSING_CAUSE_EXCEPTION_IN_THROW.defect": "원인 Exception 전달이 누락되었습니다.",
  "jfsyn.MISSING_CHECK_OF_INPUT.defect": "입력 값이 검사 없이 참조되었습니다.",
  "jfsyn.MISSING_CLASS_IN_SOURCE_FILE.defect.in_public": "public이 아닌 클래스나 인터페이스는 다른 public 클래스 혹은 인터페이스 내에 존재해야 합니다.",
  "jfsyn.MISSING_CLASS_IN_SOURCE_FILE.defect.many_toplevel": "다른 클래스나 인터페이스의 정의 내에 속하지 않는 최상위 클래스나 인터페이스는 오직 하나이어야 합니다.",
  "jfsyn.MISSING_CLASS_IN_SOURCE_FILE.defect.name_mismatch": "최상위 public 클래스 혹은 인터페이스의 이름은 소스 파일 이름과 일치해야합니다.",
  "jfsyn.MISSING_CLASS_IN_SOURCE_FILE.defect.need_public": "소스 파일은 반드시 public 클래스나 인터페이스를 포함해야 합니다.",
  "jfsyn.MISSING_COMPOUND_STATEMENT.defect": "제어 구문은 복합(compound) 구문이어야 합니다.",
  "jfsyn.MISSING_DEFAULT_IN_SWITCH.defect": "switch문에 default가 있어야 합니다.",
  "jfsyn.MISSING_FINALLY_IN_TRY_CATCH.defect": "finally 블록이 존재하지 않습니다.",
  "jfsyn.MISSING_LOGIN_CONTROL.defect": "로그인 루틴은 반복 구문 등을 통해 수행 횟수가 제어되어야 합니다.",
  "jfsyn.MISSING_PACKAGE_DECLARATION.defect": "파일의 첫 번째 구문은 패키지 선언이어야 합니다.",
  "jfsyn.MISSING_PARENTHESIS_IN_EXPRESSION.defect": "괄호를 사용하여 식의 우선 순위를 결정해야 합니다.",
  "jfsyn.MISSING_PASSWORD_RECOVERY_CONTROL.defect": "비밀번호 복구 루틴은 반복 구문 등을 통해 수행 횟수가 제어되어야 합니다.",
  "jfsyn.MISSING_SERIAL_VERSION_UID.defect": "serializable 의 값을 지정해주지 않았습니다.",
  "jfsyn.MISSING_SYNCHRONIZED_FOR_OVERRIDING.defect": "synchronized 키워드가 오버라이드 과정에서 손실되었습니다.",
  "jfsyn.MODIFY_INPUT_PARAMETER.defect": "입력 파라미터를 직접 수정했습니다.",
  "jfsyn.MULTIPLE_BINDS_TO_THE_SAME_PORT.defect": "여러 개의 서비스가 하나의 포트에 바인딩됩니다.",
  "jfsyn.MUTABLE_COMPARISON.defect": "변할 수 있는 필드가 비교에 사용되었습니다.",
  "jfsyn.MUTABLE_EQUALS.defect": "변경 가능한 {0} 필드가 사용되었습니다.",
  "jfsyn.MUTABLE_EQUALS.source": "변경 가능한 {0} 필드가 선언되었습니다.",
  "jfsyn.MUTABLE_HASHCODE.defect": "변할 수 있는 필드가 해시 코드 생성에 사용되었습니다.",
  "jfsyn.NEVER_USE_RAW_TYPE.defect": "컬렉션에 대해서 원(raw)타입을 사용하지 않도록 합니다.",
  "jfsyn.NONSERIALIZABLE_OBJECT_STORED_IN_SESSION.defect": "직렬화 할 수 없는 객체가 세션에 저장되었습니다. {0}",
  "jfsyn.NONSYNCHRONIZED_METHOD_OVERRIDES_SYNCHRONIZED_METHOD.defect": "synchronized가 아닌 메소드가 synchronized로 정의된 부모 메소드를 오버라이드합니다.",
  "jfsyn.NON_PRIVATE_FIELD_IN_ACTION_CLASS.defect": "public 필드를 사용하여 데이터가 유출될 수 있습니다.",
  "jfsyn.NON_THREAD_SAFE_SINGLETON.defect": "Thread-safe가 아닌 싱글턴이 사용되었습니다.",
  "jfsyn.NUMBER_OF_METHOD_LINES_IN_PATH.defect": "메소드 내부 코드의 라인 수가 금지된 범위에 포함되었습니다.",
  "jfsyn.ORDERING_TO_CATCH_SQLEXCEPTION.defect": "java.lang.Exception예외 역시 처리되어야 합니다.",
  "jfsyn.OVERRIDE_HASHCODE_AND_EQUALS.defect": "hashCode()와 equals() 메소드는 모두 오버라이드 되어야합니다.",
  "jfsyn.PACKAGE_PATH.NICE.defect": "경로 {0} 은(는) 패키지 이름의 부분 문자열이어야 합니다.",
  "jfsyn.PASSWORD_IN_SERVLET_COMMENT.defect": "서블릿 주석 내에는 비밀번호를 작성하지 않도록 합니다.",
  "jfsyn.PASSWORD_IN_SERVLET_COMMENT.sca.desc.default": "주석에 남겨두었던 비밀번호 부분을 삭제합니다.",
  "jfsyn.PASSWORD_MANAGEMENT_HEAP_INSPECTION.defect": "비밀번호를 java.lang.String 객체에 저장하지 않도록 합니다.",
  "jfsyn.PASSWORD_MANAGEMENT_PASSWORD_IN_REDIRECT.defect": "민감한 데이터가 sendRedirect() 메소드를 통해 전송됩니다.",
  "jfsyn.PASSWORD_MANAGEMENT_PASSWORD_IN_REDIRECT.sca.desc.default": "GET 방식 대신 POST 방식을 사용합니다.",
  "jfsyn.PREVENT_DESERIALIZATION_OF_UNTRUSTED_DATA.defect": "신뢰할 수 없는 데이터가 역직렬화될 수 있습니다. {0}",
  "jfsyn.PREVENT_DESERIALIZATION_OF_UNTRUSTED_DATA.source": "resolveClass 메서드가 오버라이드 되지 않았습니다. {0}",
  "jfsyn.PRIVACY_CONCERNS_USING_GEOLOCATION_API.defect": "위치 정보를 전달하기 전 사용자 권한 확인이 누락되었습니다.",
  "jfsyn.PRIVATE_COLLECTION.defect": "private으로 선언된 {0} 컬렉션(또는 배열)이 public 메소드를 통해 반환됩니다.",
  "jfsyn.PRIVATE_COLLECTION.sca.desc.default": "private으로 선언된 컬렉션(또는 배열)을 직접 리턴하는 대신 그 복사본을 만들어 리턴합니다.",
  "jfsyn.PROCESS_CONTROL.defect": "라이브러리는 절대 경로를 통해 로드되어야 합니다.",
  "jfsyn.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.defect": "public 메소드로부터 전달된 데이터가 private으로 선언된 배열에 할당됩니다.",
  "jfsyn.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.sca.desc.default": "private으로 선언된 배열을 public 변수에 저장할 때는 단순 대입 하지 않고 복사본을 저장하도록 합니다.",
  "jfsyn.PUBLIC_FIELD_SHOULD_BE_USED_WITHOUT_METHOD.defect": "메소드가 없는 경우에만 비정적 public 필드가 사용될 수 있습니다.",
  "jfsyn.RACE_CONDITION_STATIC_DATABASE_CONNECTION.defect": "Connection 객체는 정적으로 선언되어서는 안됩니다.",
  "jfsyn.REDUNDANT_NAME.defect": "상위 scope의 이름을 덮어쓰지 않도록 합니다.",
  "jfsyn.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.defect": "보안 결정이 DNS lookup에 의존적입니다.",
  "jfsyn.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.defect": "보안 결정이 신뢰할 수 없는 입력에 의존적입니다.",
  "jfsyn.RETURN_FROM_FINALLY_BLOCK.defect": "finally블럭 내부에 return 문이 사용되었습니다.",
  "jfsyn.RETURN_IN_CATCH_STATEMENT.defect": "return문이 catch문 내에서 사용됩니다.",
  "jfsyn.SAME_GROUP_CLASS_CALL.defect": "동일 업무그룹 내 호출 규약을 위반한 클래스가 검출되었습니다.",
  "jfsyn.SAQT.M.JAVA.7181.defect": "이 함수의 순환 복잡도는 {0}이며, 제한값은 {1}입니다. 순환 복잡도를 제한값 이하로 낮추도록 합니다.",
  "jfsyn.SAQT.M.JAVA.7185.defect": "이 함수의 최대 블록 중첩 깊이는 {0}이며, 제한값은 {1} 입니다. 최대 블록 중첩 깊이를 제한값 이하로 낮추도록 합니다.",
  "jfsyn.SAQT.M.JAVA.7191.defect": "이 함수의 파라미터 수는 {0}이며, 제한값은 {1}입니다. 파라미터 수를 제한값 이하로 낮추도록 합니다.",
  "jfsyn.SAQT.M.JAVA.7197.defect": "이 함수의 실행 가능 라인 수는 {0}이며, 제한값은 {1}입니다. 실행 가능 라인 수를 제한값 이하로 낮추도록 합니다.",
  "jfsyn.SAVING_UNSERIALIZABLE_OBJECTS_TO_DISK.defect": "직렬화할 수 없는 객체를 저장하여 예외가 발생할 수 있습니다.",
  "jfsyn.SAVING_UNSERIALIZABLE_OBJECTS_TO_DISK.source": "직렬화할 수 없는 객체입니다.",
  "jfsyn.SECURITY.ARGUMENT.ASSERT.defect": "매개변수 {0} 에 assert 구문을 사용하면 안됩니다.",
  "jfsyn.SECURITY.ARGUMENT.DOPRIVILEGE.defect": "AccessController.doPrivilege() 메소드 인자에 매개변수가 들어오면 안됩니다.",
  "jfsyn.SECURITY.ARGUMENT.READ.BYTE.defect.call_read": "read() 의 반환 값을 받아서 검사해야 합니다.",
  "jfsyn.SECURITY.ARGUMENT.READ.BYTE.defect.data_type": "read() 반환 값 데이터 타입이 {1} 입니다. {0}의 데이터 타입을 변경해야합니다.",
  "jfsyn.SECURITY.ARGUMENT.THREAD_POOL.defect": "상위 task 와 동일한 thread pool 을 사용하지 않도록 합니다. {0}",
  "jfsyn.SECURITY.ASSERT.BOOLEAN.defect": "Assert문에서 메소드를 호출하거나 incremental, assignment 문을 사용하면 안됩니다.",
  "jfsyn.SECURITY.CALL.APPEND.LOOP.defect.append_loop": "반복문에서 정수로 제한 값이 설정되지 않은 상황에서, Collection 관련 클래스에 삽입 메소드를 호출 하면 안됩니다.",
  "jfsyn.SECURITY.CALL.APPEND.LOOP.defect.buffered_reader": "반복문에서 Buffered.readLine() 메소드를 호출하면 안됩니다.",
  "jfsyn.SECURITY.CALL.BIG_ENDIAN.defect": "{0} 메소드는 Little-endian 데이터가 big-endian 으로 읽힐 수 있으니 주의해야합니다.",
  "jfsyn.SECURITY.CALL.DELETE_ON_EXIT.defect": "createTempFile()이 호출된 후에 deleteOnExit()가 호출되면 안됩니다.",
  "jfsyn.SECURITY.CALL.FILE_DELETE.defect": "File 객체의 instance 에서 delete() 를 단독으로 호출하면 안됩니다.",
  "jfsyn.SECURITY.CALL.KEY_EQUALS.defect": "Key.equals() 만으로 key값을 비교하면 안됩니다. Key.getEncoded() 값으로 추가 비교가 필요합니다.",
  "jfsyn.SECURITY.CALL.LOCK_HOLDING.defect": "Synchronized 메소드에서 Thread를 홀딩 메소드를 호출하지 마십시오. {0}",
  "jfsyn.SECURITY.CALL.PUBLIC_METHOD.defect": "{0} 메소드는 재정의가 가능합니다. {1} 메소드 내에서 재정의가 가능한 메소드를 호출하면 안됩니다.",
  "jfsyn.SECURITY.CALL.RAW_COLLECTION.defect": "원시 타입의 컬렉션에서 메소드를 호출하면 안됩니다.",
  "jfsyn.SECURITY.CALL.REFLECTION.defect": "reflection 기능을 하는 {1}()메소드가 호출되었습니다. {0}() 메소드는 private 혹은 final 이여야 합니다.",
  "jfsyn.SECURITY.CALL.REFLECT_PERMISSION.defect": "ReflectionPermission() 메소드를 이용하여 권한을 획득하면 안됩니다.",
  "jfsyn.SECURITY.CALL.REMOVE.LOOP.defect": "Collection 아이템을 반복문 내에서 삭제하면 안됩니다.",
  "jfsyn.SECURITY.CALL.SECURITY_CHECK.defect.check_method": "보안에 취약한 메소드 {0}를 사용했습니다.",
  "jfsyn.SECURITY.CALL.SECURITY_CHECK.defect.security_check": "데이터 삭제 전 보안 검사가 이뤄지지 않았습니다.",
  "jfsyn.SECURITY.CALL.SYSTEM_GETENV.defect": "System.getEnv() 메소드를 호출하면 안됩니다.",
  "jfsyn.SECURITY.CALL.THREAD_INTERRUPTED.defect": "Synchronized 블록에서 Thread.interrupted() 메소드를 호출하지 않았습니다.",
  "jfsyn.SECURITY.CALL.THREAD_START.defect": "생성자 내에서 스레드 실행 메소드가 호출되면 안됩니다.",
  "jfsyn.SECURITY.CALL.THREAD_STOP.defect": "Thread.stop() 메소드를 호출하면 안됩니다.",
  "jfsyn.SECURITY.CALL.THROWS.FINALLY.defect": "{0} 메소드에서 throw된 예외가 처리가 되지 않았습니다.",
  "jfsyn.SECURITY.CALL.URL_EQUALS.defect": "URL.equals() 메소드를 바로 호출하면 안됩니다.",
  "jfsyn.SECURITY.CAST.FLOAT_DOUBLE.defect.to_double": "double 형 변수를 long 형으로 cast 하면 LSB가 손실 될 수 있습니다.",
  "jfsyn.SECURITY.CAST.FLOAT_DOUBLE.defect.to_float": "float 형 변수를 int 또는 long 형으로 cast 하면 LSB가 손실 될 수 있습니다.",
  "jfsyn.SECURITY.CHECK.OVERRIDE_METHOD.defect": "수퍼 클래스의 메소드가 자식 클래스에 존재하지 않습니다.",
  "jfsyn.SECURITY.CHECK.OVERRIDE_METHOD.defect.parent": "수퍼 클래스의 {0} 메소드가 자식 클래스에 존재하지 않습니다.",
  "jfsyn.SECURITY.CLASS.CLONE.defect.non_clone": "{0} 클래스가 final이 아닙니다.",
  "jfsyn.SECURITY.CLASS.CLONE.defect.throw_clone": "clone() 메소드에서 CloneNotSupportedException 예외 처리를 해야합니다.",
  "jfsyn.SECURITY.CLASS.MUTABLE_COPY.defect": "필드 값이 외부에 영향을 받지 않게 하기 위해 복사 생성자를 사용해야 합니다.",
  "jfsyn.SECURITY.CLASS_IN_TRUST_PACKAGE.defect": "신뢰할 수 없는 코드가 사용되었습니다. {0}",
  "jfsyn.SECURITY.COMPARE.CLASS_NAME.defect": "getName()으로 class 이름을 비교하면 안됩니다.",
  "jfsyn.SECURITY.DECLARE.INSTANCE.ORDER.defect": "생성자 내에 필드 멤버의 연산 중입니다. 필드 멤버와 instance 생성의 순서가 올바르지 않습니다.",
  "jfsyn.SECURITY.EXCEPTION_THROWING_CONSTRUCTOR.defect": "생성자 내에서 예외를 생성하지 않도록 합니다.",
  "jfsyn.SECURITY.FILE.GLOBAL_ACCESS.defect": "내부 저장소의 파일에 접근할 경우 MODE_PRIVATE 을 사용해야 합니다.",
  "jfsyn.SECURITY.FILE_AND_FLAG.LOOP.defect": "{0}() 메소드가 반복문 표현식에 사용되면 안됩니다.",
  "jfsyn.SECURITY.IMPLEMENT.EXTERNALIZABLE.defect": "{0}() 메소드는 synchronized 블록 내 if문 안에서 호출 되어야 합니다.",
  "jfsyn.SECURITY.IMPROPER_RESTORATION_ON_FAILURE.defect": "예외를 throw하고 필드에 값을 할당 하면 안됩니다.",
  "jfsyn.SECURITY.INCOMPLETE_STATIC_INITIALIZER.defect": "정적 필드가 불완전하게 초기화 될 수 있습니다.",
  "jfsyn.SECURITY.INFINITE_LOOP.defect": "해당 반복 구문은 잠재적으로 무한 반복의 가능성을 지니고 있습니다.",
  "jfsyn.SECURITY.INFINITE_LOOP.defect.const_condition": "해당 반복 구문은 실행을 반복해도 조건문 검사 결과가 변하지 않아, 무한 반복이 되거나 전혀 실행되지 않을 가능성이 있습니다.",
  "jfsyn.SECURITY.INITIALIZER.THREAD.defect": "정적 initializer에서 스레드의 인스턴스를 만들면 안됩니다.",
  "jfsyn.SECURITY.INNER_CLASS.SERIALIZABLE.defect": "Static 이 아닌 내부 클래스를 직렬화 시도하면 안됩니다.",
  "jfsyn.SECURITY.INTER_CLASS_CYCLE.defect": "필드 변수 초기화시 타 클래스의 필드변수를 사용하면 안됩니다.",
  "jfsyn.SECURITY.LOOP_VARIABLE_FINAL.defect": "for-each 문에서 루프 변수에 final 한정자가 쓰이지 않았습니다.",
  "jfsyn.SECURITY.METHOD.OVERRIDE.CLONEABLE.defect": "오버라이드가 되지 않도록 final 한정자를 사용해야 합니다.",
  "jfsyn.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.defect": "super.getPermision() 를 사용하지 않았습니다.",
  "jfsyn.SECURITY.METHOD.OVERRIDE.STATIC.defect": "public 및 static가 있는 메소드는 static을 제거해야 합니다.",
  "jfsyn.SECURITY.METHOD.OVERRIDE.defect": "SecurityManager형 변수를 사용하면 public final 한정자를 사용해야 합니다.",
  "jfsyn.SECURITY.METHOD.PROTECTED.defect": "하위클래스에서 {0}() 메소드를 오버라이드 했습니다. final 한정자가 필요합니다.",
  "jfsyn.SECURITY.PARTIALLY_INITIALIZED_OBJECT.defect": "초기화되지 않은 필드로 인해 부분적으로 초기화된 객체를 생성할 수 있으니 주의해야 합니다.",
  "jfsyn.SECURITY.PATTERN.METHOD_CHAINING.defect": "run() 메소드에서 method chaining 패턴을 사용하면 안 됩니다.",
  "jfsyn.SECURITY.PATTERN.THREAD_PER_MESSAGE.defect": "Thread per message 패턴에서 thread pool 을 사용해야 합니다.",
  "jfsyn.SECURITY.PUBLISH_BEFORE_INITIALIZATION.defect": "멤버 변수의 초기화가 되기 전에 객체 참조가 될 수 있으니 주의해야 합니다.",
  "jfsyn.SECURITY.RETURN.INPUTSTREAM_READ.defect": "read() 메소드의 반환 값을 정수형 변수로 받고 -1과 비교해야 합니다.",
  "jfsyn.SECURITY.RETURN.INTEGER_DATA.defect": "readInt() 메소드의 반환 값에 '0xFFFFFFFFL' 마스킹이 없습니다.",
  "jfsyn.SECURITY.RETURN.WRAP_OR_DUPLICATE.defect": "{0} 를 반환하면 안됩니다.",
  "jfsyn.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.defect": "{0}는 private transient 이여야 합니다.",
  "jfsyn.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.defect": "{0} 클래스에서 NotSerializableException를 throw 하는 메소드를 구현해야 합니다.",
  "jfsyn.SECURITY.SYNCHRONIZE.ATOMIC_VALUE.defect": "synchronized가 아닌 메서드에서 private 멤버 변수를 반환하고 있습니다. {0}",
  "jfsyn.SECURITY.SYNCHRONIZE.ATOMIC_VALUE.source": "synchronized가 아닌 메서드 내에서 private 멤버 변수를 복합 연산자에 사용했습니다. {0}",
  "jfsyn.SECURITY.SYNCHRONIZE.BACK_COLLECTION.defect": "다른 컬렉션에서 가져온 값으로 초기화된 Set 변수로 Lock을 하면 안됩니다.",
  "jfsyn.SECURITY.SYNCHRONIZE.GET_CLASS.defect": "getClass() 메소드를 lock 객체로 사용하면 안됩니다.",
  "jfsyn.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.defect": "{0} 클래스 객채를 lock 인스턴스로 사용하면 안됩니다.",
  "jfsyn.SECURITY.SYNCHRONIZE.ORDER.defect": "synchronized 블록 내에 동일한 클래스로 또 한 번 lock을 하면 안됩니다.",
  "jfsyn.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.defect": "재사용 가능한 객체를 synchronized의 lock으로 사용하면 안됩니다.",
  "jfsyn.SECURITY.SYNCHRONIZE.STATIC.FIELD.defect": "public 함수내 에선 Static 필드 변수는 synchronized 블록 안에 있어야 합니다.",
  "jfsyn.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.defect": "ThreadLocal의 class에 대해서는 finally block 안에서 재 초기화를 수행해주어야 합니다.",
  "jfsyn.SECURITY.THREAD.SHARED_VARIABLE.defect": "run() 메소드에서 사용된 Thread 간 공유하는 필드 변수는 volatile으로 선언되어야 합니다.",
  "jfsyn.SECURITY.THROW.THREAD_POOL.defect": "ThreadFactory 타입의 인자 없이 스레드 풀이 사용되면 안됩니다.",
  "jfsyn.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.defect": "보안 속성이 설정되지 않은 쿠키가 브라우저에 저장됩니다.",
  "jfsyn.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.sca.desc.default": "Cookie 객체에 setSeure(true)를 호출해 보안 속성을 설정합니다.",
  "jfsyn.SERVER_SIDE_REQUEST_FORGERY.defect.use_localvar": "외부 입력 값 {0} 이(가) 별도의 검증 없이 사용됐습니다.",
  "jfsyn.SERVER_SIDE_REQUEST_FORGERY.defect.use_only_method": "외부 입력 값을 별도의 검증 없이 바로 사용했습니다.",
  "jfsyn.SERVLET_WORK_WITH_COMMITTED_RESPONSE.defect": "응답이 이미 커밋된 서블릿을 대상으로 작업을 수행했습니다.",
  "jfsyn.SERVLET_WORK_WITH_COMMITTED_RESPONSE.source": "응답이 커밋됐습니다.",
  "jfsyn.SET_STATIC_IN_NON_STATIC.defect": "정적 필드가 비정적 메소드에서 설정되었습니다.",
  "jfsyn.SIGNATURE_DECLARE_THROWS_EXCEPTION.defect": "메서드나 생성자에 Exception을 throw했습니다.",
  "jfsyn.SPECIFIC_PATH_BOOLEAN_NAME.defect": "boolean 변수가 변수 명명 규칙을 위반했습니다.",
  "jfsyn.SSI_INJECTION.defect": "위험한 값이 서버 측 인클루드에서 사용되었습니다.",
  "jfsyn.STRING_CONVERSION_WITH_CONSTRUCTOR.defect": "생성자를 사용하여 문자열 변환을 수행하지 않도록 합니다.",
  "jfsyn.SYSTEM_PRINTLN.defect": "System.out.print() 또는 System.err.print() 대신 전용 로거를 사용하시기 바랍니다.",
  "jfsyn.TOO_COMPLEX_FOR_STATEMENT.defect.initialization": "for 구문의 초기화에서는 최대 {0}개의 식만 허용됩니다.",
  "jfsyn.TOO_COMPLEX_FOR_STATEMENT.defect.update": "for 구문의 갱신에서는 최대 {0}개의 식만 허용됩니다.",
  "jfsyn.TOO_LONG_COLUMN.defect": "열 개수가 허용된 최대 열 개수 {0} 을(를) 초과했습니다.",
  "jfsyn.UNCHECKED_OGNL_EXPRESSION.defect.use_localvar": "외부 입력 값 {0} 이(가) 별도의 검증 없이 사용됐습니다.",
  "jfsyn.UNCHECKED_OGNL_EXPRESSION.defect.use_only_method": "외부 입력 값을 별도의 검증 없이 바로 사용했습니다.",
  "jfsyn.UNCHECKED_SPEL_EXPRESSION.SPRING.defect.use_localvar": "외부 입력 값 {0} 이(가) 별도의 검증 없이 사용됐습니다.",
  "jfsyn.UNCHECKED_SPEL_EXPRESSION.SPRING.defect.use_only_method": "외부 입력 값을 별도의 검증 없이 바로 사용했습니다.",
  "jfsyn.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.defect.dup": "이전 `import`문에서 선언된 클래스에 중복되는 `import`문을 선언했습니다.",
  "jfsyn.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.defect.not_used": "코드 내에서 사용되지 않는 `import`문을 선언했습니다.",
  "jfsyn.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.defect.package": "이전에 이미 선언된 패키지에 대하여 `import`문을 선언했습니다.",
  "jfsyn.UNNECESSARY_PARENTHESIS.defect": "불필요한 괄호가 사용되었습니다.",
  "jfsyn.UNNECESSARY_STATEMENT.defect": "메소드 본문에 불필요한 문장이 검출되었습니다.",
  "jfsyn.UNNECESSARY_TO_STRING.defect": "불필요한 toString() 메소드 호출이 사용되었습니다.",
  "jfsyn.UNNOTIFIED_OBJECT.defect": "대기중(waited)인 객체는 동일 클래스 내에서 notify 되어야 합니다.",
  "jfsyn.UNPROCESSED_EXCEPTION_THROW.defect": "비가공된 Exception throw가 검출되었습니다.",
  "jfsyn.UNRELEASED_LOCK.defect": "잠긴(locked) 객체는 동일 메소드 내에서 해제(unlocked)되어야 합니다.",
  "jfsyn.UNSAFE_JACKSON_DESERIALIZATION.defect": "ObjectMapper.enableDefaultTyping() 메소드를 호출시 역직렬화 취약점이 발생할 수 있습니다.",
  "jfsyn.UNSAFE_JACKSON_DESERIALIZATION.defect.use_annotation": "{0} 대신 id.NAME을 사용해야 합니다.",
  "jfsyn.UNSAFE_XSTREAM_DESERIALIZATION.defect": "XStream.fromXML() 메소드를 호출시 역직렬화 취약점이 발생할 수 있습니다.",
  "jfsyn.UNSYNCHRONIZED_ACCESS_TO_SHARED_DATA_MULTITHREAD.defect": "static 변수를 사용하는 멀티 스레드 메서드는 동기화가 필요합니다.",
  "jfsyn.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.defect": "다른 스레드에서 불완전한 상태의 참조를 사용할 수 있습니다.",
  "jfsyn.UNTRUSTED_DATA_IN_PRIVILEGED_BLOCK.defect": "신뢰할 수 없는 데이터가 특권(privileged) 블록에서 사용되었습니다.",
  "jfsyn.UNUSED.LOCAL_VARIABLE.defect": "사용하지 않는 지역 변수가 있습니다.",
  "jfsyn.UNUSED_IMPORT.defect.cur_package": "불필요하게 현재 패키지의 항목이 import 되었습니다.",
  "jfsyn.UNUSED_IMPORT.defect.dup_ondemand": "별표를 이용한 import가 불필요하게 중복되었습니다.",
  "jfsyn.UNUSED_IMPORT.defect.javalang": "불필요하게 java.lang 패키지의 항목이 import 되었습니다.",
  "jfsyn.UNUSED_IMPORT.defect.unused": "import된 항목이 사용되지 않았습니다.",
  "jfsyn.UNUSED_PRIVATE_METHOD.defect": "사용되지 않은 private 메소드가 검출되었습니다.",
  "jfsyn.UNUSED_PRIVATE_VARIABLE.defect": "사용되지 않은 private 변수가 검출되었습니다.",
  "jfsyn.USELESS_OVERRIDING_METHOD.defect": "메서드 이름과 같은 상위 클래스 메서드를 호출했습니다.",
  "jfsyn.USE_ADJACENT_UNARY_OPERATOR.defect": "단항 연산자는 피연산자와 붙여서 작성해야 합니다.",
  "jfsyn.USE_CONCURRENT_HASH_MAP.defect": "ConcurrentHashMap을 사용하지 않았습니다.",
  "jfsyn.USE_EQUALS_TO_COMPARE_STRINGS.defect": "문자열 비교에 비교 연산자가 사용되었습니다.",
  "jfsyn.USE_NOTIFY_ALL_INSTEAD_OF_NOTIFY.defect": "인자가 없는 notify() 를 사용했습니다.",
  "jfsyn.USE_OF_CLASS_LOADER.defect": "EJB 환경에서 직접적인 클래스 로더 사용은 피해야 합니다.",
  "jfsyn.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.defect": "{0}의 {1}번째 파라미터에 하드코딩된 정보가 사용되어 해커가 데이터를 악용할 가능성이 높아집니다.",
  "jfsyn.USE_OF_INNER_CLASS_CONTAINING_SENSITIVE_DATA.defect": "내부클래스에서 외부 클래스의 private 필드에 접근하지 않도록 합니다.",
  "jfsyn.USE_OF_INSUFFICIENT_RANDOM_VALUES.defect": "불충분한 난수값이 사용되었습니다.",
  "jfsyn.USE_OF_INSUFFICIENT_RANDOM_VALUES.sca.desc.set_seed": "java.util.Random 클래스의 seed로 상수를 사용하면 위험하므로 다른 값으로 대체합니다.",
  "jfsyn.USE_OF_INSUFFICIENT_RANDOM_VALUES.sca.desc.use_random_class": "위험한 난수 메소드 대신 java.util.Random 클래스를 사용합니다.",
  "jfsyn.USE_OF_SOCKETS.defect": "EJB 프로그램 내에서는 ServerSocket 사용이 금지됩니다.",
  "jfsyn.USE_OF_SYNCHRONIZATION_PRIMITIVES.defect": "EJB 규격에서 synchronized 메서드를 사용해선 안됩니다. {0}",
  "jfsyn.USE_OF_SYNCHRONIZATION_PRIMITIVES.source": "EJB 규격을 사용 중입니다.",
  "jfsyn.USE_ONE_CASE_PER_LINE.defect": "한 줄에 하나의 case만 사용하도록 합니다.",
  "jfsyn.USE_ONE_DECLARATION_PER_LINE.defect": "한 줄에 하나의 선언만 사용하도록 합니다.",
  "jfsyn.USE_ONE_STATEMENT_PER_LINE.defect": "한 줄에 하나의 구문만 사용하도록 합니다.",
  "jfsyn.USE_SHIFT_OPERATORS_CORRECTLY.defect": "외부 입력 값을 시프트 연산에 이용할 땐 적절한 검증이 필요합니다.",
  "jfsyn.USE_STRICTFP_FOR_DIVISION.defect": "나눗셈을 수행할 경우 메소드나 클래스를 strictfp로 선언하도록 합니다.",
  "jfsyn.USE_SYNCHRONIZED_PUBLIC_METHOD.defect": "필드 값이 메소드 내에서 사용되는 경우 synchronized public 메소드로 선언하도록 합니다.",
  "jfsyn.USE_TAB_BETWEEN_TYPE_AND_IDENTIFIER.defect": "선언 시 타입과 식별자 사이에는 탭을 사용해야 합니다.",
  "jfsyn.USE_UTILITY_CLASS.defect": "유틸 클래스가 아닌 정적 요소만 보유한 클래스가 존재합니다.",
  "jfsyn.USING_DYNAMIC_CLASS_LOADING.defect": "클래스를 동적으로 로딩하지 않도록 합니다.",
  "jfsyn.USING_SYSTEM_EXIT.defect": "System.exit() 메소드를 호출하지 않도록 합니다.",
  "jfsyn.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.defect": "취약한 암호화 알고리즘이 사용되었습니다.",
  "jfsyn.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.sca.desc.default": "취약한 암호화 알고리즘 대신 {0}을 사용합니다.",
  "jfsyn.WEAK_CRYPTOGRAPHIC_HASH_HARDCODED_SALT.defect": "하드코딩된 솔트 값이 암호화를 위해 사용되었습니다.",
  "jfsyn.WEAK_ENCRYPTION_INADEQUATE_RSA_PADDING.defect": "부적절한 RSA 패딩이 설정되었습니다.",
  "jfsyn.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.defect": "{0} 크기를 갖는 키는 {1} 알고리즘에 사용되기에는 충분하지 않습니다. 키의 크기는 {2} 이상이어야 합니다.",
  "jfsyn.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.sca.desc.default": "해당 알고리즘에 사용되는 키의 크기는 적어도 {0} 이상이어야합니다.",
  "jfsyn.WEAK_PASSWORD_REQUIREMENTS.defect": "비밀번호가 검증과정 없이 사용되었습니다.",
  "jfsyn.WEAK_SERVER_CERTIFICATES.defect": "checkServerTrusted() 메소드가 비어있습니다.",
  "jfsyn.WEAK_SERVER_CERTIFICATES.defect.no_throw": "CertificateException을 throw하지 않습니다.",
  "jfsyn.WEAK_XML_TRANSFORMERS_SECURITY.defect": "TransformerFactory 객체를 생성 후 보안 옵션을 설정해야 합니다.",
  "jfsyn.WEAK_XML_TRANSFORMERS_SECURITY.defect.no_attr": "생성된 TransformerFactory 객체에 보안 옵션을 설정해야 합니다.",
  "jfsyn.WEAK_XML_TRANSFORMERS_SECURITY.defect.no_dtd": "TransformerFactory 객체에 XMLConstants.ACCESS_EXTERNAL_DTD 설정이 되지 않았습니다.",
  "jfsyn.WEAK_XML_TRANSFORMERS_SECURITY.defect.no_style": "TransformerFactory 객체에 XMLConstants.ACCESS_EXTERNAL_STYLESHEET 설정이 되지 않았습니다.",
  "jfsyn.WRONG_EXCEPTION_HANDLING_IN_PM.defect": "PM 내부의 try 문장에서 처리되지 않은 POBISException 예외가 발생했습니다.",
  "jfsyn.XML_EXTERNAL_ENTITY_ATTACKS.defect": "유효성 검증 없이 XML 파싱을 수행했습니다.",
  "jfsyn.XSS.JSTL_COUT_ESCAPE_XML_FALSE.defect": "escapeXml 속성이 false로 지정되었습니다.",
  "jfsyn.XSS.WARNING.defect": "위험한 값이 사용되었습니다.",
  "jfsyn.XSS_DOM.defect": "위험한 값이 사용되었습니다.",
  "jschk.ASSIGNMENT_IN_CONDITION.JS.defect": "{0} 문의 조건절에 대입 연산자(`=`)가 사용되었습니다.",
  "jschk.BAD.FSS_FORM_PREFIX_NAMING.TOBE.JS.defect.function": "Form 함수의 이름이 옵션으로 설정된 명명 규칙 접두어로 시작하지 않았습니다.",
  "jschk.BAD.FSS_FORM_PREFIX_NAMING.TOBE.JS.defect.variable": "Form 전역 변수의 이름이 옵션으로 설정된 명명 규칙 접두어로 시작하지 않았습니다.",
  "jschk.BAD.FSS_GLOBAL_PREFIX_NAMING.TOBE.JS.defect.function": "단위 시스템 함수의 이름이 옵션으로 설정된 명명 규칙 접두어로 시작하지 않습니다.",
  "jschk.BAD.FSS_GLOBAL_PREFIX_NAMING.TOBE.JS.defect.variable": "단위 시스템 전역 변수의 이름이 옵션으로 설정된 명명 규칙 접두어로 시작하지 않습니다.",
  "jschk.BAD_CALL.FORBIDDEN.JS.defect": "금지된 함수가 호출되었습니다.",
  "jschk.CODE_INJECTION.JS.defect.sink": "{0}를 사용하면 코드 삽입 공격을 유발할 수 있습니다. 특수문자를 필터링하거나 화이트리스트를 사용해야 합니다.",
  "jschk.COMMON.called.anonymous": "익명 함수가 호출되었습니다.",
  "jschk.COMMON.value.assigned.to.anonymous": "익명 함수에 값이 할당되었습니다.",
  "jschk.COMMON.value.passed.to.anonymous": "익명 함수로 값이 전달되었습니다.",
  "jschk.COMMON.value.returned.from.anonymous": "익명 함수에서 값이 반환되었습니다.",
  "jschk.CROSS_SITE_REQUEST_FORGERY.JS.defect": "Form 데이터가 내부 함수에 의해 전송되었습니다.",
  "jschk.CSRF.NODEJS.JS.defect.cookie": "CSRF 방지 토큰을 사용하지 않아 CSRF 공격이 발생할 수 있습니다.",
  "jschk.CSRF.NODEJS.JS.defect.notuse": "CSRF 방지 토큰을 사용하지 않아 CSRF 공격이 발생할 수 있습니다.",
  "jschk.DATA_STORING.SENSITIVE_INFORMATION.TOBE.JS.defect": "Dataset에 민감한 정보를 저장하고 있습니다.",
  "jschk.DESERIALIZATION_OF_UNTRUSTED_DATA.JS.defect": "보안에 취약한 역 직렬화 메소드를 사용합니다.",
  "jschk.DO_NOT_USE_FINDDOMNODE.REACT.defect": "findDOMNode()를 사용하면 안됩니다.",
  "jschk.DYNAMIC_CODE_MANIPULATION.JS.defect": "$where 오퍼레이터가 사용되었습니다.",
  "jschk.EMPTY_CATCH_BLOCK.JS.defect": "catch 블록이 비어있습니다.",
  "jschk.ERROR_MESSAGE_INFORMATION_LEAK.JS.defect": "서버에서 발생한 오류 정보가 error 객체를 통해 전달되어 중요 정보가 노출될 위험이 있습니다.",
  "jschk.FORBIDDEN.ASSIGNMENT.INNER_HTML.JS.defect": "innerHTML 필드에 값이 할당되어서는 안됩니다.",
  "jschk.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.defect": "대입문이 피연산자 내부에 사용되었습니다.",
  "jschk.FORBIDDEN.BITWISE_OPERATION.JS.defect": "비트 연산자가 사용되었습니다.",
  "jschk.FORBIDDEN.EASY_DATABASE_NAME.JS.defect": "추측하기 쉬운 데이터베이스 이름을 사용했습니다.",
  "jschk.FORBIDDEN.EDIT.NATIVE_OBJECT_PROTOTYPE.JS.defect": "내장 객체가 수정되었습니다.",
  "jschk.FORBIDDEN.EQUAL_COMPARISON.JS.defect.equal": "== 연산자가 사용되었습니다.",
  "jschk.FORBIDDEN.EQUAL_COMPARISON.JS.defect.not_equal": "!= 연산자가 사용되었습니다.",
  "jschk.FORBIDDEN.EVAL_FUNCTION.JS.defect": "eval 함수가 사용되었습니다.",
  "jschk.FORBIDDEN.GLOBAL_VARIABLE.JS.defect": "var선언을 사용하지 않고 전역변수로 선언했습니다.",
  "jschk.FORBIDDEN.INSECURE_RANDOM.JS.defect": "안전하지 않은 의사 난수가 사용되어 위험합니다.",
  "jschk.FORBIDDEN.LOCAL_STORAGE.JS.defect": "localStorage가 사용되었습니다.",
  "jschk.FORBIDDEN.WEAK_ALGORITHM.JS.defect": "{0}를 사용하면 무작위 대입 공격에 취약하게 됩니다.",
  "jschk.FORBIDDEN.WEAK_MIUPDATER.TOBE.JS.defect": "보안에 취약한 MiUpdater가 사용되었습니다.",
  "jschk.FORBIDDEN.WITH_STATEMENT.JS.defect": "with문이 사용되었습니다.",
  "jschk.HTML5.CROSS_DOCUMENT_MESSAGING.JS.defect": "금지된 도메인이 사용되었습니다.",
  "jschk.HTTP.SECURITY_HEADER_SETTINGS.JS.defect": "보안 헤더를 설정하지 않아 여러 취약점에 노출됩니다.",
  "jschk.IMPROPER_SIGNATURE.JS.defect.sign": "JWT에 서명이 포함되지 않았습니다.",
  "jschk.IMPROPER_SIGNATURE.JS.defect.verify": "'none' 알고리즘을 사용하여 JWT의 서명을 확인합니다.",
  "jschk.INAPPROPRIATE_HTTP.HEADERS.JS.defect.header": "X-XSS-Protection 헤더는 최신 브라우저에서 더 이상 사용되지 않으므로 비활성화 해야합니다.",
  "jschk.INAPPROPRIATE_HTTP.HEADERS.JS.defect.sink": "X-Powered-By 헤더는 정보 유출을 일으키는 불필요한 헤더이므로 비활성화해야 합니다.",
  "jschk.INFINITE_RECURSIVE_CALL.JS.defect": "종료 조건이 명확하지 않은 재귀는 프로그램을 비정상적으로 동작시킬 수 있습니다.",
  "jschk.INVALID_OPERAND_TYPE.JS.defect": "잘못된 타입의 피연산자가 사용되었습니다.",
  "jschk.LEFTOVER_DEBUG_CODE.JS.defect": "디버그 코드는 의도하지 않은 정보 노출 문제를 유발하여 제거하는 것이 좋습니다.",
  "jschk.LEFTOVER_DEBUG_CODE.TOBE.JS.defect": "디버깅시에 사용되는 코드가 남아있습니다.",
  "jschk.LIMIT.QUICK_TABS_TEXT_FONT.TOBE.JS.defect": "QuickTabsTextFont 속성에 너무 긴 문자열이 할당되었습니다.",
  "jschk.NEGATIVE_NUMBER_PROPERTY.JS.defect": "음수로 금지된 값에 음수가 입력되었습니다.",
  "jschk.OS_COMMAND_INJECTION.JS.defect.shell": "options 값으로 \"shell: true\"를 사용하여 셸이 생성되기 때문에 운영체제 명령어 삽입 취약점이 생길 수 있습니다.",
  "jschk.OS_COMMAND_INJECTION.JS.defect.sink": "검증되지 않은 값이 운영체제 명령어 삽입을 유발하는 메소드에 사용되어 위험합니다.",
  "jschk.PATH_CONTAMINATION.JS.defect.sink": "경로 조작 위험이 있는 메소드에 외부 입력값이 검증 없이 들어가면 위험합니다.",
  "jschk.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.TOBE.JS.defect": "Global 변수에 에 민감한 정보를 저장하고 있습니다.",
  "jschk.POOR_LOGGING_PRACTICE.JS.defect": "잘못된 로거를 사용했습니다.",
  "jschk.PRIVACY_VIOLATION.JS.defect": "민감한 정보가 쉽게 노출될 수 있는 저장소에 저장되었습니다.",
  "jschk.REDOS.JS.defect": "취약한 정규식을 검사하지 않고 사용했습니다.",
  "jschk.REGISTRY.LEAK.TOBE.JS.defect": "해당 레지스트리 변수가 초기화 되지 않았습니다.",
  "jschk.RESOURCE_INJECTION.JS.defect.sink": "자원 삽입 위헙이 있는 메소드에 외부 입력값이 검증 없이 들어가면 위험합니다.",
  "jschk.SCOPE_FOR_IN_VARIABLE.JS.defect": "For-in 선언문에서 var 선언을 사용하지 않고 변수를 선언했습니다.",
  "jschk.SCRIPT_INJECTION.REACT.defect": "JSON.stringify()의 값을 replacer로 필터링 하지 않았습니다.",
  "jschk.SENSITIVE_COOKIE.FLAG.JS.defect.false": "쿠키의 보안 플래그가 false로 설정되었습니다.",
  "jschk.SENSITIVE_COOKIE.FLAG.JS.defect.httponly": "쿠키의 httpOnly 플래그가 설정되지 않았습니다.",
  "jschk.SENSITIVE_COOKIE.FLAG.JS.defect.notset": "쿠키의 보안 플래그가 설정되지 않았습니다.",
  "jschk.SENSITIVE_COOKIE.FLAG.JS.defect.secure": "쿠키의 secure 플래그가 설정되지 않았습니다.",
  "jschk.SQL_INJECTION_MYSQL.JS.defect.sink": "외부에서 입력받은 값이 바인딩 처리없이 사용되어 위험합니다.",
  "jschk.SQL_INJECTION_NOSQL.JS.defect.sink": "정해진 타입으로 캐스팅하지 않을 경우 위험에 노출될 수 있습니다.",
  "jschk.SQL_INJECTION_NOSQL.JS.defect.where": "화이트리스트 없이 $where 연산자를 사용하면 위험에 노출될 수 있습니다.",
  "jschk.SQL_INJECTION_ORM.JS.defect.sink": "외부에서 입력받은 값이 바인딩 처리없이 사용되어 위험합니다.",
  "jschk.SQL_INJECTION_POSTGRESQL.JS.defect.sink": "외부에서 입력받은 오염된 값이 Escaping query 처리없이 사용되어 위험합니다.",
  "jschk.STRICT_MODE.JS.defect": "strict 모드를 선언하지 않아 개발자가 예상하지 못한 오류나 위험한 메소드가 사용될 수 있습니다.",
  "jschk.STRICT_MODE.JS.defect.inside": "strict 모드를 전역으로 선언하지 않는다면 개발자의 실수로 소스코드를 취약하게 만들 수도 있습니다.",
  "jschk.STRICT_MODE.JS.defect.nottop": "strict 모드는 주석문을 제외한 소스코드의 최상단에 사용하지 않으면 동작하지 않습니다.",
  "jschk.TRANSACTION.GET.TOBE.JS.defect": "Transacition 힘수가 Get방식으로 사용되었습니다",
  "jschk.TRANSACTION.NOT_BINARY.TOBE.JS.defect": "Transaction 함수로 데이터를 바이너리 타입이 아닌 다른 방식으로 전송하고 있습니다.",
  "jschk.TRANSACTION.PLAIN.TOBE.JS.defect": "Transaction 함수로 데이터를 압축하지 않고 전송하고 있습니다.",
  "jschk.TRANSACTION.SYNC.TOBE.JS.defect": "Transaction 함수가 동기방식으로 사용되었습니다",
  "jschk.UNCAUGHT_EXCEPTION.JS.defect": "uncaughtException을 사용했지만 프로그램을 종료하지 않았습니다. exit()를 통해서 프로그램을 종료해야 합니다.",
  "jschk.UNNECESSARY_BLOCK.JS.defect": "불필요한 블록('{}')이 사용되었습니다.",
  "jschk.UNNECESSARY_PARENTHESES.JS.defect": "불필요한 괄호('()')가 사용되었습니다.",
  "jschk.UNREACHABLE_CODE.JS.defect": "실행되지 않은 코드가 발견되었습니다.",
  "jschk.USE.PROPER_VARIABLE_NAME.JS.defect": "변수나 함수명이 잘못된 형식으로 사용되었습니다.",
  "jschk.USE_BRACES.JS.defect": "중괄호('{}')를 사용하지 않았습니다.",
  "jschk.USE_DANGEROUS_INNERHTML.REACT.defect.sink": "dangerouslySetInnerHTML 속성을 필터링 없이 사용하여 XSS공격에 노출될 수 있습니다. 안전한 API를 사용하거나 특수문자를 제거해야 안전합니다.",
  "jschk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.JS.defect": "키 길이가 충분하지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 공격자가 암호화된 데이터를 복호화할 수 있습니다.",
  "jschk.WEAK_HASH.JS.defect.salt": "{0} 함수의 경우 salt값과 함께 사용해야 안전합니다.",
  "jschk.WEAK_HASH.JS.defect.weak": "{0}을 사용하여 해시 데이터를 사용하면 무작위 대입 공격에 취약하게 됩니다. Bcrypt나 PBKDF2등으로 대체하여 사용하는 것이 안전합니다.",
  "jschk.WEAK_PASSWORD.EMPTY_PASSWORD.JS.defect": "빈 암호를 사용했습니다.",
  "jschk.WEAK_PASSWORD.HARDCODED_PASSWORD.JS.defect": "하드코딩된 암호를 사용했습니다.",
  "jschk.WEAK_SERVER_CERTIFICATES.JS.defect": "{0} 함수의 {1}번째 인자에 rejectUnauthorized 옵션이 false로 설정되어 있습니다.",
  "jschk.WEAK_XML_TRANSFORMERS_SECURITY.JS.defect": "libxml에서는 기본적으로 외부 엔터티 파싱 기능이 비활성화 되어 있지만 명시적으로 선언해주는 것이 안전합니다.",
  "jschk.XSS.NODEJS.JS.defect.sink": "외부 입력 값을 필터링하거나 인코딩하지 않고 사용하면 XSS 공격에 취약합니다.",
  "jschk.XSS_FROM_URL.REACT.defect": "href의 값이 올바른 url인지 확인이 필요합니다.",
  "jschk.XSS_VANILLA_JS.JS.defect.sink": "외부에서 입력받은 데이터를 아무 검증 없이 DOM으로 기록하면 XSS 공격에 취약합니다.",
  "jsyn.DIFFERENT_MESSAGE_CODE.defect": "타 업무 메시지 코드 규약을 위반한 문자열이 검출되었습니다.",
  "kotlinchk.ALLOWED_XML_DTD.KOTLIN.defect.explicit": "DTD 선언을 명시적으로 허용하는 설정을 발견했습니다.",
  "kotlinchk.ALLOWED_XML_DTD.KOTLIN.defect.implicit": "DTD 선언을 비활성화하는 설정이 누락되었습니다.",
  "kotlinchk.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.defect.sink": "별도의 보안 옵션 없이 외부 입력 기반 XML 처리 시 XXE 위험이 존재합니다.",
  "kotlinchk.ALWAYS_FAIL_CAST.KOTLIN.defect": "성공할 수 없는 캐스트 연산을 발견했습니다.",
  "kotlinchk.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.defect.sink": "암시적 브로드캐스트를 통해 파일 설명자(ParcelFileDescriptor) 객체를 전송하고 있습니다.",
  "kotlinchk.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.defect.sink": "암시적 브로드캐스트를 통해 민감한 정보를 전송하고 있습니다.",
  "kotlinchk.ANDROID_UNSAFE_HOSTNAME_VERIFICATION.KOTLIN.defect": "HostnameVerifier의 verify 함수가 항상 true 값을 반환합니다.",
  "kotlinchk.BAD_CALL.FORBIDDEN.KOTLIN.defect": "금지된 함수가 호출되었습니다.",
  "kotlinchk.BUFFER_OVERFLOW_UNSAFE_COPY_MEMORY.KOTLIN.defect": "할당된 메모리의 크기가 {0} bytes인 반면, 복사하려는 크기는 {1} bytes이기 때문에 버퍼 오버플로우가 발생합니다.",
  "kotlinchk.CONFUSING_OPERATOR_PRECEDENCE.KOTLIN.defect": "복합 수식에서 서로 다른 우선순위를 가진 연산자가 괄호 없이 사용되었습니다.",
  "kotlinchk.CONSTANT_RANDOM_SEED.KOTLIN.defect": "의사 난수를 생성할 때 고정된 시드가 사용되었습니다.",
  "kotlinchk.DATABASE_CONNECTION_RACE_CONDITION.KOTLIN.defect.companion": "companion object 블록 내부에서 Connection 객체를 생성하고 있습니다.",
  "kotlinchk.DATABASE_CONNECTION_RACE_CONDITION.KOTLIN.defect.object": "object 내부에서 Connection 객체를 생성하고 있습니다.",
  "kotlinchk.DATABASE_CONNECTION_RACE_CONDITION.KOTLIN.defect.top_level": "파일 최상단(Top-Level)에서 Connection 객체를 생성하고 있습니다.",
  "kotlinchk.DATA_LEAK_BETWEEN_SESSIONS.KOTLIN.defect": "val로 선언되지 않은 필드가 사용되었습니다.",
  "kotlinchk.DEAD_LOCK.KOTLIN.defect.block_main": "runBlocking(Dispatchers.Main)은 메인(UI) 스레드의 실행을 차단해 교착 상태가 발생할 수 있습니다.",
  "kotlinchk.DEAD_LOCK.KOTLIN.defect.nested_lock": "synchronized(this) 내부에서 파라미터 락을 중첩 획득하여 교착 상태가 발생할 수 있습니다.",
  "kotlinchk.DESERIALIZATION_OF_UNTRUSTED_DATA.KOTLIN.defect.annotation": "역직렬화할 때 보안에 취약한 어노테이션을 사용합니다.",
  "kotlinchk.DESERIALIZATION_OF_UNTRUSTED_DATA.KOTLIN.defect.method": "역직렬화할 때 보안에 취약한 함수를 사용합니다.",
  "kotlinchk.DESERIALIZATION_OF_UNTRUSTED_DATA.KOTLIN.defect.setting": "역직렬화할 때 보안에 취약한 설정을 사용합니다.",
  "kotlinchk.DIVIDE_BY_ZERO.KOTLIN.defect.unchecked": "나눗셈 연산에서 분모가 0이 아님을 확인하는 검사나 예외 처리가 없습니다.",
  "kotlinchk.DIVIDE_BY_ZERO.KOTLIN.defect.zero": "상수 0을 분모로 하는 나눗셈 연산을 발견했습니다.",
  "kotlinchk.DO_NOT_USE_NOT_NULL_ASSERTION_OPERATOR.KOTLIN.defect": "'!!' 연산자를 사용하면 NullPointerException이 발생할 수 있습니다.",
  "kotlinchk.EMPTY_CATCH_BLOCK.KOTLIN.defect": "catch 블록이 비어있습니다.",
  "kotlinchk.EXPOSURE_OF_SYSTEM_DATA.KOTLIN.defect": "민감한 시스템 데이터가 노출되었습니다.",
  "kotlinchk.FIXED_CONDITION_EXPRESSION.KOTLIN.defect.false": "항상 거짓으로 평가되는 조건식이 사용되었습니다.",
  "kotlinchk.FIXED_CONDITION_EXPRESSION.KOTLIN.defect.true": "항상 참으로 평가되는 조건식이 사용되었습니다.",
  "kotlinchk.HARDCODED_COMPARISON.KOTLIN.defect": "중요 정보로 의심되는 외부 입력값을 하드코딩된 리터럴과 직접 비교하고 있습니다. {0}: {1}",
  "kotlinchk.HARDCODED_PASSWORD.KOTLIN.defect": "{0} 메소드의 {1}번째 인자로 하드코드 된 {2}가 전달되었습니다.",
  "kotlinchk.HARDCODED_SECURITY_INFO.KOTLIN.defect": "중요 정보로 의심되는 데이터가 하드코딩되어 있습니다.",
  "kotlinchk.HARD_CODED.CRYPTOGRAPHIC_KEY.KOTLIN.defect": "{0} 메소드의 {1}번째 인자로 하드코드 된 {2}가 전달되었습니다.",
  "kotlinchk.IGNORE_CAUGHT_EXCEPTION.KOTLIN.defect": "실질적인 예외를 처리하는 로직이 존재하지 않습니다.",
  "kotlinchk.IMPROPER_AUTHORIZATION.KOTLIN.defect": "부적절한 인증이 사용되었습니다.",
  "kotlinchk.IMPROPER_SIGNATURE.KOTLIN.defect": "서명없이 JarFile을 사용합니다.",
  "kotlinchk.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.KOTLIN.defect": "chmod 명령의 인자를 최소화하여 필요 이상의 권한이 부여되지 않도록합니다.",
  "kotlinchk.INTEGER_OVERFLOW.KOTLIN.defect": "적절한 검증 없이 외부 입력을 정수 연산에 사용하고 있습니다.",
  "kotlinchk.INTEGER_OVERFLOW.KOTLIN.defect.not_exact": "정수 타입의 표현 범위가 줄어드는 변환에서 {0}이 아닌 {1}을 사용하고 있습니다.",
  "kotlinchk.INTEGER_OVERFLOW.KOTLIN.defect.sink": "적절한 검증 없이 외부 입력을 정수 연산에 사용하고 있습니다.",
  "kotlinchk.INTEGER_OVERFLOW.KOTLIN.defect.wraparound": "정수 값이 변환 대상 타입 {0}의 표현 범위 밖에 있습니다. {1}",
  "kotlinchk.LEFTOVER_DEBUG_CODE.KOTLIN.defect.code": "디버그 목적으로 작성된 코드가 남아있습니다.",
  "kotlinchk.LEFTOVER_DEBUG_CODE.KOTLIN.defect.method": "디버그 목적의 함수가 남아있습니다.",
  "kotlinchk.LEFTOVER_DEBUG_METHOD.KOTLIN.defect": "디버그 목적의 함수가 남아있습니다.",
  "kotlinchk.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.defect": "중요 기능 함수가 인증 과정 없이 호출되었습니다.",
  "kotlinchk.MISSING_LOGIN_CONTROL.KOTLIN.defect": "로그인 루틴은 반복 구문 등을 통해 수행 횟수가 제어되어야 합니다.",
  "kotlinchk.MISUSE_CONDITION_OPERATOR.KOTLIN.defect.ref": "값 비교가 필요한 상황에서 참조 동일성 연산자(===)가 사용되었습니다.",
  "kotlinchk.MISUSE_CONDITION_OPERATOR.KOTLIN.defect.str": "문자열 리터럴이 in 연산자에 사용되어 원래의 의도와 달리 부분 문자열 검색으로 동작할 수 있습니다.",
  "kotlinchk.OVERLY_BROAD_CATCH.KOTLIN.defect": "광범위한 예외 클래스가 사용됩니다.",
  "kotlinchk.OVERLY_BROAD_THROW.KOTLIN.defect": "광범위한 예외 객체를 던지고 있음을 발견했습니다.",
  "kotlinchk.PASSWORD_IN_COMMENT.KOTLIN.defect.including_password": "주석문 내에서 비밀번호가 기재되었습니다.",
  "kotlinchk.PASSWORD_IN_COMMENT.KOTLIN.defect.over_max_word_length": "길이가 {0}인 주석문 내 단어가 허용된 최대 단어 길이 {1}을(를) 초과합니다.",
  "kotlinchk.PASSWORD_IN_COMMENT.KOTLIN.defect.word_length_fixed": "주석 문 내 고정 길이 {0}을(를) 가지는 단어는 중요 키로 간주됩니다.",
  "kotlinchk.PERSISTENT_COOKIE.KOTLIN.defect": "쿠키의 최대 지속시간이 {0}초로 지정되어 허용 범위인 {1}초를 초과했습니다.",
  "kotlinchk.PREDICTABLE_RANDOM_SEED.KOTLIN.defect.pid": "예측 가능한 프로세스 ID 값을 시드로 사용하고 있습니다.",
  "kotlinchk.PREDICTABLE_RANDOM_SEED.KOTLIN.defect.time": "예측 가능한 시간 값을 시드로 사용하고 있습니다.",
  "kotlinchk.PRIVATE_COLLECTION.KOTLIN.defect.private_array": "private으로 선언된 배열이 public 메소드를 통해 반환됩니다.",
  "kotlinchk.PRIVATE_COLLECTION.KOTLIN.defect.private_collection": "private으로 선언된 컬렉션이 public 메소드를 통해 반환됩니다.",
  "kotlinchk.PRIVATE_COLLECTION.KOTLIN.defect.val_array": "val로 선언된 배열이 getter 메소드를 통해 반환됩니다.",
  "kotlinchk.PRIVATE_COLLECTION.KOTLIN.defect.val_collection": "val로 선언된 컬렉션이 getter 메소드를 통해 반환됩니다.",
  "kotlinchk.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.defect.array": "public 메소드로부터 전달된 데이터가 private으로 선언된 배열에 할당됩니다.",
  "kotlinchk.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.defect.collection": "public 메소드로부터 전달된 데이터가 private으로 선언된 컬렉션에 할당됩니다.",
  "kotlinchk.RESOURCE_LEAK.KOTLIN.defect": "사용한 자원을 적절히 해제하지 않았습니다.",
  "kotlinchk.RETURN_IN_FINALLY.KOTLIN.defect": "finally 블록 내부에 return이 사용되었습니다.",
  "kotlinchk.SECURITY.INFINITE_LOOP.KOTLIN.defect": "해당 반복 구문은 실행을 반복해도 조건문 검사 결과가 변하지 않아, 무한 반복이 될 가능성이 있습니다.",
  "kotlinchk.SECURITY.INFINITE_LOOP.KOTLIN.defect.seq": "generateSequence() 호출에 제한 조건이 없으므로 무한 반복이 발생할 수 있습니다.",
  "kotlinchk.SECURITY.INFINITE_LOOP.KOTLIN.defect.while": "해당 반복 구문은 실행을 반복해도 조건문 검사 결과가 변하지 않으므로 무한 반복이 될 가능성이 있습니다.",
  "kotlinchk.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.defect.sink": "쿠키에 일반 텍스트로 민감한 정보를 저장하고 있습니다.",
  "kotlinchk.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.defect.sink": "파일에 암호화하지 않은 일반 텍스트로 민감한 정보를 저장하고 있습니다.",
  "kotlinchk.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.defect.sink": "레지스트리에 민감한 정보를 암호화하지 않은 일반 텍스트로 저장하고 있습니다.",
  "kotlinchk.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.defect.sink": "외부에서 접근 가능한 경로에 민감한 정보를 평문으로 저장하고 있습니다.",
  "kotlinchk.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.defect.extern_public": "공용 디렉터리 경로를 반환하는 API가 사용되었습니다.",
  "kotlinchk.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.defect.extern_root": "외부 저장소 루트 경로를 반환하는 API가 사용되었습니다.",
  "kotlinchk.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.defect.sink": "외부 저장소에 평문으로 민감한 정보를 저장하고 있습니다.",
  "kotlinchk.STRING_OF_JAVA_WRAPPER.KOTLIN.defect": "Kotlin에서 래퍼 클래스를 문자열로 변환할 때, 불필요한 임시 인스턴스를 생성하고 있음을 발견했습니다.",
  "kotlinchk.TOCTOU_RACE_CONDITION.KOTLIN.defect": "파일 접근 시점에 파일이 존재하지 않을 가능성이 있습니다.",
  "kotlinchk.TRIVIAL_DEAD_CODE.KOTLIN.defect.dead_expr": "실행될 수 없는 코드를 발견했습니다.",
  "kotlinchk.TRIVIAL_DEAD_CODE.KOTLIN.defect.dead_private": "정의된 private 메서드가 프로젝트 내에서 한 번도 호출되지 않습니다.",
  "kotlinchk.UNCHECKED_READ_RESULT.KOTLIN.defect": "{0} 메서드의 반환 값이 어떠한 경로에서도 검사되지 않습니다.",
  "kotlinchk.UNSAFE_SINGLETON.KOTLIN.defect": "싱글톤 인스턴스 생성 과정에 동기화 처리가 누락되었습니다.",
  "kotlinchk.UNUSED_VALUE_IN_VARIABLE.KOTLIN.defect.overwrite": "동일 변수에 연속 할당이 있었지만, 첫 번째 할당 값이 사용되지 않고 덮어씌워집니다.",
  "kotlinchk.UNUSED_VALUE_IN_VARIABLE.KOTLIN.defect.unused": "변수에 값을 할당했지만, 해당 값이 어떤 실행 경로에서도 사용되지 않고 버려집니다.",
  "kotlinchk.USE_OF_INSUFFICIENT_RANDOM_VALUES.KOTLIN.defect": "불충분한 난수값이 사용되었습니다.",
  "kotlinchk.USING_DEPRECATED_API.KOTLIN.defect": "더 이상 사용되지 않는 API가 발견되었습니다.",
  "kotlinchk.USING_HASH_WITHOUT_SALT.KOTLIN.defect.sink": "해시에 예측할 수 없는 안전한 값을 솔트로 사용해야 합니다.",
  "kotlinchk.USING_PREDICTABLE_SALT.KOTLIN.defect": "해시 연산에 전달된 솔트가 예측 가능한 값입니다.",
  "kotlinchk.USING_PREDICTABLE_SALT.KOTLIN.source.const_int": "고정된 정수를 솔트로 사용하고 있습니다.",
  "kotlinchk.USING_PREDICTABLE_SALT.KOTLIN.source.hardcode": "하드코딩된 문자열 값을 솔트로 사용하고 있습니다.",
  "kotlinchk.USING_PREDICTABLE_SALT.KOTLIN.source.time": "예측 가능한 시스템 시간 값을 솔트로 사용하고 있습니다.",
  "kotlinchk.USING_PREDICTABLE_SALT.KOTLIN.source.uuidv3": "동일한 입력으로부터 항상 같은 UUID가 생성되는 UUIDv3를 솔트로 사용하고 있습니다.",
  "kotlinchk.USING_PREDICTABLE_SALT.KOTLIN.source.weak_random": "예측 가능한 난수를 솔트로 사용하고 있습니다.",
  "kotlinchk.WEAK_CERT_TRUST_CHAIN.KOTLIN.defect.empty_check": "인증서 검증 로직이 누락되어 있으므로 모든 인증서를 신뢰하게 됩니다.",
  "kotlinchk.WEAK_CERT_TRUST_CHAIN.KOTLIN.defect.insecure_trust": "InsecureTrustManagerFactory.INSTANCE를 사용하므로 인증서 검증이 비활성화되었습니다.",
  "kotlinchk.WEAK_CERT_TRUST_CHAIN.KOTLIN.defect.trust_all": "TrustAllStrategy.INSTANCE를 사용하므로 모든 인증서를 신뢰하도록 설정되었습니다.",
  "kotlinchk.WEAK_CERT_UNVERIFIED_HOST.KOTLIN.defect.disabled": "호스트 이름 검증을 비활성화하도록 설정되어 있습니다.",
  "kotlinchk.WEAK_CERT_UNVERIFIED_HOST.KOTLIN.defect.trust_all": "모든 호스트 이름을 신뢰하도록 설정되어 있습니다.",
  "kotlinchk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.KOTLIN.defect": "{0} 크기를 갖는 키는 RSA 알고리즘에 사용되기에는 충분하지 않습니다. 키의 크기는 {1} 이상이어야 합니다.",
  "kotlinchk.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.defect.crypt": "취약한 암호화 알고리즘({0})이 사용됩니다.",
  "kotlinchk.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.defect.hash": "취약한 해시 알고리즘({0})이 사용됩니다.",
  "kotlinchk.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.defect.mac": "취약한 MAC 알고리즘({0})이 사용됩니다.",
  "kotlinchk.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.defect.sign": "취약한 서명 알고리즘({0})이 사용됩니다.",
  "kotlinchk.WEAK_HASH_ALGORITHM.KOTLIN.defect": "코드 내에 취약한 해시 함수가 사용되었습니다: {0}",
  "kotlinchk.WEAK_SERVER_CERTIFICATES.KOTLIN.defect.empty": "checkServerTrusted 메소드가 구현되지 않았습니다.",
  "kotlinchk.WEAK_SERVER_CERTIFICATES.KOTLIN.defect.throw": "CertificateException을 throw하지 않았습니다.",
  "leakNoVarFunctionCall.description": "함수 내에서 할당된 메모리를 해제 하지 않습니다.",
  "leakReturnValNotUsed.description": "할당 함수의 리턴값이 저장되지 않습니다.",
  "leakUnsafeArgAlloc.description": "함수 인자내에 다른 함수에서 예외가 발생할경우 메모리 누수가 발생할 수 있습니다. make_shared<> 를 사용하는 것을 추천합니다.",
  "literalWithCharPtrCompare.description": "문자열을 변수와 바로 비교합니다. strcmp 함수를 사용하려는 의도인지 확인해야 합니다.",
  "memleak.description": "메모리 누수가 있습니다.",
  "memleakOnRealloc.description": "realloc 이 실패 했을 때 기존 할당된 메모리의 누수가 일어날 수 있습니다.",
  "mismatchAllocDealloc.description": "알맞은 메모리 해제를 사용해야 합니다.",
  "mismatchSize.description": "할당된 메모리의 크기가 타입의 크기의 배수가 아닙니다.",
  "mismatchingContainers.description": "다른 컨테이너의 반복자들이 같이 사용됩니다.",
  "missingInclude.description": "Include 파일을 찾을 수 없습니다.",
  "multiplySizeof.description": "sizeof()값을 곱해서 다시 sizeof()에 넣었습니다. 이것은 의도하지 않은 결과가 나올 수 있습니다.",
  "nanInArithmeticExpression.description": "Inf/NaN 을 연산에 사용했습니다.",
  "notified_analysis_browser_clipboard_cannot_playing": "분석을 위해 수집 과정에서 재현했던 로그인 기록 파일을 다시 재현하는데 실패했습니다. 로그인을 하지 못한 채 분석이 진행됩니다. 로그인 기록 파일 내용이 변경되었거나 로그인 페이지가 변경되었는지 확인해야 합니다. {0}",
  "notified_analysis_browser_dom_invalid_element_state": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_javascript": "Javascript 실행 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_no_alert_present": "없는 경고창을 처리하려고 시도했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_no_element": "접근하려는 HTML 요소가 존재하지 않습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_no_such_session": "세션이 없습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_no_such_window": "없는 윈도우로 이동을 시도했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_script_timeout": "지연으로 인해 Javascript 실행에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_session_not_created": "브라우저의 세션이 생성되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_socket_timeout": "브라우저와 대상 웹 애플리케이션 사이의 소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_stale_element_reference": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_timeout": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_unable_to_set_cookie": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_unhandled_alert": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_unknown": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_unreachable_browser": "브라우저에 접근이 되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_dom_unsupported_command": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_analysis_browser_language": "브라우저 언어를 {0}로 설정하여 분석을 시작합니다.",
  "notified_analysis_engine_all_out_of_memory": "메모리가 부족하여 분석에 실패했습니다. 메모리를 추가하거나 동시 분석 수를 줄여야 합니다.",
  "notified_analysis_engine_all_paused": "분석을 일시 정지합니다.",
  "notified_analysis_engine_all_resume": "분석을 다시 시작합니다.",
  "notified_analysis_engine_url_start_analyzing": "다음 URL에서의 분석을 시작합니다. {0}",
  "notified_analysis_engine_url_unknown": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_protocol": "HTTP 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_socket": "TCP 연결이 거부되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_socket_timeout": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_ssl_handshake": "SSL 연결이 거부되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_ssl_key": "잘못된 SSL 키입니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_ssl_peer_unverified": "대상이 확인되지 않으므로 SSL 연결을 할 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_ssl_protocol": "SSL 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_unknown": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_unknown_host": "호스트를 알 수 없으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_http_request_unknown_service": "서비스를 알 수 없으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다. {0}",
  "notified_analysis_socket_address_bind": "포트가 사용 중이거나 로컬 주소가 잘못되어 소켓 바인딩에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "notified_analysis_socket_address_connect": "연결이 거부되어 소켓 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "notified_analysis_socket_address_no_route_to_host": "대상에 도달하지 못하여 소켓 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "notified_analysis_socket_address_port_unreachable": "범위를 벗어난 포트로 인해 소켓 생성에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "notified_analysis_socket_address_socket_timeout": "소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "notified_analysis_socket_address_unknown": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다. {0}",
  "notified_crawl_block_disconnected_urls": "다음 URL에 대한 요청이 실패하여 해당 URL을 차단합니다. {0} 요청에 실패하는 원인은 다음과 같습니다. {1}",
  "notified_crawl_browser_clipboard_never_use": "로그인 기록 파일이 한 번도 사용되지 않았습니다. 이로 인해 로그인이 수행되지 않고 수집했을 수 있습니다. 수집 중에 로그인 기록 파일을 생성한 URL에 도달하면 로그인을 수행합니다. 로그인 기록 파일을 생성한 URL과 수집된 URL을 확인해야 합니다.",
  "notified_crawl_browser_dom_invalid_element_state": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_javascript": "Javascript 실행 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_no_alert_present": "없는 경고창의 처리를 시도했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_no_element": "접근하려는 HTML 요소가 존재하지 않습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_no_such_session": "세션이 없습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_no_such_window": "없는 윈도우로 이동을 시도했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_script_timeout": "지연으로 인해 Javascript 실행에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_session_not_created": "브라우저의 세션이 생성되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_socket_timeout": "브라우저와 대상 웹 애플리케이션 사이의 소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다. {0}",
  "notified_crawl_browser_dom_stale_element_reference": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_timeout": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_unable_to_set_cookie": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_unhandled_alert": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_unknown": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_unreachable_browser": "브라우저에 접근할 수 없으므로 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_dom_unsupported_command": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다. {0}",
  "notified_crawl_browser_language": "브라우저 언어를 {0}로 설정하여 수집을 시작합니다.",
  "notified_crawl_browser_url_inaccessible_seed": "브라우저가 프로젝트 URL에 접근할 수 없습니다. 브라우저로 수집을 할 수 없습니다. 서버에서 대상 URL로 접근이 가능한지 확인해야 합니다. {0}",
  "notified_crawl_browser_url_invalid_element_state": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_javascript": "Javascript 실행 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_no_alert_present": "없는 경고창을 처리하려고 시도했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_no_such_session": "세션이 없습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_no_such_window": "없는 윈도우로 이동하려고 시도했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_redirected_seed": "브라우저가 프로젝트 URL에 접근을 시도하니 리다이렉션이 발생했습니다. 리다이렉션된 다음의 URL에서부터 수집을 시작합니다. {0}",
  "notified_crawl_browser_url_script_timeout": "지연으로 인해 Javascript 실행에 실패했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_session_not_created": "브라우저의 세션이 생성되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_stale_element_reference": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_timeout": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_unable_to_set_cookie": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_unhandled_alert": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_unknown": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_unreachable_browser": "브라우저에 접근이 되지 않으므로 브라우저를 재시작합니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_browser_url_unsupported_command": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다. {0}",
  "notified_crawl_engine_all_out_of_memory": "메모리가 부족하여 수집에 실패했습니다. 메모리를 추가하거나 동시 분석 수를 줄여야 합니다.",
  "notified_crawl_engine_all_paused": "수집을 일시 정지합니다.",
  "notified_crawl_engine_all_resume": "수집을 다시 시작합니다.",
  "notified_crawl_engine_url_start_crawling": "다음 URL에서의 수집을 시작합니다. {0}",
  "notified_crawl_engine_url_unknown": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_inaccessible_seed": "HTTP 클라이언트가 프로젝트 URL로 요청을 보낼 수 없습니다. HTTP 클라이언트로 수집을 할 수 없습니다. 서버에서 대상 URL로 접근이 가능한지 확인해야 합니다. {0}",
  "notified_crawl_http_request_protocol": "HTTP 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_socket": "TCP 연결이 거부되었으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_socket_timeout": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_ssl_handshake": "SSL 연결이 거부되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_ssl_key": "잘못된 SSL 키입니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_ssl_peer_unverified": "대상을 확인할 수 없으므로 SSL 연결을 할 수 없습니다. 이로 인해 다음 요청에서 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_ssl_protocol": "SSL 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_unknown": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_unknown_host": "호스트를 알 수 없으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서 수집에 실패했습니다. {0}",
  "notified_crawl_http_request_unknown_service": "서비스를 알 수 없으므로 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다. {0}",
  "notified_entire_browser_all_cannot_execute": "브라우저를 실행할 수 없으므로 브라우저를 통한 수집 및 분석을 수행할 수 없습니다. 다음의 경로에 있는 브라우저 바이너리를 확인해야 합니다. {0}",
  "notified_entire_browser_clipboard_playing_error": "로그인 기록 파일을 재현하던 도중 오류가 발생했습니다. 이로 인해 로그인이 수행되지 않을 수 있습니다. 이벤트 클립보드를 통해 로그인 기록 파일이 정상적으로 재생되는지 확인해야 합니다. {0} {1}",
  "notified_error_analyzer_no_checker": "분석에 사용할 체커가 없습니다. 체커 목록을 확인하세요.",
  "notified_error_analyzer_no_target": "분석할 대상이 없습니다. 수집 결과를 확인하세요.",
  "notified_error_analyzer_out_of_memory": "메모리가 부족하여 분석이 비정상적으로 종료되었습니다. 메모리 사용량을 확인하세요.",
  "notified_error_browser_blacklist": "해당 페이지에서 지속적으로 발생하는 오류를 생략합니다: {0}",
  "notified_error_browser_cannot_execute": "내부 브라우저가 실행되지 않습니다: {0}",
  "notified_error_change_seed_url": "브라우저가 프로젝트 URL에 접근을 시도한 결과 다른 URL로 리다이렉션되었습니다. 리다이렉션된 URL로부터 수집을 시작합니다: {0}",
  "notified_error_clipboard_never_execute": "로그인 기록 파일이 한번도 실행되지 않았습니다. 로그인 기록 파일의 URL과 수집 URL을 확인하세요.",
  "notified_error_crawler_failed_to_save_result": "수집 결과를 저장하는 도중 오류가 발생했습니다.",
  "notified_error_crawler_inaccessible_eb_seed": "브라우저가 수집하려는 URL에 접근할 수 없습니다. 서버에서 프로젝트 URL로 접근할 수 있는지 확인하세요: {0}",
  "notified_error_crawler_inaccessible_hb_seed": "HTTP 클라이언트가 수집하려는 URL에 접근할 수 없습니다. 인증서나 보안 프로그램 문제로 서버와 대상 웹 애플리케이션 사이의 HTTP 통신이 차단되는지 확인하세요: {0}",
  "notified_error_crawler_no_seed": "수집을 시작한 URL이 없습니다. 프로젝트의 URL을 확인하세요.",
  "notified_error_crawler_out_of_memory": "메모리가 부족하여 수집이 비정상적으로 종료되었습니다. 메모리 사용량을 확인하세요.",
  "notified_error_crawler_skipped_eb_seed": "브라우저가 수집하려는 URL이 제외되었습니다. 제외할 수집 URL 옵션을 확인하세요: {0}",
  "notified_error_crawler_skipped_hb_seed": "HTTP 클라이언트가 수집하려는 URL이 제외되었습니다. 제외할 수집 URL 옵션을 확인하세요: {0}",
  "notified_error_http_protocol": "TCP 오류와 같은 기본 프로토콜에 오류가 발생했습니다: {0}",
  "notified_error_http_socket": "HTTP 통신을 위한 소켓 연결이 거부되었습니다. : {0}",
  "notified_error_http_socket_timeout": "HTTP 요청에 대한 응답이 지연되어 받지 못했습니다: {0}",
  "notified_error_http_ssl_handshake": "보안 문제로 SSL 연결을 수행할 수 없습니다: {0}",
  "notified_error_http_ssl_key": "SSL 키가 잘못되어 HTTP 요청을 보낼 수 없습니다: {0}",
  "notified_error_http_ssl_peer_unverified": "인증서 부재, 암호 인증 미지원, SSL 인증 실패 등으로 인해 피어에서 HTTP 요청을 보낼 수 없습니다: {0}",
  "notified_error_http_ssl_protocol": "SSL 프로토콜에 오류가 발생했습니다: {0}",
  "notified_error_http_unknown": "알 수 없는 오류가 발생하여 HTTP 요청을 보낼 수 없습니다. : {0} - {1}",
  "notified_error_http_unknown_host": "HTTP 요청을 보내려는 IP 주소 또는 호스트를 특정할 수 없습니다: {0}",
  "notified_error_http_unknown_service": "알 수 없는 MIME 형식의 HTTP 응답이 왔거나 읽기 전용 URL 연결에 데이터 쓰기를 시도했습니다: {0}",
  "notified_error_over_redirection": "요청 메시지를 리다이렉션하는 횟수가 많으므로 응답을 받지 않았습니다: {0}",
  "notified_error_socket_bind": "포트가 사용 중이거나 로컬 주소가 잘못되어 소켓 바인딩에 실패했습니다: {0}",
  "notified_error_socket_connect": "대상과 연결이 거부되어 소켓을 생성하지 못했습니다: {0}",
  "notified_error_socket_no_route_to_host": "방화벽이나 라우터에서 대상에 도달하지 못하여 소켓을 생성하지 못했습니다: {0}",
  "notified_error_socket_port_unreachable": "범위를 벗어나는 포트로 인해 소켓을 생성하지 못했습니다: {0}",
  "notified_error_socket_timeout": "연결이 지연되어 소켓을 생성하지 못했습니다. {0}",
  "notified_error_socket_unknown": "알 수 없는 오류가 발생하여 소켓을 생성하지 못했습니다. : {0} - {1}",
  "notified_error_webdriver_invalid_element_state": "웹 요소의 상태가 {0} 동작을 수행하기에 적절하지 않습니다. {1}",
  "notified_error_webdriver_javascript": "잘못된 JavaScript 문을 실행하려 했습니다. {0}",
  "notified_error_webdriver_no_alert_present": "처리하려는 경고문이 없습니다.",
  "notified_error_webdriver_no_such_session": "브라우저 세션을 찾을 수 없습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "notified_error_webdriver_no_such_window": "브라우저가 변환하려는 탭 윈도우가 없습니다.",
  "notified_error_webdriver_not_detect_element": "브라우저가 {0} 동작을 수행하기 위해 찾는 웹 요소가 없습니다. : {1}",
  "notified_error_webdriver_script_timeout": "브라우저가 JavaScript 실행 요청에 오랫동안 응답하지 않습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "notified_error_webdriver_session_not_created": "브라우저가 세션을 생성하지 못했습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "notified_error_webdriver_stale_element_reference": "대상 웹 서버의 응답이 지연되어서 웹 요소를 불러오지 못했거나, 다른 이벤트의 수행 결과로 브라우저가 {0} 동작을 수행하려는 웹 요소가 사라졌습니다. {1}",
  "notified_error_webdriver_timeout": "브라우저의 응답이 지연되고 있습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "notified_error_webdriver_unable_to_set_cookie": "브라우저에서 쿠키를 설정하지 못했습니다. {0}",
  "notified_error_webdriver_unhandled_alert": "처리하지 않은 경고창이 있습니다. 확인을 누르면 브라우저가 {0} 동작을 다시 시도합니다.",
  "notified_error_webdriver_unknown": "알 수 없는 오류가 발생했습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다. {2}",
  "notified_error_webdriver_unreachable_browser": "브라우저에 충돌이 발생하여 더이상 브라우저를 다룰 수 없습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "notified_error_webdriver_unsupported_command": "웹 드라이버가 지원하지 않는 명령어를 실행했습니다. {0} 명령어를 가진 브라우저를 재시작합니다. {1} 포트를 사용하는 웹 드라이버를 재시작합니다.",
  "nullPointer.description": "널 포인터 역참조가 있습니다.",
  "nullPointerArithmetic.description": "널 포인터로 수식 계산을 합니다.",
  "nullPointerDefaultArg.description": "인자의 기본값이 사용될 경우 널포인터 역참조가 발생할 수 있습니다.",
  "nullPointerRedundantCheck.description": "널 체크가 중복 되었거나, 널포인터 역참조 가능성이 있습니다.",
  "nw.activate": "기능이 활성화 되었습니다.",
  "nw.activate_0": "{0} 기능이 활성화 되었습니다.",
  "nw.assert": "검사 결과 항목들이 있습니다.",
  "nw.assert_0": "{0}",
  "nw.exception": "예외가 발생했습니다.",
  "nw.exception_0": "{0} 예외가 발생했습니다.",
  "nw.exists": "파일 혹은 경로가 존재하지 않습니다.",
  "nw.exists_0": "파일 혹은 경로가 존재하지 않습니다 : {0}",
  "nw.exists_pt_0_from_1": "{0} 패턴을 만족하는 파일 혹은 경로가 존재하지 않습니다. : {1}",
  "nw.exists_pt_from": "패턴을 만족하는 파일 혹은 경로가 존재하지 않습니다.",
  "nw.filesize_is_gt": "파일 사이즈가 임계값보다 큽니다.",
  "nw.filesize_is_gt_0_1": "다음 파일 사이즈가 임계값 {0} 보다 큽니다. : {1}",
  "nw.filesize_is_zero": "파일 사이즈가 0 입니다.",
  "nw.filesize_is_zero_0": "다음 파일 사이즈가 0 입니다. : {0}",
  "nw.lint_failed": "데이터 파일에 문제가 있습니다.",
  "nw.lint_failed_0": "데이터 파일에 문제가 있습니다. : {0}",
  "nw.module_can_exec_0": "분석 관련 모듈이 실행 가능한 상태가 아닙니다. : {0}",
  "nw.module_exists_0": "분석 관련 모듈이 존재하지 않습니다. : {0}",
  "nw.module_version": "이 분석 모듈은 이슈 상태 관리를 위해 서로 다른 2개 이상의 버전이 각각 실행되었습니다.",
  "nw.module_version_0": "이 분석 모듈의 버전은 {0} 입니다.",
  "nw.msg": "세부 메시지는 다음과 같습니다.",
  "nw.msg_0": "{0}",
  "nw.msg_0_colon_1": "{0} : {1}",
  "nw.notify": "알림 항목들이 있습니다.",
  "nw.notify_0": "{0}",
  "nw.notify_af": "분석에 실패했습니다.",
  "nw.notify_af_0": "분석에 실패했습니다: {0}",
  "nw.notify_af_0_1": "{0} 엔진이 분석에 실패했습니다. (exit code: {1})",
  "nw.sln_append_file": "누락된 파일이나 경로를 추가하거나 올바른 경로에 복사하도록 합니다.",
  "nw.sln_append_file_0": "누락된 {0} 파일이나 경로를 추가하거나 올바른 경로에 복사하도록 합니다.",
  "nw.sln_check_common_module": "엔진에서 사용하는 공용 모듈이 누락되었을 가능성이 있습니다. 이 모듈의 로그에서 문제가 발생한 모듈을 확인하도록 합니다.",
  "nw.sln_check_module_log": "이 모듈의 로그에서 문제가 발생한 상세 원인을 확인합니다.",
  "nw.sln_chmod_0": "{0} 모듈의 권한을 실행 가능하게 조정하도록 합니다.",
  "nw.sln_copy_module_0_1": "누락된 {0} 모듈을 {1} 위치에 복사하도록 합니다.",
  "nw.sln_lint": "설정 파일이 잘못된 경우는 설정 파일에 XML이나 JSON 양식 오류가 없도록 수정합니다. 엔진 출력 결과가 문제이면 개발팀에 문의합니다.",
  "nw.sln_out_of_memory": "메모리가 부족하여 엔진을 실행할 수 없습니다. sparrow.properties의 engine.java.xmx 값을 더 올리도록 합니다.",
  "nw.stacktrace": "스택트레이스는 다음과 같습니다.",
  "nw.stacktrace_0": "스택 트레이스는 다음과 같습니다. {0}",
  "objchk.AVOID_CATCHING_GENERIC_EXCEPTION.OBJC.defect": "너무 일반적인 예외를 catch 하고 있습니다.",
  "objchk.BAD_CALL.API.APPLE.OBJC.defect": "\"dispatch_once\" 함수의 첫 번째 인자는 반드시 static 변수여야 합니다.",
  "objchk.BAD_CALL.API.GETPW.OBJC.defect": "보안에 취약한 함수 getpw를 사용했습니다.",
  "objchk.BAD_CALL.API.GETS.OBJC.defect": "보안에 취약한 함수 gets를 사용했습니다.",
  "objchk.BAD_CALL.API.MKSTEMP.OBJC.defect": "함수의 인자는 반드시 6자 이상의 문자열이어야 합니다.",
  "objchk.BAD_CALL.API.MKTEMP.OBJC.defect": "보안에 취약한 함수 mktemp 를 사용했습니다.",
  "objchk.BAD_CALL.API.RANDOM.OBJC.defect": "보안에 취약한 함수 random를 사용했습니다.",
  "objchk.BAD_CALL.API.SECURE_KEYCHAIN.OBJC.defect": "Secure keychain API의 잘못된 사용 입니다.",
  "objchk.BAD_CALL.API.SECURE_KEYCHAIN.OBJC.defect.free_isnt_allocated": "할당되지 않은 변수를 해제하고 있습니다.",
  "objchk.BAD_CALL.API.SECURE_KEYCHAIN.OBJC.defect.isnt_dealloced": "데이터가 해제되지 않았습니다.",
  "objchk.BAD_CALL.API.STRCPY.OBJC.defect": "보안에 취약한 함수 strcpy를 사용했습니다.",
  "objchk.BAD_CALL.API.UNIX.OBJC.defect": "UNIX/Posix 함수를 잘못 사용했습니다.",
  "objchk.BAD_CALL.API.VFORK.OBJC.defect": "보안 및 이식성에 취약한 함수 vfork를 사용했습니다.",
  "objchk.BAD_CALL.FORBIDDEN.OBJC.defect.function": "금지된 함수가 호출되었습니다.",
  "objchk.BAD_CALL.FORBIDDEN.OBJC.defect.message": "금지된 메세지가 전달되었습니다.",
  "objchk.BAD_CSTRING.SIZE_ARGUMENT.OBJC.defect": "strncat 의 3번째 인자 길이가 버퍼의 길이보다 작습니다.",
  "objchk.BAD_EQUALITY_EXPRESSION.OBJECT.OBJC.defect": "객체를 == 으로 비교하고 있습니다.",
  "objchk.BAD_MALLOC.OBJC.allocated": "메모리가 할당되었습니다.",
  "objchk.BAD_MALLOC.OBJC.defect.free_already_deallocated": "메모리를 해제하기 전 유효성을 검사해야 합니다.",
  "objchk.BAD_MALLOC.OBJC.defect.ref_already_deallocated": "메모리를 해제하기 전 유효성을 검사해야 합니다.",
  "objchk.BAD_MALLOC.OBJC.defect.ret_without_free": "메모리가 적절하게 해제되지 않았습니다.",
  "objchk.BAD_MALLOC.SIZEOF.OBJC.defect": "type에 적절하게 sizeof연산을 수행해야 합니다.",
  "objchk.BAD_MUTEX_LOCK.OBJC.defect": "mutex가 unlock 되지 않았습니다.",
  "objchk.BAD_PASSWORD.EMPTY.OBJC.defect": "빈 암호가 사용되었습니다.",
  "objchk.BAD_PASSWORD.HARDCODED.OBJC.defect": "하드코드된 암호가 사용되었습니다.",
  "objchk.BAD_PRIVILEGE_CONTROL.OBJC.defect": "강제적으로 root 권한 획득을 시도합니다.",
  "objchk.BAD_PRIVILEGE_RELINQUISHMENT.OBJC.defect": "setgid가 setuid 호출 후 호출되었습니다.",
  "objchk.BAD_PRIVILEGE_RESET.OBJC.defect": "chroot 호출 이후 seteuid를 호출하지 않았습니다.",
  "objchk.CALL_AND_MESSAGE.OBJC.defect": "초기화 되지 않은 변수가 있습니다.",
  "objchk.CHECK_PTHREAD_MUTEX_LOCK_RETURN.OBJC.defect": "pthread_mutex_lock 반환값에 대한 처리가 없습니다.",
  "objchk.COCOA.AT_SYNC.OBJC.defect": "@synchronized 지시자에 전달되는 객체가 nil 이 아니어야 합니다.",
  "objchk.COCOA.CLASS_RELEASE.OBJC.defect": "인스턴스가 없는 클래스에 release, retain, autorelease 메시지를 보내면 안됩니다.",
  "objchk.COCOA.SELF_INIT.OBJC.defect": "self 를 초기화하지 않고 반환합니다.",
  "objchk.COOKIE.OVERLY_BROAD_DOMAIN.OBJC.defect": "쿠키의 도메인이 너무 넓게 설정되어 있습니다.",
  "objchk.COOKIE.OVERLY_BROAD_PATH.OBJC.defect": "쿠키의 경로가 너무 넓게 설정되어 있습니다.",
  "objchk.COOKIE.PERSISTENT.OBJC.defect": "쿠키의 만료일이 너무 길게 설정되어 있습니다.",
  "objchk.CORE_FOUNDATION.CF_ERROR.OBJC.defect": "CFErrorRef* 형을 파라미터로 받는 함수는 반드시 반환하는 데이터 타입이 void 형이 아니어야 합니다.",
  "objchk.CORE_FOUNDATION.CF_NUMBER.OBJC.defect": "CFNumberCreate 함수의 두 번째 인자가 가리키는 크기보다 세 번째 인자의 크기가 작습니다.",
  "objchk.CORE_FOUNDATION.CF_RETAIN_RELEASE.OBJC.defect": "CFRetain에 null이 전달됩니다.",
  "objchk.CORE_FOUNDATION.CONTAINER_OUT_OF_BOUNDS.OBJC.defect": "CFArrayGetValueAtIndex에서 버퍼 크기를 벗어나는 접근을 시도하지 마십시오.",
  "objchk.CORE_FOUNDATION.CONTAINER_POINTER_SIZED_VALUES.OBJC.defect": "CFArrayCreate로 배열을 만들 때, 참조하는 배열은 포인터 배열이어야 합니다.",
  "objchk.DESERIALIZATION_OF_UNTRUSTED_DATA.OBJC.defect": "역직렬화시 보안에 취약한 함수를 사용합니다.",
  "objchk.DIVIDE_BY_ZERO.OBJC.defect": "0으로 나누기를 시도했습니다.",
  "objchk.DOUBLE.FORMAT_STRING.OBJC.defect": "format된 문자열을 다시 한번 format 시도합니다.",
  "objchk.DO_NOT_HARDCODE_IPv4_ADDRESS.OBJC.defect": "IPv4 주소가 발견되었습니다.",
  "objchk.DO_NOT_USE_ANONYMOUS_LDAP_BIND.OBJC.defect": "ldap 인증을 익명으로 처리하고 있습니다.",
  "objchk.DO_NOT_USE_DANGEROUS_FUNCTIONS.OBJC.defect": "안전하지 않은 함수 호출입니다.",
  "objchk.DO_NOT_USE_IPv4.SPECIFIC_APIS.OBJC.defect": "IPv4 전용 함수가 사용되었습니다.",
  "objchk.DO_NOT_USE_SYSTEM.OBJC.defect": "시스템 함수가 호출되었습니다.",
  "objchk.EMPTY_CATCH_BLOCK.OBJC.defect": "catch 블록이 비어있습니다.",
  "objchk.ERROR_WITHOUT_ACTION.OBJC.defect": "반환값 검사를 수행해야 합니다.",
  "objchk.FORBIDDEN.FLOAT_LOOP_COUNTER.OBJC.defect": "반복문의 index로 float 자료형을 사용했습니다.",
  "objchk.FORBIDDEN.SMS_SENDING.OBJC.defect": "금지된 SMS 전송이 사용되었습니다.",
  "objchk.HTTP_TRANSPORT.GET.OBJC.defect": "GET 메소드가 HTTP 전송을 위해 사용됩니다.",
  "objchk.HTTP_TRANSPORT.OBJC.defect": "HTTP 전송이 사용되었습니다.",
  "objchk.IMPROPER_RESTRICTION_OF_XML_ENTITY.OBJC.defect": "NSXMLParser 객체의 shouldResolveExternalEntities 값을 YES로 설정했습니다.",
  "objchk.IMPROPER_TYPE_ASSIGN.PROMOTION.OBJC.defect": "더 작은 타입으로 대입을 시도했습니다.",
  "objchk.LEAK.MEMORY.OBJC.allocated": "메모리가 할당되었습니다.",
  "objchk.LEAK.MEMORY.OBJC.defect": "할당한 메모리에서 메모리 누수 가능성이 있습니다.",
  "objchk.LEFTOVER_DEBUG_CODE.OBJC.defect": "디버그 함수가 호출되었습니다.",
  "objchk.MISSING_LOGIN_CONTROL.OBJC.defect": "로그인 입력 횟수가 제한되지 않았습니다.",
  "objchk.NON_NULL_PARAMETER.OBJC.defect": "null 인자가 입력되었습니다.",
  "objchk.NULL_DEREF.OBJC.defect": "NULL 값을 참조했습니다.",
  "objchk.OVERRUN.STATIC.STRCPY.OBJC.defect": "문자열을 처리하는 함수를 사용할 때, 안전하지 않은 함수를 사용하면 안됩니다.",
  "objchk.OVERRUN_STATIC.OBJC.defect.index_out": "배열 크기를 벗어날 가능성이 있습니다.",
  "objchk.OVERRUN_STATIC.OBJC.defect.unchecked": "배열 인덱스를 검사하지 않았습니다.",
  "objchk.PASSWORD_IN_COMMENT.OBJC.defect.including_password": "주석문 내에서 비밀번호가 기재되었습니다.",
  "objchk.PASSWORD_IN_COMMENT.OBJC.defect.max_word_length_fixed": "주석 문 내 고정 길이 {0} 을(를) 가지는 단어는 중요 키로 간주됩니다.",
  "objchk.PASSWORD_IN_COMMENT.OBJC.defect.max_word_length_non_fixed": "길이가 {0} 인 주석문 내 단어가 허용된 최대 단어 길이 {1} 을(를) 초과합니다.",
  "objchk.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.OBJC.defect": "비밀번호를 노출될 수 있는 영역에 저장합니다.",
  "objchk.RESET_SIGNAL_HANDLER.OBJC.defect": "구현마다 다른 시그널 핸들러의 지속성에 대한 세부사항을 이해해야 합니다.",
  "objchk.SECURITY_DECISION_ON_DNS_LOOKUP.OBJC.defect": "DNS 명을 사용하여 네트워크 연결을 시도하거나 사용자 검증을 하지 마십시오. IP 주소를 대신 사용해야 합니다.",
  "objchk.STACK_ADDRESS_ESCAPE.OBJC.defect": "스코프를 벗어나면 접근 할 수 없는 변수를 할당하고 있습니다.",
  "objchk.SYMBOLIC_LINK_RACE_CONDITION.OBJC.defect": "심볼릭 링크의 존재를 확인하는 도중에 경쟁상태(race condition)에 빠지는 것을 피해야 합니다.",
  "objchk.SYSTEM_INFORMATION_LEAK.OBJC.defect": "시스템 정보를 출력했습니다.",
  "objchk.TEMPORARY_FILE_WRITING.OBJC.defect": "데이터가 임시(혹은 공용) 디렉토리에 출력되었습니다.",
  "objchk.TOC_TOU_ACCESS.OBJC.defect": "자원을 사용합니다(Time of Use). 멀티프로세스 환경에서는 TOCTOU 경쟁상태가 발생할 수 있습니다.",
  "objchk.UNCONTROLLED_RECURSION.OBJC.defect": "재귀 함수가 어떠한 조건문이나 반복문 블록 없이 사용되고 있습니다.",
  "objchk.UNDEFINED_BINARY_OPERATOR.OBJC.defect": "변수가 초기화되지 않았습니다.",
  "objchk.UNINITIALIZED.ARRAY_SUBSCRIPT.OBJC.defect": "배열 인덱스 변수가 초기화 되지 않았습니다.",
  "objchk.UNINITIALIZED.ASSIGN.OBJC.defect": "변수가 초기화 되지 않았습니다.",
  "objchk.UNINITIALIZED.BRANCH.OBJC.defect": "조건식 변수가 초기화 되지 않았습니다.",
  "objchk.UNINITIALIZED.UNDEFINED_RETURN.OBJC.defect": "반환하는 값이 초기화 되지 않았습니다.",
  "objchk.UNREASONABLE_PARAMETER.OBJC.defect": "음수 크기를 할당하려고 시도했습니다.",
  "objchk.UNUSED_VARIABLE.OBJC.defect": "변수가 사용되지 않았습니다.",
  "objchk.USE_AFTER_FREE.OBJC.defect": "해제한 메모리를 사용했습니다.",
  "objchk.USE_OF_INSUFFICIENT_RANDOM_VALUES.OBJC.defect": "불충분한 난수값이 사용되었습니다.",
  "objchk.VLA_SIZE.OBJC.defect": "가변 배열의 길이를 정하는 표현식은 반드시 정의된 값이 거나 0 이 아니어야 합니다.",
  "objchk.WEAK_ENCRYPTION.HARDCODED_KEY.OBJC.defect": "하드코드된 암호화 키가 사용되었습니다.",
  "objchk.WEAK_ENCRYPTION.HASH.OBJC.defect": "취약한 해시 함수가 호출되었습니다.",
  "objchk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.OBJC.defect": "암호화 키의 크기는 {0} 이상이어야 합니다.",
  "objchk.WEAK_ENCRYPTION.RISKY_ALGORITHM.OBJC.defect": "위험한 알고리즘이 사용되었습니다.",
  "objchk.WEAK_ENCRYPTION_HASH.EMPTY_PBE_SALT.OBJC.defect": "해시 솔트로 빈 값을 사용했습니다.",
  "objchk.WEAK_ENCRYPTION_HASH.NULL_PBE_SALT.OBJC.defect": "null 솔트가 사용되었습니다.",
  "objchk.WEAK_SERVER_CERTIFICATES.OBJC.defect": "인증서 검증 함수의 {0} 번 인덱스의 인자값을 잘못 설정했습니다. 인증서 검증이 제대로 이루어지려면 이 값은 {1} 이어야 합니다.",
  "objchk.WEAK_SSL_CERTIFICATE.OBJC.defect": "취약한 SSL 인증이 사용되었습니다.",
  "option.ACCESSING_CONSTANT_INDEX_IN_LOOP.desc.trusted_readonly_methods": "객체의 메모리 상태를 변화시키지 않고 객체의 정보를 읽기만 하는 메소드 이름을 입력합니다.\n예시) compareTo",
  "option.ACCESSING_CONSTANT_INDEX_IN_LOOP.title.trusted_readonly_methods": "객체의 메모리 상태를 변화시키지 않는 메소드",
  "option.ACCESS_CONTROL.AZURE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.ACCESS_CONTROL.AZURE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.ACCESS_CONTROL.AZURE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.ACCESS_CONTROL.AZURE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(reg(\".*createQueueService\\\\(\\\\)\\\\.deleteQueue\"))",
  "option.ACCESS_CONTROL.AZURE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"__sparrow_node_js_request__.url\")",
  "option.ACCESS_CONTROL.AZURE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.ACCESS_CONTROL.AZURE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.ACCESS_CONTROL.AZURE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.ACCESS_CONTROL.AZURE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.ACCESS_CONTROL.AZURE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.ACCESS_CONTROL.DATABASE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"encodeURIComponent\")",
  "option.ACCESS_CONTROL.DATABASE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.ACCESS_CONTROL.DATABASE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.ACCESS_CONTROL.DATABASE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of name(\"executeSql\")",
  "option.ACCESS_CONTROL.DATABASE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.ACCESS_CONTROL.DATABASE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.ACCESS_CONTROL.DATABASE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.ACCESS_CONTROL.DATABASE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.ACCESS_CONTROL.DATABASE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.ACCESS_CONTROL.DATABASE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.ACCOUNT_INFO_IN_CODE.JS.desc.exclude_extension": "분석 제외 확장자를 입력합니다.",
  "option.ACCOUNT_INFO_IN_CODE.JS.desc.rule": "검축 규칙을 입력합니다.",
  "option.ACCOUNT_INFO_IN_CODE.JS.desc.target_extension": "분석 대상 확장자를 입력합니다.",
  "option.ACCOUNT_INFO_IN_CODE.JS.title.exclude_extension": "분석 제외 확장자",
  "option.ACCOUNT_INFO_IN_CODE.JS.title.rule": "검출 규칙",
  "option.ACCOUNT_INFO_IN_CODE.JS.title.target_extension": "분석 대상 확장자",
  "option.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"kotlin.text.Regex.replace\")",
  "option.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.ALLOWED_XML_EXTERNAL_ENTITY.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.ALWAYS_DISCARD_RESULT_OF_ASSIGN.desc.check_return": "리턴문에서 대입연산을 사용했을 경우를 검출합니다.",
  "option.ALWAYS_DISCARD_RESULT_OF_ASSIGN.title.check_return": "리턴문 검사",
  "option.ALWAYS_INCLUDE_THROW_IN_CATCH.desc.comment_patterns": "CATCH 블록 내 THROW 문이 없을 때, 그 대신 정규식으로 지정된 특정 주석이 있으면 해당 CATCH 블록을 검출하지 않도록 설정합니다. 주석 규칙을 정규식으로 지정하지 않으면 THROW 문이 없는 모든 CATCH 블록을 검출합니다.",
  "option.ALWAYS_INCLUDE_THROW_IN_CATCH.title.comment_patterns": "검출 제외 주석의 정규식 패턴",
  "option.ANDROID_ADD_JAVASCRIPT_INTERFACE.desc.class_fqn": "WebView 클래스 명을 작성합니다.",
  "option.ANDROID_ADD_JAVASCRIPT_INTERFACE.desc.method_name": "addJavascriptInterface 메소드 명을 작성합니다.",
  "option.ANDROID_ADD_JAVASCRIPT_INTERFACE.title.class_fqn": "WebView 클래스 명",
  "option.ANDROID_ADD_JAVASCRIPT_INTERFACE.title.method_name": "addJavascriptInterface 메소드 명",
  "option.ANDROID_CLASS_LOADING_HIJACKING.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nsink : 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nsource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.ANDROID_CLASS_LOADING_HIJACKING.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.ANDROID_CLASS_LOADING_HIJACKING.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.ANDROID_CLASS_LOADING_HIJACKING.desc.suggestion_filter_function": "수정 예시에서 보여줄 필터 함수를 입력합니다.",
  "option.ANDROID_CLASS_LOADING_HIJACKING.title.alarm": "검출 규칙",
  "option.ANDROID_CLASS_LOADING_HIJACKING.title.exclude": "예외 규칙",
  "option.ANDROID_CLASS_LOADING_HIJACKING.title.propagator": "전파 규칙",
  "option.ANDROID_CLASS_LOADING_HIJACKING.title.suggestion_filter_function": "제안할 필터 함수",
  "option.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함) ",
  "option.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH.title.alarm": "검출 규칙",
  "option.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH.title.exclude": "예외 규칙",
  "option.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH.title.propagator": "전파 규칙",
  "option.ANDROID_CLASS_LOADING_HIJACKING_ABSOLUTE_PATH.title.suggestion_filter_function": "제안할 필터 함수",
  "option.ANDROID_CONTEXT_SEND_BROADCAST.desc.check_only_method_name": "메소드 명만 검사합니다",
  "option.ANDROID_CONTEXT_SEND_BROADCAST.desc.class_fqn": "Broadcast 를 전달 가능한 클래스 명을 입력합니다.",
  "option.ANDROID_CONTEXT_SEND_BROADCAST.desc.method_name": "Broadcast 를 전달 가능한 메소드 명을 입력합니다.",
  "option.ANDROID_CONTEXT_SEND_BROADCAST.title.check_only_method_name": "메소드 명만 검사",
  "option.ANDROID_CONTEXT_SEND_BROADCAST.title.class_fqn": "Broadcast 가능한 클래스 명",
  "option.ANDROID_CONTEXT_SEND_BROADCAST.title.method_name": "sendBroadcast 메소드 명",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"sendBroadcast\")",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수 이름 및 입력 유형을 작성합니다.\n예시) return of fqn(\"android.os.ParcelFileDescriptor.open\")",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.ANDROID_FD_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.ANDROID_GRANT_URI_PERMISSIONS.desc.class_fqn": "Intent 클래스 명을 입력합니다.",
  "option.ANDROID_GRANT_URI_PERMISSIONS.desc.forbidden_flag": "Flag 로 사용해서는 안되는 금지 인자 값을 입력합니다.",
  "option.ANDROID_GRANT_URI_PERMISSIONS.desc.method_name": "addFlags 메소드 명을 입력합니다.",
  "option.ANDROID_GRANT_URI_PERMISSIONS.title.class_fqn": "Intent 클래스 명",
  "option.ANDROID_GRANT_URI_PERMISSIONS.title.forbidden_flag": "금지 인자 값",
  "option.ANDROID_GRANT_URI_PERMISSIONS.title.method_name": "addFlags 메소드 명",
  "option.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.desc.is_activity": "activity 엘리먼트를 검사합니다.",
  "option.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.desc.is_provider": "provider 엘리먼트를 검사합니다.",
  "option.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.desc.is_receiver": "receiver 엘리먼트를 검사합니다.",
  "option.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.desc.is_service": "service 엘리먼트를 검사합니다.",
  "option.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.title.is_activity": "activity 검사",
  "option.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.title.is_provider": "provider 검사",
  "option.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.title.is_receiver": "receiver 검사",
  "option.ANDROID_MANIFEST_AVOID_EXPORTED_ACCESS.title.is_service": "service 검사",
  "option.ANDROID_PERMISSION_CHECK_BYPASS.desc.check_only_method_name": "메소드 이름만 검사",
  "option.ANDROID_PERMISSION_CHECK_BYPASS.desc.method_name": "권한 검사 우회 메소드 리스트",
  "option.ANDROID_PERMISSION_CHECK_BYPASS.title.check_only_method_name": "메소드 이름만 검사",
  "option.ANDROID_PERMISSION_CHECK_BYPASS.title.method_name": "권한 검사 우회 메소드 리스트",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"sendBroadcast\")",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"^(?!.*encrypted).*[pP]assw(or)?d\"))",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.ANDROID_SENSITIVE_TO_IMPLICIT_BROADCAST.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.ANDROID_WEB_SETTING_JAVA_SCRIPT.desc.method_name": "Javascript 를 WebView 클래스에서 허용할 수 있는 메소드 명을 입력합니다.",
  "option.ANDROID_WEB_SETTING_JAVA_SCRIPT.title.method_name": "Javascript 허용 메소드",
  "option.ANDROID_XSS.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.ANDROID_XSS.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.ANDROID_XSS.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.ANDROID_XSS.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.ANDROID_XSS.title.alarm": "검출 규칙",
  "option.ANDROID_XSS.title.exclude": "예외 규칙",
  "option.ANDROID_XSS.title.propagator": "전파 규칙",
  "option.ANDROID_XSS.title.suggestion_filter_function": "제안할 필터 함수",
  "option.ARRAY_ACCESS_ON_POINTER.desc.ignore_parameter": "파라미터로 변수는 분석대상에서 제외합니다.",
  "option.ARRAY_ACCESS_ON_POINTER.title.ignore_parameter": "파라미터 변수를 무시합니다.",
  "option.ASSIGNMENT_IN_OPERAND.desc.excluded_conditions": "검출에서 제외할 조건문을 입력하세요.\n예시) if, else if, switch",
  "option.ASSIGNMENT_IN_OPERAND.desc.excluded_loops": "검출에서 제외할 반복문을 입력하세요.\n예시) do, while, for",
  "option.ASSIGNMENT_IN_OPERAND.desc.forbidden_operators": "입력한 텍스트와 동일한 텍스트를 발견한 경우 이슈를 검출합니다. 하나의 항목만 입력하세요.",
  "option.ASSIGNMENT_IN_OPERAND.desc.whitelist_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.ASSIGNMENT_IN_OPERAND.title.excluded_conditions": "검출 제외 조건문",
  "option.ASSIGNMENT_IN_OPERAND.title.excluded_loops": "검출 제외할 반복문",
  "option.ASSIGNMENT_IN_OPERAND.title.forbidden_operators": "제어문의 조건절에서 검출할 할당식",
  "option.ASSIGNMENT_IN_OPERAND.title.whitelist_patterns": "예외 패턴 목록(화이트리스트)",
  "option.ASYNCHRONOUS_CANCEL_THREADS.desc.pthread_cancel_type": "PTHREAD_CALCEL_TYPE 매크로의 실제 값을 입력합니다.",
  "option.ASYNCHRONOUS_CANCEL_THREADS.title.pthread_cancel_type": "PTHREAD_CALCEL_TYPE 매크로의 실제 값",
  "option.AUTHENTICATION_ATTEMPT_LIMIT.desc.id_regex": "ID 형태의 이름을 가진 변수 식별을 위해 정규식을 작성합니다.",
  "option.AUTHENTICATION_ATTEMPT_LIMIT.desc.pwd_regex": "패스워드 형태의 이름을 가진 변수 식별을 위해 정규식을 작성합니다.",
  "option.AUTHENTICATION_ATTEMPT_LIMIT.title.id_regex": "ID 정규식",
  "option.AUTHENTICATION_ATTEMPT_LIMIT.title.pwd_regex": "패스워드 정규식",
  "option.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS.desc.allow_primitive_type": "옵션을 사용하는 경우, 기본 타입의 암시적 변환을 허용합니다.",
  "option.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS.desc.allow_string_conversion": "옵션을 사용하는 경우, 문자열을 string 객체와 같은 문자열 클래스로의 암시적 변환을 허용합니다.",
  "option.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS.desc.allow_wrapping_class": "옵션을 사용하는 경우, 구조체를 래핑한 클래스의 암시적 변환을 허용합니다. MFC와 같은 몇몇 라이브러리들이 이에 해당됩니다.",
  "option.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS.title.allow_primitive_type": "기본 타입의 암시적 변환 허용",
  "option.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS.title.allow_string_conversion": "문자열의 암시적 변환 허용",
  "option.AVOID_IMPLICIT_CONVERSIONS_OF_ARGUMENTS.title.allow_wrapping_class": "구조체를 래핑한 클래스의 암시적 변환 허용",
  "option.AVOID_MUTABLE_IN_STRUCT.CSHARP.desc.forbidden_type": "금지된 클래스 타입의 이름을 작성합니다.",
  "option.AVOID_MUTABLE_IN_STRUCT.CSHARP.title.forbidden_type": "금지된 클래스 타입",
  "option.AVOID_THROWING_RAW_EXCEPTION_TYPES.exception_list": "예외 목록",
  "option.BAD_ARGS.FORBIDDEN.AFTER_CALL.desc.call_param_should_not_be_name": "반드시 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "option.BAD_ARGS.FORBIDDEN.AFTER_CALL.desc.function_target_begin_call_function": "설정한 함수가 호출되는 이후 분석을 수행합니다.",
  "option.BAD_ARGS.FORBIDDEN.AFTER_CALL.title.call_param_should_not_be_name": "사용하지 말아야 할 인자",
  "option.BAD_ARGS.FORBIDDEN.AFTER_CALL.title.function_target_begin_call_function": "분석을 시작할 특정 함수 호출",
  "option.BAD_BLOCK_COMMENT.desc.check_header": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "option.BAD_BLOCK_COMMENT.desc.end_comment": "주석 종료 문자를 정의합니다.\n예시) */",
  "option.BAD_BLOCK_COMMENT.desc.start_comment": "주석 시작 문자를 정의합니다.\n예시) /*",
  "option.BAD_BLOCK_COMMENT.title.check_header": "헤더 파일 분석 여부",
  "option.BAD_BLOCK_COMMENT.title.end_comment": "블록 종료 문자",
  "option.BAD_BLOCK_COMMENT.title.start_comment": "블록 시작 문자",
  "option.BAD_CALL.FORBIDDEN.JS.desc.forbidden_function": "금지할 함수의 이름을 작성합니다.\n예시) .*forbidden.*",
  "option.BAD_CALL.FORBIDDEN.JS.title.forbidden_function": "금지할 함수",
  "option.BAD_CALL.FORBIDDEN.KOTLIN.desc.forbidden_method": "금지할 함수의 이름을 작성합니다.\n예시) .*forbidden.*",
  "option.BAD_CALL.FORBIDDEN.KOTLIN.title.forbidden_method": "금지할 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.PROCESS.desc.file_target_excluded": "분석 대상에서 제외되는 파일 이름을 설정합니다.복수 설정이 가능하며, 각각의 설정에 일치하는 파일은 분석 대상에서 제외됩니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.PROCESS.desc.file_target_have_include": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.PROCESS.desc.function_should_not_be_used": "만약, 설정에 일치하는 함수 호출이 있으면 결함으로 검출합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.PROCESS.desc.function_target_excluded": "분석 대상에서 제외되는 함수 이름을 설정합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 함수는 분석 대상에서 제외됩니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.PROCESS.title.file_target_excluded": "분석 대상에서 제외되는 파일 이름",
  "option.BAD_CALL.FORBIDDEN.LIB.PROCESS.title.file_target_have_include": "헤더를 포함한 경우만 분석",
  "option.BAD_CALL.FORBIDDEN.LIB.PROCESS.title.function_should_not_be_used": "반드시 사용되지 말아야하는 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.PROCESS.title.function_target_excluded": "제외할 대상 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.RESOURCE.desc.file_target_excluded": "분석 대상에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.RESOURCE.desc.file_target_have_include": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.RESOURCE.desc.function_should_not_be_used": "사용 금지 함수를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.RESOURCE.desc.function_target_excluded": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.RESOURCE.title.file_target_excluded": "분석 대상에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.LIB.RESOURCE.title.file_target_have_include": "헤더를 포함한 경우만 분석",
  "option.BAD_CALL.FORBIDDEN.LIB.RESOURCE.title.function_should_not_be_used": "사용 금지 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.RESOURCE.title.function_target_excluded": "분석 대상에서 제외되는 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.SIGNAL.desc.file_target_excluded": "대상에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.SIGNAL.desc.file_target_have_include": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.SIGNAL.desc.function_should_not_be_used": "사용 금지 함수를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.SIGNAL.desc.function_target_excluded": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.SIGNAL.title.file_target_excluded": "분석 대상에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.LIB.SIGNAL.title.file_target_have_include": "헤더를 포함한 경우만 분석",
  "option.BAD_CALL.FORBIDDEN.LIB.SIGNAL.title.function_should_not_be_used": "사용 금지 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.SIGNAL.title.function_target_excluded": "분석 대상에서 제외되는 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.TEMP.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TEMP.desc.file_target_have_include": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TEMP.desc.function_should_not_be_used": "사용 금지 함수를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TEMP.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TEMP.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.LIB.TEMP.title.file_target_have_include": "헤더를 포함한 경우만 분석",
  "option.BAD_CALL.FORBIDDEN.LIB.TEMP.title.function_should_not_be_used": "사용 금지 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.TEMP.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.TIMER.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TIMER.desc.file_target_have_include": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TIMER.desc.function_should_not_be_used": "사용 금지 함수를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TIMER.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TIMER.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.LIB.TIMER.title.file_target_have_include": "헤더를 포함한 경우만 분석",
  "option.BAD_CALL.FORBIDDEN.LIB.TIMER.title.function_should_not_be_used": "사용 금지 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.TIMER.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.TP.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TP.desc.file_target_have_include": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TP.desc.function_should_not_be_used": "사용 금지 함수를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TP.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.LIB.TP.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.LIB.TP.title.file_target_have_include": "헤더를 포함한 경우만 분석",
  "option.BAD_CALL.FORBIDDEN.LIB.TP.title.function_should_not_be_used": "사용 금지 함수",
  "option.BAD_CALL.FORBIDDEN.LIB.TP.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.BAD_CALL.FORBIDDEN.OBJC.desc.forbidden_function": "금지할 함수 혹은 리시버 이름을 입력합니다.\n예시) .*forbidden.*",
  "option.BAD_CALL.FORBIDDEN.OBJC.title.forbidden_function": "금지할 함수 혹은 리시버",
  "option.BAD_CALL.FORBIDDEN.PARAM.LITERAL.desc.call_param_should_not_be_deciaml": "숫자를 사용하지 말아야 할 호출 파라미터를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.LITERAL.desc.call_param_should_not_be_string": "문자열을 사용하지 말아야 할 호출 파라미터를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.LITERAL.desc.call_target": "검사할 함수 호출을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.LITERAL.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.LITERAL.title.call_param_should_not_be_deciaml": "숫자를 사용하지 말아야 할 호출 파라미터",
  "option.BAD_CALL.FORBIDDEN.PARAM.LITERAL.title.call_param_should_not_be_string": "문자열을 사용하지 말아야 할 호출 파라미터",
  "option.BAD_CALL.FORBIDDEN.PARAM.LITERAL.title.call_target": "검사 대상 함수 호출",
  "option.BAD_CALL.FORBIDDEN.PARAM.LITERAL.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.desc.call_param_should_not_be_name": "반드시 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.desc.function_target": "분석 대상 함수를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.title.call_param_should_not_be_name": "사용하지 말아야 할 인자",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.title.function_target": "분석 대상 함수",
  "option.BAD_CALL.FORBIDDEN.PARAM.NAME.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.BAD_CALL.FORBIDDEN.PARAM.NUMBER.desc.call_param_should_not_be_deciaml": "숫자를 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "option.BAD_CALL.FORBIDDEN.PARAM.NUMBER.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.NUMBER.title.call_param_should_not_be_deciaml": "숫자를 사용하지 말아야 할 인자",
  "option.BAD_CALL.FORBIDDEN.PARAM.NUMBER.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.desc.call_param_should_not_be_string": "문자열을 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.desc.function_target": "분석 대상 함수를 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.title.call_param_should_not_be_string": "문자열을 사용하지 말아야 할 인자",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.title.function_target": "분석 대상 함수",
  "option.BAD_CALL.FORBIDDEN.PARAM.STRING.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.BAD_CALL.FORBIDDEN.PHP.desc.forbidden_function": "금지할 함수 이름을 작성합니다.\n예시) .*forbidden.*",
  "option.BAD_CALL.FORBIDDEN.PHP.title.forbidden_function": "금지할 함수",
  "option.BAD_CALL.FORBIDDEN.PYTHON.desc.forbidden_method": "금지할 함수의 이름을 작성합니다.\n예시) .*forbidden.*",
  "option.BAD_CALL.FORBIDDEN.PYTHON.title.forbidden_method": "금지할 함수",
  "option.BAD_CALL.FORBIDDEN.SWIFT.desc.forbidden_method": "금지할 함수의 이름을 작성합니다.\n예시) .*forbidden.*",
  "option.BAD_CALL.FORBIDDEN.SWIFT.title.forbidden_method": "금지할 함수",
  "option.BAD_CALL.FORBIDDEN.VARARGS.desc.call_param_should_not_be_variable": "특정 변수를 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "option.BAD_CALL.FORBIDDEN.VARARGS.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.VARARGS.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.FORBIDDEN.VARARGS.title.call_param_should_not_be_variable": "파리미터로 사용하지 말아야 할 변수",
  "option.BAD_CALL.FORBIDDEN.VARARGS.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.FORBIDDEN.VARARGS.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.FORBIDDEN.VBNET.desc.forbidden_function": "금지할 함수의 이름을 작성합니다.\n예시) forbidden",
  "option.BAD_CALL.FORBIDDEN.VBNET.title.forbidden_function": "금지할 함수",
  "option.BAD_CALL.FORBIDDEN.VBS.desc.forbidden_function": "금지할 함수의 이름을 작성합니다.\n예시) forbidden",
  "option.BAD_CALL.FORBIDDEN.VBS.title.forbidden_function": "금지할 함수",
  "option.BAD_CALL.FORBIDDEN.desc.forbidden_function": "금지할 함수의 이름을 작성합니다.\n예시) forbidden",
  "option.BAD_CALL.FORBIDDEN.desc.forbidden_method": "금지할 메소드 이름을 FQN으로 입력합니다.\n예시) com.fasoo.Forbidden.forbidden",
  "option.BAD_CALL.FORBIDDEN.title.forbidden_function": "금지할 함수 이름",
  "option.BAD_CALL.FORBIDDEN.title.forbidden_method": "금지할 메소드 이름",
  "option.BAD_CALL.IMPROPER_VARARGS.desc.call_param_should_be_deciaml": "숫자를 사용해야 하는 파라미터 인덱스를 설정합니다.",
  "option.BAD_CALL.IMPROPER_VARARGS.desc.call_param_value_equal_next_param_count": "해당 인덱스에 있는 파라미터의 숫자 만큼 다음 인자가 와야합니다.",
  "option.BAD_CALL.IMPROPER_VARARGS.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.IMPROPER_VARARGS.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.IMPROPER_VARARGS.desc.function_target": "분석 대상 함수를 설정합니다.",
  "option.BAD_CALL.IMPROPER_VARARGS.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.IMPROPER_VARARGS.title.call_param_should_be_deciaml": "숫자를 사용해야 하는 파라미터 인덱스",
  "option.BAD_CALL.IMPROPER_VARARGS.title.call_param_value_equal_next_param_count": "가변 인자 갯수 표현 파라미터 인덱스",
  "option.BAD_CALL.IMPROPER_VARARGS.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.IMPROPER_VARARGS.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.IMPROPER_VARARGS.title.function_target": "분석 대상 함수",
  "option.BAD_CALL.IMPROPER_VARARGS.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.BAD_CALL.INCORRECT_SIZEOF.MEMCPY.desc.call_param_target_in_function": "분석 대상 함수와 파라미터 인덱스를 설정합니다.",
  "option.BAD_CALL.INCORRECT_SIZEOF.MEMCPY.title.call_param_target_in_function": "분석 대상 함수와 파라미터 인덱스",
  "option.BAD_CALL.LIBRARY.MEMORY.desc.file_target_excluded": "분석에서 제외되는 파일을 설정합니다.",
  "option.BAD_CALL.LIBRARY.MEMORY.desc.file_target_have_include": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "option.BAD_CALL.LIBRARY.MEMORY.desc.function_should_not_be_used": "사용 금지 함수를 설정합니다.",
  "option.BAD_CALL.LIBRARY.MEMORY.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.LIBRARY.MEMORY.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.LIBRARY.MEMORY.title.file_target_have_include": "헤더를 포함한 경우만 분석",
  "option.BAD_CALL.LIBRARY.MEMORY.title.function_should_not_be_used": "사용 금지 함수",
  "option.BAD_CALL.LIBRARY.MEMORY.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.call_target_call_param": "함수 호출이어야 하는 파라미터 인덱스를 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.call_target_compare_param": "호출 대상 함수의 비교대상이 되는 파라미터를 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.call_target_param_call": "파라미터로 호출할 함수 이름을 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.call_target_param_compare_mode": "decimal : 상수 숫자.string  : 상수 문자열.variable: 변수",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.call_target_param_compare_param": "파라미터로 호출된 함수에서 비교대상이 되는 파라미터를 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.file_target_excluded": "분석에서 제외되는 파일을 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.function_target": "분석 대상 함수를 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.call_target_call_param": "함수 호출이어야 하는 파라미터 인덱스",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.call_target_compare_param": "호출 대상 함수의 비교대상이 되는 파라미터",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.call_target_param_call": "파라미터로 호출할 함수 이름",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.call_target_param_compare_mode": "비교 모드를 설정합니다.",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.call_target_param_compare_param": "파라미터로 호출된 함수에서 비교대상이 되는 파라미터",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.function_target": "분석 대상 함수",
  "option.BAD_CALL.MISSING_CALL_PARAM.EXTENDED.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.desc.call_param_should_be_name": "반드시 사용해야 될 파라미터 이름과 인덱스를 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.desc.call_target": "검사할 함수 호출을 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.desc.file_target_excluded": "대상에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.desc.function_target": "대상이 되는 함수를 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.desc.function_target_excluded": "대상에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.title.call_param_should_be_name": "반드시 사용해야 될 파라미터 이름과 인덱스",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.title.call_target": "검사 대상 함수 호출",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.title.file_target_excluded": "대상에서 제외되는 파일",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.title.function_target": "대상이 되는 함수",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.NAME.title.function_target_excluded": "대상에서 제외되는 함수",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.desc.call_param_should_be_string": "문자열이 위치해야 할 함수와 파라미터 인덱스를 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.desc.call_target": "검사할 함수 호출을 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.desc.file_target_excluded": "대상에서 제외되는 파일명을 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.desc.function_target": "대상이 되는 함수를 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.desc.function_target_excluded": "대상에서 제외되는 함수명을 설정합니다.",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.title.call_param_should_be_string": "문자열이 위치해야 할 함수와 파라미터 인덱스",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.title.call_target": "검사 대상 함수 호출",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.title.file_target_excluded": "대상에서 제외되는 파일",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.title.function_target": "대상이 되는 함수",
  "option.BAD_CALL.NOT_ALLOWED.PARAM.STRING.title.function_target_excluded": "대상에서 제외되는 함수",
  "option.BAD_CALL.NUMBER_OF_VARARGS_MISMATCH.desc.targets": "대상 함수와 conversion 지시자가 시작되는 인덱스를 적습니다. 인덱스는 0부터 시작합니다. 형태는 <대상함수 이름>,<숫자> 형태여야 합니다.",
  "option.BAD_CALL.NUMBER_OF_VARARGS_MISMATCH.title.targets": "대상 함수",
  "option.BAD_CALL.REQUIRED.AFTER_CALL.desc.sink_func": "대상 함수가 호출되었을 경우 반드시 호출되어야 하는 함수를 적습니다.(함수 범위 내)",
  "option.BAD_CALL.REQUIRED.AFTER_CALL.desc.source_func": "대상 함수를 적습니다.",
  "option.BAD_CALL.REQUIRED.AFTER_CALL.title.sink_func": "필수 호출 함수",
  "option.BAD_CALL.REQUIRED.AFTER_CALL.title.source_func": "대상 함수",
  "option.BAD_CALL.REQUIRED.ARGS.desc.call_param_should_be_name": "반드시 사용해야 될 파라미터 이름과 인덱스를 설정합니다.",
  "option.BAD_CALL.REQUIRED.ARGS.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.REQUIRED.ARGS.desc.file_target_excluded": "분석에서 제외되는 파일을 설정합니다.",
  "option.BAD_CALL.REQUIRED.ARGS.title.call_param_should_be_name": "반드시 사용해야 될 파라미터 이름과 인덱스",
  "option.BAD_CALL.REQUIRED.ARGS.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.REQUIRED.ARGS.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.REQUIRED.LIB_CALL.desc.file_target_excluded": "분석에서 제외되는 파일을 설정합니다.",
  "option.BAD_CALL.REQUIRED.LIB_CALL.desc.function_target": "분석 대상 함수를 설정합니다.",
  "option.BAD_CALL.REQUIRED.LIB_CALL.desc.function_used_set": "반드시 사용해야 될 함수와 함께 사용해야 할 함수를 설정합니다.",
  "option.BAD_CALL.REQUIRED.LIB_CALL.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.REQUIRED.LIB_CALL.title.function_target": "분석 대상 함수",
  "option.BAD_CALL.REQUIRED.LIB_CALL.title.function_used_set": "반드시 사용해야 될 함수와 함께 사용해야 할 함수 설정",
  "option.BAD_CALL.REQUIRED.PARAM.desc.file_target_excluded": "분석에서 제외되는 파일을 설정합니다.",
  "option.BAD_CALL.REQUIRED.PARAM.desc.function_should_not_be_used": "반드시 사용되지 말아야하는 함수를 설정합니다.",
  "option.BAD_CALL.REQUIRED.PARAM.desc.function_target_have_param_type": "분석 대상이 가져야 할 파라미터 타입을 설정합니다.",
  "option.BAD_CALL.REQUIRED.PARAM.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.REQUIRED.PARAM.title.function_should_not_be_used": "반드시 사용되지 말아야하는 함수",
  "option.BAD_CALL.REQUIRED.PARAM.title.function_target_have_param_type": "분석 대상이 가져야할 파라미터 타입",
  "option.BAD_CALL.REQUIRED.VARARGS.desc.call_param_should_be_variable": "반드시 사용해야 하는 변수와 파라미터 인덱스를 설정합니다.",
  "option.BAD_CALL.REQUIRED.VARARGS.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.REQUIRED.VARARGS.desc.file_target_excluded": "분석에서 제외되는 파일을 설정합니다.",
  "option.BAD_CALL.REQUIRED.VARARGS.title.call_param_should_be_variable": "반드시 사용해야 하는 변수와 파라미터 인덱스",
  "option.BAD_CALL.REQUIRED.VARARGS.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.REQUIRED.VARARGS.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.BAD_CALL.REQUIRED.WRAPPER.desc.call_should_be_used_parameter": "반드시 사용해야 할 파라미터 이름과 인덱스를 설정합니다.",
  "option.BAD_CALL.REQUIRED.WRAPPER.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.BAD_CALL.REQUIRED.WRAPPER.title.call_should_be_used_parameter": "반드시 사용해야 할 파라미터 이름과 인덱스",
  "option.BAD_CALL.REQUIRED.WRAPPER.title.call_target": "호출 대상 함수",
  "option.BAD_CALL.REQUIRED.desc.function_should_be_used": "필수 사용 함수를 설정합니다.",
  "option.BAD_CALL.REQUIRED.title.function_should_be_used": "필수 사용 함수",
  "option.BAD_CALL.TYPE_MISMATCH.STRING.desc.str_function": "문자열 관련 함수를 설정합니다.",
  "option.BAD_CALL.TYPE_MISMATCH.STRING.desc.wcs_function": "와이드 문자열 관련 함수를 설정합니다.",
  "option.BAD_CALL.TYPE_MISMATCH.STRING.title.str_function": "문자열 관련 함수",
  "option.BAD_CALL.TYPE_MISMATCH.STRING.title.wcs_function": "와이드 문자열 관련 함수",
  "option.BAD_COMMENT.POSITION.SINGLE.desc.tab_space": "TAB 문자에 해당하는 공백문자의 길이를 설정합니다.",
  "option.BAD_COMMENT.POSITION.SINGLE.title.tab_space": "TAB에 해당하는 공백문자 길이",
  "option.BAD_COMMENT.TYPE.desc.TypeComment": "타입 주석 형식을 정의합니다.",
  "option.BAD_COMMENT.TYPE.title.TypeComment": "타입 주석 형식",
  "option.BAD_COMPOUND_STATEMENT.CURLY_BRACE.desc.tab_space": "TAB 문자에 해당하는 공백문자의 길이를 설정합니다.",
  "option.BAD_COMPOUND_STATEMENT.CURLY_BRACE.title.tab_space": "TAB에 해당하는 공백문자 길이",
  "option.BAD_COOKIE.PATH.PHP.desc.check_function_params": "검사할 함수 명과 파라매터의 위치를 작성합니다.",
  "option.BAD_COOKIE.PATH.PHP.title.check_function_params": "함수 명과 파라매터 위치",
  "option.BAD_CURLY_BRACE_GENERAL.desc.allow_after_open_level_ctrl": "각 종류별로 0은 임의의 코드 허용, 1은 주석과 공백문자 허용, 2는 공백문자만 허용, 3은 즉시 줄바꿈만 허용됩니다.",
  "option.BAD_CURLY_BRACE_GENERAL.desc.allow_after_open_level_decl": "각 종류별로 0은 임의의 코드 허용, 1은 주석과 공백문자 허용, 2는 공백문자만 허용, 3은 즉시 줄바꿈만 허용됩니다.",
  "option.BAD_CURLY_BRACE_GENERAL.desc.allow_close_without_newline_ctrl": "if, else, for, while, do, switch, try, catch, finally, synchronized 를 입력할 수 있습니다.",
  "option.BAD_CURLY_BRACE_GENERAL.desc.allow_close_without_newline_decl": "class, interface, enum, method, static, annotation, array 를 입력할 수 있습니다.",
  "option.BAD_CURLY_BRACE_GENERAL.desc.check_ctrl_exception": "if, else, for, while, do, switch, try, catch, finally, synchronized 를 입력할 수 있습니다.",
  "option.BAD_CURLY_BRACE_GENERAL.desc.check_decl_exception": "class, interface, enum, method, static, annotation, array 를 입력할 수 있습니다.",
  "option.BAD_CURLY_BRACE_GENERAL.desc.new_line_after_ctrl": "if, else, for, while, do, switch, try, catch, finally, synchronized 를 입력할 수 있습니다.",
  "option.BAD_CURLY_BRACE_GENERAL.desc.new_line_after_decl": "class, interface, enum, method, static, annotation, array 를 입력할 수 있습니다.",
  "option.BAD_CURLY_BRACE_GENERAL.title.allow_after_open_level_ctrl": "제어 종류별 중괄호를 연 후 허용되는 문자 수준",
  "option.BAD_CURLY_BRACE_GENERAL.title.allow_after_open_level_decl": "선언 종류별 중괄호를 연 후 허용되는 문자 수준",
  "option.BAD_CURLY_BRACE_GENERAL.title.allow_close_without_newline_ctrl": "중괄호를 닫기 전 줄바꿈을 하지 않아도 되는 제어 종류",
  "option.BAD_CURLY_BRACE_GENERAL.title.allow_close_without_newline_decl": "중괄호를 닫기 전 줄바꿈을 하지 않아도 되는 선언 종류",
  "option.BAD_CURLY_BRACE_GENERAL.title.check_ctrl_exception": "검출하지 않을 제어 종류",
  "option.BAD_CURLY_BRACE_GENERAL.title.check_decl_exception": "검출하지 않을 선언 종류",
  "option.BAD_CURLY_BRACE_GENERAL.title.new_line_after_ctrl": "중괄호를 열기 전 줄바꿈을 강제할 제어 종류",
  "option.BAD_CURLY_BRACE_GENERAL.title.new_line_after_decl": "중괄호를 열기 전 줄바꿈을 강제할 선언 종류",
  "option.BAD_DB_TRANSACTION.desc.commit_function": "commit함수를 설정합니다.",
  "option.BAD_DB_TRANSACTION.desc.rollback_function": "rollback함수를 설정합니다.",
  "option.BAD_DB_TRANSACTION.title.commit_function": "commit함수",
  "option.BAD_DB_TRANSACTION.title.rollback_function": "rollback함수",
  "option.BAD_EQUALITY_EXPRESSION.BOOLEAN.desc.allowed_equality_value": "비교 가능한 값을 적습니다.(정규 표현식)",
  "option.BAD_EQUALITY_EXPRESSION.BOOLEAN.title.allowed_equality_value": "비교 가능한 값",
  "option.BAD_ERROR.INVALID_CODE.desc.call_param_should_be_string": "문자열이 위치해야 할 함수와 파라미터 인덱스를 설정합니다.",
  "option.BAD_ERROR.INVALID_CODE.desc.call_target": "검사할 함수 호출을 설정합니다.",
  "option.BAD_ERROR.INVALID_CODE.desc.file_target_excluded": "대상에서 제외되는 파일명을 설정합니다.",
  "option.BAD_ERROR.INVALID_CODE.desc.function_target": "대상이 되는 함수를 설정합니다.",
  "option.BAD_ERROR.INVALID_CODE.desc.function_target_excluded": "대상에서 제외되는 함수명을 설정합니다.",
  "option.BAD_ERROR.INVALID_CODE.title.call_param_should_be_string": "문자열이 위치해야 할 함수와 파라미터 인덱스",
  "option.BAD_ERROR.INVALID_CODE.title.call_target": "검사 대상 함수 호출",
  "option.BAD_ERROR.INVALID_CODE.title.file_target_excluded": "대상에서 제외되는 파일",
  "option.BAD_ERROR.INVALID_CODE.title.function_target": "대상이 되는 함수",
  "option.BAD_ERROR.INVALID_CODE.title.function_target_excluded": "대상에서 제외되는 함수",
  "option.BAD_ERROR.MISSING_INIT.desc.cond_error": "조건문에서 비교할 에러 값을 설정합니다.",
  "option.BAD_ERROR.MISSING_INIT.desc.init_function": "초기화 할 함수를 설정합니다.",
  "option.BAD_ERROR.MISSING_INIT.desc.return_error": "리턴할 에러 값을 설정합니다.",
  "option.BAD_ERROR.MISSING_INIT.title.cond_error": "조건문에서 비교할 에러 값",
  "option.BAD_ERROR.MISSING_INIT.title.init_function": "초기화 함수",
  "option.BAD_ERROR.MISSING_INIT.title.return_error": "리턴 에러값",
  "option.BAD_ERROR.MISSING_LOGGING.desc.error_expr": "에러 표현식을 설정합니다.",
  "option.BAD_ERROR.MISSING_LOGGING.desc.log_function": "로그 함수를 설정합니다.",
  "option.BAD_ERROR.MISSING_LOGGING.title.error_expr": "에러 표현식",
  "option.BAD_ERROR.MISSING_LOGGING.title.log_function": "로그 함수",
  "option.BAD_ERROR.MISSING_RETURN.desc.call_target": "검사할 함수 호출을 설정합니다.",
  "option.BAD_ERROR.MISSING_RETURN.desc.file_target_excluded": "대상에서 제외되는 파일명을 설정합니다.",
  "option.BAD_ERROR.MISSING_RETURN.desc.function_target": "대상이 되는 함수를 설정합니다.",
  "option.BAD_ERROR.MISSING_RETURN.desc.function_target_excluded": "대상에서 제외되는 함수명을 설정합니다.",
  "option.BAD_ERROR.MISSING_RETURN.title.call_target": "검사 대상 함수 호출",
  "option.BAD_ERROR.MISSING_RETURN.title.file_target_excluded": "대상에서 제외되는 파일",
  "option.BAD_ERROR.MISSING_RETURN.title.function_target": "대상이 되는 함수",
  "option.BAD_ERROR.MISSING_RETURN.title.function_target_excluded": "대상에서 제외되는 함수",
  "option.BAD_EXCEPTIONAL_CONDITION.desc.forbidden_exception": "금지할 예외 클래스의 이름을 FQN으로 작성합니다.\n예시) java.io.IOException",
  "option.BAD_EXCEPTIONAL_CONDITION.desc.required_exception": "포함해야 할 예외 클래스의 이름을 FQN으로 작성합니다.\n예시) java.sql.SQLException",
  "option.BAD_EXCEPTIONAL_CONDITION.title.forbidden_exception": "금지할 예외 클래스 이름",
  "option.BAD_EXCEPTIONAL_CONDITION.title.required_exception": "포함해야 할 예외 클래스 이름",
  "option.BAD_HEADER_FILE.DATA.desc.ignored_path": "검사 대상에서 제외할 경로 이름을 기록합니다.",
  "option.BAD_HEADER_FILE.DATA.title.ignored_path": "검사 대상에서 제외할 경로 이름",
  "option.BAD_HEADER_FILE.DEFINE.desc.ignored_path": "검사 대상에서 제외할 경로 이름을 기록합니다.",
  "option.BAD_HEADER_FILE.DEFINE.title.ignored_path": "검사 대상에서 제외할 경로 이름",
  "option.BAD_INCLUDE.DUPLICATED.desc.file_target_excluded": "제외 대상 파일를 설정합니다.",
  "option.BAD_INCLUDE.DUPLICATED.title.file_target_excluded": "제외 대상 파일",
  "option.BAD_INCLUDE.FORBIDDEN.desc.forbidden_header": "사용 금지 헤더를 설정합니다.",
  "option.BAD_INCLUDE.FORBIDDEN.title.forbidden_header": "사용 금지 헤더",
  "option.BAD_INCLUDE.REQUIRED.desc.check_all_missing_only": "필수 헤더를 포함하지 않은 경우 검사",
  "option.BAD_INCLUDE.REQUIRED.desc.required_header": "필수 헤더를 설정합니다.",
  "option.BAD_INCLUDE.REQUIRED.title.check_all_missing_only": "필수 헤더를 포함하지 않은 경우 검사",
  "option.BAD_INCLUDE.REQUIRED.title.required_header": "필수 헤더",
  "option.BAD_INDENTATION.BLOCK.desc.check_alignment_block": "Block 내 처음 줄의 들여쓰기와 동일한 들여쓰기인지 확인합니다.",
  "option.BAD_INDENTATION.BLOCK.desc.tab_space": "TAB 문자에 해당하는 공백문자의 길이를 설정합니다.",
  "option.BAD_INDENTATION.BLOCK.desc.target_block": "검출 대상 block 목록을 설정합니다. 목록에 없는 block 이름은 제외 됩니다.",
  "option.BAD_INDENTATION.BLOCK.desc.white_space_number": "Block 내 들여쓰기 위치를 설정 합니다.",
  "option.BAD_INDENTATION.BLOCK.title.check_alignment_block": "정렬 여부 확인",
  "option.BAD_INDENTATION.BLOCK.title.tab_space": "TAB에 해당하는 공백문자 길이",
  "option.BAD_INDENTATION.BLOCK.title.target_block": "검출 할 대상 block 목록",
  "option.BAD_INDENTATION.BLOCK.title.white_space_number": "들여쓰기 위치",
  "option.BAD_INDENTATION.CASE_LABELS.desc.blank_line_number": "Case 문과 Case 문과의 공백 줄 개수를 설정합니다.",
  "option.BAD_INDENTATION.CASE_LABELS.desc.indentation_space_number": "Switch 문 내 Case 문의 들여쓰기 위치를 설정합니다.",
  "option.BAD_INDENTATION.CASE_LABELS.title.blank_line_number": "Case 문 간격",
  "option.BAD_INDENTATION.CASE_LABELS.title.indentation_space_number": "들여쓰기 위치",
  "option.BAD_INDENTATION.CLASS.desc.max_implements_num": "한 줄에 선언 할 수 있는 implements class의 개수를 설정합니다.",
  "option.BAD_INDENTATION.CLASS.desc.start_class_column": "Class선언이 들여쓰기 할 column의 위치를 설정합니다.",
  "option.BAD_INDENTATION.CLASS.desc.start_others_column": "Implements 문 혹은 extends 문이 다음 줄에 있을 경우 class 선언 시작과의 간격을 설정합니다.",
  "option.BAD_INDENTATION.CLASS.title.max_implements_num": "Implements class 개수",
  "option.BAD_INDENTATION.CLASS.title.start_class_column": "Class 선언 들여쓰기 위치",
  "option.BAD_INDENTATION.CLASS.title.start_others_column": "Implements or extends 들여쓰기 위치",
  "option.BAD_INDENTATION.COMMENT.desc.check_general_comment": "옵션을 사용하는 경우, 일반 주석에서 들여쓰기를 검사합니다.",
  "option.BAD_INDENTATION.COMMENT.desc.check_header": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "option.BAD_INDENTATION.COMMENT.desc.check_voting_column": "다수의 들여쓰기를 선택하여 숫자가 적은 들여쓰기 그룹을 검출하게 됩니다.",
  "option.BAD_INDENTATION.COMMENT.desc.tab_size": "탭에 해당하는 공백의 개수를 설정합니다.",
  "option.BAD_INDENTATION.COMMENT.title.check_general_comment": "일반 주석 들여쓰기 검사 여부",
  "option.BAD_INDENTATION.COMMENT.title.check_header": "헤더 파일 분석 여부",
  "option.BAD_INDENTATION.COMMENT.title.check_voting_column": "다수 들여쓰기 선택",
  "option.BAD_INDENTATION.COMMENT.title.tab_size": "탭 크기",
  "option.BAD_INDENTATION.FIELD.desc.start_field_column": "Class 선언과 field 선언 간의 간격을 설정합니다.",
  "option.BAD_INDENTATION.FIELD.desc.tab_space": "TAB 문자에 해당하는 공백문자의 길이를 설정합니다.",
  "option.BAD_INDENTATION.FIELD.title.start_field_column": "Field 선언 들여쓰기 위치",
  "option.BAD_INDENTATION.FIELD.title.tab_space": "TAB에 해당하는 공백문자 길이",
  "option.BAD_INDENTATION.IF_STATEMENT.desc.spaces_for_tab": "탭에 해당하는 공백의 개수를 설정합니다.\n예시) 4",
  "option.BAD_INDENTATION.IF_STATEMENT.title.spaces_for_tab": "탭 크기",
  "option.BAD_INDENTATION.IMPROPER_LENGTH.desc.allowed_tab": "탭 사용 여부를 설정합니다.",
  "option.BAD_INDENTATION.IMPROPER_LENGTH.desc.indent_size": "들여쓰기 크기를 입력합니다.",
  "option.BAD_INDENTATION.IMPROPER_LENGTH.desc.tab_number": "코드 시작에 사용할 탭 개수를 설정합니다.",
  "option.BAD_INDENTATION.IMPROPER_LENGTH.title.allowed_tab": "탭 사용 허용",
  "option.BAD_INDENTATION.IMPROPER_LENGTH.title.indent_size": "들여쓰기 크기",
  "option.BAD_INDENTATION.IMPROPER_LENGTH.title.tab_number": "탭 개수",
  "option.BAD_INDENTATION.METHOD.desc.start_method_column": "Class 선언과 method 선언 간의 간격을 설정합니다.",
  "option.BAD_INDENTATION.METHOD.title.start_method_column": "Method 선언 들여쓰기 위치",
  "option.BAD_INDENTATION.PACKAGE.desc.blank_line": "패키지 구문과 파일 주석 사이 간격을 설정합니다.",
  "option.BAD_INDENTATION.PACKAGE.title.blank_line": "패키지 구문과 주석 사이 간격",
  "option.BAD_INI.PERSISTENT_COOKIE.PHP.desc.max_lifetime": "쿠키의 최대 지속 시간을 작성합니다.\n예시) 3600",
  "option.BAD_INI.PERSISTENT_COOKIE.PHP.title.max_lifetime": "최대 쿠키 지속 시간",
  "option.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.desc.exclude_final": "옵션을 사용하는 경우, final로 선언된 필드는 분석에서 제외합니다.",
  "option.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.desc.exclude_static": "옵션을 사용하는 경우, static으로 선언된 필드는 분석에서 제외합니다.",
  "option.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.desc.excluded_variable": "검출에서 제외할 필드 이름을 작성합니다.\n예시) excluded",
  "option.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.desc.target_variable": "선언 직후 초기화가 수행되는 경우를 검출할 대상 필드 이름을 작성합니다.\n예시) field",
  "option.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.title.exclude_final": "final 필드 제외",
  "option.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.title.exclude_static": "static 필드 제외",
  "option.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.title.excluded_variable": "제외할 필드 이름",
  "option.BAD_INIT.INIT_AFTER_FIELD_DECLARATION.title.target_variable": "대상 필드 이름",
  "option.BAD_INIT.MISSING_AFTER_DECLARATION.desc.check_global": "옵션을 사용하는 경우, 전역 변수를 검사합니다.",
  "option.BAD_INIT.MISSING_AFTER_DECLARATION.desc.check_local": "옵션을 사용하는 경우, 지역 변수를 검사합니다.",
  "option.BAD_INIT.MISSING_AFTER_DECLARATION.desc.check_only_ptr": "포인트 초기화 여부만 검사합니다.",
  "option.BAD_INIT.MISSING_AFTER_DECLARATION.desc.ignore_name": "해당 변수는 초기화 여부를 검사하지 않습니다.",
  "option.BAD_INIT.MISSING_AFTER_DECLARATION.title.check_global": "전역 변수 확인 여부",
  "option.BAD_INIT.MISSING_AFTER_DECLARATION.title.check_local": "지역 변수 확인 여부",
  "option.BAD_INIT.MISSING_AFTER_DECLARATION.title.check_only_ptr": "포인트 초기화 여부만 검사",
  "option.BAD_INIT.MISSING_AFTER_DECLARATION.title.ignore_name": "무시할 변수 이름",
  "option.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.desc.excluded_variable": "검출에서 제외할 지역 변수 이름을 작성합니다.\n예시) excluded",
  "option.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.desc.ignored_variable_name": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "option.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.desc.skip_array_check": "array의 초기화 여부를 검사하지 않습니다.",
  "option.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.desc.target_variable": "선언 직후 초기화가 수행되지 않는 경우를 검출할 대상 지역 변수 이름을 작성합니다.\n예시) local",
  "option.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.title.excluded_variable": "제외할 지역 변수 이름",
  "option.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.title.ignored_variable_name": "검사 대상에서 제외할 변수 이름",
  "option.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.title.skip_array_check": "array의 초기화 여부를 검사하지 않습니다.",
  "option.BAD_INIT.MISSING_AFTER_LOCAL_DECLARATION.title.target_variable": "대상 지역 변수 이름",
  "option.BAD_INTEGER_EXPRESSION.desc.ignore_hexadecimal_const": "16진수 상수 무시 여부를 설정합니다.",
  "option.BAD_INTEGER_EXPRESSION.title.ignore_hexadecimal_const": "16진수 상수 무시 여부",
  "option.BAD_INTERFACE.ICLONEABLE.CSHARP.desc.forbidden_interface": "금지된 인터페이스를 작성합니다.\n예시) ICloneable",
  "option.BAD_INTERFACE.ICLONEABLE.CSHARP.title.forbidden_interface": "금지 인터페이스",
  "option.BAD_LINE_WRAPPING.desc.check_alignment": "옵션을 사용하는 경우 줄 바꿈이 대상 줄이 같은 컬럼에 위치하는지 검사합니다",
  "option.BAD_LINE_WRAPPING.desc.check_if_condition_alignment": "옵션을 사용하는 경우, if 문 조건식의 줄바꿈 정렬을 if문의 시작과 비교합니다.",
  "option.BAD_LINE_WRAPPING.desc.tab_space": "TAB에 해당하는 공백문자 길이를 설정합니다.",
  "option.BAD_LINE_WRAPPING.desc.wrap_after_comma": "옵션을 사용하는 경우, 콤마 뒤에 줄 바꿈을 허용합니다.",
  "option.BAD_LINE_WRAPPING.desc.wrap_after_operator": "옵션을 사용하는 경우, 연산자 뒤에 줄 바꿈을 허용합니다.",
  "option.BAD_LINE_WRAPPING.desc.wrap_at_the_top_level": "옵션을 사용하는 경우, 최상위 연산자에서만 줄바꿈을 허용합니다.",
  "option.BAD_LINE_WRAPPING.desc.wrap_before_comma": "옵션을 사용하는 경우, 콤마 앞에 줄 바꿈을 허용합니다.",
  "option.BAD_LINE_WRAPPING.desc.wrap_before_operator": "옵션을 사용하는 경우, 연산자 앞에서 줄 바꿈을 허용합니다.",
  "option.BAD_LINE_WRAPPING.title.check_alignment": "줄바꿈 정렬 검사",
  "option.BAD_LINE_WRAPPING.title.check_if_condition_alignment": "if문 조건식의 줄바꿈 특별 검사",
  "option.BAD_LINE_WRAPPING.title.tab_space": "TAB에 해당하는 공백문자 길이",
  "option.BAD_LINE_WRAPPING.title.wrap_after_comma": "콤마 뒤 줄 바꿈 허용",
  "option.BAD_LINE_WRAPPING.title.wrap_after_operator": "연산자 뒤 줄바꿈 허용",
  "option.BAD_LINE_WRAPPING.title.wrap_at_the_top_level": "최상위 연산자에서만 줄 바꿈 허용",
  "option.BAD_LINE_WRAPPING.title.wrap_before_comma": "콤마 앞 줄 바꿈 허용",
  "option.BAD_LINE_WRAPPING.title.wrap_before_operator": "연산자 앞 줄바꿈 허용",
  "option.BAD_MACRO.DUPLICATED.desc.exclude_macro": "분석에서 제외할 매크로 이름을 입력합니다.",
  "option.BAD_MACRO.DUPLICATED.title.exclude_macro": "분석 제외 매크로",
  "option.BAD_MACRO.MISUSE.desc.macro_used_order": "매크로 사용 순서를 설정합니다.",
  "option.BAD_MACRO.MISUSE.title.macro_used_order": "매크로 사용 순서",
  "option.BAD_MACRO.NAMING.desc.macro_naming_expr": "허용할 매크로 이름의 표현식을 작성합니다.\n예시) [A-Z]+(_[A-Z]+)*",
  "option.BAD_MACRO.NAMING.title.macro_naming_expr": "매크로 이름 표현식",
  "option.BAD_MACRO.TRAILING_SEMICOLON.desc.exclude_macro": "분석에서 제외할 매크로 이름을 입력합니다.",
  "option.BAD_MACRO.TRAILING_SEMICOLON.title.exclude_macro": "분석 제외 매크로",
  "option.BAD_NAME.CLASS.ABAP.desc.name_regex": "명명규칙을 정규표현식으로 적습니다.",
  "option.BAD_NAME.CLASS.ABAP.title.name_regex": "명명규칙",
  "option.BAD_NAME.CLASS_OR_INTERFACE.desc.first_letter_pattern": "클래스 혹은 인터페이스의 첫 글자 규칙을 작성합니다. \n 예시) A-Z",
  "option.BAD_NAME.CLASS_OR_INTERFACE.title.first_letter_pattern": "클래스 혹은 인터페이스의 첫 글자 규칙",
  "option.BAD_NAME.CONSTANT.desc.const_name_expr": "허용할 상수 이름의 표현식을 작성합니다.\n예시) [A-Z][A-Z_]*",
  "option.BAD_NAME.CONSTANT.desc.exclude_param": "옵션을 사용하는 경우, 파라미터로 정의된 상수에 대해서는 이슈를 검출하지 않습니다.",
  "option.BAD_NAME.CONSTANT.desc.name_pattern": "상수 이름의 규칙을 작성합니다. \n 예시) [A-Z].*",
  "option.BAD_NAME.CONSTANT.title.const_name_expr": "상수 이름 표현식",
  "option.BAD_NAME.CONSTANT.title.exclude_param": "파라미터 제외 여부",
  "option.BAD_NAME.CONSTANT.title.name_pattern": "상수 이름 규칙",
  "option.BAD_NAME.DATA.ABAP.desc.name_regex": "명명규칙을 정규표현식으로 적습니다.",
  "option.BAD_NAME.DATA.ABAP.title.name_regex": "명명규칙",
  "option.BAD_NAME.DUPLICATED.desc.check_function": "옵션을 사용하는 경우, 함수 이름의 중복 여부를 확인합니다.",
  "option.BAD_NAME.DUPLICATED.desc.check_macro": "옵션을 사용하는 경우, 소스 전체에서 매크로 이름과 중복 여부를 검사합니다.",
  "option.BAD_NAME.DUPLICATED.desc.check_same_type": "옵션을 사용하는 경우, 동일 유형 간 중복 여부를 검사합니다. 해제하는 경우, 다른 유형 간 중복 여부만 검사합니다.",
  "option.BAD_NAME.DUPLICATED.desc.check_variable": "옵션을 사용하는 경우, 변수 이름의 중복 여부를 확인합니다.",
  "option.BAD_NAME.DUPLICATED.title.check_function": "함수 이름 확인",
  "option.BAD_NAME.DUPLICATED.title.check_macro": "매크로 이름 확인",
  "option.BAD_NAME.DUPLICATED.title.check_same_type": "동일 유형 내 중복 확인",
  "option.BAD_NAME.DUPLICATED.title.check_variable": "변수 이름 확인",
  "option.BAD_NAME.FORM.ABAP.desc.name_regex": "명명규칙을 정규표현식으로 적습니다.",
  "option.BAD_NAME.FORM.ABAP.title.name_regex": "명명규칙",
  "option.BAD_NAME.FUNCTION.ABAP.desc.name_regex": "명명규칙을 정규표현식으로 적습니다.",
  "option.BAD_NAME.FUNCTION.ABAP.title.name_regex": "명명규칙",
  "option.BAD_NAME.GLOBAL_VARIABLE.desc.global_variable_name_expression": "전역 변수 이름 형식을 작성합니다.\n예시) g[A-Za-z]+",
  "option.BAD_NAME.GLOBAL_VARIABLE.desc.ignore_var_list": "제외할 변수 이름을 설정합니다.",
  "option.BAD_NAME.GLOBAL_VARIABLE.title.global_variable_name_expression": "전역 변수 이름",
  "option.BAD_NAME.GLOBAL_VARIABLE.title.ignore_var_list": "제외할 변수 이름",
  "option.BAD_NAME.INTERFACE.ABAP.desc.name_regex": "명명규칙을 정규표현식으로 적습니다.",
  "option.BAD_NAME.INTERFACE.ABAP.title.name_regex": "명명규칙",
  "option.BAD_NAME.LOCAL_VARIABLE.CSHARP.desc.first_letter_pattern": "첫 글자 패턴을 입력합니다.",
  "option.BAD_NAME.LOCAL_VARIABLE.CSHARP.title.first_letter_pattern": "첫 글자 패턴",
  "option.BAD_NAME.METHOD.ABAP.desc.name_regex": "명명규칙을 정규표현식으로 적습니다.",
  "option.BAD_NAME.METHOD.ABAP.title.name_regex": "명명규칙",
  "option.BAD_NAME.METHOD.desc.check_first_word": "옵션을 사용하는 경우, 메소드 이름의 첫 번째 단어를 검사합니다.",
  "option.BAD_NAME.METHOD.desc.check_private_method": "체크시 private 메소드의 이름도 검사합니다.",
  "option.BAD_NAME.METHOD.desc.first_word": "메소드 이름의 맨 앞에 사용할 동사 목록을 작성합니다. \n 예시) do",
  "option.BAD_NAME.METHOD.desc.name_pattern": "메소드 이름의 규칙을 작성합니다. \n 예시) [a-z].*",
  "option.BAD_NAME.METHOD.title.check_first_word": "메소드 이름 첫 단어 검사",
  "option.BAD_NAME.METHOD.title.check_private_method": "private 메소드 검사",
  "option.BAD_NAME.METHOD.title.first_word": "메소드의 첫 단어",
  "option.BAD_NAME.METHOD.title.name_pattern": "메소드 이름 규칙",
  "option.BAD_NAME.NAMESPACE.CSHARP.desc.first_letter_pattern": "첫 글자 패턴을 입력합니다.",
  "option.BAD_NAME.NAMESPACE.CSHARP.title.first_letter_pattern": "첫 글자 패턴",
  "option.BAD_NAME.PACKAGE.desc.1st_level": "패키지의 첫번째 레벨에 사용할 이름 목록을 작성합니다.",
  "option.BAD_NAME.PACKAGE.desc.2nd_level": "패키지의 두번째 레벨에 사용할 이름 목록을 작성합니다.",
  "option.BAD_NAME.PACKAGE.desc.3rd_level": "패키지의 세번째 레벨에 사용할 이름 목록을 작성합니다.",
  "option.BAD_NAME.PACKAGE.desc.4th_level": "패키지의 네번째 레벨에 사용할 이름 목록을 작성합니다.",
  "option.BAD_NAME.PACKAGE.desc.check_1st_level": "옵션을 사용하는 경우, 패키지의 첫 번째 레벨 이름을 검사합니다.",
  "option.BAD_NAME.PACKAGE.desc.check_2nd_level": "옵션을 사용하는 경우, 패키지의 두 번째 레벨 이름을 검사합니다.",
  "option.BAD_NAME.PACKAGE.desc.check_3rd_level": "옵션을 사용하는 경우 패키지의 세 번째 레벨 이름을 검사합니다.",
  "option.BAD_NAME.PACKAGE.desc.check_4th_level": "옵션을 사용하는 경우, 패키지의 네 번째 레벨 이름을 검사합니다.",
  "option.BAD_NAME.PACKAGE.title.1st_level": "패키지의 첫번째 레벨 단어",
  "option.BAD_NAME.PACKAGE.title.2nd_level": "패키지의 두번째 레벨 단어",
  "option.BAD_NAME.PACKAGE.title.3rd_level": "패키지의 세번째 레벨 단어",
  "option.BAD_NAME.PACKAGE.title.4th_level": "패키지의 네번째 레벨 단어",
  "option.BAD_NAME.PACKAGE.title.check_1st_level": "패키지 첫 번째 레벨 이름 검사",
  "option.BAD_NAME.PACKAGE.title.check_2nd_level": "패키지 두 번째 레벨 이름 검사",
  "option.BAD_NAME.PACKAGE.title.check_3rd_level": "패키지 세 번째 레벨 이름 검사",
  "option.BAD_NAME.PACKAGE.title.check_4th_level": "패키지 네 번째 레벨 이름 검사",
  "option.BAD_NAME.PARAMETER.CSHARP.desc.first_letter_pattern": "첫 글자 패턴을 입력합니다.",
  "option.BAD_NAME.PARAMETER.CSHARP.title.first_letter_pattern": "첫 글자 패턴",
  "option.BAD_NAME.PARAMETER.desc.parameter_prefix": "파라미터 이름의 접두사로 사용될 패턴을 작성합니다.\n예시) p",
  "option.BAD_NAME.PARAMETER.title.parameter_prefix": "파라미터 접두사",
  "option.BAD_NAME.POINTER_VARIABLE.desc.check_param": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_NAME.POINTER_VARIABLE.desc.ignore_name": "검사에서 제외할 변수 이름을 설정합니다.",
  "option.BAD_NAME.POINTER_VARIABLE.desc.ignore_type": "검사에서 제외할 타입을 설정합니다.(typedef 로 지정된 이름에 한합니다.)",
  "option.BAD_NAME.POINTER_VARIABLE.desc.pointer_variable_name_expression": "포인터 변수 이름 형식을 작성합니다.\n예시) p_[A-Za-z]+",
  "option.BAD_NAME.POINTER_VARIABLE.title.check_param": "파라미터 검사 여부",
  "option.BAD_NAME.POINTER_VARIABLE.title.ignore_name": "검사에서 제외할 변수 이름",
  "option.BAD_NAME.POINTER_VARIABLE.title.ignore_type": "검사에서 제외할 타입",
  "option.BAD_NAME.POINTER_VARIABLE.title.pointer_variable_name_expression": "포인터 변수 이름",
  "option.BAD_NAME.PROGRAM.ABAP.desc.name_regex": "명명규칙을 정규표현식으로 적습니다.",
  "option.BAD_NAME.PROGRAM.ABAP.title.name_regex": "명명규칙",
  "option.BAD_NAME.REPORT.ABAP.desc.name_regex": "명명규칙을 정규표현식으로 적습니다.",
  "option.BAD_NAME.REPORT.ABAP.title.name_regex": "명명규칙",
  "option.BAD_NAME.SPECIAL_CHARACTER.desc.allowed_special_char": "이름 내 허용할 특수 문자를 작성합니다.\n예시) _",
  "option.BAD_NAME.SPECIAL_CHARACTER.title.allowed_special_char": "허용할 특수 문자",
  "option.BAD_NAME.TOO_LONG.desc.max_class_name_length": "허용할 클래스 이름의 최대 길이를 입력합니다.\n예시) 20",
  "option.BAD_NAME.TOO_LONG.desc.max_field_name_length": "허용할 필드 이름의 최대 길이를 작성합니다.\n예시) 20",
  "option.BAD_NAME.TOO_LONG.desc.max_func_name_length": "허용할 함수 이름의 최대 길이를 작성합니다.\n예시) 20",
  "option.BAD_NAME.TOO_LONG.desc.max_method_name_length": "허용할 메소드 이름의 최대 길이를 입력합니다.\n예시) 20",
  "option.BAD_NAME.TOO_LONG.desc.max_var_name_length": "허용할 변수 이름의 최대 길이를 작성합니다.\n예시) 20",
  "option.BAD_NAME.TOO_LONG.title.max_class_name_length": "클래스 이름의 최대 길이",
  "option.BAD_NAME.TOO_LONG.title.max_field_name_length": "최대 필드 이름 길이",
  "option.BAD_NAME.TOO_LONG.title.max_func_name_length": "최대 함수 이름 길이",
  "option.BAD_NAME.TOO_LONG.title.max_method_name_length": "메소드 이름의 최대 길이",
  "option.BAD_NAME.TOO_LONG.title.max_var_name_length": "최대 변수 이름 길이",
  "option.BAD_NAME.VARIABLE.desc.name_rule_1": "첫 번째 값으로는  패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다.  \n 예시) !final field (final이 아닌 모든 필드 변수), [a-z].* (첫번째 글자가 소문자인 이름)",
  "option.BAD_NAME.VARIABLE.desc.name_rule_2": "첫 번째 값으로는  패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다.  \n 예시) public static final field (public static final로 지정된 모든 필드 상수), [A-Z][A-Z 0-9]+(_[A-Z 0-9]+)* (대문자로 시작하며 대문자, 숫자, 밑줄로 이루어진 이름)",
  "option.BAD_NAME.VARIABLE.desc.name_rule_3": "첫 번째 값으로는  패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다.  \n 예시) !final parameter (final이 아닌 모든 메소드 인자 변수), [a-z].* (첫번째 글자가 소문자인 이름)",
  "option.BAD_NAME.VARIABLE.desc.name_rule_4": "첫 번째 값으로는  패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다.  \n 예시) !final local (final이 아닌 모든 메소드 내 지역 변수), [a-z].* (첫번째 글자가 소문자인 이름)",
  "option.BAD_NAME.VARIABLE.desc.name_rule_5": "첫 번째 값으로는  패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다.  \n 예시) !final field (final이 아닌 모든 필드 변수), [a-z].* (첫번째 글자가 소문자인 이름)",
  "option.BAD_NAME.VARIABLE.desc.scope_target_global": "옵션을 사용하는 경우, 전역 변수를 검사합니다.",
  "option.BAD_NAME.VARIABLE.desc.scope_target_local": "옵션을 사용하는 경우, 지역 변수를 검사합니다.",
  "option.BAD_NAME.VARIABLE.desc.scope_target_loop": "옵션을 사용하는 경우, loop 변수를 검사합니다.",
  "option.BAD_NAME.VARIABLE.desc.scope_target_member": "옵션을 사용하는 경우, 멤버 변수를 검사합니다.",
  "option.BAD_NAME.VARIABLE.desc.scope_target_parameter": "옵션을 사용하는 경우, 파라미터를 검사합니다.",
  "option.BAD_NAME.VARIABLE.desc.variable_should_be_name": "허용할 변수 이름 형식을 작성합니다.\n예시) [a-zA-Z0-9_]*",
  "option.BAD_NAME.VARIABLE.desc.variable_should_not_be_name": "금지할 변수 이름 형식을 작성합니다.\n예시) forbidden",
  "option.BAD_NAME.VARIABLE.title.name_rule_1": "조건과 패턴",
  "option.BAD_NAME.VARIABLE.title.name_rule_2": "조건과 패턴",
  "option.BAD_NAME.VARIABLE.title.name_rule_3": "조건과 패턴",
  "option.BAD_NAME.VARIABLE.title.name_rule_4": "조건과 패턴",
  "option.BAD_NAME.VARIABLE.title.name_rule_5": "조건과 패턴",
  "option.BAD_NAME.VARIABLE.title.scope_target_global": "전역 변수 분석",
  "option.BAD_NAME.VARIABLE.title.scope_target_local": "지역 변수 분석",
  "option.BAD_NAME.VARIABLE.title.scope_target_loop": "Loop 변수 분석",
  "option.BAD_NAME.VARIABLE.title.scope_target_member": "멤버 변수 분석",
  "option.BAD_NAME.VARIABLE.title.scope_target_parameter": "파라미터 분석",
  "option.BAD_NAME.VARIABLE.title.variable_should_be_name": "허용할 변수 이름",
  "option.BAD_NAME.VARIABLE.title.variable_should_not_be_name": "금지할 변수 이름",
  "option.BAD_OPERATOR.MULTIPLE_VARIABLE_ASSIGNMENT.desc.check_separate_assignments": "옵션을 사용하는 경우, 한 수식 내에서 동시에 같은 값을 할당하지는 않지만 분리되어 사용되고 있는 할당 연산자가 두 개 이상인 경우를 검출합니다.\n예시) (x",
  "option.BAD_OPERATOR.MULTIPLE_VARIABLE_ASSIGNMENT.title.check_separate_assignments": "분리된 할당 연산자 검사",
  "option.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.desc.allow_exceptional_cases": "흔하게 발생하는 예외 상황을 허용합니다.\n예시) a",
  "option.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.desc.check_multi_line": "여러 라인 검사 여부를 설정합니다.",
  "option.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.desc.ignore_parenthesis": "괄호 무시 여부를 설정합니다.",
  "option.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.desc.operator_numbers": "허용할 연산자 개수를 설정합니다.",
  "option.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.title.allow_exceptional_cases": "흔하게 발생하는 예외 상황을 허용",
  "option.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.title.check_multi_line": "여러 라인 검사 여부",
  "option.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.title.ignore_parenthesis": "괄호 무시 여부",
  "option.BAD_OPERATOR.TOO_MANY_LOGICAL_OPERATIONS.title.operator_numbers": "연산자 개수",
  "option.BAD_ORGANIZATION.CLASS.desc.class_element_priority": "클래스 요소 별 선언 우선 순위를 작성합니다. 작성 가능한 클래스 요소는 'field', 'innerclass', 'constructor', 'method', 'initializer' 이며 세미콜론(;)으로 구분하여 우선순위가 높은 순으로 작성합니다. 작성되지 않은 필드 타입은 자동적으로 가장 낮은 우선 순위로 정해집니다.\n예시) field;innerclass;constructor;method;initializer",
  "option.BAD_ORGANIZATION.CLASS.title.class_element_priority": "클래스 요소 우선 순위",
  "option.BAD_PARENTHESIS.desc.check_inner_blank": "옵션을 사용하는 경우, 괄호 내 다른 괄호 안쪽에 공백이 존재하는 것을 검출합니다.",
  "option.BAD_PARENTHESIS.desc.check_multiline_alignment": "옵션을 사용하는 경우, 괄호 안의 내용이 여러 줄에 걸쳐 있을 때 여는 괄호와 닫는 괄호가 같은 컬럼에 위치하며 닫는 괄호가 해당 줄의 처음에 위치하는지 확인합니다.",
  "option.BAD_PARENTHESIS.desc.check_outer_blank": "옵션을 사용하는 경우, 가장 바깥쪽 괄호 안쪽에 공백이 존재하는지 여부를 검사합니다.",
  "option.BAD_PARENTHESIS.title.check_inner_blank": "괄호 내 괄호 안쪽에 공백 미 허용",
  "option.BAD_PARENTHESIS.title.check_multiline_alignment": "괄호 정렬 검사",
  "option.BAD_PARENTHESIS.title.check_outer_blank": "가장 바깥쪽 괄호 공백 검사",
  "option.BAD_PRIVILEGE_ASSIGNMENT.desc.call_param_target_in_function": "호출 함수와 필수 파라미터를 설정합니다.",
  "option.BAD_PRIVILEGE_ASSIGNMENT.title.call_param_target_in_function": "호출 함수와 필수 파라미터 설정",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.desc.file_target_excluded": "대상에서 제외되는 파일명을 설정합니다.",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.desc.function_target": "분석 대상 함수명을 설정합니다.",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.desc.function_target_excluded": "대상에서 제외되는 함수명을 설정합니다.",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.desc.parameter_should_not_have_qualifiers": "사용하지 말아야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 쉼표(,)를 사용합니다.\n예시) const, volatile",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.desc.parameter_target_type_is_pointer": "타입이 포인터인 파라미터 인덱스를 설정합니다. \n 예 : 포맷 [param index]:[data]\nparam index - 전체 index 지정 : 0\n특정 index (복수)지정 : 1,2",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.title.file_target_excluded": "대상에서 제외되는 파일",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.title.function_target": "분석 대상 함수",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.title.function_target_excluded": "대상에서 제외되는 함수",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.title.parameter_should_not_have_qualifiers": "금지 한정자",
  "option.BAD_QUALIFIER.FORBIDDEN.PARAM_PTR.title.parameter_target_type_is_pointer": "포인터형 파라미터",
  "option.BAD_QUALIFIER.FORBIDDEN.desc.forbidden_qualifiers": "사용하지 말아야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 쉼표(,)를 사용합니다.\n예시) const, volatile",
  "option.BAD_QUALIFIER.FORBIDDEN.desc.scope_target_global": "옵션을 사용하는 경우, 전역 변수를 검사합니다.",
  "option.BAD_QUALIFIER.FORBIDDEN.desc.scope_target_local": "옵션을 사용하는 경우, 지역 변수를 검사합니다.",
  "option.BAD_QUALIFIER.FORBIDDEN.desc.scope_target_parameter": "옵션을 사용하는 경우, 파라미터를 검사합니다.",
  "option.BAD_QUALIFIER.FORBIDDEN.title.forbidden_qualifiers": "금지 한정자",
  "option.BAD_QUALIFIER.FORBIDDEN.title.scope_target_global": "전역 변수 분석",
  "option.BAD_QUALIFIER.FORBIDDEN.title.scope_target_local": "지역 변수 분석",
  "option.BAD_QUALIFIER.FORBIDDEN.title.scope_target_parameter": "파라미터 분석",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.desc.file_target_excluded": "대상에서 제외되는 파일명을 설정합니다.",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.desc.function_target": "분석 대상이 되는 함수명을 설정합니다.",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.desc.function_target_excluded": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.desc.parameter_should_have_qualifiers": "반드시 사용해야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 쉼표(,)를 사용합니다.\n예시) const, volatile",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.desc.parameter_target_type_is_pointer": "타입이 포인터인 파라미터 인덱스를 설정합니다. \n 예 : 포맷 [param index]:[data]\nparam index - 전체 index 지정 : 0\n특정 index (복수)지정 : 1,2",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.title.file_target_excluded": "대상에서 제외되는 파일",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.title.function_target": "분석 대상 함수",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.title.function_target_excluded": "분석 대상에서 제외되는 함수",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.title.parameter_should_have_qualifiers": "필수 한정자",
  "option.BAD_QUALIFIER.REQUIRED.PARAM_PTR.title.parameter_target_type_is_pointer": "포인터형 파라미터",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"strcmp\")",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of name(\"gethostname\")",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.BAD_SECURITY_DECISION.DNS_LOOKUP.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.BAD_SECURITY_DECISION.UNTRUSTED_INPUT.PHP.desc.forbidden_key": "금지할 쿠키 키의 이름을 작성합니다.\n예시) role",
  "option.BAD_SECURITY_DECISION.UNTRUSTED_INPUT.PHP.title.forbidden_key": "금지할 쿠키 키",
  "option.BAD_STRING_IN_COMMENT.desc.check_header": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "option.BAD_STRING_IN_COMMENT.desc.forbidden_string_list": "주석 내에 포함 할 수 없는 문자열을 입력합니다.\n예시) /*,*/,//",
  "option.BAD_STRING_IN_COMMENT.title.check_header": "헤더 파일 분석 여부",
  "option.BAD_STRING_IN_COMMENT.title.forbidden_string_list": "금지 문자열",
  "option.BAD_STRING_MANAGEMENT.desc.function_should_not_be_used": "사용 금지 함수를 탐지할 정규표현식을 설정합니다.",
  "option.BAD_STRING_MANAGEMENT.title.function_should_not_be_used": "사용 금지 함수",
  "option.BAD_STRUCT.ALIGNMENT.desc.alignment_size": "alignment 크기를 설정합니다.",
  "option.BAD_STRUCT.ALIGNMENT.desc.char_size": "char 형 크기를 설정합니다.",
  "option.BAD_STRUCT.ALIGNMENT.desc.float_size": "float 형 크기를 설정합니다.",
  "option.BAD_STRUCT.ALIGNMENT.desc.int_size": "int 형 크기를 설정합니다.",
  "option.BAD_STRUCT.ALIGNMENT.desc.short_size": "short 형 크기를 설정합니다.",
  "option.BAD_STRUCT.ALIGNMENT.desc.use_alignment": "alignment 사용 여부를 설정합니다.",
  "option.BAD_STRUCT.ALIGNMENT.title.alignment_size": "alignment 크기",
  "option.BAD_STRUCT.ALIGNMENT.title.char_size": "char 형 크기",
  "option.BAD_STRUCT.ALIGNMENT.title.float_size": "float 형 크기",
  "option.BAD_STRUCT.ALIGNMENT.title.int_size": "int 형 크기",
  "option.BAD_STRUCT.ALIGNMENT.title.short_size": "short 형 크기",
  "option.BAD_STRUCT.ALIGNMENT.title.use_alignment": "alignment 사용 여부",
  "option.BAD_STRUCT.PADDING.desc.alignment_size": "alignment 크기를 설정합니다.",
  "option.BAD_STRUCT.PADDING.desc.char_size": "char 형 크기를 설정합니다.",
  "option.BAD_STRUCT.PADDING.desc.float_size": "float 형 크기를 설정합니다.",
  "option.BAD_STRUCT.PADDING.desc.int_size": "int 형 크기를 설정합니다.",
  "option.BAD_STRUCT.PADDING.desc.short_size": "short 형 크기를 설정합니다.",
  "option.BAD_STRUCT.PADDING.desc.use_alignment": "alignment 사용 여부를 설정합니다.",
  "option.BAD_STRUCT.PADDING.title.alignment_size": "alignment 크기",
  "option.BAD_STRUCT.PADDING.title.char_size": "char 형 크기",
  "option.BAD_STRUCT.PADDING.title.float_size": "float 형 크기",
  "option.BAD_STRUCT.PADDING.title.int_size": "int 형 크기",
  "option.BAD_STRUCT.PADDING.title.short_size": "short 형 크기",
  "option.BAD_STRUCT.PADDING.title.use_alignment": "alignment 사용 여부",
  "option.BAD_STRUCT.SIZE.desc.alignment_size": "alignment 크기를 설정합니다.",
  "option.BAD_STRUCT.SIZE.desc.char_size": "char 형 크기를 설정합니다.",
  "option.BAD_STRUCT.SIZE.desc.float_size": "float 형 크기를 설정합니다.",
  "option.BAD_STRUCT.SIZE.desc.int_size": "int 형 크기를 설정합니다.",
  "option.BAD_STRUCT.SIZE.desc.max_size": "구조체의 최대 크기를 설정합니다.",
  "option.BAD_STRUCT.SIZE.desc.short_size": "short 형 크기를 설정합니다.",
  "option.BAD_STRUCT.SIZE.desc.use_alignment": "alignment 사용 여부를 설정합니다.",
  "option.BAD_STRUCT.SIZE.title.alignment_size": "alignment 크기",
  "option.BAD_STRUCT.SIZE.title.char_size": "char 형 크기",
  "option.BAD_STRUCT.SIZE.title.float_size": "float 형 크기",
  "option.BAD_STRUCT.SIZE.title.int_size": "int 형 크기",
  "option.BAD_STRUCT.SIZE.title.max_size": "최대 크기 설정",
  "option.BAD_STRUCT.SIZE.title.short_size": "short 형 크기",
  "option.BAD_STRUCT.SIZE.title.use_alignment": "alignment 사용 여부",
  "option.BAD_STRUCT_MEMBER_ACCESS.desc.file_target_excluded": "제외 대상 파일을 설정합니다.",
  "option.BAD_STRUCT_MEMBER_ACCESS.desc.function_target": "대상 함수 이름을 설정합니다.",
  "option.BAD_STRUCT_MEMBER_ACCESS.desc.function_target_excluded": "제외 대상 함수를 설정합니다.",
  "option.BAD_STRUCT_MEMBER_ACCESS.desc.member_assign_limit": "멤버에 대입하는 횟수를 제한합니다.",
  "option.BAD_STRUCT_MEMBER_ACCESS.title.file_target_excluded": "제외 대상 파일",
  "option.BAD_STRUCT_MEMBER_ACCESS.title.function_target": "대상 함수",
  "option.BAD_STRUCT_MEMBER_ACCESS.title.function_target_excluded": "제외 대상 함수",
  "option.BAD_STRUCT_MEMBER_ACCESS.title.member_assign_limit": "멤버 대입 제한",
  "option.BAD_THROW.FORBIDDEN_EXCEPTION.desc.allowed_exceptions": "던져도 되도록 허용된 <i>Exception</i> 클래스 목록을, 패키지 이름을 포함한 전체 이름으로 입력합니다.",
  "option.BAD_THROW.FORBIDDEN_EXCEPTION.desc.prohibited_exceptions": "던지는게 금지된 <i>Exception</i> 클래스 목록을, 패키지 이름을 포함한 전체 이름으로 입력합니다.",
  "option.BAD_THROW.FORBIDDEN_EXCEPTION.title.allowed_exceptions": "허용 예외 클래스",
  "option.BAD_THROW.FORBIDDEN_EXCEPTION.title.prohibited_exceptions": "금지된 예외 클래스",
  "option.BAD_TRY_CATCH_MACRO_USAGE.desc.catch_macro": "catch 매크로 이름을 설정합니다.",
  "option.BAD_TRY_CATCH_MACRO_USAGE.desc.try_macro": "try 매크로 이름을 설정합니다.",
  "option.BAD_TRY_CATCH_MACRO_USAGE.title.catch_macro": "catch 매크로",
  "option.BAD_TRY_CATCH_MACRO_USAGE.title.try_macro": "try 매크로",
  "option.BAD_TYPE.FLOAT.desc.allowed_type": "허용할 float type을 등록합니다. 등록하지 않은 float type은 검출됩니다.",
  "option.BAD_TYPE.FLOAT.title.allowed_type": "허용할 float type 목록",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.expand_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.forbidden_type": "사용 금지 타입을 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.ignore_const": "상수 무시 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.scope_target_global": "전역 변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.scope_target_local": "지역변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.scope_target_member": "멤버 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.type_target_array": "배열 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.type_target_pointer": "포인터 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.type_target_signed": "부호있는 정수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.type_target_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.desc.type_target_unsigned": "부호없는 정수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.expand_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.forbidden_type": "사용 금지 타입",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.ignore_const": "상수 무시 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.scope_target_global": "전역 변수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.scope_target_local": "지역변수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.scope_target_member": "멤버 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.type_target_array": "배열 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.type_target_pointer": "포인터 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.type_target_signed": "부호있는 정수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.type_target_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.CHAR.title.type_target_unsigned": "부호없는 정수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.expand_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.forbidden_type": "사용 금지 타입을 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.ignore_const": "상수 무시 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.scope_target_global": "전역 변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.scope_target_local": "지역변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.scope_target_member": "멤버 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.type_target_array": "배열 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.type_target_pointer": "포인터 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.type_target_signed": "부호있는 정수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.type_target_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.desc.type_target_unsigned": "부호없는 정수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.expand_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.forbidden_type": "사용 금지 타입",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.ignore_const": "상수 무시 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.scope_target_global": "전역 변수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.scope_target_local": "지역변수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.scope_target_member": "멤버 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.type_target_array": "배열 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.type_target_pointer": "포인터 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.type_target_signed": "부호있는 정수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.type_target_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.FLOAT.title.type_target_unsigned": "부호없는 정수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.desc.expand_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.forbidden_type": "사용 금지 타입을 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.ignore_const": "상수 무시 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.scope_target_global": "전역 변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.scope_target_local": "지역변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.scope_target_member": "멤버 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.type_target_array": "배열 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.type_target_pointer": "포인터 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.type_target_signed": "부호있는 정수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.type_target_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.desc.type_target_unsigned": "부호없는 정수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.FORBIDDEN.title.expand_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.forbidden_type": "사용 금지 타입",
  "option.BAD_TYPE.FORBIDDEN.title.ignore_const": "상수 무시 여부",
  "option.BAD_TYPE.FORBIDDEN.title.scope_target_global": "전역 변수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.scope_target_local": "지역변수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.scope_target_member": "멤버 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.type_target_array": "배열 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.type_target_pointer": "포인터 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.type_target_signed": "부호있는 정수 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.type_target_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.FORBIDDEN.title.type_target_unsigned": "부호없는 정수 검사 여부",
  "option.BAD_TYPE.INTEGER.desc.allowed_type": "허용할 integer type을 등록합니다. 등록하지 않은 integer type은 검출됩니다.",
  "option.BAD_TYPE.INTEGER.title.allowed_type": "허용할 integer type 목록",
  "option.BAD_TYPE.NOT_ALLOWED.ARRAY.desc.allowed_variable_type": "허용되는 변수 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.ARRAY.desc.scope_target_local": "지역변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.ARRAY.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.ARRAY.title.allowed_variable_type": "허용되는 변수 타입",
  "option.BAD_TYPE.NOT_ALLOWED.ARRAY.title.scope_target_local": "지역변수 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.ARRAY.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.desc.allowed_variable_type": "허용되는 변수 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.desc.expand_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.desc.ignore_anonymous": "옵션을 사용하는 경우, 이름이 정의되지 않은 구조체/공용체는 무시합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.desc.scope_target_local": "지역변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.desc.type_target_array": "배열 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.desc.type_target_pointer": "포인터 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.desc.type_target_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.title.allowed_variable_type": "허용되는 변수 타입",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.title.expand_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.title.ignore_anonymous": "이름이 정의되지 않은 구조체/공용체 무시 여부",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.title.scope_target_local": "지역변수 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.title.type_target_array": "배열 타입 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.title.type_target_pointer": "포인터 타입 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.COMPOUND.title.type_target_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.PTR.desc.allowed_variable_type": "허용되는 변수 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.PTR.desc.expand_typedef": "재정의 타입 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.PTR.desc.scope_target_local": "지역변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.PTR.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.PTR.title.allowed_variable_type": "허용되는 변수 타입",
  "option.BAD_TYPE.NOT_ALLOWED.PTR.title.expand_typedef": "재정의 타입 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.PTR.title.scope_target_local": "지역변수 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.PTR.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.TYPEDEF.desc.allowed_variable_type": "허용되는 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.TYPEDEF.desc.scope_target_local": "지역변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.TYPEDEF.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.TYPEDEF.title.allowed_variable_type": "허용되는 타입",
  "option.BAD_TYPE.NOT_ALLOWED.TYPEDEF.title.scope_target_local": "지역변수 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.TYPEDEF.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.desc.allowed_variable_type": "허용되는 변수 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.desc.scope_target_local": "지역변수 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_ALLOWED.title.allowed_variable_type": "허용되는 변수 타입",
  "option.BAD_TYPE.NOT_ALLOWED.title.scope_target_local": "지역변수 검사 여부",
  "option.BAD_TYPE.NOT_ALLOWED.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.ARRAY.desc.allowed_array_type": "허용되는 배열 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.ARRAY.desc.scope_target_member": "멤버 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.ARRAY.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.ARRAY.title.allowed_array_type": "허용되는 배열 타입",
  "option.BAD_TYPE.NOT_TYPEDEF.ARRAY.title.scope_target_member": "멤버 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.ARRAY.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.MEMBER.desc.allowed_member_type": "허용되는 멤버 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.MEMBER.desc.check_function_ptr": "함수 포인터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.MEMBER.desc.type_target_array": "배열 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.MEMBER.desc.type_target_pointer": "포인터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.MEMBER.title.allowed_member_type": "허용되는 멤버 타입",
  "option.BAD_TYPE.NOT_TYPEDEF.MEMBER.title.check_function_ptr": "함수 포인터 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.MEMBER.title.type_target_array": "배열 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.MEMBER.title.type_target_pointer": "포인터 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.PARAM.desc.allowed_param_type": "허용되는 파라미터 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.PARAM.desc.call_param_target": "파라미터 검사 위치 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.PARAM.title.allowed_param_type": "허용되는 파라미터 타입",
  "option.BAD_TYPE.NOT_TYPEDEF.PARAM.title.call_param_target": "파라미터 검사 위치",
  "option.BAD_TYPE.NOT_TYPEDEF.PTR.desc.allowed_pointer_type": "허용하는 포인터 타입이름을 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.PTR.desc.scope_target_member": "멤버 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.PTR.desc.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.PTR.title.allowed_pointer_type": "허용하는 포인터 타입",
  "option.BAD_TYPE.NOT_TYPEDEF.PTR.title.scope_target_member": "멤버 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.PTR.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.RETURN.desc.allowed_return_type": "허용하는 재정의 타입 이름을 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.RETURN.desc.scope_target_global": "전역 범위 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.RETURN.desc.scope_target_local": "지역 범위 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.RETURN.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.RETURN.title.allowed_return_type": "허용하는 재정의 타입",
  "option.BAD_TYPE.NOT_TYPEDEF.RETURN.title.scope_target_global": "전역 범위 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.RETURN.title.scope_target_local": "지역 범위 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.RETURN.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.desc.allowed_type": "허용하는 재정의 타입을 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.desc.scope_target_member": "멤버 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.desc.scope_target_parameter": "파라미터 검사 여부를 설정합니다.",
  "option.BAD_TYPE.NOT_TYPEDEF.title.allowed_type": "허용하는 재정의 타입",
  "option.BAD_TYPE.NOT_TYPEDEF.title.scope_target_member": "멤버 검사 여부",
  "option.BAD_TYPE.NOT_TYPEDEF.title.scope_target_parameter": "파라미터 검사 여부",
  "option.BAD_VARIABLE_DECLARATION.FIELD.desc.field_priority": "필드 변수의 타입 별 선언 우선 순위를 작성합니다. 작성 가능한 필드 타입은 'constant', 'static', 'primitive', 'reference' 이며 세미콜론(;)으로 구분하여 우선순위가 높은 순으로 작성합니다. 작성되지 않은 필드 타입은 자동적으로 가장 낮은 우선 순위로 정해집니다.\n예시) constant;static;primitive;reference",
  "option.BAD_VARIABLE_DECLARATION.FIELD.title.field_priority": "필드 변수 우선 순위",
  "option.BAD_VARIABLE_DECLARATION.LOOP.desc.prohibit_name_list": "For문 내에 사용되는 loop 변수명 중 금지할 변수명을 설정합니다.",
  "option.BAD_VARIABLE_DECLARATION.LOOP.desc.skip_loop_check": "for loop counter의 초기화 여부를 검사하지 않습니다.",
  "option.BAD_VARIABLE_DECLARATION.LOOP.title.prohibit_name_list": "For문 금지 loop 변수",
  "option.BAD_VARIABLE_DECLARATION.LOOP.title.skip_loop_check": "for loop counter의 초기화 여부를 검사하지 않습니다.",
  "option.BAD_WHITESPACE.ACCESSING.desc.check_array_subscriptor": "옵션을 사용하는 경우 배열 참조 연산자 주위의 공백을 검출합니다.",
  "option.BAD_WHITESPACE.ACCESSING.desc.check_dot_operator": "옵션을 사용하는 경우 Dot 연산자 주위의 공백을 검출합니다.",
  "option.BAD_WHITESPACE.ACCESSING.title.check_array_subscriptor": "배열 참조 연산자 검사",
  "option.BAD_WHITESPACE.ACCESSING.title.check_dot_operator": "Dot 연산자 검사",
  "option.BAD_WHITESPACE.CALL.desc.check_empty_argument_whitespace": "옵션을 사용하는 경우, 함수 호출 인자가 없고 공백이 존재하는 경우를 검출합니다.",
  "option.BAD_WHITESPACE.CALL.desc.check_existence_only_for_inner_argument": "옵션을 사용하는 경우, 공백 개수가 아닌 공백 유무만 검사합니다.",
  "option.BAD_WHITESPACE.CALL.desc.check_existence_only_for_outer_argument": "옵션을 사용하는 경우, 공백 개수가 아닌 공백 유무만 검사합니다.",
  "option.BAD_WHITESPACE.CALL.desc.check_inner_argument_whitespace": "옵션을 사용하는 경우, 인자 사이 공백 여부를 검사합니다.",
  "option.BAD_WHITESPACE.CALL.desc.check_outer_argument_whitespace": "옵션을 사용하는 경우, 함수를 호출할 때 가장 바깥쪽 괄호 안쪽에 공백이 존재하는지 검사합니다.",
  "option.BAD_WHITESPACE.CALL.desc.check_preceding_whitespace_before_comma": "옵션을 사용하는 경우, 인자 구분에 사용되는 콤마 앞에 공백이 존재하는지 검사합니다.",
  "option.BAD_WHITESPACE.CALL.desc.check_whitespace_after_method": "옵션을 사용하는 경우, 함수를 호출할 때 메소드 이름 뒤에 공백이 존재하는지 검사합니다.",
  "option.BAD_WHITESPACE.CALL.desc.required_inner_argument_whitespaces": "함수 호출 시 인자 사이에 필요한 공백 개수를 입력합니다.\n예시) 1",
  "option.BAD_WHITESPACE.CALL.desc.required_outer_argument_whitespaces": "함수 호출 시 가장 바깥쪽 괄호 안쪽에 필요한 공백 개수를 입력합니다.\n예시) 1",
  "option.BAD_WHITESPACE.CALL.title.check_empty_argument_whitespace": "인자가 없는 경우 공백 허용 안 함",
  "option.BAD_WHITESPACE.CALL.title.check_existence_only_for_inner_argument": "인자 사이 공백 존재 유무만 검사",
  "option.BAD_WHITESPACE.CALL.title.check_existence_only_for_outer_argument": "가장 바깥쪽 괄호 공백 존재 유무만 검사",
  "option.BAD_WHITESPACE.CALL.title.check_inner_argument_whitespace": "인자 사이 공백 검사",
  "option.BAD_WHITESPACE.CALL.title.check_outer_argument_whitespace": "가장 바깥쪽 괄호 공백 검사",
  "option.BAD_WHITESPACE.CALL.title.check_preceding_whitespace_before_comma": "콤마 앞 공백 검사",
  "option.BAD_WHITESPACE.CALL.title.check_whitespace_after_method": "메소드 이름 뒤 공백 검사",
  "option.BAD_WHITESPACE.CALL.title.required_inner_argument_whitespaces": "인자 사이 필요한 공백 개수",
  "option.BAD_WHITESPACE.CALL.title.required_outer_argument_whitespaces": "가장 바깥쪽 괄호 안쪽에 필요한 공백 개수",
  "option.BAD_WHITESPACE.CASTING.desc.check_inner_space": "옵션을 사용하는 경우, 괄호 안쪽에 공백을 이슈로 검출합니다.",
  "option.BAD_WHITESPACE.CASTING.title.check_inner_space": "괄호 안 공백 확인",
  "option.BAD_WHITESPACE.CATCH_STATEMENT.desc.check_space_number": "공백이 존재 하는지 또는 공백 수를 검사 할 것인지 설정합니다.",
  "option.BAD_WHITESPACE.CATCH_STATEMENT.desc.white_space_number": "Catch 문 내 expression과 괄호 사이 간격을 설정합니다.",
  "option.BAD_WHITESPACE.CATCH_STATEMENT.title.check_space_number": "공백 수 확인 여부",
  "option.BAD_WHITESPACE.CATCH_STATEMENT.title.white_space_number": "Catch 문 내 expression과 괄호 사이 간격",
  "option.BAD_WHITESPACE.COMMA.desc.blank_after_comma": "옵션을 사용하는 경우, 콤마 뒤에 존재하는 공백을 허용합니다.",
  "option.BAD_WHITESPACE.COMMA.desc.blank_before_comma": "옵션을 사용하는 경우, 콤마 앞에 존재하는 공백을 허용합니다.",
  "option.BAD_WHITESPACE.COMMA.title.blank_after_comma": "콤마 뒤 공백 허용",
  "option.BAD_WHITESPACE.COMMA.title.blank_before_comma": "콤마 앞 공백 허용",
  "option.BAD_WHITESPACE.IF_STATEMENT.desc.check_space_number": "공백 존재 여부 혹은 공백 개수를 검사할지 설정합니다.",
  "option.BAD_WHITESPACE.IF_STATEMENT.desc.white_space_number": "If 문 내 expression과 괄호 사이 간격을 설정합니다.",
  "option.BAD_WHITESPACE.IF_STATEMENT.title.check_space_number": "공백 수 확인 여부",
  "option.BAD_WHITESPACE.IF_STATEMENT.title.white_space_number": "If 문 내 expression과 괄호 사이 간격을 설정합니다.",
  "option.BAD_WHITESPACE.SWITCH_STATEMENT.desc.check_space_number": "공백이 존재 하는지 또는 공백 수를 검사 할 것인지 설정합니다.",
  "option.BAD_WHITESPACE.SWITCH_STATEMENT.desc.white_space_number": "Switch 문 내 expression과 괄호 사이 간격을 설정합니다.",
  "option.BAD_WHITESPACE.SWITCH_STATEMENT.title.check_space_number": "공백 수 확인 여부",
  "option.BAD_WHITESPACE.SWITCH_STATEMENT.title.white_space_number": "Switch 문 내에 expression과 괄호 사이 간격",
  "option.CALL_EVERY_FUNCTION_GLOBAL.desc.check_member_func": "구조체나 클래스의 멤버 함수도 검사합니다.",
  "option.CALL_EVERY_FUNCTION_GLOBAL.desc.ignore_file": "분석에서 제외되는 파일명을 설정합니다.",
  "option.CALL_EVERY_FUNCTION_GLOBAL.desc.ignore_func": "분석에서 제외되는 함수명을 설정합니다.",
  "option.CALL_EVERY_FUNCTION_GLOBAL.title.check_member_func": "멤버 함수를 검사",
  "option.CALL_EVERY_FUNCTION_GLOBAL.title.ignore_file": "분석에서 제외되는 파일",
  "option.CALL_EVERY_FUNCTION_GLOBAL.title.ignore_func": "분석에서 제외되는 함수",
  "option.CANONICALIZE_URL_RECEIVED_BY_PROVIDER.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.CANONICALIZE_URL_RECEIVED_BY_PROVIDER.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.CANONICALIZE_URL_RECEIVED_BY_PROVIDER.title.exclude_method": "분석 제외 메소드",
  "option.CANONICALIZE_URL_RECEIVED_BY_PROVIDER.title.exclude_path": "분석 제외 경로",
  "option.CAST_ALTERS_VALUE.EXT.desc.max_decision_point_number": "이슈를 발생 시키지 않을 값들의 범위의 최대값을 설정합니다.",
  "option.CAST_ALTERS_VALUE.EXT.desc.min_decision_point_number": "이슈를 발생 시키지 않을 값들의 범위의 최소값을 설정합니다.",
  "option.CAST_ALTERS_VALUE.EXT.title.max_decision_point_number": "범위의 최대값",
  "option.CAST_ALTERS_VALUE.EXT.title.min_decision_point_number": "범위의 최소값",
  "option.CATCH_THROW_EXCEPTION_CHECKER.desc.target_path": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 전체 경로로 하나의 항목만 입력하세요.",
  "option.CATCH_THROW_EXCEPTION_CHECKER.desc.target_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 여러 항목을 입력할 수 있습니다.",
  "option.CATCH_THROW_EXCEPTION_CHECKER.desc.whitelist_path": "파일 경로를 텍스트로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출에서 제외합니다.",
  "option.CATCH_THROW_EXCEPTION_CHECKER.desc.whitelist_path_pattern": "파일 경로를 입력하면 입력한 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출에서 제외합니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.CATCH_THROW_EXCEPTION_CHECKER.title.target_path": "분석 대상 파일 경로",
  "option.CATCH_THROW_EXCEPTION_CHECKER.title.target_path_pattern": "분석 대상 파일 경로의 정규식 패턴",
  "option.CATCH_THROW_EXCEPTION_CHECKER.title.whitelist_path": "허용된 파일 경로",
  "option.CATCH_THROW_EXCEPTION_CHECKER.title.whitelist_path_pattern": "허용된 파일 경로의 정규식 패턴",
  "option.CHECK.DUPLICATED_PARAM.desc.target_func": "검출 대상 함수를 설정합니다.",
  "option.CHECK.DUPLICATED_PARAM.title.target_func": "검출 대상 함수",
  "option.CHECK.FIELD_ARRAY_LENGTH.desc.targets": "검출한 구조체, 필드명, 원소 수를 설정합니다. (구조체 이름),(필드명),(원소 수) 형태로 정의되어야 하며 빈칸이 없어야 합니다.",
  "option.CHECK.FIELD_ARRAY_LENGTH.title.targets": "검출할 대상 설정",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.title.alarm": "검출 규칙",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.title.exclude": "예외 규칙",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.title.propagator": "전파 규칙",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_INFINITY.title.suggestion_filter_function": "제안할 필터 함수",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_NAN.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_NAN.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_NAN.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_NAN.title.alarm": "검출 규칙",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_NAN.title.exclude": "예외 규칙",
  "option.CHECK_FLOATING_POINT_INPUTS_FOR_EXCEPTIONAL_VALUES_NAN.title.suggestion_filter_function": "제안할 필터 함수",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.desc.checkAllExceptWhitelist": "이 옵션을 활성화할 경우 화이트리스트가 아닌 모든 대상을 이슈로 검출합니다. 기본 동작은 블랙리스트(1,2번 항목)의 항목만을 검출하지만, 이 옵션을 활성화하면 화이트리스트(3,4번 항목)를 제외한 항목을 모두 검출합니다. 단, 3,4번 옵션 모두 설정값이 없거나 null인 경우 해당 옵션을 활성화하더라도 이슈가 검출되지 않습니다.",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.desc.checkFilePath": "파일 경로를 텍스트로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출합니다.",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.desc.checkFilePathPattern": "파일 경로를 정규식으로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출합니다.",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.desc.excludedMethodTypes": "특정 메소드 종류를 텍스트로 입력하면 해당 메소드를 검출에서 제외합니다. 예시로 protected를 입력한 경우, protected 메소드의 명명 규칙 준수 여부를 확인하지 않습니다.",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.desc.methodNamePatterns": "메소드 이름이 준수해야 할 명명 규칙을 정규식으로 입력하면 파일 내 메소드 이름이 입력한 정규식과 일치하지 않는 경우 이슈로 검출합니다.",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.desc.whitelistFilePath": "파일 경로를 텍스트로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출에서 제외합니다.",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.desc.whitelistFilePathPattern": "입력한 파일 경로와 일치하는 파일을 발견한 경우 해당 파일을 검출에서 제외합니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.title.checkAllExceptWhitelist": "화이트리스트(3, 4번)가 아닌 모든 파일 검출",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.title.checkFilePath": "검출 대상 파일 경로(절대 경로, 블랙리스트)",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.title.checkFilePathPattern": "검출 대상 파일 경로의 정규식 목록",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.title.excludedMethodTypes": "검출하지 않을 메소드(화이트리스트)",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.title.methodNamePatterns": "메소드 명명 규칙의 정규식 패턴 목록(화이트리스트)",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.title.whitelistFilePath": "허용된 파일 경로",
  "option.CHECK_METHOD_NAME_IN_FILE_PATH.title.whitelistFilePathPattern": "허용된 파일 경로의 정규식 패턴",
  "option.CHECK_PTHREAD_MUTEX_LOCK_RETURN.OBJC.desc.target_grp1": "호출 후, if 구문으로 리턴 값을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "option.CHECK_PTHREAD_MUTEX_LOCK_RETURN.OBJC.title.target_grp1": "리턴 값 검사 대상 함수",
  "option.CHROOT_JAIL_WITHOUT_CHANGE_WORK_DIR.desc.function_target_begin_call_function": "분석을 시작할 특정 함수 호출을 설정합니다.",
  "option.CHROOT_JAIL_WITHOUT_CHANGE_WORK_DIR.desc.should_be_call_param": "필수 호출 파라미터를 설정합니다.",
  "option.CHROOT_JAIL_WITHOUT_CHANGE_WORK_DIR.title.function_target_begin_call_function": "분석을 시작할 특정 함수 호출",
  "option.CHROOT_JAIL_WITHOUT_CHANGE_WORK_DIR.title.should_be_call_param": "필수 호출 파라미터 설정",
  "option.CLASS_COMMENT.desc.ClassComment": "클래스 주석 형식을 정의합니다.",
  "option.CLASS_COMMENT.desc.modifierType": "입력 받은 접근 제한자만 검출하도록 검출 스펙을 변경합니다.",
  "option.CLASS_COMMENT.title.ClassComment": "클래스 주석 형식",
  "option.CLASS_COMMENT.title.modifierType": "분석 제외 대상 클래스",
  "option.CLASS_MEMBER_SHOULD_NOT_BE_PUBLIC.desc.check_protected": "protected 로 선언한 멤버 변수도 검출합니다.",
  "option.CLASS_MEMBER_SHOULD_NOT_BE_PUBLIC.title.check_protected": "protected 멤버 변수 검출 여부",
  "option.CLEARTEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.desc.clear_call": "암호화 혹은 무결성 검증 함수",
  "option.CLEARTEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.title.clear_call": "평문 정보를 안전하게 암호화 하거나 무결성을 검증하는 함수 이름을 입력합니다.",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"java.io.OutputStream.write\")",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"^(?!.*encrypted).*[pP]assw(or)?d\"))",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"add_header\")",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"add_header\")",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.title.alarm": "검출 규칙",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.title.exclude": "예외 규칙",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.title.propagator": "전파 규칙",
  "option.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.CODE_INJECTION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"replace\")",
  "option.CODE_INJECTION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.CODE_INJECTION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.CODE_INJECTION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"eval\")",
  "option.CODE_INJECTION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of name(\"body\")",
  "option.CODE_INJECTION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.CODE_INJECTION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.CODE_INJECTION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.CODE_INJECTION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.CODE_INJECTION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.CODE_INJECTION.desc.filter_method": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.\n예시) checkParam",
  "option.CODE_INJECTION.desc.filter_set": "외부 입력 값을 검증하는 Set 컨테이너 이름을 입력합니다.\n예시) whiteList",
  "option.CODE_INJECTION.title.filter_method": "외부 입력 값 검증 메소드",
  "option.CODE_INJECTION.title.filter_set": "외부 입력 값 검증 Set 컨테이너",
  "option.COMMAND_INJECTION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.COMMAND_INJECTION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.COMMAND_INJECTION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.COMMAND_INJECTION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"__sparrow_required__child_process.exec\")",
  "option.COMMAND_INJECTION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"__sparrow_node_js_request__.url\")",
  "option.COMMAND_INJECTION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.COMMAND_INJECTION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.COMMAND_INJECTION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.COMMAND_INJECTION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.COMMAND_INJECTION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.COMMAND_INJECTION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.COMMAND_INJECTION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.COMMAND_INJECTION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.COMMAND_INJECTION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"java.lang.Runtime.exec\")",
  "option.COMMAND_INJECTION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.COMMAND_INJECTION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.COMMAND_INJECTION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.COMMAND_INJECTION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.COMMAND_INJECTION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.COMMAND_INJECTION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.COMMAND_INJECTION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.COMMAND_INJECTION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.COMMAND_INJECTION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.COMMAND_INJECTION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"exec\")",
  "option.COMMAND_INJECTION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) param(*) of name(\"main\")",
  "option.COMMAND_INJECTION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.COMMAND_INJECTION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.COMMAND_INJECTION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.COMMAND_INJECTION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.COMMAND_INJECTION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.COMMAND_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.COMMAND_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.COMMAND_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.COMMAND_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) system$param(1)",
  "option.COMMAND_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.COMMAND_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.COMMAND_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.COMMAND_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.COMMAND_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.COMMAND_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.COMMAND_INJECTION.TOBE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.COMMAND_INJECTION.TOBE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.COMMAND_INJECTION.TOBE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.COMMAND_INJECTION.TOBE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"execProcess\")",
  "option.COMMAND_INJECTION.TOBE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "option.COMMAND_INJECTION.TOBE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.COMMAND_INJECTION.TOBE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.COMMAND_INJECTION.TOBE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.COMMAND_INJECTION.TOBE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.COMMAND_INJECTION.TOBE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.COMMAND_INJECTION.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.COMMAND_INJECTION.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.COMMAND_INJECTION.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.COMMAND_INJECTION.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) shell$param(*)",
  "option.COMMAND_INJECTION.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.COMMAND_INJECTION.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.COMMAND_INJECTION.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.COMMAND_INJECTION.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.COMMAND_INJECTION.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.COMMAND_INJECTION.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.COMMAND_INJECTION.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.COMMAND_INJECTION.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.COMMAND_INJECTION.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.COMMAND_INJECTION.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) shell$param(*)",
  "option.COMMAND_INJECTION.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.COMMAND_INJECTION.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.COMMAND_INJECTION.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.COMMAND_INJECTION.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.COMMAND_INJECTION.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.COMMAND_INJECTION.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.COMMAND_INJECTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.COMMAND_INJECTION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.COMMAND_INJECTION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.COMMAND_INJECTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.COMMAND_INJECTION.title.alarm": "검출 규칙",
  "option.COMMAND_INJECTION.title.exclude": "예외 규칙",
  "option.COMMAND_INJECTION.title.propagator": "전파 규칙",
  "option.COMMAND_INJECTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.COMPLY_WITH_MODIFIER_ORDER.desc.modifier_order": "여러 modifier가 동시에 사용될 때 지켜야할 순서를 입력합니다.",
  "option.COMPLY_WITH_MODIFIER_ORDER.title.modifier_order": "modifier 순서",
  "option.CONFIGURATION_SETTING.desc.sink_call": "민감한 정보를 포함할 경우 위험한 함수 이름을 작성합니다.\n예시) sethostid",
  "option.CONFIGURATION_SETTING.desc.source_call": "민감한 정보를 입력 받는 함수 이름을 작성합니다.\n예시) getenv",
  "option.CONFIGURATION_SETTING.title.sink_call": "민감한 정보 노출 함수",
  "option.CONFIGURATION_SETTING.title.source_call": "민감한 정보 입력 함수",
  "option.CONFUSING_OPERATOR_PRECEDENCE.KOTLIN.desc.min_num_of_operator": "하나의 괄호로 묶인 연산에 포함될 수 있는 연산자의 개수를 지정합니다.",
  "option.CONFUSING_OPERATOR_PRECEDENCE.KOTLIN.title.min_num_of_operator": "최소 연산자 수",
  "option.CONSTANT_CLASS_METHOD.desc.constant_class_patterns": "입력한 상수 클래스 이름과 동일한 클래스 이름을 발견한 경우 점검하는 옵션입니다. [패키지, 클래스]와 같은 형태로 입력하면 해당 패키지에서만 분석합니다.",
  "option.CONSTANT_CLASS_METHOD.desc.excluded_methods": "입력한 메소드 이름과 동일한 메소드 이름을 발견한 경우 검출에서 제외합니다.",
  "option.CONSTANT_CLASS_METHOD.title.constant_class_patterns": "점검할 상수 클래스",
  "option.CONSTANT_CLASS_METHOD.title.excluded_methods": "검출 제외 메소드",
  "option.CONST_IN_LOOP_TEST.desc.ignored_value": "검사항목에서 제외할 값을 기록합니다.",
  "option.CONST_IN_LOOP_TEST.title.ignored_value": "검사항목에서 제외할 값",
  "option.COOKIE.OVERLY_BROAD_DOMAIN.CSHARP.desc.broad_custom_domain": "추가로 검출하고 싶은 도메인을 입력하세요.",
  "option.COOKIE.OVERLY_BROAD_DOMAIN.CSHARP.desc.exception_domain": "예외 처리하고 싶은 도메인을 입력하세요",
  "option.COOKIE.OVERLY_BROAD_DOMAIN.CSHARP.title.broad_custom_domain": "추가로 검출하고 싶은 도메인",
  "option.COOKIE.OVERLY_BROAD_DOMAIN.CSHARP.title.exception_domain": "예외 처리하고 싶은 도메인",
  "option.COOKIE.OVERLY_BROAD_PATH.CSHARP.desc.path_pattern": "경로 패턴(깊이 등)을 입력하세요.",
  "option.COOKIE.OVERLY_BROAD_PATH.CSHARP.title.path_pattern": "경로 패턴(깊이 등).",
  "option.CRITICAL_PUBLIC_VARIABLE_WITHOUT_CONST_MODIFIER.desc.variable_name": "변수명을 정규식으로 작성할 수 있습니다.",
  "option.CRITICAL_PUBLIC_VARIABLE_WITHOUT_CONST_MODIFIER.title.variable_name": "검출할 변수명",
  "option.CRITICAL_VARIABLE_IN_PUBLIC.desc.variable_name": "변수명을 정규식으로 작성할 수 있습니다.",
  "option.CRITICAL_VARIABLE_IN_PUBLIC.title.variable_name": "검출할 변수명",
  "option.CROSS_SITE_REQUEST_FORGERY.PYTHON.desc.csrf_exempt_decorator": "CSRF 보호를 해제하는 데코레이터의 이름을 작성합니다.",
  "option.CROSS_SITE_REQUEST_FORGERY.PYTHON.desc.csrf_exempt_method": "CSRF 보호를 해제하는 함수의 이름을 작성합니다.",
  "option.CROSS_SITE_REQUEST_FORGERY.PYTHON.title.csrf_exempt_decorator": "CSRF 보호 해제 데코레이터",
  "option.CROSS_SITE_REQUEST_FORGERY.PYTHON.title.csrf_exempt_method": "CSRF 보호 해제 함수",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.argument_type_for_critical_function": "중요 기능 함수의 인자 타입, 여기에 기술된 인자 타입은 중요 기능 함수의 모든 인자에 대해서 체커가 분석을 시도합니다. 정규식 지원",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.authenticated_block": "인증 수행 후 안전한 것으로 간주되는 코드 블록. 'if', 'switch', 'while', 'for' 블록이 될 수 있고, 삼항 연산자의 수식도 가능합니다. 이 코드 블록 내에 존재하는 모든 중요 기능 함수의 호출은 안전한 것으로 간주됩니다.",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.authentication_function": "인증을 위해 호출할 메소드를 입력합니다. 메소드가 여러 개일 경우, 인증을 위해 모든 메소드를 호출해야 합니다.\n예시) java.lang.String.equals",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.critical_class": "중요 기능을 함수를 호출하는 객체의 클래스 타입 (패키지 이름을 포함한 클래스 이름, i.e. java.lang.String), 정규식 지원",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.critical_function": "중요 기능 함수, 정규식 지원",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.need_token_cmp_class_base": "상속 받은 클래스 내에 토큰 비교가 필요한 상위 클래스의 이름을 입력합니다.\n예시) org.apache.jasper.runtime.HttpJspBase",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.request_class": "HTTP 요청을 나타내는 클래스의 이름을 입력합니다.\n예시) javax.servlet.http.HttpServletRequest",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.session_class": "HTTP 세션을 나타내는 클래스의 이름을 입력합니다.\n예시) javax.servlet.http.HttpSession",
  "option.CROSS_SITE_REQUEST_FORGERY.desc.token_target_file": "토큰 비교를 통한 인증이 필요한 파일을 입력합니다.\n예시) CSRF.jsp",
  "option.CROSS_SITE_REQUEST_FORGERY.title.argument_type_for_critical_function": "중요 기능 함수의 인자 타입",
  "option.CROSS_SITE_REQUEST_FORGERY.title.authenticated_block": "인증 완료된 코드 블록",
  "option.CROSS_SITE_REQUEST_FORGERY.title.authentication_function": "인증 메소드",
  "option.CROSS_SITE_REQUEST_FORGERY.title.critical_class": "중요 기능 함수를 호출하는 객체의 클래스 타입",
  "option.CROSS_SITE_REQUEST_FORGERY.title.critical_function": "중요 기능 함수 이름",
  "option.CROSS_SITE_REQUEST_FORGERY.title.need_token_cmp_class_base": "토큰 비교가 필요한 상위 클래스",
  "option.CROSS_SITE_REQUEST_FORGERY.title.request_class": "HTTP 요청 클래스",
  "option.CROSS_SITE_REQUEST_FORGERY.title.session_class": "HTTP 세션 클래스",
  "option.CROSS_SITE_REQUEST_FORGERY.title.token_target_file": "토큰 비교를 통한 인증이 필요한 파일",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of fqn(\"sessionStorage.setItem\")",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"localStorage.getItem\")",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.CROSS_STORAGE_CONTAMINATION.LOCAL_TO_SESSION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of fqn(\"localStorage.setItem\")",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"sessionStorage.getItem\")",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.CROSS_STORAGE_CONTAMINATION.SESSION_TO_LOCAL.JS.title.taint_source": "외부 정보 입력 함수",
  "option.DANGEROUS_EXTRACTION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.DANGEROUS_EXTRACTION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.DANGEROUS_EXTRACTION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.",
  "option.DANGEROUS_EXTRACTION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"extract(1)\")",
  "option.DANGEROUS_EXTRACTION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.DANGEROUS_EXTRACTION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.DANGEROUS_EXTRACTION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.DANGEROUS_EXTRACTION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.DANGEROUS_EXTRACTION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.DANGEROUS_EXTRACTION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.DANGEROUS_USE_OF_TAINTED_VALUES.desc.clear_call": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.",
  "option.DANGEROUS_USE_OF_TAINTED_VALUES.desc.clear_compare": "조건문에서 정수값의 범위 비교로 외부 정보를 필터하는지 여부를 결정합니다.",
  "option.DANGEROUS_USE_OF_TAINTED_VALUES.desc.sink_call": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "option.DANGEROUS_USE_OF_TAINTED_VALUES.title.clear_call": "외부 정보 필터 함수",
  "option.DANGEROUS_USE_OF_TAINTED_VALUES.title.clear_compare": "비교로 외부 정보 필터 검사",
  "option.DANGEROUS_USE_OF_TAINTED_VALUES.title.sink_call": "외부 정보 사용 함수",
  "option.DATA_LEAK_BETWEEN_SESSIONS.desc.excluded_class_name": "검출에서 제외할 클래스 이름을 입력합니다.\n예시) com.test.Excluded",
  "option.DATA_LEAK_BETWEEN_SESSIONS.desc.excluded_field_annotation": "검출에서 제외할 필드 어노테이션을 입력합니다.\n예시) Autowired",
  "option.DATA_LEAK_BETWEEN_SESSIONS.desc.excluded_field_name": "검출에서 제외할 필드 이름을 입력합니다.\n예시) field",
  "option.DATA_LEAK_BETWEEN_SESSIONS.desc.excluded_field_type": "검출에서 제외할 필드 타입을 입력합니다.\n예시) Logger",
  "option.DATA_LEAK_BETWEEN_SESSIONS.desc.target_annotation": "컨트롤러를 구분하는데에 사용되는 어노테이션을 입력합니다.\n예시) Controller",
  "option.DATA_LEAK_BETWEEN_SESSIONS.desc.target_parent_class": "세션 간 데이터 노출이 발생할 수 있는 클래스 이름을 입력합니다.\n예시) javax.servlet.http.HttpServlet",
  "option.DATA_LEAK_BETWEEN_SESSIONS.title.excluded_class_name": "제외할 클래스의 이름",
  "option.DATA_LEAK_BETWEEN_SESSIONS.title.excluded_field_annotation": "제외할 필드의 어노테이션",
  "option.DATA_LEAK_BETWEEN_SESSIONS.title.excluded_field_name": "제외할 필드의 이름",
  "option.DATA_LEAK_BETWEEN_SESSIONS.title.excluded_field_type": "제외할 필드의 타입",
  "option.DATA_LEAK_BETWEEN_SESSIONS.title.target_annotation": "대상 컨트롤러 어노테이션",
  "option.DATA_LEAK_BETWEEN_SESSIONS.title.target_parent_class": "대상 클래스",
  "option.DATA_STORING.SENSITIVE_INFORMATION.TOBE.JS.desc.sensitive_pattern": "저장하면 위험한 데이터의 컬럼명을 입력하세요.",
  "option.DATA_STORING.SENSITIVE_INFORMATION.TOBE.JS.title.sensitive_pattern": "위험 패턴",
  "option.DECLARE_AT_THE_BEGINNING_OF_BLOCK.desc.exclude_loop_counter": "옵션을 사용하는 경우,  loop index로 선언된 변수는 검출에서 제외합니다.",
  "option.DECLARE_AT_THE_BEGINNING_OF_BLOCK.desc.ignored_function_name": "검사 대상에서 제외할 함수 이름을 기록합니다.",
  "option.DECLARE_AT_THE_BEGINNING_OF_BLOCK.desc.ignored_variable_name": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "option.DECLARE_AT_THE_BEGINNING_OF_BLOCK.desc.skip_array_check": "array의 초기화 여부를 검사하지 않습니다.",
  "option.DECLARE_AT_THE_BEGINNING_OF_BLOCK.title.exclude_loop_counter": "Loop index 변수 제외",
  "option.DECLARE_AT_THE_BEGINNING_OF_BLOCK.title.ignored_function_name": "검사 대상에서 제외할 함수 이름을 기록합니다.",
  "option.DECLARE_AT_THE_BEGINNING_OF_BLOCK.title.ignored_variable_name": "검사 대상에서 제외할 변수 이름",
  "option.DECLARE_AT_THE_BEGINNING_OF_BLOCK.title.skip_array_check": "array의 초기화 여부를 검사하지 않습니다.",
  "option.DECLARE_EXTERN_IN_HEADER_FILES.desc.as_Misra2008": "헤더에 정의되지 않은 모든 global변수들을 검사합니다.",
  "option.DECLARE_EXTERN_IN_HEADER_FILES.title.as_Misra2008": "misra2008 스펙으로 동작",
  "option.DECLARE_VARIABLE_IN_MIDDLE_OF_BLOCK.desc.ignore_var_name": "무시할 변수 이름을 정규식을 사용하여 설정합니다.",
  "option.DECLARE_VARIABLE_IN_MIDDLE_OF_BLOCK.desc.support_proframe": "옵션을 사용하는 경우, 프로프레임 코드 분석을 보다 정확하게 수행합니다.",
  "option.DECLARE_VARIABLE_IN_MIDDLE_OF_BLOCK.title.ignore_var_name": "무시할 변수 이름",
  "option.DECLARE_VARIABLE_IN_MIDDLE_OF_BLOCK.title.support_proframe": "프로프레임 지원",
  "option.DEEPLY_NESTED.ABAP.desc.threshold": "중첩되는 구문의 제한 횟수를 설정합니다.",
  "option.DEEPLY_NESTED.ABAP.title.threshold": "중첩도 제한",
  "option.DEEPLY_NESTED_IF_STATEMENT.CSHARP.desc.max_depth": "검출 대상 if 조건문의 깊이 임계값을 지정합니다.",
  "option.DEEPLY_NESTED_IF_STATEMENT.CSHARP.title.max_depth": "깊이",
  "option.DEEP_NESTING_BLOCKS.desc.max_level": "최대 중첩도를 설정합니다.",
  "option.DEEP_NESTING_BLOCKS.title.max_level": "최대 중첩도",
  "option.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.title.alarm": "검출 규칙",
  "option.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.title.exclude": "예외 규칙",
  "option.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.title.propagator": "전파 규칙",
  "option.DEFENSIVELY_COPY_MUTABLE_INPUTS_AND_MUTABLE_INTERNAL_COMPONENTS.title.suggestion_filter_function": "제안할 필터 함수",
  "option.DEFINE_WRAPPERS_AROUND_NATIVE_METHODS.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.DEFINE_WRAPPERS_AROUND_NATIVE_METHODS.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.DEFINE_WRAPPERS_AROUND_NATIVE_METHODS.title.exclude_method": "분석 제외 메소드",
  "option.DEFINE_WRAPPERS_AROUND_NATIVE_METHODS.title.exclude_path": "분석 제외 경로",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of name(\"requestFileSystemSync\")",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.DENIAL_OF_SERVICE.REQUEST_FILE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.JS.desc.forbidden_method": "금지된 함수의 이름을 작성합니다.",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.JS.title.forbidden_method": "금지된 함수",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.KOTLIN.desc.forbidden_fqn": "금지할 함수의 이름을 작성합니다.",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.KOTLIN.title.forbidden_fqn": "금지할 함수",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(1) of name(\"in_array\")",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"unserialize\")",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.DESERIALIZATION_OF_UNTRUSTED_DATA.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.DESTRUCTORS_MUST_NOT_THROW_EXCEPTIONS.desc.misra2008": "misra2008 스펙이 좀더 넓게 허용됩니다. catch블록이 try와 같은 블록에 있을때 알람을 발생하지 않습니다.",
  "option.DESTRUCTORS_MUST_NOT_THROW_EXCEPTIONS.title.misra2008": "misra2008 15-5-1 스펙으로 동작합니다.",
  "option.DIFFERENT_GROUP_CLASS_CALL.desc.call_rules": "업무 그룹 내 클래스가 지정된 호출 규약을 준수했는지 분석하는 옵션입니다. 최대 10개까지 설정할 수 있습니다.",
  "option.DIFFERENT_GROUP_CLASS_CALL.desc.exclude_fqn_pattern": "해당 패키지의 클래스는 검출에서 제외됩니다.",
  "option.DIFFERENT_GROUP_CLASS_CALL.title.call_rules": "클래스 호출 규약 점검 옵션",
  "option.DIFFERENT_GROUP_CLASS_CALL.title.exclude_fqn_pattern": "검출에서 제외할 클래스의 전체 패키지 이름",
  "option.DIFFERENT_MESSAGE_CODE.desc.call_rules": "타 업무 메시지 코드 규약을 준수했는지 분석하는 옵션입니다. 최대 10개까지 설정할 수 있습니다.",
  "option.DIFFERENT_MESSAGE_CODE.title.call_rules": "타 업무 메시지 코드 규약 점검 옵션",
  "option.DIRECT_USE_OF_INTEGER_LITERAL.desc.allowed_method": "인자로 상수를 전달하는 것을 허용할 메소드의 FQN을 정규식으로 지정합니다.\n예시) .*String.substring",
  "option.DIRECT_USE_OF_INTEGER_LITERAL.desc.except_for_loop_head": "선택하면 for 구문의 제어부에 상수 사용을 허용합니다.",
  "option.DIRECT_USE_OF_INTEGER_LITERAL.title.allowed_method": "허용 메소드",
  "option.DIRECT_USE_OF_INTEGER_LITERAL.title.except_for_loop_head": "for 구문 제어부에 상수 허용 여부",
  "option.DJANGO_BAD_SLEEP.desc.django_response_fqn": "Django가 요청에 대해 응답할 때 사용되는 함수들의 FQN을 입력합니다.",
  "option.DJANGO_BAD_SLEEP.desc.sleep_api_fqn": "쓰레드를 일정시간 정지시키는 함수들의 FQN을 입력합니다.",
  "option.DJANGO_BAD_SLEEP.title.django_response_fqn": "Django의 응답 함수",
  "option.DJANGO_BAD_SLEEP.title.sleep_api_fqn": "쓰레드 일시정지 함수",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) fread$param(1)",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.title.taint_filter": "외부 정보 필터 함수",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.title.taint_propagator": "외부 정보 전파 함수",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.title.taint_sink": "외부 정보 사용 함수",
  "option.DJANGO_FILE_RESPONSE_MANIPULATION.title.taint_source": "외부 정보 입력 함수",
  "option.DJANGO_XSS.PYTHON.desc.exclude_dir": "검출 제외 폴더 경로를 glob 패턴을 사용하여 입력합니다.\n예시) `src/java/**/core/**`",
  "option.DJANGO_XSS.PYTHON.desc.exclude_extension": "검출 제외 파일 확장자를 지정합니다.\n예시) java",
  "option.DJANGO_XSS.PYTHON.desc.rule": "검출 규칙을 정규식을 사용하여 지정합니다.",
  "option.DJANGO_XSS.PYTHON.desc.target_dir": "분석 대상 폴더 경로를 glob 패턴을 사용하여 입력합니다.\n예시) `src/java/**/core/**`",
  "option.DJANGO_XSS.PYTHON.desc.target_extension": "분석 대상 확장자를 입력합니다.\n예시) html",
  "option.DJANGO_XSS.PYTHON.title.exclude_dir": "제외 폴더 경로",
  "option.DJANGO_XSS.PYTHON.title.exclude_extension": "제외 파일 확장자",
  "option.DJANGO_XSS.PYTHON.title.rule": "검출 규칙",
  "option.DJANGO_XSS.PYTHON.title.target_dir": "분석 대상 폴더",
  "option.DJANGO_XSS.PYTHON.title.target_extension": "분석 대상 확장자",
  "option.DOUBLE.FORMAT_STRING.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.DOUBLE.FORMAT_STRING.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.DOUBLE.FORMAT_STRING.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"add_header\")",
  "option.DOUBLE.FORMAT_STRING.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.DOUBLE.FORMAT_STRING.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.DOUBLE.FORMAT_STRING.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.DOUBLE.FORMAT_STRING.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.DOUBLE.FORMAT_STRING.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"add_header\")",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.desc.function_requiring_integrity_check": "무결성 체크가 필요한 함수의 이름을 작성합니다.\n예시) urllib.request.urlretrieve",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"write\")",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"urllib.request.urlopen\")",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.title.function_requiring_integrity_check": "무결성 체크 필요 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"add_header\")",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.title.alarm": "검출 규칙",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.title.exclude": "예외 규칙",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.title.propagator": "전파 규칙",
  "option.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.title.suggestion_filter_function": "제안할 필터 함수",
  "option.DO_DECL_VARS_AT_TOP_OF_FUNC.desc.ignored_function_name": "변수 최초 선언보다 앞서 실행 할 수 있는 함수들의 목록을 작성합니다. \n 예시) ulog.*",
  "option.DO_DECL_VARS_AT_TOP_OF_FUNC.desc.ignored_variable_name": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "option.DO_DECL_VARS_AT_TOP_OF_FUNC.desc.skip_array_check": "array의 초기화 여부를 검사하지 않습니다.",
  "option.DO_DECL_VARS_AT_TOP_OF_FUNC.title.ignored_function_name": "예외 함수 목록",
  "option.DO_DECL_VARS_AT_TOP_OF_FUNC.title.ignored_variable_name": "검사 대상에서 제외할 변수 이름",
  "option.DO_DECL_VARS_AT_TOP_OF_FUNC.title.skip_array_check": "array의 초기화 검사 여부",
  "option.DO_NOT_APPEND_STRINGS.desc.whitelist_methods": "logger.debug와 같이 분석에서 제외할 인터페이스 및 메서드명을 명시합니다.",
  "option.DO_NOT_APPEND_STRINGS.title.whitelist_methods": "분석 제외 대상 인터페이스 및 메서드 목록",
  "option.DO_NOT_ASSIGN_EXTERNAL_DATA_TO_MEMBER_VARIABLES.desc.excluded_class": "오류를 검출하지 않고 제외할 클래스 명을 작성합니다.\n예시) .*Dto",
  "option.DO_NOT_ASSIGN_EXTERNAL_DATA_TO_MEMBER_VARIABLES.desc.excluded_method": "오류를 검출하지 않고 제외할 메소드 명을 작성합니다.\n예시) .*Dto",
  "option.DO_NOT_ASSIGN_EXTERNAL_DATA_TO_MEMBER_VARIABLES.desc.excluded_package": "오류를 검출하지 않고 제외할 패키지 명을 작성합니다.\n예시) .*dto",
  "option.DO_NOT_ASSIGN_EXTERNAL_DATA_TO_MEMBER_VARIABLES.title.excluded_class": "제외 클래스",
  "option.DO_NOT_ASSIGN_EXTERNAL_DATA_TO_MEMBER_VARIABLES.title.excluded_method": "제외 메소드",
  "option.DO_NOT_ASSIGN_EXTERNAL_DATA_TO_MEMBER_VARIABLES.title.excluded_package": "제외 패키지",
  "option.DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES.title.exclude_method": "분석 제외 메소드",
  "option.DO_NOT_BASE_SECURITY_CHECKS_ON_UNTRUSTED_SOURCES.title.exclude_path": "분석 제외 경로",
  "option.DO_NOT_CALL_STREAM_IN_METHOD.desc.stream_list": "검출할 분석 대상을 입력합니다.",
  "option.DO_NOT_CALL_STREAM_IN_METHOD.title.stream_list": "분석 대상",
  "option.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.title.alarm": "검출 규칙",
  "option.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.title.exclude": "예외 규칙",
  "option.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.title.propagator": "전파 규칙",
  "option.DO_NOT_COMPARE_OR_INSPECT_THE_STRING_REPRESENTATION_OF_FLOATING_POINT_VALUES.title.suggestion_filter_function": "제안할 필터 함수",
  "option.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.desc.excluded_conditions": "검출에서 제외할 조건문을 입력하세요.\n예시) if, else if, switch",
  "option.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.desc.excluded_loops": "검출에서 제외할 반복문을 입력하세요.\n예시) do, while, for",
  "option.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.desc.forbidden_patterns": "입력한 범위 내의 텍스트를 발견한 경우 이슈로 검출합니다. 정규식으로 하나의 항목만 입력하세요.",
  "option.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.desc.whitelist_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.title.excluded_conditions": "검출 제외 조건문",
  "option.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.title.excluded_loops": "검출 제외할 반복문",
  "option.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.title.forbidden_patterns": "금지 패턴 목록",
  "option.DO_NOT_COMPARE_STRING_WITH_HARDCODED_EQUALS.title.whitelist_patterns": "검출 예외 패턴 목록",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.desc.exception_class": "금지할 Exception 클래스 목록을 텍스트로 입력받아서 해당 Exception 인스턴스를 생성할 경우 제외시키는 옵션입니다.",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.desc.target_path": "파일 경로를 텍스트로 입력하면 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 전체 경로로 하나의 항목만 입력하세요.",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.desc.target_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.desc.whitelist_path": "파일 경로를 텍스트로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출에서 제외합니다.",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.desc.whitelist_path_pattern": "입력한 파일 경로와 일치하는 파일을 발견한 경우 해당 파일을 검출에서 제외합니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.title.exception_class": "금지할 Exception 클래스 목록",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.title.target_path": "분석 대상 파일 경로",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.title.target_path_pattern": "분석 대상 파일 경로의 정규식 패턴",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.title.whitelist_path": "허용된 파일 경로",
  "option.DO_NOT_CREATE_FORBIDDEN_EXCEPTION_INSTANCES.title.whitelist_path_pattern": "허용된 파일 경로의 정규식 패턴",
  "option.DO_NOT_CREATE_INSTANCE_IN_LOOP.desc.check_only_declaration_in_loop": "반복문 내에서 선언한 인스턴스만 검출하고 싶을 경우 체크합니다.",
  "option.DO_NOT_CREATE_INSTANCE_IN_LOOP.desc.excluded_class_type": "분석 제외 클래스 타입을 기술합니다.",
  "option.DO_NOT_CREATE_INSTANCE_IN_LOOP.title.check_only_declaration_in_loop": "반복문 내 선언 검사",
  "option.DO_NOT_CREATE_INSTANCE_IN_LOOP.title.excluded_class_type": "분석 제외 클래스 타입",
  "option.DO_NOT_CREATE_UNNECESSARY_STRING_INSTANCE.desc.target_method": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.DO_NOT_CREATE_UNNECESSARY_STRING_INSTANCE.title.target_method": "블랙리스트 단일",
  "option.DO_NOT_DECLARE_IN_LOOPS.desc.ignore_type_list": "무시할 타입을 설정합니다.",
  "option.DO_NOT_DECLARE_IN_LOOPS.desc.ignore_var_list": "무시할 변수를 설정합ㄴ다.",
  "option.DO_NOT_DECLARE_IN_LOOPS.title.ignore_type_list": "무시할 타입",
  "option.DO_NOT_DECLARE_IN_LOOPS.title.ignore_var_list": "무시할 변수",
  "option.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.title.alarm": "검출 규칙",
  "option.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.title.exclude": "예외 규칙",
  "option.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.title.propagator": "전파 규칙",
  "option.DO_NOT_LET_EXTERNAL_PROCESSES_BLOCK_ON_IO_BUFFERS.title.suggestion_filter_function": "제안할 필터 함수",
  "option.DO_NOT_LOCK_OR_UNLOCK_IN_LOOP.desc.lock_or_unlock_functions": "Lock 혹은 Unlock r역할을 하는 메소드 이름을 입력합니다. \n 예시) Lock",
  "option.DO_NOT_LOCK_OR_UNLOCK_IN_LOOP.title.lock_or_unlock_functions": "Lock 혹은 Unlock 메소드 이름",
  "option.DO_NOT_LOG_UNSANITIZED_USER_INPUT.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_LOG_UNSANITIZED_USER_INPUT.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_LOG_UNSANITIZED_USER_INPUT.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_LOG_UNSANITIZED_USER_INPUT.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.DO_NOT_LOG_UNSANITIZED_USER_INPUT.title.alarm": "검출 규칙",
  "option.DO_NOT_LOG_UNSANITIZED_USER_INPUT.title.exclude": "예외 규칙",
  "option.DO_NOT_LOG_UNSANITIZED_USER_INPUT.title.propagator": "전파 규칙",
  "option.DO_NOT_LOG_UNSANITIZED_USER_INPUT.title.suggestion_filter_function": "제안할 필터 함수",
  "option.DO_NOT_MIX_SIGNED_AND_UNSIGNED.desc.allow_constant": "선택시 상수의 접미사와 관계없이, unsigned 및 signed 타입의 변수에 대해 연산할 수 있도록 허용합니다.",
  "option.DO_NOT_MIX_SIGNED_AND_UNSIGNED.desc.ignore_assign": "선택시 대입 연산자의 좌측항을 검사하지 않습니다.",
  "option.DO_NOT_MIX_SIGNED_AND_UNSIGNED.title.allow_constant": "상수를 모든 타입에 대해 연산할 수 있도록 허용",
  "option.DO_NOT_MIX_SIGNED_AND_UNSIGNED.title.ignore_assign": "대입 연산자를 검출 대상에서 제외합니다.",
  "option.DO_NOT_NOTIFY_IN_SYNCHRONIZED.desc.notify_method": "notify 메소드의 이름을 FQN으로 작성합니다.\n예시) java.lang.Object.notify",
  "option.DO_NOT_NOTIFY_IN_SYNCHRONIZED.title.notify_method": "notify 메소드 이름",
  "option.DO_NOT_OPERATE_ON_UNTRUSTED_FILE_LINKS.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_OPERATE_ON_UNTRUSTED_FILE_LINKS.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_OPERATE_ON_UNTRUSTED_FILE_LINKS.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.DO_NOT_OPERATE_ON_UNTRUSTED_FILE_LINKS.title.alarm": "검출 규칙",
  "option.DO_NOT_OPERATE_ON_UNTRUSTED_FILE_LINKS.title.exclude": "예외 규칙",
  "option.DO_NOT_OPERATE_ON_UNTRUSTED_FILE_LINKS.title.suggestion_filter_function": "제안할 필터 함수",
  "option.DO_NOT_OVERLOAD_LAND_LOR_COMMA.desc.is_checked_ampersand": "체크시 '&&' 연산자를 오버로딩했는지 검사합니다.",
  "option.DO_NOT_OVERLOAD_LAND_LOR_COMMA.title.is_checked_ampersand": "'&&' 연산자 검사",
  "option.DO_NOT_READ_STREAM_IN_LOOP.desc.stream_list": "스트림 이름을 입력합니다. \n 예시) FileInputStream",
  "option.DO_NOT_READ_STREAM_IN_LOOP.title.stream_list": "스트림 이름",
  "option.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.title.alarm": "검출 규칙",
  "option.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.title.exclude": "예외 규칙",
  "option.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.title.propagator": "전파 규칙",
  "option.DO_NOT_RELY_ON_THE_WRITE_METHOD_TO_OUTPUT_INTEGERS_OUTSIDE_THE_RANGE_0_TO_255.title.suggestion_filter_function": "제안할 필터 함수",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.desc.ignore_enum_constant": "옵션을 사용하는 경우, 열거형 상수 식별자를 검사하지 않습니다.",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.desc.ignore_field": "옵션을 사용하는 경우, 필드 식별자를 검사하지 않습니다.",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.desc.ignore_label": "옵션을 사용하는 경우, 라벨 식별자를 검사하지 않습니다.",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.desc.ignore_normal_variable": "옵션을 사용하는 경우, 일반 변수 식별자를 검사하지 않습니다.",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.desc.ignore_parameter": "선택시 파라메터 식별자를 검사하지 않습니다.",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.desc.ignore_routine": "선택시 함수 식별자를 검사하지 않습니다.",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.desc.ignore_tag": "선택시 태그 식별자를 검사하지 않습니다.",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.title.ignore_enum_constant": "열거형 상수 식별자를 무시",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.title.ignore_field": "필드 식별자를 무시",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.title.ignore_label": "라벨 식별자를 무시",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.title.ignore_normal_variable": "일반 변수 식별자를 무시",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.title.ignore_parameter": "파라미터 식별자 무시",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.title.ignore_routine": "함수 식별자를 무시",
  "option.DO_NOT_REUSE_IDENTIFIER_NAME.title.ignore_tag": "태그 식별자를 무시",
  "option.DO_NOT_SLEEP_OR_YIELD_WITHOUT_CONTROL.desc.sleep_method": "sleep 메소드의 이름을 FQN으로 작성합니다.\n예시) java.lang.Thread.sleep",
  "option.DO_NOT_SLEEP_OR_YIELD_WITHOUT_CONTROL.desc.yield_method": "yield 메소드의 이름을 FQN으로 작성합니다.\n예시) java.lang.Thread.yield",
  "option.DO_NOT_SLEEP_OR_YIELD_WITHOUT_CONTROL.title.sleep_method": "sleep 메소드 이름",
  "option.DO_NOT_SLEEP_OR_YIELD_WITHOUT_CONTROL.title.yield_method": "yield 메소드 이름",
  "option.DO_NOT_USE_ADJACENT_BINARY_OPERATOR.desc.check_existence_only": "옵션을 사용하는 경우, 공백 개수와는 관계 없이 공백 존재 유무만 검사합니다.",
  "option.DO_NOT_USE_ADJACENT_BINARY_OPERATOR.desc.required_whitespaces": "연산자와 피연산자 사이에 필요한 공백 개수를 작성합니다.\n예시) 1",
  "option.DO_NOT_USE_ADJACENT_BINARY_OPERATOR.title.check_existence_only": "공백 존재 유무만 검사",
  "option.DO_NOT_USE_ADJACENT_BINARY_OPERATOR.title.required_whitespaces": "필요한 공백 개수",
  "option.DO_NOT_USE_ARRAY.desc.expand_typedef": "옵션을 사용하는 경우, 타입을 재정의한 변수를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.desc.scope_target_global": "옵션을 사용하는 경우, 전역 범위를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.desc.scope_target_local": "옵션을 사용하는 경우, 지역 범위를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.desc.scope_target_parameter": "옵션을 사용하는 경우, 인자를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.desc.variable_target_const": "옵션을 사용하는 경우, 상수를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.desc.variable_target_non_const": "옵션을 사용하는 경우, 비상수를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.desc.variable_target_signed": "옵션을 사용하는 경우, 부호있는 정수를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.desc.variable_target_unsigned": "옵션을 사용하는 경우, 부호없는 정수를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.title.expand_typedef": "타입 재정의(typedef) 변수를 검사합니다.",
  "option.DO_NOT_USE_ARRAY.title.scope_target_global": "전역 범위 검사 여부",
  "option.DO_NOT_USE_ARRAY.title.scope_target_local": "지역 범위 검사 여부",
  "option.DO_NOT_USE_ARRAY.title.scope_target_parameter": "인자 검사 여부",
  "option.DO_NOT_USE_ARRAY.title.variable_target_const": "상수 검사 여부",
  "option.DO_NOT_USE_ARRAY.title.variable_target_non_const": "비상수 검사 여부",
  "option.DO_NOT_USE_ARRAY.title.variable_target_signed": "부호있는 정수 검사 여부",
  "option.DO_NOT_USE_ARRAY.title.variable_target_unsigned": "부호없는 정수 검사 여부",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE.desc.constant_only": "분석 대상을 상수만을 대상으로 변경합니다.",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE.desc.excluded_keywords": "abstract, interface, public, protected, private, default, static, final(필수)등의 검출에서 제외할 키워드를 입력합니다.",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE.desc.whitelist_names": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE.desc.whitelist_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE.title.constant_only": "분석 대상 상수로 변경",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE.title.excluded_keywords": "제외 키워드",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE.title.whitelist_names": "화이트리스트 단일",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE.title.whitelist_patterns": "화이트리스트 범위",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE_FINAL.desc.excluded_keywords": "abstract, interface, public, protected, private, default, static, final(필수)등의 검출에서 제외할 키워드를 입력합니다.",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE_FINAL.desc.whitelist_names": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE_FINAL.desc.whitelist_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE_FINAL.title.excluded_keywords": "제외 키워드",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE_FINAL.title.whitelist_names": "화이트리스트 단일",
  "option.DO_NOT_USE_CLASS_MEMBER_VARIABLE_FINAL.title.whitelist_patterns": "화이트리스트 범위",
  "option.DO_NOT_USE_DANGEROUS_FUNCTIONS.OBJC.desc.dangerous_functions": "사용을 금지할 함수 목록을 적습니다.",
  "option.DO_NOT_USE_DANGEROUS_FUNCTIONS.OBJC.title.dangerous_functions": "금지 함수 목록",
  "option.DO_NOT_USE_DANGEROUS_FUNCTIONS.desc.function_should_not_be_used": "사용을 금지할 함수 목록을 적습니다.",
  "option.DO_NOT_USE_DANGEROUS_FUNCTIONS.title.function_should_not_be_used": "금지 함수 목록",
  "option.DO_NOT_USE_DEPRECATED_API.desc.deprecated_api": "사용되지 않을 api 클래스 이름을 FQN으로 작성합니다.\n예시) java.util.Date",
  "option.DO_NOT_USE_DEPRECATED_API.title.deprecated_api": "사용되지 않을 api 클래스 이름",
  "option.DO_NOT_USE_EXTERN_OR_STATIC.desc.check_extern": "옵션을 사용하는 경우, extern 변수 혹은 함수를 검사합니다.",
  "option.DO_NOT_USE_EXTERN_OR_STATIC.desc.check_static": "옵션을 사용하는 경우, static 변수 혹은 함수를 검사합니다.",
  "option.DO_NOT_USE_EXTERN_OR_STATIC.desc.scope_target_global": "전역 범위에서 검사합니다.",
  "option.DO_NOT_USE_EXTERN_OR_STATIC.desc.scope_target_local": "옵션을 사용하는 경우, 지역 범위에서 검사합니다.",
  "option.DO_NOT_USE_EXTERN_OR_STATIC.title.check_extern": "extern 변수/함수 검사 여부",
  "option.DO_NOT_USE_EXTERN_OR_STATIC.title.check_static": "static 변수/함수 검사 여부",
  "option.DO_NOT_USE_EXTERN_OR_STATIC.title.scope_target_global": "전역(global) 범위에서 검사",
  "option.DO_NOT_USE_EXTERN_OR_STATIC.title.scope_target_local": "지역(local) 범위에서만 검사",
  "option.DO_NOT_USE_GETLOGIN_IN_MULTI_THREAD.desc.function_should_not_be_used": "금지 함수를 설정합니다.",
  "option.DO_NOT_USE_GETLOGIN_IN_MULTI_THREAD.title.function_should_not_be_used": "사용 금지 함수",
  "option.DO_NOT_USE_GOTO_STATEMENT.desc.ignore_macro": "매크로 내 goto 무시 여부",
  "option.DO_NOT_USE_GOTO_STATEMENT.desc.max_goto_statement_number": "함수당 허용하려는 goto 문의 최대 개수를 입력합니다.",
  "option.DO_NOT_USE_GOTO_STATEMENT.title.ignore_macro": "옵션을 사용하는 경우, 매크로 내 goto 문을 무시합니다.",
  "option.DO_NOT_USE_GOTO_STATEMENT.title.max_goto_statement_number": "함수당 goto 문의 최대 개수",
  "option.DO_NOT_USE_HARD_CODING.CALL.desc.excluded_expr": "제외할 표현식을 설정합니다.",
  "option.DO_NOT_USE_HARD_CODING.CALL.desc.param_target_character": "옵션을 사용하는 경우, char 인자를 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.CALL.desc.param_target_float": "옵션을 사용하는 경우, 부동 소수점값 인자를 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.CALL.desc.param_target_integer": "옵션을 사용하는 경우, 정수값 인자를 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.CALL.desc.param_target_string": "옵션을 사용하는 경우, 문자열값 인자를 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.CALL.desc.target_expr": "하드코드 표현식을 설정합니다.",
  "option.DO_NOT_USE_HARD_CODING.CALL.desc.target_func": "검사할 함수 호출을 설정합니다. (클래스::메서드|하드코딩 파라미터 인덱스)",
  "option.DO_NOT_USE_HARD_CODING.CALL.title.excluded_expr": "제외 표현",
  "option.DO_NOT_USE_HARD_CODING.CALL.title.param_target_character": "char형 인자 검사",
  "option.DO_NOT_USE_HARD_CODING.CALL.title.param_target_float": "부동 소수점 인자 검사",
  "option.DO_NOT_USE_HARD_CODING.CALL.title.param_target_integer": "정수 인자 검사",
  "option.DO_NOT_USE_HARD_CODING.CALL.title.param_target_string": "문자열 인자 검사",
  "option.DO_NOT_USE_HARD_CODING.CALL.title.target_expr": "하드코드 표현",
  "option.DO_NOT_USE_HARD_CODING.CALL.title.target_func": "검사 대상 함수 호출",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.desc.excluded_expr": "분석 제외 수식의 정규표현식을 적습니다.",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.desc.init_target_character": "문자형 초기화 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.desc.init_target_float": "부동소수점형 초기화 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.desc.init_target_integer": "정수형 초기화 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.desc.init_target_string": "문자열 초기화 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.desc.target_expr": "분석 대상 수식의 정규표현식을 적습니다.",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.title.excluded_expr": "분석 제외 수식",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.title.init_target_character": "문자형 초기화 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.title.init_target_float": "부동소수점형 초기화 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.title.init_target_integer": "정수형 초기화 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.title.init_target_string": "문자열 초기화 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.INITIALIZATION.title.target_expr": "분석 대상 수식",
  "option.DO_NOT_USE_HARD_CODING.NUMBER.desc.exclude_final": "옵션을 사용하는 경우, final로 선언된 상수를 검출하지 않습니다.",
  "option.DO_NOT_USE_HARD_CODING.NUMBER.desc.exclude_for_init": "옵션을 사용하는 경우, for의 초기화 구문에서 사용된 숫자는 검출에서 제외합니다.",
  "option.DO_NOT_USE_HARD_CODING.NUMBER.desc.excluded_number_literal": "검출에서 제외할 숫자 상수를 작성합니다.\n예시) 0",
  "option.DO_NOT_USE_HARD_CODING.NUMBER.title.exclude_final": "final 선언 제외 여부",
  "option.DO_NOT_USE_HARD_CODING.NUMBER.title.exclude_for_init": "For 초기화 구문 제외",
  "option.DO_NOT_USE_HARD_CODING.NUMBER.title.excluded_number_literal": "제외할 숫자 상수",
  "option.DO_NOT_USE_HARD_CODING.PASSWORD.desc.call_param_target_in_function": "암호가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 명) 형식으로 작성합니다.\n예시) 6:SQLConnect",
  "option.DO_NOT_USE_HARD_CODING.PASSWORD.desc.password_variable_name": "비밀번호로 사용되는 변수 이름을 작성합니다.\n예시) password",
  "option.DO_NOT_USE_HARD_CODING.PASSWORD.title.call_param_target_in_function": "대상 함수 및 인자",
  "option.DO_NOT_USE_HARD_CODING.PASSWORD.title.password_variable_name": "비밀번호 변수 이름",
  "option.DO_NOT_USE_HARD_CODING.USERNAME.desc.call_param_target_in_function": "검출 대상 함수와 인자의 인덱스를 적습니다. 예) SQLConnect의 4번째 인자",
  "option.DO_NOT_USE_HARD_CODING.USERNAME.title.call_param_target_in_function": "대상 함수와 인자 인덱스",
  "option.DO_NOT_USE_HARD_CODING.desc.excluded_expr": "분석 제외 수식의 정규표현식을 적습니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_assignment": "대입문의 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_call": "호출의 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_character": "문자 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_conditional": "조건문의 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_const": "상수 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_float": "부동소수점형 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_integer": "정수 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_non_const": "비상수형 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_return": "반환 구문의 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.hard_coding_target_string": "문자열 하드코딩을 검사합니다.",
  "option.DO_NOT_USE_HARD_CODING.desc.target_expr": "분석 대상 수식의 정규표현식을 적습니다.",
  "option.DO_NOT_USE_HARD_CODING.title.excluded_expr": "분석 제외 수식",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_assignment": "대입문 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_call": "호출 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_character": "문자 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_conditional": "조건문 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_const": "상수 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_float": "부동소수점형 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_integer": "정수형 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_non_const": "비상수형 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_return": "반환 구문 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.hard_coding_target_string": "문자열 하드코딩 검사 여부",
  "option.DO_NOT_USE_HARD_CODING.title.target_expr": "분석 대상 수식",
  "option.DO_NOT_USE_INNER_CLASS.desc.allowed_list": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.DO_NOT_USE_INNER_CLASS.desc.allowed_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.DO_NOT_USE_INNER_CLASS.title.allowed_list": "화이트리스트 단일",
  "option.DO_NOT_USE_INNER_CLASS.title.allowed_patterns": "화이트리스트 범위",
  "option.DO_NOT_USE_MODULAR.desc.exclude_follow_by_same_division": "바로 이전 표현식이 나머지 연산의 우측 피연산자와 동일한 피연산자로 나누기 연산을 하는 경우는 제외합니다.<br />예시 : v1",
  "option.DO_NOT_USE_MODULAR.title.exclude_follow_by_same_division": "나머지 연산의 예외사항",
  "option.DO_NOT_USE_PUBLIC_FIELD.desc.excluded_variable": "검출에서 제외할 필드 이름을 작성합니다.\n예시) excluded",
  "option.DO_NOT_USE_PUBLIC_FIELD.desc.target_variable": "선언 직후 초기화가 수행되는 경우를 검출할 대상 필드 이름을 작성합니다.\n예시) field",
  "option.DO_NOT_USE_PUBLIC_FIELD.title.excluded_variable": "제외할 필드 이름",
  "option.DO_NOT_USE_PUBLIC_FIELD.title.target_variable": "대상 필드 이름",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.desc.ignore_enum_constant": "옵션을 사용하는 경우, 열거형 상수 식별자를 검사하지 않습니다.",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.desc.ignore_label": "옵션을 사용하는 경우, 라벨 식별자를 검사하지 않습니다.",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.desc.ignore_normal_variable": "옵션을 사용하는 경우, 일반 변수 식별자를 검사하지 않습니다.",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.desc.ignore_parameter": "선택시 파라메터 식별자를 검사하지 않습니다.",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.desc.ignore_routine": "선택시 함수 식별자를 검사하지 않습니다.",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.desc.ignore_typedef": "옵션을 사용하는 경우, typedef 식별자를 검사하지 않습니다.",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.title.ignore_enum_constant": "열거형 상수 식별자를 무시",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.title.ignore_label": "라벨 식별자를 무시",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.title.ignore_normal_variable": "일반 변수 식별자를 무시",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.title.ignore_parameter": "파라미터 식별자 무시",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.title.ignore_routine": "함수 식별자를 무시",
  "option.DO_NOT_USE_SAME_NAME_IN_NESTED.title.ignore_typedef": "typedef 식별자를 무시",
  "option.DO_NOT_USE_SERVERSOCKET.desc.target_api": "분석 대상 클래스 타입을 입력합니다.",
  "option.DO_NOT_USE_SERVERSOCKET.title.target_api": "분석 대상 클래스 타입",
  "option.DO_NOT_USE_SIZEOF_ON_PTR.desc.ignore_var": "무시할 변수 이름을 입력합니다.",
  "option.DO_NOT_USE_SIZEOF_ON_PTR.desc.memset_function": "변수의 메모리를 설정하는 함수 이름을 작성합니다.\n예시) memset",
  "option.DO_NOT_USE_SIZEOF_ON_PTR.desc.print_function": "출력을 수행하는 함수 이름을 작성합니다. 메모리 설정 함수를 이용하여 설정된 포인터형 변수가 곧바로 출력 함수의 인자로 사용될 경우 오류로 검출하지 않습니다.\n예시) printf",
  "option.DO_NOT_USE_SIZEOF_ON_PTR.title.ignore_var": "무시할 변수",
  "option.DO_NOT_USE_SIZEOF_ON_PTR.title.memset_function": "메모리 설정 함수",
  "option.DO_NOT_USE_SIZEOF_ON_PTR.title.print_function": "출력 함수",
  "option.DO_NOT_USE_STATIC_IN_HEADER.desc.ignore_function": "헤더 파일에서 정적 함수 사용을 허용합니다.",
  "option.DO_NOT_USE_STATIC_IN_HEADER.desc.ignore_variable": "헤더 파일에서 정적 변수 사용을 허용합니다.",
  "option.DO_NOT_USE_STATIC_IN_HEADER.title.ignore_function": "정적 함수 사용 가능 여부",
  "option.DO_NOT_USE_STATIC_IN_HEADER.title.ignore_variable": "정적 변수 사용 가능 여부",
  "option.DO_NOT_USE_SYSTEM.OBJC.desc.system_function": "시스템 호출을 야기하는 함수명을 입력합니다.",
  "option.DO_NOT_USE_SYSTEM.OBJC.title.system_function": "시스템 호출 함수",
  "option.DO_NOT_USE_SYSTEM.desc.function_should_not_be_used": "사용 금지 함수를 설정합니다.",
  "option.DO_NOT_USE_SYSTEM.title.function_should_not_be_used": "사용 금지 함수",
  "option.DO_NOT_WAIT_IN_SYNCHRONIZED_WITHOUT_CONTROL.desc.check_if_stmt": "체크해제시 if문 내의 wait 메소드를 검출합니다.",
  "option.DO_NOT_WAIT_IN_SYNCHRONIZED_WITHOUT_CONTROL.desc.wait_method": "wait 메소드의 이름을 FQN으로 작성합니다.\n예시) java.util.concurrent.locks.Lock.wait",
  "option.DO_NOT_WAIT_IN_SYNCHRONIZED_WITHOUT_CONTROL.title.check_if_stmt": "if문 검출 여부",
  "option.DO_NOT_WAIT_IN_SYNCHRONIZED_WITHOUT_CONTROL.title.wait_method": "wait 메소드 이름",
  "option.DYNAMIC_CODE_EVALUATION.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.DYNAMIC_CODE_EVALUATION.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.DYNAMIC_CODE_EVALUATION.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.DYNAMIC_CODE_EVALUATION.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) eval$param(*)",
  "option.DYNAMIC_CODE_EVALUATION.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.DYNAMIC_CODE_EVALUATION.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.DYNAMIC_CODE_EVALUATION.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.DYNAMIC_CODE_EVALUATION.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.DYNAMIC_CODE_EVALUATION.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.DYNAMIC_CODE_EVALUATION.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.DYNAMIC_CODE_MANIPULATION.JS.desc.forbidden_operator": "금지된 오퍼레이터를 작성합니다.",
  "option.DYNAMIC_CODE_MANIPULATION.JS.title.forbidden_operator": "금지된 오퍼레이터",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"javax.script.ScriptEngine.eval\")",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.DYNAMIC_CODE_MANIPULATION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"exec\")",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"django.http.HttpRequest.GET\")",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.DYNAMIC_CODE_MANIPULATION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.DYNAMIC_CODE_MANIPULATION.desc.class_type": "외부 입력 값을 사용하는 클래스 이름을 설정합니다.",
  "option.DYNAMIC_CODE_MANIPULATION.desc.filter_method": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.\n예시) whiteList",
  "option.DYNAMIC_CODE_MANIPULATION.desc.request_method": "외부 입력 값을 획득하는 메소드 이름을 입력합니다.\n예시) javax.servlet.http.HttpServletRequest.getParameter",
  "option.DYNAMIC_CODE_MANIPULATION.desc.target_method_name": "외부 입력 값을 사용하는 클래스의 메소드를 설정합니다.",
  "option.DYNAMIC_CODE_MANIPULATION.title.class_type": "외부 입력 값을 사용하는 클래스",
  "option.DYNAMIC_CODE_MANIPULATION.title.filter_method": "외부 입력 값 검증 메소드",
  "option.DYNAMIC_CODE_MANIPULATION.title.request_method": "외부 입력 값 획득 메소드",
  "option.DYNAMIC_CODE_MANIPULATION.title.target_method_name": "외부 입력 값을 사용하는 클래스의 메소드",
  "option.EACH_COMMENT_LINE_LENGTH.desc.start_end_comment": "시작 및 종료 주석을 설정합니다. 해당 주석으로 묶인 주석이 하나의 블록 주석으로 인식됩니다.",
  "option.EACH_COMMENT_LINE_LENGTH.title.start_end_comment": "시작 및 종료 주석",
  "option.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.title.alarm": "검출 규칙",
  "option.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.title.exclude": "예외 규칙",
  "option.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.title.propagator": "전파 규칙",
  "option.ELIMINATE_NONCHARACTER_CODE_POINTS_BEFORE_VALIDATION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.EMPTY_ARRAY_SIZE.MISRA2012.desc.check_initializer": "옵션을 사용하는 경우, 빈 배열이어도 초기화 구문이 있으면 결함으로 검출하지 않습니다.",
  "option.EMPTY_ARRAY_SIZE.MISRA2012.desc.include_char_type": "옵션을 사용하는 경우, char 형으로 선언된 배열도 분석에 포함시킵니다.",
  "option.EMPTY_ARRAY_SIZE.MISRA2012.title.check_initializer": "초기화 구문이 있으면 무시",
  "option.EMPTY_ARRAY_SIZE.MISRA2012.title.include_char_type": "char 형 포함 여부",
  "option.EMPTY_ARRAY_SIZE.desc.check_extern_only": "옵션을 사용하는 경우, extern으로 선언된 배열에 대해서만 분석합니다.",
  "option.EMPTY_ARRAY_SIZE.desc.check_initializer": "옵션을 사용하는 경우, 빈 배열이어도 초기화 구문이 있으면 결함으로 검출하지 않습니다.",
  "option.EMPTY_ARRAY_SIZE.desc.include_char_type": "옵션을 사용하는 경우, char 형으로 선언된 배열도 분석에 포함시킵니다.",
  "option.EMPTY_ARRAY_SIZE.title.check_extern_only": "extern 배열만 검출 여부",
  "option.EMPTY_ARRAY_SIZE.title.check_initializer": "초기화 구문이 있으면 무시",
  "option.EMPTY_ARRAY_SIZE.title.include_char_type": "char 형 포함 여부",
  "option.EMPTY_BRANCH.desc.allow_oneline_if": "옵션을 사용하는 경우, if 문에 else 구문이 없더라도 이슈를 검출하지 않습니다.",
  "option.EMPTY_BRANCH.desc.check_empty_case": "옵션을 사용하는 경우, 빈 case branch를 검출합니다.",
  "option.EMPTY_BRANCH.desc.check_empty_default_case": "옵션을 사용하는 경우, 빈 default case branch를 검출합니다.",
  "option.EMPTY_BRANCH.desc.check_empty_else_branch": "옵션을 사용하는 경우, 빈 else branch를 검출합니다.",
  "option.EMPTY_BRANCH.desc.treat_comment_as_nonempty": "옵션을 사용하는 경우, 주석문이 작성되어 있다면 비어있지 않은 것으로 간주합니다. ",
  "option.EMPTY_BRANCH.title.allow_oneline_if": "else 구문이 없는 if문 허용",
  "option.EMPTY_BRANCH.title.check_empty_case": "빈 case branch 검출",
  "option.EMPTY_BRANCH.title.check_empty_default_case": "빈 default case branch 검출",
  "option.EMPTY_BRANCH.title.check_empty_else_branch": "빈 else branch 검출",
  "option.EMPTY_BRANCH.title.treat_comment_as_nonempty": "주석문이 있을 경우 검출하지 않습니다.",
  "option.EMPTY_CATCH_BLOCK.desc.ignore_close_only": "옵션을 사용하는 경우, try 블록 내 'close' 메소드만 존재한다면 catch 블록이 비어있어도 이슈를 검출하지 않습니다.",
  "option.EMPTY_CATCH_BLOCK.title.ignore_close_only": "try 내 close 메소드 무시",
  "option.EMPTY_CLASS_BLOCK.desc.check_inner": "inner 클래스 검사 활성화",
  "option.EMPTY_CLASS_BLOCK.desc.comment_pattern": "빈 블록을 대체할 특정 주석문을 정규식으로 설정하는 옵션입니다.",
  "option.EMPTY_CLASS_BLOCK.desc.comments": "입력한 패턴의 주석문이 포함되어 있는 블록은 검출하지 않습니다. 주석문 패턴을 설정하지 않으면 주석이 있는 모든 빈 블록을 검출하지 않습니다.",
  "option.EMPTY_CLASS_BLOCK.desc.excluded_modifiers": "abstract, interface, public, protected, private, default, (일반 클래스)등의 검출에서 제외할 키워드를 입력합니다.",
  "option.EMPTY_CLASS_BLOCK.title.check_inner": "inner 클래스 검사",
  "option.EMPTY_CLASS_BLOCK.title.comment_pattern": "빈 블록 주석문 패턴 제한",
  "option.EMPTY_CLASS_BLOCK.title.comments": "빈 블록 주석으로 대체",
  "option.EMPTY_CLASS_BLOCK.title.excluded_modifiers": "제외 키워드",
  "option.EMPTY_DO_WHILE_BLOCK.desc.comment_pattern": "빈 블록을 대체할 특정 주석문을 정규식으로 설정하는 옵션입니다.",
  "option.EMPTY_DO_WHILE_BLOCK.desc.comments": "입력한 패턴의 주석문이 포함되어 있는 블록은 검출하지 않습니다. 주석문 패턴을 설정하지 않으면 주석이 있는 모든 빈 블록을 검출하지 않습니다.",
  "option.EMPTY_DO_WHILE_BLOCK.desc.excluded_type": "검출에서 제외할 반복문을 입력합니다.(do, while ,등)",
  "option.EMPTY_DO_WHILE_BLOCK.title.comment_pattern": "빈 블록 주석문 패턴 제한",
  "option.EMPTY_DO_WHILE_BLOCK.title.comments": "빈 블록 주석으로 대체",
  "option.EMPTY_DO_WHILE_BLOCK.title.excluded_type": "검출 제외할 반복문",
  "option.EMPTY_FOR_BLOCK.desc.comment_pattern": "빈 블록을 대체할 특정 주석문을 정규식으로 설정하는 옵션입니다.",
  "option.EMPTY_FOR_BLOCK.desc.comments": "입력한 패턴의 주석문이 포함되어 있는 블록은 검출하지 않습니다. 주석문 패턴을 설정하지 않으면 주석이 있는 모든 빈 블록을 검출하지 않습니다.",
  "option.EMPTY_FOR_BLOCK.desc.excluded_variable": "검출 대상에서 제외할 변수 이름을 입력하세요.\n예시) i, j",
  "option.EMPTY_FOR_BLOCK.title.comment_pattern": "빈 블록 주석문 패턴 제한",
  "option.EMPTY_FOR_BLOCK.title.comments": "빈 블록 주석으로 대체",
  "option.EMPTY_FOR_BLOCK.title.excluded_variable": "검출에서 제외할 변수",
  "option.EMPTY_IF_BLOCK.desc.comment_pattern": "빈 블록을 대체할 특정 주석문을 정규식으로 설정하는 옵션입니다.",
  "option.EMPTY_IF_BLOCK.desc.comments": "입력한 패턴의 주석문이 포함되어 있는 블록은 검출하지 않습니다. 주석문 패턴을 설정하지 않으면 주석이 있는 모든 빈 블록을 검출하지 않습니다.",
  "option.EMPTY_IF_BLOCK.desc.excluded_conditions": "검출하지 않을 조건문을 입력합니다.(if, else, else if, 등)",
  "option.EMPTY_IF_BLOCK.title.comment_pattern": "빈 블록 주석문 패턴 제한",
  "option.EMPTY_IF_BLOCK.title.comments": "빈 블록 주석으로 대체",
  "option.EMPTY_IF_BLOCK.title.excluded_conditions": "검출 제외 조건문",
  "option.EMPTY_METHOD_BLOCK.desc.check_constructor": "일반 메소드 혹은 생성자만 검출하게 대상을 제한합니다.",
  "option.EMPTY_METHOD_BLOCK.desc.check_method": "일반 메소드 혹은 생성자만 검출하게 대상을 제한합니다.",
  "option.EMPTY_METHOD_BLOCK.desc.comment_pattern": "빈 블록을 대체할 특정 주석문을 정규식으로 설정하는 옵션입니다.",
  "option.EMPTY_METHOD_BLOCK.desc.comments": "입력한 패턴의 주석문이 포함되어 있는 블록은 검출하지 않습니다. 주석문 패턴을 설정하지 않으면 주석이 있는 모든 빈 블록을 검출하지 않습니다.",
  "option.EMPTY_METHOD_BLOCK.desc.excluded_modifiers": "abstract, interface, public, protected, private, default, (일반 클래스)등의 검출에서 제외할 키워드를 입력합니다.",
  "option.EMPTY_METHOD_BLOCK.title.check_constructor": "생성자 메소드 검출 대상 제한",
  "option.EMPTY_METHOD_BLOCK.title.check_method": "일반 메소드 검출 대상 제한",
  "option.EMPTY_METHOD_BLOCK.title.comment_pattern": "빈 블록 주석문 패턴 제한",
  "option.EMPTY_METHOD_BLOCK.title.comments": "빈 블록을 주석문 대체 허용",
  "option.EMPTY_METHOD_BLOCK.title.excluded_modifiers": "제외 키워드",
  "option.EMPTY_PASSWORD.CONFIG.desc.password_expr": "비밀번호로 간주할 수 있는 문자열을 작성합니다.\n예시) password",
  "option.EMPTY_PASSWORD.CONFIG.title.password_expr": "비밀번호 문자열",
  "option.EMPTY_SALT.PYTHON.desc.hash_salt_param": "해시 라이브러리 함수와 솔트 인자를 작성합니다.\n예시) hashlib\\.pbkdf2_hmac:salt:3",
  "option.EMPTY_SALT.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.EMPTY_SALT.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.EMPTY_SALT.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) base of name(\"read\") to return",
  "option.EMPTY_SALT.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"hashlib.sha256\")",
  "option.EMPTY_SALT.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(reg(\".*\"))",
  "option.EMPTY_SALT.PYTHON.title.hash_salt_param": "해시 함수와 솔트 인자",
  "option.EMPTY_SALT.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.EMPTY_SALT.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.EMPTY_SALT.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.EMPTY_SALT.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.EMPTY_SALT.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.EMPTY_STRING_CHECK.desc.target_method": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출하는 옵션입니다",
  "option.EMPTY_STRING_CHECK.title.target_method": "블랙리스트 단일",
  "option.EMPTY_SWITCH_BLOCK.desc.allow_fallthrough": "의도적으로 fall-through를 허용하기 위해 주석을 사용한 경우 검출에서 제외합니다.",
  "option.EMPTY_SWITCH_BLOCK.desc.allow_return_break": "가드 절 또는 조기 종료 목적 등으로 코드 블록 내에 단일로 사용된 return 및 break 구문을 위반 검출 대상에서 제외합니다.",
  "option.EMPTY_SWITCH_BLOCK.desc.comment_pattern": "빈 블록을 대체할 특정 주석문을 정규식으로 설정하는 옵션입니다.",
  "option.EMPTY_SWITCH_BLOCK.desc.comments": "입력한 패턴의 주석문이 포함되어 있는 블록은 검출하지 않습니다. 주석문 패턴을 설정하지 않으면 주석이 있는 모든 빈 블록을 검출하지 않습니다.",
  "option.EMPTY_SWITCH_BLOCK.desc.excluded_type": "검출에서 제외할 switch 구성 요소를 입력하세요.\n예시) case, default",
  "option.EMPTY_SWITCH_BLOCK.title.allow_fallthrough": "의도적 fall-through 허용",
  "option.EMPTY_SWITCH_BLOCK.title.allow_return_break": "단독 return/break 구문 허용",
  "option.EMPTY_SWITCH_BLOCK.title.comment_pattern": "빈 블록 주석문 패턴 제한",
  "option.EMPTY_SWITCH_BLOCK.title.comments": "빈 블록 주석으로 대체",
  "option.EMPTY_SWITCH_BLOCK.title.excluded_type": "검출에서 제외할 switch 구성 요소",
  "option.EMPTY_TRY_CATCH_BLOCK.desc.allow_nested": "중첩된 catch 문을 검출 대상에서 제외합니다.",
  "option.EMPTY_TRY_CATCH_BLOCK.desc.comment_pattern": "빈 블록을 대체할 특정 주석문을 정규식으로 설정하는 옵션입니다.",
  "option.EMPTY_TRY_CATCH_BLOCK.desc.comments": "입력한 패턴의 주석문이 포함되어 있는 블록은 검출하지 않습니다. 주석문 패턴을 설정하지 않으면 주석이 있는 모든 빈 블록을 검출하지 않습니다.",
  "option.EMPTY_TRY_CATCH_BLOCK.desc.excluded_type": "검출에서 제외할 예외 블록을 입력합니다.\n예시) try, catch, finally",
  "option.EMPTY_TRY_CATCH_BLOCK.title.allow_nested": "중첩된 catch 문 검출 대상 제외",
  "option.EMPTY_TRY_CATCH_BLOCK.title.comment_pattern": "빈 블록 주석문 패턴 제한",
  "option.EMPTY_TRY_CATCH_BLOCK.title.comments": "빈 블록 주석으로 대체",
  "option.EMPTY_TRY_CATCH_BLOCK.title.excluded_type": "검출 제외할 예외 블록",
  "option.ENCAPSULATE_ASSEMBLER.desc.allow_asm_macro": "체크시 asm 매크로를 허용합니다.",
  "option.ENCAPSULATE_ASSEMBLER.title.allow_asm_macro": "asm 매크로 허용",
  "option.ERROR_WITHOUT_ACTION.OBJC.desc.target_grp1": "호출 후, if 구문으로 리턴 값을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "option.ERROR_WITHOUT_ACTION.OBJC.title.target_grp1": "리턴 값 검사 대상 함수",
  "option.ERROR_WITHOUT_ACTION.desc.target_grp1": "호출 후, if 구문으로 리턴 값을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "option.ERROR_WITHOUT_ACTION.desc.target_grp2": "호출 후, if 구문으로 errno을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "option.ERROR_WITHOUT_ACTION.title.target_grp1": "리턴 값 검사 대상 함수",
  "option.ERROR_WITHOUT_ACTION.title.target_grp2": "errno 발생 함수",
  "option.EVAL_INJECTION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.EVAL_INJECTION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.EVAL_INJECTION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.EVAL_INJECTION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"eval\")",
  "option.EVAL_INJECTION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.EVAL_INJECTION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.EVAL_INJECTION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.EVAL_INJECTION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.EVAL_INJECTION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.EVAL_INJECTION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.EVAL_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.EVAL_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.EVAL_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\+$operand(*)->return",
  "option.EVAL_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) document.write$param(*)",
  "option.EVAL_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) document.URL$variable",
  "option.EVAL_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.EVAL_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.EVAL_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.EVAL_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.EVAL_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.EXCESSIVE_FUNCTION_CALLS.desc.max_call_number": "함수당 허용하려는 함수 호출의 최대 개수를 적습니다.",
  "option.EXCESSIVE_FUNCTION_CALLS.title.max_call_number": "함수당 함수호출의 최대 개수",
  "option.EXCESSIVE_IFS.desc.max_number_of_ifs": "함수당 허용 가능한 if 문의 최대 개수를 적습니다.",
  "option.EXCESSIVE_IFS.title.max_number_of_ifs": "함수당 if 문의 개수",
  "option.EXCESSIVE_SESSION_TIMEOUT.CAKEPHP.PHP.desc.min_timeout": "최소 세션 타임아웃을 입력합니다.\n예시) medium",
  "option.EXCESSIVE_SESSION_TIMEOUT.CAKEPHP.PHP.title.min_timeout": "최소 세션 타임아웃",
  "option.EXCESSIVE_STACK_DEPTH.desc.max_stack_variable_size": "스택 변수의 최대 크기를 적습니다.",
  "option.EXCESSIVE_STACK_DEPTH.title.max_stack_variable_size": "스택 변수의 최대 크기",
  "option.EXISTING_PASSWORD_RECOVERY.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.EXISTING_PASSWORD_RECOVERY.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.EXISTING_PASSWORD_RECOVERY.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.EXISTING_PASSWORD_RECOVERY.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.EXISTING_PASSWORD_RECOVERY.title.alarm": "검출 규칙",
  "option.EXISTING_PASSWORD_RECOVERY.title.exclude": "예외 규칙",
  "option.EXISTING_PASSWORD_RECOVERY.title.propagator": "전파 규칙",
  "option.EXISTING_PASSWORD_RECOVERY.title.suggestion_filter_function": "제안할 필터 함수",
  "option.EXPOSURE_OF_ADMINISTRATION_PAGE.desc.forbidden_page_name": "금지할 관리자 페이지 이름 형식을 입력합니다.\n예시) admin.*",
  "option.EXPOSURE_OF_ADMINISTRATION_PAGE.title.forbidden_page_name": "금지할 관리자 페이지 이름",
  "option.EXPOSURE_OF_DANGEROUS_METHOD.desc.dangerous_method": "위험한 메소드 이름 형식을 작성합니다.\n예시) .+\\.dangerousMethod",
  "option.EXPOSURE_OF_DANGEROUS_METHOD.title.dangerous_method": "위험한 메소드 이름",
  "option.EXPOSURE_OF_SYSTEM_DATA.KOTLIN.desc.exclude_print_stack_trace": "옵션을 사용하는 경우, printStackTrace 메소드 호출은 이슈로 검출하지 않습니다.",
  "option.EXPOSURE_OF_SYSTEM_DATA.KOTLIN.desc.exclude_println": "옵션을 사용하는 경우, println 메소드 호출은 이슈로 검출하지 않습니다.",
  "option.EXPOSURE_OF_SYSTEM_DATA.KOTLIN.title.exclude_print_stack_trace": "printStackTrace 호출 제외 여부",
  "option.EXPOSURE_OF_SYSTEM_DATA.KOTLIN.title.exclude_println": "println 호출 제외 여부",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.desc.forbidden_function": "호출 즉시 중요 정보가 노출되어 사용이 금지된 함수 이름을 작성합니다.\n 예시) traceback.print_.*",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\+$operand(*)->return",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .+\\\\.getFile$param(1)",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) document.URL$variable",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.title.forbidden_function": "금지된 함수",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.EXPOSURE_OF_SYSTEM_DATA.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.EXPOSURE_OF_SYSTEM_DATA.desc.additional_exception_class": "추가 검출할 예외 클래스 이름을 작성합니다.\n예시) java.io.IOException",
  "option.EXPOSURE_OF_SYSTEM_DATA.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.EXPOSURE_OF_SYSTEM_DATA.desc.default_exception_class": "체커가 검출할 기본 예외 클래스를 입력합니다.",
  "option.EXPOSURE_OF_SYSTEM_DATA.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.EXPOSURE_OF_SYSTEM_DATA.desc.exclude_print_stack_trace": "옵션을 사용하는 경우, printStackTrace 메소드 호출은 이슈로 검출하지 않습니다.",
  "option.EXPOSURE_OF_SYSTEM_DATA.desc.exclude_println": "옵션을 사용하는 경우, println 메소드 호출은 이슈로 검출하지 않습니다.",
  "option.EXPOSURE_OF_SYSTEM_DATA.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.EXPOSURE_OF_SYSTEM_DATA.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.EXPOSURE_OF_SYSTEM_DATA.title.additional_exception_class": "추가 예외 클래스",
  "option.EXPOSURE_OF_SYSTEM_DATA.title.alarm": "검출 규칙",
  "option.EXPOSURE_OF_SYSTEM_DATA.title.default_exception_class": "체커가 검증하는 기본 예외 클래스 목록",
  "option.EXPOSURE_OF_SYSTEM_DATA.title.exclude": "예외 규칙",
  "option.EXPOSURE_OF_SYSTEM_DATA.title.exclude_print_stack_trace": "printStackTrace 호출 제외 여부",
  "option.EXPOSURE_OF_SYSTEM_DATA.title.exclude_println": "println 호출 제외 여부",
  "option.EXPOSURE_OF_SYSTEM_DATA.title.propagator": "전파 규칙",
  "option.EXPOSURE_OF_SYSTEM_DATA.title.suggestion_filter_function": "제안할 필터 함수",
  "option.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.title.alarm": "검출 규칙",
  "option.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.title.exclude": "예외 규칙",
  "option.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.title.propagator": "전파 규칙",
  "option.EXTERNAL_CONTROL_OF_SYSTEM_OR_CONFIGURATION_SETTING.title.suggestion_filter_function": "제안할 필터 함수",
  "option.FIELD_COMMENT.desc.FieldComment": "변수 주석 형식을 정의합니다.",
  "option.FIELD_COMMENT.desc.field_position": "필드 변수 주석 검사 위치를 지정합니다.",
  "option.FIELD_COMMENT.desc.global_position": "전역 변수 주석 검사 위치를 지정합니다.",
  "option.FIELD_COMMENT.desc.is_check_not_exist_comment": "옵션을 사용하면 존재하지 않는 주석을 확인합니다.",
  "option.FIELD_COMMENT.desc.local_position": "지역 변수 주석 검사 위치를 지정합니다.",
  "option.FIELD_COMMENT.desc.variable_kind_field": "변수가 필드 변수인 것을 확인합니다.",
  "option.FIELD_COMMENT.desc.variable_kind_global": "변수가 전역 변수인 것을 확인합니다.",
  "option.FIELD_COMMENT.desc.variable_kind_local": "변수가 지역 변수인 것을 확인합니다.",
  "option.FIELD_COMMENT.title.FieldComment": "변수 주석 형식",
  "option.FIELD_COMMENT.title.field_position": "필드 변수 주석 위치",
  "option.FIELD_COMMENT.title.global_position": "전역 변수 주석 위치",
  "option.FIELD_COMMENT.title.is_check_not_exist_comment": "없는 주석 검출 확인",
  "option.FIELD_COMMENT.title.local_position": "지역 변수 주석 위치",
  "option.FIELD_COMMENT.title.variable_kind_field": "필드 변수 검사 확인",
  "option.FIELD_COMMENT.title.variable_kind_global": "전역 변수 검사 확인",
  "option.FIELD_COMMENT.title.variable_kind_local": "지역 변수 검사 확인",
  "option.FILE_COMMENT.desc.FileComment": "파일 주석 형식을 정의합니다.",
  "option.FILE_COMMENT.desc.comment_number": "파일 당 주석의 수를 지정합니다.",
  "option.FILE_COMMENT.title.FileComment": "파일 주석 형식",
  "option.FILE_COMMENT.title.comment_number": "파일 주석 수",
  "option.FILE_PERMISSION_MANIPULATION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.FILE_PERMISSION_MANIPULATION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.FILE_PERMISSION_MANIPULATION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.FILE_PERMISSION_MANIPULATION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"chmod\")",
  "option.FILE_PERMISSION_MANIPULATION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.FILE_PERMISSION_MANIPULATION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.FILE_PERMISSION_MANIPULATION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.FILE_PERMISSION_MANIPULATION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.FILE_PERMISSION_MANIPULATION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.FILE_PERMISSION_MANIPULATION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.FIND_STRING_IN_CONTENT.desc.exclude_dir": "검출 제외 폴더 경로를 glob 패턴을 사용하여 입력합니다.\n예시) `src/java/**/core/**`",
  "option.FIND_STRING_IN_CONTENT.desc.exclude_extension": "검출 제외 파일 확장자를 지정합니다.\n예시) java",
  "option.FIND_STRING_IN_CONTENT.desc.rule": "검출 규칙을 정규식을 사용하여 지정합니다.",
  "option.FIND_STRING_IN_CONTENT.desc.target_dir": "분석 대상 폴더 경로를 glob 패턴을 사용하여 입력합니다.\n예시) `src/java/**/core/**`",
  "option.FIND_STRING_IN_CONTENT.desc.target_extension": "분석 대상 확장자를 입력합니다.\n예시) java",
  "option.FIND_STRING_IN_CONTENT.title.exclude_dir": "제외 폴더 경로",
  "option.FIND_STRING_IN_CONTENT.title.exclude_extension": "제외 파일 확장자",
  "option.FIND_STRING_IN_CONTENT.title.rule": "검출 규칙",
  "option.FIND_STRING_IN_CONTENT.title.target_dir": "분석 대상 폴더",
  "option.FIND_STRING_IN_CONTENT.title.target_extension": "분석 대상 확장자",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.desc.allowConditionalExpression": "조건문에서의 조건에서 대입문에 허용여부를 입력하세요. (true/false)",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.desc.allowConditionalExpressionResult": "조건문에의 결과에 대입문에 대한 허용여부를 입력하세요. (true/false)",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.desc.allowFor": "for문의 조건에서 대입문의 허용여부를 입력하세요. (true/false)",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.desc.allowIf": "if문 조건내에서 대입문을 허용여부를 입력하세요. (true/false)",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.desc.allowWhile": "while문의 조건에서 대입문의 허용여부를 입력하세요. (true/false)",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.title.allowConditionalExpression": "조건연산문에서의 허용 (조건)",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.title.allowConditionalExpressionResult": "조건연산문에서의 허용 (결과)",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.title.allowFor": "for문 허용",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.title.allowIf": "if문 허용",
  "option.FORBIDDEN.ASSIGNMENT_IN_OPERAND.JS.title.allowWhile": "while문 허용",
  "option.FORBIDDEN.COOKIE.PHP.desc.forbidden_cookie_function": "금지할 쿠키 함수의 이름을 작성합니다.\n예시) setcookie",
  "option.FORBIDDEN.COOKIE.PHP.title.forbidden_cookie_function": "금지할 쿠키 함수",
  "option.FORBIDDEN.EASY_DATABASE_NAME.JS.desc.forbidden_name": "금지할 데이터베이스의 명칭을 작성합니다.\n예시) mydb",
  "option.FORBIDDEN.EASY_DATABASE_NAME.JS.title.forbidden_name": "금지할 데이터베이스 명",
  "option.FORBIDDEN.EDIT.NATIVE_OBJECT_PROTOTYPE.JS.desc.native_object": "수정을 금지할 내장 객체를 작성해 주세요.",
  "option.FORBIDDEN.EDIT.NATIVE_OBJECT_PROTOTYPE.JS.title.native_object": "수정을 금지할 내장 객체",
  "option.FORBIDDEN.EQUALITY_FOR_BOXED_PRIMITIVES.desc.boxed_type": "검출할 boxed primitive 타입을 설정합니다.",
  "option.FORBIDDEN.EQUALITY_FOR_BOXED_PRIMITIVES.title.boxed_type": "boxed primitive 타입",
  "option.FORBIDDEN.EVAL_FUNCTION.JS.desc.closure_enabled": "체크 해제시 클로저 함수 내부에 있을 때도 검사합니다.",
  "option.FORBIDDEN.EVAL_FUNCTION.JS.title.closure_enabled": "클로저 검사 여부",
  "option.FORBIDDEN.INSECURE_RANDOM.JS.desc.insecure_random": "보안에 취약한 random 함수를 작성하세요.",
  "option.FORBIDDEN.INSECURE_RANDOM.JS.title.insecure_random": "보안에 취약한 random 함수",
  "option.FORBIDDEN.INSTANCE_ACCESSING.desc.check_static_only": "옵션을 사용하는 경우, static 변수 및 메소드만 검출합니다.",
  "option.FORBIDDEN.INSTANCE_ACCESSING.title.check_static_only": "static만 검출",
  "option.FORBIDDEN.MULTI_DIMENSION_ARRAY.desc.threshold": "금지할 배열의 차원 단계를 설정합니다. 만약 2로 설정했으면 2차원 이상의 배열을 결함으로 검출합니다.",
  "option.FORBIDDEN.MULTI_DIMENSION_ARRAY.title.threshold": "제한할 배열 단계 수",
  "option.FORBIDDEN.REPLACING_EMAIL_ADDRESS.desc.target_variable": "E-mail 주소 변수 이름 형식을 작성합니다.\n예시) .+\\.email",
  "option.FORBIDDEN.REPLACING_EMAIL_ADDRESS.title.target_variable": "E-mail 주소 변수 이름",
  "option.FORBIDDEN.TABLE.SQL.desc.forbidden_table": "검출할 테이블 이름을 설정합니다.",
  "option.FORBIDDEN.TABLE.SQL.title.forbidden_table": "검출 테이블",
  "option.FORBIDDEN.TABLE_COLUMN.SQL.desc.forbidden_column": "검출할 컬럼 이름을 설정합니다.",
  "option.FORBIDDEN.TABLE_COLUMN.SQL.desc.forbidden_table": "검출할 테이블 이름을 설정합니다.",
  "option.FORBIDDEN.TABLE_COLUMN.SQL.title.forbidden_column": "검출 컬럼",
  "option.FORBIDDEN.TABLE_COLUMN.SQL.title.forbidden_table": "검출 테이블",
  "option.FORBIDDEN.WEAK_MIUPDATER.TOBE.JS.desc.forbidden_miupdater": "금지할 Miupdater의 이름을 작성합니다.\n예시) Miupdater320",
  "option.FORBIDDEN.WEAK_MIUPDATER.TOBE.JS.title.forbidden_miupdater": "금지할 MiUpdater 버전",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.check_field": "옵션을 사용하는 경우, 인스턴스 필드(정적 필드가 아닌 멤버) 변수를 검사 대상에 포함시킵니다.",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.check_local": "옵션을 사용하는 경우, 메소드 내에서 선언된 지역 변수를 검사 대상에 포함시킵니다.",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.check_param": "옵션을 사용하는 경우, 메소드의 인자 변수를 검사 대상에 포함시킵니다.",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.check_static": "옵션을 사용하는 경우, 정적 필드 변수를 검사 대상에 포함시킵니다.",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.excluded_class": "이슈 검출 대상 클래스 중 검사에서 제외할 클래스 이름을 입력합니다\n<i>예시)</i> .*Constant",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.excluded_method": "이슈 검출 대상 메소드 중 검사에서 제외할 메소드 이름을 입력합니다.\n<i>예시)</i> get.*",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.excluded_package": "이슈 검출 대상 패키지 중 검사에서 제외할 패키지 이름을 입력합니다.\n<i>예시)</i> .*const.*",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.target_class": "이슈를 검출할 대상 클래스 이름을 입력합니다\n<i>예시)</i> .*Controller",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.target_method": "이슈 검출할 대상 메소드 이름을 입력합니다.\n<i>예시)</i> ((select)|(delete)|(update)).*",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.target_package": "이슈를 검출할 대상 패키지 이름을 입력합니다.\n<i>예시)</i> com\\.fasoo\\..*control",
  "option.FORBIDDEN_ASSIGN_LITERAL.desc.target_variable": "이슈 검출할 대상 변수 이름을 입력합니다.\n<i>예시)</i> .*Id",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.check_field": "인스턴스 필드 검출 여부",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.check_local": "지역 변수 검출 여부",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.check_param": "메소드 인자 변수 검출 여부",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.check_static": "정적 필드 검출 여부",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.excluded_class": "예외 패키지 이름",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.excluded_method": "예외 클래스 이름",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.excluded_package": "예외 메소드 이름",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.target_class": "검출 대상 클래스 이름",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.target_method": "검출 대상 메소드 이름",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.target_package": "검출 대상 패키지 이름",
  "option.FORBIDDEN_ASSIGN_LITERAL.title.target_variable": "검출 대상 변수 이름",
  "option.FORBIDDEN_CALL.BEFORE_CALL.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.FORBIDDEN_CALL.BEFORE_CALL.desc.function_should_not_be_used": "사용 금지 함수를 설정합니다.",
  "option.FORBIDDEN_CALL.BEFORE_CALL.desc.function_target": "분석 대상 함수명을 설정합니다.",
  "option.FORBIDDEN_CALL.BEFORE_CALL.desc.function_target_begin_call_function": "분석을 시작할 특정 함수 호출을 설정합니다.",
  "option.FORBIDDEN_CALL.BEFORE_CALL.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.FORBIDDEN_CALL.BEFORE_CALL.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.FORBIDDEN_CALL.BEFORE_CALL.title.function_should_not_be_used": "사용 금지 함수",
  "option.FORBIDDEN_CALL.BEFORE_CALL.title.function_target": "분석 대상 함수",
  "option.FORBIDDEN_CALL.BEFORE_CALL.title.function_target_begin_call_function": "분석을 시작할 특정 함수 호출",
  "option.FORBIDDEN_CALL.BEFORE_CALL.title.function_target_excluded": "분석 제외되는 함수",
  "option.FORBIDDEN_CALL.LOOP.desc.target_functions": "금지 함수를 설정합니다.",
  "option.FORBIDDEN_CALL.LOOP.title.target_functions": "금지 함수",
  "option.FORBIDDEN_CLASS.desc.blacklist_names": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.FORBIDDEN_CLASS.desc.blacklist_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.FORBIDDEN_CLASS.desc.check_inner_class": "inner 클래스 검사를 활성화하는 옵션입니다.",
  "option.FORBIDDEN_CLASS.desc.enforce_whitelist": "화이트리스트가 아닌 모든 대상을 검출하는 옵션입니다.",
  "option.FORBIDDEN_CLASS.desc.excluded_keywords": "abstract, interface, public, protected, private, default, (일반 클래스)등의 검출에서 제외할 키워드를 입력합니다.",
  "option.FORBIDDEN_CLASS.desc.package_based_analysis": "패키지와 클래스 이름이 맞는지 추가로 분석하는 기능입니다.",
  "option.FORBIDDEN_CLASS.desc.superclass_restriction": "클래스 이름을 입력하면 해당 클래스 이름을 상속하는 클래스만 검출하도록 변경됩니다. [패키지, 클래스]와 같은 형태로 입력하면 해당 패키지에서만 검출합니다.",
  "option.FORBIDDEN_CLASS.desc.whitelist_names": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.FORBIDDEN_CLASS.desc.whitelist_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.FORBIDDEN_CLASS.title.blacklist_names": "블랙리스트 단일",
  "option.FORBIDDEN_CLASS.title.blacklist_patterns": "블랙리스트 범위",
  "option.FORBIDDEN_CLASS.title.check_inner_class": "inner 클래스 검사",
  "option.FORBIDDEN_CLASS.title.enforce_whitelist": "화이트리스트 검출로 변경",
  "option.FORBIDDEN_CLASS.title.excluded_keywords": "제외 키워드",
  "option.FORBIDDEN_CLASS.title.package_based_analysis": "패키지 기반 클래스 분석",
  "option.FORBIDDEN_CLASS.title.superclass_restriction": "상속 받는 클래스만 검출",
  "option.FORBIDDEN_CLASS.title.whitelist_names": "검출 제외 클래스(단일, 우선순위 높음)",
  "option.FORBIDDEN_CLASS.title.whitelist_patterns": "검출 제외 클래스 패턴 목록(우선순위 높음)",
  "option.FORBIDDEN_PACKAGE.desc.allowed_packages": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.FORBIDDEN_PACKAGE.desc.allowed_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.FORBIDDEN_PACKAGE.desc.forbidden_packages": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.FORBIDDEN_PACKAGE.desc.forbidden_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.FORBIDDEN_PACKAGE.desc.only_allowed": "화이트리스트가 아닌 모든 대상을 검출하는 옵션입니다.",
  "option.FORBIDDEN_PACKAGE.title.allowed_packages": "화이트리스트 단일",
  "option.FORBIDDEN_PACKAGE.title.allowed_patterns": "화이트리스트 범위",
  "option.FORBIDDEN_PACKAGE.title.forbidden_packages": "블랙리스트 단일",
  "option.FORBIDDEN_PACKAGE.title.forbidden_patterns": "블랙리스트 범위",
  "option.FORBIDDEN_PACKAGE.title.only_allowed": "화이트리스트 검출로 변경",
  "option.FORMAT_STRING.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.FORMAT_STRING.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.FORMAT_STRING.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.FORMAT_STRING.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"kotlin.String.format\")",
  "option.FORMAT_STRING.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.FORMAT_STRING.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.FORMAT_STRING.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.FORMAT_STRING.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.FORMAT_STRING.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.FORMAT_STRING.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.FORMAT_STRING.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.FORMAT_STRING.OBJC.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.FORMAT_STRING.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.FORMAT_STRING.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) printf$param(1)",
  "option.FORMAT_STRING.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.FORMAT_STRING.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.FORMAT_STRING.OBJC.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.FORMAT_STRING.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.FORMAT_STRING.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.FORMAT_STRING.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.FORMAT_STRING.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.FORMAT_STRING.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.FORMAT_STRING.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.FORMAT_STRING.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"printf\")",
  "option.FORMAT_STRING.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.FORMAT_STRING.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.FORMAT_STRING.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.FORMAT_STRING.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.FORMAT_STRING.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.FORMAT_STRING.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.FORMAT_STRING.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.FORMAT_STRING.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.FORMAT_STRING.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.FORMAT_STRING.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"format\")",
  "option.FORMAT_STRING.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.FORMAT_STRING.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.FORMAT_STRING.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.FORMAT_STRING.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.FORMAT_STRING.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.FORMAT_STRING.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.FORMAT_STRING.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.FORMAT_STRING.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.FORMAT_STRING.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"format\")",
  "option.FORMAT_STRING.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.FORMAT_STRING.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.FORMAT_STRING.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.FORMAT_STRING.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.FORMAT_STRING.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.FORMAT_STRING.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.FORMAT_STRING.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.FORMAT_STRING.desc.proframe_targets": "number_s 타입의 포맷스트링을 검사할 함수를 작성합니다.",
  "option.FORMAT_STRING.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.FORMAT_STRING.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.FORMAT_STRING.desc.targets": "아래 목록에 존재하는 함수에 대하여만 검사합니다.",
  "option.FORMAT_STRING.title.alarm": "검출 규칙",
  "option.FORMAT_STRING.title.exclude": "예외 규칙",
  "option.FORMAT_STRING.title.proframe_targets": "Proframe 분석시 분석 대상 함수.",
  "option.FORMAT_STRING.title.propagator": "전파 규칙",
  "option.FORMAT_STRING.title.suggestion_filter_function": "제안할 필터 함수",
  "option.FORMAT_STRING.title.targets": "검사 대상 string format함수",
  "option.FORMAT_STRING_ARGUMENT_NUMBER_MISMATCH.desc.targets": "아래 목록에 존재하는 함수에 대하여만 검사합니다.",
  "option.FORMAT_STRING_ARGUMENT_NUMBER_MISMATCH.title.targets": "검사 대상 string format함수",
  "option.FOR_LOOP_CONTROL_VARIABLE.desc.check_non_integer_variable": "해당 옵션을 활성화시키면 정수형이 아닌 FOR 문 제어 변수를 검출합니다.",
  "option.FOR_LOOP_CONTROL_VARIABLE.desc.check_variable_modification": "해당 옵션을 활성화시키면 FOR 문 내에서 FOR 문 제어 변수가 변경되는 연산이 있는지 확인합니다.",
  "option.FOR_LOOP_CONTROL_VARIABLE.title.check_non_integer_variable": "FOR 문 제어 변수가 정수형이 아닌 다른 변수형으로 설정되어 있는지 확인하는 옵션",
  "option.FOR_LOOP_CONTROL_VARIABLE.title.check_variable_modification": "FOR 문 제어 변수가 FOR 문 내에서 변경되는지 확인하는 옵션",
  "option.FUNCTION_COMMENT.desc.FunctionComment": "함수 주석 형식을 정의합니다.",
  "option.FUNCTION_COMMENT.title.FunctionComment": "함수 주석 형식",
  "option.FUNCTION_WITHOUT_DEFINITION.desc.include_extern": "체크박스 체크 시 extern 함수도 검사합니다.",
  "option.FUNCTION_WITHOUT_DEFINITION.title.include_extern": "extern 함수 검사 여부",
  "option.GENERAL_COMMENT.desc.GeneralComment": "일반 주석 형식을 정의합니다.",
  "option.GENERAL_COMMENT.title.GeneralComment": "일반 주석 형식",
  "option.HARDCODED_COMPARISON.KOTLIN.desc.except_value": "검출에서 제외할 비교 대상을 정규식으로 입력하세요.\n예시) 변수 이름, 리터럴 값",
  "option.HARDCODED_COMPARISON.KOTLIN.desc.target_variable": "중요 정보로 분류되는 외부 입력값을 정규식으로 입력하세요.\n예시) 변수명 또는 파라미터",
  "option.HARDCODED_COMPARISON.KOTLIN.title.except_value": "검출 예외",
  "option.HARDCODED_COMPARISON.KOTLIN.title.target_variable": "점검 대상",
  "option.HARDCODED_PASSWORD.CSHARP.desc.candidate_class": "비밀번호를 사용하는 클래스 명을 작성합니다.",
  "option.HARDCODED_PASSWORD.CSHARP.desc.method": "비밀번호를 설정하는 메소드 명을 작성합니다.",
  "option.HARDCODED_PASSWORD.CSHARP.title.candidate_class": "비밀번호를 사용하는 클래스",
  "option.HARDCODED_PASSWORD.CSHARP.title.method": "비밀번호를 설정하는 메소드",
  "option.HARDCODED_PASSWORD.KOTLIN.desc.password_as_argument": "비밀번호가 인자로 사용되는 함수의 이름을 작성합니다.",
  "option.HARDCODED_PASSWORD.KOTLIN.title.password_as_argument": "비밀번호 인자 사용 함수 이름",
  "option.HARDCODED_PASSWORD.PYTHON.desc.forbidden_variable": "중요 정보를 받는 변수명을 입력합니다. \n 예시)  password",
  "option.HARDCODED_PASSWORD.PYTHON.desc.password_param": "비밀번호를 인자로 받는 함수를 작성합니다.\n 예시) MySQLdb\\.connect:passwd:3",
  "option.HARDCODED_PASSWORD.PYTHON.title.forbidden_variable": "중요 정보 변수명",
  "option.HARDCODED_PASSWORD.PYTHON.title.password_param": "비밀번호 사용 함수",
  "option.HARDCODED_SECURITY_INFO.KOTLIN.desc.except_value": "변수의 값 등 검출에서 제외할 점검 대상의 값을 정규식으로 입력합니다. ",
  "option.HARDCODED_SECURITY_INFO.KOTLIN.desc.target_variable": "변수 이름 등 점검할 대상을 정규식으로 입력합니다.",
  "option.HARDCODED_SECURITY_INFO.KOTLIN.title.except_value": "검출 예외",
  "option.HARDCODED_SECURITY_INFO.KOTLIN.title.target_variable": "검출 대상",
  "option.HARD_CODED.CRYPTOGRAPHIC_KEY.KOTLIN.desc.secret_key_as_argument": "키가 인자로 사용되는 함수의 이름을 작성합니다.",
  "option.HARD_CODED.CRYPTOGRAPHIC_KEY.KOTLIN.title.secret_key_as_argument": "키 인자 사용 함수 이름",
  "option.HARD_CODED.CRYPTOGRAPHIC_KEY.PHP.desc.check_function_params": "검사할 함수 명과 파라매터의 위치를 작성합니다.",
  "option.HARD_CODED.CRYPTOGRAPHIC_KEY.PHP.title.check_function_params": "함수 명과 파라매터 위치",
  "option.HARD_CODED.CRYPTOGRAPHIC_KEY.PYTHON.desc.encrypt_creator_key": "암호화 함수와 키 매개변수를 작성합니다.\n예시) Crypto.Cipher.*new.*:key:1",
  "option.HARD_CODED.CRYPTOGRAPHIC_KEY.PYTHON.desc.hash_creator_key": "해시 함수와 키 매개변수를 작성합니다.\n예시) hashlib.*:key",
  "option.HARD_CODED.CRYPTOGRAPHIC_KEY.PYTHON.title.encrypt_creator_key": "암호화 함수와 키",
  "option.HARD_CODED.CRYPTOGRAPHIC_KEY.PYTHON.title.hash_creator_key": "해시 함수와 키",
  "option.HARD_CODED.PASSWORD.PHP.desc.check_function_params": "검사할 함수 명과 파라매터의 위치를 작성합니다.",
  "option.HARD_CODED.PASSWORD.PHP.title.check_function_params": "함수 명과 파라매터 위치",
  "option.HARD_CODED_PASSWORD.CONFIG.desc.password_expr": "비밀번호로 간주할 수 있는 문자열을 작성합니다.\n예시) password",
  "option.HARD_CODED_PASSWORD.CONFIG.title.password_expr": "비밀번호 문자열",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.desc.properties_password_expr": "Properties에 비밀번호 키로 사용될 문자열을 작성합니다.\n예시) password",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.title.alarm": "검출 규칙",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.title.exclude": "예외 규칙",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.title.propagator": "전파 규칙",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.title.properties_password_expr": "Properties 비밀번호 키 문자열",
  "option.HARD_CODED_USER_NAME_AND_PASSWORD.title.suggestion_filter_function": "제안할 필터 함수",
  "option.HASH.INSECURE_HASH_ITERATION_COUNT.CSHARP.desc.iter_num": "최소 반복 횟수를 입력하세요.",
  "option.HASH.INSECURE_HASH_ITERATION_COUNT.CSHARP.title.iter_num": "최소 반복 횟수",
  "option.HEADER_MANIPULATION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.HEADER_MANIPULATION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.HEADER_MANIPULATION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.HEADER_MANIPULATION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"header\")",
  "option.HEADER_MANIPULATION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.HEADER_MANIPULATION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.HEADER_MANIPULATION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.HEADER_MANIPULATION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.HEADER_MANIPULATION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.HEADER_MANIPULATION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.HEADER_MANIPULATION.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.HEADER_MANIPULATION.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.HEADER_MANIPULATION.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.HEADER_MANIPULATION.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) operand(2) of \"",
  "option.HEADER_MANIPULATION.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.HEADER_MANIPULATION.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.HEADER_MANIPULATION.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.HEADER_MANIPULATION.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.HEADER_MANIPULATION.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.HEADER_MANIPULATION.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.HEAP_INSPECTION.desc.prevent_functions": "아래 결함 생성 함수를 호출하기 전에 호출하면 결함으로 처리하지 않는 함수입니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "option.HEAP_INSPECTION.desc.sink_functions": "결함 방지 함수를 호출하지 않고 호출할 경우 결함이 발생하는 함수힙니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "option.HEAP_INSPECTION.desc.source_functions": "중요한 정보(패스워드)가 담긴 변수를 사용한 함수를 설정합니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "option.HEAP_INSPECTION.title.prevent_functions": "결함 방지 함수",
  "option.HEAP_INSPECTION.title.sink_functions": "결함 생성 함수",
  "option.HEAP_INSPECTION.title.source_functions": "중요한 정보가 담긴 변수를 사용한 함수",
  "option.HTML5.CROSS_DOCUMENT_MESSAGING.JS.desc.forbidden_pattern": "금지할 도메인을 작성합니다. \n예시) .*forbidden.*",
  "option.HTML5.CROSS_DOCUMENT_MESSAGING.JS.title.forbidden_pattern": "금지할 도메인",
  "option.HTML_COMMENT_IN_JSP.JSP.desc.exclude_dir": "검출 제외 폴더 경로를 glob 패턴을 사용하여 입력합니다.\n예시) `src/java/**/core/**`",
  "option.HTML_COMMENT_IN_JSP.JSP.desc.exclude_extension": "검출 제외 파일 확장자를 지정합니다.\n예시) java",
  "option.HTML_COMMENT_IN_JSP.JSP.desc.rule": "검출 규칙을 정규식을 사용하여 지정합니다.",
  "option.HTML_COMMENT_IN_JSP.JSP.desc.target_dir": "분석 대상 폴더 경로를 glob 패턴을 사용하여 입력합니다.\n예시) `src/java/**/core/**`",
  "option.HTML_COMMENT_IN_JSP.JSP.desc.target_extension": "분석 대상 확장자를 입력합니다.\n예시) html",
  "option.HTML_COMMENT_IN_JSP.JSP.title.exclude_dir": "제외 폴더 경로",
  "option.HTML_COMMENT_IN_JSP.JSP.title.exclude_extension": "제외 파일 확장자",
  "option.HTML_COMMENT_IN_JSP.JSP.title.rule": "검출 규칙",
  "option.HTML_COMMENT_IN_JSP.JSP.title.target_dir": "분석 대상 폴더",
  "option.HTML_COMMENT_IN_JSP.JSP.title.target_extension": "분석 대상 확장자",
  "option.HTTP.SECURITY_HEADER_SETTINGS.JS.desc.security_set": "안전한 보안 헤더의 이름을 작성합니다.",
  "option.HTTP.SECURITY_HEADER_SETTINGS.JS.title.security_set": "안전한 보안 헤더",
  "option.HTTP_RESPONSE_SPLITTING.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"encodeURIComponent\")",
  "option.HTTP_RESPONSE_SPLITTING.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.HTTP_RESPONSE_SPLITTING.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.HTTP_RESPONSE_SPLITTING.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) operand(2) of name(\"=\") if operand(1) == fqn(reg(\".*document\\\\.cookie\"))",
  "option.HTTP_RESPONSE_SPLITTING.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.HTTP_RESPONSE_SPLITTING.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.HTTP_RESPONSE_SPLITTING.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.HTTP_RESPONSE_SPLITTING.JS.title.taint_source": "외부 정보 입력 함수",
  "option.HTTP_RESPONSE_SPLITTING.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.HTTP_RESPONSE_SPLITTING.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.HTTP_RESPONSE_SPLITTING.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) setcookie$param(2)",
  "option.HTTP_RESPONSE_SPLITTING.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.HTTP_RESPONSE_SPLITTING.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.HTTP_RESPONSE_SPLITTING.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.HTTP_RESPONSE_SPLITTING.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.HTTP_RESPONSE_SPLITTING.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.HTTP_RESPONSE_SPLITTING.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.HTTP_RESPONSE_SPLITTING.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.HTTP_RESPONSE_SPLITTING.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of name(\"setcookie\")",
  "option.HTTP_RESPONSE_SPLITTING.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.HTTP_RESPONSE_SPLITTING.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.HTTP_RESPONSE_SPLITTING.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.HTTP_RESPONSE_SPLITTING.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"django.http.HttpRequest.GET\")",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.HTTP_RESPONSE_SPLITTING.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) shell$param(*)",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.HTTP_RESPONSE_SPLITTING.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.HTTP_RESPONSE_SPLITTING.desc.alarm": "sink 와 source 쌍이 아래와 같다면, 위험합니다. \"if\" {sink_target} \"is_from\" {source_target}\nsink_target: 오염값에 대한 표현식 (메소드 정의를 포함합니다.)\nsource_target: 오염값을 유발하는 표현식 (메소드 정의를 포함합니다.)",
  "option.HTTP_RESPONSE_SPLITTING.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.HTTP_RESPONSE_SPLITTING.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.HTTP_RESPONSE_SPLITTING.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.HTTP_RESPONSE_SPLITTING.title.alarm": "검출 규칙",
  "option.HTTP_RESPONSE_SPLITTING.title.exclude": "예외 규칙",
  "option.HTTP_RESPONSE_SPLITTING.title.propagator": "전파 규칙",
  "option.HTTP_RESPONSE_SPLITTING.title.suggestion_filter_function": "제안할 필터 함수",
  "option.HUNGARIAN_NOTATION.desc.prefix": "헝가리안 표기법에서 사용할 접두사의 목록을 적습니다.",
  "option.HUNGARIAN_NOTATION.title.prefix": "헝가리안 표기법의 접두사 목록",
  "option.IGNORED_RETURN_VALUE.desc.function": "검출할 함수의 이름을 입력합니다.",
  "option.IGNORED_RETURN_VALUE.desc.ignore_macro": "매크로를 사용한 코드에서 결과가 검출되는 것을 원하지 않을 경우, 해당 매크로 식별자를 목록에 입력합니다.",
  "option.IGNORED_RETURN_VALUE.title.function": "리턴 값을 무시하지 말아야 할 함수 목록",
  "option.IGNORED_RETURN_VALUE.title.ignore_macro": "매크로 검출 결과에서 무시할 식별자 목록",
  "option.IMPROPER_AUTHORIZATION.CSHARP.desc.authz_needed_class": "사용자 권한 확인이 필요한 클래스의 이름들을 적습니다.",
  "option.IMPROPER_AUTHORIZATION.CSHARP.desc.authz_needed_method": "사용자 권한 확인이 필요한 메소드의 이름들을 적습니다.",
  "option.IMPROPER_AUTHORIZATION.CSHARP.desc.custom_authz_attribute": "사용자가 정의한 권한 속성이 있는 경우 적어 줍니다.",
  "option.IMPROPER_AUTHORIZATION.CSHARP.title.authz_needed_class": "사용자 권한 확인 필요 클래스명",
  "option.IMPROPER_AUTHORIZATION.CSHARP.title.authz_needed_method": "사용자 권한 확인 필요 메소드명",
  "option.IMPROPER_AUTHORIZATION.CSHARP.title.custom_authz_attribute": "사용자 정의 권한 속성",
  "option.IMPROPER_AUTHORIZATION.desc.class_name_to_be_authorized": "인증이 필요한 클래스 이름을 지정합니다.\n예시) (.+.)?KrdMessage",
  "option.IMPROPER_AUTHORIZATION.desc.clear_call": "보안을 위해 민감한 정보를 검사하는 함수 이름을 입력합니다.\n예시) strcmp",
  "option.IMPROPER_AUTHORIZATION.desc.sink_call": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.\n예시) system",
  "option.IMPROPER_AUTHORIZATION.desc.source_variable": "민감한 정보를 포함한 변수 이름을 작성합니다.\n예시) username",
  "option.IMPROPER_AUTHORIZATION.title.class_name_to_be_authorized": "인증이 필요한 클래스 이름",
  "option.IMPROPER_AUTHORIZATION.title.clear_call": "민감한 정보 검사 함수",
  "option.IMPROPER_AUTHORIZATION.title.sink_call": "민감한 정보 노출 함수",
  "option.IMPROPER_AUTHORIZATION.title.source_variable": "민감한 정보 변수",
  "option.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.desc.check_all_catch_exceptions": "체크하지 않을 때 단일 catch 문에서 'Exception' 클래스만 사용했을 경우를 검사합니다.",
  "option.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.desc.check_all_method_calls": "옵션을 사용하는 경우, 모든 제외 메소드가 catch 문 내에서 호출되어야 이슈가 발생하지 않습니다.",
  "option.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.desc.excluded_call_name": "검사에서 제외할 메소드 이름을 입력합니다.\n<i>예시)</i> getAnonymousLogger",
  "option.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.desc.excluded_class_type": "검사에서 제외할 메소드 타입 이름을 입력합니다.\n<i>예시)</i> java.util.logging.Logger",
  "option.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.title.check_all_catch_exceptions": "단일 catch 문 검사",
  "option.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.title.check_all_method_calls": "모든 제외 메소드 호출 여부",
  "option.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.title.excluded_call_name": "제외 메소드",
  "option.IMPROPER_CHECK_FOR_UNUSUAL_OR_EXCEPTIONAL_CONDITION.title.excluded_class_type": "제외 클래스 타입",
  "option.IMPROPER_MACRO_NAME.desc.ignore_list": "분석 제외 매크로를 설정합니다.",
  "option.IMPROPER_MACRO_NAME.title.ignore_list": "분석 제외 매크로",
  "option.IMPROPER_RANDOM_USAGE.desc.targets": "랜덤 함수와 랜덤 시드 함수를 설정합니다. (랜덤함수),(랜덤시드함수) 형태로 정의하십시오. 공백은 허용하지 않습니다.",
  "option.IMPROPER_RANDOM_USAGE.title.targets": "랜덤 함수와 시드 함수",
  "option.IMPROPER_SIGNATURE.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) base of name(\"signWith\")",
  "option.IMPROPER_SIGNATURE.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.IMPROPER_SIGNATURE.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.IMPROPER_SIGNATURE.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"compact\")",
  "option.IMPROPER_SIGNATURE.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"io.jsonwebtoken.Jwts.builder\")",
  "option.IMPROPER_SIGNATURE.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.IMPROPER_SIGNATURE.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.IMPROPER_SIGNATURE.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.IMPROPER_SIGNATURE.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.IMPROPER_SIGNATURE.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.IMPROPER_SIGNATURE.desc.exception_string": "검출 예외 변수 혹은 경로 및 파일명을 입력하세요. \nex) Exception",
  "option.IMPROPER_SIGNATURE.title.exception_string": "검출 예외 변수 혹은 경로 및 파일명",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"use\")",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"__sparrow_required__express\")",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.INAPPROPRIATE_HTTP.HEADERS.JS.title.taint_source": "외부 정보 입력 함수",
  "option.INCLUDE_STDLIB_WITH_BRACKETS.desc.c_library": "C 표준 라이브러리 목록을 설정합니다.",
  "option.INCLUDE_STDLIB_WITH_BRACKETS.desc.cpp_library": "C++ 표준 라이브러리 목록을 설정합니다.",
  "option.INCLUDE_STDLIB_WITH_BRACKETS.title.c_library": "C 표준 라이브러리",
  "option.INCLUDE_STDLIB_WITH_BRACKETS.title.cpp_library": "C++ 표준 라이브러리",
  "option.INCORRECT_PERMISSION.desc.access_function": "민감한 정보에 접근하는 함수 이름을 작성합니다.\n예시) open",
  "option.INCORRECT_PERMISSION.title.access_function": "민감한 정보 접근 함수",
  "option.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.KOTLIN.desc.chmod_option": "과도한 권한이라 판단되는 chmod의 옵션값을 작성합니다.",
  "option.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.KOTLIN.title.chmod_option": "chmod 옵션",
  "option.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.PYTHON.desc.chmod_option": "과도한 권한이라 판단되는 chmod의 옵션값을 작성합니다.",
  "option.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.PYTHON.desc.umask_option": "과도한 권한이라 판단되는 umask의 옵션값을 작성합니다.",
  "option.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.PYTHON.title.chmod_option": "chmod 옵션",
  "option.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.PYTHON.title.umask_option": "umask 옵션",
  "option.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.desc.critical_resource": "중요 자원 경로를 입력합니다.\n예시) C:\\Critical\\resource.dat",
  "option.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.title.critical_resource": "중요 자원",
  "option.INFORMATION_LEAK.RUNTIME_ERROR.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.INFORMATION_LEAK.RUNTIME_ERROR.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.INFORMATION_LEAK.RUNTIME_ERROR.desc.target_pattern": "분석할 경로를 입력합니다",
  "option.INFORMATION_LEAK.RUNTIME_ERROR.title.exclude_method": "분석 제외 메소드",
  "option.INFORMATION_LEAK.RUNTIME_ERROR.title.exclude_path": "분석 제외 경로",
  "option.INFORMATION_LEAK.RUNTIME_ERROR.title.target_pattern": "분석 경로",
  "option.INFORMATION_LEAK.TOBE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.INFORMATION_LEAK.TOBE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.INFORMATION_LEAK.TOBE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.INFORMATION_LEAK.TOBE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"trace\")",
  "option.INFORMATION_LEAK.TOBE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"new@ExtCommon.getAppPath\")",
  "option.INFORMATION_LEAK.TOBE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.INFORMATION_LEAK.TOBE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.INFORMATION_LEAK.TOBE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.INFORMATION_LEAK.TOBE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.INFORMATION_LEAK.TOBE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.INFORMATION_LEAK.desc.sink_call": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.\n예시) printf",
  "option.INFORMATION_LEAK.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n예시) getenv",
  "option.INFORMATION_LEAK.title.sink_call": "민감한 정보 노출 함수",
  "option.INFORMATION_LEAK.title.source_call": "민감한 정보 입력 함수",
  "option.INFORMATION_LEAK_ANDROID.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" {sink_target} \"is_from\" {source_target}\nsink_target: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nsource_target: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.INFORMATION_LEAK_ANDROID.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.INFORMATION_LEAK_ANDROID.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.INFORMATION_LEAK_ANDROID.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.INFORMATION_LEAK_ANDROID.title.alarm": "검출 규칙",
  "option.INFORMATION_LEAK_ANDROID.title.exclude": "예외 규칙",
  "option.INFORMATION_LEAK_ANDROID.title.propagator": "전파 규칙",
  "option.INFORMATION_LEAK_ANDROID.title.suggestion_filter_function": "제안할 필터 함수",
  "option.INSECURE_PERSISTENT_COOKIE.PYTHON.desc.max_timeout": "쿠키의 최대 지속 시간을 초 단위로 작성합니다.\n예시) 3600",
  "option.INSECURE_PERSISTENT_COOKIE.PYTHON.title.max_timeout": "최대 쿠키 지속 시간",
  "option.INSECURE_TEMPORARY_FILE.PYTHON.desc.temp_file_name": "금지할 임시 파일 이름 규칙을 입력합니다.\n예시) *temp*",
  "option.INSECURE_TEMPORARY_FILE.PYTHON.title.temp_file_name": "임시파일 이름 규칙",
  "option.INSECURE_UNPICKLE.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.INSECURE_UNPICKLE.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.INSECURE_UNPICKLE.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.INSECURE_UNPICKLE.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) __sparrow_php_echo__$param(*)",
  "option.INSECURE_UNPICKLE.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.INSECURE_UNPICKLE.PYTHON.title.custom_taint_sink": "해시값 비교가 필요한 외부 정보 사용 함수",
  "option.INSECURE_UNPICKLE.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.INSECURE_UNPICKLE.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.INSECURE_UNPICKLE.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.INSECURE_UNPICKLE.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.INSECURE_UNPICKLE.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.INSUFFICIENT_SESSION_EXPIRATION.desc.min_session_timeout": "세션 객체의 최소 timeout 시간, 초 단위",
  "option.INSUFFICIENT_SESSION_EXPIRATION.desc.session_class": "세션 객체를 의미하는 클래스",
  "option.INSUFFICIENT_SESSION_EXPIRATION.desc.session_method": "세션 객체가 세션 timeout 설정을 위해 호출하는 메소드 (예: setMaxInactiveInterval)",
  "option.INSUFFICIENT_SESSION_EXPIRATION.title.min_session_timeout": "세션 객체의 최소 timeout 시간 (단위: 초)",
  "option.INSUFFICIENT_SESSION_EXPIRATION.title.session_class": "세션 객체를 의미하는 클래스",
  "option.INSUFFICIENT_SESSION_EXPIRATION.title.session_method": "세션 객체가 세션 timeout 설정을 위해 호출하는 메소드",
  "option.INTEGER_OVERFLOW.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수 이름 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"<=\"",
  "option.INTEGER_OVERFLOW.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.INTEGER_OVERFLOW.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성하세요.\n예시) base of fqn(\"kotlin.String.toInt\") to return",
  "option.INTEGER_OVERFLOW.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성하세요.\n예시) operand(*) of name(\"+\")",
  "option.INTEGER_OVERFLOW.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.INTEGER_OVERFLOW.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.INTEGER_OVERFLOW.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.INTEGER_OVERFLOW.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.INTEGER_OVERFLOW.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.INTEGER_OVERFLOW.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.INTEGER_OVERFLOW.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.INTEGER_OVERFLOW.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.INTEGER_OVERFLOW.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) setcookie$param(2)",
  "option.INTEGER_OVERFLOW.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.INTEGER_OVERFLOW.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.INTEGER_OVERFLOW.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.INTEGER_OVERFLOW.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.INTEGER_OVERFLOW.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.INTEGER_OVERFLOW.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.INTEGER_OVERFLOW.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.INTEGER_OVERFLOW.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.INTEGER_OVERFLOW.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n",
  "option.INTEGER_OVERFLOW.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.INTEGER_OVERFLOW.title.alarm": "검출 규칙",
  "option.INTEGER_OVERFLOW.title.exclude": "예외 규칙",
  "option.INTEGER_OVERFLOW.title.propagator": "전파 규칙",
  "option.INTEGER_OVERFLOW.title.source_call": "민감한 정보 입력 함수",
  "option.INTEGER_OVERFLOW.title.suggestion_filter_function": "제안할 필터 함수",
  "option.INTEGER_UNDERFLOW.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n",
  "option.INTEGER_UNDERFLOW.title.source_call": "민감한 정보 입력 함수",
  "option.INT_TO_CHAR.desc.unsigned_signed_char_as_int": "unsigned char, signed char를 int형으로 간주 여부를 결정합니다.",
  "option.INT_TO_CHAR.title.unsigned_signed_char_as_int": "unsigned char, signed char를 int형으로 간주",
  "option.JSON_INJECTION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.JSON_INJECTION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.JSON_INJECTION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.JSON_INJECTION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"jQuery.parseJSON\")",
  "option.JSON_INJECTION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.JSON_INJECTION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.JSON_INJECTION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.JSON_INJECTION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.JSON_INJECTION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.JSON_INJECTION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.KEY_MANAGEMENT.EMPTY_HMAC_KEY.CSHARP.desc.hmac_algorithm": "검출할 HMAC 알고리즘을 입력합니다.",
  "option.KEY_MANAGEMENT.EMPTY_HMAC_KEY.CSHARP.title.hmac_algorithm": "HMAC 알고리즘.",
  "option.KEY_MANAGEMENT.HARDCODED_ENCRYPTION_KEY.CSHARP.desc.sym_crypto_class": "대칭 암호 알고리즘를 입력하세요.",
  "option.KEY_MANAGEMENT.HARDCODED_ENCRYPTION_KEY.CSHARP.title.sym_crypto_class": "대칭 암호 알고리즘.",
  "option.KEY_MANAGEMENT.HARDCODED_HMAC_KEY.CSHARP.desc.hmac_algorithm": "검출할 HMAC 알고리즘을 입력합니다.",
  "option.KEY_MANAGEMENT.HARDCODED_HMAC_KEY.CSHARP.title.hmac_algorithm": "HMAC 알고리즘.",
  "option.LDAP_INJECTION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.LDAP_INJECTION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.LDAP_INJECTION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.LDAP_INJECTION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"javax.naming.directory.DirContext.search\")",
  "option.LDAP_INJECTION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.LDAP_INJECTION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.LDAP_INJECTION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LDAP_INJECTION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.LDAP_INJECTION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.LDAP_INJECTION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.LDAP_INJECTION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.LDAP_INJECTION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.LDAP_INJECTION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) XQueryProcessor\\\\.execute(0)$base",
  "option.LDAP_INJECTION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.LDAP_INJECTION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.LDAP_INJECTION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.LDAP_INJECTION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.LDAP_INJECTION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.LDAP_INJECTION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.LDAP_INJECTION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.LDAP_INJECTION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.LDAP_INJECTION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(3) of name(\"ldap_search\")",
  "option.LDAP_INJECTION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.LDAP_INJECTION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.LDAP_INJECTION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LDAP_INJECTION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.LDAP_INJECTION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.LDAP_INJECTION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.LDAP_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.LDAP_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.LDAP_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.LDAP_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(search_s\")",
  "option.LDAP_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.LDAP_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.LDAP_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LDAP_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.LDAP_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.LDAP_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.LDAP_INJECTION.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.LDAP_INJECTION.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.LDAP_INJECTION.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) XQueryProcessor\\\\.execute(0)$base",
  "option.LDAP_INJECTION.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.LDAP_INJECTION.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.LDAP_INJECTION.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.LDAP_INJECTION.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.LDAP_INJECTION.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.LDAP_INJECTION.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.LDAP_INJECTION.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.LDAP_INJECTION.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.LDAP_INJECTION.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) shell$param(*)",
  "option.LDAP_INJECTION.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.LDAP_INJECTION.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.LDAP_INJECTION.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LDAP_INJECTION.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.LDAP_INJECTION.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.LDAP_INJECTION.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.LDAP_INJECTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.LDAP_INJECTION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.LDAP_INJECTION.desc.sink_call": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.\n예시) ldap_search_ext_s",
  "option.LDAP_INJECTION.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n예시) getenv",
  "option.LDAP_INJECTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.LDAP_INJECTION.title.alarm": "검출 규칙",
  "option.LDAP_INJECTION.title.exclude": "예외 규칙",
  "option.LDAP_INJECTION.title.sink_call": "민감한 정보 노출 함수",
  "option.LDAP_INJECTION.title.source_call": "민감한 정보 입력 함수",
  "option.LDAP_INJECTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.LEAK.DEBUG_INFORMATION.CAKEPHP.PHP.desc.max_debug_level": "허용할 최대 디버그 레벨을 입력합니다.\n예시) 1",
  "option.LEAK.DEBUG_INFORMATION.CAKEPHP.PHP.title.max_debug_level": "최대 디버그 레벨",
  "option.LEAK.ERROR_INFORMATION.PHP.desc.error_leaking_function": "금지할 오류 정보 노출 함수의 이름을 작성합니다.\n예시) phpinfo",
  "option.LEAK.ERROR_INFORMATION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.LEAK.ERROR_INFORMATION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.LEAK.ERROR_INFORMATION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.LEAK.ERROR_INFORMATION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"printf\")",
  "option.LEAK.ERROR_INFORMATION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.LEAK.ERROR_INFORMATION.PHP.title.error_leaking_function": "금지할 오류 정보 노출 함수",
  "option.LEAK.ERROR_INFORMATION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.LEAK.ERROR_INFORMATION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LEAK.ERROR_INFORMATION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.LEAK.ERROR_INFORMATION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.LEAK.ERROR_INFORMATION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.LEAK.RESOURCE.PYTHON.desc.resource_allocation": "리소스 누수 위험이 있는 함수 이름을 작성합니다.",
  "option.LEAK.RESOURCE.PYTHON.title.resource_allocation": "리소스 누수 위험 함수",
  "option.LEAK.SYSTEM_INFORMATION.CSHARP.desc.sink_class": "보안에 취약한 로그 클래스를 작성합니다.\n예시) Console",
  "option.LEAK.SYSTEM_INFORMATION.CSHARP.desc.sink_method": "보안에 취약한 로그 메소드를 작성합니다.\n예시) WriteLine",
  "option.LEAK.SYSTEM_INFORMATION.CSHARP.title.sink_class": "취약한 로그 클래스",
  "option.LEAK.SYSTEM_INFORMATION.CSHARP.title.sink_method": "취약한 로그 메소드",
  "option.LEAK.SYSTEM_INFORMATION.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.LEAK.SYSTEM_INFORMATION.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.LEAK.SYSTEM_INFORMATION.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.LEAK.SYSTEM_INFORMATION.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) response\\.write$param(*)",
  "option.LEAK.SYSTEM_INFORMATION.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시)  err\\..*$variable",
  "option.LEAK.SYSTEM_INFORMATION.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.LEAK.SYSTEM_INFORMATION.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LEAK.SYSTEM_INFORMATION.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.LEAK.SYSTEM_INFORMATION.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.LEAK.SYSTEM_INFORMATION.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.LEAST_PRIVILEGE_VIOLATION.desc.function_target": "대상 함수를 설정합니다.",
  "option.LEAST_PRIVILEGE_VIOLATION.desc.function_used_order": "함수 사용 순서를 설정합니다.",
  "option.LEAST_PRIVILEGE_VIOLATION.title.function_target": "대상 함수",
  "option.LEAST_PRIVILEGE_VIOLATION.title.function_used_order": "함수 사용 순서",
  "option.LEFTOVER_DEBUG_CODE.KOTLIN.desc.check_main_method": "Main 함수를 검사합니다",
  "option.LEFTOVER_DEBUG_CODE.KOTLIN.desc.debug_code": "디버그 코드의 이름을 작성합니다.",
  "option.LEFTOVER_DEBUG_CODE.KOTLIN.desc.debug_method": "디버그 함수의 이름을 작성합니다.",
  "option.LEFTOVER_DEBUG_CODE.KOTLIN.desc.main_method_path": "Main 함수의 파일 경로를 작성합니다.",
  "option.LEFTOVER_DEBUG_CODE.KOTLIN.title.check_main_method": "Main 함수 검사",
  "option.LEFTOVER_DEBUG_CODE.KOTLIN.title.debug_code": "디버그 코드",
  "option.LEFTOVER_DEBUG_CODE.KOTLIN.title.debug_method": "디버그 함수",
  "option.LEFTOVER_DEBUG_CODE.KOTLIN.title.main_method_path": "Main 함수 파일 경로",
  "option.LEFTOVER_DEBUG_CODE.OBJC.desc.check_function": "디버그 함수의 이름을 작성합니다.",
  "option.LEFTOVER_DEBUG_CODE.OBJC.title.check_function": "디버그 함수",
  "option.LEFTOVER_DEBUG_CODE.PHP.desc.debug_function": "디버그 함수의 이름을 작성합니다.\n예시) debug_backtrace",
  "option.LEFTOVER_DEBUG_CODE.PHP.title.debug_function": "디버그 함수",
  "option.LEFTOVER_DEBUG_CODE.PYTHON.desc.debug_method": "디버그 함수의 이름을 작성합니다.",
  "option.LEFTOVER_DEBUG_CODE.PYTHON.title.debug_method": "디버그 함수",
  "option.LEFTOVER_DEBUG_CODE.SWIFT.desc.check_function": "디버그 함수의 이름을 작성합니다.",
  "option.LEFTOVER_DEBUG_CODE.SWIFT.title.check_function": "디버그 함수",
  "option.LEFTOVER_DEBUG_CODE.TOBE.JS.desc.target_function": "디버그 함수의 이름을 작성합니다.\n예시) trace",
  "option.LEFTOVER_DEBUG_CODE.TOBE.JS.title.target_function": "디버그 함수",
  "option.LEFTOVER_DEBUG_CODE.desc.check_class_type": "디버그 코드를 의미하는 메소드를 호출하는 클래스 타입, 예: request.getParameter(\"debug\") 에서 request 는 HttpServletRequest 타입이다.",
  "option.LEFTOVER_DEBUG_CODE.desc.check_method": "디버그 코드를 의미하는 메소드 이름, 예: request.getParameter(\"debug\") 에서 getParmeter 를 의미",
  "option.LEFTOVER_DEBUG_CODE.desc.debug_message_pattern": "디버그 코드를 의미하는 메세지의 패턴",
  "option.LEFTOVER_DEBUG_CODE.desc.debug_string": "디버그를 나타내는 문자열을 작성합니다.\n예시) debug",
  "option.LEFTOVER_DEBUG_CODE.desc.exclude_class": "이슈를 검출하지 않고 제외할 클래스 이름을 입력합니다.\n예시) com.fasoo.sparrow.Test",
  "option.LEFTOVER_DEBUG_CODE.desc.exclude_extend_class": "main 메소드 구현을 했는지 검사할 때 옵션 값에 있는 클래스를 상속한 클래스 내에 있는 main 메소드는 검사에서 제외됩니다. 예: .*.ExcludeClass",
  "option.LEFTOVER_DEBUG_CODE.desc.main_class": "main 메소드 구현을 했는지 검사할 때 옵션 값에 있는 클래스 내에 있는 main 메소드는 검사에서 제외됩니다. 예: .*.MainClass",
  "option.LEFTOVER_DEBUG_CODE.desc.method_param_value": "디버그 코드를 의미하는 메소드의 인자 값 (한 개의 인자만 허용), 정규식 지원, 예: request.getParameter(\"debug\") 에서 \"debug\" 를 의미",
  "option.LEFTOVER_DEBUG_CODE.desc.print_function": "출력에 사용되는 함수 이름을 작성합니다.\n예시) printf",
  "option.LEFTOVER_DEBUG_CODE.desc.target_func": "대상 함수를 설정합니다.",
  "option.LEFTOVER_DEBUG_CODE.title.check_class_type": "디버그 코드를 의미하는 메소드를 호출하는 클래스 타입",
  "option.LEFTOVER_DEBUG_CODE.title.check_method": "디버그 코드를 의미하는 메소드 이름",
  "option.LEFTOVER_DEBUG_CODE.title.debug_message_pattern": "디버그 메세지 패턴",
  "option.LEFTOVER_DEBUG_CODE.title.debug_string": "디버그 의미 문자열",
  "option.LEFTOVER_DEBUG_CODE.title.exclude_class": "검사에서 제외 되어야 하는 클래스 이름",
  "option.LEFTOVER_DEBUG_CODE.title.exclude_extend_class": "main 메소드 검사 제외할 클래스가 상속하는 클래스 명의 정규식",
  "option.LEFTOVER_DEBUG_CODE.title.main_class": "main 메소드 검사 제외할 클래스 명의 정규식",
  "option.LEFTOVER_DEBUG_CODE.title.method_param_value": "디버그 코드를 의미하는 메소드의 인자 값",
  "option.LEFTOVER_DEBUG_CODE.title.print_function": "출력 함수",
  "option.LEFTOVER_DEBUG_CODE.title.target_func": "대상 함수",
  "option.LOGGER_METHOD_ARGUMENT.desc.forbidden_patterns": "특정 메소드의 인자값으로 금지할 패턴을 입력하면 해당 패턴의 인자값을 이슈로 검출합니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.LOGGER_METHOD_ARGUMENT.desc.log_methods": "특정 메소드를 입력하면 범위 내의 메소드 이름을 발견한 경우 해당 메소드 인자값을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.LOGGER_METHOD_ARGUMENT.desc.target_path": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 전체 경로로 하나의 항목만 입력하세요.",
  "option.LOGGER_METHOD_ARGUMENT.desc.target_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.LOGGER_METHOD_ARGUMENT.desc.whitelist_path": "파일 경로를 텍스트로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출에서 제외합니다.",
  "option.LOGGER_METHOD_ARGUMENT.desc.whitelist_path_pattern": "입력한 파일 경로와 일치하는 파일을 발견한 경우 해당 파일을 검출에서 제외합니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.LOGGER_METHOD_ARGUMENT.title.forbidden_patterns": "인자값 내 금지 패턴",
  "option.LOGGER_METHOD_ARGUMENT.title.log_methods": "메소드 정규식 패턴",
  "option.LOGGER_METHOD_ARGUMENT.title.target_path": "분석 대상 파일 경로",
  "option.LOGGER_METHOD_ARGUMENT.title.target_path_pattern": "분석 대상 파일 경로의 정규식 패턴",
  "option.LOGGER_METHOD_ARGUMENT.title.whitelist_path": "허용된 파일 경로",
  "option.LOGGER_METHOD_ARGUMENT.title.whitelist_path_pattern": "허용된 파일 경로의 정규식 패턴",
  "option.LOG_FORGING.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.LOG_FORGING.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.LOG_FORGING.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.LOG_FORGING.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"console.dir\")",
  "option.LOG_FORGING.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"__sparrow_node_js_request__.url\")",
  "option.LOG_FORGING.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.LOG_FORGING.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LOG_FORGING.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.LOG_FORGING.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.LOG_FORGING.JS.title.taint_source": "외부 정보 입력 함수",
  "option.LOG_FORGING.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.LOG_FORGING.OBJC.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.LOG_FORGING.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.LOG_FORGING.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) printf$param(1)",
  "option.LOG_FORGING.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.LOG_FORGING.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.LOG_FORGING.OBJC.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LOG_FORGING.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.LOG_FORGING.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.LOG_FORGING.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.LOG_FORGING.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.LOG_FORGING.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.LOG_FORGING.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.LOG_FORGING.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"error_log\")",
  "option.LOG_FORGING.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.LOG_FORGING.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.LOG_FORGING.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LOG_FORGING.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.LOG_FORGING.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.LOG_FORGING.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.LOG_FORGING.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.LOG_FORGING.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.LOG_FORGING.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.LOG_FORGING.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) error_log$param(1)",
  "option.LOG_FORGING.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.LOG_FORGING.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.LOG_FORGING.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LOG_FORGING.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.LOG_FORGING.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.LOG_FORGING.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.LOG_FORGING.TOBE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.LOG_FORGING.TOBE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.LOG_FORGING.TOBE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.LOG_FORGING.TOBE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"trace\")",
  "option.LOG_FORGING.TOBE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "option.LOG_FORGING.TOBE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.LOG_FORGING.TOBE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LOG_FORGING.TOBE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.LOG_FORGING.TOBE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.LOG_FORGING.TOBE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.LOG_FORGING.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.LOG_FORGING.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.LOG_FORGING.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.LOG_FORGING.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.eventlog$param(*)",
  "option.LOG_FORGING.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.LOG_FORGING.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.LOG_FORGING.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.LOG_FORGING.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.LOG_FORGING.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.LOG_FORGING.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.LOG_SENSITIVE_INFORMATION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.LOG_SENSITIVE_INFORMATION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.LOG_SENSITIVE_INFORMATION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.LOG_SENSITIVE_INFORMATION.desc.sensitive_variable": "민감한 변수 명을 입력합니다.",
  "option.LOG_SENSITIVE_INFORMATION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.LOG_SENSITIVE_INFORMATION.title.alarm": "검출 규칙",
  "option.LOG_SENSITIVE_INFORMATION.title.exclude": "예외 규칙",
  "option.LOG_SENSITIVE_INFORMATION.title.propagator": "전파 규칙",
  "option.LOG_SENSITIVE_INFORMATION.title.sensitive_variable": "민감한 변수 명",
  "option.LOG_SENSITIVE_INFORMATION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.LOG_SENSITIVE_INFORMATION_ANDROID.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.LOG_SENSITIVE_INFORMATION_ANDROID.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.LOG_SENSITIVE_INFORMATION_ANDROID.desc.include_method": "로그에 반환 값의 출력을 허용할 함수 FQN을 입력합니다.",
  "option.LOG_SENSITIVE_INFORMATION_ANDROID.desc.include_variable": "로그에 값 출력을 허용할 변수명을 입력합니다.",
  "option.LOG_SENSITIVE_INFORMATION_ANDROID.title.exclude_method": "분석 제외 메소드",
  "option.LOG_SENSITIVE_INFORMATION_ANDROID.title.exclude_path": "분석 제외 경로",
  "option.LOG_SENSITIVE_INFORMATION_ANDROID.title.include_method": "로그에 반환 값의 출력을 허용할 함수 FQN",
  "option.LOG_SENSITIVE_INFORMATION_ANDROID.title.include_variable": "로그에 값 출력을 허용할 변수명",
  "option.MAX_LINE_LENGTH.desc.allow_excess_by_comment": "옵션을 사용하는 경우, 라인의 맨 끝에 있는 주석 때문에 길이를 초과하는 경우는 허용합니다.",
  "option.MAX_LINE_LENGTH.desc.allowed_max_length": "라인별 최대 허용 길이를 정수로 입력합니다.",
  "option.MAX_LINE_LENGTH.desc.include_indent": "옵션을 사용하는 경우, 들여쓰기 공백 문자의 수를 라인 길이에 포함합니다.",
  "option.MAX_LINE_LENGTH.title.allow_excess_by_comment": "라인 끝의 주석 예외 취급",
  "option.MAX_LINE_LENGTH.title.allowed_max_length": "최대 허용 길이",
  "option.MAX_LINE_LENGTH.title.include_indent": "들여쓰기 포함",
  "option.MEMCACHE_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.MEMCACHE_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.MEMCACHE_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.MEMCACHE_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) system$param(1)",
  "option.MEMCACHE_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.MEMCACHE_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.MEMCACHE_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.MEMCACHE_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.MEMCACHE_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.MEMCACHE_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.METHOD_COMMENT.desc.MethodComment": "메소드 주석 형식을 정의합니다.",
  "option.METHOD_COMMENT.desc.exclude_method_prefix": "입력한 단어로 시작하는 메소드는 검출에서 제외됩니다.",
  "option.METHOD_COMMENT.desc.exclude_package": "생성자 주석을 분석에서 제외할 패키지명을 입력합니다. 해당 패키지명 아래 있는 클래스의 생성자는 분석에서 제외됩니다.",
  "option.METHOD_COMMENT.desc.exclude_private": "private 한정자 메소드 제외 여부를 설정합니다.\n예시) 체크할 경우 private 메소드는 검사하지 않습니다.",
  "option.METHOD_COMMENT.title.MethodComment": "메소드 주석 형식",
  "option.METHOD_COMMENT.title.exclude_method_prefix": "제외 메소드 시작 단어",
  "option.METHOD_COMMENT.title.exclude_package": "생성자 분석 제외 패키지",
  "option.METHOD_COMMENT.title.exclude_private": "private 메소드 제외",
  "option.METHOD_NAMING.desc.exclude_getter_setter": "T로 설정하는 경우, 메소드가 getter/setter이면 검출에서 제외됩니다.",
  "option.METHOD_NAMING.desc.excluded_method_types": "특정 메소드 종류를 텍스트로 입력하면 해당 메소드를 검출에서 제외합니다. 예시로 protected를 입력한 경우, protected 메소드의 명명 규칙 준수 여부를 확인하지 않습니다.",
  "option.METHOD_NAMING.desc.forbidden_package_patterns": "패키지 경로를 정규식으로 입력하면 입력된 경로와 일치하는 패키지를 확인한 후, 해당 패키지 내 파일을 이슈로 검출합니다.",
  "option.METHOD_NAMING.desc.forbidden_packages": "패키지 경로를 텍스트로 입력하면 입력된 경로와 일치하는 패키지를 확인한 후, 해당 패키지 내 파일을 검출합니다.",
  "option.METHOD_NAMING.desc.naming_patterns": "메소드 이름이 준수해야 할 명명 규칙을 정규식으로 입력하면 파일 내 메소드 이름이 입력한 정규식과 일치하지 않는 경우 이슈로 검출합니다.",
  "option.METHOD_NAMING.title.exclude_getter_setter": "getter/setter 메소드를 검출에서 제외시키는 옵션",
  "option.METHOD_NAMING.title.excluded_method_types": "검출 제외 메소드 목록",
  "option.METHOD_NAMING.title.forbidden_package_patterns": "패키지 경로의 정규식 목록",
  "option.METHOD_NAMING.title.forbidden_packages": "검출 대상 패키지 경로(절대 경로)",
  "option.METHOD_NAMING.title.naming_patterns": "메소드 명명 규칙의 정규식 패턴 목록",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.desc.exclude_getter_setter": "T로 설정할 경우, 메소드가 getter/setter이면 검출에서 제외시킵니다.",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.desc.excluded_method_types": "특정 메소드 종류를 텍스트로 입력하면 해당 메소드를 검출에서 제외합니다. 예시로 protected를 입력한 경우, protected 메소드의 명명 규칙 준수 여부를 확인하지 않습니다.",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.desc.forbidden_package_patterns": "패키지 경로를 정규식으로 입력하면 입력된 경로와 일치하는 패키지를 확인한 후, 해당 패키지 내 파일을 이슈로 검출합니다.",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.desc.forbidden_packages": "패키지 경로를 텍스트로 입력하면 입력된 경로와 일치하는 패키지를 확인한 후, 해당 패키지 내 파일을 검출합니다.",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.desc.naming_patterns": "메소드 이름이 준수해야 할 명명 규칙을 정규식으로 입력하면 파일 내 메소드 이름이 입력한 정규식과 일치하지 않는 경우 이슈로 검출합니다.",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.title.exclude_getter_setter": "검출에서 getter/setter 메소드 제외",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.title.excluded_method_types": "검출 제외 메소드 목록",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.title.forbidden_package_patterns": "패키지 경로의 정규식 목록",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.title.forbidden_packages": "검출 대상 패키지 경로(절대 경로)",
  "option.METHOD_NAMING_IN_SPECIFIC_PACKAGE.title.naming_patterns": "메소드 명명 규칙의 정규식 패턴 목록",
  "option.MINIMIZE_VARIABLE_LIVE_RANGE.desc.allow_decl_seq": "선택하면 변수 선언 구문들이 연달아 사용되는 경우 하나의 선언처럼 처리합니다.",
  "option.MINIMIZE_VARIABLE_LIVE_RANGE.title.allow_decl_seq": "변수 연속 선언을 한 묶음 처리",
  "option.MISMATCH_RETURN_TYPE.desc.strict_suffix": "float이 32비트, double이 64비트인 플랫폼에서 float형을 리턴하는 함수는 반드시 접미사 F를 붙여야 합니다.",
  "option.MISMATCH_RETURN_TYPE.title.strict_suffix": "접미사 'F' 추가 여부",
  "option.MISSING.COMMENT.COLUMN_IN_SELECT.SQL.desc.check_outer_sql_only": "가장 바깥쪽 sql 만을 검사하도록 설정합니다.",
  "option.MISSING.COMMENT.COLUMN_IN_SELECT.SQL.desc.exceptional_column": "해당 컬럼명의 경우 주석이 생략되어 있어도 결함을 검출하지 않습니다.",
  "option.MISSING.COMMENT.COLUMN_IN_SELECT.SQL.desc.excluded_target_file_name": "검사 대상에서 제외할 파일 이름을 적습니다.",
  "option.MISSING.COMMENT.COLUMN_IN_SELECT.SQL.title.check_outer_sql_only": "검사 영역 제한",
  "option.MISSING.COMMENT.COLUMN_IN_SELECT.SQL.title.exceptional_column": "예외 컬럼명",
  "option.MISSING.COMMENT.COLUMN_IN_SELECT.SQL.title.excluded_target_file_name": "검사 대상 제외 파일명",
  "option.MISSING.WHERE.DELETE.ABAP.desc.ignore_table": "검출 대상에서 무시할 테이블명을 입력합니다.",
  "option.MISSING.WHERE.DELETE.ABAP.title.ignore_table": "무시할 테이블명",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.CSHARP.desc.authentication_functions": "인증을 수행하는 함수들을 적어 주십시오.",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.CSHARP.desc.critical_functions": "인증없이 실행될 경우 위험한 함수들을 적어 주십시오.",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.CSHARP.title.authentication_functions": "인증 함수들",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.CSHARP.title.critical_functions": "인증 취약 함수들",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.desc.auth_by_compare": "중요 기능을 수행하기 전에 비교 연산자를 사용하는 것을 인증으로 취급하려면 선택합니다.",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.desc.authentication_function": "중요 기능을 수행하기 전에 호출 및 검사되어야 하는 인증 함수 이름을 작성합니다.\n예시) checkAccount",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.desc.critical_function": "중요 기능을 수행하는 함수 이름을 작성합니다.\n예시) sendAccount",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.title.auth_by_compare": "비교 연산자로 인증",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.title.authentication_function": "인증 함수",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.title.critical_function": "중요 함수",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PHP.desc.authentication_function": "중요 기능을 수행하기 전에 호출 및 검사되어야 하는 인증 함수 이름을 작성합니다.\n예시) strcmp",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PHP.desc.critical_function": "중요 기능을 수행하는 함수 이름을 작성합니다.\n예시) login",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PHP.title.authentication_function": "인증 함수",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PHP.title.critical_function": "중요 함수",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PYTHON.desc.auth_by_compare": "중요 기능을 수행하기 전에 비교 연산자를 사용하는 것을 인증으로 취급하려면 선택합니다.",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PYTHON.desc.authentication_function": "중요 기능을 수행하기 전에 호출 및 검사되어야 하는 인증 함수 이름을 작성합니다.\n예시) strcmp",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PYTHON.desc.critical_function": "중요 기능을 수행하는 함수 이름을 작성합니다.\n예시) login",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PYTHON.title.auth_by_compare": "비교 연산자로 인증",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PYTHON.title.authentication_function": "인증 함수",
  "option.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PYTHON.title.critical_function": "중요 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) strlen$param(1)",
  "option.MISSING_AUTHENTICATION_CONTROL.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.MISSING_AUTHENTICATION_CONTROL.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) mysql_query$param(*)",
  "option.MISSING_AUTHENTICATION_CONTROL.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"$_GET[\\\\\"password\\\\\"]\")",
  "option.MISSING_AUTHENTICATION_CONTROL.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) strlen$param(1)",
  "option.MISSING_AUTHENTICATION_CONTROL.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.MISSING_AUTHENTICATION_CONTROL.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) mysql_query$param(*)",
  "option.MISSING_AUTHENTICATION_CONTROL.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"$_GET[\\\\\"password\\\\\"]\")",
  "option.MISSING_AUTHENTICATION_CONTROL.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.MISSING_AUTHENTICATION_CONTROL.desc.authentication_control_method": "인증 제어 루틴 이름을 작성합니다.\n예시) .+authenticate.*",
  "option.MISSING_AUTHENTICATION_CONTROL.desc.target_callee": "검증에 사용하는 함수 목록을 적습니다.",
  "option.MISSING_AUTHENTICATION_CONTROL.desc.target_caller": "검증 상태 확인이 필요한 함수 목록을 적습니다.",
  "option.MISSING_AUTHENTICATION_CONTROL.desc.target_file": "분석 대상 파일 이름 형식을 작성합니다.\n예시) .+admin.*",
  "option.MISSING_AUTHENTICATION_CONTROL.title.authentication_control_method": "인증 제어 루틴 이름",
  "option.MISSING_AUTHENTICATION_CONTROL.title.target_callee": "검증에 사용하는 함수 목록",
  "option.MISSING_AUTHENTICATION_CONTROL.title.target_caller": "검증 상태 확인이 필요한 함수 목록",
  "option.MISSING_AUTHENTICATION_CONTROL.title.target_file": "대상 파일 이름",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.desc.argument_type_for_critical_function": "중요 기능 함수의 인자 타입. 체커는 중요 기능 함수의 모든 인자 타입을 검사합니다. 정규식 지원.",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.desc.authenticated_block": "인증 수행 후 안전한 것으로 간주되는 코드 블록. 'if', 'switch', 'while', 'for' 블록이 될 수 있고, 삼항 연산자의 수식도 가능합니다. 이 코드 블록 내에 존재하는 모든 중요 기능 함수의 호출은 안전한 것으로 간주됩니다.",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.desc.authentication_function": "인증을 위해 호출되어야 하는 메소드를 작성합니다. 여러 개일 경우, 작성한 메소드가 모두 호출 되어야 인증이 수행되었다고 판단합니다.\n예시) java.lang.String.equals",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.desc.check_argument_type": "중요한 기능을 수행하는 함수에 전달되는 인자 타입을 확인합니다.",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.desc.critical_class": "중요한 기능을 수행하는 함수를 호출하는 객체의 클래스 타입 (패키지명을 포함한 클래스 명, i.e. java.lang.String), 정규식 지원",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.desc.critical_function": "중요한 기능을 수행하는 함수, 정규식 지원",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.title.argument_type_for_critical_function": "중요한 기능을 수행하는 함수의 인자 타입",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.title.authenticated_block": "인증이 완료된 코드블록",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.title.authentication_function": "인증 메소드",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.title.check_argument_type": "매개 변수 타입 확인",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.title.critical_class": "중요한 기능을 수행하는 함수를 호출하는 객체의 클래스 타입",
  "option.MISSING_AUTHENTICATION_FOR_CRITICAL_FUNCTION.title.critical_function": "중요한 기능을 수행하는 함수 이름",
  "option.MISSING_BLANK_LINE.IMPORT.desc.depth": "Import 문에서 비교 할 깊이를 설정합니다. (예: java.io는 깊이 2입니다.)",
  "option.MISSING_BLANK_LINE.IMPORT.desc.order_list": "허용할 Import 문의 순서의 목록을 등록합니다.",
  "option.MISSING_BLANK_LINE.IMPORT.title.depth": "Import 문 검색 깊이",
  "option.MISSING_BLANK_LINE.IMPORT.title.order_list": "Import 문 순서 목록",
  "option.MISSING_BLANK_LINE.SECTION.desc.blank_line_number": "각 section 간의 간격의 간격을 공백 줄 개수로 설정합니다.",
  "option.MISSING_BLANK_LINE.SECTION.title.blank_line_number": "Section 간의 간격",
  "option.MISSING_BLANK_LINE_BEFORE_COMMENT.desc.check_header": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "option.MISSING_BLANK_LINE_BEFORE_COMMENT.title.check_header": "헤더 파일 분석 여부",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.desc.check_case": "옵션을 사용하는 경우, switch 구문의 각 case 별로 실행될 문장이 중괄호로 싸여있는지 검사합니다.",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.desc.check_do": "옵션을 사용하는 경우, do-while 구문의 반복 실행 문장이 중괄호로 싸여있는지 검사합니다.",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.desc.check_else": "옵션을 사용하는 경우, if 구문이 거짓일 때 문장이 중괄호로 싸여있는지 검사합니다.",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.desc.check_for": "선택할 경우 for 구문의 반복 실행 문장이 중괄호로 싸여있는지 검사합니다.",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.desc.check_if": "옵션을 사용하는 경우, 참인 if 구문의 문장이 중괄호로 싸여있는지 검사합니다.",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.desc.check_while": "옵션을 사용하는 경우, while 구문의 반복 실행 문장이 중괄호로 싸여있는지 검사합니다.",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.title.check_case": "switch case에 항상 중괄호 사용",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.title.check_do": "do에 항상 중괄호 사용",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.title.check_else": "else에 항상 중괄호 사용",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.title.check_for": "for에 항상 중괄호 사용",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.title.check_if": "if 에 항상 중괄호 사용",
  "option.MISSING_BLOCK_IN_CONTROL_STATEMENT.title.check_while": "while에 항상 중괄호 사용",
  "option.MISSING_BREAK_IN_CASE.desc.check_last_case_only": "선택할 경우 마지막 case에 break 구문이 존재하는 지만 검사합니다.",
  "option.MISSING_BREAK_IN_CASE.desc.ignore_if_comment_exists": "선택할 경우 주석이 있는 이슈는 무시합니다.",
  "option.MISSING_BREAK_IN_CASE.title.check_last_case_only": "마지막 case 구문만 검사",
  "option.MISSING_BREAK_IN_CASE.title.ignore_if_comment_exists": "주석 존재 시 이슈 무시 여부",
  "option.MISSING_CHECK_OF_INPUT.desc.target_variable": "사용되기 전에 확인되어야 하는 변수 이름을 지정합니다.\n예시) .+\\.input",
  "option.MISSING_CHECK_OF_INPUT.title.target_variable": "대상 변수",
  "option.MISSING_DEBUG_CHECK.desc.check_function": "디버깅 함수 사용을 확인하는 함수 목록입니다.",
  "option.MISSING_DEBUG_CHECK.desc.debug_function": "디버깅 함수 목록입니다.",
  "option.MISSING_DEBUG_CHECK.title.check_function": "디버깅 함수 사용 확인 함수 목록",
  "option.MISSING_DEBUG_CHECK.title.debug_function": "디버깅 함수 목록",
  "option.MISSING_LOGIN_CONTROL.CSHARP.desc.login_classes": "로그인 관리 기능을 담당하는 클래스 이름을 적습니다.",
  "option.MISSING_LOGIN_CONTROL.CSHARP.desc.login_error_event_handlers": "로그인 에러 이벤트 핸들러 명을 적습니다.",
  "option.MISSING_LOGIN_CONTROL.CSHARP.title.login_classes": "로그인 관리 클래스명",
  "option.MISSING_LOGIN_CONTROL.CSHARP.title.login_error_event_handlers": "로그인 에러 이벤트 핸들러",
  "option.MISSING_LOGIN_CONTROL.KOTLIN.desc.login_method": "로그인하는 함수의 이름을 작성합니다.",
  "option.MISSING_LOGIN_CONTROL.KOTLIN.title.login_method": "로그인 함수",
  "option.MISSING_LOGIN_CONTROL.PHP.desc.check_inner_control": "활성화 된 경우 로그인 루틴 내부에서 제어가 이루어지는지 검사합니다.",
  "option.MISSING_LOGIN_CONTROL.PHP.desc.check_outer_control": "활성화 된 경우 로그인 루틴이 외부로부터 제어되는지 검사합니다.",
  "option.MISSING_LOGIN_CONTROL.PHP.desc.login_function": "로그인 함수의 이름을 작성합니다.\n예시) login",
  "option.MISSING_LOGIN_CONTROL.PHP.title.check_inner_control": "내부 제어 검사",
  "option.MISSING_LOGIN_CONTROL.PHP.title.check_outer_control": "외부 제어 검사",
  "option.MISSING_LOGIN_CONTROL.PHP.title.login_function": "로그인 함수",
  "option.MISSING_LOGIN_CONTROL.PYTHON.desc.check_inner_control": "활성화 된 경우 로그인 루틴 내부에서 제어가 이루어지는지 검사합니다.",
  "option.MISSING_LOGIN_CONTROL.PYTHON.desc.check_outer_control": "활성화 된 경우 로그인 루틴이 외부로부터 제어되는지 검사합니다.",
  "option.MISSING_LOGIN_CONTROL.PYTHON.desc.login_function": "로그인 함수의 이름을 작성합니다.\n예시) login",
  "option.MISSING_LOGIN_CONTROL.PYTHON.title.check_inner_control": "내부 제어 검사",
  "option.MISSING_LOGIN_CONTROL.PYTHON.title.check_outer_control": "외부 제어 검사",
  "option.MISSING_LOGIN_CONTROL.PYTHON.title.login_function": "로그인 함수",
  "option.MISSING_LOGIN_CONTROL.desc.authentification_functions": "로그인 함수 이름을 적습니다.",
  "option.MISSING_LOGIN_CONTROL.desc.check_inner_control": "옵션을 사용하는 경우, 로그인 루틴 내부의 모든 반복문이 제어되는지 검사합니다.",
  "option.MISSING_LOGIN_CONTROL.desc.check_outer_control": "옵션을 사용하는 경우, 로그인 루틴이 외부에서 제어되는지 검사합니다.",
  "option.MISSING_LOGIN_CONTROL.desc.login_method": "로그인 루틴 이름을 작성합니다.\n예시) .+\\..*login",
  "option.MISSING_LOGIN_CONTROL.desc.loop_inside_target_function": "옵션을 사용하는 경우, 제어되지 않은 루프 안에서 함수 호출을 탐지합니다.",
  "option.MISSING_LOGIN_CONTROL.desc.target_function_inside_loop": "옵션을 사용하는 경우, 함수 안에 있는 제어 안된 루프를 탐지합니다.",
  "option.MISSING_LOGIN_CONTROL.title.authentification_functions": "로그인 함수 이름",
  "option.MISSING_LOGIN_CONTROL.title.check_inner_control": "내부 제어 검사",
  "option.MISSING_LOGIN_CONTROL.title.check_outer_control": "외부 제어 검사",
  "option.MISSING_LOGIN_CONTROL.title.login_method": "로그인 루틴 이름",
  "option.MISSING_LOGIN_CONTROL.title.loop_inside_target_function": "제어 안된 루프 안에서 함수 호출을 탐지",
  "option.MISSING_LOGIN_CONTROL.title.target_function_inside_loop": "함수 안에 있는 제어 안된 루프를 탐지",
  "option.MISSING_NORMALIZATION_BEFORE_VALIDATION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.MISSING_NORMALIZATION_BEFORE_VALIDATION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.MISSING_NORMALIZATION_BEFORE_VALIDATION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.MISSING_NORMALIZATION_BEFORE_VALIDATION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.MISSING_NORMALIZATION_BEFORE_VALIDATION.title.alarm": "검출 규칙",
  "option.MISSING_NORMALIZATION_BEFORE_VALIDATION.title.exclude": "예외 규칙",
  "option.MISSING_NORMALIZATION_BEFORE_VALIDATION.title.propagator": "전파 규칙",
  "option.MISSING_NORMALIZATION_BEFORE_VALIDATION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.MISSING_PARENTHESIS_IN_EXPRESSION.desc.min_num_of_expression": "수식 내 괄호로 우선순위 구분이 필요한 최소 연산 개수를 작성합니다.\n예시) 3",
  "option.MISSING_PARENTHESIS_IN_EXPRESSION.title.min_num_of_expression": "괄호로 우선순위 구분이 필요한 최소 연산 개수",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.desc.authentification_functions": "비밀번호 복원 함수 이름을 적습니다.",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.desc.check_inner_control": "옵션을 사용하는 경우 비밀번호 복구 루틴 내부의 모든 반복문이 제어되는지 검사합니다.",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.desc.check_outer_control": "옵션을 사용하는 경우, 비밀번호 복구 루틴이 외부에서 제어되는지 검사합니다.",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.desc.loop_inside_target_function": "옵션을 사용하는 경우, 제어되지 않은 루프 안에서 함수 호출을 탐지합니다.",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.desc.password_recovery_method": "비밀번호 복구 루틴의 이름을 작성합니다.\n예시) .+\\..*recoverPassword",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.desc.target_function_inside_loop": "옵션을 사용하는 경우, 함수 안에 있는 제어 안된 루프를 탐지합니다.",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.title.authentification_functions": "비밀번호 복원 함수 이름",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.title.check_inner_control": "내부 제어 검사",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.title.check_outer_control": "외부 제어 검사",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.title.loop_inside_target_function": "제어 안된 루프 안에서 함수 호출을 탐지",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.title.password_recovery_method": "비밀번호 복구 루틴 이름",
  "option.MISSING_PASSWORD_RECOVERY_CONTROL.title.target_function_inside_loop": "함수 안에 있는 제어 안된 루프를 탐지",
  "option.MISSING_WRAPPER_ON_VARIABLE.desc.call_param_should_be_call": "필수 호출 파라미터를 설정합니다.",
  "option.MISSING_WRAPPER_ON_VARIABLE.desc.call_target": "호출 대상 함수명을 설정합니다.",
  "option.MISSING_WRAPPER_ON_VARIABLE.desc.file_target_excluded": "분석에서 제외되는 파일명을 설정합니다.",
  "option.MISSING_WRAPPER_ON_VARIABLE.desc.function_target": "분석 대상이 되는 함수명을 설정합니다.",
  "option.MISSING_WRAPPER_ON_VARIABLE.desc.function_target_excluded": "분석에서 제외되는 함수명을 설정합니다.",
  "option.MISSING_WRAPPER_ON_VARIABLE.title.call_param_should_be_call": "필수 호출 파라미터 설정",
  "option.MISSING_WRAPPER_ON_VARIABLE.title.call_target": "호출 대상 함수",
  "option.MISSING_WRAPPER_ON_VARIABLE.title.file_target_excluded": "분석에서 제외되는 파일",
  "option.MISSING_WRAPPER_ON_VARIABLE.title.function_target": "분석 대상이 되는 함수",
  "option.MISSING_WRAPPER_ON_VARIABLE.title.function_target_excluded": "분석에서 제외되는 함수",
  "option.MODIFY_INPUT_PARAMETER.desc.blacklist_methods": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.MODIFY_INPUT_PARAMETER.desc.blacklist_patterns": "입력한 정규식 범위 내의 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.MODIFY_INPUT_PARAMETER.desc.whitelist_classes": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출에서 제외합니다.",
  "option.MODIFY_INPUT_PARAMETER.title.blacklist_methods": "블랙리스트 단일",
  "option.MODIFY_INPUT_PARAMETER.title.blacklist_patterns": "블랙리스트 범위",
  "option.MODIFY_INPUT_PARAMETER.title.whitelist_classes": "화이트리스트 단일",
  "option.MUTABLE_EQUALS.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.MUTABLE_EQUALS.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.MUTABLE_EQUALS.title.exclude_method": "분석 제외 메소드",
  "option.MUTABLE_EQUALS.title.exclude_path": "분석 제외 경로",
  "option.NAMING_CONVENTION.TYPE.desc.ignore_types": "무시할 타입 이름을 작성합니다.",
  "option.NAMING_CONVENTION.TYPE.title.ignore_types": "무시할 타입 이름",
  "option.NEGATIVE_NUMBER_PROPERTY.JS.desc.target_pattern": "음수를 값으로 가질수 없는 프로퍼티를 입력하세요..\n예시) Content-Length",
  "option.NEGATIVE_NUMBER_PROPERTY.JS.title.target_pattern": "음수를 값으로 가질 수 없는 프로퍼티",
  "option.NONEFFECTIVE_FUNCTION_CALL.desc.excluded_structure": "예외사항에 포함되는 구조체 이름 목록을 적습니다.",
  "option.NONEFFECTIVE_FUNCTION_CALL.title.excluded_structure": "예외사항에 포함되는 구조체 이름 목록",
  "option.NONSERIALIZABLE_OBJECT_STORED_IN_SESSION.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.NONSERIALIZABLE_OBJECT_STORED_IN_SESSION.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.NONSERIALIZABLE_OBJECT_STORED_IN_SESSION.title.exclude_method": "분석 제외 메소드",
  "option.NONSERIALIZABLE_OBJECT_STORED_IN_SESSION.title.exclude_path": "분석 제외 경로",
  "option.NOT_LAST_DEFAULT_CASE.desc.allow_leading_default": "default를 맨 앞에 배치하는 것을 허용합니다.",
  "option.NOT_LAST_DEFAULT_CASE.title.allow_leading_default": "맨 앞에 default 허용",
  "option.NO_GLOBAL_VARIABLES_BETWEEN_FUNCTIONS.desc.ignored_variable_name": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "option.NO_GLOBAL_VARIABLES_BETWEEN_FUNCTIONS.title.ignored_variable_name": "검사 대상에서 제외할 변수 이름",
  "option.NULL_DEREFERENCE.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.NULL_DEREFERENCE.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.NULL_DEREFERENCE.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.NULL_DEREFERENCE.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "option.NULL_DEREFERENCE.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"read\")",
  "option.NULL_DEREFERENCE.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.NULL_DEREFERENCE.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.NULL_DEREFERENCE.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.NULL_DEREFERENCE.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.NULL_DEREFERENCE.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.desc.bool_option": "해당 옵션값을 T로 설정하면 5번 옵션에 설정된 숫자 이상의 라인 수를 가진 메소드를 검출하고, F로 설정하면 숫자 이하의 라인 수를 가진 메소드를 검출합니다.",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.desc.num_lines": "소드 내부 코드 라인 수로 제한할 값을 0보다 큰 양의 정수로 입력하세요. 6번 옵션을 T로 설정하면 입력값 이상의 코드 라인 수인 메소드를 검출하고, F로 설정하면 입력값 이하의 코드 라인 수인 메소드를 검출합니다. 0, 음의 정수 또는 정수가 아닌 값은 허용하지 않습니다. 해당 옵션에 입력값이 없으면 체커가 동작하지 않습니다.",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.desc.target_path": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.desc.target_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.desc.whitelist_path": "파일 경로를 텍스트로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출에서 제외합니다.",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.desc.whitelist_path_pattern": "입력한 파일 경로와 일치하는 파일을 발견한 경우 해당 파일을 검출에서 제외합니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.title.bool_option": "메소드 내부의 코드 라인 제한 기준",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.title.num_lines": "메소드 내부의 코드 라인 수",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.title.target_path": "분석 대상 파일 경로",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.title.target_path_pattern": "분석 대상 파일 경로",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.title.whitelist_path": "허용된 파일 경로",
  "option.NUMBER_OF_METHOD_LINES_IN_PATH.title.whitelist_path_pattern": "허용된 파일 경로의 정규식 패턴",
  "option.ONLY_INLINE_SIMPLE_FUNCTION.desc.line_of_code": "최대 코드 라인수를 입력합니다.",
  "option.ONLY_INLINE_SIMPLE_FUNCTION.desc.statements_count": "최대 문장 수를 입력합니다.",
  "option.ONLY_INLINE_SIMPLE_FUNCTION.title.line_of_code": "최대 코드 라인수",
  "option.ONLY_INLINE_SIMPLE_FUNCTION.title.statements_count": "최대 문장 수",
  "option.OPEN_REDIRECT.CPP.desc.clear_call": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.\n예시) urlchecker",
  "option.OPEN_REDIRECT.CPP.desc.sink_call": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "option.OPEN_REDIRECT.CPP.desc.source_call": "민감한 정보를 입력 받는 함수 이름을 작성합니다.\n예시) getenv",
  "option.OPEN_REDIRECT.CPP.title.clear_call": "민감한 정보 검사 함수",
  "option.OPEN_REDIRECT.CPP.title.sink_call": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.CPP.title.source_call": "민감한 정보 입력 함수",
  "option.OPEN_REDIRECT.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.OPEN_REDIRECT.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.OPEN_REDIRECT.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.OPEN_REDIRECT.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"window.open\")",
  "option.OPEN_REDIRECT.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.OPEN_REDIRECT.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OPEN_REDIRECT.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.JS.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.OPEN_REDIRECT.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.OPEN_REDIRECT.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.OPEN_REDIRECT.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"javax.servlet.http.HttpServletResponse.sendRedirect\")",
  "option.OPEN_REDIRECT.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.OPEN_REDIRECT.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OPEN_REDIRECT.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.OPEN_REDIRECT.OBJC.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.OPEN_REDIRECT.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.OPEN_REDIRECT.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) printf$param(1)",
  "option.OPEN_REDIRECT.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.OPEN_REDIRECT.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.OBJC.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OPEN_REDIRECT.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.OPEN_REDIRECT.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.OPEN_REDIRECT.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.OPEN_REDIRECT.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"header\")",
  "option.OPEN_REDIRECT.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.OPEN_REDIRECT.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OPEN_REDIRECT.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.OPEN_REDIRECT.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.OPEN_REDIRECT.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.OPEN_REDIRECT.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) header$param(1)",
  "option.OPEN_REDIRECT.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.OPEN_REDIRECT.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OPEN_REDIRECT.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.OPEN_REDIRECT.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.OPEN_REDIRECT.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) printf$param(1)",
  "option.OPEN_REDIRECT.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.OPEN_REDIRECT.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.TOBE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.OPEN_REDIRECT.TOBE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.OPEN_REDIRECT.TOBE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.OPEN_REDIRECT.TOBE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"ExecBrowser\")",
  "option.OPEN_REDIRECT.TOBE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "option.OPEN_REDIRECT.TOBE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.TOBE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OPEN_REDIRECT.TOBE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.TOBE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.TOBE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.OPEN_REDIRECT.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.OPEN_REDIRECT.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.OPEN_REDIRECT.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) shell$param(*)",
  "option.OPEN_REDIRECT.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.OPEN_REDIRECT.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OPEN_REDIRECT.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.OPEN_REDIRECT.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.OPEN_REDIRECT.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.OPEN_REDIRECT.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) response\\.redirect$param(*)",
  "option.OPEN_REDIRECT.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.OPEN_REDIRECT.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.OPEN_REDIRECT.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OPEN_REDIRECT.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.OPEN_REDIRECT.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.OPEN_REDIRECT.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.OPEN_REDIRECT.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.OPEN_REDIRECT.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.OPEN_REDIRECT.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.OPEN_REDIRECT.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.OPEN_REDIRECT.title.alarm": "검출 규칙",
  "option.OPEN_REDIRECT.title.exclude": "예외 규칙",
  "option.OPEN_REDIRECT.title.propagator": "전파 규칙",
  "option.OPEN_REDIRECT.title.suggestion_filter_function": "제안할 필터 함수",
  "option.OS_COMMAND_INJECTION.JS.desc.custom_taint_sink": "셸 옵션 확인이 필요한 함수",
  "option.OS_COMMAND_INJECTION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.OS_COMMAND_INJECTION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.OS_COMMAND_INJECTION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.OS_COMMAND_INJECTION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"exec\")",
  "option.OS_COMMAND_INJECTION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of name(reg(\"\\\\S+\\\\.body.*\"))",
  "option.OS_COMMAND_INJECTION.JS.title.custom_taint_sink": "셸 옵션 확인 함수",
  "option.OS_COMMAND_INJECTION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.OS_COMMAND_INJECTION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OS_COMMAND_INJECTION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.OS_COMMAND_INJECTION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.OS_COMMAND_INJECTION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.OS_COMMAND_INJECTION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.OS_COMMAND_INJECTION.OBJC.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.OS_COMMAND_INJECTION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.OS_COMMAND_INJECTION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) printf$param(1)",
  "option.OS_COMMAND_INJECTION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.OS_COMMAND_INJECTION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.OS_COMMAND_INJECTION.OBJC.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OS_COMMAND_INJECTION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.OS_COMMAND_INJECTION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.OS_COMMAND_INJECTION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.OS_COMMAND_INJECTION.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.OS_COMMAND_INJECTION.SWIFT.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.OS_COMMAND_INJECTION.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.OS_COMMAND_INJECTION.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) printf$param(1)",
  "option.OS_COMMAND_INJECTION.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.OS_COMMAND_INJECTION.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.OS_COMMAND_INJECTION.SWIFT.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.OS_COMMAND_INJECTION.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.OS_COMMAND_INJECTION.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.OS_COMMAND_INJECTION.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.OS_COMMAND_INJECTION.desc.clear_call": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.\n예시) strpbrk",
  "option.OS_COMMAND_INJECTION.desc.sink_call": "민감한 정보가 포함되었을 경우 위험한 함수 명을 작성합니다.\n예시) system",
  "option.OS_COMMAND_INJECTION.desc.sink_call_any": "소켓에서 민감한 정보가 올 경우 위험한 함수 이름을 작성합니다.\n예시) execl",
  "option.OS_COMMAND_INJECTION.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n예시) getenv",
  "option.OS_COMMAND_INJECTION.title.clear_call": "민감한 정보 검사 함수",
  "option.OS_COMMAND_INJECTION.title.sink_call": "민감한 정보 노출 함수",
  "option.OS_COMMAND_INJECTION.title.sink_call_any": "민감한 정보 노출 함수",
  "option.OS_COMMAND_INJECTION.title.source_call": "민감한 정보 입력 함수",
  "option.OVERLY_BROAD_CATCH.KOTLIN.desc.option": "다른 예외 처리 구간이 있을 경우 지나치게 일반적인 예외를 무시하겠습니까?\n예시) true",
  "option.OVERLY_BROAD_CATCH.KOTLIN.desc.overly_broad_exception": "지나치게 일반적인 예외들의 이름을 작성합니다.\n 예시) Exception",
  "option.OVERLY_BROAD_CATCH.KOTLIN.title.option": "옵션 On / Off",
  "option.OVERLY_BROAD_CATCH.KOTLIN.title.overly_broad_exception": "지나치게 일반적인 예외",
  "option.OVERLY_BROAD_CATCH.PHP.desc.overly_broad_exception": "지나치게 일반적인 예외들의 이름을 작성합니다.",
  "option.OVERLY_BROAD_CATCH.PHP.title.overly_broad_exception": "지나치게 일반적인 예외",
  "option.OVERLY_BROAD_CATCH.PYTHON.desc.option": "다른 예외 처리 구간이 있을 경우 지나치게 일반적인 예외를 무시하겠습니까?\n예시) true",
  "option.OVERLY_BROAD_CATCH.PYTHON.desc.overly_broad_exception": "지나치게 일반적인 예외들의 이름을 작성합니다.\n 예시) Exception",
  "option.OVERLY_BROAD_CATCH.PYTHON.title.option": "옵션 On / Off",
  "option.OVERLY_BROAD_CATCH.PYTHON.title.overly_broad_exception": "지나치게 일반적인 예외",
  "option.OVERLY_BROAD_THROW.KOTLIN.desc.allowed_exception": "검출 대상에서 제외할 예외 타입 이름 혹은 FQN의 패턴을 정규식으로 입력하세요.",
  "option.OVERLY_BROAD_THROW.KOTLIN.desc.overly_broad_exception": "지나치게 광범위한 예외로 간주할 타입의 이름 혹은 FQN을 입력합니다.",
  "option.OVERLY_BROAD_THROW.KOTLIN.title.allowed_exception": "허용 예외 타입 패턴",
  "option.OVERLY_BROAD_THROW.KOTLIN.title.overly_broad_exception": "광범위한 예외 타입",
  "option.OVERRUN.STATIC.STRCPY.OBJC.desc.string_function": "문자열을 처리하는 함수를 사용할 때, Buffer Overrun 오류가 발생할 가능성이 있는 함수들의 목록입니다.",
  "option.OVERRUN.STATIC.STRCPY.OBJC.title.string_function": "문자열 처리 검사 대상 함수",
  "option.PACKAGE_COMMENT.desc.PackageComment": "패키지 주석 형식을 정의합니다.",
  "option.PACKAGE_COMMENT.title.PackageComment": "패키지 주석 형식",
  "option.PASSWORD_IN_COMMENT.CSHARP.desc.sensitive_data": "중요 정보 패턴을 적어 주십시오.",
  "option.PASSWORD_IN_COMMENT.CSHARP.title.sensitive_data": "중요 정보 패턴",
  "option.PASSWORD_IN_COMMENT.KOTLIN.desc.allowed_max_word_length": "단일 단어의 최대 길이를 작성합니다.\n예시) 40",
  "option.PASSWORD_IN_COMMENT.KOTLIN.desc.check_password_only": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "option.PASSWORD_IN_COMMENT.KOTLIN.desc.consecutive_word_expr": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.\n예시) [a-zA-Z0-9]+",
  "option.PASSWORD_IN_COMMENT.KOTLIN.desc.fixed_key_length": "고정 길이 문자열을 입력합니다.",
  "option.PASSWORD_IN_COMMENT.KOTLIN.desc.password_expr": "비밀번호로 간주할 수 있는 문자열을 작성합니다.\n예시) password",
  "option.PASSWORD_IN_COMMENT.KOTLIN.desc.using_fixed_key_length": "옵션을 사용하는 경우, 고정 길이의 문자열을 검출합니다.",
  "option.PASSWORD_IN_COMMENT.KOTLIN.title.allowed_max_word_length": "허용할 최대 연속 단어 길이",
  "option.PASSWORD_IN_COMMENT.KOTLIN.title.check_password_only": "비밀번호 문자열 단독 검출 여부",
  "option.PASSWORD_IN_COMMENT.KOTLIN.title.consecutive_word_expr": "검출할 연속 단어 형식",
  "option.PASSWORD_IN_COMMENT.KOTLIN.title.fixed_key_length": "고정 길이",
  "option.PASSWORD_IN_COMMENT.KOTLIN.title.password_expr": "비밀번호 문자열",
  "option.PASSWORD_IN_COMMENT.KOTLIN.title.using_fixed_key_length": "고정 길이 검출 여부",
  "option.PASSWORD_IN_COMMENT.OBJC.desc.allowed_max_word_length": "단일 단어의 최대 길이를 작성합니다.\n예시) 40",
  "option.PASSWORD_IN_COMMENT.OBJC.desc.check_header": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "option.PASSWORD_IN_COMMENT.OBJC.desc.check_password_only": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "option.PASSWORD_IN_COMMENT.OBJC.desc.consecutive_word_expr": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.\n예시) [a-zA-Z0-9]+",
  "option.PASSWORD_IN_COMMENT.OBJC.desc.fixed_key_length": "고정 길이 문자열을 입력합니다.",
  "option.PASSWORD_IN_COMMENT.OBJC.desc.password_expr": "비밀번호로 간주할 수 있는 문자열을 작성합니다.\n예시) password",
  "option.PASSWORD_IN_COMMENT.OBJC.desc.using_fixed_key_length": "옵션을 사용하는 경우 고정 길이의 문자열을 검출합니다.",
  "option.PASSWORD_IN_COMMENT.OBJC.title.allowed_max_word_length": "허용할 최대 연속 단어 길이",
  "option.PASSWORD_IN_COMMENT.OBJC.title.check_header": "헤더 파일 분석 여부",
  "option.PASSWORD_IN_COMMENT.OBJC.title.check_password_only": "비밀번호 문자열 단독 검출 여부",
  "option.PASSWORD_IN_COMMENT.OBJC.title.consecutive_word_expr": "검출할 연속 단어 형식",
  "option.PASSWORD_IN_COMMENT.OBJC.title.fixed_key_length": "고정 길이",
  "option.PASSWORD_IN_COMMENT.OBJC.title.password_expr": "비밀번호 문자열",
  "option.PASSWORD_IN_COMMENT.OBJC.title.using_fixed_key_length": "고정 길이 검출 여부",
  "option.PASSWORD_IN_COMMENT.PHP.desc.allowed_max_word_length": "단일 단어의 최대 길이를 작성합니다.\n예시) 40",
  "option.PASSWORD_IN_COMMENT.PHP.desc.check_password_only": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "option.PASSWORD_IN_COMMENT.PHP.desc.consecutive_word_expr": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.\n예시) [a-zA-Z0-9]+",
  "option.PASSWORD_IN_COMMENT.PHP.desc.fixed_key_length": "고정 길이 문자열을 입력합니다.",
  "option.PASSWORD_IN_COMMENT.PHP.desc.password_expr": "비밀번호로 간주할 수 있는 문자열을 작성합니다.\n예시) password",
  "option.PASSWORD_IN_COMMENT.PHP.desc.using_fixed_key_length": "옵션을 사용하는 경우, 고정 길이의 문자열을 검출합니다.",
  "option.PASSWORD_IN_COMMENT.PHP.title.allowed_max_word_length": "허용할 최대 연속 단어 길이",
  "option.PASSWORD_IN_COMMENT.PHP.title.check_password_only": "비밀번호 문자열 단독 검출 여부",
  "option.PASSWORD_IN_COMMENT.PHP.title.consecutive_word_expr": "검출할 연속 단어 형식",
  "option.PASSWORD_IN_COMMENT.PHP.title.fixed_key_length": "고정 길이",
  "option.PASSWORD_IN_COMMENT.PHP.title.password_expr": "비밀번호 문자열",
  "option.PASSWORD_IN_COMMENT.PHP.title.using_fixed_key_length": "고정 길이 검출 여부",
  "option.PASSWORD_IN_COMMENT.desc.allowed_max_word_length": "단일 단어의 최대 길이를 작성합니다.\n예시) 40",
  "option.PASSWORD_IN_COMMENT.desc.check_header": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "option.PASSWORD_IN_COMMENT.desc.check_password_only": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "option.PASSWORD_IN_COMMENT.desc.consecutive_word_expr": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.\n예시) [a-zA-Z0-9]+",
  "option.PASSWORD_IN_COMMENT.desc.fixed_key_length": "고정 길이 문자열을 입력합니다.",
  "option.PASSWORD_IN_COMMENT.desc.password_expr": "비밀번호로 간주할 수 있는 문자열을 작성합니다.\n예시) password",
  "option.PASSWORD_IN_COMMENT.desc.using_fixed_key_length": "옵션을 사용하는 경우 고정 길이의 문자열을 검출합니다.",
  "option.PASSWORD_IN_COMMENT.title.allowed_max_word_length": "허용할 최대 연속 단어 길이",
  "option.PASSWORD_IN_COMMENT.title.check_header": "헤더 파일 분석 여부",
  "option.PASSWORD_IN_COMMENT.title.check_password_only": "비밀번호 문자열 단독 검출 여부",
  "option.PASSWORD_IN_COMMENT.title.consecutive_word_expr": "검출할 연속 단어 형식",
  "option.PASSWORD_IN_COMMENT.title.fixed_key_length": "고정 길이",
  "option.PASSWORD_IN_COMMENT.title.password_expr": "비밀번호 문자열",
  "option.PASSWORD_IN_COMMENT.title.using_fixed_key_length": "고정 길이 검출 여부",
  "option.PASSWORD_IN_SERVLET_COMMENT.desc.password_variable": "패스워드를 나타내는 변수 이름",
  "option.PASSWORD_IN_SERVLET_COMMENT.title.password_variable": "비밀번호를 나타내는 변수 이름",
  "option.PASSWORD_MANAGEMENT_HARDCODED_PASSWORD.desc.exclude_extension": "검출 제외 파일 확장자를 지정합니다.",
  "option.PASSWORD_MANAGEMENT_HARDCODED_PASSWORD.desc.rule": "검출 규칙을 지정합니다.",
  "option.PASSWORD_MANAGEMENT_HARDCODED_PASSWORD.desc.target_extension": "분석 대상 확장자를 입력합니다.",
  "option.PASSWORD_MANAGEMENT_HARDCODED_PASSWORD.title.exclude_extension": "제외 파일 확장자",
  "option.PASSWORD_MANAGEMENT_HARDCODED_PASSWORD.title.rule": "검출 규칙",
  "option.PASSWORD_MANAGEMENT_HARDCODED_PASSWORD.title.target_extension": "분석 대상 확장자",
  "option.PASSWORD_MANAGEMENT_PASSWORD_IN_COMMENT.desc.exclude_extension": "검출 제외 파일 확장자를 지정합니다.",
  "option.PASSWORD_MANAGEMENT_PASSWORD_IN_COMMENT.desc.rule": "검출 규칙을 지정합니다.",
  "option.PASSWORD_MANAGEMENT_PASSWORD_IN_COMMENT.desc.target_extension": "분석 대상 확장자를 입력합니다.",
  "option.PASSWORD_MANAGEMENT_PASSWORD_IN_COMMENT.title.exclude_extension": "제외 파일 확장자",
  "option.PASSWORD_MANAGEMENT_PASSWORD_IN_COMMENT.title.rule": "검출 규칙",
  "option.PASSWORD_MANAGEMENT_PASSWORD_IN_COMMENT.title.target_extension": "분석 대상 확장자",
  "option.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION.title.alarm": "검출 규칙",
  "option.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION.title.exclude": "예외 규칙",
  "option.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION.title.propagator": "전파 규칙",
  "option.PASSWORD_SAVED_FILE_WITHOUT_ENCRYPTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.PATH_CONTAMINATION.GO.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.PATH_CONTAMINATION.GO.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.PATH_CONTAMINATION.GO.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.PATH_CONTAMINATION.GO.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"openConnection\")",
  "option.PATH_CONTAMINATION.GO.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.PATH_CONTAMINATION.GO.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_CONTAMINATION.GO.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_CONTAMINATION.GO.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_CONTAMINATION.GO.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_CONTAMINATION.GO.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_CONTAMINATION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.PATH_CONTAMINATION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.PATH_CONTAMINATION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.PATH_CONTAMINATION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"getFile\")",
  "option.PATH_CONTAMINATION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.PATH_CONTAMINATION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_CONTAMINATION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_CONTAMINATION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_CONTAMINATION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_CONTAMINATION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_MANIPULATION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.PATH_MANIPULATION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.PATH_MANIPULATION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.PATH_MANIPULATION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"java.io.File\")",
  "option.PATH_MANIPULATION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.PATH_MANIPULATION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_MANIPULATION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_MANIPULATION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_MANIPULATION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_MANIPULATION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_MANIPULATION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.PATH_MANIPULATION.OBJC.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.PATH_MANIPULATION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.PATH_MANIPULATION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) NSFileManager.contentsAtPath:$param(1)",
  "option.PATH_MANIPULATION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.PATH_MANIPULATION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_MANIPULATION.OBJC.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_MANIPULATION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_MANIPULATION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_MANIPULATION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_MANIPULATION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.PATH_MANIPULATION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.PATH_MANIPULATION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.PATH_MANIPULATION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"fread\")",
  "option.PATH_MANIPULATION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.PATH_MANIPULATION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_MANIPULATION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_MANIPULATION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_MANIPULATION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_MANIPULATION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_MANIPULATION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.PATH_MANIPULATION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.PATH_MANIPULATION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.PATH_MANIPULATION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) fread$param(1)",
  "option.PATH_MANIPULATION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.PATH_MANIPULATION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_MANIPULATION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_MANIPULATION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_MANIPULATION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_MANIPULATION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_MANIPULATION.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.PATH_MANIPULATION.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.PATH_MANIPULATION.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.PATH_MANIPULATION.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) shell$param(*)",
  "option.PATH_MANIPULATION.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.PATH_MANIPULATION.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_MANIPULATION.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_MANIPULATION.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_MANIPULATION.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_MANIPULATION.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_MANIPULATION.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.PATH_MANIPULATION.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.PATH_MANIPULATION.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.PATH_MANIPULATION.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.getfile$param(*)",
  "option.PATH_MANIPULATION.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.PATH_MANIPULATION.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_MANIPULATION.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_MANIPULATION.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_MANIPULATION.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_MANIPULATION.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_TRAVERSAL.TOBE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.PATH_TRAVERSAL.TOBE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.PATH_TRAVERSAL.TOBE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.PATH_TRAVERSAL.TOBE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"trace\")",
  "option.PATH_TRAVERSAL.TOBE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "option.PATH_TRAVERSAL.TOBE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.PATH_TRAVERSAL.TOBE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PATH_TRAVERSAL.TOBE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.PATH_TRAVERSAL.TOBE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.PATH_TRAVERSAL.TOBE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.PATH_TRAVERSAL.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.PATH_TRAVERSAL.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.PATH_TRAVERSAL.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.PATH_TRAVERSAL.desc.sink_call": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.\n예시) unlink",
  "option.PATH_TRAVERSAL.desc.source_call": "민감한 정보를 입력 받는 함수 이름을 작성합니다.\n예시) getenv",
  "option.PATH_TRAVERSAL.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.PATH_TRAVERSAL.title.alarm": "검출 규칙",
  "option.PATH_TRAVERSAL.title.exclude": "예외 규칙",
  "option.PATH_TRAVERSAL.title.propagator": "전파 규칙",
  "option.PATH_TRAVERSAL.title.sink_call": "민감한 정보 노출 함수",
  "option.PATH_TRAVERSAL.title.source_call": "민감한 정보 입력 함수",
  "option.PATH_TRAVERSAL.title.suggestion_filter_function": "제안할 필터 함수",
  "option.PERSISTENT_COOKIE.CPP.desc.max_time": "허용 시간(초)을 설정합니다.",
  "option.PERSISTENT_COOKIE.CPP.title.max_time": "허용 시간(초)",
  "option.PERSISTENT_COOKIE.KOTLIN.desc.max_timeout": "쿠키의 최대 지속 시간을 작성합니다.\n예시) 3600",
  "option.PERSISTENT_COOKIE.KOTLIN.title.max_timeout": "최대 쿠키 지속 시간",
  "option.PERSISTENT_COOKIE.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.PERSISTENT_COOKIE.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.PERSISTENT_COOKIE.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.PERSISTENT_COOKIE.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.PERSISTENT_COOKIE.title.alarm": "검출 규칙",
  "option.PERSISTENT_COOKIE.title.exclude": "예외 규칙",
  "option.PERSISTENT_COOKIE.title.propagator": "전파 규칙",
  "option.PERSISTENT_COOKIE.title.suggestion_filter_function": "제안할 필터 함수",
  "option.PLAINTEXT_PASSWORD.desc.clear_call": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.\n예시) verify",
  "option.PLAINTEXT_PASSWORD.desc.sink_call": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.\n예시) SQLConnect",
  "option.PLAINTEXT_PASSWORD.desc.source_variable": "민감한 정보를 포함한 변수 이름을 작성합니다.\n예시) passwd",
  "option.PLAINTEXT_PASSWORD.title.clear_call": "민감한 정보 검사 함수",
  "option.PLAINTEXT_PASSWORD.title.sink_call": "민감한 정보 노출 함수",
  "option.PLAINTEXT_PASSWORD.title.source_variable": "민감한 정보 변수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"write\")",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"^(?!.*encrypted).*[pP]assw(or)?d\"))",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"mcrypt_encrypt\")",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of name(\"fwrite\")",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.desc.target_info": "대상이 되는 주요 정보의 이름 패턴을 작성합니다.\n예시) password",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PHP.title.target_info": "대상 정보",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) fwrite$param(2)",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) __sparrow_OBJC_echo__$param(*)",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.TOBE.JS.desc.sensitive_pattern": "민감한 정보가 있으면 안되는 패턴을 검출합니다.",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.TOBE.JS.desc.target_variable": "민감한 정보를 저장하면 위험한 변수를 입력하세요.",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.TOBE.JS.title.sensitive_pattern": "민감한 정보 패턴",
  "option.PLAIN_TEXT_STORING.SENSITIVE_INFORMATION.TOBE.JS.title.target_variable": "변수 명",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"mcrypt_encrypt\")",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of name(\"socket_send\")",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.desc.target_info": "대상이 되는 주요 정보의 이름 패턴을 작성합니다.\n예시) password",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PHP.title.target_info": "대상 정보",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of socket_send",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.PLAIN_TEXT_TRANSMISSION.SENSITIVE_INFORMATION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.POOR_LOGGING_PRACTICE.CSHARP.desc.logging_method": "보안에 취약한 로그 메소드를 작성합니다.\n예시) WriteLine",
  "option.POOR_LOGGING_PRACTICE.CSHARP.title.logging_method": "취약한 로그 메소드",
  "option.PORTABILITY_FLAW.FILE_SEPARATOR.CSHARP.desc.file_separators": "하드코딩된 파일 구별자를 입력합니다.\n예시) //",
  "option.PORTABILITY_FLAW.FILE_SEPARATOR.CSHARP.title.file_separators": "파일 구별자",
  "option.PORTABILITY_FLAW.FILE_SEPARATOR.PYTHON.desc.file_separators": "하드코딩된 파일 구별자를 입력합니다.\n예시) //",
  "option.PORTABILITY_FLAW.FILE_SEPARATOR.PYTHON.desc.path_consumer": "파일 경로를 사용하는 함수를 작성합니다.\n예시) open:name:1",
  "option.PORTABILITY_FLAW.FILE_SEPARATOR.PYTHON.title.file_separators": "파일 구별자",
  "option.PORTABILITY_FLAW.FILE_SEPARATOR.PYTHON.title.path_consumer": "경로 함수",
  "option.POTENTIAL_INFINITE_LOOP.desc.ignore_assigned_in_for_body": "옵션을 사용하는 경우, for 문의 본체 내에서 루프 카운터가 바뀔 때 발생하는 이슈를 무시합니다.",
  "option.POTENTIAL_INFINITE_LOOP.desc.ignore_empty_condition_in_for": "옵션을 사용하는 경우, for 문의 조건부가 비어 있는 이슈를 무시합니다.",
  "option.POTENTIAL_INFINITE_LOOP.desc.ignore_while_true_idiom": "옵션을 사용하는 경우, for(;;)나 while(1)와 같은 의도적인 무한 루프에 대한 이슈를 무시합니다.",
  "option.POTENTIAL_INFINITE_LOOP.title.ignore_assigned_in_for_body": "for문의 본채 내에서 루프 카운터가 바뀌는 이슈 무시",
  "option.POTENTIAL_INFINITE_LOOP.title.ignore_empty_condition_in_for": "for문의 조건부가 비어 있는 이슈 무시",
  "option.POTENTIAL_INFINITE_LOOP.title.ignore_while_true_idiom": "의도적인 무한루프에 대한 이슈 무시",
  "option.PREDICTABLE_RANDOM_SEED.KOTLIN.desc.time_method_fqn": "검출할 시간 관련 메서드의 FQN(Fully Qualified Name)을 입력합니다. 시드 값으로 해당 메서드가 설정되어 있으면 검출합니다.",
  "option.PREDICTABLE_RANDOM_SEED.KOTLIN.title.time_method_fqn": "시간 관련 메서드",
  "option.PREVENT_DESERIALIZATION_OF_UNTRUSTED_DATA.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.PREVENT_DESERIALIZATION_OF_UNTRUSTED_DATA.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.PREVENT_DESERIALIZATION_OF_UNTRUSTED_DATA.title.exclude_method": "분석 제외 메소드",
  "option.PREVENT_DESERIALIZATION_OF_UNTRUSTED_DATA.title.exclude_path": "분석 제외 경로",
  "option.PREVENT_SENSITIVE_DATA_WRITE_TO_DISK.desc.target_var_name": "검출 대상 변수 이름을 지정합니다.\n예시) secret",
  "option.PREVENT_SENSITIVE_DATA_WRITE_TO_DISK.title.target_var_name": "검출 대상 변수 이름",
  "option.PREVENT_XML_INSERTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.PREVENT_XML_INSERTION.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.PREVENT_XML_INSERTION.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.PREVENT_XML_INSERTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.PREVENT_XML_INSERTION.title.alarm": "검출 규칙",
  "option.PREVENT_XML_INSERTION.title.exclude": "예외 규칙",
  "option.PREVENT_XML_INSERTION.title.propagator": "전파 규칙",
  "option.PREVENT_XML_INSERTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.PRIVACY.ACCOUNT.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.ACCOUNT.desc.rule": "계좌 정보 정규식을 입력합니다.",
  "option.PRIVACY.ACCOUNT.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.ACCOUNT.title.rule": "계좌 정보 정규식",
  "option.PRIVACY.CREDIT_CARD.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.CREDIT_CARD.desc.rule": "신용카드 정보 정규식을 입력합니다.",
  "option.PRIVACY.CREDIT_CARD.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.CREDIT_CARD.title.rule": "신용카드 정보 정규식",
  "option.PRIVACY.DRIVER_LIC.desc.exclude_extension": "운검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.DRIVER_LIC.desc.rule": "운전 면허 정보 정규식을 입력합니다.",
  "option.PRIVACY.DRIVER_LIC.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.DRIVER_LIC.title.rule": "운전 면허 정보 정규식",
  "option.PRIVACY.EMAIL.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.EMAIL.desc.rule": "이메일 정보 정규식을 입력합니다.",
  "option.PRIVACY.EMAIL.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.EMAIL.title.rule": "이메일 정보 정규식",
  "option.PRIVACY.FOREIGNER_ID.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.FOREIGNER_ID.desc.rule": "외국인 등록 번호 정보 정규식을 입력합니다.",
  "option.PRIVACY.FOREIGNER_ID.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.FOREIGNER_ID.title.rule": "외국인 등록 번호 정보 정규식",
  "option.PRIVACY.IP.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.IP.desc.rule": "IP 정보 정규식을 입력합니다.",
  "option.PRIVACY.IP.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.IP.title.rule": "IP 정보 정규식",
  "option.PRIVACY.NATIONAL_ID.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.NATIONAL_ID.desc.rule": "주민 등록 번호 정보 정규식을 입력합니다.",
  "option.PRIVACY.NATIONAL_ID.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.NATIONAL_ID.title.rule": "주민 등록 번호 정보 정규식",
  "option.PRIVACY.PASSPORT.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.PASSPORT.desc.rule": "여권 번호 정보 정규식을 입력합니다.",
  "option.PRIVACY.PASSPORT.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.PASSPORT.title.rule": "여권 번호 정보 정규식",
  "option.PRIVACY.PHONE.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.PRIVACY.PHONE.desc.rule": "전화 번호 정보 정규식을 입력합니다.",
  "option.PRIVACY.PHONE.title.exclude_extension": "제외 확장자",
  "option.PRIVACY.PHONE.title.rule": "전화 번호 정보 정규식",
  "option.PRIVACY_CONCERNS_USING_GEOLOCATION_API.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.PRIVACY_CONCERNS_USING_GEOLOCATION_API.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.PRIVACY_CONCERNS_USING_GEOLOCATION_API.title.exclude_method": "분석 제외 메소드",
  "option.PRIVACY_CONCERNS_USING_GEOLOCATION_API.title.exclude_path": "분석 제외 경로",
  "option.PRIVACY_VIOLATION.JS.desc.forbidden_item": "금지할 항목의 이름을 작성합니다.\n예시) password",
  "option.PRIVACY_VIOLATION.JS.title.forbidden_item": "금지할 항목",
  "option.PRIVACY_VIOLATION_SHOULDER_SURFING.CSHARP.desc.sensitive_property_pattern": "민감한 특성 패턴을 입력하세요.",
  "option.PRIVACY_VIOLATION_SHOULDER_SURFING.CSHARP.title.sensitive_property_pattern": "민감한 특성 패턴.",
  "option.PRIVATE_COLLECTION.KOTLIN.desc.analysis_val": "옵션을 사용하는 경우, val 변수도 검사합니다.",
  "option.PRIVATE_COLLECTION.KOTLIN.desc.array_assignment": "배열을 할당하는 메소드의 이름을 작성합니다.",
  "option.PRIVATE_COLLECTION.KOTLIN.desc.array_only": "선택할 경우 private 배열만 검사합니다.",
  "option.PRIVATE_COLLECTION.KOTLIN.desc.array_type": "배열 타입의 이름을 작성합니다.",
  "option.PRIVATE_COLLECTION.KOTLIN.desc.clone_method": "깊은 복사를 하는 메소드의 이름을 작성합니다.",
  "option.PRIVATE_COLLECTION.KOTLIN.desc.mutable_collection_assignment": "Mutable 켈렉션을 할당하는 메소드의 이름을 작성합니다.",
  "option.PRIVATE_COLLECTION.KOTLIN.desc.mutable_collection_type": "Mutable 컬렉션 타입의 이름을 작성합니다.",
  "option.PRIVATE_COLLECTION.KOTLIN.title.analysis_val": "val 변수 검사",
  "option.PRIVATE_COLLECTION.KOTLIN.title.array_assignment": "배열 할당",
  "option.PRIVATE_COLLECTION.KOTLIN.title.array_only": "배열만 검사",
  "option.PRIVATE_COLLECTION.KOTLIN.title.array_type": "배열 타입",
  "option.PRIVATE_COLLECTION.KOTLIN.title.clone_method": "깊은 복사 메소드",
  "option.PRIVATE_COLLECTION.KOTLIN.title.mutable_collection_assignment": "Mutable 켈렉션 할당",
  "option.PRIVATE_COLLECTION.KOTLIN.title.mutable_collection_type": "Mutable 컬렉션 타입",
  "option.PRIVATE_COLLECTION.desc.check_array_only": "선택할 경우 private 배열만 검사합니다.",
  "option.PRIVATE_COLLECTION.desc.excluded_class": "이슈 검출 없이 검사에서 제외할 클래스 이름을 입력합니다\n예시) .*Dto",
  "option.PRIVATE_COLLECTION.desc.excluded_method": "이슈 검출 없이 검사에서 제외할 메소드 이름을 입력합니다.\n예시) .*Dto",
  "option.PRIVATE_COLLECTION.desc.excluded_package": "이슈 검출 없이 검사에서 제외할 패키지 이름을 입력합니다.\n예시) .*dto",
  "option.PRIVATE_COLLECTION.title.check_array_only": "배열만 대상 여부",
  "option.PRIVATE_COLLECTION.title.excluded_class": "제외 클래스",
  "option.PRIVATE_COLLECTION.title.excluded_method": "제외 메소드",
  "option.PRIVATE_COLLECTION.title.excluded_package": "제외 패키지",
  "option.PROCESS_CONTROL.desc.sink_call": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.\n예시) dlopen",
  "option.PROCESS_CONTROL.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n예시) getenv",
  "option.PROCESS_CONTROL.title.sink_call": "민감한 정보 노출 함수",
  "option.PROCESS_CONTROL.title.source_call": "민감한 정보 입력 함수",
  "option.PROHIBIT_FUNC_IN_STDLIB.desc.check_misra_2004": "\"abort\", \"exit\", \"getenv\", \"system\" 함수가 분석에 포함됩니다.",
  "option.PROHIBIT_FUNC_IN_STDLIB.desc.check_misra_2012": "\"qsort\", \"bsearch\" 함수가 분석에 포함됩니다.",
  "option.PROHIBIT_FUNC_IN_STDLIB.desc.check_misra_2023": "`atof`, `atoi`, `atol`, `atoll` 함수가 분석에 포함됩니다.",
  "option.PROHIBIT_FUNC_IN_STDLIB.title.check_misra_2004": "검출 대상 함수 이름",
  "option.PROHIBIT_FUNC_IN_STDLIB.title.check_misra_2012": "검출 대상 함수 이름",
  "option.PROHIBIT_FUNC_IN_STDLIB.title.check_misra_2023": "검출 대상 함수 이름",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.desc.array_assignment": "배열을 할당하는 메소드의 이름을 작성합니다.",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.desc.array_only": "선택할 경우 private 배열만 검사합니다.",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.desc.array_type": "배열 타입의 이름을 작성합니다.",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.desc.mutable_collection_assignment": "Mutable 켈렉션을 할당하는 메소드의 이름을 작성합니다.",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.desc.mutable_collection_type": "Mutable 컬렉션 타입의 이름을 작성합니다.",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.title.array_assignment": "배열 할당",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.title.array_only": "배열만 검사",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.title.array_type": "배열 타입",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.title.mutable_collection_assignment": "Mutable 켈렉션 할당",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.KOTLIN.title.mutable_collection_type": "Mutable 컬렉션 타입",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.desc.excluded_class": "오류를 검출하지 않고 제외할 클래스 명을 작성합니다.\n예시) .*Dto",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.desc.excluded_method": "오류를 검출하지 않고 제외할 메소드 명을 작성합니다.\n예시) .*Dto",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.desc.excluded_package": "오류를 검출하지 않고 제외할 패키지 명을 작성합니다.\n예시) .*dto",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.title.excluded_class": "제외 클래스",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.title.excluded_method": "제외 메소드",
  "option.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.title.excluded_package": "제외 패키지",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.net.InetAddress.getByName\")",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수 이름 및 사용 유형을 작성하세요.\n예시) operand(*) of \"",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) param(*) of fqn(\"socket.gethostbyaddr\")",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) shell$param(*)",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.title.alarm": "검출 규칙",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.title.exclude": "예외 규칙",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.title.propagator": "전파 규칙",
  "option.RELIANCE_ON_DNS_LOOKUPS_IN_A_SECURITY_DECISION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"add_header\")",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"add_header\")",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS.desc.gather_function": "외부에서 값을 받아오는 함수 및 리턴 값, 혹은 파라미터 위치를 입력합니다.(함수이름|파라미터 위치), 파라미터 위치 값이 0일 경우 리턴값으로 인식합니다.",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS.desc.security_variable_regex": "보안기능 결정에 사용하는 변수의 정규식을 입력합니다. 입력값 검증을 수행하는 조건절 블록에서 해당 변수들이 사용된 경우에 결함을 검출합니다.",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS.desc.verification_function": "입력값을 검증하는 함수 이름을 입력합니다. 외부에서 값을 받아오는 함수에서의 리턴값이나 지정한 파라미터 위치에 사용된 변수가 조건절 및 해당 함수에서 사용된 경우을 파악합니다.",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS.title.gather_function": "외부에서 값을 받아오는 함수",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS.title.security_variable_regex": "보안기능 결정에 사용하는 변수",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS.title.verification_function": "입력값을 검증하는 함수",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.PYTHON.desc.cookie_options": "COOKIE에서 민감한 값을 가져오는 코드를 검출합니다",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.PYTHON.title.cookie_options": "COOKIE에서 민감한 값",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.title.alarm": "검출 규칙",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.title.exclude": "예외 규칙",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.title.propagator": "전파 규칙",
  "option.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.REMOTE_CODE_EXECUTION.PHP.desc.check_dynamic_include": "옵션을 사용하는 경우, 동적 인클루드 구문을 검출합니다.",
  "option.REMOTE_CODE_EXECUTION.PHP.desc.forbidden_function": "금지할 외부 코드 살행 함수의 이름을 작성합니다.\n예시) popen",
  "option.REMOTE_CODE_EXECUTION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(1) of name(\"in_array\")",
  "option.REMOTE_CODE_EXECUTION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.REMOTE_CODE_EXECUTION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.REMOTE_CODE_EXECUTION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"eval\")",
  "option.REMOTE_CODE_EXECUTION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.REMOTE_CODE_EXECUTION.PHP.title.check_dynamic_include": "동적 인클루드 검출 여부",
  "option.REMOTE_CODE_EXECUTION.PHP.title.forbidden_function": "금지할 외부 코드 실행 함수",
  "option.REMOTE_CODE_EXECUTION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.REMOTE_CODE_EXECUTION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.REMOTE_CODE_EXECUTION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.REMOTE_CODE_EXECUTION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.REMOTE_CODE_EXECUTION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.RESOURCE_INJECTION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.RESOURCE_INJECTION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.RESOURCE_INJECTION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.RESOURCE_INJECTION.JS.desc.taint_sink": "외부 정보가 사용되는 new 표현식의 이름을 작성합니다.\n예시) new webSocket$param(1)",
  "option.RESOURCE_INJECTION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.RESOURCE_INJECTION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.RESOURCE_INJECTION.JS.title.taint_sink": "외부 정보 사용 생성자",
  "option.RESOURCE_INJECTION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.RESOURCE_INJECTION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.RESOURCE_INJECTION.OBJC.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.RESOURCE_INJECTION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.RESOURCE_INJECTION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) CFStreamCreatePairWithSocketToHost$param(2)",
  "option.RESOURCE_INJECTION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.RESOURCE_INJECTION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.OBJC.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.RESOURCE_INJECTION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.RESOURCE_INJECTION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.RESOURCE_INJECTION.PORT.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.RESOURCE_INJECTION.PORT.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.RESOURCE_INJECTION.PORT.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.RESOURCE_INJECTION.PORT.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) operand(2) of \"",
  "option.RESOURCE_INJECTION.PORT.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.RESOURCE_INJECTION.PORT.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.PORT.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.PORT.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.RESOURCE_INJECTION.PORT.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.RESOURCE_INJECTION.PORT.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.RESOURCE_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.RESOURCE_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.RESOURCE_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.RESOURCE_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"open\")",
  "option.RESOURCE_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"django.http.HttpRequest.GET\")",
  "option.RESOURCE_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.RESOURCE_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.RESOURCE_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.RESOURCE_INJECTION.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.RESOURCE_INJECTION.SWIFT.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.RESOURCE_INJECTION.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.RESOURCE_INJECTION.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) CFStreamCreatePairWithSocketToHost$param(2)",
  "option.RESOURCE_INJECTION.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.RESOURCE_INJECTION.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.SWIFT.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.RESOURCE_INJECTION.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.RESOURCE_INJECTION.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.RESOURCE_INJECTION.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.RESOURCE_INJECTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.RESOURCE_INJECTION.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.RESOURCE_INJECTION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.RESOURCE_INJECTION.desc.sink_call": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.\n예시) connect",
  "option.RESOURCE_INJECTION.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n예시) getenv",
  "option.RESOURCE_INJECTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.RESOURCE_INJECTION.title.alarm": "검출 규칙",
  "option.RESOURCE_INJECTION.title.exclude": "예외 규칙",
  "option.RESOURCE_INJECTION.title.propagator": "전파 규칙",
  "option.RESOURCE_INJECTION.title.sink_call": "민감한 정보 노출 함수",
  "option.RESOURCE_INJECTION.title.source_call": "민감한 정보 입력 함수",
  "option.RESOURCE_INJECTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.RESOURCE_LEAK.KOTLIN.desc.resource_fqn": "자원 해제(close())가 필요한 클래스의 FQN(Fully Qualified Name)을 입력하세요.",
  "option.RESOURCE_LEAK.KOTLIN.title.resource_fqn": "자원 클래스 FQN",
  "option.RESTRICT_PARAM_VALUE_RANGE.desc.targets": "대상 함수를 적습니다. \"함수명,인덱스,범위시작-범위끝\" 순으로 표기합니다.인덱스는 0부터 시작합니다.",
  "option.RESTRICT_PARAM_VALUE_RANGE.title.targets": "대상 함수",
  "option.RETURN_IN_FINALLY.KOTLIN.desc.ignore_labeled": "레이블(@)이 지정된 리턴 구문은 검출에서 제외합니다.",
  "option.RETURN_IN_FINALLY.KOTLIN.title.ignore_labeled": "레이블 리턴 무시 ",
  "option.RETURN_VALUE_SHOULD_BE_CONST.desc.allowed_return_constant": "아래 조건에 해당하는 상수형에 대해서 반환을 허용합니다.(정규식)",
  "option.RETURN_VALUE_SHOULD_BE_CONST.desc.check_constant_only": "상수만 검출할지 여부를 체크합니다.",
  "option.RETURN_VALUE_SHOULD_BE_CONST.title.allowed_return_constant": "허용하는 반환 상수",
  "option.RETURN_VALUE_SHOULD_BE_CONST.title.check_constant_only": "상수만 검출 여부",
  "option.SAFELY_EXTRACT_FILES_FROM_ZIPINPUTSTREAM.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.SAFELY_EXTRACT_FILES_FROM_ZIPINPUTSTREAM.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.SAFELY_EXTRACT_FILES_FROM_ZIPINPUTSTREAM.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.SAFELY_EXTRACT_FILES_FROM_ZIPINPUTSTREAM.title.alarm": "검출 규칙",
  "option.SAFELY_EXTRACT_FILES_FROM_ZIPINPUTSTREAM.title.exclude": "예외 규칙",
  "option.SAFELY_EXTRACT_FILES_FROM_ZIPINPUTSTREAM.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SAME_GROUP_CLASS_CALL.desc.call_rules": "업무 그룹 내 클래스가 지정된 호출 규약을 준수했는지 분석하는 옵션입니다. 최대 10개까지 설정할 수 있습니다.",
  "option.SAME_GROUP_CLASS_CALL.desc.exclude_fqn_pattern": "java.util.List와 같이 검출에서 제외할 클래스의 전체 패키지 이름을 정규식 형식으로 입력할 수 있습니다.",
  "option.SAME_GROUP_CLASS_CALL.title.call_rules": "클래스 호출 규약 점검",
  "option.SAME_GROUP_CLASS_CALL.title.exclude_fqn_pattern": "검출에서 제외할 클래스의 전체 패키지 이름",
  "option.SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX.title.alarm": "검출 규칙",
  "option.SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX.title.exclude": "예외 규칙",
  "option.SANITIZE_UNTRUSTED_DATA_PASSED_TO_A_REGEX.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SAQT.M.CCPP.7180.desc.mcc": "옵션을 사용하는 경우 switch 문에서 case 구문의 개수와 상관없이 switch 구문의 수를 1만큼만 증가하도록 계산합니다.",
  "option.SAQT.M.CCPP.7180.desc.threshold": "순환 복잡도의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7180.title.mcc": "switch-case 구문을 1로 계산",
  "option.SAQT.M.CCPP.7180.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7184.desc.threshold": "최대 블록 중첩 깊이의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7184.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7187.desc.threshold": "파라미터의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7187.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7188.desc.ignore_implicit": "옵션을 사용하는 경우 대상 함수가 다른 함수에서 암시적으로 호출된 횟수를 제외합니다.",
  "option.SAQT.M.CCPP.7188.desc.threshold": "함수 호출자의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7188.title.ignore_implicit": "암시적으로 호출한 함수를 계산에서 제외",
  "option.SAQT.M.CCPP.7188.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7189.desc.ignore_implicit": "옵션을 사용하는 경우 분석 대상 함수에서 호출하는 다른 함수가 소스코드 상에서 보이지 않거나 직관적으로 알기 힘든 암시적 호출인 경우 계산에서 제외합니다.",
  "option.SAQT.M.CCPP.7189.desc.threshold": "호출 대상 함수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7189.title.ignore_implicit": "암시적으로 호출한 함수를 계산에서 제외",
  "option.SAQT.M.CCPP.7189.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7190.desc.threshold": "실행 가능 라인의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7190.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7199.desc.threshold": "문장 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7199.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7200.desc.threshold": "유일한 피연산자 수의 제한값을 입력합니다. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7200.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7201.desc.threshold": "유일한 연산자 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7201.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7202.desc.threshold": "총 피연산자 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7202.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7203.desc.threshold": "총 연산자 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7203.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7204.desc.threshold": "어휘량 크기의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7204.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7205.desc.threshold": "컴포넌트 길이의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7205.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7206.desc.threshold": "평균 문장 크기의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7206.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7207.desc.threshold": "결정 문장 개수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CCPP.7207.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7208.desc.threshold": "탈출점 개수 제한값을 입력하세요. 이 값을 초과하는 경우에 이슈로 검출됩니다.",
  "option.SAQT.M.CCPP.7208.title.threshold": "제한값",
  "option.SAQT.M.CCPP.7209.desc.threshold": "제어하지 않은 점프문 개수 제한값을 입력하세요. 이 값을 초과하는 경우에 이슈로 검출됩니다.",
  "option.SAQT.M.CCPP.7209.title.threshold": "제한값",
  "option.SAQT.M.CS.7183.desc.mcc": "옵션을 사용하는 경우 switch 문에서 case 구문의 개수와 상관없이 switch 구문의 수를 1만큼만 증가하도록 계산합니다.",
  "option.SAQT.M.CS.7183.desc.threshold": "순환 복잡도의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CS.7183.title.mcc": "switch-case 구문을 1로 계산",
  "option.SAQT.M.CS.7183.title.threshold": "제한값",
  "option.SAQT.M.CS.7186.desc.threshold": "최대 블록 중첩 깊이의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CS.7186.title.threshold": "제한값",
  "option.SAQT.M.CS.7192.desc.threshold": "파라미터의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CS.7192.title.threshold": "제한값",
  "option.SAQT.M.CS.7194.desc.threshold": "함수 호출자의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CS.7194.title.threshold": "제한값",
  "option.SAQT.M.CS.7196.desc.threshold": "호출 대상 함수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CS.7196.title.threshold": "제한값",
  "option.SAQT.M.CS.7198.desc.threshold": "실행 가능 라인의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.CS.7198.title.threshold": "제한값",
  "option.SAQT.M.JAVA.7181.desc.mcc": "옵션을 사용하는 경우 switch 문에서 case 구문의 개수와 상관 없이 switch 구문의 수를 1만큼만 증가하도록 계산합니다.",
  "option.SAQT.M.JAVA.7181.desc.threshold": "순환 복잡도의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.JAVA.7181.title.mcc": "switch-case 구문을 1로 계산",
  "option.SAQT.M.JAVA.7181.title.threshold": "제한값",
  "option.SAQT.M.JAVA.7185.desc.threshold": "최대 블록 중첩 깊이의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.JAVA.7185.title.threshold": "제한값",
  "option.SAQT.M.JAVA.7191.desc.threshold": "파라미터의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.JAVA.7191.title.threshold": "제한값",
  "option.SAQT.M.JAVA.7193.desc.threshold": "함수 호출자의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.JAVA.7193.title.threshold": "제한값",
  "option.SAQT.M.JAVA.7195.desc.threshold": "호출 대상 함수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.JAVA.7195.title.threshold": "제한값",
  "option.SAQT.M.JAVA.7197.desc.threshold": "실행 가능 라인의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "option.SAQT.M.JAVA.7197.title.threshold": "제한값",
  "option.SAQT.Q.SQL.7169.desc.exclude_path_reg": "정규식을 입력받아서 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7169.desc.exclude_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7169.desc.include_path_reg": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.SAQT.Q.SQL.7169.desc.include_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7169.title.exclude_path_reg": "분석 제외 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7169.title.exclude_path_str": "분석 제외 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7169.title.include_path_reg": "분석 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7169.title.include_path_str": "분석 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7170.desc.exclude_path_reg": "정규식을 입력받아서 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7170.desc.exclude_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7170.desc.include_path_reg": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.SAQT.Q.SQL.7170.desc.include_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7170.desc.skip_parallel_with_degree": "True로 설정할 경우 degree(integer), degree(MANUAL), degree(DEFAULT)문이 포함된 PARALLEL 문을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7170.desc.target_crud": "SELECT/INSERT/UPDATE/DELETE 문장 형식 중 분석 대상으로 설정하는 옵션입니다. 예시로, 해당 옵션에 (True, False, True, False)를 입력하면 SELECT 문과 UPDATE 문만을 분석 대상으로 설정합니다. 해당 옵션값이 모두 False로 지정되어 있다면 모든 SQL 문장 형식을 분석 대상으로 설정합니다.",
  "option.SAQT.Q.SQL.7170.title.exclude_path_reg": "분석 제외 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7170.title.exclude_path_str": "분석 제외 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7170.title.include_path_reg": "분석 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7170.title.include_path_str": "분석 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7170.title.skip_parallel_with_degree": "degree 값이 할당된 PARALLEL 문을 분석 대상에서 제외",
  "option.SAQT.Q.SQL.7170.title.target_crud": "분석 대상 SQL 문장 형식 설정",
  "option.SAQT.Q.SQL.7214.desc.exclude_path_reg": "정규식을 입력받아서 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7214.desc.exclude_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7214.desc.exclude_rownum_orderby_subquery": "단일 쿼리 내 서브쿼리로 ROWNUM과 ORDER BY를 분리하여 사용하는 경우를 분석 대상에서 제외하는 옵션입니다.",
  "option.SAQT.Q.SQL.7214.desc.include_path_reg": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.SAQT.Q.SQL.7214.desc.include_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7214.title.exclude_path_reg": "분석 제외 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7214.title.exclude_path_str": "분석 제외 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7214.title.exclude_rownum_orderby_subquery": "서브쿼리로 ROWNUM과 ORDER BY를 분리하여 사용하는 경우를 분석 대상에서 제외",
  "option.SAQT.Q.SQL.7214.title.include_path_reg": "분석 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7214.title.include_path_str": "분석 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7215.desc.check_line_below": "주석이 문장 내 최상단(TOP) 또는 최하단(BOT)에 위치해 있는지 확인하는 옵션입니다.",
  "option.SAQT.Q.SQL.7215.desc.exclude_path_reg": "정규식을 입력받아서 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7215.desc.exclude_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7215.desc.include_path_reg": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.SAQT.Q.SQL.7215.desc.include_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7215.desc.target_comments": "입력한 정규식 범위 내의 문자열로 주석을 입력하지 않은 경우 이슈를 검출합니다. 예시로, \"^/*SQL_ID:.**/$\"와 같은 정규식을 입력하면 입력한 것과 다른 형식의 주석을 검출합니다. 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.SAQT.Q.SQL.7215.desc.target_crud": "SELECT/INSERT/UPDATE/DELETE 문장 형식 중 분석 대상으로 설정하는 옵션입니다. 예시로, 해당 옵션에 (True, False, True, False)를 입력하면 SELECT 문과 UPDATE 문만을 분석 대상으로 설정합니다. 해당 옵션값이 모두 False로 지정되어 있다면 모든 SQL 문장 형식을 분석 대상으로 설정합니다.",
  "option.SAQT.Q.SQL.7215.title.check_line_below": "검출해야 하는 주석의 위치가 정해진 위치",
  "option.SAQT.Q.SQL.7215.title.exclude_path_reg": "분석 제외 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7215.title.exclude_path_str": "분석 제외 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7215.title.include_path_reg": "분석 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7215.title.include_path_str": "분석 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7215.title.target_comments": "허용하는 주석의 형식 패턴",
  "option.SAQT.Q.SQL.7215.title.target_crud": "분석 대상 SQL 문장 형식을 설정",
  "option.SAQT.Q.SQL.7217.desc.delete": "DELETE 문에 대한 `분석 대상 파일 경로`, `검출 제외 키워드`, `필수 문구가 포함된 문자열`을 json 형식으로 입력하세요.",
  "option.SAQT.Q.SQL.7217.desc.insert": "INSERT 문에 대한 `분석 대상 파일 경로`, `검출 제외 키워드`, `필수 문구가 포함된 문자열`을 json 형식으로 입력하세요.",
  "option.SAQT.Q.SQL.7217.desc.select": "SELECT 문에 대한 `분석 대상 파일 경로`, `검출 제외 키워드`, `필수 문구가 포함된 문자열`을 json 형식으로 입력하세요.",
  "option.SAQT.Q.SQL.7217.desc.update": "UPDATE 문에 대한 `분석 대상 파일 경로`, `검출 제외 키워드`, `필수 문구가 포함된 문자열`을 json 형식으로 입력하세요.",
  "option.SAQT.Q.SQL.7217.title.delete": "DELETE 문의 옵션",
  "option.SAQT.Q.SQL.7217.title.insert": "INSERT 문의 옵션",
  "option.SAQT.Q.SQL.7217.title.select": "SELECT 문의 옵션",
  "option.SAQT.Q.SQL.7217.title.update": "UPDATE 문의 옵션",
  "option.SAQT.Q.SQL.7218.desc.detect_subselect_alias": "True로 설정할 경우 EXIST 바로 하위의 SUB-SELECT에서의 ALIAS를 분석 대상에 포함시킵니다.",
  "option.SAQT.Q.SQL.7218.desc.detect_unused_tables": "True로 설정할 경우 FROM 절 내 주어진 테이블 중 실제 쿼리 내에서는 사용되지 않아 제외해도 되는 테이블을 검출합니다. FROM 절 내의 alias만을 확인한다는 점에 유의하세요. FROM 절 밖에서 alias 테이블을 사용했는지 확인하지 않습니다. 다음 예시의 경우, \"TABLE_NAME2 TAB2\"가 실제로 사용되지 않으므로 검출됩니다.",
  "option.SAQT.Q.SQL.7218.desc.exclude_path_reg": "정규식을 입력받아서 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7218.desc.exclude_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7218.desc.include_path_reg": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.SAQT.Q.SQL.7218.desc.include_path_str": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.SAQT.Q.SQL.7218.desc.single_table_detection": "True로 설정할 경우 단건 테이블을 분석 대상에 포함시킵니다. 단건 테이블이란 하나의 테이블에서만 조회하는 경우를 뜻합니다. 해당 옵션이 True로 설정될 경우 DELETE 문 또한 검출합니다.",
  "option.SAQT.Q.SQL.7218.desc.target_crud": "SELECT/INSERT/UPDATE/DELETE 문장 형식 중 분석 대상으로 설정하는 옵션입니다. 예시로, 해당 옵션에 (True, False, True, False)를 입력하면 SELECT 문과 UPDATE 문만을 분석 대상으로 설정합니다. 해당 옵션값이 모두 False로 지정되어 있다면 모든 SQL 문장 형식을 분석 대상으로 설정합니다.",
  "option.SAQT.Q.SQL.7218.title.detect_subselect_alias": "EXIST 식의 SUB-SELECT(EXIST 바로 하위의 SUB-SELECT) ALIAS 검사",
  "option.SAQT.Q.SQL.7218.title.detect_unused_tables": "FROM 절 내 명시된 테이블을 쿼리 내에서 실제로 사용되었는지 검사",
  "option.SAQT.Q.SQL.7218.title.exclude_path_reg": "분석 제외 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7218.title.exclude_path_str": "분석 제외 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7218.title.include_path_reg": "분석 대상 파일 경로의 정규식 패턴",
  "option.SAQT.Q.SQL.7218.title.include_path_str": "분석 대상 파일의 전체 경로",
  "option.SAQT.Q.SQL.7218.title.single_table_detection": "단건 테이블 검사",
  "option.SAQT.Q.SQL.7218.title.target_crud": "분석 대상 SQL 문장 형식 설정",
  "option.SAQT.Q.SQL.7262.desc.delete": "DELETE 문에 대한 `분석 대상 파일 경로`, `검출 제외 키워드`, `필수 문구가 포함된 문자열`을 json 형식으로 입력하세요.",
  "option.SAQT.Q.SQL.7262.desc.insert": "INSERT 문에 대한 `분석 대상 파일 경로`, `검출 제외 키워드`, `필수 문구가 포함된 문자열`을 json 형식으로 입력하세요.",
  "option.SAQT.Q.SQL.7262.desc.select": "SELECT 문에 대한 `분석 대상 파일 경로`, `검출 제외 키워드`, `필수 문구가 포함된 문자열`을 json 형식으로 입력하세요.",
  "option.SAQT.Q.SQL.7262.desc.update": "UPDATE 문에 대한 `분석 대상 파일 경로`, `검출 제외 키워드`, `필수 문구가 포함된 문자열`을 json 형식으로 입력하세요.",
  "option.SAQT.Q.SQL.7262.title.delete": "DELETE 문의 옵션",
  "option.SAQT.Q.SQL.7262.title.insert": "INSERT 문의 옵션",
  "option.SAQT.Q.SQL.7262.title.select": "SELECT 문의 옵션",
  "option.SAQT.Q.SQL.7262.title.update": "UPDATE 문의 옵션",
  "option.SAQT.Q.SQL.7534.desc.skip_patterns": "특정 앨리어스 전체 컬럼 선택 패턴(Alias.*) 중 검출에서 제외할 패턴을 정규식으로 입력하는 옵션입니다. 정규식을 작성할 때 .*를 포함한 전체 토큰을 매칭하도록 작성해야 합니다.",
  "option.SAQT.Q.SQL.7534.title.skip_patterns": "제외할 전체 컬럼 선택 패턴",
  "option.SAST.SW.JSON.7296.desc.allowed_value": "키의 값과 같이 검출에서 제외할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.JSON.7296.desc.dest_name": "키 이름과 같이 검출할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.JSON.7296.title.allowed_value": "검출 제외",
  "option.SAST.SW.JSON.7296.title.dest_name": "검출 대상",
  "option.SAST.SW.PROP.7295.desc.allowed_value": "키의 값과 같이 검출에서 제외할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.PROP.7295.desc.dest_name": "키 이름과 같이 검출할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.PROP.7295.title.allowed_value": "검출 제외",
  "option.SAST.SW.PROP.7295.title.dest_name": "검출 대상",
  "option.SAST.SW.PY.7251.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7251.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7252.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7252.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7253.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7253.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7254.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7254.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7255.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7255.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7256.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7256.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7257.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7257.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7258.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7258.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7259.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7259.title.target_path_rege": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7259.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7260.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7260.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7261.desc.target_path_regex": "분석을 수행할 파일 경로를 입력하세요.",
  "option.SAST.SW.PY.7261.title.target_path_regex": "분석 수행 파일 경로",
  "option.SAST.SW.PY.7294.desc.allowed_string_literal_regex": "변수의 값과 같이 검출에서 제외할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.PY.7294.desc.target_identifier_regex": "변수 이름과 같이 검출할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.PY.7294.title.allowed_string_literal_regex": "검출 제외",
  "option.SAST.SW.PY.7294.title.target_identifier_regex": "검출 대상",
  "option.SAST.SW.XML.7298.desc.allowed_value": "태그 또는 속성의 값과 같이 검출에서 제외할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.XML.7298.desc.dest_name": "태그 또는 속성의 이름과 같이 검출할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.XML.7298.title.allowed_value": "검출 제외",
  "option.SAST.SW.XML.7298.title.dest_name": "검출 대상",
  "option.SAST.SW.XML.7422.desc.exclude_component_name": "Android 구성 요소(`activity`, `activity-alias`, `service`, `receiver`, `provider`)의 `android:name` 속성에 지정된 클래스 이름을 입력합니다. 입력된 문자열이 구성 요소의 `android:name` 값과 일치하는 경우, 해당 구성 요소는 검출 대상에서 제외됩니다.",
  "option.SAST.SW.XML.7422.title.exclude_component_name": "검출 제외 옵션",
  "option.SAST.SW.YAML.7297.desc.allowed_value": "키의 값과 같이 검출에서 제외할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.YAML.7297.desc.dest_name": "키 이름과 같이 검출할 대상을 정규식으로 입력하세요.",
  "option.SAST.SW.YAML.7297.title.allowed_value": "검출 제외",
  "option.SAST.SW.YAML.7297.title.dest_name": "검출 대상",
  "option.SECURITY.ARGUMENT.ASSERT.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.ASSERT.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.ASSERT.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.ASSERT.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.ASSERT.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.ASSERT.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.ASSERT.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.ARGUMENT.ASSERT.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.ARGUMENT.ASSERT.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.ARGUMENT.ASSERT.title.include_class": "분석 포함 클래스",
  "option.SECURITY.ARGUMENT.ASSERT.title.include_method": "분석 포함 메소드",
  "option.SECURITY.ARGUMENT.ASSERT.title.include_package": "분석 포함 패키지",
  "option.SECURITY.ARGUMENT.DOPRIVILEGE.desc.method_name": "doPrivileged 메소드 명을 입력합니다.",
  "option.SECURITY.ARGUMENT.DOPRIVILEGE.desc.type_name": "AccessController 클래스 명을 입력합니다.",
  "option.SECURITY.ARGUMENT.DOPRIVILEGE.title.method_name": "doPrivileged 메소드",
  "option.SECURITY.ARGUMENT.DOPRIVILEGE.title.type_name": "AccessController 클래스",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.data_type": "read() 메소드 반환 값 타입을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.method_name": "검출 대상 메소드 명을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.desc.type_name": "검출 대상 클래스 명을 입력합니다.",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.data_type": "read() 메소드 반환 값 타입",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.include_method": "분석 포함 메소드",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.method_name": "검출 대상 메소드",
  "option.SECURITY.ARGUMENT.READ.BYTE.title.type_name": "검출 대상 클래스",
  "option.SECURITY.ARGUMENT.THREAD_POOL.desc.method_name": "Thread pool 에 있는 thread 를 실행 하는 메소드 명을 입력합니다.",
  "option.SECURITY.ARGUMENT.THREAD_POOL.desc.type_name": "Thread pool 에 있는 thread 를 실행 하는 클래스 명을 입력합니다.",
  "option.SECURITY.ARGUMENT.THREAD_POOL.title.method_name": "Thread pool 실행 메소드",
  "option.SECURITY.ARGUMENT.THREAD_POOL.title.type_name": "Thread pool 실행 클래스",
  "option.SECURITY.ASSERT.BOOLEAN.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.ASSERT.BOOLEAN.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.ASSERT.BOOLEAN.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.ASSERT.BOOLEAN.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.ASSERT.BOOLEAN.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.ASSERT.BOOLEAN.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.ASSERT.BOOLEAN.title.include_class": "분석 포함 클래스",
  "option.SECURITY.ASSERT.BOOLEAN.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.APPEND.LOOP.desc.exclude_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.APPEND.LOOP.desc.exclude_method": "분석에 포함할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.APPEND.LOOP.desc.exclude_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.APPEND.LOOP.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.APPEND.LOOP.desc.include_method": "분석에 포함할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.APPEND.LOOP.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.APPEND.LOOP.desc.method_name": "Collection 을 추가하는 메소드를 입력합니다.",
  "option.SECURITY.CALL.APPEND.LOOP.desc.type_name": "Collection 타입을 입력합니다.",
  "option.SECURITY.CALL.APPEND.LOOP.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.APPEND.LOOP.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.APPEND.LOOP.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.APPEND.LOOP.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.APPEND.LOOP.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.APPEND.LOOP.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.APPEND.LOOP.title.method_name": "Collection 증가 메소드",
  "option.SECURITY.CALL.APPEND.LOOP.title.type_name": "Collection 타입",
  "option.SECURITY.CALL.BIG_ENDIAN.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.BIG_ENDIAN.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.BIG_ENDIAN.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.BIG_ENDIAN.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.BIG_ENDIAN.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.BIG_ENDIAN.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.BIG_ENDIAN.desc.method_name": "검출 대상 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.BIG_ENDIAN.desc.type_name": "Stream 관련 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.BIG_ENDIAN.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.BIG_ENDIAN.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.BIG_ENDIAN.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.BIG_ENDIAN.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.BIG_ENDIAN.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.BIG_ENDIAN.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.BIG_ENDIAN.title.method_name": "검출 대상 메소드",
  "option.SECURITY.CALL.BIG_ENDIAN.title.type_name": "Stream 클래스",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.source_method_name": "임시 파일 생성 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.target_method_name": "임시 파일 삭제 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.desc.type_name": "File 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.source_method_name": "임시 파일 생성 메소드",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.target_method_name": "임시 파일 삭제 메소드",
  "option.SECURITY.CALL.DELETE_ON_EXIT.title.type_name": "File 클래스",
  "option.SECURITY.CALL.FILE_DELETE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.FILE_DELETE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.FILE_DELETE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.FILE_DELETE.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.FILE_DELETE.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.FILE_DELETE.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.FILE_DELETE.desc.method_name": "Delete 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.FILE_DELETE.desc.type_name": "File 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.FILE_DELETE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.FILE_DELETE.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.FILE_DELETE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.FILE_DELETE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.FILE_DELETE.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.FILE_DELETE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.FILE_DELETE.title.method_name": "Delete 메소드",
  "option.SECURITY.CALL.FILE_DELETE.title.type_name": "File 클래스",
  "option.SECURITY.CALL.KEY_EQUALS.desc.method_name": "equals() 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.KEY_EQUALS.desc.safe_method": "각각의 속성을 비교하는 메소드를 입력합니다.",
  "option.SECURITY.CALL.KEY_EQUALS.desc.type_name": "Key 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.KEY_EQUALS.title.method_name": "equals() 메소드",
  "option.SECURITY.CALL.KEY_EQUALS.title.safe_method": "속성 비교 메소드",
  "option.SECURITY.CALL.KEY_EQUALS.title.type_name": "Key 클래스",
  "option.SECURITY.CALL.LOCK_HOLDING.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.LOCK_HOLDING.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.LOCK_HOLDING.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.LOCK_HOLDING.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.LOCK_HOLDING.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.LOCK_HOLDING.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.LOCK_HOLDING.desc.method_name": "Thread 대기 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.LOCK_HOLDING.desc.type_name": "Thread 대기 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.LOCK_HOLDING.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.LOCK_HOLDING.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.LOCK_HOLDING.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.LOCK_HOLDING.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.LOCK_HOLDING.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.LOCK_HOLDING.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.LOCK_HOLDING.title.method_name": "Thread 대기 메소드",
  "option.SECURITY.CALL.LOCK_HOLDING.title.type_name": "Thread 대기 클래스",
  "option.SECURITY.CALL.PUBLIC_METHOD.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.PUBLIC_METHOD.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.PUBLIC_METHOD.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.PUBLIC_METHOD.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.PUBLIC_METHOD.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.PUBLIC_METHOD.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.PUBLIC_METHOD.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.PUBLIC_METHOD.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.PUBLIC_METHOD.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.PUBLIC_METHOD.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.PUBLIC_METHOD.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.PUBLIC_METHOD.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.RAW_COLLECTION.desc.type_name": "Raw collection 타입 명을 입력합니다.",
  "option.SECURITY.CALL.RAW_COLLECTION.title.type_name": "Raw collection 타입",
  "option.SECURITY.CALL.REFLECTION.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECTION.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECTION.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECTION.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECTION.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECTION.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECTION.desc.method_name": "검출 대상 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.REFLECTION.desc.type_name": "검출 대상 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.REFLECTION.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.REFLECTION.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.REFLECTION.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.REFLECTION.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.REFLECTION.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.REFLECTION.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.REFLECTION.title.method_name": "검출 대상 메소드",
  "option.SECURITY.CALL.REFLECTION.title.type_name": "검출 대상 클래스",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.class_type_name": "Thread 타입 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.method_name": "add 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.desc.type_name": "PermissionCollection 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.class_type_name": "Thread 타입",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.method_name": "add 메소드",
  "option.SECURITY.CALL.REFLECT_PERMISSION.title.type_name": "PermissionCollection 클래스",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.iterator_type_name": "Iterator 타입 종류를 작성합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.method_name": "Collection 삭제 메소드 명을 작성합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.desc.type_name": "Collection 타입 종류를 작성합니다.",
  "option.SECURITY.CALL.REMOVE.LOOP.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.REMOVE.LOOP.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.REMOVE.LOOP.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.REMOVE.LOOP.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.REMOVE.LOOP.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.REMOVE.LOOP.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.REMOVE.LOOP.title.iterator_type_name": "Iterator 타입명",
  "option.SECURITY.CALL.REMOVE.LOOP.title.method_name": "Collection 삭제 메소드",
  "option.SECURITY.CALL.REMOVE.LOOP.title.type_name": "Collection 타입 명",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.allow_security_call": "필수로 호출해야 하는 보안 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.class_type": "민감한 정보를 담는 자료구조의 클래스명을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.security_type": "SecurityManager 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.desc.target_method_name": "검출 대상에 포함할 메소드명을 입력합니다.",
  "option.SECURITY.CALL.SECURITY_CHECK.title.allow_security_call": "필수 보안 메소드",
  "option.SECURITY.CALL.SECURITY_CHECK.title.class_type": "민감한 정보를 담는 자료구조의 클래스",
  "option.SECURITY.CALL.SECURITY_CHECK.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.SECURITY_CHECK.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.SECURITY_CHECK.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.SECURITY_CHECK.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.SECURITY_CHECK.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.SECURITY_CHECK.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.SECURITY_CHECK.title.security_type": "SecurityManager 클래스",
  "option.SECURITY.CALL.SECURITY_CHECK.title.target_method_name": "검출 대상에 포함할 메소드",
  "option.SECURITY.CALL.SYSTEM_GETENV.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.SYSTEM_GETENV.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.SYSTEM_GETENV.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.SYSTEM_GETENV.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.SYSTEM_GETENV.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.SYSTEM_GETENV.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.SYSTEM_GETENV.desc.method_name": "getenv() 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.SYSTEM_GETENV.desc.type_name": "System 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.SYSTEM_GETENV.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.SYSTEM_GETENV.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.SYSTEM_GETENV.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.SYSTEM_GETENV.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.SYSTEM_GETENV.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.SYSTEM_GETENV.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.SYSTEM_GETENV.title.method_name": "getenv 메소드",
  "option.SECURITY.CALL.SYSTEM_GETENV.title.type_name": "System 클래스",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.class_type_name": "Thread 클래스 또는 인터페이스 명을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.method_name": "Interrupt 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.desc.type_name": "Thread 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.class_type_name": "Thread 클래스 또는 인터페이스",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.method_name": "Interrupt 메소드",
  "option.SECURITY.CALL.THREAD_INTERRUPTED.title.type_name": "Thread 클래스",
  "option.SECURITY.CALL.THREAD_START.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_START.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_START.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_START.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_START.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_START.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_START.desc.method_name": "Thread 가 실행될 때 수행하는 메소드 명을 입력합니다. \n예) run",
  "option.SECURITY.CALL.THREAD_START.desc.type_name": "Thread 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.THREAD_START.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.THREAD_START.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.THREAD_START.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.THREAD_START.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.THREAD_START.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.THREAD_START.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.THREAD_START.title.method_name": "Thread 실행 메소드",
  "option.SECURITY.CALL.THREAD_START.title.type_name": "Thread 클래스",
  "option.SECURITY.CALL.THREAD_STOP.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_STOP.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_STOP.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_STOP.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_STOP.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_STOP.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.THREAD_STOP.desc.method_name": "Thread 클래스를 포함한 정지 메소드 명을 입력합니다. \n예) java.lang.Thread.stop",
  "option.SECURITY.CALL.THREAD_STOP.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.THREAD_STOP.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.THREAD_STOP.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.THREAD_STOP.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.THREAD_STOP.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.THREAD_STOP.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.THREAD_STOP.title.method_name": "Thread 정지 메소드",
  "option.SECURITY.CALL.THROWS.FINALLY.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.THROWS.FINALLY.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.THROWS.FINALLY.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.THROWS.FINALLY.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.CALL.THROWS.FINALLY.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.CALL.THROWS.FINALLY.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.CALL.THROWS.FINALLY.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CALL.THROWS.FINALLY.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CALL.THROWS.FINALLY.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CALL.THROWS.FINALLY.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CALL.THROWS.FINALLY.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CALL.THROWS.FINALLY.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CALL.URL_EQUALS.desc.method_names": "equals() 메소드 명을 입력합니다.",
  "option.SECURITY.CALL.URL_EQUALS.desc.throw_names": "URL 예외 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.URL_EQUALS.desc.type_names": "URL 클래스 명을 입력합니다.",
  "option.SECURITY.CALL.URL_EQUALS.title.method_names": "equals() 메소드",
  "option.SECURITY.CALL.URL_EQUALS.title.throw_names": "URL 예외 클래스",
  "option.SECURITY.CALL.URL_EQUALS.title.type_names": "URL 클래스",
  "option.SECURITY.CAST.FLOAT_DOUBLE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CAST.FLOAT_DOUBLE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CAST.FLOAT_DOUBLE.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.CAST.FLOAT_DOUBLE.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.CAST.FLOAT_DOUBLE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CAST.FLOAT_DOUBLE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CAST.FLOAT_DOUBLE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CAST.FLOAT_DOUBLE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CLASS.CLONE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CLASS.CLONE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.CLASS.CLONE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CLASS.CLONE.desc.implement_list": "분석 대상 상속 클래스명을 작성합니다.",
  "option.SECURITY.CLASS.CLONE.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.CLASS.CLONE.desc.include_method": "분석에 포함할 메소드 이름을 입력합니다.",
  "option.SECURITY.CLASS.CLONE.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.CLASS.CLONE.desc.method_names": "분석 대상 메소드명을 입력합니다.",
  "option.SECURITY.CLASS.CLONE.desc.throw_names": "분석 대상 예외처리 클래스명을 입력합니다.",
  "option.SECURITY.CLASS.CLONE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CLASS.CLONE.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.CLASS.CLONE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CLASS.CLONE.title.implement_list": "분석 대상 상속 클래스",
  "option.SECURITY.CLASS.CLONE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CLASS.CLONE.title.include_method": "분석 포함 메소드",
  "option.SECURITY.CLASS.CLONE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CLASS.CLONE.title.method_names": "분석 대상 메소드",
  "option.SECURITY.CLASS.CLONE.title.throw_names": "분석 대상 예외처리 클래스",
  "option.SECURITY.CLASS.MUTABLE_COPY.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.CLASS.MUTABLE_COPY.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.CLASS.MUTABLE_COPY.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.CLASS.MUTABLE_COPY.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.CLASS.MUTABLE_COPY.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.CLASS.MUTABLE_COPY.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.CLASS.MUTABLE_COPY.title.include_class": "분석 포함 클래스",
  "option.SECURITY.CLASS.MUTABLE_COPY.title.include_package": "분석 포함 패키지",
  "option.SECURITY.CLASS_IN_TRUST_PACKAGE.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.SECURITY.CLASS_IN_TRUST_PACKAGE.desc.trust_list": "신뢰할 수 있는 패키지 명을 입력합니다.",
  "option.SECURITY.CLASS_IN_TRUST_PACKAGE.title.exclude_path": "분석 제외 경로",
  "option.SECURITY.CLASS_IN_TRUST_PACKAGE.title.trust_list": "신뢰할 수 있는 패키지",
  "option.SECURITY.COMPARE.CLASS_NAME.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.COMPARE.CLASS_NAME.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.COMPARE.CLASS_NAME.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.COMPARE.CLASS_NAME.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.COMPARE.CLASS_NAME.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.COMPARE.CLASS_NAME.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.COMPARE.CLASS_NAME.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.COMPARE.CLASS_NAME.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.COMPARE.CLASS_NAME.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.COMPARE.CLASS_NAME.title.include_class": "분석 포함 클래스",
  "option.SECURITY.COMPARE.CLASS_NAME.title.include_method": "분석 포함 메소드",
  "option.SECURITY.COMPARE.CLASS_NAME.title.include_package": "분석 포함 패키지",
  "option.SECURITY.DEPLOY.REMOTELY_MONITORING.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.SECURITY.DEPLOY.REMOTELY_MONITORING.desc.rule": "java 옵션 중 외부에서 모니터링 할 수 있도록 하는 옵션입니다.",
  "option.SECURITY.DEPLOY.REMOTELY_MONITORING.title.exclude_extension": "제외 확장자",
  "option.SECURITY.DEPLOY.REMOTELY_MONITORING.title.rule": "모니터링 가능 옵션",
  "option.SECURITY.DISABLE.BYTECODE_VERIFICATION.desc.exclude_extension": "검출에서 제외할 파일 확장자를 지정합니다.\n예시) java",
  "option.SECURITY.DISABLE.BYTECODE_VERIFICATION.desc.rule": "java bytecode 미 검증 옵션을 지정합니다.",
  "option.SECURITY.DISABLE.BYTECODE_VERIFICATION.title.exclude_extension": "제외 확장자",
  "option.SECURITY.DISABLE.BYTECODE_VERIFICATION.title.rule": "bytecode 미 검증 옵션",
  "option.SECURITY.EXCEPTION_THROWING_CONSTRUCTOR.desc.initialized_flag": "생성자가 정상적으로 생성되어 있는지 확인하는 flag 의 이름을 입력합니다.",
  "option.SECURITY.EXCEPTION_THROWING_CONSTRUCTOR.title.initialized_flag": "생성자 생성 확인 flag",
  "option.SECURITY.FILE.GLOBAL_ACCESS.desc.forbidden_argument": "금지할 인자 값을 지정합니다.\n예시) MODE_WORLD_WRITEABLE",
  "option.SECURITY.FILE.GLOBAL_ACCESS.desc.method_name": "검사 대상인 메소드를 지정합니다.\n예시) openFileOutput",
  "option.SECURITY.FILE.GLOBAL_ACCESS.title.forbidden_argument": "금지 인자 값",
  "option.SECURITY.FILE.GLOBAL_ACCESS.title.method_name": "검사 대상 메소드 명",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.file_io_list": "File I/O 메소드 명을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.method_name": "Interrupted 메소드 명을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.desc.type_name": "Thread 클래스 명을 입력합니다.",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.file_io_list": "File I/O 메소드 명",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.include_class": "분석 포함 클래스",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.include_method": "분석 포함 메소드",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.include_package": "분석 포함 패키지",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.method_name": "Interrupted 메소드",
  "option.SECURITY.FILE_AND_FLAG.LOOP.title.type_name": "Thread 클래스",
  "option.SECURITY.IMPLEMENT.EXTERNALIZABLE.desc.call_name": "직렬화 및 역직렬화 메소드 명을 작성합니다.",
  "option.SECURITY.IMPLEMENT.EXTERNALIZABLE.desc.call_type": "직렬화 및 역직렬화 클래스 타입 명을 작성합니다.",
  "option.SECURITY.IMPLEMENT.EXTERNALIZABLE.desc.method_name": "Externalizable 구현 메소드 명을 작성합니다.",
  "option.SECURITY.IMPLEMENT.EXTERNALIZABLE.title.call_name": "직렬화 및 역직렬화 메소드",
  "option.SECURITY.IMPLEMENT.EXTERNALIZABLE.title.call_type": "직렬화 및 역직렬화 클래스 타입",
  "option.SECURITY.IMPLEMENT.EXTERNALIZABLE.title.method_name": "Externalizable 구현 메소드",
  "option.SECURITY.INFINITE_LOOP.KOTLIN.desc.repeat_stop_method": "무한 반복을 정지할 수 있는 메소드 이름을 입력합니다.\n예시) java.lang.Thread.yield",
  "option.SECURITY.INFINITE_LOOP.KOTLIN.title.repeat_stop_method": "반복문 정지 메소드",
  "option.SECURITY.INFINITE_LOOP.desc.check_break_statement": "break 문을 검사할지 선택합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.check_general_loop": "무한 반복문이 아닌 일반 반복문을 검사 할지 선택합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.check_return_statement": "return 문을 검사할지 선택합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.include_method": "분석에 포함할 메소드 이름을 입력합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.INFINITE_LOOP.desc.method_name": "무한 반복을 정지할 수 있는 메소드 이름을 입력합니다.\n예시) java.lang.Thread.yield",
  "option.SECURITY.INFINITE_LOOP.desc.trusted_readonly_methods": "객체의 메모리 상태를 변화시키지 않고 객체의 정보를 읽기만 하는 메소드 이름을 입력합니다.\n예시) compareTo",
  "option.SECURITY.INFINITE_LOOP.title.check_break_statement": "break 문 검사 유무",
  "option.SECURITY.INFINITE_LOOP.title.check_general_loop": "일반 반복문 검사 유무",
  "option.SECURITY.INFINITE_LOOP.title.check_return_statement": "return 문 검사 유무",
  "option.SECURITY.INFINITE_LOOP.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.INFINITE_LOOP.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.INFINITE_LOOP.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.INFINITE_LOOP.title.include_class": "분석 포함 클래스",
  "option.SECURITY.INFINITE_LOOP.title.include_method": "분석 포함 메소드",
  "option.SECURITY.INFINITE_LOOP.title.include_package": "분석 포함 페키지",
  "option.SECURITY.INFINITE_LOOP.title.method_name": "반복문 정지 메소드",
  "option.SECURITY.INFINITE_LOOP.title.trusted_readonly_methods": "객체의 메모리 상태를 변화시키지 않는 메소드",
  "option.SECURITY.INITIALIZER.THREAD.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.INITIALIZER.THREAD.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.INITIALIZER.THREAD.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.INITIALIZER.THREAD.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.INITIALIZER.THREAD.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.INITIALIZER.THREAD.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.INITIALIZER.THREAD.desc.type_name": "Thread 클래스 명을 입력합니다.",
  "option.SECURITY.INITIALIZER.THREAD.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.INITIALIZER.THREAD.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.INITIALIZER.THREAD.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.INITIALIZER.THREAD.title.include_class": "분석 포함 클래스",
  "option.SECURITY.INITIALIZER.THREAD.title.include_method": "분석 포함 메소드",
  "option.SECURITY.INITIALIZER.THREAD.title.include_package": "분석 포함 패키지",
  "option.SECURITY.INITIALIZER.THREAD.title.type_name": "Thread 클래스",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.desc.class_type_name": "Serializable 타입 명을 작성합니다.",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.desc.include_method": "분석에 포함할 메소드 이름을 입력합니다.",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.title.class_type_name": "Serializable 타입 명",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.title.include_method": "분석 포함 메소드",
  "option.SECURITY.INNER_CLASS.SERIALIZABLE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.INTER_CLASS_CYCLE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.INTER_CLASS_CYCLE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.INTER_CLASS_CYCLE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.INTER_CLASS_CYCLE.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.INTER_CLASS_CYCLE.desc.include_method": "분석에 포함할 메소드 이름을 입력합니다.",
  "option.SECURITY.INTER_CLASS_CYCLE.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.INTER_CLASS_CYCLE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.INTER_CLASS_CYCLE.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.INTER_CLASS_CYCLE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.INTER_CLASS_CYCLE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.INTER_CLASS_CYCLE.title.include_method": "분석 포함 메소드",
  "option.SECURITY.INTER_CLASS_CYCLE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.LOOP_VARIABLE_FINAL.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.LOOP_VARIABLE_FINAL.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.LOOP_VARIABLE_FINAL.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.SECURITY.LOOP_VARIABLE_FINAL.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.SECURITY.LOOP_VARIABLE_FINAL.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.LOOP_VARIABLE_FINAL.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.LOOP_VARIABLE_FINAL.title.include_class": "분석 포함 클래스",
  "option.SECURITY.LOOP_VARIABLE_FINAL.title.include_package": "분석 포함 패키지",
  "option.SECURITY.METHOD.OVERRIDE.CLONEABLE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.CLONEABLE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.CLONEABLE.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.CLONEABLE.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.CLONEABLE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.METHOD.OVERRIDE.CLONEABLE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.METHOD.OVERRIDE.CLONEABLE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.METHOD.OVERRIDE.CLONEABLE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.extends_name": "상속하는 ClassLoader 클래스 명을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.method_name": "검출 대상 메소드 명을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.desc.type_name": "검출 대상 클래스 명을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.extends_name": "상속 ClassLoader 클래스",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.include_class": "분석 포함 클래스",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.include_method": "분석 포함 메소드",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.include_package": "분석 포함 패키지",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.method_name": "검출 대상 메소드",
  "option.SECURITY.METHOD.OVERRIDE.GETPERMISSIONS.title.type_name": "검출 대상 클래스",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.title.include_class": "분석 포함 클래스",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.title.include_method": "분석 포함 메소드",
  "option.SECURITY.METHOD.OVERRIDE.STATIC.title.include_package": "분석 포함 패키지",
  "option.SECURITY.METHOD.OVERRIDE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.OVERRIDE.desc.type_names": "분석 포함 변수의 타입명을 작성합니다.",
  "option.SECURITY.METHOD.OVERRIDE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.METHOD.OVERRIDE.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.METHOD.OVERRIDE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.METHOD.OVERRIDE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.METHOD.OVERRIDE.title.include_method": "분석 포함 메소드",
  "option.SECURITY.METHOD.OVERRIDE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.METHOD.OVERRIDE.title.type_names": "분석 포함 변수의 타입명",
  "option.SECURITY.METHOD.PROTECTED.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.PROTECTED.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.METHOD.PROTECTED.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.PROTECTED.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.METHOD.PROTECTED.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.METHOD.PROTECTED.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.METHOD.PROTECTED.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.METHOD.PROTECTED.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.METHOD.PROTECTED.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.METHOD.PROTECTED.title.include_class": "분석 포함 클래스",
  "option.SECURITY.METHOD.PROTECTED.title.include_method": "분석 포함 메소드",
  "option.SECURITY.METHOD.PROTECTED.title.include_package": "분석 포함 패키지",
  "option.SECURITY.PARTIALLY_INITIALIZED_OBJECT.desc.initializer_method": "객체를 초기화하는 메소드 명을 입력합니다.",
  "option.SECURITY.PARTIALLY_INITIALIZED_OBJECT.title.initializer_method": "초기화 메소드",
  "option.SECURITY.PATTERN.METHOD_CHAINING.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.PATTERN.METHOD_CHAINING.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.PATTERN.METHOD_CHAINING.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.PATTERN.METHOD_CHAINING.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.PATTERN.METHOD_CHAINING.desc.include_method": "분석 대상 호출되는 메소드 이름을 작성해 주세요.",
  "option.SECURITY.PATTERN.METHOD_CHAINING.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.PATTERN.METHOD_CHAINING.desc.method_name": "검출 대상 메소드 이름을 작성해주세요.",
  "option.SECURITY.PATTERN.METHOD_CHAINING.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.PATTERN.METHOD_CHAINING.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.PATTERN.METHOD_CHAINING.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.PATTERN.METHOD_CHAINING.title.include_class": "분석 포함 클래스",
  "option.SECURITY.PATTERN.METHOD_CHAINING.title.include_method": "분석 대상 호출되는 메소드 이름",
  "option.SECURITY.PATTERN.METHOD_CHAINING.title.include_package": "분석 포함 패키지",
  "option.SECURITY.PATTERN.METHOD_CHAINING.title.method_name": "검출 대상 메소드",
  "option.SECURITY.PATTERN.THREAD_PER_MESSAGE.desc.executor_method_name": "Thread 실행 메소드 명을 입력합니다.",
  "option.SECURITY.PATTERN.THREAD_PER_MESSAGE.desc.executor_type_name": "Thread 실행 클래스 명을 입력합니다.",
  "option.SECURITY.PATTERN.THREAD_PER_MESSAGE.desc.socket_type_name": "Socket 클래스 명을 입력합니다.",
  "option.SECURITY.PATTERN.THREAD_PER_MESSAGE.desc.thread_pool_method_name": "Thread pool 메소드 명을 입력합니다.",
  "option.SECURITY.PATTERN.THREAD_PER_MESSAGE.title.executor_method_name": "Thread 실행 메소드",
  "option.SECURITY.PATTERN.THREAD_PER_MESSAGE.title.executor_type_name": "Thread 실행 클래스",
  "option.SECURITY.PATTERN.THREAD_PER_MESSAGE.title.socket_type_name": "Socket 클래스",
  "option.SECURITY.PATTERN.THREAD_PER_MESSAGE.title.thread_pool_method_name": "Thread pool 메소드",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.title.include_class": "분석 포함 클래스",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.title.include_method": "분석 포함 메소드",
  "option.SECURITY.PUBLISH_BEFORE_INITIALIZATION.title.include_package": "분석 포함 패키지",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.desc.method_name": "읽기 메소드 명을 입력합니다.",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.desc.type_name": "입력을 담당하는 클래스 명을 입력합니다.",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.title.include_class": "분석 포함 클래스",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.title.include_method": "분석 포함 메소드",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.title.include_package": "분석 포함 패키지",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.title.method_name": "읽기 메소드",
  "option.SECURITY.RETURN.INPUTSTREAM_READ.title.type_name": "입력 클래스",
  "option.SECURITY.RETURN.INTEGER_DATA.desc.method_name": "readInt() 메소드 명을 입력합니다.",
  "option.SECURITY.RETURN.INTEGER_DATA.desc.type_name": "readInt() 메소드를 호출할 수 있는 클래스 명을 입력합니다.",
  "option.SECURITY.RETURN.INTEGER_DATA.title.method_name": "readInt() 명",
  "option.SECURITY.RETURN.INTEGER_DATA.title.type_name": "readInt() 메소드 포함 클래스",
  "option.SECURITY.RETURN.WRAP_OR_DUPLICATE.desc.method_name": "검출 대상 메소드 명을 입력합니다.",
  "option.SECURITY.RETURN.WRAP_OR_DUPLICATE.desc.type_name": "검출 대상 클래스 명을 입력합니다.",
  "option.SECURITY.RETURN.WRAP_OR_DUPLICATE.title.method_name": "검출 대상 메소드",
  "option.SECURITY.RETURN.WRAP_OR_DUPLICATE.title.type_name": "검출 대상 클래스",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.desc.exclude_field": "분석에서 제외할 필드 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.desc.include_field": "분석에 포함 할 필드 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.title.exclude_field": "분석 제외 필드",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.title.include_class": "분석 포함 클래스",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.title.include_field": "분석 포함 필드",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.title.include_method": "분석 포함 메소드",
  "option.SECURITY.SERIALIZABLE.FIELD.TRANSIENT.title.include_package": "분석 포함 패키지",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.desc.method_name": "Serializable 구현 메소드 명을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.desc.throws_list": "Throws 예외 클래스 명을 입력합니다.",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.title.include_method": "분석 포함 메소드",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.title.method_name": "Serializable 구현 메소드",
  "option.SECURITY.SERIALIZABLE.METHOD_OVERRIDE.title.throws_list": "Throws 예외",
  "option.SECURITY.SYNCHRONIZE.ATOMIC_VALUE.desc.excluded_class": "이슈 검출 없이 검사에서 제외할 클래스 이름을 입력합니다\n예시) .*Dto",
  "option.SECURITY.SYNCHRONIZE.ATOMIC_VALUE.desc.excluded_method": "이슈 검출 없이 검사에서 제외할 메소드 이름을 입력합니다.\n예시) .*Dto",
  "option.SECURITY.SYNCHRONIZE.ATOMIC_VALUE.desc.excluded_package": "이슈 검출 없이 검사에서 제외할 패키지 이름을 입력합니다.\n예시) .*dto",
  "option.SECURITY.SYNCHRONIZE.ATOMIC_VALUE.title.excluded_class": "제외 클래스",
  "option.SECURITY.SYNCHRONIZE.ATOMIC_VALUE.title.excluded_method": "제외 메소드",
  "option.SECURITY.SYNCHRONIZE.ATOMIC_VALUE.title.excluded_package": "제외 패키지",
  "option.SECURITY.SYNCHRONIZE.BACK_COLLECTION.desc.method_name": "keySet() 메소드 명을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.BACK_COLLECTION.desc.type_name": "검출할 컬렉션 이름",
  "option.SECURITY.SYNCHRONIZE.BACK_COLLECTION.title.method_name": "keySet() 메소드",
  "option.SECURITY.SYNCHRONIZE.BACK_COLLECTION.title.type_name": "컬렉션 이름",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.desc.method_name": "getClass() 메소드 명을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.title.include_class": "분석 포함 클래스",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.title.include_method": "분석 포함 메소드",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.title.include_package": "분석 포함 패키지",
  "option.SECURITY.SYNCHRONIZE.GET_CLASS.title.method_name": "getClass() 메소드",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.desc.type_name": "Lock 또는 Condition 을 구현한 클래스 명을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.title.include_class": "분석 포함 클래스",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.title.include_method": "분석 포함 메소드",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.title.include_package": "분석 포함 패키지",
  "option.SECURITY.SYNCHRONIZE.LOCK_OR_CONDITION.title.type_name": "Lock 또는 Condition 구현 클래스",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.desc.type_name": "재사용 가능한 타입을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.title.include_class": "분석 포함 클래스",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.title.include_method": "분석 포함 메소드",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.title.include_package": "분석 포함 패키지",
  "option.SECURITY.SYNCHRONIZE.REUSABLE_OBJECT.title.type_name": "재사용 가능한 타입",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.title.include_class": "분석 포함 클래스",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.title.include_method": "분석 포함 메소드",
  "option.SECURITY.SYNCHRONIZE.STATIC.FIELD.title.include_package": "분석 포함 패키지",
  "option.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.desc.executor_method": "Executor 클래스 명을 입력합니다.",
  "option.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.desc.method_names": "분석 대상 오버라이드 메소드명을 입력하세요.",
  "option.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.desc.reinitializer_method": "재 초기화 메소드 명을 입력합니다.",
  "option.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.desc.type_names": "분석 대상 클래스 타입명을 입력하세요.",
  "option.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.title.executor_method": "Executor 클래스",
  "option.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.title.method_names": "분석 대상 오버라이드 메소드",
  "option.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.title.reinitializer_method": "재 초기화 메소드",
  "option.SECURITY.THREAD.LOCAL.NOT_REINITIALIZED.title.type_names": "분석 대상 클래스 타입",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.implement_list": "Runnable 인터페이스 명을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.thread_list": "Thread 클래스 명을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.desc.type_name": "공유가 될 수 있는 변수 타입 명을 입력합니다.",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.implement_list": "Runnable 인터페이스",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.include_class": "분석 포함 클래스",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.include_method": "분석 포함 메소드",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.include_package": "분석 포함 패키지",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.thread_list": "Thread 클래스",
  "option.SECURITY.THREAD.SHARED_VARIABLE.title.type_name": "공유 변수 타입",
  "option.SECURITY.THROW.THREAD_POOL.desc.call_base_type": "실행 클래스 명을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.desc.call_method_name": "스레드 풀 메소드 명을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.desc.include_class": "분석에 포함 할 클래스 이름을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.desc.include_method": "분석에 포함 할 메소드 이름을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.desc.include_package": "분석에 포함 할 패키지 이름을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.desc.target_method": "실행 메소드 명을 입력합니다.",
  "option.SECURITY.THROW.THREAD_POOL.title.call_base_type": "실행 클래스",
  "option.SECURITY.THROW.THREAD_POOL.title.call_method_name": "스레드 풀 메소드",
  "option.SECURITY.THROW.THREAD_POOL.title.exclude_class": "분석 제외 클래스",
  "option.SECURITY.THROW.THREAD_POOL.title.exclude_method": "분석 제외 메소드",
  "option.SECURITY.THROW.THREAD_POOL.title.exclude_package": "분석 제외 패키지",
  "option.SECURITY.THROW.THREAD_POOL.title.include_class": "분석 포함 클래스",
  "option.SECURITY.THROW.THREAD_POOL.title.include_method": "분석 포함 메소드",
  "option.SECURITY.THROW.THREAD_POOL.title.include_package": "분석 포함 패키지",
  "option.SECURITY.THROW.THREAD_POOL.title.target_method": "실행 메소드",
  "option.SECURITY_DECISION_ON_DNS_LOOKUP.desc.dns_decision_function": "DNS를 인자로 이용하여 보안 결정을 수행하는 함수 이름을 작성합니다.\n예시) strcmp",
  "option.SECURITY_DECISION_ON_DNS_LOOKUP.desc.dns_lookup_function": "DNS lookup을 수행하는 함수 이름을 작성합니다.\n예시) gethostbyaddr",
  "option.SECURITY_DECISION_ON_DNS_LOOKUP.title.dns_decision_function": "DNS를 이용한 보안 결정 함수",
  "option.SECURITY_DECISION_ON_DNS_LOOKUP.title.dns_lookup_function": "DNS Lookup 함수",
  "option.SENSITIVE_COOKIE.FLAG.JS.desc.cookie_middleware": "쿠키 생성 미들웨어를 작성합니다. \n예시) cookie-session",
  "option.SENSITIVE_COOKIE.FLAG.JS.desc.security_flag": "쿠키의 보안 플래그를 작성합니다.\n예시) httpOnly, secure",
  "option.SENSITIVE_COOKIE.FLAG.JS.title.cookie_middleware": "쿠키 생성 미들웨어",
  "option.SENSITIVE_COOKIE.FLAG.JS.title.security_flag": "쿠키의 보안 플래그",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.desc.cookie_class": "보안 속성 설정용 Cookie 클래스들",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식 (메소드 정의를 포함합니다.)",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.desc.response_class": "서블릿에서 사용되는 Response 클래스들, 예: HttpServletResponse",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.title.alarm": "검출 규칙",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.title.cookie_class": "Cookie 클래스들",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.title.exclude": "예외 규칙",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.title.propagator": "전파 규칙",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.title.response_class": "서블릿을 위한 Response 클래스들",
  "option.SENSITIVE_COOKIE_IN_HTTPS_SESSION_WITHOUT_SECURE_ATTRIBUTE.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"openConnection\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.title.taint_filter": "외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.title.taint_propagator": "외부 정보 전파 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.title.taint_sink": "외부 정보 사용 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.GO.title.taint_source": "외부 정보 입력 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"==\"",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"__sparrow_required__url.parse\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"__sparrow_node_js_request__.url\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.JS.title.taint_source": "외부 정보 입력 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"openConnection\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(1) of name(\"in_array\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"file_get_contents\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) CFStreamCreatePairWithSocketToHost$param(2)",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.SERVER_SIDE_REQUEST_FORGERY.desc.class_type": "외부 입력 값을 사용하는 클래스 이름을 설정합니다.",
  "option.SERVER_SIDE_REQUEST_FORGERY.desc.filter_method": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.\n예시) whiteList",
  "option.SERVER_SIDE_REQUEST_FORGERY.desc.request_method": "외부 입력 값을 획득하는 메소드 이름을 입력합니다.\n예시) javax.servlet.http.HttpServletRequest.getParameter",
  "option.SERVER_SIDE_REQUEST_FORGERY.title.class_type": "외부 입력 값을 사용하는 클래스",
  "option.SERVER_SIDE_REQUEST_FORGERY.title.filter_method": "외부 입력 값 검증 메소드",
  "option.SERVER_SIDE_REQUEST_FORGERY.title.request_method": "외부 입력 값 획득 메소드",
  "option.SERVLET_WORK_WITH_COMMITTED_RESPONSE.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.SERVLET_WORK_WITH_COMMITTED_RESPONSE.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.SERVLET_WORK_WITH_COMMITTED_RESPONSE.title.exclude_method": "분석 제외 메소드",
  "option.SERVLET_WORK_WITH_COMMITTED_RESPONSE.title.exclude_path": "분석 제외 경로",
  "option.SETTING_MANIPULATION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SETTING_MANIPULATION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SETTING_MANIPULATION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.SETTING_MANIPULATION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.create$param(*)",
  "option.SETTING_MANIPULATION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.SETTING_MANIPULATION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.SETTING_MANIPULATION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SETTING_MANIPULATION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.SETTING_MANIPULATION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.SETTING_MANIPULATION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.SETTING_MANIPULATION.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SETTING_MANIPULATION.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SETTING_MANIPULATION.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.SETTING_MANIPULATION.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.create$param(*)",
  "option.SETTING_MANIPULATION.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.SETTING_MANIPULATION.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.SETTING_MANIPULATION.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SETTING_MANIPULATION.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.SETTING_MANIPULATION.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.SETTING_MANIPULATION.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.SIGNAL_HANDLER_CALLS_UNSAFE_FUNCTION.desc.ignore_func": "분석에서 제외되는 함수명을 설정합니다.",
  "option.SIGNAL_HANDLER_CALLS_UNSAFE_FUNCTION.title.ignore_func": "분석에서 제외되는 함수",
  "option.SINGLE_OR_MULTI_COMMENT.desc.use_single_comment": "선택 할 경우 '/*...*/' 으로 묶이는 주석을 검출합니다.",
  "option.SINGLE_OR_MULTI_COMMENT.title.use_single_comment": "'//' 주석만 사용 여부",
  "option.SMTP_COMMAND_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SMTP_COMMAND_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SMTP_COMMAND_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.SMTP_COMMAND_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) system$param(1)",
  "option.SMTP_COMMAND_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.SMTP_COMMAND_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.SMTP_COMMAND_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SMTP_COMMAND_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.SMTP_COMMAND_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.SMTP_COMMAND_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.desc.allowed_name_pattern": "boolean 변수가 준수해야 할 명명 규칙을 정규식으로 입력받아, 파일 내 boolean 변수의 이름이 해당 정규식과 일치하지 않는 경우에 검출하는 옵션입니다.",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.desc.allowed_type": "특정 boolean 변수 종류를 텍스트로 입력하면 해당 변수 종류는 검출에서 제외합니다. 예시로 protected를 입력한 경우, protected boolean 변수의 명명 규칙 준수 여부를 확인하지 않습니다.",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.desc.target_path": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.desc.target_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.desc.whitelist_path": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외합니다. 전체 경로로 하나의 항목만 입력하세요.",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.desc.whitelist_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에서 제외합니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.title.allowed_name_pattern": "boolean 변수 이름에 대한 기본 명명 규칙",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.title.allowed_type": "검출하지 않을 boolean 변수 종류",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.title.target_path": "분석 대상 파일 경로",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.title.target_path_pattern": "분석 대상 파일 경로",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.title.whitelist_path": "분석 제외 대상 파일 경로",
  "option.SPECIFIC_PATH_BOOLEAN_NAME.title.whitelist_path_pattern": "분석 제외 대상 파일 경로 패턴",
  "option.SQL_INJECTION.GO.desc.custom_taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"openConnection\")",
  "option.SQL_INJECTION.GO.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.SQL_INJECTION.GO.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.SQL_INJECTION.GO.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.SQL_INJECTION.GO.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.SQL_INJECTION.GO.title.custom_taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.GO.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.GO.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.GO.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.GO.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.JS.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" {sink_target} \"is_from\" {source_target}\nsink_target: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nsource_target: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION.JS.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다.  \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION.JS.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION.JS.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.SQL_INJECTION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.SQL_INJECTION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수 이름을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.SQL_INJECTION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.SQL_INJECTION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"query\")",
  "option.SQL_INJECTION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.SQL_INJECTION.JS.title.alarm": "검출 규칙",
  "option.SQL_INJECTION.JS.title.exclude": "예외 규칙",
  "option.SQL_INJECTION.JS.title.propagator": "전파 규칙",
  "option.SQL_INJECTION.JS.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SQL_INJECTION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.SQL_INJECTION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.SQL_INJECTION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.SQL_INJECTION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(reg(\"java\\.sql\\.Statement\\.executeQuery\\(.*\\)\"))",
  "option.SQL_INJECTION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.SQL_INJECTION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SQL_INJECTION.OBJC.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SQL_INJECTION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.SQL_INJECTION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) sqlite3_exec$param(2)",
  "option.SQL_INJECTION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.SQL_INJECTION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.OBJC.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"mysql_real_escape_string\")",
  "option.SQL_INJECTION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.SQL_INJECTION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.SQL_INJECTION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"mysql_query\")",
  "option.SQL_INJECTION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.SQL_INJECTION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SQL_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SQL_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.SQL_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) mysql_query$param(*)",
  "option.SQL_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.SQL_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SQL_INJECTION.SWIFT.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SQL_INJECTION.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.SQL_INJECTION.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) sqlite3_exec$param(2)",
  "option.SQL_INJECTION.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.SQL_INJECTION.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.SWIFT.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SQL_INJECTION.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SQL_INJECTION.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.SQL_INJECTION.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.open$param(*)",
  "option.SQL_INJECTION.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.SQL_INJECTION.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.SQL_INJECTION.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.SQL_INJECTION.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.SQL_INJECTION.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.open$param(*)",
  "option.SQL_INJECTION.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.SQL_INJECTION.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION.desc.clear_call": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.\n예시) makeSecureString",
  "option.SQL_INJECTION.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION.desc.param_on_sql_injection": "모든 인자가 위험한 값을 가질 수 있다고 여깁니다. 따라서, 많은 이슈가 발생할 수 있습니다.",
  "option.SQL_INJECTION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식 (메소드 정의를 포함합니다.)",
  "option.SQL_INJECTION.desc.sink_call": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.\n예시) SQLExecDirect",
  "option.SQL_INJECTION.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n예시) getenv",
  "option.SQL_INJECTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.SQL_INJECTION.title.alarm": "검출 규칙",
  "option.SQL_INJECTION.title.clear_call": "민감한 정보 검사 함수",
  "option.SQL_INJECTION.title.exclude": "예외 규칙",
  "option.SQL_INJECTION.title.param_on_sql_injection": "인자는 모두 위험",
  "option.SQL_INJECTION.title.propagator": "전파 규칙",
  "option.SQL_INJECTION.title.sink_call": "민감한 정보 노출 함수",
  "option.SQL_INJECTION.title.source_call": "민감한 정보 입력 함수",
  "option.SQL_INJECTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SQL_INJECTION_HIBERNATE.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION_HIBERNATE.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION_HIBERNATE.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식 (메소드 정의를 포함합니다.)",
  "option.SQL_INJECTION_HIBERNATE.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.SQL_INJECTION_HIBERNATE.title.alarm": "검출 규칙",
  "option.SQL_INJECTION_HIBERNATE.title.exclude": "예외 규칙",
  "option.SQL_INJECTION_HIBERNATE.title.propagator": "전파 규칙",
  "option.SQL_INJECTION_HIBERNATE.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SQL_INJECTION_JDO.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION_JDO.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION_JDO.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식 (메소드 정의를 포함합니다.)",
  "option.SQL_INJECTION_JDO.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.SQL_INJECTION_JDO.title.alarm": "검출 규칙",
  "option.SQL_INJECTION_JDO.title.exclude": "예외 규칙",
  "option.SQL_INJECTION_JDO.title.propagator": "전파 규칙",
  "option.SQL_INJECTION_JDO.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SQL_INJECTION_MYSQL.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(reg(\"__sparrow_required__mysql\\..*\\.escape\"))",
  "option.SQL_INJECTION_MYSQL.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.SQL_INJECTION_MYSQL.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.SQL_INJECTION_MYSQL.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(reg(\"__sparrow_required__mysql\\..*\\.query\"))",
  "option.SQL_INJECTION_MYSQL.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of name(reg(\"\\\\S+\\\\.body.*\"))",
  "option.SQL_INJECTION_MYSQL.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION_MYSQL.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION_MYSQL.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION_MYSQL.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION_MYSQL.JS.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION_NOSQL.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"String\")",
  "option.SQL_INJECTION_NOSQL.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.SQL_INJECTION_NOSQL.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.SQL_INJECTION_NOSQL.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"find\")",
  "option.SQL_INJECTION_NOSQL.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of name(reg(\"\\\\S+\\\\.body.*\"))",
  "option.SQL_INJECTION_NOSQL.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION_NOSQL.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION_NOSQL.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION_NOSQL.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION_NOSQL.JS.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION_ORM.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.SQL_INJECTION_ORM.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.SQL_INJECTION_ORM.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.SQL_INJECTION_ORM.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(reg(\"__sparrow_required__sequelize\\.query\"))",
  "option.SQL_INJECTION_ORM.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.",
  "option.SQL_INJECTION_ORM.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.SQL_INJECTION_ORM.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.SQL_INJECTION_ORM.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.SQL_INJECTION_ORM.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.SQL_INJECTION_ORM.JS.title.taint_source": "외부 정보 입력 함수",
  "option.SQL_INJECTION_PERSISTENCE.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION_PERSISTENCE.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION_PERSISTENCE.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.SQL_INJECTION_PERSISTENCE.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.SQL_INJECTION_PERSISTENCE.title.alarm": "검출 규칙",
  "option.SQL_INJECTION_PERSISTENCE.title.exclude": "예외 규칙",
  "option.SQL_INJECTION_PERSISTENCE.title.propagator": "전파 규칙",
  "option.SQL_INJECTION_PERSISTENCE.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SQL_INJECTION_POSTGRESQL.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다 .\n예시) retrun of name(\"req\")",
  "option.SQL_INJECTION_POSTGRESQL.JS.title.taint_source": "외부 정보 입력 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.desc.hardcoded_sensitive": "쿠키를 생성하거나 설정할 때 인자 값이 하드코딩된 문자열 리터럴일 경우, 해당 문자열에 민감한 정보 키워드가 포함되어 있는지를 검사하는 기능입니다. 검출할 민감한 정보 키워드를 정규식으로 작성합니다.",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of name(\"setcookie\")",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"^(?!.*encrypted).*[pP]assw(or)?d\"))",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.title.hardcoded_sensitive": "민감한 정보 키워드",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_COOKIE.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"write\")",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"^(?!.*encrypted).*[pP]assw(or)?d\"))",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_FILE.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.desc.hardcoded_sensitive": "쿠키를 생성하거나 설정할 때 인자 값이 하드코딩된 문자열 리터럴일 경우, 해당 문자열에 민감한 정보 키워드가 포함되어 있는지를 검사하는 기능입니다. 검출할 민감한 정보 키워드를 정규식으로 작성합니다.",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수 이름 및 사용 유형을 작성합니다.\n예시) param(3) of name(\"registrySetStringValue\")",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"^(?!.*encrypted).*[pP]assw(or)?d\"))",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.title.hardcoded_sensitive": "민감한 정보 키워드",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.STORE_IN_CLEAR_TEXT_TO_REGISTRY.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.desc.external_path": "외부에서 접근 가능한 디렉터리 경로를 텍스트로 작성합니다. 지정된 텍스트가 파일 경로에 포함된 경우, 해당 경로를 외부 접근 가능 경로로 간주합니다.",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.desc.external_path_variable": "외부 접근 가능 경로가 저장된 변수 이을 작성합니다. 지정된 변수가 파일 경로 인자로 사용될 경우, 해당 경로를 외부 접근 가능 경로로 간주합니다.",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.desc.file_init_fqn": "경로 값을 활용해 파일 객체를 생성할 수 있는 클래스 및 함수의 FQN을 작성합니다.",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"^(?!.encrypted).[pP]assw(or)?d\"))",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.title.external_path": "외부 접근 가능 경로 패턴",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.title.external_path_variable": "외부 접근 가능 경로 변수",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.title.file_init_fqn": "파일 객체 생성 클래스 및 함수",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.STORE_SENSITIVE_TO_EXTERNAL_STORAGE.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.desc.external_path": "외부에서 접근 가능한 디렉터리 경로를 텍스트로 작성합니다. 지정된 텍스트가 파일 경로에 포함된 경우, 해당 경로를 외부 접근 가능 경로로 간주합니다.",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.desc.external_path_variable": "외부 접근 가능 경로가 저장된 변수 이름을 작성합니다. 지정된 변수가 파일 경로 인자로 사용될 경우, 해당 경로를 외부 접근 가능 경로로 간주합니다.",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.desc.file_init_fqn": "경로 값을 활용해 파일 객체를 생성할 수 있는 클래스 및 함수의 FQN을 작성합니다.",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"^(?!.encrypted).[pP]assw(or)?d\"))",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.title.external_path": "외부 접근 가능 경로 패턴",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.title.external_path_variable": "외부 접근 가능 경로 변수",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.title.file_init_fqn": "파일 객체 생성 클래스 및 함수",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.STORE_SENSITIVE_TO_OUT_OF_CONTROL_PATH.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.STRING.DUPLICATED.ABAP.desc.threshold": "중복되는 문자열의 제한 횟수를 설정합니다.",
  "option.STRING.DUPLICATED.ABAP.title.threshold": "중복  제한 횟수",
  "option.STRING_NORMALIZATION_REQUIRED_BEFORE_VALIDATION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.STRING_NORMALIZATION_REQUIRED_BEFORE_VALIDATION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.STRING_NORMALIZATION_REQUIRED_BEFORE_VALIDATION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.STRING_NORMALIZATION_REQUIRED_BEFORE_VALIDATION.title.alarm": "검출 규칙",
  "option.STRING_NORMALIZATION_REQUIRED_BEFORE_VALIDATION.title.exclude": "예외 규칙",
  "option.STRING_NORMALIZATION_REQUIRED_BEFORE_VALIDATION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.SYMBOLIC_LINK_RACE_CONDITION.OBJC.desc.symlink_chklist": "검사할 심볼릭 링크의 종류를 입력합니다.",
  "option.SYMBOLIC_LINK_RACE_CONDITION.OBJC.title.symlink_chklist": "검사할 심볼릭 링크",
  "option.SYSTEM_INFORMATION_LEAK.OBJC.desc.exception_list": "검사할 예외 목록을 입력합니다.",
  "option.SYSTEM_INFORMATION_LEAK.OBJC.title.exception_list": "예외 목록",
  "option.TABLE_NAME_CONVENTION.SQL.desc.naming_convention": "명명 규칙을 정규식으로 작성합니다.",
  "option.TABLE_NAME_CONVENTION.SQL.title.naming_convention": "테이블 명명 규칙",
  "option.TAKE_CARE_WHEN_USING_RENAME.desc.is_preserved_existing_file": "선택시 기존 목적 파일을 보존, 해제시 기존 목적 파일을 제거하는 방식으로 동작합니다.",
  "option.TAKE_CARE_WHEN_USING_RENAME.title.is_preserved_existing_file": "기존 목적 파일 보존",
  "option.TEMPORARY_FILE_WRITING.OBJC.desc.temporary_directory": "임시 혹은 공개 디렉토리의 이름을 작성합니다.\n예시) /var/tmp/.*",
  "option.TEMPORARY_FILE_WRITING.OBJC.title.temporary_directory": "임시 혹은 공개 디렉토리",
  "option.TESTED_AGAINST_CONSTANT_VALUE.desc.allow_divide": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `/` 연산자를 사용하도록 허용합니다.",
  "option.TESTED_AGAINST_CONSTANT_VALUE.desc.allow_minus": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `-` 연산자를 사용하도록 허용합니다.",
  "option.TESTED_AGAINST_CONSTANT_VALUE.desc.allow_multiply": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `*` 연산자를 사용하도록 허용합니다.",
  "option.TESTED_AGAINST_CONSTANT_VALUE.desc.allow_plus": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `+` 연산자를 사용하도록 허용합니다.",
  "option.TESTED_AGAINST_CONSTANT_VALUE.desc.allow_remainder": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `%` 연산자를 사용하도록 허용합니다.",
  "option.TESTED_AGAINST_CONSTANT_VALUE.title.allow_divide": "/ 연산자 허용",
  "option.TESTED_AGAINST_CONSTANT_VALUE.title.allow_minus": "- 연산자 허용",
  "option.TESTED_AGAINST_CONSTANT_VALUE.title.allow_multiply": "* 연산자 허용",
  "option.TESTED_AGAINST_CONSTANT_VALUE.title.allow_plus": "+ 연산자 허용",
  "option.TESTED_AGAINST_CONSTANT_VALUE.title.allow_remainder": "% 연산자 허용",
  "option.TOCTOU_RACE_CONDITION.KOTLIN.desc.file_check_method": "파일이 존재하는지 확인하는 함수의 이름을 작성합니다.",
  "option.TOCTOU_RACE_CONDITION.KOTLIN.desc.file_exception": "TOCTOU를 처리할 예외의 이름을 작성합니다.",
  "option.TOCTOU_RACE_CONDITION.KOTLIN.title.file_check_method": "파일 존재 확인 함수",
  "option.TOCTOU_RACE_CONDITION.KOTLIN.title.file_exception": "예외 처리",
  "option.TOC_TOU_ACCESS.OBJC.desc.forbiddenTOUCOU": "자원을 사용하는 시점과 검사하는 시점이 달라, 경쟁조건의 발생 가능성이 있습니다.",
  "option.TOC_TOU_ACCESS.OBJC.title.forbiddenTOUCOU": "사용시 경쟁조건이 발생가능한 함수입니다.",
  "option.TOO_BIG_FILE.ABAP.desc.max_lines": "최대 라인수를 설정합니다.",
  "option.TOO_BIG_FILE.ABAP.title.max_lines": "최대 라인 수",
  "option.TOO_BIG_FUNCTION.desc.include_comment_null_stmt": "빈 줄이나 주석도 포함합니다.",
  "option.TOO_BIG_FUNCTION.desc.max_loc": "함수의 최대 라인 수를 설정합니다.",
  "option.TOO_BIG_FUNCTION.title.include_comment_null_stmt": "빈 줄이나 주석 포함 여부",
  "option.TOO_BIG_FUNCTION.title.max_loc": "함수의 최대 라인 수",
  "option.TOO_COMPLEX_FOR_STATEMENT.desc.allowed_max_expression": "for의 초기화 및 갱신에 허용할 최대 수식 개수를 작성합니다.\n예시) 2",
  "option.TOO_COMPLEX_FOR_STATEMENT.title.allowed_max_expression": "for 문에 허용할 최대 수식 개수",
  "option.TOO_FEW_WHEN.ABAP.desc.threshold": "WHEN 절의 갯수가 기준값 미만이면 결함으로 검출합니다. (기본값 : 3)",
  "option.TOO_FEW_WHEN.ABAP.title.threshold": "WHEN 절 기준 값",
  "option.TOO_LONG_COLUMN.ABAP.desc.max_column": "허용할 한 라인의 최대 길이를 입력합니다.\n예시) 100",
  "option.TOO_LONG_COLUMN.ABAP.title.max_column": "허용할 최대 길이",
  "option.TOO_LONG_COLUMN.desc.ignore_comment": "선택할 경우 주석 길이를 라인 길이에 포함하지 않습니다.",
  "option.TOO_LONG_COLUMN.desc.max_column": "허용할 한 라인의 최대 길이를 입력합니다.\n예시) 100",
  "option.TOO_LONG_COLUMN.desc.max_column_width": "한 라인의 최대 폭을 입력합니다.",
  "option.TOO_LONG_COLUMN.title.ignore_comment": "주석 무시 여부",
  "option.TOO_LONG_COLUMN.title.max_column": "허용할 최대 길이",
  "option.TOO_LONG_COLUMN.title.max_column_width": "한 라인의 최대 폭",
  "option.TOO_LONG_SOURCE_CODE_BEFORE_COMMENT.desc.allowed_max_line_length": "한 라인에 허용할 최대 소스 코드 길이를 입력합니다.\n예시) 40",
  "option.TOO_LONG_SOURCE_CODE_BEFORE_COMMENT.desc.check_header": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "option.TOO_LONG_SOURCE_CODE_BEFORE_COMMENT.title.allowed_max_line_length": "최대 소스 코드 길이",
  "option.TOO_LONG_SOURCE_CODE_BEFORE_COMMENT.title.check_header": "헤더 파일 분석 여부",
  "option.TOO_MANY_EXECUTABLE_PATH.desc.threshold": "설정한 수 이상의 실행 가능 경로가 있는 경우 이슈를 검출합니다.",
  "option.TOO_MANY_EXECUTABLE_PATH.title.threshold": "경로 제한 수",
  "option.TOO_MANY_METHODS.desc.maximum_func": "파일 당 허용 가능한 최대 함수 수를 입력합니다.",
  "option.TOO_MANY_METHODS.title.maximum_func": "파일 당 허용 가능한 최대 함수 수",
  "option.TRANSACTION.SYNC.TOBE.JS.desc.functionParamCheck": "함수명과 파라미터, 체크해야 할 boolean 값을 형식에 맞추어 입력하세요. \n예시) Transaction/7/false",
  "option.TRANSACTION.SYNC.TOBE.JS.title.functionParamCheck": "함수/파라미터순서/체크값",
  "option.TRANSACTION_INJECTION.TOBE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.TRANSACTION_INJECTION.TOBE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.TRANSACTION_INJECTION.TOBE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.TRANSACTION_INJECTION.TOBE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2,3,4,5,6) of fqn(\"Transaction\")",
  "option.TRANSACTION_INJECTION.TOBE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "option.TRANSACTION_INJECTION.TOBE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.TRANSACTION_INJECTION.TOBE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.TRANSACTION_INJECTION.TOBE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.TRANSACTION_INJECTION.TOBE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.TRANSACTION_INJECTION.TOBE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.TRUST_BOUNDARY_VIOLATION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.TRUST_BOUNDARY_VIOLATION.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.TRUST_BOUNDARY_VIOLATION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.TRUST_BOUNDARY_VIOLATION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.TRUST_BOUNDARY_VIOLATION.title.alarm": "검출 규칙",
  "option.TRUST_BOUNDARY_VIOLATION.title.exclude": "예외 규칙",
  "option.TRUST_BOUNDARY_VIOLATION.title.propagator": "전파 규칙",
  "option.TRUST_BOUNDARY_VIOLATION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.UNCHECKED_OGNL_EXPRESSION.desc.class_type": "외부 입력 값을 사용하는 클래스 이름을 설정합니다.",
  "option.UNCHECKED_OGNL_EXPRESSION.desc.filter_method": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.\n예시) whiteList",
  "option.UNCHECKED_OGNL_EXPRESSION.desc.request_method": "외부 입력 값을 획득하는 메소드 이름을 입력합니다.\n예시) javax.servlet.http.HttpServletRequest.getParameter",
  "option.UNCHECKED_OGNL_EXPRESSION.desc.target_method_name": "외부 입력 값을 사용하는 클래스의 메소드를 설정합니다.",
  "option.UNCHECKED_OGNL_EXPRESSION.title.class_type": "외부 입력 값을 사용하는 클래스",
  "option.UNCHECKED_OGNL_EXPRESSION.title.filter_method": "외부 입력 값 검증 메소드",
  "option.UNCHECKED_OGNL_EXPRESSION.title.request_method": "외부 입력 값 획득 메소드",
  "option.UNCHECKED_OGNL_EXPRESSION.title.target_method_name": "외부 입력 값을 사용하는 클래스의 메소드",
  "option.UNCHECKED_READ_RESULT.KOTLIN.desc.target_fqn": "검출 대상 읽기 메서드의 FQN(Fully Qualified Name)을 입력하세요.",
  "option.UNCHECKED_READ_RESULT.KOTLIN.title.target_fqn": "검출 대상 읽기 메서드",
  "option.UNCHECKED_SPEL_EXPRESSION.SPRING.desc.class_type": "외부 입력 값을 사용하는 클래스 이름을 설정합니다.",
  "option.UNCHECKED_SPEL_EXPRESSION.SPRING.desc.filter_method": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.\n예시) whiteList",
  "option.UNCHECKED_SPEL_EXPRESSION.SPRING.desc.request_method": "외부 입력 값을 획득하는 메소드 이름을 입력합니다.\n예시) javax.servlet.http.HttpServletRequest.getParameter",
  "option.UNCHECKED_SPEL_EXPRESSION.SPRING.desc.target_method_name": "외부 입력 값을 사용하는 클래스의 메소드를 설정합니다.",
  "option.UNCHECKED_SPEL_EXPRESSION.SPRING.title.class_type": "외부 입력 값을 사용하는 클래스",
  "option.UNCHECKED_SPEL_EXPRESSION.SPRING.title.filter_method": "외부 입력 값 검증 메소드",
  "option.UNCHECKED_SPEL_EXPRESSION.SPRING.title.request_method": "외부 입력 값 획득 메소드",
  "option.UNCHECKED_SPEL_EXPRESSION.SPRING.title.target_method_name": "외부 입력 값을 사용하는 클래스의 메소드",
  "option.UNIQUE_HEADER_FILE_NAME.desc.allow_long_file_name": "체크시 8 글자보다 긴 헤더 파일 이름을 가질 수 있습니다.",
  "option.UNIQUE_HEADER_FILE_NAME.title.allow_long_file_name": "긴 파일 이름 허용",
  "option.UNIQUE_VALUE_IN_ENUMERATOR.desc.allow_enum_assign": "열거형에 다른 열거형 대입을 허용합니다.",
  "option.UNIQUE_VALUE_IN_ENUMERATOR.title.allow_enum_assign": "열거형 대입 허용",
  "option.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.desc.disable_package": "동일한 패키지의 클래스를 import하는 경우, 해당 import 문을 이슈로 검출합니다.",
  "option.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.desc.target_path": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.desc.target_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.title.disable_package": "동일 패키지에서 Import 사용 검출",
  "option.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.title.target_path": "분석 대상 파일 경로",
  "option.UNNECESSARY_IMPORT_IN_SPECIFIC_PATH.title.target_path_pattern": "분석 대상 파일 경로의 정규식 패턴",
  "option.UNNECESSARY_STATEMENT.desc.unnecessary_patterns": "입력한 범위 내의 텍스트를 발견한 경우 이슈로 검출합니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.UNNECESSARY_STATEMENT.title.unnecessary_patterns": "검출할 문장의 정규식 목록",
  "option.UNNECESSARY_TO_STRING.desc.target_method": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.UNNECESSARY_TO_STRING.title.target_method": "블랙리스트 단일",
  "option.UNPROCESSED_EXCEPTION_THROW.desc.exclude_path_pattern": "파일 경로를 정규식으로 입력하세요. 범위 내의 파일 경로를 발견하는 경우 해당 파일을 분석 대상에 제외합니다.",
  "option.UNPROCESSED_EXCEPTION_THROW.desc.target_method": "입력한 텍스트와 동일한 텍스트를 발견한 경우 검출하는 옵션입니다.",
  "option.UNPROCESSED_EXCEPTION_THROW.title.exclude_path_pattern": "분석 제외 대상 파일 경로의 정규식 패턴",
  "option.UNPROCESSED_EXCEPTION_THROW.title.target_method": "블랙리스트 단일",
  "option.UNREASONABLE_PARAMETER.OBJC.desc.check_function": "체커가 검사할 함수명을 입력합니다.",
  "option.UNREASONABLE_PARAMETER.OBJC.title.check_function": "검사할 함수",
  "option.UNREASONABLE_PARAMETER.desc.max_decision_point_number": "허용할 메모리 할당의 최대 크기를 설정합니다.",
  "option.UNREASONABLE_PARAMETER.title.max_decision_point_number": "허용 메모리 최대 크기",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(1) of name(\"endsWith\")",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of name(\"move_uploaded_file\")",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_FILES\")",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.open$param(*)",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.UNRESTRICTED_UPLOAD.FILE.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.CPP.desc.sink_call": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.CPP.desc.source_call": "민감한 정보를 입력 받는 함수 이름을 작성합니다.\n예시) getenv",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.CPP.title.sink_call": "외부 정보 사용 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.CPP.title.source_call": "민감한 정보 입력 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) base of name(\"endsWith\")",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"java.nio.file.Files.copy\")",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"org.springframework.web.multipart.MultipartFile.originalFilename\")",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.desc.custom_taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(1) of \"endsWith\"",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(1) of \"endsWith\"",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of \"move_uploaded_file\"",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_FILES$variable",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.title.custom_taint_filter": "외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.title.alarm": "검출 규칙",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.title.exclude": "예외 규칙",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.title.propagator": "전파 규칙",
  "option.UNRESTRICTED_UPLOAD_OF_FILE.title.suggestion_filter_function": "제안할 필터 함수",
  "option.UNSAFE_JACKSON_DESERIALIZATION.desc.target_method_switch": "enableDefaultTyping() 메소드의 검출 여부를 설정합니다.",
  "option.UNSAFE_JACKSON_DESERIALIZATION.title.target_method_switch": "enableDefaultTyping() 메소드 검출 설정",
  "option.UNSAFE_REFLECTION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.UNSAFE_REFLECTION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) strcpy$param(2)->param(1)",
  "option.UNSAFE_REFLECTION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*.performSelector:$param(*)",
  "option.UNSAFE_REFLECTION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) getenv$return",
  "option.UNSAFE_REFLECTION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.UNSAFE_REFLECTION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.UNSAFE_REFLECTION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.UNSAFE_REFLECTION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.UNSAFE_REFLECTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.UNSAFE_REFLECTION.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.UNSAFE_REFLECTION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.UNSAFE_REFLECTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.UNSAFE_REFLECTION.title.alarm": "검출 규칙",
  "option.UNSAFE_REFLECTION.title.exclude": "예외 규칙",
  "option.UNSAFE_REFLECTION.title.propagator": "전파 규칙",
  "option.UNSAFE_REFLECTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.UNSAFE_XSTREAM_DESERIALIZATION.desc.target_method_switch": "fromXML() 메소드의 검출 여부를 설정합니다.",
  "option.UNSAFE_XSTREAM_DESERIALIZATION.title.target_method_switch": "fromXML() 메소드 검출 설정",
  "option.UNSALTED_ONE_WAY_HASH.desc.hash_function": "솔트가 입력되었는지 검사하기 위해 해시 함수 이름 및 솔트 파라미터 위치를 작성합니다. (해시함수|솔트파라미터위치)",
  "option.UNSALTED_ONE_WAY_HASH.title.hash_function": "해시 함수 이름",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.desc.exclude_class": "분석에서 제외할 클래스 이름을 입력합니다.",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.desc.exclude_package": "분석에서 제외할 패키지 이름을 입력합니다.",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.desc.include_class": "분석에 포함할 클래스 이름을 입력합니다.",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.desc.include_method": "분석에 포함할 메소드 이름을 입력합니다.",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.desc.include_package": "분석에 포함할 패키지 이름을 입력합니다.",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.title.exclude_class": "분석 제외 클래스",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.title.exclude_method": "분석 제외 메소드",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.title.exclude_package": "분석 제외 패키지",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.title.include_class": "분석 포함 클래스",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.title.include_method": "분석 포함 메소드",
  "option.UNSYNCHRONIZED_STATIC_DATE_FORMATTER.title.include_package": "분석 포함 페키지",
  "option.UNUSED.FORMAL_PARAMETER.CSHARP.desc.exceptional_parameter_name": "예외 처리할 파라미터 이름을 적습니다.",
  "option.UNUSED.FORMAL_PARAMETER.CSHARP.desc.exceptional_parameter_type": "예외 처리할 파라미터 타입을 적습니다.",
  "option.UNUSED.FORMAL_PARAMETER.CSHARP.title.exceptional_parameter_name": "예외 파라미터 명",
  "option.UNUSED.FORMAL_PARAMETER.CSHARP.title.exceptional_parameter_type": "예외 파라미터 타입",
  "option.UNUSED_PRIVATE_METHOD.desc.check_unused_constructors": "해당 옵션을 T로 설정하면 미사용된 private 생성자(constructor) 메소드 또한 검출합니다. F로 설정할 경우 미사용된 private 생성자 메소드는 검출하지 않습니다.",
  "option.UNUSED_PRIVATE_METHOD.desc.target_path": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.UNUSED_PRIVATE_METHOD.desc.target_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.UNUSED_PRIVATE_METHOD.desc.whitelist_path": "파일 경로를 텍스트로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출에서 제외합니다.",
  "option.UNUSED_PRIVATE_METHOD.desc.whitelist_path_pattern": "입력한 파일 경로와 일치하는 파일을 발견한 경우 해당 파일을 검출에서 제외합니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.UNUSED_PRIVATE_METHOD.title.check_unused_constructors": "미사용 private 생성자 메소드 검출",
  "option.UNUSED_PRIVATE_METHOD.title.target_path": "분석 대상 파일 경로",
  "option.UNUSED_PRIVATE_METHOD.title.target_path_pattern": "분석 대상 파일 경로의 정규식 패턴",
  "option.UNUSED_PRIVATE_METHOD.title.whitelist_path": "허용된 파일 경로",
  "option.UNUSED_PRIVATE_METHOD.title.whitelist_path_pattern": "허용된 파일 경로의 정규식 패턴",
  "option.UNUSED_PRIVATE_VARIABLE.desc.allowed_variable_pattern": "특정 변수의 이름 패턴 정규식으로 입력하면 사용되지 않는 private 변수 중 해당 패턴과 일치하는 이름의 변수를 검출에서 제외합니다.",
  "option.UNUSED_PRIVATE_VARIABLE.desc.target_path": "입력한 텍스트의 파일 경로와 동일한 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시키는 옵션입니다.",
  "option.UNUSED_PRIVATE_VARIABLE.desc.target_path_pattern": "입력한 범위 내의 파일 경로를 발견한 경우 해당 파일을 분석 대상에 포함시킵니다. 정규식으로 범위를 입력할 수 있습니다.",
  "option.UNUSED_PRIVATE_VARIABLE.desc.whitelist_path": "파일 경로를 텍스트로 입력하면 입력된 경로와 일치하는 파일을 확인한 후, 해당 파일을 검출에서 제외합니다.",
  "option.UNUSED_PRIVATE_VARIABLE.desc.whitelist_path_pattern": "입력한 파일 경로와 일치하는 파일을 발견한 경우 해당 파일을 검출에서 제외합니다. 정규식으로 범위를 입력할 수 있으며 이 옵션이 비어있으면 검출 규칙이 비활성화됩니다.",
  "option.UNUSED_PRIVATE_VARIABLE.title.allowed_variable_pattern": "특정 변수 이름의 정규식 패턴",
  "option.UNUSED_PRIVATE_VARIABLE.title.target_path": "분석 대상 파일 경로",
  "option.UNUSED_PRIVATE_VARIABLE.title.target_path_pattern": "분석 대상 파일 경로의 정규식 패턴",
  "option.UNUSED_PRIVATE_VARIABLE.title.whitelist_path": "허용된 파일 경로",
  "option.UNUSED_PRIVATE_VARIABLE.title.whitelist_path_pattern": "허용된 파일 경로의 정규식 패턴",
  "option.UNUSED_RETURN_VALUE.desc.ignored_function_list": "반환 값이 사용되지 않아도 괜찮은 함수명을 입력합니다. 정규식 사용이 가능합니다.",
  "option.UNUSED_RETURN_VALUE.desc.ignored_path_list": "반환 값이 사용되지 않아도 괜찮은 함수가 선언된 파일 또는 경로를 입력합니다. 정규식 사용이 가능합니다.",
  "option.UNUSED_RETURN_VALUE.title.ignored_function_list": "반환 값 미사용 허용 함수 목록",
  "option.UNUSED_RETURN_VALUE.title.ignored_path_list": "반환 값 미사용 허용 함수의 선언 경로 목록",
  "option.UNVERIFIABLE_NATIVE_INVOCATION.CSHARP.desc.exception_dll": "예외처리할 DLL을 입력하세요.",
  "option.UNVERIFIABLE_NATIVE_INVOCATION.CSHARP.title.exception_dll": "예외처리할 DLL",
  "option.USE.PROPER_VARIABLE_NAME.JS.desc.pattern": "변수 정규식 패턴을 입력하세요.\n예시) [a-z][a-zA-Z]*",
  "option.USE.PROPER_VARIABLE_NAME.JS.title.pattern": "변수정규식 패턴",
  "option.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.title.alarm": "검출 규칙",
  "option.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.title.exclude": "예외 규칙",
  "option.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.title.propagator": "전파 규칙",
  "option.USE_A_SUBSET_OF_ASCII_FOR_FILE_AND_PATH_NAMES.title.suggestion_filter_function": "제안할 필터 함수",
  "option.USE_BRACES.JS.desc.else": "else문에서의 검출 여부에 대해 입력하세요 (true/false)",
  "option.USE_BRACES.JS.desc.for": "for문에서의 검출 여부에 대해 입력하세요 (true/false)",
  "option.USE_BRACES.JS.desc.if": "if문에서의 검출 여부에 대해 입력하세요 (true/false)",
  "option.USE_BRACES.JS.desc.while": "while문에서의 검출 여부에 대해 입력하세요 (true/false)",
  "option.USE_BRACES.JS.title.else": "else문 검출 여부",
  "option.USE_BRACES.JS.title.for": "for문 검출 여부",
  "option.USE_BRACES.JS.title.if": "if문 검출 여부",
  "option.USE_BRACES.JS.title.while": "while문 검출 여부",
  "option.USE_CONST_WITH_MACRO.desc.allowed_function": "표준 함수 및 프레임워크 함수를 작성합니다. \n 이 함수들의 리턴 값은 매크로로 정의되지 않은 상수와 비교할 수 있습니다. \n 값이 입력되지 않은 경우 모든 함수 리턴 값 비교에 사용되는 상수를 무시합니다. \n예시) strcmp",
  "option.USE_CONST_WITH_MACRO.desc.common_header_path": "공용 헤더 파일 경로를 작성합니다.\n값이 입력되지 않을 경우 매크로가 정의된 위치는 고려하지 않습니다.\n 예시) c:projectinclude",
  "option.USE_CONST_WITH_MACRO.title.allowed_function": "시스템 API 혹은 프레임워크 API",
  "option.USE_CONST_WITH_MACRO.title.common_header_path": "공용 헤더 파일 경로",
  "option.USE_DANGEROUS_INNERHTML.REACT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"replace\")",
  "option.USE_DANGEROUS_INNERHTML.REACT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.USE_DANGEROUS_INNERHTML.REACT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"eval\")",
  "option.USE_DANGEROUS_INNERHTML.REACT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of name(\"body\")",
  "option.USE_DANGEROUS_INNERHTML.REACT.desc.weak_element": "외부 정보 사용 html 속성을 작성합니다.",
  "option.USE_DANGEROUS_INNERHTML.REACT.title.taint_filter": "외부 정보 필터 함수",
  "option.USE_DANGEROUS_INNERHTML.REACT.title.taint_propagator": "외부 정보 전파 함수",
  "option.USE_DANGEROUS_INNERHTML.REACT.title.taint_sink": "외부 정보 사용 함수",
  "option.USE_DANGEROUS_INNERHTML.REACT.title.taint_source": "외부 정보 입력 함수",
  "option.USE_DANGEROUS_INNERHTML.REACT.title.weak_element": "외부 정보 사용 html 속성",
  "option.USE_FUNCTION_IN_IF_CONDITION.desc.ignore_function_list": "조건문 내에서 사용을 허용하는 함수들을 정규식으로 입력합니다.",
  "option.USE_FUNCTION_IN_IF_CONDITION.title.ignore_function_list": "허용하는 함수 목록",
  "option.USE_MAXIMUM_SIZED_BUFFER.desc.min_array_variable_size": "인자로 오는 배열의 최소 크기를 입력합니다.",
  "option.USE_MAXIMUM_SIZED_BUFFER.title.min_array_variable_size": "최소 배열 크기",
  "option.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.desc.excluded_algorithm": "제외할 암호화 알고리즘 명을 작성합니다.\n예시)</i> DESede",
  "option.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.desc.sink_call_with_constant": "이 목록에 있는 함수들의 인자로 민감한 정보가 들어오고 하나의 인자라도 상수 값을 가지면 위험하다고 여깁니다.\n예시) strcmp",
  "option.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.desc.source_call": "민감한 정보를 입력받는 함수 명을 작성합니다.\n예시) crypt",
  "option.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.desc.source_variable": "민감한 정보가 포함된 변수 명을 작성합니다.\n예시) cryptokey*",
  "option.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.title.excluded_algorithm": "제외 암호화 알고리즘",
  "option.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.title.sink_call_with_constant": "상수 인자를 갖는 민감한 정보 노출 함수",
  "option.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.title.source_call": "민감한 정보 입력 함수",
  "option.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.title.source_variable": "민감한 정보 변수",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.KOTLIN.desc.forbidden_random_class": "금지된 랜덤 클래스의 이름을 작성합니다.",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.KOTLIN.desc.forbidden_random_method": "금지된 랜덤 함수의 이름을 작성합니다.",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.KOTLIN.title.forbidden_random_class": "금지된 랜덤 클래스",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.KOTLIN.title.forbidden_random_method": "금지된 랜덤 함수",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.desc.allowed_random": "용법 검사 대상 Random 메소드 이름을 입력합니다.\n예시)</i> java.util.Random.nextBoolean",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.desc.forbidden_random": "금지할 Random 메소드 이름을 입력합니다.\n예시)</i> Math.random",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.desc.forbidden_seed_argument_call": "금지 seed 인자 메소드 이름을 입력합니다.\n예시) Integer.valueOf",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.desc.is_check_util_random": "java.util.Random 검사 여부를 설정합니다.\n예시) true",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.desc.random_key_class": "자체 랜덤 키 생성 시 요소로 사용될 수 있는 클래스 이름을 입력합니다.\n예시)</i> java.util.Date",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.desc.random_seed": "Random seed 메소드 이름을 입력합니다.\n예시) java.util.Random.setSeed",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.title.allowed_random": "검사 대상 Random 메소드",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.title.forbidden_random": "금지된 Random 메소드",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.title.forbidden_seed_argument_call": "금지 seed 인자 메소드",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.title.is_check_util_random": "java.util.Random 검사 유무",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.title.random_key_class": "자체 랜덤 키 생성 요소 클래스",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES.title.random_seed": "Random seed 메소드",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.title.alarm": "검출 규칙",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.title.exclude": "예외 규칙",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.title.propagator": "전파 규칙",
  "option.USE_OF_INSUFFICIENT_RANDOM_VALUES_OWASP.title.suggestion_filter_function": "제안할 필터 함수",
  "option.USE_SHORT_FUNCTION.desc.max_loc_count": "최대 라인 수를 입력합니다.",
  "option.USE_SHORT_FUNCTION.desc.max_param_count": "최대 파라미터 수를 입력합니다.",
  "option.USE_SHORT_FUNCTION.title.max_loc_count": "최대 라인 수",
  "option.USE_SHORT_FUNCTION.title.max_param_count": "최대 파라미터 수",
  "option.USE_SINGLE_RETURN.desc.max_return_statement_number": "함수당 허용할 return문의 최대 개수를 적습니다.",
  "option.USE_SINGLE_RETURN.title.max_return_statement_number": "함수당 return 문 최대 개수",
  "option.USE_SIZEOF_ON_PARAM.desc.check_sizeof": "해당 파라미터 수식에 sizeof 가 있다면 sizeof() 가 있다고 판단해서 이슈를 발생하지 않습니다. 예) sizeof(int)*24",
  "option.USE_SIZEOF_ON_PARAM.desc.target_func": "대상 함수와 파라미터 인덱스를 적습니다. (파라미터 인덱스):(대상 함수 이름) 을 적습니다. 파라미터 인덱스는 1부터 시작합니다.  예:) 1:memcpy",
  "option.USE_SIZEOF_ON_PARAM.title.check_sizeof": "수식 내 sizeof 검사 여부",
  "option.USE_SIZEOF_ON_PARAM.title.target_func": "대상 함수와 파라미터 인덱스",
  "option.USE_SUFFIXES_FOR_INTEGER_CONSTANT.desc.ignore_one": "상수값 1에 대해서 검사하지 않도록 합니다.",
  "option.USE_SUFFIXES_FOR_INTEGER_CONSTANT.desc.ignore_zero": "상수값 0에 대해서 검사하지 않도록 합니다.",
  "option.USE_SUFFIXES_FOR_INTEGER_CONSTANT.title.ignore_one": "상수값 1 무시",
  "option.USE_SUFFIXES_FOR_INTEGER_CONSTANT.title.ignore_zero": "상수값 0 무시",
  "option.USE_TAB_BETWEEN_TYPE_AND_IDENTIFIER.desc.tab_size": "탭에 해당하는 공백의 개수를 설정합니다.\n예시) 4",
  "option.USE_TAB_BETWEEN_TYPE_AND_IDENTIFIER.title.tab_size": "탭 크기",
  "option.USING_DEPRECATED_API.KOTLIN.desc.deprecated_api_call": "더 이상 사용되지 않는 메서드의 이름을 FQN으로 작성하세요.",
  "option.USING_DEPRECATED_API.KOTLIN.desc.deprecated_api_class": "더 이상 사용되지 않는 클래스의 이름을 FQN으로 작성하세요.",
  "option.USING_DEPRECATED_API.KOTLIN.desc.deprecated_api_field": "더 이상 사용되지 않는 정적 필드의 이름을 FQN으로 작성하세요.",
  "option.USING_DEPRECATED_API.KOTLIN.title.deprecated_api_call": "금지된 메서드 호출 목록",
  "option.USING_DEPRECATED_API.KOTLIN.title.deprecated_api_class": "금지된 클래스 목록",
  "option.USING_DEPRECATED_API.KOTLIN.title.deprecated_api_field": "금지된 정적 필드 목록",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) base of fqn(\"java.security.MessageDigest.update\")",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.security.MessageDigest.getInstance\")",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.USING_HASH_WITHOUT_SALT.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.USING_HASH_WITHOUT_SALT.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" {sink_target} \"is_from\" {source_target}\nsink_target: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nsource_target: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.USING_HASH_WITHOUT_SALT.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.USING_HASH_WITHOUT_SALT.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.USING_HASH_WITHOUT_SALT.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.USING_HASH_WITHOUT_SALT.title.alarm": "검출 규칙",
  "option.USING_HASH_WITHOUT_SALT.title.exclude": "예외 규칙",
  "option.USING_HASH_WITHOUT_SALT.title.propagator": "전파 규칙",
  "option.USING_HASH_WITHOUT_SALT.title.suggestion_filter_function": "제안할 필터 함수",
  "option.USING_PREDICTABLE_SALT.KOTLIN.desc.time_method_fqn": "검출할 시간 관련 메서드의 FQN(Fully Qualified Name)을 입력합니다. 솔트 값에 해당 메서드가 포함되어 있으면 검출합니다.",
  "option.USING_PREDICTABLE_SALT.KOTLIN.title.time_method_fqn": "시간 관련 메서드",
  "option.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.desc.variable_name_for_password": "비밀번호가 포함된 변수를 입력합니다.\n예시) password",
  "option.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.desc.weak_algorithm": "취약한 암호화 알고리즘을 입력합니다.\n예시) DES",
  "option.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.desc.weak_class": "취약하다고 간주되는 암호화 클래스들",
  "option.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.desc.weak_method": "취약하다고 간주되는 암호화 메소드들",
  "option.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.title.variable_name_for_password": "비밀번호를 나타내는 변수 이름",
  "option.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.title.weak_algorithm": "취약한 암호화 알고리즘",
  "option.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.title.weak_class": "취약한 클래스들",
  "option.USING_WEAK_CRYPTOGRAPHIC_ALGORITHM.title.weak_method": "취약한 메소드들",
  "option.WEAK_CRYPTOGRAPHIC_HASH.CSHARP.desc.weak_cryptographic_hash": "보안이 취약한 해시 클래스 이름을 작성합니다.\nExample) MD5CryptoServiceProvider",
  "option.WEAK_CRYPTOGRAPHIC_HASH.CSHARP.title.weak_cryptographic_hash": "보안 취약 해시 클래스",
  "option.WEAK_ENCRYPTION.DES.CSHARP.desc.weak_encryption": "보안이 취약한 암호화 클래스 이름을 작성합니다.\n예시) DESCryptoServiceProvider",
  "option.WEAK_ENCRYPTION.DES.CSHARP.title.weak_encryption": "보안 취약 암호화 클래스",
  "option.WEAK_ENCRYPTION.HARDCODED_SALT.desc.call_param_target_in_function": "Salt가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 명) 형식으로 작성합니다.\n예시) 2:crypt",
  "option.WEAK_ENCRYPTION.HARDCODED_SALT.desc.excluded_expr": "제외할 Salt값의 문자열을 작성합니다. \n예시) safe",
  "option.WEAK_ENCRYPTION.HARDCODED_SALT.desc.target_expr": "검출할 Salt값의 문자열을 작성합니다. 값이 입력되지 않을 경우 모든 상수 Salt에 대해서 오류를 검출합니다.\n예시) salt",
  "option.WEAK_ENCRYPTION.HARDCODED_SALT.title.call_param_target_in_function": "대상 함수 및 인자",
  "option.WEAK_ENCRYPTION.HARDCODED_SALT.title.excluded_expr": "제외할 Salt값 문자열",
  "option.WEAK_ENCRYPTION.HARDCODED_SALT.title.target_expr": "검출할 Salt값 문자열",
  "option.WEAK_ENCRYPTION.HASH.OBJC.desc.weak_hash_function": "취약한 해시 함수 이름을 입력합니다.\n예시) CC_MD5",
  "option.WEAK_ENCRYPTION.HASH.OBJC.title.weak_hash_function": "취약한 해시 함수",
  "option.WEAK_ENCRYPTION.HASH.PHP.desc.ignore_hash_function_paramcall": "예외로 지정하고싶은 함수의 이름을 지정합니다\n예시) mt_rand",
  "option.WEAK_ENCRYPTION.HASH.PHP.desc.weak_hash_function": "취약한 해시 함수의 이름을 작성합니다.\n예시) md5",
  "option.WEAK_ENCRYPTION.HASH.PHP.title.ignore_hash_function_paramcall": "해시 함수 내부에서 특정 함수 호출 시 예외",
  "option.WEAK_ENCRYPTION.HASH.PHP.title.weak_hash_function": "취약한 해시 함수",
  "option.WEAK_ENCRYPTION.INSECURE_MODE_OF_OPERATION.CSHARP.desc.sym_crypto_class": "대칭 알고리즘을 입력하세요.",
  "option.WEAK_ENCRYPTION.INSECURE_MODE_OF_OPERATION.CSHARP.desc.vuln_mode": "취약한 모드를 입력하세요.",
  "option.WEAK_ENCRYPTION.INSECURE_MODE_OF_OPERATION.CSHARP.title.sym_crypto_class": "대칭 알고리즘.",
  "option.WEAK_ENCRYPTION.INSECURE_MODE_OF_OPERATION.CSHARP.title.vuln_mode": "취약한 모드.",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY.desc.call_param_target_in_function": "키가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 이름) 형식으로 작성합니다.\n예시) 1:RSA_generate_key",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY.desc.min_value": "암호화 알고리즘 사용 시 허용할 최소 키 길이를 입력합니다.\n예시) 1024",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY.title.call_param_target_in_function": "대상 함수 및 인자",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY.title.min_value": "최소 키 길이",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.CSHARP.desc.minimum_key_size": "안전한 키 사이즈의 최소값을 입력합니다.\n예시) 1024",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.CSHARP.desc.weak_encryption": "보안이 취약한 암호화 클래스 이름을 작성합니다.\n예시) RSACryptoServiceProvider",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.CSHARP.title.minimum_key_size": "최소 키 사이즈",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.CSHARP.title.weak_encryption": "보안 취약 암호화 클래스",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.JS.desc.namedCurve": "option 파라미터에 namedCurve가 사용될 때 검출할 값",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.JS.title.namedCurve": "namedCurve 옵션",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.KOTLIN.desc.sufficient_key_size": "RSA  알고리즘에서 허용하는 키의 최소 길이를 작성합니다.",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.KOTLIN.title.sufficient_key_size": "RSA 알고리즘의 허용 키 길이 (Signature/Cipher)",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.OBJC.desc.min_key_size": "암호화에 필요한 최소 키 길이를 입력합니다.\n예시) 128",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.OBJC.title.min_key_size": "최소 필요 키 길이",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.PHP.desc.EC": "EC 알고리즘의 최소 허용 키 길이를 작성합니다.\n예시) 256",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.PHP.desc.RSA": "RSA 알고리즘의 최소 허용 키 길이를 작성합니다.\n예시) 2048",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.PHP.title.EC": "EC 알고리즘의 허용 키 길이",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.PHP.title.RSA": "RSA 알고리즘의 허용 키 길이",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.SWIFT.desc.min_key_size": "암호화에 필요한 최소 키 길이를 입력합니다.\n예시) 128",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.SWIFT.title.min_key_size": "최소 필요 키 길이",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.VBS.desc.minimum_key_size": "안전한 키 사이즈의 최소값을 입력합니다. \n예시) 1024",
  "option.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.VBS.title.minimum_key_size": "최소 키 사이즈",
  "option.WEAK_ENCRYPTION.PASSWORD.desc.call_param_target_in_function": "키가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 이름) 형식으로 작성합니다.\n예시) 1:RSA_generate_key",
  "option.WEAK_ENCRYPTION.PASSWORD.desc.need_function": "권장 암호화 모듈을 설정합니다. \n방법) [param index]:[function name]  \nparam index : -1  - assign      \n예시) passwd",
  "option.WEAK_ENCRYPTION.PASSWORD.title.call_param_target_in_function": "대상 함수 및 인자",
  "option.WEAK_ENCRYPTION.PASSWORD.title.need_function": "권장 암호화 모듈",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.OBJC.desc.risky_algorithm": "취약한 암호화 알고리즘 이름을 입력합니다.\n예시) kCCAlgorithmDES",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.OBJC.title.risky_algorithm": "취약한 암호화 알고리즘",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.PHP.desc.weak_algorithm": "취약한 암호화 알고리즘의 이름을 작성합니다.\n예시) DES",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.PHP.title.weak_algorithm": "취약한 암호화 알고리즘",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.desc.crypt_string": "암호화를 나타내는 문자열을 입력합니다.\n예시) crypt.*",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.desc.decrypt_string": "복호화를 나타내는 문자열을 입력합니다.\n예시) decrypt.*",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.desc.risky_algorithm": "위험한 암호화 알고리즘 함수 이름을 작성합니다.\n예시) EVP_des_ecb",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.desc.risky_algorithm_id": "취약한 암호화 알고리즘 ID를 입력합니다.\n예시) DES",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.desc.safe_algorithm": "안전한 암호화 알고리즘 함수 이름을 작성합니다.\n예시) EVP_aes_128_cbc",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.title.crypt_string": "암호화 의미 문자열",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.title.decrypt_string": "복호화 의미 문자열",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.title.risky_algorithm": "위험한 암호화 알고리즘",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.title.risky_algorithm_id": "취약한 암호화 알고리즘 ID",
  "option.WEAK_ENCRYPTION.RISKY_ALGORITHM.title.safe_algorithm": "안전한 암호화 알고리즘",
  "option.WEAK_ENCRYPTION.RSA_PADDING.desc.call_param_should_not_be_name": "함수 호출 시 사용하지 말아야 할 매크로를 설정합니다.",
  "option.WEAK_ENCRYPTION.RSA_PADDING.desc.call_param_target_in_function": "키가 사용되는 대상 함수 를 작성합니다.",
  "option.WEAK_ENCRYPTION.RSA_PADDING.title.call_param_should_not_be_name": "사용하지 말아야 할 매크로",
  "option.WEAK_ENCRYPTION.RSA_PADDING.title.call_param_target_in_function": "대상 함수",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.desc.string_name_encrypt_creator": "암호화 생성 함수의 이름을 작성합니다.",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.desc.string_name_hash_creator": "해시 생성 함수의 이름을 작성합니다.",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.desc.string_name_mac_creator": "MAC 생성 함수의 이름을 작성합니다.",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.desc.string_name_sign_creator": "서명 생성 함수의 이름을 작성합니다.",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.desc.weak_encrypt_algorithm": "취약한 암호화 알고리즘의 이름을 작성합니다.",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.desc.weak_hash_algorithm": "취약한 해시 알고리즘의 이름을 작성합니다.",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.desc.weak_mac_algorithm": "취약한 MAC 알고리즘의 이름을 작성합니다.",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.desc.weak_sign_algorithm": "취약한 서명 알고리즘의 이름을 작성합니다.",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.title.string_name_encrypt_creator": "암호화 생성 함수",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.title.string_name_hash_creator": "해시 생성 함수",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.title.string_name_mac_creator": "MAC 생성 함수",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.title.string_name_sign_creator": "서명 생성 함수",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.title.weak_encrypt_algorithm": "취약한 암호화 알고리즘",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.title.weak_hash_algorithm": "취약한 해시 알고리즘",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.title.weak_mac_algorithm": "취약한 MAC 알고리즘",
  "option.WEAK_ENCRYPTION_ALGORITHM.KOTLIN.title.weak_sign_algorithm": "취약한 서명 알고리즘",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.desc.encrypt_creator_prefix": "암호화 알고리즘 객체를 생성하는 라이브러리의 이름 앞부분을 입력합니다. \n예시) Crypto.Cipher",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.desc.hash_creator_prefix": "해시 알고리즘 객체를 생성하는 라이브러리의 이름 앞부분을 입력합니다. \n예시) Crypto.Hash",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.desc.string_name_hash_creator": "해시 알고리즘의 이름을 문자열 인자로 전달하여 해시 객체를 생성하는 함수와 그 인자를 작성합니다.\n예시) hashlib.new:name:1",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.desc.weak_encrypt_algorithm": "취약한 암호화 알고리즘의 이름을 작성합니다.\n예시) DES",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.desc.weak_hash_algorithm": "취약한 해시 알고리즘의 이름을 작성합니다.\n예시) MD5",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.title.encrypt_creator_prefix": "암호화 생성 라이브러리",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.title.hash_creator_prefix": "해시 생성 라이브러리",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.title.string_name_hash_creator": "이름으로 해시 알고리즘을 고르는 함수",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.title.weak_encrypt_algorithm": "취약한 암호화 알고리즘",
  "option.WEAK_ENCRYPTION_ALGORITHM.PYTHON.title.weak_hash_algorithm": "취약한 해시 알고리즘",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.PYTHON.desc.sufficient_key_size": "RSA  알고리즘에서 허용하는 키의 최소 길이를 작성합니다.",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.PYTHON.title.sufficient_key_size": "RSA 알고리즘의 허용 키 길이 (Signature/Cipher)",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.AES": "key size for AES  알고리즘의 허용 키 길이",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.EC": "key size for Elliptic Curve  알고리즘의 허용 키 길이",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.RSA": "key size for RSA  알고리즘의 허용 키 길이 (Signature/Cipher)",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.SEED": "Block Cipher algorithm SEED 의 허용 키 길이",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.SHA-1": "Message Digest algorithm SHA-1 의 허용 키 길이",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.AES": "AES 알고리즘의 허용 키 길이",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.EC": "Elliptic Curve 알고리즘의 허용 키 길이",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.RSA": "RSA 알고리즘의 허용 키 길이 (Signature/Cipher)",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.SEED": "Block Cipher algorithm SEED 의 허용 키 길이",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.SHA-1": "Message Digest algorithm SHA-1 의 허용 키 길이",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.alarm": "검출 규칙",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.exclude": "예외 규칙",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.propagator": "전파 규칙",
  "option.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.title.suggestion_filter_function": "제안할 필터 함수",
  "option.WEAK_HASH_ALGORITHM.KOTLIN.desc.string_name_hash_creator": "해쉬 생성 함수의 이름과 해시 알고리즘 이름을 입력받는 매개변수를 작성합니다.",
  "option.WEAK_HASH_ALGORITHM.KOTLIN.desc.weak_hash_algorithm": "취약한 해시 알고리즘의 이름을 작성합니다. 해당 해시 알고리즘이 해시 생성 함수 입력 옵션의 지정된 매개변수에 포함된 경우 이를 검출합니다.",
  "option.WEAK_HASH_ALGORITHM.KOTLIN.desc.weak_hash_function": "취약한 해시 함수의 FQN을 작성합니다. 작성된 해시 함수가 호출되면 검출합니다.",
  "option.WEAK_HASH_ALGORITHM.KOTLIN.title.string_name_hash_creator": "해시 생성 함수",
  "option.WEAK_HASH_ALGORITHM.KOTLIN.title.weak_hash_algorithm": "취약한 해시 알고리즘",
  "option.WEAK_HASH_ALGORITHM.KOTLIN.title.weak_hash_function": "취약한 해시 함수 FQN",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) base of name(\"matches\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"registDAO.regist\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) strlen$param(1)",
  "option.WEAK_PASSWORD_REQUIREMENTS.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.WEAK_PASSWORD_REQUIREMENTS.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) mysql_query$param(*)",
  "option.WEAK_PASSWORD_REQUIREMENTS.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"$_GET[\\\\\"password\\\\\"]\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(1) of name(\"strlen\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"mysql_query\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"$_GET[\\\"password\\\"]\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) strlen$param(1)",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) mysql_query$param(*)",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"$_GET[\\\\\"password\\\\\"]\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) strlen$param(1)",
  "option.WEAK_PASSWORD_REQUIREMENTS.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.WEAK_PASSWORD_REQUIREMENTS.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) mysql_query$param(*)",
  "option.WEAK_PASSWORD_REQUIREMENTS.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"$_GET[\\\\\"password\\\\\"]\")",
  "option.WEAK_PASSWORD_REQUIREMENTS.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.open$param(*)",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.WEAK_PASSWORD_REQUIREMENTS.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.WEAK_PASSWORD_REQUIREMENTS.desc.connect_function": "취약한 패스워드를 검사하기위해 Connection 함수 명 및 패스워드 파라메터 위치를 작성합니다.  (함수이름|패스워드파라메터위치).",
  "option.WEAK_PASSWORD_REQUIREMENTS.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.WEAK_PASSWORD_REQUIREMENTS.desc.filter_method": "비밀번호 복잡도를 검증하는 메소드 이름을 입력합니다.\n예시) matches",
  "option.WEAK_PASSWORD_REQUIREMENTS.desc.password_expr": "비밀번호 획득 시 사용할 문자열을 입력합니다.\n예시) password",
  "option.WEAK_PASSWORD_REQUIREMENTS.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.WEAK_PASSWORD_REQUIREMENTS.desc.request_method": "비밀번호를 획득하는 메소드 이름을 입력합니다.\n예시) javax.servlet.http.HttpServletRequest.getParameter",
  "option.WEAK_PASSWORD_REQUIREMENTS.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.WEAK_PASSWORD_REQUIREMENTS.title.alarm": "검출 규칙",
  "option.WEAK_PASSWORD_REQUIREMENTS.title.connect_function": "SQL Connection 함수 이름",
  "option.WEAK_PASSWORD_REQUIREMENTS.title.exclude": "예외 규칙",
  "option.WEAK_PASSWORD_REQUIREMENTS.title.filter_method": "비밀번호 검증 메소드",
  "option.WEAK_PASSWORD_REQUIREMENTS.title.password_expr": "비밀번호 문자열",
  "option.WEAK_PASSWORD_REQUIREMENTS.title.propagator": "전파 규칙",
  "option.WEAK_PASSWORD_REQUIREMENTS.title.request_method": "비밀번호 획득 메소드",
  "option.WEAK_PASSWORD_REQUIREMENTS.title.suggestion_filter_function": "제안할 필터 함수",
  "option.WEAK_SERVER_CERTIFICATES.JS.desc.check_function_params": "확인할 함수의 이름과 파라매터의 위치를 작성합니다.",
  "option.WEAK_SERVER_CERTIFICATES.JS.title.check_function_params": "함수 이름과 파라매터",
  "option.WEAK_SIGNATURE.INSUFFICIENT_KEY_SIZE.CSHARP.desc.minimum_key_size": "최소 키 길이를 입력하세요.",
  "option.WEAK_SIGNATURE.INSUFFICIENT_KEY_SIZE.CSHARP.desc.weak_encryption": "대상 암호 알고리즘을 입력하세요.",
  "option.WEAK_SIGNATURE.INSUFFICIENT_KEY_SIZE.CSHARP.title.minimum_key_size": "최소 키 길이",
  "option.WEAK_SIGNATURE.INSUFFICIENT_KEY_SIZE.CSHARP.title.weak_encryption": "대상 암호 알고리즘.",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.CSHARP.desc._net_version": ".Net Framework 버전을 작성합니다.",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.CSHARP.title._net_version": ".Net 버전",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"transform\")",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"javax.xml.transform.TransformerFactory.newInstance\")",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.WEAK_XML_TRANSFORMERS_SECURITY.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.XHR_INJECTION.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.XHR_INJECTION.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.XHR_INJECTION.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.XHR_INJECTION.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(2) of fqn(\"XMLHttpRequest.open\")",
  "option.XHR_INJECTION.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.XHR_INJECTION.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.XHR_INJECTION.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XHR_INJECTION.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.XHR_INJECTION.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.XHR_INJECTION.JS.title.taint_source": "외부 정보 입력 함수",
  "option.XML_EXTERNAL_ENTITY_ATTACKS.desc.exclude_method": "분석에서 제외할 메소드 이름을 입력합니다.\n예시).*Print",
  "option.XML_EXTERNAL_ENTITY_ATTACKS.desc.exclude_path": "분석에서 제외할 경로를 입력합니다.\n예시).*\\\\test\\\\.*",
  "option.XML_EXTERNAL_ENTITY_ATTACKS.title.exclude_method": "분석 제외 메소드",
  "option.XML_EXTERNAL_ENTITY_ATTACKS.title.exclude_path": "분석 제외 경로",
  "option.XPATH_INJECTION.CPP.desc.clear_call": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.\n예시) urlchecker",
  "option.XPATH_INJECTION.CPP.desc.sink_call": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "option.XPATH_INJECTION.CPP.desc.source_call": "민감한 정보를 입력 받는 함수 이름을 작성합니다.\n예시) getenv",
  "option.XPATH_INJECTION.CPP.title.clear_call": "민감한 정보 검사 함수",
  "option.XPATH_INJECTION.CPP.title.sink_call": "외부 정보 사용 함수",
  "option.XPATH_INJECTION.CPP.title.source_call": "민감한 정보 입력 함수",
  "option.XPATH_INJECTION.KOTLIN.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.XPATH_INJECTION.KOTLIN.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.XPATH_INJECTION.KOTLIN.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.XPATH_INJECTION.KOTLIN.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of fqn(\"javax.xml.xpath.XPath.compile\")",
  "option.XPATH_INJECTION.KOTLIN.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.XPATH_INJECTION.KOTLIN.title.taint_filter": "외부 정보 필터 함수",
  "option.XPATH_INJECTION.KOTLIN.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XPATH_INJECTION.KOTLIN.title.taint_propagator": "외부 정보 전파 함수",
  "option.XPATH_INJECTION.KOTLIN.title.taint_sink": "외부 정보 사용 함수",
  "option.XPATH_INJECTION.KOTLIN.title.taint_source": "외부 정보 입력 함수",
  "option.XPATH_INJECTION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XPATH_INJECTION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.XPATH_INJECTION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) XQueryProcessor\\\\.execute(0)$base",
  "option.XPATH_INJECTION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.XPATH_INJECTION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.XPATH_INJECTION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.XPATH_INJECTION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.XPATH_INJECTION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.XPATH_INJECTION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.XPATH_INJECTION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.XPATH_INJECTION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.XPATH_INJECTION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"xpath\")",
  "option.XPATH_INJECTION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.XPATH_INJECTION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.XPATH_INJECTION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XPATH_INJECTION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.XPATH_INJECTION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.XPATH_INJECTION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.XPATH_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XPATH_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.XPATH_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.XPATH_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) xpath$param(1)",
  "option.XPATH_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.XPATH_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.XPATH_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XPATH_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.XPATH_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.XPATH_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.XPATH_INJECTION.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XPATH_INJECTION.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.XPATH_INJECTION.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) XQueryProcessor\\\\.execute(0)$base",
  "option.XPATH_INJECTION.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.XPATH_INJECTION.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.XPATH_INJECTION.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.XPATH_INJECTION.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.XPATH_INJECTION.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.XPATH_INJECTION.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XPATH_INJECTION.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.XPATH_INJECTION.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.XPATH_INJECTION.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.open$param(*)",
  "option.XPATH_INJECTION.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.XPATH_INJECTION.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.XPATH_INJECTION.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XPATH_INJECTION.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.XPATH_INJECTION.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.XPATH_INJECTION.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.XPATH_INJECTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.XPATH_INJECTION.desc.exclude": "filter가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.XPATH_INJECTION.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.XPATH_INJECTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.XPATH_INJECTION.title.alarm": "검출 규칙",
  "option.XPATH_INJECTION.title.exclude": "예외 규칙",
  "option.XPATH_INJECTION.title.propagator": "전파 규칙",
  "option.XPATH_INJECTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.XQUERY_INJECTION.CPP.desc.clear_call": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.\n예시) urlchecker",
  "option.XQUERY_INJECTION.CPP.desc.sink_call": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "option.XQUERY_INJECTION.CPP.desc.source_call": "민감한 정보를 입력 받는 함수 이름을 작성합니다.\n예시) getenv",
  "option.XQUERY_INJECTION.CPP.title.clear_call": "민감한 정보 검사 함수",
  "option.XQUERY_INJECTION.CPP.title.sink_call": "외부 정보 사용 함수",
  "option.XQUERY_INJECTION.CPP.title.source_call": "민감한 정보 입력 함수",
  "option.XQUERY_INJECTION.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XQUERY_INJECTION.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\\\.$operand(*)->return",
  "option.XQUERY_INJECTION.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) XQueryProcessor\\\\.execute(0)$base",
  "option.XQUERY_INJECTION.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\\\$_GET$variable",
  "option.XQUERY_INJECTION.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.XQUERY_INJECTION.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.XQUERY_INJECTION.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.XQUERY_INJECTION.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.XQUERY_INJECTION.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.XQUERY_INJECTION.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.XQUERY_INJECTION.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.XQUERY_INJECTION.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of fqn(\"XQueryProcessor.execute(0)\")",
  "option.XQUERY_INJECTION.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.XQUERY_INJECTION.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.XQUERY_INJECTION.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XQUERY_INJECTION.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.XQUERY_INJECTION.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.XQUERY_INJECTION.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.XQUERY_INJECTION.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"filter\")",
  "option.XQUERY_INJECTION.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.XQUERY_INJECTION.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.XQUERY_INJECTION.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"compileQuery\")",
  "option.XQUERY_INJECTION.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "option.XQUERY_INJECTION.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.XQUERY_INJECTION.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XQUERY_INJECTION.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.XQUERY_INJECTION.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.XQUERY_INJECTION.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.XQUERY_INJECTION.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XQUERY_INJECTION.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.XQUERY_INJECTION.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.XQUERY_INJECTION.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.open$param(*)",
  "option.XQUERY_INJECTION.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.XQUERY_INJECTION.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.XQUERY_INJECTION.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XQUERY_INJECTION.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.XQUERY_INJECTION.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.XQUERY_INJECTION.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.XQUERY_INJECTION.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.XQUERY_INJECTION.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.XQUERY_INJECTION.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.XQUERY_INJECTION.title.alarm": "검출 규칙",
  "option.XQUERY_INJECTION.title.exclude": "예외 규칙",
  "option.XQUERY_INJECTION.title.suggestion_filter_function": "제안할 필터 함수",
  "option.XSS.DOM.JS.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.XSS.DOM.JS.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.XSS.DOM.JS.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.XSS.DOM.JS.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.XSS.DOM.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"encodeURIComponent\")",
  "option.XSS.DOM.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.XSS.DOM.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.XSS.DOM.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"eval\")",
  "option.XSS.DOM.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.XSS.DOM.JS.title.alarm": "검출 규칙",
  "option.XSS.DOM.JS.title.exclude": "예외 규칙",
  "option.XSS.DOM.JS.title.propagator": "전파 규칙",
  "option.XSS.DOM.JS.title.suggestion_filter_function": "제안할 필터 함수",
  "option.XSS.DOM.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS.DOM.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS.DOM.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS.DOM.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS.DOM.JS.title.taint_source": "외부 정보 입력 함수",
  "option.XSS.LOCAL_STORAGE.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"encodeURIComponent\")",
  "option.XSS.LOCAL_STORAGE.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.XSS.LOCAL_STORAGE.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.XSS.LOCAL_STORAGE.JS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of fqn(\"eval\")",
  "option.XSS.LOCAL_STORAGE.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"localStorage.getItem\")",
  "option.XSS.LOCAL_STORAGE.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS.LOCAL_STORAGE.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS.LOCAL_STORAGE.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS.LOCAL_STORAGE.JS.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS.LOCAL_STORAGE.JS.title.taint_source": "외부 정보 입력 함수",
  "option.XSS.OBJC.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XSS.OBJC.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.XSS.OBJC.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.XSS.OBJC.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) __sparrow_OBJC_echo__$param(*)",
  "option.XSS.OBJC.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.XSS.OBJC.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS.OBJC.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS.OBJC.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS.OBJC.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS.OBJC.title.taint_source": "외부 정보 입력 함수",
  "option.XSS.PHP.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.XSS.PHP.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.XSS.PHP.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\".\") to return",
  "option.XSS.PHP.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(*) of name(\"__sparrow_php_echo__\")",
  "option.XSS.PHP.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of name(\"$_GET\")",
  "option.XSS.PHP.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS.PHP.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS.PHP.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS.PHP.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS.PHP.title.taint_source": "외부 정보 입력 함수",
  "option.XSS.PYTHON.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XSS.PYTHON.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.XSS.PYTHON.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.XSS.PYTHON.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) __sparrow_php_echo__$param(*)",
  "option.XSS.PYTHON.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.XSS.PYTHON.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS.PYTHON.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS.PYTHON.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS.PYTHON.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS.PYTHON.title.taint_source": "외부 정보 입력 함수",
  "option.XSS.SWIFT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XSS.SWIFT.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.XSS.SWIFT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) \\.$operand(*)->return",
  "option.XSS.SWIFT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) __sparrow_OBJC_echo__$param(*)",
  "option.XSS.SWIFT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) \\$_GET$variable",
  "option.XSS.SWIFT.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS.SWIFT.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS.SWIFT.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS.SWIFT.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS.SWIFT.title.taint_source": "외부 정보 입력 함수",
  "option.XSS.VBNET.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XSS.VBNET.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.XSS.VBNET.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.XSS.VBNET.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) .*\\.open$param(*)",
  "option.XSS.VBNET.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.XSS.VBNET.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS.VBNET.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS.VBNET.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS.VBNET.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS.VBNET.title.taint_source": "외부 정보 입력 함수",
  "option.XSS.VBS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) filter$param(1)",
  "option.XSS.VBS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "option.XSS.VBS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) &$operand(*)->return",
  "option.XSS.VBS.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) response\\.write$param(*)",
  "option.XSS.VBS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) request\\.form$return",
  "option.XSS.VBS.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS.VBS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS.VBS.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS.VBS.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS.VBS.title.taint_source": "외부 정보 입력 함수",
  "option.XSS.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.XSS.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" filter\nfilter: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.XSS.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.XSS.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.XSS.title.alarm": "검출 규칙",
  "option.XSS.title.exclude": "예외 규칙",
  "option.XSS.title.propagator": "전파 규칙",
  "option.XSS.title.suggestion_filter_function": "제안할 필터 함수",
  "option.XSS_ATTRIBUTE.desc.alarm": "Sink 와 Source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.XSS_ATTRIBUTE.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.XSS_ATTRIBUTE.desc.propagator": "propagator가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.XSS_ATTRIBUTE.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.XSS_ATTRIBUTE.title.alarm": "검출 규칙",
  "option.XSS_ATTRIBUTE.title.exclude": "예외 규칙",
  "option.XSS_ATTRIBUTE.title.propagator": "전파 규칙",
  "option.XSS_ATTRIBUTE.title.suggestion_filter_function": "제안할 필터 함수",
  "option.XSS_ERROR_MESSAGE.desc.alarm": "sink 와 source 쌍이 아래와 같다면, 위험합니다. \"if\" sink \"is_from\" source\nSink: 오염값에 대한 표현식입니다. (메소드 정의를 포함)\nSource: 오염값을 유발하는 표현식입니다. (메소드 정의를 포함)",
  "option.XSS_ERROR_MESSAGE.desc.exclude": "filter 가 아래와 같이 정의되면 안전하다고 간주합니다. \"if\" {filter_target}\nfilter_target: 오염값에 대한 필터 표현식입니다. (메소드 정의를 포함)",
  "option.XSS_ERROR_MESSAGE.desc.propagator": "propagator 가 다음과 같이 정의되면 오염된 값을 전파합니다. {propagator_target}\npropagator_target: 오염된 값에 대한 전파 표현식입니다. (메소드 정의를 포함)",
  "option.XSS_ERROR_MESSAGE.desc.suggestion_filter_function": "수정 예시에서 보여 줄 필터 함수를 입력합니다.",
  "option.XSS_ERROR_MESSAGE.title.alarm": "검출 규칙",
  "option.XSS_ERROR_MESSAGE.title.exclude": "예외 규칙",
  "option.XSS_ERROR_MESSAGE.title.propagator": "전파 규칙",
  "option.XSS_ERROR_MESSAGE.title.suggestion_filter_function": "제안할 필터 함수",
  "option.XSS_ETC.GO.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.XSS_ETC.GO.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.XSS_ETC.GO.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.XSS_ETC.GO.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"openConnection\")",
  "option.XSS_ETC.GO.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.XSS_ETC.GO.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS_ETC.GO.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS_ETC.GO.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS_ETC.GO.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS_ETC.GO.title.taint_source": "외부 정보 입력 함수",
  "option.XSS_FROM_URL.REACT.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) return of name(\"replace\")",
  "option.XSS_FROM_URL.REACT.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.XSS_FROM_URL.REACT.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) param(1) of name(\"eval\")",
  "option.XSS_FROM_URL.REACT.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of name(\"body\")",
  "option.XSS_FROM_URL.REACT.desc.weak_element": "외부 정보 사용 html 속성을 작성합니다.",
  "option.XSS_FROM_URL.REACT.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS_FROM_URL.REACT.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS_FROM_URL.REACT.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS_FROM_URL.REACT.title.taint_source": "외부 정보 입력 함수",
  "option.XSS_FROM_URL.REACT.title.weak_element": "외부 정보 사용 html 속성",
  "option.XSS_HTML.GO.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.XSS_HTML.GO.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.XSS_HTML.GO.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.XSS_HTML.GO.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"openConnection\")",
  "option.XSS_HTML.GO.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.XSS_HTML.GO.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS_HTML.GO.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS_HTML.GO.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS_HTML.GO.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS_HTML.GO.title.taint_source": "외부 정보 입력 함수",
  "option.XSS_JS.GO.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.XSS_JS.GO.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.XSS_JS.GO.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.XSS_JS.GO.desc.taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"openConnection\")",
  "option.XSS_JS.GO.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.XSS_JS.GO.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS_JS.GO.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS_JS.GO.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS_JS.GO.title.taint_sink": "외부 정보 사용 함수",
  "option.XSS_JS.GO.title.taint_source": "외부 정보 입력 함수",
  "option.XSS_URL.GO.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) operand(*) of \"in\"",
  "option.XSS_URL.GO.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) sparrow.my.filter.utils.is_safe()",
  "option.XSS_URL.GO.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "option.XSS_URL.GO.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "option.XSS_URL.GO.desc.url_taint_sink": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.\n예시) base of name(\"openConnection\")",
  "option.XSS_URL.GO.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS_URL.GO.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS_URL.GO.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS_URL.GO.title.taint_source": "외부 정보 입력 함수",
  "option.XSS_URL.GO.title.url_taint_sink": "외부 정보 사용 함수",
  "option.XSS_VANILLA_JS.JS.desc.taint_filter": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "option.XSS_VANILLA_JS.JS.desc.taint_filter_function_fqn": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.\n예시) com.sparrow.utils.filter(java.lang.String)",
  "option.XSS_VANILLA_JS.JS.desc.taint_propagator": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of name(\"+\") to return",
  "option.XSS_VANILLA_JS.JS.desc.taint_sink": "외부 정보가 사용되는 new 표현식의 이름을 작성합니다.\n예시) new webSocket$param(1)",
  "option.XSS_VANILLA_JS.JS.desc.taint_source": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"document.URL\")",
  "option.XSS_VANILLA_JS.JS.title.taint_filter": "외부 정보 필터 함수",
  "option.XSS_VANILLA_JS.JS.title.taint_filter_function_fqn": "사용자 정의 외부 정보 필터 함수",
  "option.XSS_VANILLA_JS.JS.title.taint_propagator": "외부 정보 전파 함수",
  "option.XSS_VANILLA_JS.JS.title.taint_sink": "외부 정보 사용 생성자",
  "option.XSS_VANILLA_JS.JS.title.taint_source": "외부 정보 입력 함수",
  "option.sast.analysisExtensions.description": "정적 분석 대상 경로에 포함된 분석 대상 파일의 확장자입니다. 확장자를 지정함으로써 소스코드에서 분석할 언어를 지정하게 됩니다.",
  "option.sast.analysisExtensions.name": "분석 대상 확장자",
  "option.sast.analysisIncremental.description": "이 옵션을 `변경된 파일만`으로 설정하면 분석 대상 중 **프로젝트에 새로 등록되거나 내용이 변경된 파일**만 분석합니다. `변경 및 연관된 파일`로 설정하면 분석 대상 중 **프로젝트에 새로 등록되거나 내용이 변경된 파일 및 연관된 파일**만 분석합니다. `모든 파일`로 설정하면 모든 분석 대상에 대해 분석을 수행합니다. 이 옵션은 **수시 분석**에만 적용됩니다.",
  "option.sast.analysisIncremental.name": "변경된 파일 분석",
  "option.sast.analysisPath.description": "취약점 및 품질 문제를 포함하는 이슈를 분석할 대상인 소스코드의 경로입니다. 분석을 시작하기 전에 여러 개의 경로를 입력할 수 있습니다.",
  "option.sast.analysisPath.name": "분석 대상 경로",
  "option.sast.analysisPath.placeholder": "분석 대상 경로를 입력하세요. 여러 개의 경로를 입력할 수 있으며 엔터 혹은 세미콜론(;)으로 구분합니다.",
  "option.sast.assetsRenewal.description": "이 옵션을 `예`로 설정하면 **식별되지 않은 자산은 분석 이후 프로젝트에서 제거**됩니다. 이 옵션은 **수시 분석**에만 적용됩니다.",
  "option.sast.assetsRenewal.name": "포함되지 않은 자산 제거",
  "option.sast.buildCommand.description": "C/C++ 언어를 분석하는 경우 사용할 빌드 명령어입니다.",
  "option.sast.buildCommand.name": "빌드 명령어",
  "option.sast.buildCommand.placeholder": "빌드 명령어를 입력하세요.",
  "option.sast.buildConfiguration.description": "C/C++ 언어를 분석하기 위해 C/C++ 프리셋 옵션에 Visual Studio를 입력한 경우 Visual Studio의 프로젝트 파일에 대한 빌드 구성 정보를 지정해야 합니다.",
  "option.sast.buildConfiguration.name": "빌드 구성",
  "option.sast.buildConfiguration.placeholder": "빌드 구성을 입력하세요.",
  "option.sast.buildPath.description": "C/C++ 언어를 분석하는 경우 사용할 빌드를 수행할 경로입니다.",
  "option.sast.buildPath.name": "빌드 경로",
  "option.sast.buildPath.placeholder": "빌드 경로를 입력하세요.",
  "option.sast.compilerName.description": "정밀 분석을 수행하는 경우 사용할 컴파일러 이름입니다. 이 옵션을 입력하지 않으면 사용자가 입력한 C/C++ 프리셋 옵션에 해당하는 컴파일러 이름을 사용하게 됩니다.",
  "option.sast.compilerName.name": "컴파일러 이름",
  "option.sast.compilerName.placeholder": "컴파일러 이름을 입력하세요.",
  "option.sast.compilerVersion.description": "정밀 분석을 수행하는 경우 사용할 컴파일러 버전입니다. 이 옵션을 입력하지 않으면 사용자가 입력한 C/C++ 프리셋 옵션에 해당하는 컴파일러 버전을 사용하게 됩니다.",
  "option.sast.compilerVersion.name": "컴파일러 버전",
  "option.sast.compilerVersion.placeholder": "컴파일러 버전을 입력하세요.",
  "option.sast.excludedFunc.description": "이 옵션의 기본값은 클라이언트 설정에 입력한 분석 제외 함수입니다. ",
  "option.sast.excludedFunc.name": "분석 제외 함수",
  "option.sast.excludedFunc.placeholder": "분석 제외 함수를 입력하세요.",
  "option.sast.excludedPath.description": "이 옵션의 기본값은 클라이언트 설정에 입력한 분석 제외 경로입니다.",
  "option.sast.excludedPath.name": "분석 제외 경로",
  "option.sast.excludedPath.placeholder": "분석 제외 경로를 입력하세요.",
  "option.sast.idePath.description": "C/C++ 언어를 분석하기 위해 C/C++ 프리셋 옵션에 IDE 도구를 입력한 경우 해당 도구의 설치 경로를 의미합니다. MSVC 옵션의 경우 `devenv.com` 경로를 입력해야 합니다.",
  "option.sast.idePath.name": "IDE 경로",
  "option.sast.idePath.placeholder": "경로를 입력하세요.",
  "option.sast.ignoreBuildError.description": "이 옵션을 `예`로 설정하면 **빌드가 실패하더라도 무시하고 분석을 계속 진행**합니다. 따라서 빌드 실패로 인해 분석이 실패하지 않게 됩니다. 이 옵션을 `아니요`로 설정하면 **빌드가 실패하는 경우 자동으로 분석도 실패**하게 됩니다. 따라서 분석을 수행하지 못할 가능성이 있지만 빌드가 정상적으로 이루어졌는지를 확인할 수 있습니다.",
  "option.sast.ignoreBuildError.name": "빌드 실패 무시",
  "option.sast.preset.description": "C/C++ 언어를 분석하는 경우 사용할 프리셋입니다. C/C++ 언어의 컴파일러 혹은 IDE 도구를 프리셋으로 선택할 수 있고 기본값은 `GNU C/C++ 컴파일러`입니다.",
  "option.sast.preset.name": "C/C++ 프리셋",
  "option.sast.preset.placeholder": "프리셋을 지정하세요.",
  "option.sast.simpleAnalysis.description": "간편 분석은 C/C++ 언어에 대해서 분석을 수행할 때 빌드 없이 편리하게 분석합니다. 단, 분석 결과의 정확도가 낮아질 수 있습니다.",
  "option.sast.simpleAnalysis.name": "간편 분석",
  "opus1.ALTERNATING_INPUT_OUTPUT.sink1": "파일 입출력을 번갈아 실행할 때 문제가 없게 하기 위해서는 사이에 파일을 flush 하거나 파일의 위치를 정해주는 함수 호출을 사용해야 합니다.",
  "opus1.ALTERNATING_INPUT_OUTPUT.src1": "파일 입출력을 실행했습니다.",
  "opus1.CAST_ALTERS_VALUE.sink1": "값 {0}를 type {1} {2}로 캐스팅합니다. 잘못된 캐스팅으로 값이 변하게 됩니다.",
  "opus1.CHECK_ALIGNMENT_OF_MEMORY.sink1": "함수 realloc()은 정렬된 메모리 블락을 할당하지 않습니다.",
  "opus1.CHECK_ALIGNMENT_OF_MEMORY.src1": "정렬된 메모리 블락을 할당합니다.",
  "opus1.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.sink1": "민감한 정보 {0}가 안전성 검사 없이 외부로 전송되고 있습니다.",
  "opus1.CLEAR_TEXT_TRANSMISSION_OF_SENSITIVE_INFORMATION.src1": "변수 {0}는 민감한 정보를 담고 있습니다.",
  "opus1.COMMON.appear": "오류 관련 구문이 등장합니다.",
  "opus1.COMMON.disappear": "오류 관련 구문이 사라집니다.",
  "opus1.CONFIGURATION_SETTING.sink1": "시스템 설정 {0}을 외부에서 결정할 수 있습니다.",
  "opus1.CONFIGURATION_SETTING.src1": "호스트 ID {0}를 외부 환경의 값으로 결정합니다.",
  "opus1.DIV_BY_ZERO.MISSING_CHECK.sink1": "값을 0과 비교하지 않은 채 나누는데 사용합니다.",
  "opus1.DIV_BY_ZERO.MISSING_CHECK.src1": "값을 0과 비교합니다.",
  "opus1.DIV_BY_ZERO.MISSING_CHECK.src2": "외부로부터 입력된 값입니다.",
  "opus1.DIV_BY_ZERO.sink1": "0으로 나눕니다.",
  "opus1.DIV_BY_ZERO.src1": "0을 할당합니다.",
  "opus1.DOUBLE_CLOSE.CURSOR.sink1": "이미 닫은 커서를 다시 닫습니다.",
  "opus1.DOUBLE_CLOSE.CURSOR.src1": "커서를 닫습니다.",
  "opus1.DOUBLE_CLOSE.CURSOR_ARRAY.sink1": "이미 닫은 커서 배열을 다시 닫습니다.",
  "opus1.DOUBLE_CLOSE.CURSOR_ARRAY.src1": "커서 배열을 닫습니다.",
  "opus1.DOUBLE_CLOSE.RECORD.sink1": "이미 파괴한 동적 레코드를 다시 파기합니다.",
  "opus1.DOUBLE_CLOSE.RECORD.src1": "동적 레코드를 파기합니다.",
  "opus1.DOUBLE_CLOSE.sink1": "이미 닫은 자원을 다시 닫으려고 합니다.",
  "opus1.DOUBLE_CLOSE.src1": "자원을 닫습니다.",
  "opus1.DOUBLE_FREE.sink1": "해제한 포인터를 다시 해제하려고 합니다.",
  "opus1.DOUBLE_FREE.src1": "포인터를 해제합니다.",
  "opus1.DOUBLE_LOCK.sink1": "이미 잠근 mutex를 다시 잠급니다.",
  "opus1.DOUBLE_LOCK.src1": "mutex를 잠급니다.",
  "opus1.DOUBLE_UNLOCK.sink1": "이미 열은 mutex를 다시 열려고 합니다.",
  "opus1.DOUBLE_UNLOCK.src1": "mutex를 엽니다.",
  "opus1.DO_NOT_ASSUME_ENV.sink1": "검사되지 않은 값이 크기가 고정된 배열에 복사됩니다. 이때, 복사되는 값의 크기가 배열의 크기보다 크면 버퍼오버런이 발생합니다.",
  "opus1.DO_NOT_ASSUME_ENV.src1": "민감한 정보를 외부 환경에서 가져옵니다.",
  "opus1.EXECL_REVEALS_DATA.sink1": "함수 execl()을 '--' 옵션 없이 위험하게 사용합니다.",
  "opus1.EXECL_REVEALS_DATA.src1": "민감한 정보를 생성합니다.",
  "opus1.FREE_NON_HEAP.sink1": "힙메모리에 있지 않은 변수를 해제하려고 합니다.",
  "opus1.FREE_NULL_POINTER.sink1": "널 포인터를 해제합니다.",
  "opus1.FREE_NULL_POINTER.src1": "널 포인터를 할당합니다.",
  "opus1.IMPROPER_AUTHORIZATION.sink1": "정보 {0}에 대한 권한을 검증하는 코드가 존재하지 않습니다.",
  "opus1.IMPROPER_AUTHORIZATION.src1": "정보 {0}를 사용자 이름으로 간주합니다.",
  "opus1.INFORMATION_LEAK.sink1": "민감한 정보 {0}가 유출될 수 있습니다.",
  "opus1.INFORMATION_LEAK.src1": "민감한 정보 {0}를 외부 환경에서 가져옵니다.",
  "opus1.INTEGER_OVERFLOW.sink1": "타입 {0}가 가질 수 있는 최대값은 {1}인데 값 {2}은 연산 {3}를 통해 최대값을 넘을 수 있습니다.",
  "opus1.INTEGER_OVERFLOW.sink2": "타입 {0}가 가질 수 있는 최소값은 {1}인데 값 {2}은 연산 {3}를 통해 최소값 아래로 내려 갈 수 있습니다.",
  "opus1.INTEGER_OVERFLOW.sink3": "안전하지 않은 값을 길이를 나타내는 인자에 사용합니다.",
  "opus1.INTEGER_OVERFLOW.sink4": "값 {0}을 값 {1}과 곱하는 연산은 최대값인 65535를 넘을 수 있습니다.",
  "opus1.INTEGER_OVERFLOW.src1": "원래 값이 여기 있습니다.",
  "opus1.INTEGER_OVERFLOW.src2": "안전하지 않은 값을 외부 환경으로 부터 생성합니다.",
  "opus1.INTEGER_UNDERFLOW.sink1": "타입 {0}가 가질 수 있는 최소값은 {1}인데 값 {2}은 연산 {3}를 통해 최소값 아래로 내려 갈 수 있습니다.",
  "opus1.INTEGER_UNDERFLOW.src1": "원래 값이 여기 있습니다.",
  "opus1.LDAP_INJECTION.sink1": "외부에서 결정할 수 있는 LDAP 질의문 {0}을 실행합니다.",
  "opus1.LDAP_INJECTION.src1": "LDAP 질의문 {0}을 외부 환경의 값으로 결정합니다.",
  "opus1.LEAK.CURSOR.sink1": "커서를 닫지 않습니다.",
  "opus1.LEAK.CURSOR.src1": "커서를 엽니다.",
  "opus1.LEAK.CURSOR_ARRAY.sink1": "커서 배열을 닫지 않습니다.",
  "opus1.LEAK.CURSOR_ARRAY.src1": "커서 배열을 엽니다.",
  "opus1.LEAK.MEMORY.sink1": "할당된 메모리가 회수되지 않았고 이 함수가 끝난 후에 사용할 수도 없습니다.",
  "opus1.LEAK.MEMORY.src1": "메모리가 할당되었습니다.",
  "opus1.LEAK.RECORD.sink1": "동적 레코드를 파괴하지 않습니다.",
  "opus1.LEAK.RECORD.src1": "동적 레코드를 생성합니다.",
  "opus1.LEAK.RESOURCE.sink1": "할당된 자원이 회수되지 않았고 이 함수가 끝난 후에 사용할 수도 없습니다.",
  "opus1.LEAK.RESOURCE.src1": "자원이 할당되었습니다.",
  "opus1.MEMCPY_WITH_OVERLAPPING_REGIONS.sink1": "함수 memcpy()를 중첩된 영역을 가지는 메모리에 대해서 호출합니다. 겹치는 메모리 영역 사이에 복사를 하면 그 결과는 정의되어 있지 않습니다.",
  "opus1.MISMATCH.MALLOC_TO_DELETE.sink1": "동적으로 할당한 메모리를 연산자 delete로 해제하려고 합니다.",
  "opus1.MISMATCH.MALLOC_TO_DELETE.src1": "동적 메모리를 할당합니다.",
  "opus1.MISMATCH.MALLOC_TO_DELETE_ARRAY.sink1": "동적으로 할당한 메모리를 연산자 delete[]로 해제하려고 합니다.",
  "opus1.MISMATCH.MALLOC_TO_DELETE_ARRAY.src1": "동적 메모리를 할당합니다.",
  "opus1.MISMATCH.NEW_ARRAY_TO_DELETE.sink1": "연산자 new[]로 할당한 객체를 연산자 delete로 삭제하려 합니다.",
  "opus1.MISMATCH.NEW_ARRAY_TO_DELETE.src1": "연산자 new[]를 통해 객체를 할당합니다.",
  "opus1.MISMATCH.NEW_ARRAY_TO_FREE.sink1": "연산자 new[]로 할당한 객체를 함수 free()로 삭제하려 합니다.",
  "opus1.MISMATCH.NEW_ARRAY_TO_FREE.src1": "연산자 new[]를 통해 객체를 할당합니다.",
  "opus1.MISMATCH.NEW_TO_FREE.sink1": "연산자 new로 할당한 객체를 함수 free()로 해제하려고 합니다.",
  "opus1.MISMATCH.NEW_TO_FREE.src1": "연산자 new를 통해 객체를 할당합니다.",
  "opus1.MISMATCH.RESOURCE.sink1": "적절하지 않은 함수로 파일을 닫으려 합니다.",
  "opus1.MISMATCH.RESOURCE.sink2": "적절하지 않은 함수로 소켓을 해제하려 합니다.",
  "opus1.MISMATCH.RESOURCE.sink3": "적절하지 않은 함수로 핸들을 해제하려 합니다.",
  "opus1.MISMATCH.RESOURCE.src1": "파일을 엽니다.",
  "opus1.MISMATCH.RESOURCE.src2": "소켓을 할당합니다.",
  "opus1.MISMATCH.RESOURCE.src3": "핸들을 할당합니다.",
  "opus1.MISMATCH.WINAPI.sink1": "동적으로 할당한 메모리를 부적합한 함수로 해제하려고 합니다.",
  "opus1.MISMATCH.WINAPI.src1": "동적 메모리를 할당합니다.",
  "opus1.MISSING_RETURN.sink1": "리턴문이 빠져 있습니다.",
  "opus1.NEGATIVE_FILE_DESCRIPTOR.sink1": "음수 값의 파일 서술자를 사용합니다.",
  "opus1.NEGATIVE_FILE_DESCRIPTOR.src1": "파일 서술자가 음수 값을 가질 수 있습니다.",
  "opus1.NEGATIVE_MOD_OPERATION.sink1": "연산자 %의 피연산자가 음수일 수 있습니다.",
  "opus1.NEGATIVE_MOD_OPERATION.src1": "값이 양수라고 확인되지 않습니다.",
  "opus1.NULL_DEREF.CHECK_AFTER_DEREF.sink1": "포인터를 이미 참조 했는데 널 검사를 합니다. 참조 하기 전에 널 검사를 해야 합니다.",
  "opus1.NULL_DEREF.CHECK_AFTER_DEREF.src1": "포인터를 참조합니다.",
  "opus1.NULL_DEREF.MALLOC_FAILED.sink1": "널 포인터일 수 있는 포인터를 참조합니다.",
  "opus1.NULL_DEREF.MALLOC_FAILED.src1": "메모리 할당이 실패하면 널 포인터를 리턴할 수 있습니다.",
  "opus1.NULL_DEREF.MISSING_CHECK.sink1": "앞에서는 널과 비교했던 포인터를 이번에는 비교하지 않고 참조합니다.",
  "opus1.NULL_DEREF.MISSING_CHECK.src1": "포인터를 널과 비교합니다.",
  "opus1.NULL_DEREF.sink1": "널 포인터를 참조합니다.",
  "opus1.NULL_DEREF.src1": "널 포인터를 할당합니다.",
  "opus1.OS_COMMAND_INJECTION.sink1": "외부에서 결정할 수 있는 운영체제 명령문 {0}을 실행합니다.",
  "opus1.OS_COMMAND_INJECTION.src1": "운영체제 명령문 {0}을 외부 환경의 값으로 결정합니다.",
  "opus1.OVERRUN.DYNAMIC.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.OVERRUN.DYNAMIC.MEMSET.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.OVERRUN.DYNAMIC.MEMSET.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.OVERRUN.DYNAMIC.STRCPY.sink1": "대상 버퍼의 크기가 {0} 인데 입력 버퍼의 크기는 {1} 입니다.",
  "opus1.OVERRUN.DYNAMIC.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} 입니다.",
  "opus1.OVERRUN.STATIC.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.OVERRUN.STATIC.MEMSET.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.OVERRUN.STATIC.MEMSET.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.OVERRUN.STATIC.STRCPY.sink1": "대상 버퍼의 크기가 {0} 인데 입력 버퍼의 크기는 {1} 입니다.",
  "opus1.OVERRUN.STATIC.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.PARAMETER_POINTER_TO_LOCAL.sink1": "스택 영역의 주소 값을 인자에 붙입니다.",
  "opus1.PASS_BY_VALUE.sink1": "너무 큰 크기 {0}를 갖는 구조체가 인자로 전달됩니다. 포인터를 사용하길 권장합니다.",
  "opus1.PATH_TRAVERSAL.sink1": "외부에서 결정할 수 있는 파일 경로 {0} 값을 적절한 검사 없이 접근합니다.",
  "opus1.PATH_TRAVERSAL.src1": "파일 경로 {0}를 외부 환경의 값으로 결정합니다.",
  "opus1.PLAINTEXT_PASSWORD.sink1": "패스워드 {0}를 암호화하지 않고 사용합니다.",
  "opus1.PLAINTEXT_PASSWORD.src1": "정보 {0}를 패스워드로 간주합니다.",
  "opus1.PROCESS_CONTROL.sink1": "외부에서 결정할 수 있는 파일의 상대 경로로 라이브러리 {0}를 읽어 들입니다.",
  "opus1.PROCESS_CONTROL.src1": "파일 경로 {0}를 외부 환경의 값으로 결정합니다.",
  "opus1.RACE_CONDITION.sink1": "열려 있는 파일을 파일 서술자가 아닌 파일 이름을 이용해서 접근합니다. 중간에 파일 이름이 변경되었다면 다른 파일을 접근할 수 있습니다.",
  "opus1.RACE_CONDITION.sink2": "파일의 상태 정보를 검사하고 파일을 여는 사이에 파일의 상태가 변경되었을 수 있습니다.",
  "opus1.RACE_CONDITION.src1": "파일을 엽니다.",
  "opus1.RACE_CONDITION.src2": "파일의 상태 정보를 검사합니다.",
  "opus1.RESOURCE_INJECTION.sink1": "외부에서 결정할 수 있는 네트워크 소켓 번호 {0}를 사용합니다.",
  "opus1.RESOURCE_INJECTION.src1": "소켓의 포트 번호 {0}를 외부 환경의 값으로 결정합니다.",
  "opus1.RETURN_FREE.sink1": "해제한 포인터를 리턴합니다.",
  "opus1.RETURN_FREE.src1": "포인터를 해제합니다.",
  "opus1.SHIFT_EXCEEDS_BIT_WIDTH.sink1": "시프트 연산을 {0} 만큼 {2} 타입의 값에 대해서 적용하는데 이는 타입이 표현하는 비트의 크기 최댓값 {1}을 넘습니다.",
  "opus1.SHIFT_NEGATIVE.sink1": "시프트 연산을 음수 {0}에 대해서 적용합니다.",
  "opus1.SQL_INJECTION.sink1": "외부에서 결정할 수 있는 질의문 {0}을 적절한 검사 없이 실행합니다.",
  "opus1.SQL_INJECTION.src1": "질의문 {0}을 외부 환경의 값으로 결정합니다.",
  "opus1.TAINTED_LOOP_BOUND.sink1": "민감한 정보 {0}가 반복문을 제어하는데 사용됩니다.",
  "opus1.TAINTED_LOOP_BOUND.src1": "민감한 정보 {0}를 외부 환경에서 가져옵니다.",
  "opus1.TRYLOCK_FAIL.sink1": "이미 mutex가 lock 되어 있기 때문에 try lock은 성공할 수 없습니다.",
  "opus1.TRYLOCK_FAIL.src1": "mutex를 lock 합니다.",
  "opus1.TYPE_OVERRUN.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.TYPE_OVERRUN.MEMSET.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.TYPE_OVERRUN.MEMSET.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.TYPE_OVERRUN.STATIC.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.TYPE_UNDERRUN.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.TYPE_UNDERRUN.MEMSET.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다",
  "opus1.TYPE_UNDERRUN.MEMSET.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.TYPE_UNDERRUN.STATIC.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.UNBOUNDED_SOURCE_TO_ARRAY.sink1": "제한되지 않은 값을 크기가 정해진 배열에 복사합니다.",
  "opus1.UNBOUNDED_SOURCE_TO_ARRAY.src1": "값이 제한되어 있지 않습니다.",
  "opus1.UNDERRUN.DYNAMIC.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.UNDERRUN.DYNAMIC.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.UNDERRUN.STATIC.BAD_COND.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.UNDERRUN.STATIC.sink1": "버퍼의 크기가 {0} 인데 인덱스가 {1} {2} 입니다.",
  "opus1.UNINIT.sink1": "지역 변수를 초기화하지 않고 사용합니다.",
  "opus1.UNREASONABLE_PARAMETER.sink1": "길이를 나타내는 인자로 음수 {0}을 사용합니다.",
  "opus1.UNREASONABLE_PARAMETER.sink2": "길이를 나타내는 인자로 의미 없는 0 값을 사용합니다.",
  "opus1.UNREASONABLE_PARAMETER.sink3": "길이를 나타내는 인자로 미리 정한 값 {1}을 넘는 큰 수 {0}를 사용합니다.",
  "opus1.UNREASONABLE_PARAMETER.sink4": "길이를 나타내는 인자로 안전하지 않은 값을 사용합니다.",
  "opus1.UNREASONABLE_PARAMETER.sink5": "함수 fseek() 이나 ftell()을 파일의 크기를 계산하는데 사용하면 안 됩니다.",
  "opus1.UNREASONABLE_PARAMETER.src1": "너무 크거나 음수일 수 있는 값입니다.",
  "opus1.UNREASONABLE_PARAMETER.src2": "안전하지 않은 값을 외부 환경으로 부터 생성합니다.",
  "opus1.UNREASONABLE_PARAMETER.src3": "함수 fseek() 이나 ftell()을 호출합니다.",
  "opus1.USE_AFTER_CLOSE.sink1": "이미 닫은 커서를 사용하려고 합니다.",
  "opus1.USE_AFTER_CLOSE.sink2": "이미 닫은 파일을 사용하려고 합니다.",
  "opus1.USE_AFTER_CLOSE.src1": "커서를 닫습니다.",
  "opus1.USE_AFTER_CLOSE.src2": "파일을 닫습니다.",
  "opus1.USE_AFTER_FREE.sink1": "이미 해제한 포인터를 사용합니다.",
  "opus1.USE_AFTER_FREE.src1": "포인터를 해제합니다.",
  "opus1.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.sink1": "하드코딩된 상수 문자열로 암호화 키 {0}를 사용하지 않도록 합니다.",
  "opus1.USE_OF_HARDCODED_CRYPTOGRAPHIC_KEY.src1": "암호화 패스워드 {0}를 생성합니다.",
  "overlappingStrcmp.description": "조건식이 겹치는 부분이 있습니다.",
  "passedByValue.description": "함수 인자는 레퍼런스로 넘기는 것을 추천합니다. C++에서는 값으로 넘기는 것보다 레퍼런스로 넘기는것이 통상적으로 실행 속도가 빠릅니다.",
  "phpchk.BAD_CALL.FORBIDDEN.PHP.defect": "금지된 함수가 호출되었습니다.",
  "phpchk.BAD_COOKIE.NOT_SENT_OVER_SSL.PHP.defect.disabled": "보안 플래그가 비활성화 되었습니다.",
  "phpchk.BAD_COOKIE.NOT_SENT_OVER_SSL.PHP.defect.not_set": "보안 플래그가 설정되지 않았습니다.",
  "phpchk.BAD_COOKIE.PATH.PHP.defect": "쿠키의 경로가 루트 경로로 설정되었습니다.",
  "phpchk.BAD_CROSS_ORIGIN_RESOURCE_SHARING.PHP.defect": "Cross-Origin Resource Sharing이 잘못 설정되었습니다.",
  "phpchk.BAD_INI.ALLOWED_URL_FOPEN.PHP.defect": "allow_url_fopen이 활성화 되었습니다.",
  "phpchk.BAD_INI.ALLOWED_URL_INCLUDE.PHP.defect": "allow_url_include이 활성화 되었습니다.",
  "phpchk.BAD_INI.COOKIE_DOMAIN.PHP.defect": "session.cookie_domain이 베이스 도메인으로 설정되었습니다.",
  "phpchk.BAD_INI.COOKIE_NOT_SENT_OVER_SSL.PHP.defect": "session.cookie_secure 옵션으로 인해 쿠키 값이 SSL을 통해 전달되지 않습니다.",
  "phpchk.BAD_INI.COOKIE_PATH.PHP.defect": "session.cookie_path가 루트 경로로 설정되었습니다.",
  "phpchk.BAD_INI.DISABLED_CGI_FORCE_REDIRECT.PHP.defect": "cgi.firce_redirect가 비활성화 되었습니다.",
  "phpchk.BAD_INI.DISABLED_SAFE_MODE.PHP.defect": "safe_mode가 비활성화 되었습니다.",
  "phpchk.BAD_INI.ENABLED_FILE_UPLOADS.PHP.defect": "file_uploads가 활성화 되었습니다.",
  "phpchk.BAD_INI.ENABLED_MAGIC_QUOTES_GPC.PHP.defect": "magic_quotes_gpc가 활성화 되었습니다.",
  "phpchk.BAD_INI.ENABLED_MAGIC_QUOTES_RUNTIME.PHP.defect": "magic_quotes_runtime이 활성화 되었습니다.",
  "phpchk.BAD_INI.ENABLED_MAGIC_QUOTES_SYBASE.PHP.defect": "magic_quotes_sybase가 활성화 되었습니다.",
  "phpchk.BAD_INI.ENABLED_REGISTER_GLOBALS.PHP.defect": "register_globals가 활성화 되었습니다.",
  "phpchk.BAD_INI.LEAK.ERROR.PHP.defect": "옵션 display_errors이 활성화 되어 오류 정보가 노출될 수 있습니다.",
  "phpchk.BAD_INI.LEAK.VERSION.PHP.defect": "옵션 expose_php이 활성화 되어 PHP 버전 정보가 노출될 수 있습니다.",
  "phpchk.BAD_INI.MISSING_OPEN_BASEDIR.PHP.defect": "open_basedir이 설정되지 않았습니다.",
  "phpchk.BAD_INI.MISSING_SAFE_MODE_EXEC_DIR.PHP.defect": "safe_mode_exec_dir이 설정되지 않았습니다.",
  "phpchk.BAD_INI.PERSISTENT_COOKIE.PHP.defect": "session.cookie_lifetime이 허용된 최대 값 {0} 보다 큽니다.",
  "phpchk.BAD_INI.UNSET_HTTPONLY.PHP.defect": "session.cookie_httponly이 해제되었습니다.",
  "phpchk.BAD_INI.USING_TRANS_SID.PHP.defect": "session.use_trans_sid이 활성화 되었습니다.",
  "phpchk.BAD_SECURITY_DECISION.UNTRUSTED_INPUT.PHP.defect": "금지된 키로 쿠키 변수가 조회되었습니다.",
  "phpchk.CROSS_SITE_REQUEST_FORGERY.PHP.defect": "form 태그에서 GET 메소드가 사용되었습니다.",
  "phpchk.EMPTY_CATCH_BLOCK.PHP.defect": "catch 블록이 비어있습니다.",
  "phpchk.EXCESSIVE_SESSION_TIMEOUT.CAKEPHP.PHP.defect": "설정된 세션 타임아웃이 허용된 보안 레벨 {0}을(를) 위반했습니다.",
  "phpchk.FORBIDDEN.COOKIE.PHP.defect": "위험한 쿠키 함수가 호출되었습니다.",
  "phpchk.HARD_CODED.CRYPTOGRAPHIC_KEY.PHP.defect": "암호화 키가 하드코드 되었습니다.",
  "phpchk.HARD_CODED.PASSWORD.PHP.defect": "패스워드가 하드코드 되었습니다.",
  "phpchk.HTTP_TRANSPORT.GET.PHP.defect": "GET 메소드가 HTTP 전송을 위해 사용됩니다.",
  "phpchk.HTTP_TRANSPORT.PHP.defect": "HTTP 전송이 사용되었습니다.",
  "phpchk.IMPROPER_AUTHORIZATION.PHP.defect.ldap_bind": "LDAP 바인딩 수행 시 적절한 인증을 위해 사용자 이름과 비밀번호가 모두 필요합니다.",
  "phpchk.IMPROPER_RANDOM_USAGE.PHP.defect": "보안 상 취약한 난수 값이 생성될 수 있습니다.",
  "phpchk.INFINITE_RECURSIVE_CALL.PHP.defect": "재귀 호출로 인해 무한 반복이 발생할 수 있습니다.",
  "phpchk.LEAK.DEBUG_INFORMATION.CAKEPHP.PHP.defect": "디버그 레벨이 허용된 최대 레벨 {0} 보다 큽니다.",
  "phpchk.LEAK.ERROR_INFORMATION.PHP.defect": "오류 정보가 오류 메시지를 통해 노출될 수 있습니다.",
  "phpchk.LEAK.RESOURCE.PHP.assigned": "자원이 할당되었습니다.",
  "phpchk.LEAK.RESOURCE.PHP.defect": "자원이 적절하게 해제되지 않았습니다.",
  "phpchk.LEFTOVER_DEBUG_CODE.PHP.defect": "디버그 함수가 호출되었습니다.",
  "phpchk.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PHP.defect": "중요 기능 함수가 인증 과정 없이 호출되었습니다.",
  "phpchk.MISSING_LOGIN_CONTROL.PHP.defect": "로그인 루틴이 제어되지 않았습니다.",
  "phpchk.NULL_DEREFERENCE.PHP.defect": "Null 값이 참조되었습니다.",
  "phpchk.OVERLY_BROAD_CATCH.PHP.defect": "광범위한 예외 클래스가 사용됩니다.",
  "phpchk.PASSWORD_IN_COMMENT.PHP.defect.including_password": "주석문 내에서 비밀번호가 기재되었습니다.",
  "phpchk.PASSWORD_IN_COMMENT.PHP.defect.max_word_length_fixed": "주석 문 내 고정 길이 {0} 을(를) 가지는 단어는 중요 키로 간주됩니다.",
  "phpchk.PASSWORD_IN_COMMENT.PHP.defect.max_word_length_non_fixed": "길이가 {0} 인 주석문 내 단어가 허용된 최대 단어 길이 {1} 을(를) 초과합니다.",
  "phpchk.REMOTE_CODE_EXECUTION.PHP.defect.dynamic_include": "동적 인클루드가 사용되었습니다.",
  "phpchk.REMOTE_CODE_EXECUTION.PHP.defect.forbidden": "명령어나 코드를 실행시킬 수 있는 위험한 함수가 호출되었습니다.",
  "phpchk.USE_AFTER_RELEASE.RESOURCE.PHP.defect": "해제된 자원이 다시 사용되었습니다.",
  "phpchk.WEAK_ENCRYPTION.HASH.PHP.defect.algorithm": "취약한 해시 알고리즘이 사용되었습니다.",
  "phpchk.WEAK_ENCRYPTION.HASH.PHP.defect.function": "취약한 해시 함수가 사용되었습니다.",
  "phpchk.WEAK_ENCRYPTION.HASH.WITHOUT_SALT.PHP.defect": "패스워드 암호화 타입을 PASSWORD_DEFAULT 으로 설정했습니다.",
  "phpchk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.PHP.defect": "{0} 을(를) 위한 최소 키 길이는 {1} bit 이상이어야 합니다.",
  "phpchk.WEAK_ENCRYPTION.RISKY_ALGORITHM.PHP.defect": "취약한 암호화 알고리즘이 사용되었습니다.",
  "phpchk.WEAK_PASSWORD_REQUIREMENTS.PHP.defect": "비밀번호에 대한 강한 검증을 수행합니다.",
  "phpchk.WEAK_SERVER_CERTIFICATES.PHP.defect": "모든 인증서를 별도의 유효성 검사 없이 신뢰합니다.",
  "phpchk.WEAK_XML_TRANSFORMERS_SECURITY.PHP.defect": "외부 엔터티를 사용할 수 있게 설정합니다.",
  "pointerLessThanZero.description": "포인터 값은 음수가 될수 없습니다.",
  "pointerPositive.description": "포인터는 음수가 될 수 없습니다.",
  "pointerSize.description": "포인터 변수가 그대로 sizeof 에 사용됩니다.",
  "postfixOperator.description": "prefix ++/-- 연산을 사용하는것이 효율적입니다.",
  "publicAllocationError.description": "포인터에 할당하기 전에 해제 하지 않으면 메모리 누수가 발생 할 수 있습니다.",
  "pythonchk.BAD_ARGUMENTS.UMASK.PYTHON.defect": "umask에 부적절한 인자가 사용되었습니다.",
  "pythonchk.BAD_CALL.FORBIDDEN.PYTHON.defect": "금지된 함수가 호출되었습니다.",
  "pythonchk.COMMAND_INJECTION.PYTHON.defect": "shell 기능을 True로 사용하여 쉘 기능 검증 없이 실행합니다.",
  "pythonchk.CROSS_SITE_REQUEST_FORGERY.PYTHON.defect.decorator": "CSRF 보호를 해제하는 데코레이터를 사용합니다.",
  "pythonchk.CROSS_SITE_REQUEST_FORGERY.PYTHON.defect.method": "CSRF 보호를 해제하는 함수를 사용합니다.",
  "pythonchk.CROSS_SITE_REQUEST_FORGERY.PYTHON.defect.settings": "django.middleware.csrf.CsrfViewMiddleware 옵션을 사용합니다.",
  "pythonchk.DJANGO_BAD_SLEEP.defect": "응답 생성 도중 쓰레드를 일시정지 시키는 함수가 호출되었습니다.",
  "pythonchk.DJANGO_CONFIG_URL_HANDLER.PYTHON.defect": "오류 페이지를 선언하지 않아 위험합니다.",
  "pythonchk.DJANGO_DEBUG_ENABLED.defect": "Django 프레임워크의 디버그 모드가 설정되어 있습니다.",
  "pythonchk.DOWNLOAD_OF_CODE_WITHOUT_INTEGRITY_CHECK.PYTHON.defect": "파일을 다운로드 하기 전에 무결성 검사가 필요합니다.",
  "pythonchk.EMPTY_CATCH_BLOCK.PYTHON.defect": "except 블록이 비어있습니다.",
  "pythonchk.EMPTY_SALT.PYTHON.defect": "해시 솔트로 빈 값을 사용했습니다.",
  "pythonchk.EXPOSURE_OF_SYSTEM_DATA.PYTHON.defect": "시스템 정보 노출 가능성이 있으므로 사용이 금지된 함수가 호출되었습니다.",
  "pythonchk.HARDCODED_PASSWORD.PYTHON.defect.hardcode": "중요 정보 {0}가 하드코드 되었습니다.",
  "pythonchk.HARDCODED_PASSWORD.PYTHON.defect.variable": "하드코딩된 중요 정보로 보이는 값이 변수 {0}에 대입되었습니다.",
  "pythonchk.HARD_CODED.CRYPTOGRAPHIC_KEY.PYTHON.defect.crypt": "암호화 키가 하드코드 되었습니다. (key={0})",
  "pythonchk.HARD_CODED.CRYPTOGRAPHIC_KEY.PYTHON.defect.hash": "해시 키가 하드코드 되었습니다. (key={0})",
  "pythonchk.IMPROPER_AUTHORIZATION.PYTHON.defect.password": "LDAP 바인딩 수행 시 적절한 인증을 위해 필요한 비밀번호가 전달되지 않았습니다.",
  "pythonchk.IMPROPER_AUTHORIZATION.PYTHON.defect.username": "LDAP 바인딩 수행 시 적절한 인증을 위해 필요한 사용자 이름이 전달되지 않았습니다.",
  "pythonchk.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.PYTHON.defect.chmod": "chmod 명령의 인자를 최소화하여 필요 이상의 권한이 부여되지 않도록합니다.",
  "pythonchk.INCORRECT_PERMISSION_ASSIGNMENT_FOR_CRITICAL_RESOURCE.PYTHON.defect.umask": "umask 명령의 인자를 77로 바꾸어 접근 권한을 제한합니다.",
  "pythonchk.INFINITE_RECURSIVE_CALL.PYTHON.defect": "재귀호출을 제어하지 않고 수행합니다.",
  "pythonchk.INSECURE_HASH_ITERATION_COUNT.PYTHON.defect": "해시 함수가 {0}회 반복하도록 지정되었으나 옵션에 설정된 최소 요구 반복 횟수는 {1}회입니다.",
  "pythonchk.INSECURE_PERSISTENT_COOKIE.PYTHON.defect.age.empty": "쿠키의 최대 지속시간이 지정되지 않았습니다.",
  "pythonchk.INSECURE_PERSISTENT_COOKIE.PYTHON.defect.age.long": "쿠키의 최대 지속시간이 {0}초로 지정되어 허용 범위인 {1}초를 초과했습니다.",
  "pythonchk.INSECURE_PERSISTENT_COOKIE.PYTHON.defect.not_httponly": "쿠키에 httponly 속성이 지정되지 않았습니다.",
  "pythonchk.INSECURE_PERSISTENT_COOKIE.PYTHON.defect.not_secure": "쿠키에 secure 속성이 지정되지 않았습니다.",
  "pythonchk.INSECURE_RANDOM.PYTHON.defect": "보안상 취약한 난수 값이 생성될 수 있습니다.",
  "pythonchk.INSECURE_TEMPORARY_FILE.PYTHON.defect.badlib": "안전하지 않은 임시파일 관련 라이브러리가 호출되었습니다. {0}",
  "pythonchk.INSECURE_TEMPORARY_FILE.PYTHON.defect.badliteral": "안전하지 않은 임시파일 생성이 발견되었습니다.",
  "pythonchk.INSECURE_UNPICKLE.PYTHON.defect": "안전하지 않은 pickle 라이브러리 사용이 발견되었습니다.",
  "pythonchk.LEAK.ERROR_INFORMATION.PYTHON.defect.custom": "오류 메시지 출력 함수를 통해 민감한 시스템 데이터가 노출되었습니다.",
  "pythonchk.LEAK.ERROR_INFORMATION.PYTHON.defect.print": "print 함수를 통해 오류 메세지가 노출되었습니다.",
  "pythonchk.LEAK.RESOURCE.PYTHON.defect": "자원이 적절하게 해제되지 않았습니다.",
  "pythonchk.LEAK.RESOURCE.PYTHON.defect.ifstmt": "자원 해제 시, 모든 if-else 문 내에서 자원을 해제해야 합니다.",
  "pythonchk.LEAK.RESOURCE.PYTHON.defect.trystmt": "자원 해제 시, finally 문 내에서 자원을 해제해야 합니다.",
  "pythonchk.LEFTOVER_DEBUG_CODE.PYTHON.defect.import": "디버그 모듈을 import 하고 있습니다.",
  "pythonchk.LEFTOVER_DEBUG_CODE.PYTHON.defect.method": "디버그 함수가 호출되었습니다.",
  "pythonchk.LEFTOVER_DEBUG_CODE.PYTHON.defect.settings": "디버그 모드로 설정되어 있습니다.",
  "pythonchk.MISSING_AUTHENTICATION.CRITICAL_FUNCTION.PYTHON.defect": "중요 기능 함수가 인증 과정 없이 호출되었습니다.",
  "pythonchk.MISSING_CATCH_BLOCKING_IO_ERROR.PYTHON.defect": "BlockingIOError 예외를 처리해야합니다.",
  "pythonchk.MISSING_CATCH_CONNECTION_ERROR.PYTHON.defect": "ConnectionError 예외를 처리해야합니다.",
  "pythonchk.MISSING_CATCH_FILE_EXISTS_ERROR.PYTHON.defect": "FileExistsError 예외를 처리해야합니다.",
  "pythonchk.MISSING_LOGIN_CONTROL.PYTHON.defect.call": "로그인 루틴의 호출 횟수가 제한되지 않았습니다.",
  "pythonchk.MISSING_LOGIN_CONTROL.PYTHON.defect.def": "로그인 루틴 내에 횟수 제한 로직이 존재하지 않습니다.",
  "pythonchk.NULL_DEREFERENCE.PYTHON.defect": "Null 값이 참조되었습니다.",
  "pythonchk.OVERLY_BROAD_CATCH.PYTHON.defect.empty": "특정한 예외를 쓰지 않고 공란으로 남겨두어 지나치게 광범위한 예외를 처리하고 있습니다.",
  "pythonchk.OVERLY_BROAD_CATCH.PYTHON.defect.except": "사용자가 지정한 광범위한 예외를 사용했습니다.",
  "pythonchk.PASSWORD_IN_COMMENT.PYTHON.defect": "주석문 내에서 비밀번호가 기재되었습니다.",
  "pythonchk.PORTABILITY_FLAW.FILE_SEPARATOR.PYTHON.defect": "하드코딩된 파일 구별자를 사용했습니다.",
  "pythonchk.PRIVATE_COLLECTION.PYTHON.defect": "private으로 선언된 컬렉션(또는 배열)이 public 메소드를 통해 반환됩니다.",
  "pythonchk.PUBLIC_DATA_ASSIGNED_TO_PRIVATE_ARRAY.PYTHON.defect": "public 메소드로부터 전달된 데이터가 private으로 선언된 배열에 할당됩니다.",
  "pythonchk.RELIANCE_ON_UNTRUSTED_INPUTS_IN_A_SECURITY_DECISION.PYTHON.defect": "보안 결정이 신뢰할 수 없는 입력에 의존적입니다.",
  "pythonchk.TOCTOU_RACE_CONDITION.PYTHON.defect": "파일 접근 시점에 파일이 존재하지 않을 가능성이 있습니다.",
  "pythonchk.WEAK_ENCRYPTION_ALGORITHM.PYTHON.defect.crypt": "취약한 암호화 알고리즘({0})이 사용되었습니다.",
  "pythonchk.WEAK_ENCRYPTION_ALGORITHM.PYTHON.defect.hash": "취약한 해시 알고리즘({0})이 사용되었습니다.",
  "pythonchk.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.PYTHON.defect": "{0} 크기를 갖는 키는 RSA 알고리즘에 사용되기에는 충분하지 않습니다. 키의 크기는 {1} 이상이어야 합니다.",
  "pythonchk.WEAK_ENCRYPTION_INSUFFICIENT_KEY_SIZE.PYTHON.defect.ecc": "ECC 알고리즘이 256비트보다 작은 {0} 식별자를 사용합니다",
  "pythonchk.WEAK_PASSWORD_REQUIREMENTS.PYTHON.defect": "\"AUTH_PASSWORD_VALIDATORS\"에 지정된 값이 비밀번호 설정 규칙을 만족하지 않습니다.",
  "pythonchk.WEAK_SERVER_CERTIFICATES.PYTHON.defect": "X.509 인증서 유효성 검사를 수행하지 않습니다.",
  "pythonchk.WEAK_XML_TRANSFORMERS_SECURITY.PYTHON.defect.lxml": "lxml 모듈의 {0}에 {1}를 True로 설정합니다.",
  "pythonchk.WEAK_XML_TRANSFORMERS_SECURITY.PYTHON.defect.sax": "xml.sax 모듈의 setFeature에 2번째 인자를 True로 설정합니다.",
  "raceAfterInterlockedDecrement.description": "InterlockedDecrement() 함수의 리턴값을 이용해야 합니다.",
  "readWriteOnlyFile.description": "쓰기 전용으로 연 파일을 읽습니다.",
  "reademptycontainer.description": "빈 STL 컨테이너를 읽습니다.",
  "redundantAssignInSwitch.description": "switch 문에서 이전 값이 사용되기 전에 다시 대입 되었습니다. break; 문이 빠져있는지 확인해야 합니다.",
  "redundantCopy.description": "이전 버퍼의 내용이 사용되기 전에 다시 쓰였습니다.",
  "redundantCopyInSwitch.description": "버퍼의 이전값이 사용되기 전에 다시 쓰였습니다. break; 문이 빠져있을 가능성이 있습니다.",
  "redundantCopyLocalConst.description": "const reference 타입을 쓰면 불필요한 데이터 복사를 막을수 있습니다.",
  "redundantIfRemove.description": "STL 컨테이너안의 원소를 제거 할 때 불필요한 체크가 있습니다. 존재 하지 않는 원소를 제거 하는 호출을 해도 안전합니다.",
  "redundantPointerOp.description": "의미 없는 포인터 연산입니다.",
  "resourceLeak.description": "리소스 누수가 발생합니다.",
  "returnTempReference.description": "임시 오브젝트의 레퍼런스가 반환됩니다",
  "rule.dast.api.common.7369.description": "서버 측 템플릿 삽입 취약점은 사용자의 입력값이 적절하게 필터링 되지 않고, 서버 측 템플릿 엔진에 삽입될 때 발생합니다. 공격자는 이를 악용해 서버 측 템플릿 엔진에 악의적인 구문을 삽입해 임의 객체 생성, 파일 읽기/쓰기, 원격 명령 실행 등의 공격을 시도할 수 있습니다.\n서버 측 템플릿 삽입 취약점을 방지하려면, Sanitizaiton과 입력값 검증을 함께 적용하는 것이 효과적입니다.\n\nSanitization은 사용자의 입력값이 템플릿 구문으로 해석되지 않도록 처리하는 방법입니다. 이를 위해 템플릿 파일을 미리 정의된 상태로 유지하고, 사용자의 입력은 템플릿에서 제공하는 안전한 출력 방식을 사용해야 합니다. \n\n또한, {, [, <, >, %, #, @, $ 등 공격에 자주 사용되는 특수문자가 사용자의 입력값에 포함되지 않도록 필터링해야 합니다. 예를 들어, {{7*7}}을 입력했을 때 49가 출력되지 않고, 특수문자가 필터링 돼 77만 남아야 합니다.",
  "rule.dast.api.common.7369.name": "REST 서버 측 템플릿 삽입",
  "rule.dast.api.common.7370.description": "LDAP(Lightweight Directory Access Protocol) 삽입 취약점은 사용자의 입력값이 적절히 검증되지 않고 LDAP 쿼리에 직접 포함될 때 발생합니다. 이를 통해 공격자는 인증 우회, 민감한 정보 조회 등 비정상적인 LDAP 동작을 유도할 수 있습니다.\nLDAP 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 `, ', \", ), (, #, *, &, +, =, <, >, |, ; 등을 검증하고 필터링해야 합니다. 또한, Prepared Statement를 사용해 사용자 입력값이 LDAP 쿼리에 영향을 주지 않도록 합니다.\n\nLDAP 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 LDAP 쿼리 구조를 파악할 수 있습니다. 따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환해 정보 유출을 방지해야 합니다.",
  "rule.dast.api.common.7370.name": "REST LDAP 삽입",
  "rule.dast.api.common.7371.description": "코드 삽입 취약점은 사용자의 입력값이 적절한 검증 없이 코드로 해석되어 실행될 때 발생합니다. 예를 들어, 사용자 입력값이 eval()과 같은 동적 코드 실행 함수에서 그대로 사용되면, 공격자는 이를 악용해 권한 탈취, 인증 우회, 시스템 명령어 실행 등의 공격을 수행할 수 있습니다.\n\n코드 삽입은 프로그래밍 언어의 기능을 악용해 발생하며, 실행 환경의 제한을 받는다는 점에서 운영체제 명령어 삽입과는 구분됩니다.\n코드 삽입 취약점을 방지하려면, 사용자 입력값으로 전달되는 문자열이 코드로 실행되지 않도록 적절히 필터링해야 합니다. 특히, eval()과 같은 동적 코드 실행 함수는 사용해서는 안 되며, 필요한 경우 입력값에 대해 화이트리스트 기반 검증을 적용해야 합니다.",
  "rule.dast.api.common.7371.name": "REST 코드(eval) 삽입",
  "rule.dast.api.common.7372.description": "경로 조작 취약점은 사용자의 입력값이 적절한 검증 없이 디렉터리 경로에 포함될 때 발생합니다. 공격자는 .., /, \\ 등의 문자를 이용해, 웹 애플리케이션이 허용한 경로 범위를 벗어나 의도하지 않은 위치에 접근할 수 있습니다. 이로 인해 시스템 파일이나 소스 코드 등 민감한 정보가 노출될 수 있습니다.\n경로 조작 취약점을 방지하려면, 사용자의 입력값을 적절히 검증해야 합니다. 입력값에 .., /, \\ 등 경로 순회(Directory Traversal) 공격에 사용될 수 있는 문자가 포함된 경우, 이를 제거하거나 허용된 경로만 선택할 수 있도록 필터링해야 합니다.",
  "rule.dast.api.common.7372.name": "REST 경로 조작",
  "rule.dast.api.common.7376.description": "XML 처리 과정에서 외부 파일을 참조하는 XML External Entity(XXE) 삽입 공격은 공격자가 XML 내부에 서버의 파일 내용을 포함시킬 수 있는 취약점입니다. 예를 들어 /etc/passwd와 같은 중요한 파일을 참조하도록 XML 개체를 변조하면 공격자는 해당 파일의 내용을 XML 출력 결과에 포함시켜 서버 내의 민감한 정보에 접근할 수 있습니다.\nXML 파서를 설정해 외부 개체(External Entity) 참조를 비활성화하고, XML 입력값을 안전하게 검증 및 필터링해 악의적인 XML 구조를 차단해야 합니다.",
  "rule.dast.api.common.7376.name": "REST XXE 삽입",
  "rule.dast.api.common.7377.description": "운영체제 명령어 삽입 취약점은 사용자의 입력값이 적절한 검증 없이 운영체제 명령어로 실행될 때 발생합니다. 공격자는 이를 악용해 의도하지 않은 명령어를 실행하고, 시스템 권한을 변경하거나 중요 파일을 탈취하는 등 시스템 동작 및 운영에 악영향을 미칠 수 있습니다.\n애플리케이션이 운영체제 명령어를 직접 호출하지 않도록 구현합니다. 필요한 경우, 허용된 명령어만 실행할 수 있도록 화이트리스트를 적용해야 합니다.\n\n또한, 사용자 입력값이 명령어 해석기로 전달되기 전에 적절한 검증을 수행해야 합니다. 공격에 사용될 수 있는 특수문자 [{, }, (, ), <, >, @, &, *, ‘, |, =, ?, ;, [, ], $, –, #, ~, !, ., ”, %, /, \\\\, :, +, ,, `]를 적절히 필터링해야 합니다.",
  "rule.dast.api.common.7377.name": "REST 운영체제 명령어 삽입",
  "rule.dast.api.common.7378.description": "크로스 사이트 스크립팅 취약점은 웹 사이트에 대하여 악성 스크립트를 삽입할 수 있는 취약점입니다. 공격자는 폼 내부에 있는 텍스트 입력과 같은 웹 요소를 통해 악성 스크립트를 서버로 전송합니다. 서버가 해당 데이터를 검증하지 않고 그대로 응답에 포함하는 경우, 악성 스크립트가 브라우저에서 실행됩니다. 그 결과 공격자는 사용자의 쿠키 및 세션 정보를 탈취하거나, 서버로 하여금 의도하지 않은 동작을 하도록 강제할 수 있습니다.\n크로스 사이트 스크립팅 취약점을 방지하려면, 사용자의 입력값에 포함된 HTML 태그나 특수 문자 <, >, &, `, \" 등을 검증하고 필터링해야 합니다. 또한, 사용자 데이터를 HTML 문서에 삽입하는 경우, 텍스트로만 출력하거나 HTML 엔터티로 변환해 스크립트 실행을 방지합니다.",
  "rule.dast.api.common.7378.name": "REST 크로스 사이트 스크립팅",
  "rule.dast.api.common.7379.description": "SQL 삽입 취약점은 사용자의 입력값이 적절히 검증되지 않고 SQL 쿼리에 직접 포함될 때 발생합니다. 공격자는 이점을 악용해 사용자 인증 우회, 데이터베이스 내부 정보 탈취 등의 공격을 수행할 수 있습니다.\nSQL 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 ', \", ;, #, --, //, %, /*, */ 등을 검증하고 필터링해야 합니다. 또한, Prepared Statement 또는 ORM(Object-Relational Mapping)을 사용해 사용자 입력값이 SQL 쿼리에 영향을 주지 않도록 합니다.\n\nSQL 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 SQL 쿼리 구조를 파악할 수 있습니다. 따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환해 정보 유출을 방지해야 합니다.",
  "rule.dast.api.common.7379.name": "REST SQL 삽입(데이터베이스 정보 노출)",
  "rule.dast.api.common.7380.description": "경로 조작 취약점은 사용자의 입력값이 적절한 검증 없이 디렉터리 경로에 포함될 때 발생합니다. 공격자는 .., /, \\ 등의 문자를 이용해, 웹 애플리케이션이 허용한 경로 범위를 벗어나 의도하지 않은 위치에 접근할 수 있습니다. 이로 인해 시스템 파일이나 소스 코드 등 민감한 정보가 노출될 수 있습니다.\n경로 조작 취약점을 방지하려면, 사용자의 입력값을 적절히 검증해야 합니다. 입력값에 .., /, \\ 등 경로 순회(Directory Traversal) 공격에 사용될 수 있는 문자가 포함된 경우, 이를 제거하거나 허용된 경로만 선택할 수 있도록 필터링해야 합니다.",
  "rule.dast.api.common.7380.name": "GraphQL 경로 조작",
  "rule.dast.api.common.7394.description": "크로스 사이트 스크립팅 취약점은 웹 사이트에 대하여 악성 스크립트를 삽입할 수 있는 취약점입니다. 공격자는 폼 내부에 있는 텍스트 입력과 같은 웹 요소를 통해 악성 스크립트를 서버로 전송합니다. 서버가 해당 데이터를 검증하지 않고 그대로 응답에 포함하는 경우, 악성 스크립트가 브라우저에서 실행됩니다. 그 결과 공격자는 사용자의 쿠키 및 세션 정보를 탈취하거나, 서버로 하여금 의도하지 않은 동작을 하도록 강제할 수 있습니다.\n크로스 사이트 스크립팅 취약점을 방지하려면, 사용자의 입력값에 포함된 HTML 태그나 특수 문자 <, >, &, `, \" 등을 검증하고 필터링해야 합니다. 또한, 사용자 데이터를 HTML 문서에 삽입하는 경우, 텍스트로만 출력하거나 HTML 엔터티로 변환해 스크립트 실행을 방지합니다.",
  "rule.dast.api.common.7394.name": "GraphQL 크로스 사이트 스크립팅",
  "rule.dast.api.common.7395.description": "운영체제 명령어 삽입 취약점은 사용자의 입력값이 적절한 검증 없이 운영체제 명령어로 실행될 때 발생합니다. 공격자는 이를 악용해 의도하지 않은 명령어를 실행하고, 시스템 권한을 변경하거나 중요 파일을 탈취하는 등 시스템 동작 및 운영에 악영향을 미칠 수 있습니다.\n애플리케이션이 운영체제 명령어를 직접 호출하지 않도록 구현합니다. 필요한 경우, 허용된 명령어만 실행할 수 있도록 화이트리스트를 적용해야 합니다.\n\n또한, 사용자 입력값이 명령어 해석기로 전달되기 전에 적절한 검증을 수행해야 합니다. 공격에 사용될 수 있는 특수문자 [{, }, (, ), <, >, @, &, *, ‘, |, =, ?, ;, [, ], $, –, #, ~, !, ., ”, %, /, \\\\, :, +, ,, `]를 적절히 필터링해야 합니다.",
  "rule.dast.api.common.7395.name": "GraphQL 운영체제 명령어 삽입",
  "rule.dast.api.common.7396.description": "SQL 삽입 취약점은 사용자의 입력값이 적절히 검증되지 않고 SQL 쿼리에 직접 포함될 때 발생합니다. 공격자는 이점을 악용해 사용자 인증 우회, 데이터베이스 내부 정보 탈취 등의 공격을 수행할 수 있습니다.\nSQL 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 ', \", ;, #, --, //, %, /*, */ 등을 검증하고 필터링해야 합니다. 또한, Prepared Statement 또는 ORM(Object-Relational Mapping)을 사용해 사용자 입력값이 SQL 쿼리에 영향을 주지 않도록 합니다.\n\nSQL 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 SQL 쿼리 구조를 파악할 수 있습니다. 따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환해 정보 유출을 방지해야 합니다.",
  "rule.dast.api.common.7396.name": "GraphQL SQL 삽입(데이터베이스 정보 노출)",
  "rule.dast.api.common.7397.description": "GraphQL은 개발 편의성을 위해 디버그 모드와 스택 추적 기능을 제공합니다. 이 기능은 오류의 원인을 빠르게 파악하고 수정하는 데 유용합니다.\n\n그러나 운영 환경에서 이 기능이 활성화되어 있을 경우, 오류 응답에 파일 경로, 프레임워크 버전, 쿼리 구조 등 민감한 정보가 노출될 수 있습니다. 공격자는 이를 바탕으로 서버 내부 구조를 파악하고 추가적인 공격을 시도할 수 있습니다.\n운영 환경에서는 GraphQL의 디버그 모드와 스택 추적 기능을 비활성화해야 합니다. 또한 서버는 오류가 발생하더라도 최소한의 정보만 포함된 일반적인 메시지만 반환해야 합니다.",
  "rule.dast.api.common.7397.name": "GraphQL 부적절한 오류 제한",
  "rule.dast.api.common.7398.description": "GraphQL IDE는 브라우저 환경에서 쿼리를 작성하고 테스트할 수 있도록 제공되는 웹 기반 도구입니다. 대표적으로 GraphiQL, GraphQL Playground, Altair 등이 있으며, 주로 개발 환경에서 사용됩니다.\n\n이 도구는 사용자가 처음 접근할 때 Introspection 쿼리를 자동으로 전송해 전체 스키마 정보를 로드하고, 해당 내용을 기반으로 스키마 설명 문서를 제공합니다. 이러한 동작으로 인해, 운영 환경에서 GraphQL IDE가 노출될 경우, 공격자는 도구에 접근하는 것만으로 전체 스키마 구조와 필드, 타입, 쿼리 목록을 쉽게 파악할 수 있습니다.\n운영 환경에서는 GraphQL IDE를 비활성화하는 것이 권장되며, 필요한 경우 인가된 사용자만 접근을 허용하도록 설정해야 합니다.",
  "rule.dast.api.common.7398.name": "GraphQL IDE 노출",
  "rule.dast.api.common.7399.description": "GraphQL은 __schema, __type과 같은 메타 필드를 통해 전체 스키마 정보를 조회할 수 있는 Introspection 기능을 제공합니다. 이 기능은 개발 환경에서 쿼리 구조를 확인하고 테스트를 위해 주로 사용됩니다. \n\n그러나 운영 환경에서 Introspection 기능이 활성화되어 있을 경우, GraphQL의 전체 스키마 구조와 필드, 타입, 쿼리 목록이 노출될 수 있습니다. 공격자는 이 정보를 바탕으로 내부 동작을 분석하고, 숨겨진 쿼리나 민감한 필드를 대상으로 공격을 시도할 수 있습니다.\n운영 환경에서는 Introspection 기능을 비활성화하는 것이 권장되며, 필요한 경우 인가된 사용자만 해당 기능을 사용하도록 설정해야 합니다.",
  "rule.dast.api.common.7399.name": "GraphQL 스키마 노출",
  "rule.dast.api.common.7436.description": "GraphQL을 지원하는 일부 라이브러리는 클라이언트가 존재하지 않는 필드를 요청했을 때, 서버가 유사한 필드 이름을 제안하는 필드 제안(Field Suggestion) 기능을 제공합니다. 이 기능은 주로 개발 편의성을 위해 사용되며, Apollo Server, Graphene 등에서 지원합니다.\n\n그러나 운영 환경에서 이 기능이 활성화되어 있을 경우, 공격자는 제안된 필드 이름을 기반으로 GraphQL의 스키마 구조와 사용 가능한 쿼리 목록을 추론할 수 있습니다. 이를 통해 내부 동작을 분석하고, 숨겨진 쿼리나 민감한 필드를 대상으로 추가적인 공격을 시도할 수 있습니다.\n운영 환경에서는 GraphQL 필드 제안 기능을 비활성화하는 것이 권장되며, 존재하지 않은 필드에 대해 최소한의 오류 정보만 제공해야 합니다. 예를 들어 `이런 쿼리를 찾으셨나요?`와 같은 오류 메시지 대신, `존재하지 않는 필드입니다.\n또는 `요청을 처리할 수 없습니다.`와 같은 오류 메시지를 제공하는 것이 안전합니다.",
  "rule.dast.api.common.7436.name": "GraphQL 필드 제안",
  "rule.dast.api.common.7437.description": "서버 측 요청 위조(Server-Side Request Forgery)는 공격자가 서버에 전달되는 URL 입력값을 조작해, 서버가 내부 또는 외부 자원에 요청을 보내도록 만드는 취약점입니다.\n\n이 취약점은 이미지 조회, 파일 다운로드, 외부 API 호출 등 URL을 처리하는 기능에서 입력값 검증이 미흡할 때 발생합니다. 공격자는 이를 악용해 내부 시스템, 클라우드 메타데이터, 관리자 페이지 등 외부에서 접근할 수 없는 자원에 접근할 수 있습니다.\n서버 측 요청 위조 취약점을 방지하려면, 요청 대상이 되는 URL 입력값을 적절히 검증해야 합니다.\n서버는 허용된 도메인이나 IP만 접근할 수 있도록 화이트리스트를 적용하고, `localhost` 및 `127.0.0.1`과 같은 내부 주소나 `file://` 및 `gopher://` 등 공격에 자주 사용되는 스킴(scheme)은 블랙리스트로 설정하여 차단해야 합니다.",
  "rule.dast.api.common.7437.name": "GraphQL 서버 측 요청 위조",
  "rule.dast.api.common.7438.description": "GraphQL 서버에 필드 중복 제한이 없을 경우, 공격자는 단일 쿼리에 동일한 필드를 과도하게 포함하는 필드 중복(Field Duplication) 공격을 수행할 수 있습니다. 이로 인해 서버는 중복된 필드를 처리하는 데 많은 리소스를 소모하게 되어 서비스 거부(DoS) 상태가 발생할 수 있습니다.\nGraphQL에서 필드 중복 공격을 방지하려면, 중복 필드를 감지하고 단일 쿼리에 허용할 수 있는 고유 필드 수, 루트 필드 수를 제한해야 합니다. 또한, 쿼리의 깊이나 요청 및 응답의 크기를 제한하는 방법도 고려할 수 있습니다.\n\n추가적으로, 비용 분석(Cost Analysis) 기법을 적용하는 것도 효과적인 대응 방안입니다. 이 기법은 필드별로 리소스 비용을 정의하고, 쿼리 전체의 실행 비용을 계산합니다. 계산된 비용이 사전에 설정된 임곗값을 초과하는 경우, 해당 요청을 차단하는 방식입니다.",
  "rule.dast.api.common.7438.name": "GraphQL 필드 중복",
  "rule.dast.api.common.7439.description": "GraphQL에서 지시어(Directive)는 @지시어 이름 형식으로 작성되며, 특정 필드나 프래그먼트의 실행 여부를 조건에 따라 제어하는 데 사용됩니다. 예를 들어, @skip(if: Boolean) 지시어는 조건이 참일 경우 해당 필드를 생략합니다.\n\n그러나 서버가 단일 쿼리에서 허용할 지시어 수나, 단일 필드에 적용할 지시어 수에 제한을 두지 않으면, 이 기능은 서비스 거부(DoS) 공격에 악용될 수 있습니다. 공격자가 단일 필드에 지시어를 과도하게 포함한 쿼리를 전송하면, 서버는 이를 처리하는 데 많은 리소스를 소모하게 되어 서비스 거부 상태가 발생할 수 있습니다.\nGraphQL에서 지시어 오버로딩 공격을 방지하려면, 단일 쿼리에 허용할 지시어 수를 적절히 제한해야 합니다. 또한, 단일 필드에 지시어가 반복 포함된 경우, 오류를 반환하거나 요청을 거부하는 방식도 고려할 수 있습니다. 추가적으로, 쿼리의 깊이나 요청 및 응답 크기를 제한하는 방법도 효과적인 대응 방안입니다.",
  "rule.dast.api.common.7439.name": "GraphQL 지시어 오버로딩",
  "rule.dast.api.common.7440.description": "GraphQL은 타입 간 상호 참조를 허용합니다. 예를 들어, Paste 타입이 Owner 타입을 포함하고, Owner 타입이 다시 Paste 타입을 포함하는 구조라면 두 타입은 상호 참조가 가능합니다.\n\n그러나 서버에 쿼리 깊이나 중첩 횟수에 대한 제한이 없다면, 상호 참조되는 타입은 서비스 거부(DoS) 공격에 악용될 수 있습니다. 공격자가 순환 구조를 중접한 쿼리를 전송하면, 서버는 이를 해석하고 응답을 생성하는 과정에서 과도한 리소스를 소모하게 되어 서비스 거부 상태가 발생할 수 있습니다.\nGraphQL에서 순환 쿼리 공격을 방지하려면, 쿼리의 깊이와 요청 및 응답 크기를 제한해야 합니다. 또한, 쿼리 타임아웃을 설정해 쿼리 실행 시간을 모니터링하고, 설정된 제한 시간을 초과하는 경우 해당 요청을 차단하는 방법도 고려할 수 있습니다.\n\n추가적으로, 비용 분석(Cost Analysis) 기법을 적용하는 것도 효과적인 대응 방안입니다. 이 기법은 필드별로 리소스 비용을 정의하고, 쿼리 전체의 실행 비용을 계산합니다. 계산된 비용이 사전에 설정된 임곗값을 초과하는 경우, 해당 요청을 차단하는 방식입니다.",
  "rule.dast.api.common.7440.name": "GraphQL 순환 쿼리",
  "rule.dast.api.common.7441.description": "GraphQL은 단일 요청으로 여러 쿼리를 일괄 처리하는 배칭(Batching) 기능을 제공합니다. 클라이언트는 여러 쿼리를 JSON 배열 형태로 묶어 단일 요청으로 전송할 수 있으며, 서버는 이를 순차적으로 실행한 뒤 배열 형태의 응답을 반환합니다. 이 기능은 요청 수를 줄이고 성능을 개선하는 데 유용합니다. \n\n그러나 서버에 허용 가능한 쿼리 수, 깊이, 요청 크기에 대한 제한이 없다면, 배칭 기능은 서비스 거부(DoS) 공격에 악용될 수 있습니다. 공격자가 대량의 쿼리를 배열로 묶어 요청을 전송하면, 서버는 배칭 처리에 과도한 리소스를 소모하게 되어 서비스 거부 상태가 발생할 수 있습니다.\n\n또한, 배칭 기능이 로그인과 같은 인증 요청에서 허용된 경우, 단일 요청으로 여러 번의 로그인을 시도할 수 있습니다. 이로 인해 기존의 요청 횟수 제한 정책이 우회되고, 무차별 대입 공격을 통해 사용자의 계정이 탈취될 수 있습니다.\nGraphQL에서 배칭 공격을 방지하려면, 단일 요청에 허용할 수 있는 쿼리 수를 제한해야 합니다. 또한, 쿼리의 깊이나 요청 및 응답의 크기를 제한하는 방법도 고려할 수 있습니다.\n\n추가적으로, 비용 분석(Cost Analysis) 기법을 적용하는 것도 효과적인 대응 방안입니다. 이 기법은 필드별로 리소스 비용을 정의하고, 쿼리 전체의 실행 비용을 계산합니다. 계산된 비용이 사전에 설정된 임곗값을 초과하는 경우, 해당 요청을 차단하는 방식입니다.",
  "rule.dast.api.common.7441.name": "GraphQL 쿼리 배칭",
  "rule.dast.api.common.7442.description": "GraphQL은 동일한 필드를 서로 다른 이름으로 여러 번 호출할 수 있는 별칭(Alias) 기능을 제공합니다. 이 기능은 동일한 필드를 반복 호출하거나, 응답 항목을 구분할 때 사용됩니다.\n\n그러나 서버에 별칭 수에 대한 제한이 없다면, 공격자는 단일 쿼리에 다수의 별칭을 사용해 필드를 과도하게 포함하는 별칭 오버로딩(Alias Overloading) 공격을 수행할 수 있습니다.\n\n이로 인해 서버는 별칭 처리에 많은 리소스를 소모하게 되어 서비스 거부(DoS) 상태가 발생할 수 있습니다. 또한, 별칭 기능이 로그인과 같은 인증 요청에서 허용된 경우, 단일 요청으로 여러 번의 로그인을 시도할 수 있습니다. 이로 인해 기존의 요청 횟수 제한 정책이 우회되고, 무차별 대입 공격을 통해 사용자의 계정이 탈취될 수 있습니다.\nGraphQL에서 별칭 오버로딩 공격을 방지하려면, 단일 쿼리에 허용할 수 있는 고유 필드 수, 별칭(Alias) 수, 루트 필드 수를 적절히 제한해야 합니다. 또한, 쿼리의 깊이나 요청 및 응답의 크기를 제한하는 방법도 고려할 수 있습니다.\n\n추가적으로, 비용 분석(Cost Analysis) 기법을 적용하는 것도 효과적인 대응 방안입니다. 이 기법은 필드별로 리소스 비용을 정의하고, 쿼리 전체의 실행 비용을 계산합니다. 계산된 비용이 사전에 설정된 임곗값을 초과하는 경우, 해당 요청을 차단하는 방식입니다.",
  "rule.dast.api.common.7442.name": "GraphQL 별칭 오버로딩",
  "rule.dast.api.common.7443.description": "손상된 객체 속성 수준 권한 부여(Broken Object Property Level Authorization, BOPLA)는 서버가 API 요청을 처리할 때, 객체의 개별 속성에 대한 권한을 적절히 검증하지 않아 발생하는 취약점입니다. 이로 인해 원래 노출되지 않아야 하는 민감한 속성이 응답에 포함되거나, 권한이 없는 사용자가 요청을 조작해 특정 속성 값을 변경, 추가, 삭제할 수 있습니다.\n\n해당 취약점은 2019 OWASP에서 발표한 과도한 데이터 노출과 대량 할당 문제를 모두 포함하며, 공격자는 이를 통해 민감한 정보를 획득하거나 권한 상승 등의 추가적인 공격을 수행할 수 있습니다.\n손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다. 또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "rule.dast.api.common.7443.name": "GraphQL 손상된 객체 속성 수준 권한 부여(BOPLA)",
  "rule.dast.api.common.7444.description": "손상된 객체 수준 권한 부여(Broken Object Level Authorization, BOLA)는 클라이언트가 요청에 포함하는 객체 식별자(ID, UUID 등)에 대해 서버가 적절한 권한 검증을 수행하지 않는 경우 발생하는 취약점입니다. 공격자는 식별자를 조작해 권한이 없는 다른 사용자의 데이터에 무단으로 접근하거나 수정 및 삭제할 수 있습니다.\n손상된 객체 수준 권한 부여(BOLA) 취약점을 방지하려면, 서버는 요청한 사용자가 해당 객체 식별자(ID, UUID 등)에 접근할 권한이 있는지 검증해야 합니다. 또한, 객체 식별자는 예측하기 어렵게 생성해 공격자가 이를 쉽게 추측하거나 조작하지 못하도록 설정해야 합니다.",
  "rule.dast.api.common.7444.name": "GraphQL 손상된 객체 수준 권한 부여(BOLA)",
  "rule.dast.api.common.7445.description": "부적절한 재고 관리 취약점은 개발 및 테스트용, 구버전 또는 문서화되지 않은 API가 운영 환경에 활성화된 상태로 남아 있을 때 발생합니다. 이러한 API는 외부에 노출되지 않더라도, 요청 경로나 버전 번호를 조작해 접근 가능한 경우가 있습니다. 공격자는 이처럼 관리되지 않은 API를 악용해 인증 우회나 민감한 기능 호출 등 다양한 공격을 시도할 수 있습니다.\n운영 환경에서 사용하는 모든 API 엔드포인트는 식별하고 문서화해야 하며, 개발 및 테스트용 또는 구버전 API는 제거해야 합니다. 또한, Swagger와 같은 API 문서는 인가된 사용자만 접근할 수 있도록 접근 제어 정책을 적용해야 합니다. 추가적으로 불필요한 노출을 방지하기 위해 내부용 API나 민감한 정보를 다루는 API는 신뢰할 수 있는 네트워크에서만 호출할 수 있도록 제한해야 합니다.",
  "rule.dast.api.common.7445.name": "API 부적절한 재고 관리",
  "rule.dast.api.common.7446.description": "서버 측 요청 위조(Server-Side Request Forgery)는 공격자가 서버에 전달되는 URL 입력값을 조작해, 서버가 내부 또는 외부 자원에 요청을 보내도록 만드는 취약점입니다.\n\n이 취약점은 이미지 조회, 파일 다운로드, 외부 API 호출 등 URL을 처리하는 기능에서 입력값 검증이 미흡할 때 발생합니다. 공격자는 이를 악용해 내부 시스템, 클라우드 메타데이터, 관리자 페이지 등 외부에서 접근할 수 없는 자원에 접근할 수 있습니다.\n서버 측 요청 위조 취약점을 방지하려면, 요청 대상이 되는 URL 입력값을 적절히 검증해야 합니다.\n서버는 허용된 도메인이나 IP만 접근할 수 있도록 화이트리스트를 적용하고, localhost, 127.0.0.1, file:// 등 내부 주소나 공격에 자주 사용되는 스킴은 블랙리스트로 차단해야 합니다.",
  "rule.dast.api.common.7446.name": "REST 서버 측 요청 위조",
  "rule.dast.api.common.7447.description": "손상된 기능 수준 권한 부여(Broken Function Level Authorization, BFLA)는 서버가 API의 기능별 권한을 적절히 검증하지 않아 발생하는 취약점입니다. 이로 인해 공격자는 허용되지 않은 관리자 기능 또는 내부 서비스에 접근해 민감한 정보를 탈취하거나 관리자 권한을 획득할 수 있습니다.\n손상된 기능 수준 권한 부여 취약점을 방지하려면, 서버는 API의 기능에 따라 최소 권한을 명확히 정의하고, 역할 기반 접근 제어(RBAC) 또는 속성 기반 접근 제어(ABAC)를 적용해야 합니다. 특히 생성, 수정, 삭제, 관리자 페이지 접근 등 민감한 기능에 대해서는 서버 측 권한 검증을 엄격히 적용해야 합니다.",
  "rule.dast.api.common.7447.name": "손상된 기능 수준 권한 부여(BFLA)",
  "rule.dast.api.common.7449.description": "손상된 객체 속성 수준 권한 부여(Broken Object Property Level Authorization, BOPLA)는 서버가 API 요청을 처리할 때, 객체의 개별 속성에 대한 권한을 적절히 검증하지 않아 발생하는 취약점입니다. 이로 인해 원래 노출되지 않아야 하는 민감한 속성이 응답에 포함되거나, 권한이 없는 사용자가 요청을 조작해 특정 속성 값을 변경, 추가, 삭제할 수 있습니다.\n\n해당 취약점은 2019 OWASP에서 발표한 과도한 데이터 노출과 대량 할당 문제를 모두 포함하며, 공격자는 이를 통해 민감한 정보를 획득하거나 권한 상승 등의 추가적인 공격을 수행할 수 있습니다.\n손상된 객체 속성 수준 권한 부여(BOPLA) 취약점을 방지하려면, 서버는 객체의 속성별로 권한을 명확히 정의하고, 민감하거나 불필요한 속성이 응답에 포함되지 않도록 해야 합니다. 또한, 요청과 응답의 데이터 구조를 사전에 정의해 구조가 변조되거나 허용되지 않은 속성이 포함된 경우 요청을 차단해야 합니다.",
  "rule.dast.api.common.7449.name": "손상된 객체 속성 수준 권한 부여(BOPLA)",
  "rule.dast.api.common.7454.description": "JWT(Json Web Token)에 만료 시간(exp)이 없거나 과도하게 긴 시간이 설정된 경우, 토큰이 유출되면 회수가 불가능해 사실상 영구적으로 사용할 수 있습니다. 만약 공격자가 만료 시간이 없는 토큰을 탈취한 경우, 장기간 정상 사용자의 권한으로 시스템에 접근할 수 있습니다.\nJWT를 발급할 때 서비스 특성에 맞는 만료 시간(exp)을 설정하고, 서버는 이를 적절히 검증해야 합니다. 만료된 토큰이 사용된 경우, 서버는 해당 요청을 차단해야 합니다.\n\n일반적으로 Access Token과 Refresh Token을 함께 사용하는 방식이 권장됩니다. Access Token에는 짧은 만료 시간을 설정하고, 토큰이 만료되면 Refresh Token을 통해 새로운 Access Token을 발급합니다.\n\n또한, 토큰 재사용을 차단하기 위해 무효화 전략을 적용할 수 있습니다. 예를 들어, JWT의 페이로드에 TokenVersion이나 암호화된 IP 주소를 포함하고, 서버가 해당 값을 검증하는 방식입니다.\nTokenVersion은 비밀번호 변경, 로그아웃 등 특정 이벤트가 발생할 때 값을 증가시켜 이전 토큰을 무효화할 수 있습니다. IP 주소 검증은 등록되지 않은 IP에서의 요청을 차단해, 탈취된 토큰의 재사용을 방지할 수 있습니다.",
  "rule.dast.api.common.7454.name": "부적절한 JWT 만료 시간",
  "rule.dast.api.common.7455.description": "JWT(Json Web Token) 발급 로직이 사용자 입력값만을 기준으로 동작할 경우, 매번 동일한 값의 토큰이 반복적으로 생성될 수 있습니다. 이때 공격자가 토큰을 예측하거나 XSS 등으로 탈취하면, 해당 토큰을 만료 전까지 계속 사용할 수 있습니다. 이를 통해 인증을 우회하거나 특정 사용자의 권한을 획득할 수 있습니다.\n토큰은 매번 새로운 값으로 생성되도록 구현해야 합니다. 이를 위해 페이로드에 고유 식별값(jti)이나 발급 시간(iat), 만료 시간(ext) 등을 포함해, 토큰을 구별하고 예측을 어렵게 만들어야 합니다.",
  "rule.dast.api.common.7455.name": "부적절한 JWT 발급",
  "rule.dast.api.common.7456.description": "손상된 객체 수준 권한 부여(Broken Object Level Authorization, BOLA)는 클라이언트가 요청에 포함하는 객체 식별자(ID, UUID 등)에 대해 서버가 적절한 권한 검증을 수행하지 않는 경우 발생하는 취약점입니다. 공격자는 식별자를 조작해 권한이 없는 다른 사용자의 데이터에 무단으로 접근하거나 수정 및 삭제할 수 있습니다.\n손상된 객체 수준 권한 부여(BOLA) 취약점을 방지하려면, 서버는 요청한 사용자가 해당 객체 식별자(ID, UUID 등)에 접근할 권한이 있는지 검증해야 합니다. 또한, 객체 식별자는 예측하기 어렵게 생성해 공격자가 이를 쉽게 추측하거나 조작하지 못하도록 설정해야 합니다.",
  "rule.dast.api.common.7456.name": "손상된 객체 수준 권한 부여(BOLA) - GET 방식",
  "rule.dast.api.common.7457.description": "손상된 객체 수준 권한 부여(Broken Object Level Authorization, BOLA)는 클라이언트가 요청에 포함하는 객체 식별자(ID, UUID 등)에 대해 서버가 적절한 권한 검증을 수행하지 않는 경우 발생하는 취약점입니다. 공격자는 식별자를 조작해 권한이 없는 다른 사용자의 데이터에 무단으로 접근하거나 수정 및 삭제할 수 있습니다.\n손상된 객체 수준 권한 부여(BOLA) 취약점을 방지하려면, 서버는 요청한 사용자가 해당 객체 식별자(ID, UUID 등)에 접근할 권한이 있는지 검증해야 합니다. 또한, 객체 식별자는 예측하기 어렵게 생성해 공격자가 이를 쉽게 추측하거나 조작하지 못하도록 설정해야 합니다.",
  "rule.dast.api.common.7457.name": "손상된 객체 수준 권한 부여(BOLA) - POST 방식",
  "rule.dast.api.common.7458.description": "JWT(Json Web Token)는 전송되는 데이터의 위변조를 방지하기 위해 서명을 포함합니다. 그러나 서버가 JWT의 헤더에 포함된 알고리즘 값을 신뢰하거나 적절히 검증하지 않는 경우, 공격자는 알고리즘을 none으로 변경해 서명 검증을 우회할 수 있습니다.\n\n일부 잘못된 구현에서는 none 알고리즘을 허용하기 때문에, 서명 검증이 생략되고 유효하지 않은 토큰으로도 인증이 통과됩니다. 이를 악용해 공격자는 인증 우회, 권한 상승 등의 공격을 수행할 수 있습니다.\nJWT 서명 우회 취약점을 방지하려면, 서버는 none 알고리즘을 허용해서는 안 됩니다. 또한, 서명 검증 단계에서 서명이 누락되었거나 올바르게 설정되지 않은 경우, 해당 요청을 차단해야 합니다.\n\n대부분의 최신 JWT 라이브러리는 none 알고리즘을 지원하지 않습니다. 그러나 일부 구 버전에서는 이를 허용하므로, 최신 버전을 적용해야 합니다.",
  "rule.dast.api.common.7458.name": "JWT 서명 우회(None Algorithm)",
  "rule.dast.api.common.7459.description": "JWT(Json Web Token)의 핵심 보안 요소는 서명 검증입니다. 서명은 JWT의 헤더와 페이로드를 결합한 뒤, 서버가 보유한 비밀키와 헤더에 정의된 알고리즘을 사용해 생성됩니다. 이를 통해 토큰의 무결성을 보장하고, 데이터 변조 여부를 검증할 수 있습니다.\n\n하지만 서버가 JWT의 서명을 적절히 검증하지 않거나, 비밀키를 빈 문자열(\"\")로 설정했을 경우, 공격자는 별도의 비밀키를 몰라도 유효한 서명을 가진 토큰을 생성할 수 있습니다. 이를 통해 인증 우회나 권한 상승 등의 공격을 수행할 수 있습니다.\n서버는 JWT를 검증할 때, 토큰에 서명이 정상적으로 포함되어 있는지 확인하고, 그 값이 유효한지 검증해야 합니다. 이때 서명에 사용하는 비밀키는 충분히 복잡해야 하며, 빈 문자열이나 추측 가능한 값은 사용하지 않아야 합니다. 또한, 서버는 허용된 알고리즘만 사용하도록 제한하고, 서명이 누락되었거나 변조된 토큰이 감지될 경우 해당 요청을 차단해야 합니다.",
  "rule.dast.api.common.7459.name": "JWT 서명 우회(Blank Secret)",
  "rule.dast.api.common.7460.description": "JWT(Json Web Token)의 핵심 보안 요소는 서명 검증입니다. 서명은 JWT의 헤더와 페이로드를 결합한 뒤, 서버가 보유한 비밀키와 헤더에 정의된 알고리즘을 사용해 생성됩니다. 이를 통해 토큰의 무결성을 보장하고, 데이터 변조 여부를 검증할 수 있습니다.\n\n하지만 서버가 JWT의 서명 검증을 적절히 수행하지 않을 경우, 공격자는 토큰의 서명을 제거하거나 페이로드를 임의로 수정해 인증 우회, 권한 상승 등의 공격을 수행할 수 있습니다. 예를 들어, 페이로드 내 `role`: `user` 값을 `role`: `admin`으로 변경해도, 서버가 서명을 검증하지 않으면 공격자는 관리자 권한을 획득할 수 있습니다.\n서버는 JWT를 검증할 때, 토큰에 서명이 정상적으로 포함되어 있는지 확인하고, 그 값이 유효한지 검증해야 합니다. 또한, 서버는 허용된 알고리즘만 사용하도록 제한하고, 서명이 누락되었거나 변조된 토큰이 감지될 경우, 해당 요청을 차단해야 합니다.",
  "rule.dast.api.common.7460.name": "부적절한 JWT 서명 검증(None Signature)",
  "rule.dast.api.common.7461.description": "JWT(Json Web Token)는 서버에 상태를 저장하지 않는(stateless) 토큰으로, 발급된 토큰은 설정된 만료 시간(exp)까지 유효합니다. 이러한 특성으로 인해 서버가 로그아웃이나 세션 종료 후에도 토큰을 블랙리스트로 관리하지 않으면, 해당 토큰은 만료되기 전까지 계속 유효하게 유지됩니다. 이때 토큰이 예측되거나 XSS 등으로 유출될 경우, 공격자는 이를 재사용해 인증을 우회하거나 다른 사용자의 권한을 획득할 수 있습니다.\n서버는 로그아웃, 세션 종료 또는 이상 행위가 감지된 경우, 사용 중인 Access Token을 블랙리스트에 등록해 더 이상 인증에 사용되지 않도록 해야 합니다. 블랙리스트로 관리할 토큰은 일반 데이터베이스보다 조회 속도가 빠른 인 메모리 저장소(ex. Redis)에 보관하는 것이 권장되며, 토큰의 만료 시간(exp)이 도달하면 자동으로 삭제되도록 구성합니다. 이후 서버는 인증 요청이 들어오면 해당 요청에 포함된 토큰이 블랙리스트에 등록되어 있는지를 확인하고, 등록된 경우 요청을 거부해야 합니다.\n\n또한 Access Token의 유효 기간을 짧게 설정하고, Refresh Token을 사용해 주기적으로 새로운 Access Token을 재발급함으로써 탈취된 토큰의 재사용 가능성을 최소화해야 합니다.",
  "rule.dast.api.common.7461.name": "JWT 재사용",
  "rule.dast.sw.common.3273.description": "크로스 사이트 요청 위조(CSRF)는 임의 사용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점입니다. CSRF는 XSS와 같이 클라이언트를 대상으로 하여 웹 페이지에 스크립트를 삽입하는 방법으로 공격을 수행합니다. 공격자는 악성 스크립트가 포함된 페이지에 접근한 사용자의 권한으로 웹 서비스의 임의 기능을 실행할 수 있습니다.\nCSRF를 막기 위해 FORM 요소에 Anti-CSRF 토큰을 추가해야 합니다. Anti-CSRF 토큰은 FORM 요소 내에 `CSRFToken`, `anticsrf`, `OWASP_CSRFTOKEN` 등의 Anti-CSRF 토큰을 HIDDEN 필드로 추가하여 사용합니다. 혹은 JavaSctipt에서 Anti-CSRF 토큰을 사용할 수 있습니다. 하지만 크로스 사이트 스크립팅이 존재하는 페이지인 경우 토큰을 설정했는지와 관계 없이 크로스 사이트 요청 위조가 실행될 수도 있습니다.",
  "rule.dast.sw.common.3273.name": "CSRF 토큰이 없는 폼 태그",
  "rule.dast.sw.common.4554.description": "파일 절대 경로 노출은 HTTP 응답 메시지나 DOM에 파일 절대 경로가 노출되어 발생하게 되는 취약점입니다. 공격자는 이 취약점을 통해 웹 애플리케이션 서버에 있는 실제 디렉토리나 파일에 접근하도록 시도합니다. 이를 통해 웹 애플리케이션 서버의 중요 정보가 탈취되거나, 의도치 않은 파일이 실행될 수 있습니다. 이 취약점을 방지하기 위해서는 파일 절대 경로가 노출되지 않도록 막아야 합니다.\n발견한 파일 절대 경로를 노출할 필요가 없는 경우, 해당 파일 절대 경로를 HTTP 응답 본문에서 제거하세요.",
  "rule.dast.sw.common.4554.name": "파일 절대 경로 노출",
  "rule.dast.sw.common.4555.description": "관리자 페이지 노출은 관리자 페이지에 대하여 임의의 사용자가 접근할 수 있는 취약점입니다. 공격자는 이 취약점을 이용하여 관리자 페이지에 접근할 수 있습니다. 인증이 필요한 경우 인증하려고 시도할 수 있습니다. 이를 통해 공격자는 서버 또는 웹 애플리케이션 설정을 조작하거나 중요 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 외부의 임의의 사용자가 관리자 페이지에 접근할 수 없도록 접근 권한을 제어해야 합니다.\n관리자 페이지 노출 취약점을 해결하기 위해서는 권한이 없는 임의의 사용자가 관리자 페이지에 접근하지 못하도록 해야 합니다.",
  "rule.dast.sw.common.4555.name": "관리자 페이지 노출",
  "rule.dast.sw.common.4556.description": "AJP 서비스 노출 취약점은 Apache 서버에 대하여, 외부에서 아무런 제한 없이 AJP (Apache JServ Protocol; 웹 서버에서 WAS로 요청을 전달하는 바이너리 프로토콜)를 이용하여 접근할 수 있는 취약점입니다. 이 취약점은 충분하지 않은 AJP 서비스 접근 권한 제어에 의하여 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 AJP 포트의 기본 설정값인 8009로 접속하려고 시도할 수 있습니다. 공격이 성공한 경우, 공격자는 관리자 페이지를 통해 서버 설정 등을 변경할 수 있습니다.\nAJP 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다. 방화벽 등의 도구를 통해 접근 권한을 제어할 수 있습니다.\n\nAJP 서비스 포트 번호의 경우, 기본 포트 번호를 포함한 기본 설정값을 사용하지 않아야 합니다. AJP 서비스의 포트 번호 기본 설정값인 `8009` 대신 다른 포트 번호를 사용해야 합니다.",
  "rule.dast.sw.common.4556.name": "AJP 서비스 노출",
  "rule.dast.sw.common.4557.description": "애플리케이션 오류 취약점은 특정 페이지를 처리하는 과정에서 애플리케이션 오류가 발생하는 취약점입니다. 이 취약점은 특정 오류에 대한 처리가 충분하지 못하거나 사용자의 올바르지 않은 요청을 처리하는 과정에서 발생할 수 있습니다. 사용자가 임의의 페이지에 접근할 때 오류가 발생할 수 있는 페이지로 이동할 수 있습니다. 해당 장애가 발생한 경우, 사용자는 정상적인 서비스 이용에 불편을 겪을 수 있습니다.\n해당 페이지에서 발생하는 애플리케이션 오류를 수정해야 합니다.",
  "rule.dast.sw.common.4557.name": "애플리케이션 오류",
  "rule.dast.sw.common.4558.description": "블라인드 LDAP 삽입 취약점은 사용자 입력에 기반하여 LDAP 문을 구성하는 웹 기반 애플리케이션에 대하여 LDAP 문을 조작할 수 있는 취약점입니다. 공격자는 LDAP 문을 실행할 수 있을 것으로 예상되는 폼 내부에 있는 텍스트 입력과 같은 요소를 이용하여 악성 데이터를 서버로 전송합니다. 이러한 예상이나 공격에는 '('. '|'. '&'. '*' 등과 같은 특수문자를 활용하게 됩니다. 그 결과, 공격자는 특정 속성을 가진 모든 객체를 열람하거나, 인증 경로를 우회하여 허가받지 않은 정보에 접근할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션에서 사용자로부터 입력 받은 값을 검증하고 필터링해야 합니다. 그러기 위해서 올바른 LDAP 인코딩 함수를 사용하도록 합니다. 혹은 자동적으로 검증 및 필터링을 수행하는 프레임워크를 사용할 수 있습니다.\nLDAP문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다. \n\n오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "rule.dast.sw.common.4558.name": "블라인드 LDAP 삽입",
  "rule.dast.sw.common.4559.description": "블라인드 SQL 삽입 취약점은 데이터베이스를 사용하는 서버에 쿼리를 전송하고, 서버의 응답으로부터 쿼리 결과의 참 또는 거짓을 확인할 수 있는 취약점입니다. 이 취약점은 데이터베이스 쿼리를 구성하는 데 사용하는 사용자 입력값에 대한 검증이나 데이터베이스의 비정상적인 동작에 대한 고려가 충분하지 않기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 다양한 공격 문자열에 대한 서버의 응답 내용 간의 차이나 오류 메시지의 존재 여부 등을 확인하여 쿼리 결과의 참 또는 거짓을 확인할 수 있습니다. 공격이 성공한 경우, 공격자는 데이터베이스 관련 정보를 확인하고, 쿼리문을 유추하여, 실제적인 SQL 삽입 공격을 시도할 수 있습니다.\nLDAP문 처리로 인한 오류가 발생한 경우, 적정한 수준의 오류 내용을 출력해야 합니다. \n\n오류 메시지 내용은 일반 사용자로 하여금 오류 상황을 인지할 수 있도록 해야 하며, 동시에 서버 내부의 동작 정보를 유추할 수 없도록 해야 합니다.",
  "rule.dast.sw.common.4559.name": "블라인드 SQL 삽입",
  "rule.dast.sw.common.4560.description": "블라인드 XPath 삽입 취약점은 XPath를 사용하는 서버에 쿼리를 전송하고, 서버의 응답으로부터 쿼리 결과의 참 또는 거짓을 확인할 수 있는 취약점입니다. 이 취약점은 XPath 쿼리를 구성하는 데 사용하는 사용자 입력값에 대한 검증이나 데이터베이스의 비정상적인 동작에 대한 고려가 충분하지 않기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 다양한 공격 문자열에 대한 서버의 응답 내용 간의 차이나 오류 메시지의 존재 여부 등을 확인하여 쿼리 결과의 참 또는 거짓을 확인할 수 있습니다. 공격이 성공한 경우, 공격자는 XPath 데이터 구조 관련 정보를 확인하고, 쿼리문을 유추하여, 실제적인 XPath 삽입 공격을 시도할 수 있습니다.",
  "rule.dast.sw.common.4560.name": "블라인드 XPath 삽입",
  "rule.dast.sw.common.4561.description": "파라미터 쿼리 변환 취약점은 POST 메소드 HTTP 요청 메시지의 매개변수 값을 URL 쿼리 값으로 변경하여 GET 메소드 HTTP 요청 메시지로 보내도 같은 HTTP 메시지를 받는 취약점입니다. 웹 애플리케이션 서버에서 GET 및 POST 요청의 필터가 다름에도 해당 요청에 같은 응답을 전송하면 필터를 우회할 수 있습니다. 공격자는 이 취약점을 이용하여 POST 요청으로는 성공할 수 없는 공격을 GET 요청으로 변환하여 시도할 수 있습니다. 그 결과, 공격자는 정상적인 요청으로는 허용되지 않는 기능이나 중요 정보를 사용하거나 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 POST 메소드 HTTP 요청 메시지와 GET 메소드 HTTP 요청 메시지가 따로 처리되어야 합니다. 또한, GET 및 POST 요청을 같이 처리해야 하는 경우 동일한 필터를 적용해야 합니다.\n이 취약점을 해결하기 위해서는 POST 메소드 HTTP 요청과 GET 메소드 HTTP 요청이 웹 애플리케이션 내부에서 따로 처리되어야 합니다.\n\n만약 같이 처리되어야 하는 경우에는 같은 필터를 적용해야 합니다.",
  "rule.dast.sw.common.4561.name": "파라미터 쿼리 변환",
  "rule.dast.sw.common.4562.description": "끊어진 건너뛰기 링크 체커는 연결 설정이 올바르지 않은 건너뛰기 링크를 검출합니다. 끊어진 건너뛰기 링크로 인해 화면 낭독 프로그램 사용자가 본문 콘텐츠에 접근할 때 페이지에서 공통적이고 반복적인 영역을 매번 다시 듣게 되는 불편을 겪을 수 있습니다. 또한 지체 장애인이 본문 영역까지 스크롤해야 하는 경우에도 이용에 불편이 발생할 수 있습니다. 연결 설정이 올바른 건너뛰기 링크를 제공해야 합니다.",
  "rule.dast.sw.common.4562.name": "끊어진 건너뛰기 링크",
  "rule.dast.sw.common.4563.description": "버퍼 오버플로우 취약점은 웹 애플리케이션의 서버나 웹 서버에서 버퍼 오버플로우를 발생시켜 비정상적인 종료나 행동을 일으키는 취약점입니다. 공격자는 값을 입력하는 웹 요소에 과도하게 긴 문자열을 입력하여 대상 웹 애플리케이션의 오버플로우를 유도할 수 있습니다. 공격자는 버퍼 오버플로우 취약점을 공격하여 웹 애플리케이션의 비정상적 종료나 행동을 유도할 수 있으며, 이를 통해 발생한 에러 메시지에서 정보를 얻을 수 있습니다. 이를 해결하기 위해서는 사용자의 입력 값을 동적 메모리 할당에 직접적으로 사용하지 말아야 하며 오버플로우에 안전한 라이브러리와 함수를 사용해야 합니다.",
  "rule.dast.sw.common.4563.name": "버퍼 오버플로우",
  "rule.dast.sw.common.4564.description": "잘못된 캐시 통제 취약점은 캐시 통제가 정상적으로 이루어지지 않아 캐시 오염이 캐시를 공유하는 여러 유저에게 전염되는 취약점입니다. 공격자는 캐시 통제가 잘못된 페이지의 사용자에게 악의적인 데이터를 주입하여 웹 캐시를 공유하고 있는 모든 사용자에게 주입한 악의적인 데이터를 전염시킬 수 있습니다. 이를 통해 공격자는 웹 캐시를 공유하고 있는 모든 사용자들이 악의적인 코드를 실행하게 할 수 있습니다. 이를 해결하기 위해서는 웹 애플리케이션 설정을 변경하여 HTTP 응답 메시지의 헤더 중 Cache-Control나 Pragma의 값으로 캐시를 통제해야 합니다.",
  "rule.dast.sw.common.4564.name": "잘못된 캐시 통제",
  "rule.dast.sw.common.4565.description": "인증서 무결성 위반 취약점은 올바르지 않은 인증서를 사용하는 취약점입니다. 이 취약점은 인증서의 유효기간, 인증서 발급 대상과 실제 URL의 불일치, 신뢰할 수 없는 인증서 발급자 등으로 인하여 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 브라우저 등에서 이미 발생한 인증서 관련 오류를 이용하여 공격자가 임의로 생성한 인증서로 서버의 인증서를 교체하고, 해당 사실을 사용자가 인지할 수 없도록 강제하게 됩니다. 공격이 성공한 경우, 공격자는 사용자와 서버 간에 통신하는 데이터를 탈취하거나 변조할 수 있습니다.\n인증서의 유효 기간이 만료된 경우, 해당 인증서를 갱신해야 합니다. 또는 기존 인증서 대신 신규 인증서로 교체해야 합니다.",
  "rule.dast.sw.common.4565.name": "인증서 무결성 위반",
  "rule.dast.sw.common.4566.description": "클라이언트가 시작한 SSL 재협상 활성화 취약점은 SSL 통신 도중 클라이언트로부터 재협상을 시작할 수 있는 취약점입니다. 이 취약점은 서버가 클라이언트로부터 SSL 재협상을 시작할 수 있도록 허용함으로써 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 현재 수행 중인 SSL 연결에 대해 강제로 재협상을 시작할 수 있습니다. 공격이 성공한 경우 공격자는 SSL 연결 재협상을 통해 중간자 공격 또는 서비스 거부 공격 등을 수행할 수 있습니다.\n웹 서버 또는 애플리케이션 서버에서 안전하지 않은 SSL 재협상을 허용하지 않도록 제한해야 합니다. JAVA 8 이후 버전을 사용하는 서버의 경우, JVM 옵션에 다음과 같은 옵션을 추가할 수 있습니다.\n\n```\n-Djdk.tls.rejectClientInitiatedRenegotiation=true\n```",
  "rule.dast.sw.common.4566.name": "클라이언트가 시작한 SSL 재협상 활성화",
  "rule.dast.sw.common.4567.description": "코드 삽입 취약점은 웹 애플리케이션이 사용자의 입력 값에 코드 문법을 허용하여 공격자가 코드 삽입을 통해 웹 애플리케이션의 동작 흐름을 제어 할 수 있는 취약점입니다. 공격자는 PHP나 ASP 등의 서버 스크립트 코드를 입력하여 악의적인 코드를 실행할 수 있습니다. 이를 통해 공격자는 웹 애플리케이션에 악성 소프트웨어 설치, 웜 바이러스를 전파, 데이터 손실 및 오염, DoS 등을 일으킬 수 있으며, SQL문 삽입, 경로 조작 등의 치명적인 공격이 가능하도록 만들 수 있습니다. 이를 해결하기 위해서는 사용자의 입력 값에 코드 문법을 허용하지 말아야 합니다. 혹은 허용하더라도 코드에서 특정 의미를 가지는 특수 문자 등을 인코딩하여 사용해야 합니다.",
  "rule.dast.sw.common.4567.name": "코드 삽입",
  "rule.dast.sw.common.4568.description": "운영체제 명령어 삽입 취약점은 서버의 운영체제에서 임의의 명령어를 수행하도록 강제할 수 있는 취약점입니다. 이 취약점은 운영체제 명령문을 구성할 때 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 서버에서 최고 권한을 획득하기 위한 명령어나 서버의 특정 파일을 조작하기 위한 명령어 등을 입력하게 됩니다. 공격이 성공한 경우, 공격자는 중요 위치에 접근하기 위해 권한을 탈취하고 서버의 중요 정보를 탈취하거나 조작할 수 있습니다.\n외부 입력값을 포함하여 운영 체제 명령어를 실행하는 경우, 외부 입력값에 대한 검증이 필요합니다.\n\n\"WINDOWS\" 계열 운영 체제의 경우, 다음과 같은 문자들에 대한 검증이 필요합니다.\n\n```\n(, ), <, >, &, *, ‘, |, =, ?, ;, [, ], ^, ~, !, ., `, %, @, /, \\, :, +, ,, `\n```\n\n\"UNIX\" 계열 운영 체제의 경우, 다음과 같은 문자들에 대한 검증이 필요합니다.\n\n```\n{, }, (, ), <, >, &, *, ‘, |, =, ?, ;, [, ], $, –, #, ~, !, ., `, %, /, \\, :, +, ,, `\n```",
  "rule.dast.sw.common.4568.name": "운영체제 명령어 삽입",
  "rule.dast.sw.common.4569.description": "누락된 Content-Security-Policy (CSP) 헤더는 HTTP 응답 메시지에 CSP 헤더가 없는 취약점입니다. CSP는 Same-Origin-Policy(SOP) 에 근간을 둔 콘텐츠 보안 정책입니다. CSP는 신뢰할 수 있는 콘텐츠 소스의 허용 목록을 생성하고, 브라우저가 이런 소스에서 받은 리소스만을 실행하거나 렌더링하도록 합니다. 공격자는 이 취약점을 이용하여 사용자의 브라우저에서 악의적인 클라이언트 스크립트 실행을 시도할 수 있습니다. 이를 통해 공격자는 사용자의 중요 정보 또는 권한을 탈취할 수 있으며, 사용자가 의도치 않은 행동을 하도록 유도할 수 있습니다. 이를 해결하기 위해서는 Content-Security-Policy 헤더를 추가하여 신뢰할 수 없는 소스에서 리소스를 받지 못하게 막아야 합니다.\n누락된 Content-Security-Policy 헤더 취약점을 해결하기 위해서는 웹 애플리케이션 서버에서 Content-Security-Policy 헤더를 추가해야 합니다. 모든 웹 사이트 내의 콘텐츠를 서브 도메인을 제외한 같은 도메인에서만 제공 받으려면 다음과 같이 사용합니다.\n\n```\nContent-Security-Policy: default-src `self`\n```\n\n서브 도메인을 포함시키려면 다음과 같이 사용합니다.\n\n```\nContent-Security-Policy: default-src `self`*.[분석 대상 요청의 호스트 이름]\n```\n\n이외에도 신뢰할 수 있는 도메인의 리소스를 특정 웹 페이지 요소에서만 사용하도록 설정할 수도 있습니다.\n\n또한, 신뢰할 수 없는 도메인의 리소스가 사용되지는 것을 막지 않고 사용되었다는 정보만을 제공받으려면 다음과 같이 사용합니다.\n\n```\nContent-Security-Policy-Report-Only: policy\n```",
  "rule.dast.sw.common.4569.name": "누락된 Content-Security-Policy (CSP) 헤더",
  "rule.dast.sw.common.4570.description": "누락된 콘텐츠 타입 취약점은 콘텐츠 타입이 누락되어 MIME 타입 스니핑을 유발할 수 있는 취약점입니다. MIME 타입 스니핑이란 MIME 타입이 없거나 잘못 설정됐다 판단되었을 때, 브라우저가 MIME 타입을 추측하여 판단하는 기능을 의미합니다. 공격자는 악의적인 코드가 포함되어 있는 비실행 MIME 타입의 파일을 마치 실행 MIME 타입의 파일인 것처럼 업로드할 수 있습니다. 그 결과 악의적인 코드가 포함되어 있는 파일이 웹 애플리케이션을 통해 실행될 수 있습니다. 이를 해결하기 위해서는 HTTP 응답 메시지에 콘텐츠 유형과 맞는 값을 가진 콘텐트 타입 헤더를 함께 보내야 합니다. 또는 MIME 타입 스니핑을 막기 위해 X-Content-Type-Options 헤더의 값이 nosniff가 되도록 설정해야 합니다.",
  "rule.dast.sw.common.4570.name": "누락된 콘텐츠 타입",
  "rule.dast.sw.common.4571.description": "조작 가능한 폼 액션 취약점은 폼 태그의 액션 속성값을 구성할 때 사용자 입력값을 별도로 필터링하지 않고 직접 사용하는 취약점입니다. 공격자는 폼 내부에 있는 텍스트 입력과 같은 요소를 이용하여 위험한 주소를 서버로 전송합니다. 서버가 해당 데이터를 검증하지 않고 그대로 임의의 Form 개체의 Action 속성 값으로 이용하는 경우, 해당 Form 개체에서 발생하는 요청은 위험한 위치로 전송됩니다. 그 결과, 공격자는 세션, 쿠키와 같은 사용자의 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션에서 사용자로부터 입력 받은 값을 검증하고 필터링해야 합니다.\n해결 방법은 다음과 같습니다.\n\n폼 태그의 액션 속성값을 구성할 때 사용자 입력을 사용하지 않아야 합니다.\n\n사용자 입력을 사용해야 하는 경우, 반드시 해당 값에 대한 검증 및 필터링을 수행해야 합니다.",
  "rule.dast.sw.common.4571.name": "조작 가능한 폼 액션",
  "rule.dast.sw.common.4572.description": "조작 가능한 참조 취약점은 특정 태그의 참조 위치 속성값을 구성할 때 사용자 입력값을 별도로 필터링하지 않고 직접 사용하는 취약점입니다. 공격자는 폼 내부에 있는 텍스트 입력과 같은 웹 요소를 이용하여 위험한 위치 주소를 서버로 전송합니다. 서버가 해당 데이터를 검증하지 않고 그대로 src 속성 또는 href 속성값으로 이용하는 경우, 위험한 위치로부터 리소스를 불러올 수 있습니다. 그 결과, 공격자는 세션, 쿠키와 같은 사용자의 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션에서 사용자로부터 입력 받은 값을 검증하고 필터링해야 합니다.\n해결 방법은 다음과 같습니다.\n\n태그의 참조 속성값을 구성할 때 사용자 입력을 사용하지 않아야 합니다.\n\n사용자 입력을 사용해야 하는 경우, 반드시 해당 값에 대한 검증 및 필터링을 수행해야 합니다.",
  "rule.dast.sw.common.4572.name": "조작 가능한 참조",
  "rule.dast.sw.common.4573.description": "쿠키 HttpOnly 플래그 취약점은 HTTP 응답 메시지의 Set-Cookie 또는 Set-Cookie2 헤더에 HttpOnly 플래그를 설정하지 않은 취약점입니다. HttpOnly 플래그는 클라이언트의 스크립트에서 쿠키에 접근하지 못하도록 막아 대부분의 크로스 사이트 스크립팅 공격을 방지합니다. 공격자는 클라이언트 스크립트를 통해 쿠키에 직접 접근하여 쿠키의 정보를 획득할 수 있습니다. 이를 통해 공격자는 쿠키 정보를 획득하여 허용되지 않은 권한으로 웹 애플리케이션에 접근할 수 있으며, 크로스 사이트 스크립팅 공격에 쿠키를 사용할 수 있습니다. 이를 해결하기 위해서는 웹 애플리케이션의 설정을 통해 HTTP 응답 메시지의 Set-Cookie 또는 Set-Cookie2 헤더에 HttpOnly 플래그를 설정해야 합니다.",
  "rule.dast.sw.common.4573.name": "누락된 쿠키 HttpOnly 플래그",
  "rule.dast.sw.common.4574.description": "쿠키 보안 플래그 취약점은 HTTP 응답 메시지의 Set-Cookie 또는 Set-Cookie2 헤더에 Secure 플래그를 설정하지 않는 취약점입니다. Secure 플래그는 브라우저가 SSL을 사용하는 HTTPS 프로토콜로 이루어진 연결에 대해서만 쿠키를 보내도록 합니다. 공격자는 암호화되지 않고 평문으로 작성된 쿠키에 접근할 수 있습니다. 이를 통해 공격자는 쿠키 정보를 획득하여 허용되지 않은 권한으로 웹 애플리케이션에 접근할 수 있으며, 크로스 사이트 스크립팅 공격에 쿠키를 사용할 수 있습니다. 이를 해결하기 위해서는 웹 애플리케이션의 설정을 통해 응답 메시지의 Set-Cookie 또는 Set-Cookie2 헤더에 Secure 플래그를 설정해야 합니다.",
  "rule.dast.sw.common.4574.name": "누락된 쿠키 보안 플래그",
  "rule.dast.sw.common.4575.description": "신용카드번호 노출 취약점은 특정 페이지에서 신용카드번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내용 중 신용카드번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 신용카드번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 신용카드번호가 노출되는 경우, 해당 신용카드번호 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.\nHTTP 응답 본문에 신용카드번호를 포함하지 않아야 합니다. 일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에서 신용카드번호가 노출되는지를 점검해야 합니다.",
  "rule.dast.sw.common.4575.name": "신용카드번호 노출",
  "rule.dast.sw.common.4576.description": "CRLF 삽입 취약점은 운영 체제에서 줄 바꿈을 의미하는 문자 CR(Carriage Return, ASCII 13)과 LF(Line Feed, ASCII 10)을 입력하여 HTTP 응답 메시지나 웹 애플리케이션 내 소스 코드 등을 의도치 않게 종료시켜 정보를 노출시키는 취약점입니다. 공격자는 웹 애플리케이션 내 소스 코드, HTTP 응답 메시지의 변조 등을 목적으로 값을 입력하는 웹 요소에 CR과 LF를 입력합니다. 이를 통해 공격자는 웹 애플리케이션의 소스 코드나 HTTP 응답 메시지의 헤더 등을 비정상적으로 종료시킬 수 있으며, 종료 이후에 악의적인 소스 코드나 HTTP 응답 메시지의 헤더 값을 삽입할 수도 있습니다. 이를 해결하기 위해서는 HTML에서 사용자가 입력하는 CR을 &#13;으로, LF를 &#10 으로 각각 이스케이프 처리해야 합니다.",
  "rule.dast.sw.common.4576.name": "CRLF 삽입",
  "rule.dast.sw.common.4577.description": "크로스 도메인 스크립트 포함 취약점은 웹 애플리케이션에 신뢰할 수 없는 외부 스크립트를 포함하는 취약점입니다. 공격자는 악의적인 코드가 포함되어 있는 라이브러리 또는 API를 웹 애플리케이션에 포함시킬 수 있습니다. 그 결과 악의적인 코드가 웹 애플리케이션을 통해 지속적으로 실행될 수 있습니다. 이를 해결하기 위해서는 웹 애플리케이션 호스트 이외의 스크립트를 포함시키지 말아야 합니다. 외부 스크립트를 포함시켜야 하는 경우에는 화이트리스트를 만들어 허용된 스크립트만을 포함하도록 하거나, 블랙리스트를 만들어 허용되지 않은 스크립트의 포함을 막아야 합니다.",
  "rule.dast.sw.common.4577.name": "크로스 도메인 스크립트 포함",
  "rule.dast.sw.common.5770.description": "HTML5에서 사용되지 않는 구성 요소 체커는 HTML5에서 더 이상 사용되지 않는 태그, 속성 등을 사용했는지 여부를 검사합니다. HTML5에서 사용되지 않는 구성 요소를 사용하는 경우 최신 브라우저 및 기기를 사용하는 사용자에게 올바른 정보를 전달하지 못할 수 있습니다. 이를 해결하기 위해 HTML5에서 사용되지 않는 구성 요소를 사용하지 않아야 합니다.",
  "rule.dast.sw.common.5770.name": "HTML5에서 사용되지 않는 구성 요소",
  "rule.dast.sw.common.5771.description": "디렉토리 목록화 취약점은 웹 애플리케이션 서버의 잘못된 설정으로 인하여 서버 디렉토리 내부에 있는 파일들이나 다른 디렉토리들이 노출되는 취약점입니다. 공격자가 웹 애플리케이션에 디렉토리 형태의 값을 가진 파라미터를 포함해서 HTTP 응답 메시지를 보내면 웹 애플리케이션의 서버 디렉토리가 목록화 취약점이 드러날 수 있습니다. 이를 통해 공격자는 웹 애플리케이션의 리소스를 분석할 수 있고, 임시 파일이나 덤프 파일 등의 중요한 파일 및 정보를 탈취 할 수 있습니다. 이를 해결하기 위해서는 웹 애플리케이션 서버의 설정을 변경하여 웹 애플리케이션 서버 디렉토리 아래에 있는 모든 경로에 대해서 디렉토리 목록화를 막아야 합니다. 또는 서버 디렉토리 내부에 중요 정보를 두지 않아 디렉토리 목록화가 되어도 의미가 없게 해야 합니다.",
  "rule.dast.sw.common.5771.name": "디렉토리 목록화",
  "rule.dast.sw.common.5772.description": "운전면허번호 노출 취약점은 특정 페이지에서 운전면허번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 운전면허번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 운전면허번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 운전면허번호가 노출되는 경우, 해당 운전면허 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.\nHTTP 응답 본문에 운전면허번호를 포함하지 않아야 합니다. 일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 운전면허번호 노출 여부를 점검해야 합니다.",
  "rule.dast.sw.common.5772.name": "운전면허번호 노출",
  "rule.dast.sw.common.5773.description": "이메일 주소 노출 취약점은 HTTP 응답 메시지나 DOM에 개인 이메일 주소가 노출되는 취약점입니다. 공격자는 이 취약점을 통해 탈취한 이메일을 이용하여 웹 애플리케이션에 로그인을 시도하거나 기업 웹 페이지에 접근을 시도할 수 있습니다. 또한 웹 애플리케이션이나 기업 웹 페이지에 접근하거나, 해당 이메일 주소에 스팸 메일을 보낼 수 있습니다. 이 취약점을 해결하기 위해서는 불필요한 이메일 주소가 웹 페이지에 노출되지 않도록 막아야 합니다.\n발견한 이메일 주소를 노출할 필요가 없는 경우, 해당 이메일 주소를 HTTP 응답 본문에서 제거하세요.",
  "rule.dast.sw.common.5773.name": "이메일 주소 노출",
  "rule.dast.sw.common.5774.description": "검증되지 않은 리다이렉션 취약점은 임의의 사용자를 신뢰할 수 없는 외부 위치로 이동하도록 강제할 수 있는 취약점입니다. 이 취약점은 링크를 구성할 때 사용하는 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 임의의 사용자가 악성 사이트로 이동하는 링크를 클릭하도록 유도하는 피싱 공격 등을 수행할 수 있습니다. 공격이 성공한 경우, 공격자는 악성 사이트로 접근하는 사용자의 민감한 정보를 탈취하거나 조작할 수 있습니다.\n함수 호출로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다. \"분석 대상 함수 시그니쳐\" 함수를 실행하기 전 해당 함수의 \"분석 대상 값 위치\" 번째 매개변수 값을 검사하도록 합니다.",
  "rule.dast.sw.common.5774.name": "검증되지 않은 리다이렉션",
  "rule.dast.sw.common.5775.description": "HTTP 메소드 위조 취약점은 임의의 메소드 HTTP 요청 메시지에 대한 HTTP 응답 메시지가 일반적인 메소드 HTTP 요청 메시지의 HTTP 응답 메시지와 같은 취약점입니다. 웹 애플리케이션에 별도로 처리하지 않는다면 임의의 HTTP 메소드 요청 메시지는 GET 메소드 요청 메시지처럼 처리됩니다. 이로 인해 웹 애플리케이션 보안 설정이 GET이나 POST와 같이 일반적인 HTTP 메소드에 대해서만 다룬다면, 임의의 HTTP 메소드 요청 메시지가 이러한 보안 설정을 피할 수 있습니다. 공격자는 이 취약점을 이용하여 보안 설정으로 인해 접근할 수 없거나 권한이 없어 받을 수 없는 HTTP 응답 메시지를 받기 위해 임의의 HTTP 메소드 요청 메시지를 보낼 수 있습니다. 이를 통해 공격자는 일반적인 HTTP 요청 메시지로는 허용되지 않는 기능이나 중요 정보를 사용하거나 탈취할 수 있습니다. 이를 해결하기 위해서는 임의의 HTTP 메소드 요청을 허용하지 말아야 합니다. 허용해야 하는 경우에는 이러한 임의의 HTTP 메소드 요청에 대한 보안 설정 및 권한 설정을 해주어야 합니다.\n이러한 HTTP 위조 취약점을 해결하기 위해서는 임의의 메소드 HTTP 요청을 허용하지 말아야 합니다.\n\n허용해야 하는 경우에는 이러한 임의의 메소드 HTTP 요청이 일반적인 메소드인 `분석 대상 요청의 기존 메소드` 메소드 HTTP 요청과 같은 보안 설정 및 권한 설정이 적용되도록 만들어야 합니다.",
  "rule.dast.sw.common.5775.name": "HTTP 메소드 위조",
  "rule.dast.sw.common.5776.description": "형식 문자열 삽입 취약점은 사용자의 입력 값이 형식 문자열 사용하는 라이브러리 또는 함수에서 사용되어 공격자가 형식 문자열을 사용할 수 있는 취약점입니다. 공격자는 이 취약점을 이용하여 탈취하고자 하는 정보를 나타내는 형식 문자열이나 스택 정보를 노출시키는 형식 문자열을 악의적으로 입력할 수 있습니다. 그 결과 공격자는 웹 애플리케이션 서버의 버퍼 오버플로우를 일으켜 웹 애플리케이션을 비정상적으로 종료시킬 수 있으며, 스택 정보나 시스템의 중요한 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 형식 문자열을 사용하는 라이브러리 또는 함수에서 사용자의 입력값을 사용하지 않도록 합니다. 사용자 입력값을 사용해야 하는 경우 형식 문자열을 나타내는 % 등의 특수 기호를 이스케이프 처리해야 합니다.\n해결 방법은 다음과 같습니다.\n\n형식 문자열 삽입 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 이용하여 형식 문자열을 구성할 때 데이터를 검증해야 합니다.\n\n입력 받은 데이터가 토큰을 포함하는지의 여부를 확인하는 등 입력 받은 값으로 인하여 오류가 발생하는 경우 오류를 적절하게 처리해야 합니다.\n\n또는 웹 서버, WAS에 존재하는 취약점인 경우 제공하는 최신 패치를 적용하여 취약점을 해결할 수 있습니다.",
  "rule.dast.sw.common.5776.name": "형식 문자열 삽입",
  "rule.dast.sw.common.5777.description": "누락된 XSS 보호 헤더 취약점은 HTTP 응답 메시지의 X-XSS-Protection 헤더가 없거나 제대로 설정되어 있지 않은 취약점입니다. X-XSS-Protection 헤더는 비 지속적 크로스 사이트 스크립팅 감지 시, 페이지 로딩을 중단합니다. 공격자는 이 취약점을 확인하여 비 지속적 크로스 사이트 스크립팅 공격을 시도할 수 있습니다. 그 결과 공격자는 사용자의 정보를 탈취하거나, 서버로 하여금 의도하지 않은 동작을 수행하도록 강제할 수 있습니다. 이를 해결하기 위해서는 웹 애플리케이션의 설정을 변경하여 X-XSS-Protection 헤더를 추가하고 그 값을 0으로 설정해야 합니다.",
  "rule.dast.sw.common.5777.name": "누락된 XSS 보호 헤더",
  "rule.dast.sw.common.5778.description": "Host 헤더 취약점은 Host 헤더가 조작되어 Host 헤더의 값을 사용하는 링크들이 악의적인 사이트로 연결되는 취약점입니다. 공격자는 Host 헤더값을 조작하여 Host 헤더값을 사용하는 링크들을 악의적인 사이트를 가리키도록 바꿀 수 있습니다. 그 결과 공격자는 사용자를 악의적인 사이트로 이동하도록 유도할 수 있으며, 스크립트를 악의적인 사이트에 연결 시켜 정보를 탈취하거나 웹 애플리케이션이 의도치 않은 행동을 하도록 야기할 수 있습니다. 이를 해결하기 위해서는 Host 헤더값을 사용하지 말아야 합니다. 사용해야 한다면, Host 헤더값에 대해 블랙리스트를 만들어 검증되지 않은 값이 들어오지 못하게 막거나, 화이트리스트를 만들어 검증된 값만을 사용해야 합니다.\nHost 헤더 취약점을 해결하기 위한 가장 간단한 방법은 Host 헤더의 값을 사용하지 않는 것입니다.\n\nHost 헤더 값을 사용해야 하는 경우에는, Host 헤더 값을 검증하여 사용해야 합니다.\n\nHost 헤더 값을 검증하기 위한 방법은 일반적으로 화이트리스트 방법과 블랙리스트 방법이 있습니다. 화이트리스트 방법은 검증이 완료된 Host 헤더 값을 목록으로 저장하여 해당 Host 헤더 값만을 받아들이는 방법입니다. 블랙리스트 방법은 위험하다고 판단되는 Host 헤더 값을 목록으로 저장하여 해당 Host 헤더 값이 들어오면 차단하는 방법입니다.\n\n이렇듯 Host 헤더 값을 다양한 방식으로 검증하여 사용하면 Host 헤더 취약점을 해결할 수 있습니다",
  "rule.dast.sw.common.5778.name": "Host 헤더",
  "rule.dast.sw.common.5779.description": "부적절한 제목 체커는 웹 페이지, 프레임, 콘텐츠 블록에 적절하지 않은 제목이 존재하는지 여부를 검출합니다. 웹 페이지의 제목을 누락하는 경우 사용자가 문서 내용을 파악하는 데 불편을 겪을 수 있습니다. 프레임의 제목을 누락하는 경우 프레임 초점이 이동하면 시각장애인, 인지장애인, 심각한 지체장애인과 같은 사용자가 프레임을 파악하는 데 불편을 겪을 수 있습니다. 콘텐츠 블록의 제목을 누락하는 경우 사용자가 제목과 본문을 구분하거나, 제목 간 이동하거나, 문맥을 파악하는 등에 불편이 발생할 수 있습니다. 또한, 제목에 특수 문자를 두 번 이상 반복하여 사용하는 경우에도 화면 낭독 프로그램을 사용하는 시각장애인 사용자가 불편을 겪을 수 있습니다. 이를 해결하기 위해 웹 페이지, 프레임, 콘텐츠 블록에 적절한 제목을 제공해야 합니다.",
  "rule.dast.sw.common.5779.name": "부적절한 제목",
  "rule.dast.sw.common.5780.description": "호환되지 않는 CSS 체커는 페이지를 작성할 때 일부 웹 브라우저에서 지원하지 않는 CSS 속성을 사용한 부분을 검출합니다. 웹 브라우저가 지원하지 않는 CSS 속성을 사용하는 경우 해당 CSS 속성의 처리 방식이 웹 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다. 이를 해결하기 위해 모든 주요 웹 브라우저에서 지원하는 CSS 속성을 사용해야 합니다.",
  "rule.dast.sw.common.5780.name": "호환되지 않는 CSS",
  "rule.dast.sw.common.5781.description": "호환되지 않는 HTML 체커는 일부 웹 브라우저에서 지원하지 않는 HTML 구성 요소를 사용했는지 여부를 검사합니다. 웹 브라우저가 지원하지 않는 HTML 구성 요소를 사용하는 경우 해당 JavaScript 기능의 처리 방식이 웹 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다. 이를 해결하기 위해 모든 주요 웹 브라우저에서 지원하는 HTML 구성 요소를 사용해야 합니다.",
  "rule.dast.sw.common.5781.name": "호환되지 않는 HTML",
  "rule.dast.sw.common.5782.description": "호환되지 않는 Javascript 체커는 일부 웹 브라우저에서 지원하지 않는 Javascript 기능을 사용한 부분을 검사합니다. 웹 브라우저가 지원하지 않는 Javascript 기능을 사용하는 경우 해당 Javascript 기능의 처리 방식이 웹 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다. 이를 해결하기 위해 모든 주요 웹 브라우저에서 지원하는 Javascript 기능을 사용해야 합니다.",
  "rule.dast.sw.common.5782.name": "호환되지 않는 자바스크립트",
  "rule.dast.sw.common.5783.description": "불충분한 세션 종료 취약점은 세션 ID의 만료 기간을 지나치게 길게 설정한 취약점입니다. 이 취약점은 세션 ID를 발급할 때 지나치게 긴 기간 동안 해당 세션 ID가 유효하도록 설정함으로써 발생할 수 있습니다. 이 취약점을 공격하기 위해 공격자는 HTTP 요청 헤더 등으로부터 세션 ID의 유효 기간을 확인할 수 있습니다. 공격이 성공한 경우, 공격자는 로그아웃을 수행하지 않은 임의의 사용자 접속 환경에서 해당 사용자가 남긴 세션 ID를 탈취하고, 해당 정보를 이용하여 사용자의 권한을 획득할 수 있습니다.\n각 세션에 대하여 최소 10분 이후에는 해당 세션이 만료되도록 설정해야 합니다.",
  "rule.dast.sw.common.5783.name": "불충분한 세션 종료",
  "rule.dast.sw.common.5784.description": "적절하지 않은 난수값 사용 취약점은 생성 가능한 난수의 범위가 충분하지 않기 때문에 공격자가 해당 난수를 충분히 예측할 수 있는 취약점입니다. 일부 Debian 계열 운영 체제에 포함된 OpenSSL은 제한된 난수 범위를 사용하여 공개 키를 생성합니다. 이러한 공개 키를 가진 인증서를 통해 HTTPS 통신을 수행하는 경우, 공격자는 해당 키를 예측하여 암호화된 정보를 복호화할 수 있습니다. 이렇게 공격자가 난수를 예측함으로써 암호화를 무력화하고, 특정 정보를 열람하거나 조작할 수 있습니다. 이 취약점을 해결하기 위해서는 공격자가 예측하기 어렵도록 충분한 난수 범위를 보장할 수 있는 API 혹은 난수 생성 도구를 사용해야 합니다.\n해결 방법은 다음과 같습니다.\n\n취약점이 제거된 버전의 OpenSSL을 사용해야 합니다.\n\n취약점에 관련된 자세한 정보 및 취약점이 존재하는 OpenSSL에 관한 정보는 다음을 참고하세요.\n\n```\nhttp://www.securityfocus.com/bid/29179/\n```",
  "rule.dast.sw.common.5784.name": "적절하지 않은 난수값 사용",
  "rule.dast.sw.common.5785.description": "충분하지 않은 키 길이 사용 취약점은 검증된 암호화 알고리즘을 사용한 경우에도 키 길이가 충분하지 않기 때문에 공격자가 키를 찾아내어 임의로 복호화를 수행할 수 있는 취약점입니다. 일반적으로 암호화 알고리즘 및 키 생성 알고리즘은 공개되어 있습니다. 따라서 공격자도 임의로 키를 생성할 수 있습니다. 키 길이가 짧은 경우, 공격자는 계산을 통해 모든 키를 찾아내어 복호화를 시도할 수 있습니다. 그 결과 공격자는 키를 찾아내어 암호화된 정보를 임의로 열람하거나 조작할 수 있습니다. 키 길이가 충분히 길어야 계산을 통한 키 획득이 어려워지므로 이 취약점을 해결하기 위해서는 키 길이가 충분히 길어야 합니다. 대칭 키의 경우 키 길이는 최소한 128비트 이상이어야 합니다. 암호 작성법 지침에서는 RSA 알고리즘을 사용하고 2,048비트 이상의 키 길이를 사용하도록 권고하고 있습니다.\n해결 방법은 다음과 같습니다.\n\nHTTPS 연결 시 사용하는 인증서의 키 길이는 \"2048\" bit 이상이어야 안전합니다. 인증서를 업데이트하거나, 키 길이를 확장하세요.\n\n추가적으로 키 암호화 알고리즘 및 키의 유효기간을 고려해야 합니다.",
  "rule.dast.sw.common.5785.name": "충분하지 않은 키 길이 사용",
  "rule.dast.sw.common.5786.description": "잘못된 CSS 체커는 CSS 문법을 준수했는지 여부를 검사합니다. 표준 CSS 문법을 준수하지 않는 경우 해당 페이지의 처리 방식이 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다. 이를 해결하기 위해 표준 CSS 문법을 준수해야 합니다.",
  "rule.dast.sw.common.5786.name": "잘못된 CSS",
  "rule.dast.sw.common.5787.description": "잘못된 HTML 체커는 페이지 내용 중 표준 (X)HTML 문법을 준수하지 않은 부분이 존재하는지 여부를 검사합니다. 페이지를 작성할 때 표준 (X)HTML 문법을 준수하지 않는 경우 해당 페이지의 처리 방식이 브라우저마다 다르기 때문에 사용자에게 전달하는 정보에 차이가 발생할 수 있습니다. 이를 해결하기 위해 페이지를 작성할 때 표준 (X)HTML 문법을 준수해야 합니다.",
  "rule.dast.sw.common.5787.name": "잘못된 HTML",
  "rule.dast.sw.common.5788.description": "잘못된 링크 텍스트 체커는 링크 텍스트가 적절하지 않은 링크를 검출합니다. 링크 텍스트가 적절하지 않은 경우 사용자가 링크를 클릭했을 때 반응이나 이동할 페이지를 예측하기 어려울 수 있습니다. 이를 해결하기 위해 링크의 용도나 목적을 이해할 수 있도록 링크 텍스트를 제공해야 합니다.",
  "rule.dast.sw.common.5788.name": "잘못된 링크 텍스트",
  "rule.dast.sw.common.5789.description": "JMX/RMI 서비스 노출 취약점은 외부에서 아무런 제한 없이 JMX (Java Management eXtensions: 응용 프로그램, 객체, 장치, 네트워크 등을 감시하기 위한 도구를 제공하는 Java API) 및 RMI (Remote Method Invocation: Java에서의 RPC(Remote Procedure Call) 인터페이스 구현체) 서비스로 접근할 수 있는 취약점입니다. 이 취약점은 충분하지 않은 JMX/RMI 서비스 접근 권한 제어로 인해 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 JMX/RMI 포트의 기본 설정값인 1099로 접속하려고 시도할 수 있습니다. 공격이 성공한 경우, 공격자는 관리자 권한을 획득하여 JVM의 내부 정보를 탈취하고 조작하거나, JVM 내부의 클래스를 동적으로 조작할 수 있습니다.\nJMX/RMI 서비스를 사용하는 경우, 허가 없이 외부에서 접근할 수 없도록 접근 권한을 제어해야 합니다. 방화벽 등의 도구를 통하여 접근 권한을 제어할 수 있습니다.\n\nJMX/RMI 서비스를 사용하는 경우, 기본 포트 번호를 포함한 기본 설정값을 사용하지 않아야 합니다. JMX/RMI 서비스의 포트 번호 기본 설정값인 `1099` 대신 다른 포트 번호를 사용해야 합니다.",
  "rule.dast.sw.common.5789.name": "JMX/RMI 서비스 노출",
  "rule.dast.sw.common.5790.description": "로컬 파일 포함 취약점은 서버 파일 시스템 내부에 존재하는 파일의 내용을 특정 페이지에 포함시킬 수 있는 취약점입니다. 이 취약점은 페이지 내부에 포함된 파일 경로를 구성하기 위해 검증되지 않은 사용자 입력값을 사용하는 경우에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 업로드한 임의의 악성 파일을 페이지 내부에 삽입하거나, 비밀번호와 같이 서버의 민감한 정보를 포함하는 파일의 내용을 페이지 내부에 포함하게 됩니다. 공격이 성공한 경우, 공격자는 서버의 중요 정보를 탈취하고 조작하거나 악성 코드를 실행할 수 있습니다.\n함수 호출로 인해 취약점이 발생하지 않도록 방지하기 위해, 함수를 호출할 때 매개변수 값을 검사해야 합니다. \"분석 대상 함수 시그니쳐\" 함수를 실행하기 전 해당 함수의 \"분석 대상 값 위치\" 번째 매개변수 값을 검사하도록 합니다.",
  "rule.dast.sw.common.5790.name": "로컬 파일 포함",
  "rule.dast.sw.common.5791.description": "대체 텍스트 누락 체커는 대체 텍스트를 제공하지 않는 텍스트가 아닌 콘텐츠를 검출합니다. 텍스트가 아닌 콘텐츠에 대하여 대체 텍스트를 누락하는 경우 시각장애인과 같은 일부 사용자가 잘못된 정보를 얻거나 전혀 정보를 얻지 못할 수 있습니다. 텍스트가 아닌 콘텐츠의 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 합니다.",
  "rule.dast.sw.common.5791.name": "대체 텍스트 누락",
  "rule.dast.sw.common.5792.description": "기본 언어 표시 누락 체커는 주로 사용하는 기본 언어를 명시하지 않은 페이지를 검출합니다. 페이지에서 주로 사용하는 기본 언어를 명시하지 않은 경우, 화면 낭독 프로그램이 언어를 인식하여 자동으로 음성을 변환하거나, 해당 언어에 적합한 발음을 제공하지 못하도록 할 수 있습니다. 이를 해결하기 위해 페이지에서 주로 사용하는 기본 언어를 명시해야 합니다.",
  "rule.dast.sw.common.5792.name": "기본 언어 표시 누락",
  "rule.dast.sw.common.5793.description": "레이블 누락 체커는 입력 서식에서 레이블이 누락되었는지 여부를 검출합니다. 레이블을 누락하는 경우 장애가 있는 사용자가 서식에 자료를 입력하는 데 불편을 겪을 수 있습니다. 이를 해결하기 위해 입력 서식에 대응하는 레이블을 제공해야 합니다.",
  "rule.dast.sw.common.5793.name": "레이블 누락",
  "rule.dast.sw.common.5794.description": "혼합된 콘텐츠 취약점은 SSL을 사용하는 HTTPS 웹 페이지에 HTTP 콘텐츠가 포함되어 있는 취약점입니다. HTTP 콘텐츠로 인해 HTTPS 웹 페이지의 보안이 깨질 수 있습니다. 공격자는 보안이 부족한 HTTP 콘텐츠를 공격하거나 스니핑을 유도하여 HTTPS 웹 페이지의 보안을 깨뜨릴 수 있습니다. 그 결과, 공격자는 사용자의 정보를 탈취하거나 웹 애플리케이션이 비정상적인 행동을 수행하도록 강제할 수 있습니다. 이 취약점을 해결하기 위해서는 HTTPS 웹 페이지 내에서 HTTP 콘텐츠를 사용하지 말아야 합니다. 만약 사용해야 하는 경우라면 HTTPS 웹 페이지와 분리하여 별도로 사용해야 합니다.",
  "rule.dast.sw.common.5794.name": "혼합된 콘텐츠",
  "rule.dast.sw.common.5795.description": "비표준 기술 사용 체커는 비표준 기술을 사용한 부분을 검출합니다. 비표준 기술을 사용하는 경우 해당 기술을 사용할 수 없는 사용자가 서비스를 이용하는 데 불편이 발생할 수 있습니다. 이를 해결하기 위해 페이지를 작성할 때 비표준 기술을 사용하지 않아야 합니다.",
  "rule.dast.sw.common.5795.name": "비표준 기술 사용",
  "rule.dast.sw.common.5796.description": "입력 누락에 대한 반응 없음 체커는 사용자가 누락한 입력에 대해 적절한 반응이 없는 경우를 검출합니다. 사용자가 누락한 입력에 대해 적절한 반응이 없는 경우, 사용자 스스로가 잘못 입력했는지 여부를 파악하기가 어려울 수 있습니다. 이를 해결하기 위해 사용자가 누락한 입력에 대한 적절한 반응을 제공해야 합니다.",
  "rule.dast.sw.common.5796.name": "입력 누락에 대한 반응 없음",
  "rule.dast.sw.common.5797.description": "OPTIONS 메소드는 현재 웹 서버에서 지원하는 HTTP 메소드의 종류를 확인할 때 사용할 수 있는 메소드입니다. OPTIONS 메소드 요청을 허용하는 경우 공격자가 웹 서버를 보다 효과적으로 공격할 수 있게 됩니다. 공격자는 OPTIONS 메소드에 해당하는 임의의 요청을 서버로 전송합니다. 그 결과, 공격자는 서버로부터 OPTIONS 메소드 요청에 대한 정상 응답을 수신하여 해당 웹 서버에서 허용하는 메소드 목록에 대한 정보를 탈취할 수 있습니다. 그리고 추가적인 공격을 위한 자료로 활용할 수 있습니다. 이 취약점을 해결하기 위해서는 불필요한 OPTIONS 메소드 요청을 허용하지 않도록 조치가 필요합니다.\n임의의 사용자에 의한 OPTIONS 메소드 HTTP 요청은 허용하지 않도록 권장합니다. 이를 위하여 적절한 서버 설정이 필요합니다.",
  "rule.dast.sw.common.5797.name": "비인가된 OPTIONS HTTP 메소드 사용",
  "rule.dast.sw.common.5798.description": "파라미터 변조 취약점은 URL이나 폼 태그 등의 파라미터를 탈취한 후 그 값을 변조하여 공격하는 취약점입니다. 공격자는 웹 애플리케이션의 파라미터를 탈취하여 웹 애플리케이션 데이터베이스 서버에 오류를 발생시키는 값을 삽입할 수 있습니다. 또한, 웹 애플리케이션에서 중요 정보를 나타내는 파라미터 값을 변조할 수 있습니다. 이를 통해 공격자는 파라미터에 악의적인 값을 넣고 웹 애플리케이션이 처리하게 만들어서 다른 사용자의 세션이나 입력값을 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 파라미터 값에 제약사항을 두어 유효성 검사를 강화해야 합니다. 또한 화이트리스트를 통해 승인된 값만을 받아들이거나 블랙리스트를 통해 허용되지 않은 값을 제외해야 합니다.",
  "rule.dast.sw.common.5798.name": "파라미터 변조",
  "rule.dast.sw.common.5799.description": "여권번호 노출 취약점은 특정 페이지에서 여권번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 여권번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 여권번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 여권번호가 노출되는 경우, 해당 여권 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.\nHTTP 응답 본문에 여권번호를 포함하지 않아야 합니다. 일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 여권번호 노출 여부를 점검해야 합니다.",
  "rule.dast.sw.common.5799.name": "여권번호 노출",
  "rule.dast.sw.common.5800.description": "비밀번호 자동 완성 취약점은 사용자의 편의성을 위해 암호를 자동으로 완성하는 기능으로 인해 발생하는 취약점입니다. 공격자는 비밀번호 자동 완성 기능이 있는 폼 태그와 유사한 태그를 사용하여 비밀번호 자동 완성을 유도할 수 있습니다. 혹은 공용으로 쓰이는 기기에서 다른 사용자의 정보를 탈취할 수 있습니다. 이를 통해 공격자는 다른 사용자의 계정에 접근하거나 사용자의 정보를 악용할 수 있습니다. 이 취약점을 해결하기 위해서는 폼 태그 또는 비밀번호를 입력하는 태그에 값이 off인 autocomplete 속성을 추가해야 합니다. autocomplete 속성의 값이 off이면 브라우저에서 비밀번호를 자동으로 완성하거나 비밀번호를 브라우저 캐시에 저장하지 않도록 방지합니다.",
  "rule.dast.sw.common.5800.name": "비밀번호 자동 완성",
  "rule.dast.sw.common.5801.description": "경로 조작 취약점은 사용자 입력값이 디렉토리 경로 문자열에 사용되어 웹 애플리케이션의 최상단 디렉토리 이외의 파일 시스템이 노출되는 취약점입니다. 공격자는 대부분의 파일 시스템에서 부모 디렉토리를 나타내는 `..`와 디렉토리를 나타내는 `/` 등을 디렉토리 경로 문자열에 사용되는 입력 값으로 넣을 수 있습니다. 그 결과, 웹 애플리케이션의 최상단 디렉토리 이외의 파일 시스템에 접근하여 웹 애플리케이션의 소스 코드나 시스템 파일 등의 중요한 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 파일 시스템의 파일 및 디렉토리에 접근하는 데 사용자의 입력값을 사용하지 말아야 합니다. 만약 사용해야 한다면 파일 시스템에서 의미를 가지는 `..`이나 `/`와 같은 특수 문자를 변경해서 사용해야 합니다.\n해결 방법은 다음과 같습니다.\n\n외부 입력값을 포함하는 경로로 접근할 수 있는 가능성을 제거하는 것이 가장 좋습니다.\n\n제거할 수 없는 경우, 입력받은 값에 대하여 검증 및 필터링을 수행해야 합니다.",
  "rule.dast.sw.common.5801.name": "경로 조작",
  "rule.dast.sw.common.5802.description": "PHF CGI 원격 명령 실행 취약점은 특정 쉘 메타 캐릭터를 포함하는 GET 요청을 보냄으로써 PHF CGI 프로그램을 실행할 수 있는 취약점입니다. 공격자는 이 취약점을 이용하여 원격 서버에서 httpd 프로세스의 권한을 가진 상태로 악성 쉘 코드를 실행할 수 있습니다. 이를 통해 서버 내부의 접근이 제한된 파일에 접근하거나, 특정 파일을 수정 또는 생성할 수 있습니다. 이 취약점을 해결하기 위해서는 escape_shell_cmd() 함수를 사용하는 CGI 프로그램을 사용하지 않거나, 해당 함수를 사용하지 않도록 CGI 프로그램을 수정해야 합니다.\n이 취약점을 해결하기 위해서 다음과 같은 지침을 따르세요.\n\nPHF와 같이 `escape_shell_cmd()` 함수를 사용하는 취약한 CGI 프로그램을 사용하지 않도록 합니다.\n\n사용해야만 하는 경우, `escape_shell_cmd()` 함수를 사용하지 않도록 CGI 프로그램을 수정하세요.",
  "rule.dast.sw.common.5802.name": "PHF CGI 원격 명령 실행",
  "rule.dast.sw.common.5803.description": "예측 가능한 세션 취약점은 세션 ID를 발급할 때 존재하는 규칙을 통해 특정 세션 ID를 예측할 수 있는 취약점입니다. 이 취약점은 지나치게 단순한 규칙을 사용하여 세션 ID를 발급하는 경우에 발생할 수 있습니다. 이 취약점을 공격하기 위해 시간이나 접속 환경 등을 변경하여 얻게 되는 다수의 세션 ID 값을 비교할 수 있습니다. 공격이 성공한 경우, 공격자는 반복된 예측을 통해 임의의 사용자가 남긴 세션 ID를 탈취하고, 해당 정보를 이용하여 사용자의 권한을 획득할 수 있습니다.\n클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다. 세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.",
  "rule.dast.sw.common.5803.name": "예측 가능한 세션",
  "rule.dast.sw.common.5804.description": "개별 주소 노출 취약점은 웹 페이지에 개별 IP 주소가 노출되는 취약점입니다. 공격자는 웹 페이지에 노출된 개별 IP 주소를 사용하여 웹 애플리케이션을 공격할 수 있습니다. 그 결과, 웹 애플리케이션을 운영하는 단체에 속한 개별 IP 주소를 사용하여 웹 애플리케이션의 공용 IP로는 불가능한 공격을 시도함으로써 웹 애플리케이션의 정보를 탈취하거나 웹 애플리케이션에 허용되지 않은 권한으로 접근할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션 내에 개별 IP 주소를 사용하지 않아야 합니다. 또한 개별 IP 주소가 노출될 가능성이 높은 부분을 검사하고, 개별 IP 주소를 사용해야 하는 경우 개별 IP 주소를 다른 식별자로 변경하여 사용하도록 합니다.",
  "rule.dast.sw.common.5804.name": "개별 주소 노출",
  "rule.dast.sw.common.5805.description": "원격 파일 포함 취약점은 웹 애플리케이션이 파일을 업로드하거나 실행할 때 사용자의 입력값을 사용함으로써 악의적인 코드가 포함된 파일이 업로드되거나 실행되는 취약점입니다. 공격자는 원격 파일 포함 취약점에 악의적인 코드가 포함된 파일을 업로드하여 웹 애플리케이션 내에서 지속적으로 악의적인 코드를 실행할 수 있습니다. 또한 특정 권한 없이 서버의 정보를 열람하거나 조작할 수 있습니다. 이로 인해 개인정보 유출, 중요 정보 조작, 금전적 피해 등이 발생할 수 있습니다. 이 취약점을 해결하기 위해서는 파일을 업로드하거나 실행하는 경우 사용자 입력을 사용하지 말아야 합니다. 사용자의 입력값을 사용해야 하는 경우 화이트리스트를 만들어 인증된 파일만 포함 및 실행하거나, 블랙리스트를 만들어 인증되지 않은 파일을 제외해야 합니다.",
  "rule.dast.sw.common.5805.name": "원격 파일 포함",
  "rule.dast.sw.common.5806.description": "주민등록번호 노출 취약점은 특정 페이지에서 주민등록번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 주민등록번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 주민등록번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 주민등록번호가 노출되는 경우, 해당 주민등록 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.\nHTTP 응답 본문에 주민등록번호를 포함하지 않아야 합니다. 일반 텍스트, 주석문 등 모든 HTTP 응답 본문의 구성 요소에 대하여 주민등록번호 노출 여부를 점검해야 합니다.",
  "rule.dast.sw.common.5806.name": "주민등록번호 노출",
  "rule.dast.sw.common.5807.description": "주석문 안에 포함된 시스템 주요 정보 취약점은 브라우저를 통해 불특정 다수가 확인할 수 있는 주석문 내부에 시스템의 주요 정보가 포함되어 있는 취약점입니다. 공격자는 브라우저의 \"소스 보기\" 기능을 활용하여 HTML 주석문의 존재 여부를 확인할 수 있습니다. 그리고 주석문이 존재하는 경우, 주석문 내부에 시스템 주요 정보가 포함되어 있는지를 확인할 수 있습니다. 그 결과, 공격자는 추가적인 공격을 위한 정보로서 주석문 안에 포함된 시스템 주요 정보를 이용할 수 있습니다. 즉, 시스템 정보 노출만으로는 공격의 영향이 미미하지만 이를 통해 공격자가 정확한 공격을 수행할 수 있기 때문에 보안 위험도를 더욱 증가시키는 효과를 발생시킵니다. 이 취약점을 해결하기 위해 주석문을 검토하여 민감한 정보를 포함하지 않도록 합니다. 또한 HTML 주석문 대신 서버측 주석을 사용하도록 합니다. 서버측 주석은 브라우저를 통해 노출되지 않기 때문입니다.\n해결 방법은 다음과 같습니다.\n\n주석문은 비밀번호와 같이 중요한 정보를 포함할 수 있습니다. 해당 정보는 브라우저의 소스 보기 기능 등을 통해 사용자가 손쉽게 확인할 수 있습니다.\n\n이러한 정보 노출을 방지하기 위하여 다음과 같은 주석문은 사용하지 않도록 하세요.\n\n```\n<!-- HTML comments here -->\n/* JavaScript comments here */\n```\n\n대신 클라이언트에서 확인할 수 없는 다음과 같은 서버측 주석을 사용하세요.\n\n```\n<%-- Server-side comments here --%>\n```",
  "rule.dast.sw.common.5807.name": "주석문 안에 포함된 시스템 주요정보",
  "rule.dast.sw.common.5808.description": "오류 페이지 내의 민감한 정보 취약점은 오류 페이지에서 서버의 민감한 정보가 노출되는 취약점입니다. 민감한 정보를 포함하는 오류 페이지를 충분히 검토하지 않거나 처리하지 않은 경우에 이 취약점이 발생할 수 있습니다. 공격자는 오류 페이지에 노출된 민감한 정보를 통하여 서버의 특징을 파악하고 추가적인 공격을 수행할 수 있습니다. 그 결과, 추가적인 공격으로 인해 서버의 중요 정보가 유출되거나 위조되는 등 2차적인 피해가 발생하게 됩니다.",
  "rule.dast.sw.common.5808.name": "오류 페이지 내의 민감한 정보",
  "rule.dast.sw.common.5809.description": "Meta 태그 안에 포함된 민감한 정보 취약점은 애플리케이션의 특정 페이지의 Meta 태그 내부에 민감한 정보가 존재하는 취약점입니다. 이 취약점은 개발 또는 테스트 과정 중에서 Meta 태그에 기재했던 민감한 정보를 제거하지 않았기 때문에 발생합니다. 공격자는 공격을 수행하기 위해 검색 엔진과 같은 사이트 외부에서 Meta 태그 안에 존재하는 민감한 정보를 조회할 수 있습니다. 공격이 성공한 경우, 공격자는 서버의 중요 정보를 탈취하고, 해당 정보를 이용하여 추가적인 공격을 수행할 수 있습니다. \n서버 구성 요소의 버전 정보를 노출하지 않아야 합니다. {0} 태그의 경우 외부 사이트에서 참조할 수 있으므로, 민감한 정보를 포함하지 않아야 합니다.",
  "rule.dast.sw.common.5809.name": "Meta 태그 안에 포함된 민감한 정보",
  "rule.dast.sw.common.5810.description": "중요 정보 평문 전송 취약점은 민감한 정보를 평문으로 전송하는 취약점입니다. 통신에서 평문으로 데이터를 주고 받는 도중 공격자가 임의의 데이터를 가로챌 수 있습니다. 이러한 공격을 위해 공격자는 패킷 스니핑 등의 기법 혹은 도구를 이용할 수 있습니다. 그 결과 공격자는 적절한 권한 없이 특정 데이터를 열람할 수 있습니다. 이 취약점을 해결하기 위해서는 개인 정보 및 인증 정보와 같은 민감한 정보는 반드시 암호화하여 전송해야 합니다. 민감한 정보를 포함하는 통신의 경우, SSL 혹은 TLS를 사용한 HTTPS 프로토콜을 통해 통신을 수행하도록 할 수 있습니다. \n해결 방법은 다음과 같습니다.\n\n의도하지 않은 노출을 막기 위하여 민감한 정보는 반드시 암호화하여 전송해야 합니다.\n\n민감한 정보를 암호화하여 전송하기 위해서는 SSL을 통해 HTTPS 프로토콜을 사용할 수 있습니다.\n\n또는 자체적으로 해당 정보를 암호화한 뒤 HTTP 프로토콜을 통해 전송할 수도 있습니다.",
  "rule.dast.sw.common.5810.name": "중요 정보 평문 전송",
  "rule.dast.sw.common.5811.description": "SSI 삽입 취약점은 사용자의 입력 값이 SSI에 사용되어 웹 애플리케이션에 악의적인 코드를 보내는 취약점입니다. SSI(Server Side Includes)란 HTML 태그 외에 웹 서버에서 해석하여 브라우저로 전달하는 간단한 서버 스크립트 언어입니다. 공격자는 악의적인 코드를 포함한 SSI를 입력하여 웹 애플리케이션 내에서 악의적인 코드를 실행할 수 있습니다. 그 결과 공격자는 웹 서버 사용자 권한으로 OS 명령어를 수행하거나 악의적인 파일을 페이지에 포함시킬 수 있습니다. 이 취약점을 해결하기 위해서는 사용자의 입력값을 SSI에 사용하지 말아야 합니다. 사용자의 입력값을 사용해야 하는 경우 SSI가 반드시 필요한 페이지에서 특정 SSI 지시문만을 허용해야 합니다.",
  "rule.dast.sw.common.5811.name": "SSI 삽입",
  "rule.dast.sw.common.5812.description": "세션 고정 취약점은 임의의 클라이언트에 고정적인 세션 ID를 반복해서 발급하는 경우 발생할 수 있는 취약점입니다. 이 취약점은 로직이 가변적인 세션 ID를 발급하지 못하기 때문에 발생합니다. 공격자는 특정 사용자가 발급 받은 세션 ID를 유추하여 탈취할 수 있습니다. 공격자는 탈취한 세션 ID를 이용하여 특정 사용자의 권한을 획득할 수 있습니다.\n클라이언트가 접속을 시도할 때마다 다른 세션 ID를 발급해야 합니다. 세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.\n\n각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "rule.dast.sw.common.5812.name": "세션 고정",
  "rule.dast.sw.common.5813.description": "URL에 세션 ID 노출 취약점은 URL 내에서 세션 ID가 노출되는 취약점입니다. 공격자는 해당 취약점을 이용하여 URL에 노출된 다른 사용자의 세션 ID를 탈취할 수 있습니다. 그 결과 공격자는 다른 사용자의 권한으로 웹 애플리케이션 내에서 활동할 수 있으며, 웹 애플리케이션에 다른 URL이 존재하는 경우에 다른 사용자의 권한으로 해당 사이트에서 활동할 수 있습니다. 이 취약점을 해결하기 위해서는 URL 내에서 세션 ID를 노출시키지 않아야 합니다. 또한 세션 만료 기한을 두어 세션 ID가 노출되더라도 지속적인 피해가 발생하지 않도록 막아야 합니다.",
  "rule.dast.sw.common.5813.name": "URL 내 세션 ID",
  "rule.dast.sw.common.5814.description": "세션 재사용 취약점은 특정 세션 ID 값을 설정한 것으로 인해 인증을 우회하게 되는 취약점입니다. 이 취약점은 클라이언트의 접속 환경에 관계 없이 하나의 세션 ID만을 사용하는 인증 로직으로 인하여 발생합니다. 공격자는 공격을 수행하기 위해 특정 환경에서 임의의 사용자가 발급 받은 세션 ID를 탈취하거나 유추할 수 있습니다. 공격이 성공한 경우, 공격자는 탈취한 세션 ID를 이용하여 특정 사용자의 권한을 획득할 수 있습니다. \n클라이언트의 로그인 시도마다 다른 세션 ID를 발급해야 합니다. 세션 ID는 추측하기 어려운 임의의 값으로 지정해야 합니다.\n\n각 세션 ID에 대하여 만료 기간을 설정해야 합니다.",
  "rule.dast.sw.common.5814.name": "세션 재사용",
  "rule.dast.sw.common.5815.description": "Slowloris HTTP DOS 취약점은 다수의 미완성 헤더를 포함하는 HTTP GET 요청을 전송함으로써, 서버에서 사용 가능한 HTTP 연결을 강제로 점유하는 취약점입니다. 이 취약점은 HTTP 요청에 대한 최대 동시 접속 허용 수 혹은 연결 타임아웃 등 연결 제어를 설정하지 않은 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 HTTP GET 요청 헤더의 마지막 CRLF를 제거한 뒤, 일정 간격을 두고 해당 HTTP 요청을 반복적으로 서버에 전송할 수 있습니다. 공격이 성공한 경우, 공격자는 서버의 가용 HTTP 연결을 모두 소진시킴으로써 서버가 일반 사용자의 요청을 처리하지 못하거나 응답을 거부하도록 할 수 있습니다.\n각 HTTP 요청에 대한 제한시간 값을 적정한 수준으로 조정하여, 단일 HTTP 요청이 지나치게 긴 시간 동안 세션을 점유하지 않도록 합니다. 제한시간을 설정하기 어려운 경우 웹 캐시 소프트웨어를 통해 트래픽 장애를 방지할 수 있습니다.",
  "rule.dast.sw.common.5815.name": "Slowloris HTTP DOS",
  "rule.dast.sw.common.5816.description": "Slow HTTP POST 공격 취약점은 다수의 HTTP POST 요청 본문을 분할하여 전송함으로써, 서버의 사용 가능한 HTTP 연결을 강제로 점유하는 취약점입니다. 이 취약점은 HTTP 요청 본문의 최대 길이 상한값을 지정하지 않거나, HTTP 요청에 대한 최대 동시 접속 허용 수 혹은 연결 타임아웃 등 연결 제어를 설정하지 않은 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 HTTP POST 요청의 Content-Length 헤더의 값을 매우 크게 설정하고, 해당 HTTP 요청의 본문을 작은 단위로 나누어 느린 속도로 전송하게 됩니다. 공격이 성공한 경우, 공격자는 서버의 가용 HTTP 연결을 모두 소진시킴으로써 서버가 일반 사용자의 요청을 처리하지 못하거나 응답을 거부하도록 할 수 있습니다. \n각 HTTP 요청에 대한 제한시간 값을 적정한 수준으로 조정하여, 단일 HTTP 요청이 지나치게 긴 시간 동안 세션을 점유하지 않도록 합니다. 제한시간을 설정하기 어려운 경우 웹 캐시 소프트웨어를 통해 트래픽 장애를 방지할 수 있습니다.\n\n각 HTTP 요청에 대하여 `Content-Length` 헤더 값의 상한을 지정해야 합니다. 임의의 HTTP 요청에서 `Content-Length` 헤더 값이 상한을 초과하는 경우, 해당 HTTP 요청을 처리하지 않도록 거부해야 합니다.",
  "rule.dast.sw.common.5816.name": "Slow HTTP Post Attack",
  "rule.dast.sw.common.5817.description": "Snoop 서블릿 정보 노출 취약점은 Snoop 서블릿에서 서버 정보가 유출됨으로써 발생하는 취약점입니다. Snoop 서블릿은 HTTP 요청 변조 등에 의해 서버의 호스트, 서버 타입, 서버 버전, 경로 등의 중요 정보가 유출되는 취약점을 가지고 있습니다. 이러한 Snoop 서블릿을 사용한 Apache Tomcat 3.0, 3.1과 IBM WebSphere 8.0 이하 버전도 마찬가지 취약점을 가지고 있습니다. 공격자는 Snoop 서블릿이 위치할 것으로 추측되는 URL로 접근하려고 시도합니다. 이로 인해 공격자는 서버 주요 정보를 탈취할 수 있게 됩니다. 그 결과, 공격자는 탈취한 서버 정보를 크로스 사이트 스크립팅이나 SQL 삽입 공격 등의 치명적인 공격에 이용할 수 있습니다. 이 취약점을 해결하기 위해서는 취약한 Snoop 서블릿과 이러한 Snoop 서블릿을 사용하고 있는 웹 서버를 사용하지 않아야 합니다.\n해결 방법은 다음과 같습니다.\n\n의도하지 않은 노출을 막기 위하여 Snoop 관련 정보가 포함된 페이지에 대한 접근을 제어해야 합니다.",
  "rule.dast.sw.common.5817.name": "Snoop 서블릿 정보 노출",
  "rule.dast.sw.common.5818.description": "SQL 삽입 취약점은 SQL 쿼리문에 임의의 문자열을 삽입할 수 있는 취약점입니다. 이 취약점은 데이터베이스 쿼리를 구성할 때 사용하는 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 비정상적인 DB 데이터를 처리하게 하는 악성 데이터를 서버로 전송하게 됩니다. 공격이 성공한 경우, 공격자는 데이터베이스 내부의 정보를 탈취하고 조작하거나 데이터베이스에 대해 관리자 명령을 실행할 수 있습니다.",
  "rule.dast.sw.common.5818.name": "SQL 삽입",
  "rule.dast.sw.common.5819.description": "임시 파일 노출 취약점은 개발자나 개발 도구에 의해 생성된 임시 파일이 삭제되지 않고 남아 임의의 사용자에게 노출되는 취약점입니다. 공격자는 이 취약점을 이용하여 중요 정보 등이 포함된 임시 파일에 접근할 수 있습니다. 그 결과 공격자는 접근한 임시 파일의 내용을 열람하고, 해당 파일 내부의 중요한 정보를 탈취하거나 조작할 수 있습니다. 이 취약점을 해결하기 위해서는 불필요한 임시 파일을 제거하고, 임의의 사용자가 접근할 수 없도록 해야 합니다. \n임시 파일 노출 취약점을 해결하는 가장 좋은 방법은 불필요한 임시 파일을 제거하는 것입니다. 임시 파일이 필요한 경우에는 권한이 없는 임의의 사용자가 임시 파일에 접근하지 못하도록 막아야 합니다. 또한, Django, Spring 등의 웹 프레임워크를 사용하면 URL 패턴과 컨트롤러를 매핑하여 요청을 처리하므로 임시 파일이 노출되지 않도록 사전에 예방할 수 있습니다.",
  "rule.dast.sw.common.5819.name": "임시 파일 노출",
  "rule.dast.sw.common.5820.description": "Apache Tomcat 예제 취약점은 크로스 사이트 스크립팅 취약점을 가지고 있는 Apache Tomcat의 JSP 예제 페이지가 노출되는 취약점입니다. 공격자는 Apache Tomcat 예제가 위치한 /examples/ 에 접근하려고 시도합니다. 공격자는 취약점을 이용해 Apache Tomcat 예제 페이지에 접근할 수 있습니다. 그 결과 공격자는 Apache 예제 페이지가 가지고 있는 크로스 사이트 스크립팅 등의 치명적인 취약점을 공격할 수 있습니다. 이 취약점을 해결하기 위해서는 Apache Tomcat 기본 페이지에 대한 접근을 차단해야 합니다. 접근이 필요한 경우 접근 허용 권한을 가지고 있는 사용자만 접근할 수 있게 해야 합니다. ",
  "rule.dast.sw.common.5820.name": "Tomcat 예제",
  "rule.dast.sw.common.5821.description": "비밀번호 오류 제한 부재 취약점은 인증 과정에서 비밀번호 입력 오류에 대한 재시도 횟수를 제한하지 않는 경우에 발생할 수 있는 취약점입니다. 이 취약점은 비밀번호 불일치 등으로 인해 인증 오류 발생이 지나치게 빈번하게 발생하거나 반복하여 발생하는지를 검사하지 않기 때문에 발생합니다. 공격자는 공격을 수행하기 위해 임의의 사용자 계정을 유추한 뒤, 임의의 비밀번호를 사용하여 해당 계정에 대한 인증을 반복하여 시도합니다. 공격이 성공한 경우, 공격자는 인증을 시도한 사용자의 권한을 획득할 수 있습니다. \n공격 대상 페이지에서 최소 `5`회의 반복적인 로그인을 시도하기 이전에 로그인 관련 조치를 취해야 합니다. 예를 들어, 로그인 자체를 제한하고 경고 메시지를 출력하거나, 다른 페이지로 이동시키는 방법입니다.",
  "rule.dast.sw.common.5821.name": "비밀번호 오류 제한 부재",
  "rule.dast.sw.common.5822.description": "URL 접근 제한 실패 체커는 인증 후에 노출되는 URL에 접근을 제한하지 않으므로 인증되지 않은 사용자가 해당 URL에 직접 접근할 수 있는 경우를 검출합니다. 인증이 필요한 URL에 접근 제한이 없는 경우 공격자가 허용되지 않은 계정으로도 해당 URL에 접근할 수 있습니다. 공격자는 해당 취약점을 이용하여 권한이 필요한 동작들을 수행할 수 있으며 이를 통해 정보를 탈취하거나 비정상적인 기능을 수행하게끔 할 수 있습니다. 허용되지 않은 사용자가 URL에 직접 접근할 수 없도록 URL 경로에 대해 사용자 검증을 수행해야 합니다.\n해결 방법은 다음과 같습니다.\n\n접근 제한이 필요한 URL에 대해서 URL 경로에 대한 사용자 검증을 수행해야 합니다.\n\n이를 통해 권한이 없는 사용자가 해당 직접 접근하여도 페이지가 노출되지 않고 로그인 페이지로 이동하거나 오류 페이지가 표시되도록 합니다.",
  "rule.dast.sw.common.5822.name": "URL 접근 제한 실패",
  "rule.dast.sw.common.5823.description": "취약한 비밀번호 취약점은 길이가 충분하지 않거나 지나치게 일반적인 비밀번호를 사용하여 공격자가 비밀번호를 유추할 수 있는 취약점입니다. 공격자는 이 취약점을 이용하여 비밀번호를 유추한 뒤 인증을 시도할 수 있습니다. 이를 통해 공격자는 인증에 성공하고, 인증에 대한 권한을 가진 상태로 서버와 상호작용을 수행할 수 있습니다. 이 취약점을 해결하기 위해서는 충분히 긴 길이의 비밀번호를 사용하고 일반적으로 널리 사용하는 비밀번호를 사용하지 않아야 합니다. 비밀번호의 복잡도를 강화하기 위해 영문 대소문자, 숫자, 특수문자를 포함하는 것이 좋습니다.\n취약한 비밀번호 취약점을 해결하기 위해서는 사용자가 충분히 긴 길이의 비밀번호를 사용하게 만들어야 합니다. 또한, 알파벳 대소문자, 숫자, 특수문자 등을 조합하게 만들어 일반적이지 않은 비밀번호를 사용하게 만들어야 합니다.",
  "rule.dast.sw.common.5823.name": "취약한 비밀번호",
  "rule.dast.sw.common.5824.description": "web.xml 파일 노출 취약점은 웹 애플리케이션의 배포 설명자로써 웹 애플리케이션 설정에 대한 정보를 담고 있는 web.xml 파일이 노출되는 취약점입니다. 공격자는 web.xml 파일이 위치한 것으로 추측되는 WEB-INF/web.xml 경로에 접근하려고 시도합니다. 이로 인해 web.xml 파일이 노출되면 공격자는 web.xml 내에 있는 세션 유효기간, 서블릿 콘텍스트의 초기 파라미터, 에러 페이지 처리 등의 웹 애플리케이션 환경 정보를 얻을 수 있습니다. 그 결과, 공격자는 웹 애플리케이션의 환경 정보를 이용하여 웹 애플리케이션의 취약한 부분을 찾아내고 공격하여 웹 애플리케이션의 주요 정보를 탈취하거나 의도치 않은 동작을 일으킬 수 있습니다. 이 취약점을 해결하기 위해서는 WEB-INF 내의 web.xml에 접근하지 못하도록 막아야 합니다.\n설정 파일 노출 취약점을 막기 위해서는 해당 파일이 있는 경로에 접근하지 못하게 막아야 합니다.\n\n또한, 사용자 입력이 설정 파일 경로로 접근되지 못하도록 해야 하며, 사용자 입력을 사용해야 하는 경우에는 값을 인코딩하거나 검증한 후에 사용해야 합니다.",
  "rule.dast.sw.common.5824.name": "web.xml 노출",
  "rule.dast.sw.common.5825.description": "크로스 프레임 스크립팅 취약점은 악성 스크립트가 포함된 페이지 내부에서 안전한 페이지를 불러오는 프레임만을 나타냄으로써, 사용자로 하여금 안전한 페이지를 정상적으로 불러온 것으로 인식하게 할 수 있는 취약점입니다. 공격자는 악성 스크립트를 포함하는 페이지 내부에 안전한 페이지를 불러오는 프레임이 표시되도록 할 수 있습니다. 그러면 사용자는 정상적으로 안전한 페이지를 불러온 것으로 인식하고 추가적인 활동을 수행하며, 이 때 페이지에 존재하는 악성 스크립트가 함께 실행됩니다. 공격자는 페이지에서 발생하는 키 스트로크, 마우스 클릭 정보 등을 탈취하고 조작할 수 있습니다. 또한 사용자의 중요 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션에서 사용자로부터 입력 받은 값을 검증하고 필터링해야 합니다.\n해결 방법은 다음과 같습니다.\n\n태그의 \"src\" 속성값을 구성할 때 사용자 입력값을 사용하지 않도록 합니다.\n\n사용자 입력을 사용해야 하는 경우, 반드시 해당 값에 대한 검증 및 필터링을 수행해야 합니다.",
  "rule.dast.sw.common.5825.name": "크로스 프레임 스크립팅",
  "rule.dast.sw.common.5826.description": "Xitami Web Server 정보 유출 취약점은 2.5b 버전 이하의 Xitami에 포함된 tesgcgi.exe 파일의 경로가 기본값인 경우, 임의의 사용자가 해당 프로그램을 실행함으로써 발생할 수 있는 취약점입니다. 공격자는 이 취약점을 이용하여 원격 서버의 시스템 정보를 열람할 수 있습니다. 이를 통해 공격자는 서버의 중요 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 testcgi.exe 파일을 제거하거나, 해당 파일을 기본 설치 경로가 아닌 다른 위치에 배치해야 합니다.\n이 취약점을 해결하기 위해서 다음과 같은 지침을 따르세요.\n\ntestcgi.exe 파일을 제거하세요.\n\n혹은 해당 파일의 기본 설치 위치가 아닌 다른 위치에 해당 파일을 위치시켜야 합니다.",
  "rule.dast.sw.common.5826.name": "Xitami Web Server 정보 유출",
  "rule.dast.sw.common.5827.description": "XPath 삽입 취약점은 XPath 쿼리문에 임의의 문자열을 삽입할 수 있는 취약점입니다. 이 취약점은 XPath 쿼리를 구성할 때 사용하는 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 비정상적인 XML 데이터를 처리하게 하는 악성 데이터를 서버로 전송하게 됩니다. 공격이 성공한 경우, 공격자는 XML 데이터의 구조를 파악하고 해당 데이터를 탈취하거나 조작할 수 있습니다.",
  "rule.dast.sw.common.5827.name": "XPath 삽입",
  "rule.dast.sw.common.5828.description": "크로스 사이트 스크립팅 취약점은 웹 사이트에 악성 스크립트를 삽입할 수 있는 취약점입니다. 공격자는 폼 내부에 있는 텍스트 입력과 같은 웹 요소를 통해 악성 스크립트를 서버로 전송합니다. 서버가 해당 데이터를 검증하지 않고 그대로 응답에 포함하는 경우, 악성 스크립트가 브라우저에서 실행됩니다. 그 결과, 공격자는 세션, 쿠키와 같은 사용자의 정보를 탈취하거나 서버에서 의도하지 않은 동작을 실행하도록 강제할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션이 사용자로부터 입력 받은 값을 검증 및 필터링해야 합니다. 즉, 태그의 이름, 속성, <script> 태그 내부, <style> 태그 내부, HTML 주석 내부 등에 사용자 입력 데이터를 되도록 사용하지 않고 사용자 입력 데이터를 사용해야만 하는 경우 `<`, `>`와 같은 기호를 변환하거나 인코딩하도록 합니다.\n해결 방법은 다음과 같습니다.\n\n비지속적 크로스 사이트 스크립팅 취약점을 제거하려면 사용자로부터 입력 받은 외부 데이터를 검증 및 필터링해야 합니다.\n\n기본적으로 태그의 이름이나 태그 속성의 이름, <script> 태그 사이, <style> 태그 사이 및 HTML 주석 사이와 허용되지 않은 위치에 사용자로부터 입력 받은 외부 데이터를 사용하지 않아야 합니다.\n\n또는, 사용자로부터 입력 받은 외부 데이터를 사용해야 하는 경우에는 다음과 같이 데이터를 인코딩하여 사용해야 합니다.\n\n웹 페이지 요소 사용자로부터 입력 받은 외부 데이터를 사용할 때의 인코딩\n\n```\n& --> &amp;\n< --> &lt;\n> --> &gt;\n` --> &quot;\n` --> &#x27;\n/ --> &#x2F;\n```\n\n이외에도 사용자로부터 입력 받은 외부 데이터를 HTML 속성값이나 URL 파라미터, JavaScript, CSS 값 등에 사용할 때에도 인코딩이 필요합니다. \n\nJava :\n  \n```java\nString userInput = request.getParameter(`input`);\nif (isValidInput(userInput)) {\n} else {\n}\nboolean isValidInput(String input) {\n    return !input.matches(`.*[<>&\\`].*`);\n}\n```\n\nJSP :\n  \n```\n<%\nString userInput = request.getParameter(`input`);\nif (isValidInput(userInput)) {\n} else {\n}\n%>\n<%\nboolean isValidInput(String input) {\n    return !input.matches(`.*[<>&\\`].*`);\n}\n%>\n```\n\nPHP :\n\n```php\n<?php\n$userInput = $_POST[`input`];\nif (isValidInput($userInput)) {\n} else {\n}\nfunction isValidInput($input) {\n   return !preg_match(`/[<>&\\`]/`, $input);\n}\n?>\n```",
  "rule.dast.sw.common.5828.name": "크로스 사이트 스크립팅",
  "rule.dast.sw.common.5829.description": "X-XXS-나이트메어 (XXN) 취약점은 IE 등에서 제공하는 XSS 필터의 규칙을 우회함으로써 악성 스크립트를 삽입하고 실행할 수 있는 취약점입니다. IE 브라우저가 제공하는 XSS 필터는 정규식을 이용하여 `style` 문자열을 `st#le`과 같이 치환함으로써 해당 문자열로 인한 페이지 변경을 방지합니다. 공격자는 이러한 정규식의 동작을 이용하여, <style> 태그가 존재하는 페이지에 해당 태그의 끝을 의미하는 </style>을 포함하는 악성 스크립트를 파라미터로 사용하여 서버에 전송합니다. XSS 필터는 공격자가 입력한 파라미터 및 기존에 존재하던 </style> 태그를 모두 치환합니다. 결과적으로 <style> 태그의 끝이 삭제되므로 <style> 태그 아래의 구문은 모두 CSS처럼 동작할 수 있게 됩니다. <style> 태그는 구문 오류와 무관하게 동작하므로, XSS 필터로 인해 공격자가 파라미터에 포함시킨 악성 스크립트가 실행됩니다. 그 결과, 공격자는 세션, 쿠키와 같은 사용자의 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션에서 사용자로부터 입력 받은 값을 검증하고 필터링해야 합니다. (다음 CVE 정보를 참고하세요: CVE-2015-6144, CVE-2015-6176)\n해결 방법은 다음과 같습니다.\n\nX-XSS-Nightmare (XXN) 취약점은 `STYLE` 웹 페이지 요소를 사용하는 경우 발생할 수 있습니다.\n\nXXN 취약점은 주로 Internet Explorer 8, 9, 10 버전에서 XXS 필터를 작동할 때 발생하는 취약점입니다.\n\n취약점의 발생을 방지하기 위하여 다음과 같은 지침을 따르세요.\n\n1. 다음과 같은 Windows 업데이트를 통한 보안 패치를 수행하세요.\n\n```\nIE 8~11: KB3116180 (https://technet.microsoft.com/library/security/ms15-124)\nEdge: KB3116184 (https://technet.microsoft.com/library/security/ms15-125)\n```\n\n2. Spring Security 사용 시, HTTP 헤더 설정을 통하여 취약점 방지가 가능합니다. 다음 내용을 참조하세요: [https://github.com/spring-projects/spring-security/issues/2330](https://github.com/spring-projects/spring-security/issues/2330)\n\n3. Internet Explorer 사용 시, 자체 기능인 `Smart Screen Filter` 기능을 사용하세요.",
  "rule.dast.sw.common.5829.name": "X-XSS-나이트메어(XXN)",
  "rule.dast.sw.common.5830.description": "누락된 X 콘텐츠 타입 옵션 취약점은 HTTP 응답 메시지에 nosniff 플래그가 설정된 X-Content-Type-Options 헤더가 포함되지 않는 경우에 발생하는 취약점입니다. 여기서 nosniff 플래그는 MIME 타입 스니핑을 방지하는 역할을 수행합니다. MIME 타입 스니핑이란 MIME 타입이 없거나 잘못 설정되었다고 판단한 경우, 브라우저가 리소스를 흝어보고 정확한 MIME 타입을 추측하여 판단하는 기능을 의미합니다. 공격자는 MIME 타입 스니핑을 이용하여 악의적인 코드가 포함되어 있는 비실행 MIME 타입을 실행 MIME 타입인 것처럼 속여서 웹 애플리케이션에서 악의적인 코드를 실행하게 합니다. 이를 통해 공격자는 악의적인 코드를 웹 애플리케이션에 업로드하여 해당 코드를 웹 애플리케이션이 반복적으로 실행하도록 합니다. 이 취약점을 해결하기 위해서는 HTTP 응답 메시지에 값이 nosniff인 X-Content-Type-Options 헤더를 포함시켜야 합니다.",
  "rule.dast.sw.common.5830.name": "누락된 X 콘텐츠 타입 옵션",
  "rule.dast.sw.common.5831.description": "누락된 X 프레임 옵션 취약점은 X-Frame-Options 헤더가 HTTP 응답에 포함되지 않거나 헤더가 올바른 값이 아닌 경우에 발생하는 취약점입니다. X-Frame-Options 헤더는 HTTP 응답의 헤더로써 브라우저가 <frame>, <iframe>, <object> 태그 안의 페이지를 랜더링하도록 설정합니다. 공격자는 악의적인 사이트를 <frame>, <iframe>, <object> 태그 안에 렌더링하여 클릭잭킹을 시도할 수 있습니다. 클릭잭킹이란 사용자가 자신이 클릭하고 있다고 인지하는 것과 다른 것을 클릭하도록 속이는 공격 방식입니다. 이를 통해 공격자는 사용자의 정보를 유출하거나 사용자의 컴퓨터를 제어할 수 있습니다. 이 취약점을 해결하기 위해서는 HTTP 응답 메시지에 올바른 값을 가진 X-Frame-Options 헤더를 포함시켜야 합니다.",
  "rule.dast.sw.common.5831.name": "누락된 X 프레임 옵션",
  "rule.dast.sw.common.5835.description": "웹 쿠키는 악의적인 사용자의 주요 공격 벡터인 경우가 많으므로 애플리케이션은 쿠키를 보호하기 위한 보안 속성을 사용해야 합니다.\nOWASP에서는 Secure 속성 사용을 권장합니다. Secure 속성은 HTTPS와 같은 보안 채널을 통해 전송되는 경우에만 쿠키를 보내도록 브라우저에 지시합니다. 이를 통해 암호화되지 않은 요청에서 쿠키가 전달되지 않도록 보호할 수 있습니다.\nSecure 속성은 HTTP에서 동작하지 않으므로 HTTPS로 변경해야 합니다. 쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "rule.dast.sw.common.5835.name": "쿠키 속성 검사(Secure)",
  "rule.dast.sw.common.5836.description": "웹 쿠키는 악의적인 사용자의 주요 공격 벡터인 경우가 많으므로 애플리케이션은 쿠키를 보호하기 위한 보안 속성을 사용해야 합니다.\nOWASP에서는 HttpOnly 속성 사용을 권장합니다. HttpOnly는 JavaScript와 같은 클라이언트 측 스크립트를 통해 쿠키에 액세스할 수 없도록 하여 세션 유출과 같은 공격을 방지하는 데 사용됩니다. XSS 공격을 전부 막을 수는 없지만 XSS 공격 벡터의 도달 범위를 제한합니다.\n쿠키 속성은 서버에서 HTTP 응답에 Set-Cookie 헤더를 포함하거나 JavaScript를 통해 설정할 수 있습니다.",
  "rule.dast.sw.common.5836.name": "쿠키 속성 검사(HttpOnly)",
  "rule.dast.sw.common.5837.description": "웹 쿠키는 악의적인 사용자의 주요 공격 벡터인 경우가 많으므로 애플리케이션은 쿠키를 보호하기 위한 보안 속성을 사용해야 합니다.\nSameSite 속성으로 쿠키의 자사 또는 동일 사이트로 컨텍스트 제한 여부를 선택할 수 있습니다. 이는 사이트 간 요청 위조(CSRF)를 방지하기 위한 방법으로도 사용됩니다. SameSite는 총 세 가지 모드로 구성되어 있습니다.\n\n1. Strict: 브라우저가 최상위 탐색 없이 퍼스트 파티 컨텍스트로만 쿠키를 전송할 수 있도록 허용하는 가장 제한적인 SameSite 사용 설정입니다.\n2. Lax: Lax 값은 Strict보다 덜 제한적입니다. 링크가 타사 도메인에서 온 경우에도 URL이 쿠키의 도메인(퍼스트 파티)과 같으면 쿠키가 전송됩니다.\n3. None: None 값은 사이트 간 요청 시 브라우저가 보안 속성이 사용되는 경우에만 쿠키를 전송하도록 지정합니다.\n사이트 간 요청 위조(CSRF)를 막기 위해 SameSite는 Lax나 Strict로 사용하는 것이 좋습니다. 구글 크롬도 80버전으로 업데이트 되면서 SameSite 속성의 기본 값을 None에서 Lax로 상향 조절했습니다. 하지만 None으로 사용해야 한다면 반드시 Secure 속성과 함께 사용해야 합니다.",
  "rule.dast.sw.common.5837.name": "쿠키 속성 검사(SameSite)",
  "rule.dast.sw.common.5849.description": "HTTP 응답 헤더에 포함된 서버 정보 취약점은 HTTP 응답 헤더에 서버 정보가 포함될 때 발생합니다. 애플리케이션 서버는 설정에 따라 HTTP 응답 헤더에 서버의 버전 정보를 포함하여 응답을 전달할 수 있습니다. 이 때 악의적인 사용자는 서버의 버전 정보를 활용하여 공격을 계획할 수 있습니다.",
  "rule.dast.sw.common.5849.name": "HTTP 응답 헤더에 포함된 서버 정보",
  "rule.dast.sw.common.5850.description": "디렉터리 인덱싱은 특정 디렉터리에 초기 페이지(index.html, home.html default.asp 등)의 파일이 존재하지 않을 때 자동으로 디렉터리 리스트를 출력하는 취약점입니다. 해당 취약점이 존재할 경우 브라우저를 통해 특정 디렉터리 내 파일 리스트를 노출하여 응용 시스템의 구조를 외부에 허용할 수 있고, 민감한 정보가 포함된 설정 파일 등이 노출될 경우 보안상 심각한 위험을 초래할 수 있습니다.\n\nApache Tomcat 3.2.x 이전 버전이나 Resim 2.x 이전 버전에서는 URL에 %3f.jsp 입력시에 디렉터리 인덱싱 페이지를 노출하는 취약점이 있었지만 현재 공식적으로 지원하지 않는 오래된 버전이므로 최신 버전을 사용하면 일어나지 않습니다. 또한, 메인 페이지가 아니더라도 일부 특수문자들을 이용해 하위 디렉터리 페이지에서 \"%2E%2E를 입력하여 상위 디렉터리로 이동\" 등의 문제가 생길 수 있으니 모든 페이지를 점검해야 합니다.\n인덱스 파일을 사용하면 디렉터리 페이지 대신 사용자에게 표시합니다. 일반적으로 index.html, home.html default.asp 등으로 사용합니다. 그리고 특별한 경우가 아니라면 서버 설정 파일에서 디렉터리 인덱싱을 옵션을 비활성하는 것이 안전합니다.\n\nApache :\n\n먼저, 웹 서버 루트 디렉토리에 .htaccess 파일을 만듭니다. .htaccess 파일에 다음과 같은 코드를 추가하여 디렉토리 인덱싱을 비활성화합니다.\n\n```\nOptions -Indexes\n```\n\nPHP :\n\n원하는 디렉토리에 index.php 파일을 생성합니다. index.php 파일에 다음과 같은 코드를 추가하여 디렉토리에 대한 접근을 거부합니다.\n\n```php\n<?php\n// 디렉토리 접근 거부\nheader(`HTTP/1.0 403 Forbidden`);\necho `Access to this directory is forbidden.`;\n?>\n```",
  "rule.dast.sw.common.5850.name": "디렉터리 인덱싱",
  "rule.dast.sw.common.5851.description": "SQL 인젝션은 사용자의 입력 값으로 웹 사이트 SQL 쿼리가 완성되는 약점을 이용하며, 입력 값을 변조하여 비정상적인 SQL 쿼리를 조합하거나 실행하는 공격입니다. 개발자가 생각지 못한 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작할 수 있습니다.\n악의적인 사용자가 입력한 SQL 쿼리로 DBMS 및 데이터를 열람하거나 조작할 수 있으므로 사용자의 입력값을 필터링하도록 구현해야 합니다. ```, `;`, `--`, `#`, `/* */` 등의 특수문자는 SQL 삽입을 발생시킬 수 있는 대표적인 위험한 문자이므로 사용자 입력값에 사용하지 않도록 유의해야 합니다.\n\n다음은 각 언어별로 사용자 입력값을 필터링하는 예시입니다.\n\nJava:\n\n```\nString userInput = ...\nConnection connection = getConnection();\n\nString sql = ... \ntry (PreparedStatement statement = connection.prepareStatement(sql)) {\n\tstatement.setString(1, userInput); \n\tResultSet resultSet = statement.executeQuery();\n\t...\n\twhile (resultSet.next()) {\n\t\t...\n\t}\n}\n```\n\nJSP:\n\n```\n<%\nString userInput = request.getParameter(`input`);\nConnection connection = getConnection();\n\nString sql = ...\ntry (PreparedStatement statement = connection.prepareStatement(sql)) {\n\tstatement.setString(1, userInput);\n\tResultSet resultSet = statement.executeQuery();\n\t...\n\twhile (resultSet.next()) {\n\t\t...\n\t}\n}\n%>\n```\n\nPHP: \n\n```\n<?php\n$userInput = $_POST[`input`];\n$connection = getConnection();\n\n$sql = ...\n$stmt = $connection->prepare($sql);\n$stmt->execute([$userInput]);\n$result = $stmt->fetchAll();\n...\nforeach ($result as $row) {\n...\n}\n?>\n```",
  "rule.dast.sw.common.5851.name": "SQL 인젝션",
  "rule.dast.sw.common.5852.description": "XPath 인젝션은 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경할 수 있습니다. 해커가 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있으므로 적절한 필터링 로직 구현이 필요합니다.\nXPath 쿼리에 사용자가 값을 입력할 수 있는 경우, 엄격한 입력 값 검증을 통해 필요 문자만을 받아들이게 해야 합니다. `(`,`)`,`=`,```,`[`, `]`, `:`, `,`, `*`, `/` 등 Xpath 쿼리를 파괴하는 특수문자는 입력하지 못하게 해야 하며, 특정 특수문자만을 필터링하는 것이 아닌 허용된 문자 이외의 모든 입력을 허용하지 않는 것이 안전합니다.",
  "rule.dast.sw.common.5852.name": "XPath 인젝션",
  "rule.dast.sw.common.5903.description": "웹 애플리케이션에서 Access-Control-Allow-Origin 헤더가 `*` 또는 `null`로 설정되면, 모든 출처에서 리소스에 접근할 수 있게 되어 정보가 외부로 노출될 수 있습니다. 또한, Access-Control-Allow-Credentials 헤더가 `true`로 설정된 경우, 사용자 인증 정보를 포함한 요청이 안전하지 않은 출처로 전송될 수 있습니다. 이러한 잘못된 CORS 설정은 민감한 데이터의 노출을 초래할 수 있습니다.\nAccess-Control-Allow-Origin 헤더는 신뢰할 수 있는 특정 도메인으로 제한해야 하며, `*` 또는 `null` 설정을 피해야 합니다. 또한, Access-Control-Allow-Credentials 헤더는 반드시 필요한 경우에만 `true`로 설정하고, 특정 출처에만 CORS 요청을 허용하도록 구성해야 합니다.",
  "rule.dast.sw.common.5903.name": "잘못된 CORS 설정",
  "rule.dast.sw.common.5905.description": "서버에 남아있는 디폴트 페이지가 외부에 노출될 경우, 공격자가 이를 통해 서버 설정과 같은 내부 정보를 획득할 수 있습니다. 이러한 정보는 공격자가 시스템에 대한 이해를 바탕으로 추가적인 취약점을 탐색하고, 악용할 가능성을 제공하게 됩니다.\n디폴트 페이지, 샘플 페이지 등의 외부 노출을 방지하기 위해 서버 설정을 수정합니다. 특히, 불필요한 파일은 삭제하거나 외부에서 접근할 수 없도록 설정합니다.",
  "rule.dast.sw.common.5905.name": "디폴트 페이지 노출",
  "rule.dast.sw.common.6495.description": "웹 사이트 관리를 위해 만들어진 관리자 인터페이스에 접근할 경우 정보 게시, 수정, 삭제, 열람 및 서비스 기능 제어가 제한 없이 가능하므로, 허가하지 않은 접근을 엄격히 통제하고, 관리자 인터페이스 보호를 위해 충분한 조치를 취하여야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 관리자 페이지 예상 경로에 대하여 요청을 송신합니다.\n2. 수신한 응답 본문에 관리자 페이지 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 관리자 페이지 경로\n2. 사용자 정의 관리자 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6495.name": "[1-1] 관리자 페이지 접근 통제 - 가. 경로 및 인덱스 파일 변경",
  "rule.dast.sw.common.6495.option.checker.dast.sw.common.6495.path.attack.description": "`사용자 정의 관리자 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/ADMIN_PAGE_PATH). 해당 URL을 관리자 페이지에 해당하는 URL로 간주합니다.",
  "rule.dast.sw.common.6495.option.checker.dast.sw.common.6495.path.attack.name": "사용자 정의 관리자 페이지 경로",
  "rule.dast.sw.common.6495.option.checker.dast.sw.common.6495.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6495.option.checker.dast.sw.common.6495.regex.test.description": "`사용자 정의 관리자 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 관리자 페이지 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6495.option.checker.dast.sw.common.6495.regex.test.name": "사용자 정의 관리자 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6495.option.checker.dast.sw.common.6495.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6496.description": "웹 사이트 관리를 위해 만들어진 관리자 인터페이스에 접근할 경우 정보 게시, 수정, 삭제, 열람 및 서비스 기능 제어가 제한 없이 가능하므로, 허가하지 않은 접근을 엄격히 통제하고, 관리자 인터페이스 보호를 위해 충분한 조치를 취하여야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 관리자 페이지 예상 경로에 대하여 요청을 송신합니다.\n2. 수신한 응답 본문에 관리자 페이지 내용이 존재하고, SSL 미적용 상태로 요청 송신이 가능한 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 관리자 페이지 경로\n2. 사용자 정의 관리자 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6496.name": "[1-1] 관리자 페이지 접근 통제 - 나. 비인가된 접근 차단",
  "rule.dast.sw.common.6496.option.checker.dast.sw.common.6496.path.attack.description": "`사용자 정의 관리자 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/ADMIN_PAGE_PATH). 해당 URL을 관리자 페이지에 해당하는 URL로 간주합니다.",
  "rule.dast.sw.common.6496.option.checker.dast.sw.common.6496.path.attack.name": "사용자 정의 관리자 페이지 경로",
  "rule.dast.sw.common.6496.option.checker.dast.sw.common.6496.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6496.option.checker.dast.sw.common.6496.regex.test.description": "`사용자 정의 관리자 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 관리자 페이지 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6496.option.checker.dast.sw.common.6496.regex.test.name": "사용자 정의 관리자 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6496.option.checker.dast.sw.common.6496.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6497.description": "적절한 세션 타임아웃 설정을 사용하지 않을 경우, 공격자는 세션 재사용 기법 등을 통하여 비정상적 공격 및 접근이 가능합니다. 또한 로그아웃 및 브라우저 종료 시 세션을 정상 폐기하여, 세션 재사용 기법 등을 통한 공격 가능성을 감소시켜야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 로그아웃에 대한 세션 관리 검사를 다음과 같이 수행합니다.\n a. 주어진 로그인 기록 파일 기반으로 로그인을 시도하고, 세션을 획득합니다.\n b. 주어진 로그아웃 기록 파일 기반으로 로그아웃을 시도합니다.\n c. 최초 로그인 시 수집한 세션을 브라우저에 강제 설정합니다.\n d. 최초 로그인 후 도달 가능하였던 위치로 로그인 수행 없이 접근 가능한 경우, 취약점을 검출합니다.\n2. 브라우저 종료에 대한 세션 관리 검사를 다음과 같이 수행합니다.\n a. 주어진 로그인 기록 파일 기반으로 로그인을 시도하고, 세션을 획득합니다.\n b. 브라우저를 재시작합니다.\n c. 최초 로그인 시 수집한 세션을 브라우저에 강제 설정합니다.\n d. 최초 로그인 후 도달 가능하였던 위치로 로그인 수행 없이 접근 가능한 경우, 취약점을 검출합니다.\n \n취약점 검출을 위하여 다음과 같은 분석 대상 옵션을 설정할 수 있습니다:\n1. 로그인 기록 파일\n2. 로그아웃 기록 파일\n\n취약점 검출을 위하여 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 세션 이름",
  "rule.dast.sw.common.6497.name": "[1-5] 적절하지 않은 세션 설정 - 나. 로그아웃 및 브라우저 종료 시 세션 폐기",
  "rule.dast.sw.common.6497.option.checker.dast.sw.common.6497.sessions.names.description": "`사용자 정의 세션 이름`에 대응하는 세션을 추출합니다. 해당 세션에 대한 보안 검사를 수행합니다.",
  "rule.dast.sw.common.6497.option.checker.dast.sw.common.6497.sessions.names.name": "사용자 정의 세션 이름",
  "rule.dast.sw.common.6497.option.checker.dast.sw.common.6497.sessions.names.placeholder": "세션 이름을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6498.description": "적절한 세션 타임아웃 설정을 사용하지 않을 경우, 공격자는 세션 재사용 기법 등을 통해 비정상적 공격 및 접근을 수행할 수 있습니다. 또한 로그아웃 및 브라우저 종료 시 세션을 정상 폐기하여, 세션 재사용 기법 등을 통한 공격 가능성을 감소시켜야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 주어진 로그인 기록 파일 기반으로 로그인을 시도하고, 세션을 획득합니다.\n2. 세션 타임아웃 시간 동안 대기합니다.\n3. 브라우저를 재시작합니다.\n4. 최초 로그인 시 수집한 세션을 브라우저에 강제 설정합니다.\n5. 최초 로그인 후 도달 가능하였던 위치로 로그인 수행 없이 접근 가능한 경우, 취약점을 검출합니다.\n\n취약점 검출을 위하여 다음과 같은 분석 대상 옵션을 설정할 수 있습니다:\n1. 로그인 기록 파일\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 세션 이름\n2. 사용자 정의 세션 타임아웃(초)",
  "rule.dast.sw.common.6498.name": "[1-5] 적절하지 않은 세션 설정 - 라. 세션 타임아웃 설정값 부여 확인",
  "rule.dast.sw.common.6500.description": "적절한 세션 타임아웃 설정을 사용하지 않을 경우, 공격자는 세션 재사용 기법 등을 통하여 비정상적인 공격이나 접근이 가능합니다. 또한 로그아웃하거나 브라우저를 종료할 때 세션을 정상적으로 폐기하여, 세션 재사용 기법 등을 통한 공격 가능성을 감소시켜야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 로그아웃에 대한 세션 관리 검사를 다음과 같이 수행합니다.\n\ta. 주어진 로그인 수행 기록 파일 기반으로 로그인을 시도하고, 세션을 획득합니다.\n \tb. 세션 타임아웃 시간 동안 대기합니다.\n \tc. 주어진 로그아웃 수행 기록 파일 기반으로 로그아웃을 시도합니다.\n \td. 주어진 로그인 수행 기록 파일 기반으로 로그인을 다시 시도하고, 세션을 획득합니다.\n \te. 획득한 두 세션이 동일한 경우, 취약점을 검출합니다.\n2. 브라우저 종료에 대한 세션 관리 검사를 다음과 같이 수행합니다.\n \ta. 주어진 로그인 수행 기록 파일 기반으로 로그인을 시도하고, 세션을 획득합니다.\n \tb. 세션 타임아웃 시간 동안 대기합니다.\n \tc. 브라우저를 재시작합니다.\n \td. 주어진 로그인 수행 기록 파일 기반으로 로그인을 다시 시도하고, 세션을 획득합니다.\n \te. 획득한 두 세션이 동일한 경우, 취약점을 검출합니다.\n\n취약점 검출을 위하여 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 세션 이름\n세션 ID는 중복 발급 및 재사용을 금지해야 하며, 로그인할 때마다 새로운 세션 ID를 발급하도록 설정해야 합니다.",
  "rule.dast.sw.common.6500.name": "[1-5] 적절하지 않은 세션 설정 - 다. 로그인 시 마다 동일한 세션 ID가 생성되어 사용되는 경우 취약",
  "rule.dast.sw.common.6500.option.checker.dast.sw.common.6500.sessions.names.description": "`사용자 정의 세션 이름`에 대응하는 세션을 추출합니다. 해당 세션에 대한 보안 검사를 수행합니다.",
  "rule.dast.sw.common.6500.option.checker.dast.sw.common.6500.sessions.names.name": "사용자 정의 세션 이름",
  "rule.dast.sw.common.6500.option.checker.dast.sw.common.6500.sessions.names.placeholder": "세션 이름을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6501.description": "서로 다른 도메인 간 데이터를 주고 받을 수 있도록 하는 CORS 설정이 부적절한 경우, 비인가 상태인 네트워크 콘텐츠에 접근을 허용할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 수신한 응답 헤더 중 \"Access-Control-Allow-Origin\" 헤더 이 \"*\" 또는 \"null\"에 해당하거나, 또는 \"Access-Control-Allow-Credentials\" 헤더값이 \"true\"에 해당하는 경우, 취약점을 검출합니다.",
  "rule.dast.sw.common.6501.name": "[1-8] 검증되지 않은 리다이렉트와 포워드 - 다. CORS 설정 확인",
  "rule.dast.sw.common.6502.description": "악성 스크립트를 포함한 링크를 사용자가 클릭한 경우, 해당 악성 스크립트가 즉시 실행될 수 있으며, 사용자는 스스로 의식하지 못 한 상태에서 공격자의 명령을 수행할 수 있습니다. 이를 통하여 공격자는 사용자 PC에 존재하는 인증 정보 세션, 쿠키 등을 수집하여 공격 정보로서 활용하거나, 사용자로 하여금 악성코드 유포지에 접속하여 특정 악성코드를 다운로드 받도록 강제할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 특정 페이지에 존재하는 모든 텍스트 입력 가능 요소에 대하여, 각 요소의 고유값을 정의합니다.\n2. 해당 요소값을 특정 DOM 변수에 임의 요소의 고유값을 할당하도록 하는 script 태그로 설정합니다.\n3. 해당 페이지와 상호작용하여, 해당 요소에 설정한 값을 서버로 전송합니다.\n4. 값 전송 이후, 해당 DOM 변수의 값이 실제로 할당한 값과 동일한 경우, 취약점을 검출합니다.",
  "rule.dast.sw.common.6502.name": "[2-2] 반사형 XSS - 가. 반사형 XSS",
  "rule.dast.sw.common.6503.description": "사용자 로그인, 게시물 검색 및 출력 등과 같이 DB와 연동하여 사용 가능한 모든 경우에 사용자 입력값을 그대로 사용하여 DB 질의문을 구성하는 경우, 공격자는 원하는 질의문을 삽입하여 인증 절차를 우회하거나 DB 내부 정보를 열람 및 변조할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. DB 오류 메시지를 유발할 수 있는 요청을 송신합니다.\n2. 수신한 응답 본문에 DB 오류 메시지가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 DB 오류 메시지 유발 패턴\n2. 사용자 정의 DB 오류 메시지 출력 내용 검사 정규식",
  "rule.dast.sw.common.6503.name": "[2-3] SQL 인젝션 - 가. 사용자가 입력 가능한 필드 및 파라미터값에 특수 문자 입력 시 오류 발생",
  "rule.dast.sw.common.6503.option.checker.dast.sw.common.6503.patterns.attack.description": "`사용자 정의 DB 오류 메시지 유발 공격 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 DB 오류 메시지가 발생한다고 간주합니다.",
  "rule.dast.sw.common.6503.option.checker.dast.sw.common.6503.patterns.attack.name": "사용자 정의 DB 오류 메시지 유발 패턴",
  "rule.dast.sw.common.6503.option.checker.dast.sw.common.6503.patterns.attack.placeholder": "DB 오류 메시지 유발 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6503.option.checker.dast.sw.common.6503.regex.test.description": "`사용자 정의 DB 오류 메시지 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 DB 오류 메시지 출력 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6503.option.checker.dast.sw.common.6503.regex.test.name": "사용자 정의 DB 오류 메시지 출력 내용 검사 정규식",
  "rule.dast.sw.common.6503.option.checker.dast.sw.common.6503.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6504.description": "사용자 로그인, 게시물 검색 및 출력 등과 같이 DB와 연동하여 사용 가능한 모든 경우에 사용자 입력값을 그대로 사용하여 DB 질의문을 구성하는 경우, 공격자는 원하는 질의문을 삽입하여 인증 절차를 우회하거나 DB 내부 정보를 열람 및 변조할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. SQL 질의문 처리 시 반드시 지연을 유발하는 요청, 그리고 지연을 반드시 유발하지 않는 요청을 각각 송신합니다.\n2. 수신한 각 응답 간 처리 소요 시간 차이가 예상치를 초과하는 경우, 취약점을 검출합니다\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 지연 시간 유발 SQL 삽입 패턴\n2. 사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴\n3. 사용자 정의 예상 지연 시간(초)",
  "rule.dast.sw.common.6504.name": "[2-3] SQL 인젝션 - 나. 검색 및 로그인 필드에 공격 코드 입력 후 정상 실행",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.patterns.attack.time_based.false.description": "`사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 SQL 쿼리문을 처리할 때 **일정 시간의 지연이 발생하지 않는다**고 간주합니다. 만약 해당 요청 파라미터로 인하여 지연이 발생할 경우, 체커가 오동작할 수 있습니다. 또한 입력한 각 값은 `사용자 정의 지연 시간 유발 SQL 삽입 패턴` 옵션 값 및 `사용자 정의 예상 지연 시간` 옵션 값과 입력 순서를 기준으로 함께 사용하므로, 입력 순서에 유의하세요.",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.patterns.attack.time_based.false.name": "사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.patterns.attack.time_based.false.placeholder": "지연 시간 유발하지 않는 SQL 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.patterns.attack.time_based.true.description": "`사용자 정의 지연 시간 유발 SQL 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 SQL 쿼리문을 처리할 때, **일정 시간의 지연이 발생한다**고 간주합니다. 만약 해당 요청 파라미터로 인하여 지연이 발생하지 않을 경우, 체커가 오동작할 수 있습니다. 또한 입력한 각 값은 `사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴` 옵션 값 및 `사용자 정의 예상 지연 시간` 옵션 값과 입력 순서를 기준으로 함께 사용하므로, 입력 순서에 유의하세요.",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.patterns.attack.time_based.true.name": "사용자 정의 지연 시간 유발 SQL 삽입 패턴",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.patterns.attack.time_based.true.placeholder": "지연 시간 유발 SQL 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.time.test.expected_delay.description": "`사용자 정의 예상 지연 시간(초)`은 `사용자 정의 지연 시간 유발 SQL 삽입 패턴` 처리 도중 발생할 것으로 예상 가능한 지연 시간입니다. 해당 값이 너무 작은 경우, 체커가 오동작할 수 있습니다. 또한 `사용자 정의 지연 시간 유발 SQL 삽입 패턴` 및 `사용자 정의 지연 시간 유발하지 않는 SQL 삽입 패턴`과 입력 순서를 기준으로 쌍을 이루어 동작하므로, 입력 순서에 유의하세요.",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.time.test.expected_delay.name": "사용자 정의 예상 지연 시간(초)",
  "rule.dast.sw.common.6504.option.checker.dast.sw.common.6504.time.test.expected_delay.placeholder": "예상 지연 시간을 입력하세요(단위: 초).",
  "rule.dast.sw.common.6505.description": "필요한 경우, 시스템 명령어를 실행시켜 특정 웹 페이지를 구성할 수 있습니다. 이러한 시스템 명령어 구성 시, \"|\", \"&\", \";\", \"’\" 등의 연산자를 통하여 여러 명령어를 연결할 수 있습니다. 만약 사용자 입력값을 그대로 사용하여 시스템 명령어를 구성하는 경우, 공격자는\"|\", \"&\", \";\", \"’\" 등의 연산자를 사용하여 임의의 원하는 명령어를 삽입 및 실행할 수 있으며, 시스템의 권한을 변경하는 등의 악영향을 미칠 수 있습니다. 또한, 개발 시 취약한 함수(예: eval(), function() 등)를 사용할 경우, 공격자로 하여금 임의의 시스템 명령어를 삽입하여 시스템 권한을 획득, 또는 중요 정보 파일에 대한 접근 등을 가능하게끔 할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 운영체제 명령어 실행을 유발할 수 있는 요청을 송신합니다.\n2. 수신한 응답 본문에 운영체제 명령어 실행 결과가 존재하는 경우, 취약점을 검출합니다.\n\n취약점 검출을 위하여 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 Windows 운영체제 명령어 삽입 패턴\n2. 사용자 정의 windows 운영체제 명령어 실행 결과 검사 정규식\n3. 사용자 정의 UNIX 운영체제 명령어 실행 결과 검사 정규식\n4. 사용자 정의 UNIX 운영체제 명령어 삽입 패턴",
  "rule.dast.sw.common.6505.name": "[2-5] 삽입 공격 - 가. Command Injection",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.unix.patterns.attack.description": "`사용자 정의 UNIX 운영체제 명령어 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 UNIX운영체제 명령어 실행이 발생한다고 간주합니다.",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.unix.patterns.attack.name": "사용자 정의 UNIX 운영체제 명령어 삽입 패턴",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.unix.patterns.attack.placeholder": "운영체제 명령어 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.unix.regex.test.description": "`사용자 정의 UNIX 운영체제 명령어 실행 결과 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 UNIX 운영체제 명령어 실행 결과가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.unix.regex.test.name": "사용자 정의 UNIX 운영체제 명령어 실행 결과 검사 정규식",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.unix.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.windows.patterns.attack.description": "`사용자 정의 Windows 운영체제 명령어 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 Windows 운영체제 명령어 실행이 발생한다고 간주합니다.",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.windows.patterns.attack.name": "사용자 정의 Windows 운영체제 명령어 삽입 패턴",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.windows.patterns.attack.placeholder": "운영체제 명령어 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.windows.regex.test.description": "`사용자 정의 windows 운영체제 명령어 실행 결과 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 windows 운영체제 명령어 실행 결과가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.windows.regex.test.name": "사용자 정의 windows 운영체제 명령어 실행 결과 검사 정규식",
  "rule.dast.sw.common.6505.option.checker.dast.sw.common.6505.windows.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6506.description": "XPath는 XML 문서의 일부를 참조하기 위한 언어이며, 애플리케이션 등에서 XML 문서에 대한 질의를 위하여 사용합니다. XPath에서 사용하는 질의문의 문법은 SQL 질의문과 유사하며, 특정 질의문 내부에 표현식을 삽입 가능한 경우 중요 정보 노출 및 접근 권한 우회 등의 취약점이 발생할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. XPath 오류 메시지를 유발할 수 있는 요청 송신 후, 수신한 응답 본문에 XPath 오류 메시지가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 XPath 질의문 삽입 패턴\n2. 사용자 정의 XPath 질의문 실행 내용 검사 정규식",
  "rule.dast.sw.common.6506.name": "[2-5] 삽입 공격 - 나. XPath Injection",
  "rule.dast.sw.common.6506.option.checker.dast.sw.common.6506.patterns.attack.description": "`사용자 정의 XPath 쿼리문 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 XPath 쿼리문 실행이 발생한다고 간주합니다.",
  "rule.dast.sw.common.6506.option.checker.dast.sw.common.6506.patterns.attack.name": "사용자 정의 XPath 쿼리문 삽입 패턴",
  "rule.dast.sw.common.6506.option.checker.dast.sw.common.6506.patterns.attack.placeholder": "XPath 쿼리문 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6506.option.checker.dast.sw.common.6506.regex.test.description": "`사용자 정의 XPath 쿼리문 실행 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 XPath 쿼리문 실행 결과가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6506.option.checker.dast.sw.common.6506.regex.test.name": "사용자 정의 XPath 쿼리문 실행 내용 검사 정규식",
  "rule.dast.sw.common.6506.option.checker.dast.sw.common.6506.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6507.description": "특정 또는 서브 페이지 접근 시 필요한 인증 과정을 우회하여 접근 가능한 경우, 타 사용자 및 관리자 권한을 획득하여 서비스 혹은 내용에 대하여 변조 및 오용이 가능합니다. 또한 상태 정보나 민감한 데이터, 특히 사용자 세션 정보와 같은 중요한 정보를 쿠키 혹은 히든 필드 등 내부에 저장하여 보안 기능을 수행할 경우, 해당 값의 변조를 통하여 타 사용자의 권한을 획득할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 주어진 로그인 기록 파일 기반으로 로그인을 시도하고, 사용자 계정 및 그룹 정보를 포함하는 쿠키를 수집합니다.\n2. 브라우저를 재시작한 뒤, 최초 로그인 시 수집한 쿠키를 브라우저에 강제 설정합니다.\n3. 최초 로그인 후 도달 가능하였던 위치로 로그인 수행 없이 접근 가능한 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 분석 대상 옵션을 설정할 수 있습니다:\n1. 로그인 기록 파일\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 변조 대상 쿠키 이름",
  "rule.dast.sw.common.6507.name": "[1-2] 취약한 인증과 권한 관리 - 다. 쿠키 변조 점검",
  "rule.dast.sw.common.6507.option.checker.dast.sw.common.6507.cookie.auth.names.description": "`사용자 정의 변조 대상 쿠키 이름`에 대응하는 쿠키의 값을 변조합니다. 변조한 쿠키를 사용하여 인증 우회를 시도합니다.",
  "rule.dast.sw.common.6507.option.checker.dast.sw.common.6507.cookie.auth.names.name": "사용자 정의 변조 대상 쿠키 이름",
  "rule.dast.sw.common.6507.option.checker.dast.sw.common.6507.cookie.auth.names.placeholder": "쿠키 이름을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6508.description": "XML 처리 시 외부 파일을 참조하는 개체를 통하여 서버 내의 파일 내용을 XML 내부에 포함시킬 수 있습니다. 해당 개체가 참조하는 외부 파일을 \"/etc/passwd\" 와 같은 중요 파일 경로로 변조할 수 있는 경우, 공격자는 해당 파일의 내용을 XML 내부에서 출력하도록 함으로써 서버 내 중요 정보에 접근할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. XML 질의문 실행을 유발할 수 있는 요청을 송신합니다.\n2. 수신한 응답 본문에 XML 질의문 실행 결과가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 XXE 삽입 패턴\n2. 사용자 정의 XML 질의문 실행 내용 검사 정규식",
  "rule.dast.sw.common.6508.name": "[2-5] 삽입 공격 - 다. XXE Injection",
  "rule.dast.sw.common.6508.option.checker.dast.sw.common.6508.patterns.attack.description": "`사용자 정의 XXE 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터를 포함하는 XML 쿼리문 실행이 발생한다고 간주합니다.",
  "rule.dast.sw.common.6508.option.checker.dast.sw.common.6508.patterns.attack.name": "사용자 정의 XXE 삽입 패턴",
  "rule.dast.sw.common.6508.option.checker.dast.sw.common.6508.patterns.attack.placeholder": "XXE 삽입 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6508.option.checker.dast.sw.common.6508.regex.test.description": "`사용자 정의 XML 쿼리문 실행 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 XML 쿼리문 실행 결과가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6508.option.checker.dast.sw.common.6508.regex.test.name": "사용자 정의 XML 쿼리문 실행 내용 검사 정규식",
  "rule.dast.sw.common.6508.option.checker.dast.sw.common.6508.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6509.description": "SSI는 CGI 프로그램을 작성하거나 서버 사이드 스크립트를 작성하기 위하여 사용하는 언어이며, 웹 서버가 사용자에게 페이지를 제공하기 위하여 특정 구문을 해석하도록 지시하는 역할을 합니다. HTML 문서 내 입력 받은 변수값을 서버 측에서 처리할 때 부적절한 명령문을 포함시킬 수 있는 경우, 해당 명령문을 서버가 실행함으로써 서버의 중요 데이터 유출이 발생할 가능성이 존재합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. SSI 명령문 실행을 유발할 수 있는 요청을 송신합니다.\n2. 수신한 응답 본문에 SSI 명령문 실행 결과가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 SSI 명령문 삽입 패턴\n2. 사용자 정의 SSI 명령문 실행 검사 정규식",
  "rule.dast.sw.common.6509.name": "[2-5] 삽입 공격 - 마. SSI Injection",
  "rule.dast.sw.common.6509.option.checker.dast.sw.common.6509.patterns.attack.description": "`사용자 정의 SSI 삽입 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 SSI 명령문 실행 결과가 발생한다고 간주합니다.",
  "rule.dast.sw.common.6509.option.checker.dast.sw.common.6509.patterns.attack.name": "사용자 정의 SSI 명령문 삽입 패턴",
  "rule.dast.sw.common.6509.option.checker.dast.sw.common.6509.patterns.attack.placeholder": "공격 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6509.option.checker.dast.sw.common.6509.regex.test.description": "`사용자 정의 SSI 명령문 실행 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 SSI 명령문 실행 결과가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6509.option.checker.dast.sw.common.6509.regex.test.name": "사용자 정의 SSI 명령문 실행 검사 정규식",
  "rule.dast.sw.common.6509.option.checker.dast.sw.common.6509.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6510.description": "취약한 서비스와 불필요한 포트를 외부로 오픈하는 경우, 관련 취약점 공격에 쓰일 가능성이 있습니다. 특히 FTP(21), SSH(22), DB, 원격 데스크톱(3389) 등 원격 연결을 허용하는 것으로 잘 알려진 포트를 외부 접근 가능하도록 개방한 경우, 해당 포트는 계정 추측 공격 등에 쓰일 수 있으며, 서버 내 중요 정보를 유출당할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 사용자 정의 제외 대상 포트에 해당하지 않는 포트 중, 연결 타임아웃 시간 이내에 연결 가능한 포트가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 소켓 연결 타임아웃(밀리초)\n2. 사용자 정의 제외 대상 포트",
  "rule.dast.sw.common.6510.name": "[2-7] 기타 - 나. 불필요한 포트 오픈",
  "rule.dast.sw.common.6510.option.checker.dast.sw.common.6510.port.excluded.description": "`사용자 정의 제외 대상 포트`에 해당하는 포트를 검사 대상에서 제외합니다. 해당 포트는 외부로부터의 접근 허용이 필요한 것으로 간주합니다.",
  "rule.dast.sw.common.6510.option.checker.dast.sw.common.6510.port.excluded.name": "사용자 정의 제외 대상 포트",
  "rule.dast.sw.common.6510.option.checker.dast.sw.common.6510.port.excluded.placeholder": "포트 번호를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6510.option.checker.dast.sw.common.6510.socket.timeout.description": "`사용자 정의 소켓 연결 타임아웃`에 해당하는 밀리초 단위 시간동안 소켓 연결 수립을 기다립니다.",
  "rule.dast.sw.common.6510.option.checker.dast.sw.common.6510.socket.timeout.name": "사용자 정의 소켓 연결 타임아웃(밀리초)",
  "rule.dast.sw.common.6510.option.checker.dast.sw.common.6510.socket.timeout.placeholder": "타임아웃 시간을 입력하세요(단위: 밀리초).",
  "rule.dast.sw.common.6511.description": "phpMyAdmin은 XSS, 디렉터리 검색, cookie 변조 등 다양한 취약점을 내포하고 있을 뿐 아니라, 지속적으로 취약점 존재 사실이 알려지고 있으므로, 공격자들이 악용할 소지가 매우 높아 주의가 필요합니다.\n- phpMyAdmin 4.x 이전 버전의 export.php $_POST에서 전역 변수 생성됨에 따라 악용 가능\n- phpMyAdmin 4.6.x 이전 버전의 $cfg[‘ArbitraryServerRegexp’] 설정을 가진 서버의 쿠키값 재사용 가능\n- phpMyAdmin 4.0.x 이전 버전의 Import.php 스크립트 전역 변수 삽입에 취약함에 따른 공격자 구성 매개 변수 조작 가능\n- phpMyAdmin 3.1.x 이전 버전의 script/setup.php 파일을 통해 /tmp, /var/tmp 폴더에 nobody or apache 권한으로 악성 스크립트가 유입되어 외부로 공격 가능\n- phpMyAdmin 3.4.8 이전 버전의 libraries/display_export.lib.php 파일에 XSS 취약점 존재\n- phpMyAdmin 2.3.x 이전 버전의 sql.php, db_printview.php 등 다수 파일에 XSS 취약점 존재\n- [/db_details_importdocsql.php?submit_show=true&do=import&docpath=../../../] 등의 구문을 사용하여 디렉터리 검색 가능\n- phpMyAdmin 2.3.x 이전 버전의 phpMyAdmin은 인증정보를 cookie에 평문으로 저장하여 XSS 기법을 활용하여 관리자 cookie 정보를 통해 관리자 권한을 획득할 수 있음\n\n취약점 검출 과정은 다음과 같습니다:\n1. phpMyAdmin 관련 페이지 예상 경로로 요청을 송신합니다.\n2. 수신한 응답 본문에 phpMyAdmin 관련 페이지 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 phpMyAdmin 관련 페이지 경로\n2. 사용자 정의 phpMyAdmin 관련 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6511.name": "[2-7] 기타 - 다. phpMyAdmin 사용 제한",
  "rule.dast.sw.common.6511.option.checker.dast.sw.common.6511.path.attack.description": "`사용자 정의 phpMyAdmin 관련 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/PHP_MY_ADMIN_PAGE_PATH). 해당 URL을 phpMyAdmin 관련 페이지에 해당하는 URL로 간주합니다.",
  "rule.dast.sw.common.6511.option.checker.dast.sw.common.6511.path.attack.name": "사용자 정의 phpMyAdmin 관련 페이지 경로",
  "rule.dast.sw.common.6511.option.checker.dast.sw.common.6511.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6511.option.checker.dast.sw.common.6511.regex.test.description": "`사용자 정의 phpMyAdmin 관련 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 phpMyAdmin 관련 페이지 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6511.option.checker.dast.sw.common.6511.regex.test.name": "사용자 정의 phpMyAdmin 관련 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6511.option.checker.dast.sw.common.6511.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6512.description": "Adobe는 2020년 12월 31일부로 Adobe Flash Player의 지원을 중단하였습니다. 현재 Adobe Flash Player을 사용하는 경우, 미처리 보안 취약점을 악용한 신규 악성코드 및 랜섬웨어 감염, 해킹 등의 위협에 처할 수 있습니다. 서비스 제공자는 서비스 내에 포함된 Adobe Flash Player 사용을 중지하고, 웹 표준 기술인 HTML5, WebGL, WebAssembly 등으로 대체해야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 수신한 응답 본문에 Adobe Flash Player 관련 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 Adobe Flash Player 관련 내용 검사 정규식",
  "rule.dast.sw.common.6512.name": "[2-7] 기타 - 차. Adobe Flash Player 사용 제한",
  "rule.dast.sw.common.6512.option.checker.dast.sw.common.6512.regex.test.description": "`사용자 정의 Adobe Flash Player 관련 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 Adobe Flash Player 관련 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6512.option.checker.dast.sw.common.6512.regex.test.name": "사용자 정의 Adobe Flash Player 관련 내용 검사 정규식",
  "rule.dast.sw.common.6512.option.checker.dast.sw.common.6512.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6513.description": "파일 다운로드 기능 제공 시 서버에 전달하는 파일의 이름이나 경로를 사용자에게 노출하는 경우, 공격자는 이를 조작하여 애플리케이션 동작 디렉터리의 상위 경로에 존재하는 시스템 파일 및 접근 미허가 파일 등에 접근할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 파라미터값에 중요 파일 경로를 포함하는 요청을 송신합니다.\n2. 수신한 응답 본문에 중요 파일 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 중요 파일 경로 참조 패턴\n2. 사용자 정의 중요 파일 내용 검사 정규식",
  "rule.dast.sw.common.6513.name": "[3-1] 디렉터리 경로 조작 - 가. 파일 다운로드 시 파라미터에 다운로드 경로 및 파일명이 노출되거나 중요 파일 다운로드가 가능한 경우",
  "rule.dast.sw.common.6513.option.checker.dast.sw.common.6513.patterns.attack.description": "`사용자 정의 중요 파일 경로 참조 패턴`을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 중요 파일 경로에 대한 파일 다운로드가 발생한다고 간주합니다.",
  "rule.dast.sw.common.6513.option.checker.dast.sw.common.6513.patterns.attack.name": "사용자 정의 중요 파일 경로 참조 패턴",
  "rule.dast.sw.common.6513.option.checker.dast.sw.common.6513.patterns.attack.placeholder": "공격 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6513.option.checker.dast.sw.common.6513.regex.test.description": "`사용자 정의 중요 파일 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 중요 파일 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6513.option.checker.dast.sw.common.6513.regex.test.name": "사용자 정의 중요 파일 내용 검사 정규식",
  "rule.dast.sw.common.6513.option.checker.dast.sw.common.6513.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6514.description": "파일 다운로드 기능 제공 시 서버에 전달하는 파일의 이름이나 경로를 사용자에게 노출하는 경우, 공격자는 이를 조작하여 애플리케이션 동작 디렉터리의 상위 경로에 존재하는 시스템 파일 및 접근 미허가 파일 등에 접근할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 응답 본문에 존재하는 태그 중 다음과 같은 값을 모두 취합합니다.\n - \"Script\" 태그 내부 텍스트\n - \"type\" 속성값이 \"hidden\"에 해당하는 \"Input\" 태그의 \"value\" 속성값\n2. 임의의 취합한 값 중 파일 경로에 해당하는 값이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 파일 경로 검사 정규식",
  "rule.dast.sw.common.6514.name": "[3-1] 디렉터리 경로 조작 - 나. 다운로드 경로 정보가 Hidden 필드, JavaScript 및 js 파일 안에 하드코딩되어 경로 정보를 제공하며 중요 파일 다운로드가 가능한 경우",
  "rule.dast.sw.common.6514.option.checker.dast.sw.common.6514.regex.test.description": "`사용자 정의 파일 경로 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문 중 hidden 필드 및 JavaScript 영역 내부에 파일 경로 정보가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6514.option.checker.dast.sw.common.6514.regex.test.name": "사용자 정의 파일 경로 검사 정규식",
  "rule.dast.sw.common.6514.option.checker.dast.sw.common.6514.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6515.description": "파일 다운로드 기능 제공 시 서버에 전달하는 파일의 이름이나 경로를 사용자에게 노출하는 경우, 공격자는 이를 조작하여 애플리케이션 동작 디렉터리의 상위 경로에 존재하는 시스템 파일 및 접근 미허가 파일 등에 접근할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 파라미터값에 URL 인코딩을 적용한 중요 파일 경로를 포함하는 요청을 송신합니다.\n2. 수신한 응답 본문에 중요 파일 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 중요 파일 경로 참조 패턴\n2. 사용자 정의 중요 파일 내용 검사 정규식",
  "rule.dast.sw.common.6515.name": "[3-1] 디렉터리 경로 조작 - 다. 인코딩 변형을 통한 상위 패스 이동 및 다운로드가 가능한 경우",
  "rule.dast.sw.common.6515.option.checker.dast.sw.common.6515.patterns.attack.description": "`사용자 정의 중요 파일 경로 참조 패턴`에 대하여 **URL 인코딩한 값**을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 중요 파일 경로에 대한 파일 다운로드가 발생한다고 간주합니다.",
  "rule.dast.sw.common.6515.option.checker.dast.sw.common.6515.patterns.attack.name": "사용자 정의 중요 파일 경로 참조 패턴",
  "rule.dast.sw.common.6515.option.checker.dast.sw.common.6515.patterns.attack.placeholder": "공격 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6515.option.checker.dast.sw.common.6515.regex.test.description": "`사용자 정의 중요 파일 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 중요 파일 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6515.option.checker.dast.sw.common.6515.regex.test.name": "사용자 정의 중요 파일 내용 검사 정규식",
  "rule.dast.sw.common.6515.option.checker.dast.sw.common.6515.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6518.description": "디렉터리 리스팅이 가능한 경우, 백업 파일 및 압축 파일 등의 다운로드를 통해 중요 정보 및 파일, URL 정보 등의 유출이 가능합니다. 디렉터리 리스팅 취약점을 이용한 서버 내부 정보 획득은 서비스 전체에 위협이 될 가능성이 매우 높습니다. 만약 CVS(Concurrent Versions System) 또는 SVN(Subversion) 등을 사용하여 소스코드를 관리하는 경우, 공격자는 \"/CVS\" 혹은 \"/.svn/\" 디렉터리 등 내부에 존재하는 \"Entries\" 파일을 통해 디렉터리 리스팅 보안 조치를 우회할 수 있으며, 디렉터리 정보를 획득할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 디렉터리 목록 출력 페이지 예상 경로로 요청을 송신합니다.\n2. 수신한 응답 본문에 디렉터리 목록 출력 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 디렉터리 목록 출력 경로\n2. 사용자 정의 디렉터리 목록 출력 내용 검사 정규식",
  "rule.dast.sw.common.6518.name": "[1-3] 디렉터리 리스팅 - 가. 디렉터리 목록 출력",
  "rule.dast.sw.common.6519.description": "HTTP 메서드 중 일부는 웹 서버에 잠재적 보안 위협을 유발할 수 있으므로, 운영에 필수적인 메서드(예: GET, POST)만 사용하도록 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. Allow 헤더값 검사를 다음과 같이 수행합니다.\n\ta. OPTIONS 메서드를 사용하는 요청을 송신합니다.\n\tb. 수신한 응답의 \"Allow\" 헤더값에 \"TRACE\", \"PUT\", \"DELETE\" 중 하나 이상이 존재하는 경우, 취약점을 검출합니다.\n2. 특정 메서드를 사용한 요청에 대한 정상 처리 여부 검사를 다음과 같이 수행합니다.\n\ta. OPTIONS 메서드를 사용하는 요청을 송신합니다.\n\tb. 수신한 응답의 \"Allow\" 헤더값에 \"TRACE\", \"PUT\", \"DELETE\" 중 하나 이상이 존재하는 경우, 해당 값에 해당하는 메서드를 사용하는 요청을 송신합니다.\n\tc. 수신한 응답이 특정 메서드를 사용한 요청에 대한 정상 처리 결과에 해당하는 경우, 취약점을 검출합니다.\nHTTP 메서드 중 운영에 필수적인 메서드(GET, POST)만 사용하고, 취약한 HTTP 메서드(PUT, DELETE, TRACE)는 제거합니다. (OPTIONS, HEAD 메서드 사용시 취약하지 않지만 사용하지 않을 것을 권고드립니다.)",
  "rule.dast.sw.common.6519.name": "[3-2] HTTP 메소드 제한 - 가. 취약한 메소드를 사용 허용하는 경우",
  "rule.dast.sw.common.6520.description": "오류 발생에 대한 처리가 충분하지 않을 경우, 디렉터리 정보 및 각종 라이브러리에 대한 정보를 노출할 수 있습니다. 예외가 발생했을 경우 사전에 정의한 간략하고 정보 노출이 적은 오류 페이지를 게시하고, 시스템 및 애플리케이션 관리자만 열람 가능한 로그 파일을 구성하여야 합니다. 3rd party에 존재하는 OLE DB 등에서 발생하는 오류 구문의 경우, 중요한 DB 정보 등을 노출할 수 있으므로, 입력값에 대한 충분한 검증을 수반하여야 하며, 예외 발생에 대하여 준비한 오류 메시지가 올바르게 제공됨을 확인해야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 기본 오류 페이지를 유발할 수 있는 요청을 송신합니다. \n2. 수신한 응답의 상태 코드가 4xx 혹은 5xx에 해당하고, 본문에 기본 오류 페이지 내용이 존재함과 동시에 서버 정보가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 기본 오류 페이지 경로\n2. 사용자 정의 기본 오류 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6520.name": "[3-3] 부적절한 오류 처리 - 가. 오류 페이지 내 HTTP 상태 코드 및 정보 노출 확인",
  "rule.dast.sw.common.6520.option.checker.dast.sw.common.6520.path.attack.description": "`사용자 정의 기본 오류 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/DEFAULT_ERROR_PAGE_PATH). 해당 URL을 서버에서 제공하는 기본 오류 페이지에 해당하는 URL로 간주합니다.",
  "rule.dast.sw.common.6520.option.checker.dast.sw.common.6520.path.attack.name": "사용자 정의 기본 오류 페이지 경로",
  "rule.dast.sw.common.6520.option.checker.dast.sw.common.6520.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6520.option.checker.dast.sw.common.6520.regex.test.description": "`사용자 정의 기본 오류 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 기본 오류 페이지 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6520.option.checker.dast.sw.common.6520.regex.test.name": "사용자 정의 기본 오류 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6520.option.checker.dast.sw.common.6520.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6522.description": "오류 발생에 대한 처리가 충분하지 않을 경우, 디렉터리 정보 및 각종 라이브러리에 대한 정보를 노출할 수 있습니다. 예외가 발생했을 경우 사전에 정의한 간략하고 정보 노출이 적은 오류 페이지를 게시하고, 시스템 및 애플리케이션 관리자만 열람 가능한 로그 파일을 구성하여야 합니다. 3rd party에 존재하는 OLE DB 등에서 발생하는 오류 구문의 경우, 중요한 DB 정보 등을 노출할 수 있으므로, 입력값에 대한 충분한 검증을 수반하여야 하며, 예외 발생에 대하여 준비한 오류 메시지가 올바르게 제공됨을 확인해야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. DB 오류 메시지를 유발할 수 있는 요청을 송신합니다.\n2. 수신한 응답 본문에 DB 오류 메시지가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 DB 오류 메시지 유발 패턴\n2. 사용자 정의 DB 오류 메시지 내용 검사 정규식",
  "rule.dast.sw.common.6522.name": "[3-3] 부적절한 오류 처리 - 바. DB 에러 메시지 확인",
  "rule.dast.sw.common.6522.option.checker.dast.sw.common.6522.patterns.attack.description": " `사용자 정의 DB 오류 메시지 유발 공격 패턴` 을 사용하여 요청 파라미터를 구성합니다. 해당 요청 파라미터로 인하여 DB 오류 메시지가 발생한다고 간주합니다.",
  "rule.dast.sw.common.6522.option.checker.dast.sw.common.6522.patterns.attack.name": "사용자 정의 DB 오류 메시지 유발 패턴",
  "rule.dast.sw.common.6522.option.checker.dast.sw.common.6522.patterns.attack.placeholder": "DB 오류 메시지 유발 패턴을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6522.option.checker.dast.sw.common.6522.regex.test.description": "`사용자 정의 DB 오류 메시지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 DB 오류 메시지 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6522.option.checker.dast.sw.common.6522.regex.test.name": "사용자 정의 DB 오류 메시지 내용 검사 정규식",
  "rule.dast.sw.common.6522.option.checker.dast.sw.common.6522.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6523.description": "인증 정보 및 DB 접속 정보 등의 시스템 내부 정보를 소스 상에 하드 코딩하거나 주석문, 히든 필드, 쿠키 등에 포함하여 클라이언트에 전송하는 경우, 해당 정보를 노출함으로써 추가적인 취약점을 유발할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 수신한 응답 본문에 민감한 정보가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 민감한 정보 검사 정규식",
  "rule.dast.sw.common.6523.name": "[3-4] 민감한 정보 노출 제한 - 가. 민감한 정보가 포함된 파일 혹은 소스 상에서 주석, 평문으로 노출될 경우",
  "rule.dast.sw.common.6523.option.checker.dast.sw.common.6523.regex.test.description": "`사용자 정의 민감한 정보 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 민감한 정보가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6523.option.checker.dast.sw.common.6523.regex.test.name": "사용자 정의 민감한 정보 검사 정규식",
  "rule.dast.sw.common.6523.option.checker.dast.sw.common.6523.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6524.description": "인증 정보 및 DB 접속 정보 등의 시스템 내부 정보를 소스 상에 하드 코딩하거나 주석문, 히든 필드, 쿠키 등에 포함하여 클라이언트에 전송하는 경우, 해당 정보를 노출함으로써 추가적인 취약점을 유발할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 수신한 응답의 \"Server\" 헤더값이 서버 정보를 포함하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 서버 버전 정보 검사 정규식",
  "rule.dast.sw.common.6524.name": "[3-4] 민감한 정보 노출 제한 - 자. 응답 헤더에서 서버 버전 정보 노출",
  "rule.dast.sw.common.6524.option.checker.dast.sw.common.6524.regex.test.description": "`사용자 정의 서버 버전 정보 검사 정규식`을 사용하여 응답 헤더를 분석합니다. 해당 정규식에 대응하는 부분이 응답 헤더에 존재하는 경우, 응답 헤더에 서버 버전 정보가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6524.option.checker.dast.sw.common.6524.regex.test.name": "사용자 정의 서버 버전 정보 검사 정규식",
  "rule.dast.sw.common.6524.option.checker.dast.sw.common.6524.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6525.description": "인증 정보 또는 중요 정보(주민등록번호, 거래 정보, 결제 정보 등)를 암호화하지 않고 평문 상태로 전송하는 경우, 공격자는 네트워크 스니핑 등을 통해 중요 정보를 탈취하고 악용할 수 있습니다. \n\n취약점 검출 과정은 다음과 같습니다:\n1. 분석 대상 페이지에서 민감한 정보를 전송하는 form 요소를 탐색합니다.\n2. 해당 요소 중 SSL 미적용 상태로 요청을 송신하거나, 또는 SSL을 적용하였으나 GET 메소드를 사용하는 요소가 존재하는 경우, 취약점을 검출합니다.",
  "rule.dast.sw.common.6525.name": "[3-5] 중요 정보 암호화 전송 - 나. 대외 오픈 서비스의 관리자 인터페이스가 SSL 등으로 암호화되어 보호되고 있지 않을 경우 취약",
  "rule.dast.sw.common.6526.description": "인증 정보 또는 중요 정보(주민등록번호, 거래 정보, 결제 정보 등)를 암호화하지 않고 평문 상태로 전송하는 경우, 공격자는 네트워크 스니핑 등을 통해 중요 정보를 탈취하고 악용할 수 있습니다. \n\n취약점 검출 과정은 다음과 같습니다:\n1. 수신한 응답 본문에 서비스 접속 정보가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 서비스 접속 정보 검사 정규식",
  "rule.dast.sw.common.6526.name": "[3-5] 중요 정보 암호화 전송 - 라. 서비스 구조 및 특정 리소스 정보 참조 시 FTP, DB, 시스템 접속 정보가 노출될 경우",
  "rule.dast.sw.common.6526.option.checker.dast.sw.common.6526.regex.test.description": "`사용자 정의 서비스 접속 정보 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 특정 서비스 접속 정보가 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6526.option.checker.dast.sw.common.6526.regex.test.name": "사용자 정의 서비스 접속 정보 검사 정규식",
  "rule.dast.sw.common.6526.option.checker.dast.sw.common.6526.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6527.description": "인증 정보 또는 중요 정보(주민등록번호, 거래 정보, 결제 정보 등)를 암호화하지 않고 평문 상태로 전송하는 경우, 공격자는 네트워크 스니핑 등을 통해 중요 정보를 탈취하고 악용할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. Qualys SSL Labs SSL Server Test 기반 인증서 및 SSL 설정 검사를 수행합니다.\n2. 프로토콜 버전 및 Cipher Suite, 인증서 키 길이, 인증서 유효 기간, 인증서 해싱 알고리즘, 전체 평가 등급에 대한 검사 결과 중 안전하지 않은 설정이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 SSL labs Server Test 분석 대기 시간(초)\n보안 강화를 위해 TLS v1.2 이상의 사용이 권장됩니다. 인증서의 경우 RSA 1024비트 이상과 SHA-2 기반의 해시 알고리즘을 사용하는 것이 보다 안전합니다.",
  "rule.dast.sw.common.6527.name": "[3-5] 중요 정보 암호화 전송 - 마. 안전하지 않은 SSL 및 TLS 버전을 사용하는 경우",
  "rule.dast.sw.common.6527.option.checker.dast.sw.common.6527.time.waiting.description": "`사용자 정의 SSL labs Server Test 분석 대기 시간`에 해당하는 초 단위 시간 동안 대기하며 `SSL labs Server Test` 분석 완료를 기다립니다.",
  "rule.dast.sw.common.6527.option.checker.dast.sw.common.6527.time.waiting.name": "사용자 정의 SSL labs Server Test 분석 대기 시간(초)",
  "rule.dast.sw.common.6527.option.checker.dast.sw.common.6527.time.waiting.placeholder": "분석 대기 시간을 입력하세요(단위: 초).",
  "rule.dast.sw.common.6528.description": "검색엔진을 통하여 불특정 다수가 내부 정보가 담긴 페이지나 게시물, 개인 정보, 오류 페이지 등에 접근 가능할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. \"/robots.txt\" 경로에 대하여 요청을 송신합니다.\n2. 수신한 응답 상태 코드가 200이 아니거나, 수신한 응답 본문에 \"User-agent\" 설정값이 검사 정규식에 대응하지 않거나 \"Disallow\" 설정이 존재하지 않는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 User agent 설정값 검사 정규식",
  "rule.dast.sw.common.6528.name": "[3-7] 검색 엔진 정보 노출 - 나. robots.txt 파일이 존재하지 않거나 수집을 제한하지 않는 경우",
  "rule.dast.sw.common.6528.option.checker.dast.sw.common.6528.regex.test.description": "`사용자 정의 User agent 설정값 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 적절하지 않은 `User agent` 설정값이 이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6528.option.checker.dast.sw.common.6528.regex.test.name": "사용자 정의 User agent 설정값 검사 정규식",
  "rule.dast.sw.common.6528.option.checker.dast.sw.common.6528.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6529.description": "디렉터리 리스팅이 허가한 경우, 백업 파일 및 압축 파일 등의 다운로드를 통해 중요 정보 및 파일, URL 정보 등의 유출이 가능합니다. 디렉터리 리스팅 취약점을 이용한 서버 내부 정보 획득은 서비스 전체에 위협이 될 가능성이 매우 높습니다. 만약 CVS(Concurrent Versions System) 또는 SVN(Subversion) 등을 사용하여 소스코드를 관리하는 경우, 공격자는 \"/CVS\" 혹은 \"/.svn/\" 디렉터리 등 내부에 존재하는 \"Entries\" 파일을 통해 디렉터리 리스팅 보안 조치를 우회할 수 있으며, 디렉터리 정보를 획득할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 리포지터리 목록 출력 페이지 예상 경로로 요청을 송신합니다.\n2. 수신한 응답 본문에 리포지터리 목록 출력 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 리포지터리 목록 출력 경로\n2. 사용자 정의 리포지터리 목록 출력 내용 검사 정규식",
  "rule.dast.sw.common.6529.name": "[1-3] 디렉터리 리스팅 - 다. 리포지터리 목록 출력",
  "rule.dast.sw.common.6529.option.checker.dast.sw.common.6529.path.attack.description": "`사용자 정의 리포지터리 목록 출력 경로`를 사용하여 URL을 구성합니다(예: http://host.com/REPOSITORY_LIST_PAGE_PATH). 해당 URL을 리포지토리 목록을 출력하는 페이지에 해당하는 URL로 간주합니다.",
  "rule.dast.sw.common.6529.option.checker.dast.sw.common.6529.path.attack.name": "사용자 정의 리포지터리 목록 출력 경로",
  "rule.dast.sw.common.6529.option.checker.dast.sw.common.6529.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6529.option.checker.dast.sw.common.6529.regex.test.description": "`사용자 정의 리포지터리 목록 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 리포지터리 목록 출력 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6529.option.checker.dast.sw.common.6529.regex.test.name": "사용자 정의 리포지터리 목록 출력 내용 검사 정규식",
  "rule.dast.sw.common.6529.option.checker.dast.sw.common.6529.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6530.description": "백업 및 임시 파일은 관리자와 개발자의 주의가 필요합니다. 예를 들어, 관리 부주의로 인하여 개발 당시 테스트 용도의 소스 또는 백업 파일 등을 ZIP, TAR 등의 형식으로 압축하여 방치한 경우, 공격자는 해당 파일에 접근하여 내용을 열람할 수 있습니다. 또한, 클라이언트 측 소스코드 내 주석이나 브라우저의 콘솔 로그 내 개발 및 서비스 관련 정보를 노출할 경우, 해당 정보가 공격 정보로 이용될 수 있으므로 주의가 필요합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 응답 본문에 \"href\" 속성값이 특정 확장자로 끝나는 태그가 존재하는 경우, 취약점을 검출합니다.\n\n취약점 검출을 위하여 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 파일 확장자\n웹 애플리케이션 운영에 필수적인 파일을 제외한 모든 불필요한 파일을 삭제해야 합니다.\n\ntar, psd, fla, bak, test, txt, old, zip, 날짜 등 불필요한 확장자를 검색 후 삭제하는 것이 좋습니다.\n\n서비스 오픈 이후 추가 개발이나 유지 보수 후 불필요한 파일이 남아 있지 않은지 확인하도록 합니다. 예를 들어, 초기 서비스 설치 시 디폴트로 설치되는 Contents 및 서비스들을 Disable 처리, 디폴트 디렉터리(/htdocs, /cig bin 등)를 삭제 또는 변경, 디폴트 페이지(Manual, Sample 등)를 삭제 또는 변경 등이 가능합니다.\n\n개발 및 테스트 목적으로 필요한 파일의 경우 별도 테스트 프로젝트로 분리하여 관리하도록 합니다.",
  "rule.dast.sw.common.6530.name": "[1-4] 백업 및 임시 파일 관리 - 가. 개발 리소스, 백업 파일, 임시 파일 등 존재",
  "rule.dast.sw.common.6530.option.checker.dast.sw.common.6530.extensions.description": "`사용자 정의 파일 확장자`에 해당하는 확장자로 끝나는 링크 주소를 페이지 내에서 검색합니다. 해당 주소를 통하여 특정 확장자를 가지는 파일 다운로드가 가능한 것으로 간주합니다.",
  "rule.dast.sw.common.6530.option.checker.dast.sw.common.6530.extensions.name": "사용자 정의 파일 확장자",
  "rule.dast.sw.common.6530.option.checker.dast.sw.common.6530.extensions.placeholder": "확장자를 입력해주세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6531.description": "백업 및 임시 파일은 관리자와 개발자의 주의가 필요합니다. 예를 들어, 관리 부주의로 인하여 개발 당시 테스트 용도의 소스 또는 백업 파일 등을 ZIP, TAR 등의 형식으로 압축하여 방치한 경우, 공격자는 해당 파일에 접근하여 내용을 열람할 수 있습니다. 또한, 클라이언트 측 소스코드 내 주석이나 브라우저의 콘솔 로그 내 개발 및 서비스 관련 정보를 노출할 경우, 해당 정보가 공격 정보로 이용될 수 있으므로 주의가 필요합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 디폴트 페이지 예상 경로로 요청을 송신합니다.\n2. 수신한 응답 본문에 디폴트 페이지 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 디폴트 페이지 경로\n2. 사용자 정의 디폴트 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6531.name": "[1-4] 백업 및 임시 파일 관리 - 라. 디폴트 페이지 존재",
  "rule.dast.sw.common.6531.option.checker.dast.sw.common.6531.path.attack.description": "`사용자 정의 디폴트 페이지 경로`를 사용하여 URL을 구성합니다(예: http://host.com/DEFAULT_PAGE_PATH). 해당 URL을 디폴트 페이지에 해당하는 URL로 간주합니다.",
  "rule.dast.sw.common.6531.option.checker.dast.sw.common.6531.path.attack.name": "사용자 정의 디폴트 페이지 경로",
  "rule.dast.sw.common.6531.option.checker.dast.sw.common.6531.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6531.option.checker.dast.sw.common.6531.regex.test.description": "`사용자 정의 디폴트 페이지 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 디폴트 페이지 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6531.option.checker.dast.sw.common.6531.regex.test.name": "사용자 정의 디폴트 페이지 내용 검사 정규식",
  "rule.dast.sw.common.6531.option.checker.dast.sw.common.6531.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6532.description": "백업 및 임시 파일은 관리자와 개발자의 주의가 필요합니다. 예를 들어, 관리 부주의로 인하여 개발 당시 테스트 용도의 소스 또는 백업 파일 등을 ZIP, TAR 등의 형식으로 압축하여 방치한 경우, 공격자는 해당 파일에 접근하여 내용을 열람할 수 있습니다. 또한, 클라이언트 측 소스코드 내 주석이나 브라우저의 콘솔 로그 내 개발 및 서비스 관련 정보를 노출할 경우, 해당 정보가 공격 정보로 이용될 수 있으므로 주의가 필요합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 수신한 응답 본문에 console 관련 함수를 사용하는 자바스크립트 구문이 존재하는 경우, 취약점을 검출합니다.\n\n취약점 검출을 위하여 다음과 같은 패턴을 기본적으로 사용합니다:\n1. 리포지터리 목록 출력 내용 검사 정규식",
  "rule.dast.sw.common.6532.name": "[1-4] 백업 및 임시 파일 관리 - 마. 브라우저 콘솔 내 디버깅 정보나 서비스 정보가 출력",
  "rule.dast.sw.common.6532.option.checker.dast.sw.common.6532.regex.test.description": "`console 관련 함수 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 console 관련 함수 호출이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.6532.option.checker.dast.sw.common.6532.regex.test.name": "console 관련 함수 호출 검사 정규식",
  "rule.dast.sw.common.6532.option.checker.dast.sw.common.6532.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.6533.description": "적절한 세션 타임아웃 설정을 사용하지 않을 경우, 공격자는 세션 재사용 기법 등을 통하여 비정상적 공격 및 접근이 가능합니다. 또한 로그아웃 및 브라우저 종료 시 세션을 정상 폐기하여, 세션 재사용 기법 등을 통한 공격 가능성을 감소시켜야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 주어진 로그인 기록 파일 기반으로 로그인을 시도하고, 세션을 획득합니다.\n2. 세션 타임아웃 시간동안 대기합니다.\n3. 브라우저를 재시작합니다.\n4. 최초 로그인 시 수집한 세션을 브라우저에 강제 설정합니다.\n5. 최초 로그인 후 도달 가능하였던 위치로 로그인 수행 없이 접근 가능한 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 분석 대상 옵션을 설정할 수 있습니다:\n1. 로그인 기록 파일\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 세션 이름\n2. 사용자 정의 세션 타임아웃(초)",
  "rule.dast.sw.common.6533.name": "[1-5] 적절하지 않은 세션 설정 - 가. 세션 유지를 위한 베이스라인 설정",
  "rule.dast.sw.common.6534.description": "적절한 세션 타임아웃 설정을 사용하지 않을 경우, 공격자는 세션 재사용 기법 등을 통하여 비정상적 공격 및 접근이 가능합니다. 또한 로그아웃 및 브라우저 종료 시 세션을 정상 폐기하여, 세션 재사용 기법 등을 통한 공격 가능성을 감소시켜야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 주어진 로그인 기록 파일 기반으로 로그인을 시도하고, 세션을 획득합니다.\n2. 세션 타임아웃 시간동안 대기합니다.\n3. 브라우저를 재시작합니다.\n4. 최초 로그인 시 수집한 세션을 브라우저에 강제 설정합니다.\n5. 최초 로그인 후 도달 가능하였던 위치로 로그인 수행 없이 접근 가능한 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 분석 대상 옵션을 설정할 수 있습니다:\n1. 로그인 기록 파일\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 세션 이름\n2. 사용자 정의 세션 타임아웃(초)",
  "rule.dast.sw.common.6534.name": "[1-5] 적절하지 않은 세션 설정 - 나. 애플리케이션 세션 타임아웃 설정",
  "rule.dast.sw.common.6537.description": "디렉터리 리스팅이 허용되면 공격자가 디렉터리 내 파일 목록을 쉽게 확인할 수 있습니다. 이를 통해 백업 파일이나 압축 파일 등의 민감한 정보가 노출되고, 서버 내부 구조에 대한 정보가 드러나 추가적인 공격이 발생할 수 있습니다. 특히, 버전 관리 시스템(CVS, SVN 등)이 노출되면 내부 디렉터리 정보까지 쉽게 유출될 위험이 큽니다.\n웹 서버에서 디렉터리 리스팅을 비활성화하고, 서버에 적절한 접근 제어를 설정해 중요한 파일이 외부에 노출되지 않도록 보호합니다. 불필요한 백업 및 임시 파일을 삭제하고, 버전 관리 시스템(CVS, SVN 등)의 디렉터리는 외부 접근이 불가능하도록 설정해 내부 정보 유출을 방지합니다.",
  "rule.dast.sw.common.6537.name": "디렉터리 리스팅",
  "rule.dast.sw.common.6538.description": "서버에 남아있는 임시 파일, 백업 파일, 로그 파일 등이 외부에 노출되면 공격자가 이를 다운로드하여 내부 구성 파일, 사용자 데이터, 또는 환경 설정 정보를 획득할 수 있습니다. 이러한 정보는 시스템에 대한 추가적인 공격 단서를 제공할 수 있습니다.\n필요하지 않은 임시 파일, 백업 파일, 로그 파일 등을 제거하여 정보 노출을 방지합니다. 또한, 이러한 파일이 서버에 남아있지 않도록 주기적으로 삭제하는 자동화된 프로세스를 적용하는 것을 권장합니다.",
  "rule.dast.sw.common.6538.name": "불필요한 임시 파일 노출",
  "rule.dast.sw.common.6539.description": "반사형 XSS(Reflected XSS)은 사용자가 악성 스크립트가 포함된 링크를 클릭했을 때 발생합니다. 스크립트가 실행되면 공격자는 사용자의 인증 정보나 쿠키를 탈취할 수 있으며, 사용자를 악성 사이트로 리디렉션할 수도 있습니다.\n사용자가 입력한 값에 대해 검증과 인코딩을 수행하여 악성 스크립트가 실행되지 않도록 방지해야 합니다.",
  "rule.dast.sw.common.6539.name": "반사형 XSS",
  "rule.dast.sw.common.6540.description": "SQL 삽입(SQL Injection)은 사용자가 입력 가능한 필드나 파라미터에 특정 문자를 삽입해 DB 질의문을 조작하는 방식으로 발생합니다. 이를 통해 공격자는 인증 절차를 우회하거나, 데이터베이스 내의 정보를 열람 및 변조할 수 있습니다. 특히, ', \", --, #, /*, */ 등의 문자를 입력하여 DB 오류 메시지를 발생시키고, 이를 통해 SQL 삽입이 가능함을 확인할 수 있습니다.\n사용자 입력값을 그대로 DB 질의문에 포함하지 않도록 하기 위해 입력값을 철저히 검증하고, SQL 쿼리를 안전하게 처리하기 위해 Prepared Statements 또는 ORM(Object-Relational Mapping)과 같은 방법을 사용해야 합니다.",
  "rule.dast.sw.common.6540.name": "SQL 삽입",
  "rule.dast.sw.common.6542.description": "XML 처리 과정에서 외부 파일을 참조하는 XML External Entity(XXE) 삽입 공격은 공격자가 XML 내부에 서버의 파일 내용을 포함시킬 수 있는 취약점입니다. 예를 들어, /etc/passwd와 같은 중요한 파일을 참조하도록 XML 개체를 변조하면 공격자는 해당 파일의 내용을 XML 출력 결과에 포함시켜 서버 내의 민감한 정보에 접근할 수 있습니다.\nXML 파서를 설정하여 외부 개체(External Entity) 참조를 비활성화하고, XML 입력값을 안전하게 검증 및 필터링하여 악의적인 XML 구조를 차단해야 합니다.",
  "rule.dast.sw.common.6542.name": "XXE 삽입",
  "rule.dast.sw.common.6543.description": "phpMyAdmin은 데이터베이스 관리 도구로, 다양한 취약점(XSS, 디렉터리 검색, 쿠키 변조 등)이 지속적으로 발견되어 악용될 가능성이 높은 도구입니다. phpMyAdmin의 특정 버전에서는 전역 변수 생성, 쿠키값 재사용, 악성 스크립트 유입, XSS 등의 취약점이 보고되었습니다. 특히, 오래된 버전에서는 공격자가 시스템에 접근하거나 관리자 권한을 획득할 수 있습니다.\n되도록이면 phpMyAdmin의 사용을 제한하거나, 최신 버전으로 업그레이드하여 불필요한 페이지 접근을 차단하는 방법으로 보안을 강화합니다.",
  "rule.dast.sw.common.6543.name": "phpMyAdmin 사용 제한",
  "rule.dast.sw.common.6544.description": "Adobe는 2020년 12월 31일부로 Adobe Flash Player의 지원을 중단했습니다. 현재 Adobe Flash Player를 사용하는 경우, 처리되지 않은 보안 취약점을 악용한 악성코드 및 랜섬웨어 감염, 해킹 등의 위험에 노출될 수 있습니다. 서비스 제공자는 Adobe Flash Player 사용을 중지하고, HTML5, WebGL, WebAssembly 등 최신 웹 표준 기술로 대체해야 합니다.\n서비스 내에서 Adobe Flash Player를 제거하고, 웹 표준 기술인 HTML5, WebGL, WebAssembly 등을 사용하여 콘텐츠를 제공하도록 변경합니다. Flash 콘텐츠가 포함된 페이지는 수정하여 보안 위협을 제거해야 합니다.",
  "rule.dast.sw.common.6544.name": "Adobe Flash Player 사용 제한",
  "rule.dast.sw.common.6545.description": "파일 다운로드 기능에서 서버에 전달되는 파일의 이름이나 경로가 클라이언트 측에 노출될 경우, 공격자는 이를 조작하여 시스템 파일이나 접근이 허용되지 않은 파일에 접근할 수 있습니다. 특히, 이러한 경로 정보가 Hidden 필드, 자바스크립트 코드, 또는 JS 파일에 하드코딩되어 있다면 공격자는 이를 악용해 중요한 파일을 다운로드할 수 있습니다.\n파일 경로와 이름 등의 정보는 클라이언트 측에 노출되지 않도록 해야 하며, 서버에서 파일 요청을 처리할 때 경로 검증을 강화하여 사용자 입력을 통해 파일 경로가 조작되지 않도록 방지해야 합니다.",
  "rule.dast.sw.common.6545.name": "다운로드 경로 노출 및 조작",
  "rule.dast.sw.common.6546.description": "응답 헤더에 서버 버전 정보가 포함되면 공격자는 이를 통해 서버의 종류와 버전을 파악할 수 있고, 해당 서버에 대한 알려진 취약점을 악용하여 추가적인 공격을 시도할 수 있습니다. 특히, Server 헤더에 노출된 정보는 서버의 취약성을 드러내는 중요한 단서가 될 수 있으므로 이를 제거하거나 최소한의 정보만 제공하는 것이 필요합니다.\n응답 헤더에서 Server 헤더값을 제거하거나 서버 정보를 노출하지 않도록 설정합니다. 또한, 최소한의 정보만 제공하도록 서버 설정을 변경하여 공격자가 서버 버전 정보를 수집하지 못하도록 해야 합니다.",
  "rule.dast.sw.common.6546.name": "서버 버전 정보 노출",
  "rule.dast.sw.common.6547.description": "robots.txt 파일은 웹사이트의 특정 경로에 대해 검색 엔진 크롤러의 접근을 제어하는 설정 파일입니다. 이를 통해 민감한 정보나 내부 페이지가 검색 엔진 결과에 노출되지 않도록 보호할 수 있습니다. 하지만 robots.txt 파일은 악의적인 봇이나 공격자를 막을 수 없으므로 설정을 적절하게 구성하는 것이 중요합니다.\n웹 서버의 최상위 경로(/)에 robots.txt 파일을 배치하고, User-agent 값을 변경하여 특정 검색 엔진의 접근을 차단할 수 있습니다. 또한, Disallow 지시어를 사용해 특정 디렉터리나 파일에 대한 검색 엔진의 접근을 제한하여 민감한 정보가 노출되지 않도록 설정해야 합니다.",
  "rule.dast.sw.common.6547.name": "부적절한 robots.txt 설정",
  "rule.dast.sw.common.7029.description": "인증 정보 및 DB 접속 정보 등의 시스템 내부 정보를 소스 상에 하드 코딩하거나 주석문, 히든 필드, 쿠키 등에 포함하여 클라이언트에 전송하는 경우, 해당 정보를 노출함으로써 추가적인 취약점을 유발할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 분석 대상 페이지에서 민감한 정보를 전송하는 form 요소를 탐색합니다.\n2. 해당 요소 중 GET 메서드를 사용하는 요소가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 파라미터 이름 검사 정규식\nform 태그를 사용하여 중요 정보를 전송하는 경우, POST 메서드를 사용하여 전송하도록 해당 form 태그의 method 속성 값을 설정하여야 합니다.",
  "rule.dast.sw.common.7029.name": "[3-4] 민감한 정보 노출 제한 - 마. 중요 정보를 서버 측에 전송 시, GET 메서드를 사용하며 URL 파라미터에 중요 정보를 담아 전송하는 경우 취약",
  "rule.dast.sw.common.7029.option.checker.dast.sw.common.7029.regex.test.description": "`사용자 정의 파라미터 이름 검사 정규식`을 사용하여 input 태그의 name 속성을 분석합니다. 해당 정규식에 대응하는 부분이 특정 input 태그의 name 속성에 존재하는 경우, 해당 input 태그를 통하여 전송하는 정보가 중요 정보에 해당하는 것으로 간주합니다.",
  "rule.dast.sw.common.7029.option.checker.dast.sw.common.7029.regex.test.name": "사용자 정의 파라미터 이름 검사 정규식",
  "rule.dast.sw.common.7029.option.checker.dast.sw.common.7029.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.7030.description": "인증 정보 또는 중요 정보(주민등록번호, 거래 정보, 결제 정보 등)를 암호화하지 않고 평문 상태로 전송하는 경우, 공격자는 네트워크 스니핑 등을 통해 중요 정보를 탈취하고 악용할 수 있습니다. \n\n취약점 검출 과정은 다음과 같습니다:\n1. 분석 대상 페이지에서 민감한 정보를 전송하는 form 요소를 탐색합니다.\n2. 해당 요소 중 SSL 미적용 상태로 요청을 송신하는 요소가 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 파라미터 이름 검사 정규식\nform 태그를 사용하여 중요 정보를 전송하는 경우, HTTPS 프로토콜을 사용하여 전송하도록 해당 form 태그의 action 속성 값을 설정해야 합니다.",
  "rule.dast.sw.common.7030.name": "[3-5] 중요 정보 암호화 전송 - 가. 비밀번호, 바이오정보 등 인증정보 및 고유식별정보가 평문으로 서버에 전송되거나 변조가 가능한 경우 취약",
  "rule.dast.sw.common.7030.option.checker.dast.sw.common.7030.regex.test.description": "`사용자 정의 파라미터 이름 검사 정규식`을 사용하여 input 태그의 name 속성을 분석합니다. 해당 정규식에 대응하는 부분이 특정 input 태그의 name 속성에 존재하는 경우, 해당 input 태그를 통하여 전송하는 정보가 중요 정보에 해당하는 것으로 간주합니다.",
  "rule.dast.sw.common.7030.option.checker.dast.sw.common.7030.regex.test.name": "사용자 정의 파라미터 이름 검사 정규식",
  "rule.dast.sw.common.7030.option.checker.dast.sw.common.7030.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.7031.description": "세션 쿠키에 HttpOnly 속성이 누락된 경우를 탐지합니다. HttpOnly 속성은 클라이언트 측 스크립트에서 쿠키에 접근할 수 없도록 하여 XSS(크로스 사이트 스크립팅) 공격으로 인해 쿠키 정보가 유출되는 것을 방지하는 보안 설정입니다.\n세션 쿠키에 HttpOnly 속성을 추가해야 합니다. 이를 통해 클라이언트 측 스크립트가 쿠키에 접근하지 못하도록 하여 잠재적인 XSS 공격으로부터 보호할 수 있습니다.",
  "rule.dast.sw.common.7031.name": "HttpOnly 속성이 누락된 세션 쿠키",
  "rule.dast.sw.common.7032.description": "로그인하기 전과 후의 세션 ID가 동일한지 확인합니다. 세션 ID가 변경되지 않으면 보안상 취약점이 발생할 수 있습니다. 특히 세션 하이재킹과 같은 공격에 노출될 위험이 높아집니다. 안전한 인증을 위해 로그인 후에는 세션 ID가 반드시 재생성되어야 합니다.\n로그인 후 기존 세션을 폐기하고, 새로운 세션을 생성해야 합니다. 세션 ID가 재생성되면 세션 하이재킹과 같은 공격을 방지할 수 있습니다. 대부분의 웹 프레임워크는 로그인 시 세션을 재생성하는 기능을 제공하므로 이를 활용하거나 직접 구현해야 합니다.",
  "rule.dast.sw.common.7032.name": "재생성되지 않은 세션 ID",
  "rule.dast.sw.common.7142.description": "클라이언트 측에서 `document.cookie`를 사용해 쿠키에 접근할 수 있다는 것은, JavaScript로 해당 쿠키 정보를 읽고 조작할 수 있다는 의미입니다. 이는 페이지 내 다른 스크립트에서도 동일하게 쿠키에 접근할 수 있다는 점에서 잠재적인 보안 위협이 존재합니다. 특히, XSS 취약점이 존재할 경우, 공격자는 사용자의 쿠키를 탈취해 세션 하이재킹 또는 권한 상승 공격을 시도할 수 있습니다.\n`document.cookie`와 같이 사이트에 대한 보안 위협이 될 수 있는 클라이언트 측 JavaScript 코드를 제거해야 합니다. 또한, 민감한 쿠키에는 반드시 `HttpOnly`, `Secure`, `SameSite`와 같은 보안 플래그를 설정합니다.",
  "rule.dast.sw.common.7142.name": "클라이언트 측(JavaScript) 쿠키 참조",
  "rule.dast.sw.common.7143.description": "서버 측 템플릿 인젝션 취약점은 사용자의 입력 값이 적절하게 필터링 되지 않고, 서버 측 템플릿 엔진에 삽입될 때 발생합니다. 공격자는 이를 악용해 서버 측 템플릿 엔진에 악의적인 구문을 삽입하여 임의 객체 생성, 파일 읽기/쓰기, 원격 명령 실행 등의 공격을 시도할 수 있습니다.\n서버 측 템플릿 인젝션 취약점을 대응하기 위해서는 Sanitization과 입력 값 검증을 다중으로 적용하는 것이 가장 좋은 방법입니다.\n \n ### 1. Sanitization (코드 안정성 검사)\n  Sanitization은 사용자 입력으로부터 전달받은 파라미터 값이 템플릿 구문으로 해석되지 않도록 처리하는 방안입니다. 이를 위해 템플릿 파일을 미리 정의된 상태로 유지하고, 모든 사용자 입력은 템플릿에서 제공하는 안전한 변수로 처리해야 합니다.\n\n다음은 자주 사용되는 템플릿 엔진 별 Sanitization 예시입니다.\n\n### Python Jinja\n- render_template() 함수를 사용해야 합니다.\n\t- 이는 사용자 입력이 템플릿 구문으로 해석되지 않고, 문자열로 처리됩니다.\n\n```\nrender_template(`template.html`, name=user_input)\n```\n\n### Spring Thymeleaf\n- th:utext 대신 th:text 코드를 사용해야 합니다. \n\t- th:text는 자동으로 HTML 특수 문자를 이스케이프 처리합니다.\n    - th:utext는 HTML 이스케이프를 비활성화 시키는 코드입니다.\n    \n```\n<p th:text=`${userInput}`></p>\n```\n\n이뿐만 아니라, 컨트롤러에서 반환되는 return 값에 사용자 입력 값을 포함해서는 안 됩니다. 만약, 사용자 입력 값을 포함하여 반환해야 한다면 @ResponseBody 어노테이션을 사용하여 Spring 프레임워크가 사용자 입력 값을 뷰 이름으로 해석하지 않고 단순 문자열로 해석하는 방법이 있습니다.\n\n### 2. 입력 값 검증\n  사용자 입력에서 서버 측 템플릿 인젝션 공격 구문에 주로 사용되는 `{, [, <, >, %, #, @, $` 등의 핵심 특수 문자를 입력받지 못하도록 필터링해야 합니다. 예를 들어, {{7*7}}를 입력했다면, 49가 아닌 특수 문자가 필터링 되어 77이 되어야 합니다.\n\n### 템플릿 엔진 별 사용하는 언어 및 특수문자\n``` \n@( )\n- ASP.NET Razor\n\n#{ }\n- Expression Language\n- Freemarker\n- Ruby (Slim)\n- Jade\n- Codepen\n\n${ }\n- Expression Language (+JavaEL)\n- Freemarker\n- Java\n\n{{ }}\n- Java\n- Jinja\n- Jinjava\n- Pebble\n- Twig\n- Handlebars\n\n[[ ]]\n- Jinja2\n\n{1+2}\n- Smarty\n\n<%= %> or <% %>\n- Ruby (ERB)\n- Mako\n\n#\n- Velocity (e.g: #set)\n\n@\n- Lessjs\n\n```",
  "rule.dast.sw.common.7143.name": "서버 측 템플릿 인젝션",
  "rule.dast.sw.common.7144.description": "크로스 사이트 웹 소켓 하이재킹(Cross-Site Web Socket Hijacking)은 웹 소켓 통신에서 `Origin` 헤더의 검증 미흡으로 발생하는 취약점입니다.\n공격자는 자신이 소유한 도메인에서 호스팅 된 악성 웹페이지를 통해 피해자의 웹 소켓 서버에 연결을 시도할 수 있으며, 서버가 `Origin` 헤더를 검증하지 않을 경우 사용자의 쿠키 및 세션 정보와 같은 민감한 데이터를 탈취할 수 있습니다.\n크로스 사이트 웹 소켓 하이재킹 취약점을 대응하기 위해서는 Origin 헤더의 검증과 SameSite 쿠키를 적용하는 것이 가장 좋은 방법입니다.\n\n### 1. Origin 인증\n`Origin` 헤더를 검증하기 위해 Access-Control-Allow-Origin 헤더를 설정합니다. 이 헤더는 CORS(Cross-Origin Resource Sharing) 정책에서 사용하는 HTTP 응답 헤더 중 하나로, 다른 도메인에서 발생하는 요청에 대한 접근 허용 여부를 결정합니다. 따라서, Access-Control-Allow-Origin 헤더는 신뢰할 수 있는 특정 도메인으로 제한해야 하며, `*` 또는 `null` 설정을 피해야 합니다.\n\n또 다른 방법으로, 서버에서 신뢰할 수 있는 출처 목록(allowlist)을 정의하고, WebSocket 핸드셰이크 요청 시 클라이언트에서 보내는 `Origin` 헤더를  검증하는 방식도 존재합니다.\n   \n다음은 `Origin` 헤더를 검증하는 예시 코드입니다.\n```\n// CORS 정책 사용\nsocketio = SocketIO(app, cors_allowed_origins=`https://trusted.com`)\n\n// 신뢰할 수 있는 출처 목록 정의\nALLOWED_ORIGINS = [`https://trusted.com`, `https://another-trusted.com`]\n```\n\n### 2. SameSite 쿠키\n\n`SameSite` 쿠키 설정은 CSRF 공격을 방지하는 데 주로 사용되지만, 웹 소켓 연결에서 쿠키를 이용한 사용자 인증이 이루어질 경우 추가적인 보안 강화를 할 수 있습니다. `Set-Cookie` 헤더에서 `SameSite=Lax` 또는 `SameSite=Strict`를 설정함으로써, 해당 도메인에서 직접적으로 생성된 요청에만 쿠키를 포함시킬 수 있습니다. 이 설정은 다른 도메인에서의 요청 시 쿠키를 전송하지 않기 때문에, 크로스-오리진 요청을 통한 사용자 세션 탈취를 어렵게 합니다.",
  "rule.dast.sw.common.7144.name": "Cross-Site WebSocket Hijacking",
  "rule.dast.sw.common.7145.description": "소스 코드 내에 하드코드된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.\nAPI 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "rule.dast.sw.common.7145.name": "하드코드된 API 키",
  "rule.dast.sw.common.7146.description": "소스 코드에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.\n소스 코드에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "rule.dast.sw.common.7146.name": "하드코드된 IP 주소",
  "rule.dast.sw.common.7147.description": "소스 코드 내에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.\n이메일 주소가 코드 내에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "rule.dast.sw.common.7147.name": "하드코드된 이메일 주소",
  "rule.dast.sw.common.7148.description": "주석문 내에 하드코딩된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.\nAPI 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "rule.dast.sw.common.7148.name": "주석문 안의 API 키",
  "rule.dast.sw.common.7149.description": "주석문에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.\n주석문에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "rule.dast.sw.common.7149.name": "주석문 안의 IP 주소",
  "rule.dast.sw.common.7150.description": "주석문에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.\n이메일 주소가 주석문에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "rule.dast.sw.common.7150.name": "주석문 안의 이메일 주소",
  "rule.dast.sw.common.7151.description": "적절한 세션 타임아웃 설정을 사용하지 않을 경우, 공격자는 세션 재사용 기법 등을 통하여 비정상적 공격 및 접근이 가능합니다. 또한 로그아웃 및 브라우저 종료 시 세션을 정상 폐기하여, 세션 재사용 기법 등을 통한 공격 가능성을 감소시켜야 합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 주어진 로그인 기록 파일 기반으로 로그인을 시도하고, 세션을 획득합니다.\n2. 세션 타임아웃 시간 동안 대기합니다.\n3. 브라우저를 재시작합니다.\n4. 최초 로그인 시 수집한 세션을 브라우저에 강제 설정합니다.\n5. 최초 로그인 후 도달 가능하였던 위치로 로그인 수행 없이 접근 가능한 경우, 취약점을 검출합니다.\n\n취약점 검출을 위하여 다음과 같은 분석 대상 옵션을 설정할 수 있습니다:\n1. 로그인 기록 파일\n\n취약점 검출을 위하여 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 세션 이름\n2. 사용자 정의 세션 타임아웃(초)\nSession 유지를 위한 Baseline을 설정하여야 합니다.\n\n1. 내부 서비스 제공 시, Session Time 설정 여부로 판단 (EP, EIP 인트라넷 및 Business 지원 서비스 등)\n2. 외부 서비스 제공 시, 60분 이하 설정 (대고객 서비스, 금융거래, 고객 관리 서비스 및 SK 대표 사이트 등)\n3. 내부/외부 모두 로그아웃과 브라우저 종료 시 세션 폐기 수행\n4. 서비스 목적에 따른 특수성 또는 예외성이 필요한 경우 사유 제시",
  "rule.dast.sw.common.7151.name": "[1-5] 적절하지 않은 세션 설정 - 가. 세션 타임아웃 설정 값 부여 확인",
  "rule.dast.sw.common.7151.option.checker.dast.sw.common.7151.sessions.names.description": "`사용자 정의 세션 이름`에 대응하는 세션을 추출합니다. 해당 세션에 대한 보안 검사를 수행합니다.",
  "rule.dast.sw.common.7151.option.checker.dast.sw.common.7151.sessions.names.name": "사용자 정의 세션 이름",
  "rule.dast.sw.common.7151.option.checker.dast.sw.common.7151.sessions.names.placeholder": "세션 이름을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.7151.option.checker.dast.sw.common.7151.sessions.timeout.description": "`사용자 정의 세션 타임아웃(초)`에 해당하는 초 단위 시간 동안 대기 후 세션 만료 여부를 검사합니다.",
  "rule.dast.sw.common.7151.option.checker.dast.sw.common.7151.sessions.timeout.name": "사용자 정의 세션 타임아웃(초)",
  "rule.dast.sw.common.7151.option.checker.dast.sw.common.7151.sessions.timeout.placeholder": "타임아웃 시간을 입력하세요(단위: 초).",
  "rule.dast.sw.common.7152.description": "디렉터리 리스팅이 가능한 경우, 백업 파일 및 압축 파일 등의 다운로드를 통해 중요 정보 및 파일, URL 정보 등의 유출이 가능합니다. 디렉터리 리스팅 취약점을 이용한 서버 내부 정보 획득은 서비스 전체에 위협이 될 가능성이 매우 높습니다. 만약 CVS(Concurrent Versions System) 또는 SVN(Subversion) 등을 사용하여 소스코드를 관리하는 경우, 공격자는 \"/CVS\" 혹은 \"/.svn/\" 디렉터리 등 내부에 존재하는 \"Entries\" 파일을 통해 디렉터리 리스팅 보안 조치를 우회할 수 있으며, 디렉터리 정보를 획득할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 주어진 경로로부터 구성 가능한 모든 상위 경로에 대하여 요청을 송신합니다.\n2. 수신한 응답 본문에 디렉터리 목록 출력 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 디렉터리 목록 출력 내용 검사 정규식\n웹 서비스 중 WEB, WAS의 경우 디렉토리 나열(Directory Listing)의 설정을 비활성화해야 합니다.",
  "rule.dast.sw.common.7152.name": "[1-3] 디렉터리 리스팅 - 가1. 디렉터리 목록 출력",
  "rule.dast.sw.common.7152.option.checker.dast.sw.common.7152.regex.test.description": "`사용자 정의 디렉터리 목록 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 디렉터리 목록 출력 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.7152.option.checker.dast.sw.common.7152.regex.test.name": "사용자 정의 디렉터리 목록 출력 내용 검사 정규식",
  "rule.dast.sw.common.7152.option.checker.dast.sw.common.7152.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.7153.description": "디렉터리 리스팅이 가능한 경우, 백업 파일 및 압축 파일 등의 다운로드를 통해 중요 정보 및 파일, URL 정보 등의 유출이 가능합니다. 디렉터리 리스팅 취약점을 이용한 서버 내부 정보 획득은 서비스 전체에 위협이 될 가능성이 매우 높습니다. 만약 CVS(Concurrent Versions System) 또는 SVN(Subversion) 등을 사용하여 소스코드를 관리하는 경우, 공격자는 \"/CVS\" 혹은 \"/.svn/\" 디렉터리 등 내부에 존재하는 \"Entries\" 파일을 통해 디렉터리 리스팅 보안 조치를 우회할 수 있으며, 디렉터리 정보를 획득할 수 있습니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 디렉터리 목록 출력 페이지 예상 경로로 요청을 송신합니다.\n2. 수신한 응답 본문에 디렉터리 목록 출력 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점 검출을 위하여 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 디렉터리 목록 출력 경로\n2. 사용자 정의 디렉터리 목록 출력 내용 검사 정규식\n웹 서비스 중 WEB, WAS의 경우 디렉토리 나열(Directory Listing)의 설정을 비활성화해야 합니다.",
  "rule.dast.sw.common.7153.name": "[1-3] 디렉터리 리스팅 - 가2. 디렉터리 목록 출력",
  "rule.dast.sw.common.7153.option.checker.dast.sw.common.7153.path.attack.description": "`사용자 정의 디렉터리 목록 출력 경로`를 사용하여 URL을 구성합니다(예: http://host.com/DIRECTORY_LIST_PAGE_PATH). 해당 URL을 디렉터리 목록을 출력하는 페이지에 해당하는 URL로 간주합니다.",
  "rule.dast.sw.common.7153.option.checker.dast.sw.common.7153.path.attack.name": "사용자 정의 디렉터리 목록 출력 경로",
  "rule.dast.sw.common.7153.option.checker.dast.sw.common.7153.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.7153.option.checker.dast.sw.common.7153.regex.test.description": "`사용자 정의 디렉터리 목록 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 디렉터리 목록 출력 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.7153.option.checker.dast.sw.common.7153.regex.test.name": "사용자 정의 디렉터리 목록 출력 내용 검사 정규식",
  "rule.dast.sw.common.7153.option.checker.dast.sw.common.7153.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.7154.description": "백업 및 임시 파일은 관리자와 개발자의 주의가 필요합니다. 예를 들어, 관리 부주의로 인하여 개발 당시 테스트 용도의 소스 또는 백업 파일 등을 ZIP, TAR 등의 형식으로 압축하여 방치한 경우, 공격자는 해당 파일에 접근하여 내용을 열람할 수 있습니다. 또한, 클라이언트 측 소스코드 내 주석이나 브라우저의 콘솔 로그 내 개발 및 서비스 관련 정보를 노출할 경우, 해당 정보가 공격 정보로 이용될 수 있으므로 주의가 필요합니다.\n\n취약점 검출 과정은 다음과 같습니다:\n1. 사용자 정의 백업 및 임시 파일 출력 페이지 예상 경로로 요청을 송신합니다.\n2. 수신한 응답 본문에 사용자 정의 백업 및 임시 파일 출력 내용이 존재하는 경우, 취약점을 검출합니다.\n\n취약점을 검출하기 위해 다음과 같은 이슈 검출 규칙 옵션을 설정할 수 있습니다:\n1. 사용자 정의 백업 및 임시 파일 출력 경로\n2. 사용자 정의 백업 및 임시 파일 출력 내용 검사 정규식\n웹 애플리케이션 운영에 필수적인 파일을 제외한 모든 불필요한 파일을 삭제해야 합니다.\n\ntar, psd, fla, bak, test, txt, old, zip, 날짜 등 불필요한 확장자를 검색 후 삭제하는 것이 좋습니다.\n\n서비스 오픈 이후 추가 개발이나 유지 보수 후 불필요한 파일이 남아 있지 않은지 확인하도록 합니다. 예를 들어, 초기 서비스 설치 시 디폴트로 설치되는 Contents 및 서비스들을 Disable 처리, 디폴트 디렉터리(/htdocs, /cig bin 등)를 삭제 또는 변경, 디폴트 페이지(Manual, Sample 등)를 삭제 또는 변경 등이 가능합니다.\n\n개발 및 테스트 목적으로 필요한 파일의 경우 별도 테스트 프로젝트로 분리하여 관리하도록 합니다.",
  "rule.dast.sw.common.7154.name": "[1-4] 백업 및 임시 파일 관리 - 가2. 개발 리소스, 백업 파일, 임시 파일 등 존재",
  "rule.dast.sw.common.7154.option.checker.dast.sw.common.7154.path.attack.description": "`사용자 정의 파일 확장자`에 해당하는 확장자로 끝나는 링크 주소를 페이지 내에서 검색합니다. 해당 주소를 통하여 특정 확장자를 가지는 파일 다운로드가 가능한 것으로 간주합니다.",
  "rule.dast.sw.common.7154.option.checker.dast.sw.common.7154.path.attack.name": "사용자 정의 백업 및 임시 파일 출력 경로",
  "rule.dast.sw.common.7154.option.checker.dast.sw.common.7154.path.attack.placeholder": "경로를 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.7154.option.checker.dast.sw.common.7154.regex.test.description": "`사용자 정의 백업 및 임시 파일 출력 내용 검사 정규식`을 사용하여 응답 본문을 분석합니다. 해당 정규식에 대응하는 부분이 응답 본문에 존재하는 경우, 응답 본문에 백업 및 임시 파일 출력 내용이 존재하는 것으로 간주합니다.",
  "rule.dast.sw.common.7154.option.checker.dast.sw.common.7154.regex.test.name": "사용자 정의 백업 및 임시 파일 출력 내용 검사 정규식",
  "rule.dast.sw.common.7154.option.checker.dast.sw.common.7154.regex.test.placeholder": "정규식을 입력하세요. 엔터로 구분합니다.",
  "rule.dast.sw.common.7263.description": "LDAP(Lightweight Directory Access Protocol) 삽입은 사용자의 입력값이 적절히 검증되지 않고 LDAP 쿼리에 직접 포함될 때 발생합니다. 이를 통해 공격자는 인증 우회, 민감한 정보 조회 등 비정상적인 LDAP 동작을 유도할 수 있습니다.\nLDAP 삽입을 방지하기 위해 Prepared Statement를 사용하여 입력값을 쿼리에 직접 포함하지 않도록 해야 합니다. 또한, 특수 문자인 `, ', \", ), (, #, *, &, +, =, <, >, |, ; 등의 문자를 필터링하여 입력값이 LDAP 쿼리에 영향을 주지 않도록 합니다.\n\nLDAP 삽입으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용하여 서버 구성 정보나 LDAP 쿼리 구조를 파악할 수 있습니다. 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환하여 정보 유출을 방지해야 합니다.",
  "rule.dast.sw.common.7263.name": "LDAP 삽입",
  "rule.dast.sw.common.7264.description": "정수 오버플로우 취약점은 프로그램이 정수 연산을 수행할 때, 해당 자료형이 표현할 수 있는 최댓값 또는 최솟값을 초과하는 연산을 유도해 의도치 않은 동작을 발생시키는 공격 방식입니다. 이때 값이 최댓값이나 최솟값을 넘어가면 Wrap Around(순환) 현상이 발생해 값이 다시 최솟값 또는 최댓값부터 시작하게 됩니다. 이로 인해 변숫값이 비정상적으로 변조되어 프로그램의 정상적인 동작을 방해할 수 있습니다.\n\n주로 사용자 입력값을 기반으로 반복문 제어, 메모리 할당, 메모리 복사 등의 조건을 처리할 때 발생하며, 공격자는 이를 악용해 권한 상승, 임의 코드 실행 등의 공격을 시도할 수 있습니다.\n프로그래밍 언어나 플랫폼 별 정수 타입의 범위를 적절히 확인한 뒤 사용해야 합니다. 예를 들어, int 대신 long 또는 BigInteger와 같은 더 큰 범위의 자료형을 사용하는 것이 안전합니다.\n\n또한, 외부 입력값을 기반으로 반복문 제어, 메모리 할당, 메모리 복사 등을 수행할 경우, 입력값이 예상 범위 내에 있는지 검증하는 로직을 적용해야 합니다.\n\n추가적으로, 정수형 변수를 연산에 사용할 때는 연산 결과가 자료형의 범위를 초과하지 않도록 안전한 연산 함수나 라이브러리를 사용하는 것이 권장됩니다. 예를 들어, Java의 Math 클래스에서 제공하는 multiplyExact() 또는 C++의 SafeInt 라이브러리는 정수 오버플로우 발생 여부를 검사하고, 오버플로우가 감지되면 예외를 발생시켜 안전하게 처리할 수 있습니다.",
  "rule.dast.sw.common.7264.name": "정수 오버플로우",
  "rule.dast.sw.common.7265.description": "Referer 헤더는 브라우저가 HTTP 요청을 보낼 때 이전에 방문한 페이지의 URL 정보를 포함하는 헤더입니다. URL에 세션 토큰, 인증 정보 등 민감한 데이터가 포함된 경우, 다른 도메인으로 요청이 전송될 때 Referer 헤더를 통해 해당 정보가 외부에 노출될 수 있습니다.\nURL에 세션 토큰, 인증 정보 등 민감한 데이터를 포함하지 않도록 합니다. 추가적으로 Referrer-Policy 헤더를 설정하여 Referer 헤더에 포함되는 정보를 제한하거나 제거할 수 있습니다. Referrer-Policy 헤더는 요청 대상과 출처, 프로토콜 보안 수준에 따라 Referer 헤더에 포함되는 정보를 제어할 수 있으며, 보안 및 개인정보 보호를 위해 적절한 옵션 설정이 필요합니다.\n\n보안상 권장되는 Referrer-Policy 헤더 옵션으로는 no-referrer, same-origin, strict-origin, strict-origin-when-cross-origin 등이 있습니다. 반면, unsafe-url, no-referrer-when-downgrade 옵션은 Referer 헤더에 전체 URL을 포함하므로 사용을 지양해야 합니다.",
  "rule.dast.sw.common.7265.name": "누락되거나 부적절한 Referrer-Policy 헤더",
  "rule.dast.sw.common.7266.description": "CSP(Content Security Policy) 헤더는 XSS, 데이터 인젝션, 클릭재킹 등의 공격을 방지하기 위한 웹 보안 정책입니다. 이 정책은 다양한 설정값들로 구성되며, 각 설정값은 웹 애플리케이션 보안 수준에 직접적인 영향을 미칩니다.\n\n그러나 CSP가 적절하게 설정되지 않을 경우, 보안을 강화하기보다는 오히려 취약점을 남길 수 있습니다. 특히 CSP 헤더에 와일드카드(*), `unsafe-inline`, `unsafe-eval`, data:, blob:, http:, ws: 값이 포함되어 있다면, 공격자는 이를 악용하여 다양한 공격을 수행할 수 있습니다.\n\n와일드카드(*) 값은 모든 출처를 허용하기 때문에 악성 리소스가 쉽게 로드될 수 있습니다. `unsafe-inline` 값은 인라인 스크립트와 스타일을 허용하여 XSS 공격에 취약합니다. `unsafe-eval` 값은 eval() 함수와 같은 동적 코드 실행을 허용하여 코드 주입 및 XSS 공격에 취약합니다. 또한 data: 및 blob: 값은 인라인 데이터나 대용량 데이터를 허용하여 XSS나 파일 주입 공격 등에 악용될 수 있습니다. 마지막으로 http: 및 ws: 값은 암호화되지 않은 데이터 전송을 허용하기 때문에, 중간자 공격을 통해 민감한 정보가 탈취될 위험이 있습니다.\n부적절한 CSP 설정값을 제거하고, 안전한 CSP 설정값으로 변경해야 합니다. 안전한 CSP 설정값의 예시는 다음과 같습니다.\n\n`none` 값은 모든 리소스를 로드하지 못하도록 차단하는 설정입니다. 예를 들어, object-src `none`과 같이 설정하면 객체 리소스 로드를 모두 차단할 수 있습니다.\n\n`self` 값은 동일 출처에서 제공되는 리소스만 허용하는 설정입니다. 예를 들어, script-src `self`와 같이 설정하면 동일 출처에서 제공되는 스크립트만 실행할 수 있습니다. 다만, 웹 애플리케이션이 JSONP(JSON with Padding)를 사용하는 경우에는 주의가 필요합니다. 허용된 도메인에 취약한 JSONP 콜백 메서드가 존재할 경우, 공격자가 이를 이용해 악성 스크립트를 주입할 수 있습니다. 이를 방지하기 위해 CORS(Cross-Origin Resource Sharing) 정책을 함께 적용하여 신뢰할 수 있는 출처에서만 데이터를 요청하도록 관리해야 합니다.\n\n`nonce` 값은 고유하게 생성된 nonce 값을 사용하여 인라인 스크립트나 스타일을 안전하게 허용하는 설정입니다. 예를 들어, script-src `nonce-랜덤값`과 같이 설정하면, 해당 nonce 값을 가진 스크립트만 실행할 수 있습니다. \n\n`sha256-hash` 값은 해시값(sha256, sha384, sha512 등)을 사용하여 인라인 스크립트나 스타일을 안전하게 허용하는 설정입니다. 예를 들어, script-src `sha256-해시값`과 같이 설정하면, 인라인 스크립트나 스타일의 해시값이 일치하는 경우에만 리소스가 실행됩니다.",
  "rule.dast.sw.common.7266.name": "부적절한 CSP(Content-Security-Policy) 설정",
  "rule.dast.sw.common.7267.description": "로그인 인증 시도에 대한 횟수를 제한하지 않으면, 공격자는 무차별 대입 공격(Brute Force Attack)을 통해 사용자의 ID와 비밀번호를 추측할 수 있습니다. 특히 공격자가 특정 사용자 ID를 알고 있을 경우, 해당 계정에 대해 반복적으로 비밀번호 인증 요청을 시도할 수 있습니다. 이러한 공격이 성공하면, 공격자는 해당 사용자의 권한을 무단으로 획득할 수 있습니다.\n로그인 인증 시도 횟수를 3~5회로 제한하는 것이 권장됩니다. 인증 시도가 이 횟수를 초과할 경우, 로그인을 차단하거나 경고 메시지를 표시해 추가적인 시도를 방지해야 합니다. 또한, CAPTCHA 입력을 요구하거나 오류 페이지로 전환하는 방법도 고려할 수 있습니다.",
  "rule.dast.sw.common.7267.name": "로그인 인증 시도 횟수 제한 기능 부재",
  "rule.dast.sw.common.7268.description": "HTTP 요청 스머글링(Smuggling) 취약점은 HTTP 요청의 Content-Length(CL) 및 Transfer-Encoding(TE) 헤더를 해석하는 방식에서 프런트엔드 서버(로드 밸런서, 리버스 프록시, CDN 등)와 백엔드 서버 간의 불일치로 인해 발생합니다.\n\nHTTP 요청은 일반적으로 CL 헤더를 사용해 본문의 길이를 바이트 단위로 명시하거나, TE 헤더를 사용해 데이터 전송 방식을 지정합니다. 이때 프런트엔드와 백엔드 서버가 본문 길이나 요청 경계를 서로 다르게 해석할 경우, 공격자는 악의적인 요청을 삽입하거나 정상 요청을 변조할 수 있습니다. 이러한 취약점을 악용하면 XSS, 방화벽 및 보안 인증 우회, 웹 캐시 포이즈닝 등의 공격으로 이어질 수 있습니다.\nRFC 9112(6.1 ~ 6.3) 명세에 따르면, Content-Length와 Transfer-Encoding 헤더를 동시에 사용할 경우 요청 스머글링 취약점이 발생할 수 있으므로 두 헤더가 함께 수신된 요청은 오류로 처리해야 한다고 규정하고 있습니다.\n\n따라서, 프런트엔드와 백엔드 서버는 요청을 해석할 때 Content-Length와 Transfer-Encoding 헤더를 일관되게 처리하도록 구성해야 하며, 중복된 헤더나 비정상적인 헤더 값이 포함된 요청을 차단해야 합니다.\n\n또한, HTTP/2에서는 모든 Transfer-Encoding 헤더 사용이 허용되지 않으므로, HTTP/2로 업그레이드해 요청 스머글링 공격을 방지할 수 있습니다. 그러나 HTTP/1.x와 HTTP/2 간의 프로토콜 전환(H2C)을 지원하는 환경에서는 H2C 요청 스머글링 공격이 발생할 가능성이 있으므로, 서버와 클라이언트 모두 HTTP/2 프로토콜을 일관되게 사용하도록 설정해야 합니다.",
  "rule.dast.sw.common.7268.name": "HTTP 요청 스머글링(Smuggling)",
  "rule.dast.sw.common.7269.description": "HTTP 프로토콜은 클라이언트와 서버 간 통신 데이터를 암호화하지 않은 평문(Plaintext) 형태로 전송합니다. 이러한 특성으로 인해 로그인 과정에서 입력된 ID와 비밀번호가 네트워크 스니핑(Sniffing) 공격을 통해 제3자에게 그대로 노출되거나 탈취될 수 있습니다.\n웹 서버에 SSL/TLS 인증서를 적용하고 HTTPS 프로토콜 사용을 의무화해야 합니다. 이를 통해 클라이언트와 서버 간 전송되는 모든 데이터의 암호화를 보장하고 사용자 정보의 기밀성을 확보합니다. 또한 ID와 비밀번호 같은 민감한 정보는 전송 전 별도의 암호화 처리를 적용해야 합니다. 이 조치는 해당 정보가 탈취되더라도 공격자가 내용을 식별할 수 없도록 보호합니다.",
  "rule.dast.sw.common.7269.name": "암호화되지 않은 로그인 요청",
  "rule.dast.sw.common.7270.description": "서버 측 코드가 노출되었다고 해서 반드시 보안 사고로 이어지는 것은 아닙니다. 그러나, 노출된 코드에 데이터베이스 연결 정보, 비밀번호 검증 로직 등 민감한 데이터나 핵심 애플리케이션 로직이 포함된 경우, 공격자는 이를 분석하여 추가적인 공격을 시도할 수 있습니다.\n서버 측에서 사용되는 코드는 디버깅이나 내부 테스트를 위해 의도적으로 공개된 경우를 제외하고 노출되지 않아야 합니다. 디버깅과 내부 테스트가 완료된 후에는 이러한 목적으로 사용된 코드와 설정도 반드시 제거해야 합니다.\n\n또한, 웹 애플리케이션 설정이 미흡한 경우, 디렉터리 목록이 노출되어 인가되지 않은 사용자가 서버 측 코드를 직접 확인할 수 있습니다. 이를 방지하기 위해 디렉터리 목록 노출을 차단하는 설정을 적용해야 합니다.",
  "rule.dast.sw.common.7270.name": "서버 측 코드 노출",
  "rule.dast.sw.common.7271.description": "SQL 삽입 취약점은 사용자의 입력값이 적절히 검증되지 않고 SQL 쿼리에 직접 포함될 때 발생합니다. 공격자는 이점을 악용해 사용자 인증 우회, 데이터베이스 내부 정보 탈취 등의 공격을 수행할 수 있습니다.\nSQL 삽입 취약점을 방지하려면, 사용자 입력값에 포함된 특수 문자 ', \", ;, #, --, //, %, /*, */ 등을 검증하고 필터링해야 합니다. 또한, Prepared Statement 또는 ORM(Object-Relational Mapping)을 사용해 사용자 입력값이 SQL 쿼리에 영향을 주지 않도록 합니다.\n\nSQL 삽입 공격으로 인해 서버가 에러 메시지를 노출하는 경우, 공격자는 에러 메시지를 활용해 서버 구성 정보나 SQL 쿼리 구조를 파악할 수 있습니다. 따라서, 시스템 내부 정보가 포함된 에러 메시지는 클라이언트에게 노출하지 않도록 제한하고, 일반적인 오류 메시지만 반환해 정보 유출을 방지해야 합니다.",
  "rule.dast.sw.common.7271.name": "SQL 삽입(사용자 인증 우회)",
  "rule.dast.sw.common.7272.description": "안전하지 않은 서드파티 링크 취약점은 `target=\"_blank\"` 속성을 사용해 링크를 새 탭이나 새 창에서 열 때 발생합니다. 이 경우 새로 열린 페이지가 부모 페이지(원래 페이지)의 `window.opener` 객체에 접근할 수 있으며, 공격자는 이를 악용해 부모 페이지를 피싱 사이트로 강제 리다이렉트할 수 있습니다. (Tabnabbing 공격)\n\n예를 들어, 새로 열린 페이지에서 `window.opener.location = \"https://fakewebsite.com\"`와 같은 코드가 실행될 경우, 부모 페이지는 공격자가 제작한 피싱 사이트로 이동하게 됩니다. 이로 인해 사용자가 해당 페이지에 입력하는 모든 정보는 공격자에게 노출될 위험이 있습니다.\nTabnabbing 공격을 방지하기 위해 Cross-Origin-Opener-Policy 헤더를 사용하는 것이 권장됩니다. 이 헤더를 `same-origin`으로 설정하면 브라우저는 같은 출처의 문서만 브라우징 컨텍스트 그룹(BCG)을 공유하며, 다른 출처의 문서는 격리됩니다. 그 결과, 다른 출처에서 열린 문서는 `window.opener`가 null로 설정되어 원본 페이지를 조작할 수 없습니다.\n\n추가적으로, HTML이나 JavaScript에서 새 창을 여는 `_blank` 속성을 사용할 때 `noopener noreferrer` 속성을 함께 사용해야 합니다. 이를 통해 새로 열린 페이지가 원본 페이지를 참조하지 못하도록 방지하고, 브라우저가 Referer 헤더를 전송하지 않도록 설정할 수 있습니다.\n\n현대의 최신 웹 브라우저는 `target=\"_blank\"`를 <a>, <area>, <form> 요소에 설정할 경우 암묵적으로 `window.opener`를 설정하지 않는 `rel=\"noopener\"` 동작을 제공합니다. 그러나 이러한 암묵적 동작은 브라우저마다 일관되지 않을 수 있으므로, 해당 속성을 명시적으로 설정하는 것이 더 안전합니다.",
  "rule.dast.sw.common.7272.name": "안전하지 않은 서드파티 링크(target=\"_blank\")",
  "rule.dast.sw.common.7273.description": "SRI(Subresource Integrity)는 웹 브라우저에서 외부 리소스(JavaScript, CSS 등)를 로드할 때, 해당 리소스의 무결성을 검증하는 보안 기능입니다. 이 기능은 외부 서버(Content Delivery Network 등)에서 제공된 파일이 중간에서 변조되거나 악성코드로 대체되는 것을 방지하는 역할을 합니다.\n\n그러나 SRI가 적용되지 않은 경우, 웹 브라우저는 외부 리소스가 변경되었는지 확인할 수 없습니다. 공격자는 이 점을 악용하여 외부 리소스를 변조하거나 악성코드를 삽입할 수 있으며, 외부 서버에서 파일을 로드하는 모든 사이트가 잠재적인 공격 대상이 될 수 있습니다.\n웹 브라우저는 SRI를 사용하여 외부 리소스의 무결성을 검사해야 합니다. 다음은 SRI를 사용하는 방법입니다.\n\n\\<script> 또는 \\<link> 태그에 integrity 속성을 추가하여 리소스 파일의 해시 값을 지정합니다. integrity 속성이 존재하면 브라우저는 리소스를 로드하기 전에 해당 해시 값과 리소스의 무결성을 비교합니다. 만약 파일의 해시 값이 일치하지 않으면, 브라우저는 리소스의 로드를 거부하고, 네트워크 오류를 반환합니다.\n\nintegrity 속성의 값은 최소한 하나의 문자열로 시작하며, 각 문자열에는 사용된 해시 알고리즘(sha256, sha384, sha512 등)을 나타내는 접두사가 포함되고, 그 뒤에 base64로 인코딩된 해시 값이 이어집니다.\n\n외부 CDN을 통해 제공되는 리소스는 웹 개발에서 자주 사용되지만, 모든 CDN이 SRI를 지원하는 것은 아닙니다. 이러한 경우, 개발자는 SRI Hash Generator와 같은 도구를 사용해 직접 해시 값을 생성하여 무결성 검사를 수행할 수 있습니다.\n\n그러나 동적으로 제공되거나 업데이트 주기가 짧은 리소스에 대해 수동으로 SRI 해시를 생성하는 것은 비효율적이며, 관리가 복잡해질 수 있습니다. 예를 들어, 리소스가 업데이트될 때마다 기존 SRI 해시는 더 이상 유효하지 않게 되며, 매번 새로운 해시를 생성하고 적용해야 하는 번거로움이 발생합니다. 이러한 이유로 Google Fonts, Google Maps, Kakao Maps와 같은 일부 CDN은 동적 콘텐츠 제공 방식으로 인해 SRI를 지원하지 않습니다.\n\n따라서, 외부 CDN이 SRI를 지원하지 않을 경우, SRI를 수동으로 적용하기보다 CSP(Content Security Policy)와 같은 보안 정책을 활용하여 외부 리소스에 대한 신뢰할 수 있는 출처를 지정하는 것이 더 적합합니다.",
  "rule.dast.sw.common.7273.name": "SRI(Subresource Integrity) 지원 검사",
  "rule.dast.sw.common.7274.description": "Silverlight는 웹 서비스가 호스팅 되는 도메인의 루트(/) 경로에 clientaccesspolicy.xml 또는 crossdomain.xml 정책 파일을 배치하여 크로스 도메인 요청의 접근 허용 여부를 결정합니다. 그러나 이 파일에서 모든 도메인(*)에 대한 접근을 허용하면, 신뢰할 수 없는 출처의 요청도 처리될 수 있습니다. 공격자는 이점을 악용하여 CSRF, XSS 등의 공격을 수행할 수 있습니다.\nSilverlight에서 크로스 도메인에 대한 접근 허용 여부를 설정할 때, 모든 도메인(*)에 대한 접근을 허용해서는 안 되며, 신뢰할 수 있는 특정 도메인만 허용해야 합니다.\n\nMicrosoft는 2021년 10월 12일을 끝으로 Silverlight의 공식 지원을 종료하였습니다. 지원이 종료된 프로그램은 업데이트와 보안 패치가 제공되지 않기 때문에 공격 대상이 될 수 있습니다. 따라서, 웹 애플리케이션에 설치된 Silverlight를 제거하고 React, Angular, HTML5와 같은 최신 웹 기술로 대체해야 합니다.",
  "rule.dast.sw.common.7274.name": "Silverlight의 부적절한 도메인 정책 설정",
  "rule.rasp.sv.cs.3235.description": "이메일 주소 노출 취약점은 HTTP 응답 메시지나 DOM에 개인 이메일 주소가 노출되는 취약점입니다. 공격자는 이 취약점을 통해 탈취한 이메일을 이용하여 웹 애플리케이션에 로그인을 시도하거나 기업 웹 페이지에 접근을 시도할 수 있습니다. 또한 웹 애플리케이션이나 기업 웹 페이지에 접근하거나, 해당 이메일 주소에 스팸 메일을 보낼 수 있습니다. 이 취약점을 해결하기 위해서는 불필요한 이메일 주소가 웹 페이지에 노출되지 않도록 막아야 합니다.",
  "rule.rasp.sv.cs.3235.name": "이메일 주소 노출",
  "rule.rasp.sv.cs.3241.description": "계좌번호 노출 취약점은 특정 페이지에서 계좌번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 계좌번호가 별도의 처리 없이 페이지 내용에 포함된 경우에 발생합니다. 공격이 성공한 경우, 공격자로 인해 해당 계좌번호 소유주의 개인 정보가 노출되거나 악용될 수 있습니다.",
  "rule.rasp.sv.cs.3241.name": "계좌번호 노출",
  "rule.rasp.sv.cs.3243.description": "여권번호 노출 취약점은 특정 페이지에서 여권번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 여권번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 여권번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 여권번호가 노출되는 경우, 해당 여권 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다. ",
  "rule.rasp.sv.cs.3243.name": "여권번호 노출",
  "rule.rasp.sv.cs.3245.description": "파일 절대 경로 노출은 HTTP 응답 메시지나 DOM에 파일 절대 경로가 노출되는 취약점입니다. 공격자는 이 취약점을 통해 웹 애플리케이션 서버에 있는 실제 디렉토리나 파일에 접근을 시도할 수 있습니다. 이를 통해 웹 애플리케이션 서버의 중요 정보가 탈취되거나, 의도치 않은 파일이 실행될 수 있습니다. 이를 막기 위해서는 파일 절대 경로가 노출되지 않도록 막아야 합니다.",
  "rule.rasp.sv.cs.3245.name": "파일 절대 경로 노출",
  "rule.rasp.sv.cs.3250.description": "신용카드번호 노출 취약점은 특정 페이지에서 신용카드번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 신용카드번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 신용카드번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 신용카드번호가 노출되는 경우, 해당 신용카드 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.",
  "rule.rasp.sv.cs.3250.name": "신용카드번호 노출",
  "rule.rasp.sv.cs.3254.description": "운영체제 명령어 삽입 취약점은 서버의 운영체제에서 임의의 명령어를 수행하도록 강제할 수 있는 취약점입니다. 이 취약점은 운영체제 명령문을 구성할 때 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 서버에서 최고 권한을 획득하기 위한 명령어나 서버의 특정 파일을 조작하기 위한 명령어 등을 입력하게 됩니다. 공격이 성공한 경우, 공격자는 중요 위치에 접근하기 위해 권한을 탈취하고 서버의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "rule.rasp.sv.cs.3254.name": "운영체제 명령어 삽입",
  "rule.rasp.sv.cs.3258.description": "개별 주소 노출 취약점은 웹 페이지에 개별 IP 주소가 노출되는 취약점입니다. 공격자는 웹 페이지에 노출된 개별 IP 주소를 사용하여 웹 애플리케이션을 공격할 수 있습니다. 그 결과, 공격자는 웹 애플리케이션을 운영하는 단체에 속한 개별 IP 주소를 사용하여 웹 애플리케이션의 공용 IP로는 불가능한 공격을 시도함으로써 웹 애플리케이션의 정보를 탈취하거나 웹 애플리케이션에 허용되지 않은 권한으로 접근할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션 내에 개별 IP 주소를 사용하지 않아야 합니다. 또한 개별 IP 주소가 노출될 가능성이 높은 부분을 검사하고, 개별 IP 주소를 사용해야 하는 경우 개별 IP 주소를 다른 식별자로 변경하여 사용하도록 합니다.",
  "rule.rasp.sv.cs.3258.name": "개별 주소 노출",
  "rule.rasp.sv.cs.3260.description": "운전면허번호 노출 취약점은 특정 페이지에서 운전면허번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 운전면허번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 운전면허번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 운전면허번호가 노출되는 경우, 해당 운전면허 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.",
  "rule.rasp.sv.cs.3260.name": "운전면허번호 노출",
  "rule.rasp.sv.cs.3262.description": "주민등록번호 노출 취약점은 특정 페이지에서 주민등록번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 주민등록번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 주민등록번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 주민등록번호가 노출되는 경우, 해당 주민등록 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.",
  "rule.rasp.sv.cs.3262.name": "주민등록번호 노출",
  "rule.rasp.sv.java.3234.description": "이메일 주소 노출 취약점은 HTTP 응답 메시지나 DOM에 개인 이메일 주소가 노출되는 취약점입니다. 공격자는 이 취약점을 통해 탈취한 이메일을 이용하여 웹 애플리케이션에 로그인을 시도하거나 기업 웹 페이지에 접근을 시도할 수 있습니다. 또한 웹 애플리케이션이나 기업 웹 페이지에 접근하거나, 해당 이메일 주소에 스팸 메일을 보낼 수 있습니다. 이 취약점을 해결하기 위해서는 불필요한 이메일 주소가 웹 페이지에 노출되지 않도록 막아야 합니다.",
  "rule.rasp.sv.java.3234.name": "이메일 주소 노출",
  "rule.rasp.sv.java.3236.description": "검증되지 않은 리다이렉션 취약점은 임의의 사용자를 신뢰할 수 없는 외부 위치로 이동하도록 강제할 수 있는 취약점입니다. 이 취약점은 링크를 구성할 때 사용하는 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 임의의 사용자가 악성 사이트로 이동하는 링크를 클릭하도록 유도하는 피싱 공격 등을 수행할 수 있습니다. 공격이 성공한 경우, 공격자는 악성 사이트로 접근하는 사용자의 민감한 정보를 탈취하거나 조작할 수 있습니다.",
  "rule.rasp.sv.java.3236.name": "검증되지 않은 리다이렉션",
  "rule.rasp.sv.java.3238.description": "경로 조작 취약점은 사용자 입력값이 디렉토리 경로 문자열에 사용되어 웹 애플리케이션의 최상단 디렉토리 이외에 파일 시스템이 노출되는 취약점입니다. 공격자는 대부분의 파일 시스템에서 부모 디렉토리를 나타내는 `..`와 디렉토리를 나타내는 `/` 등을 디렉토리 경로 문자열에 사용되는 입력값으로 넣을 수 있습니다. 그 결과, 웹 애플리케이션의 최상단 디렉토리 밖의 파일 시스템에 접근하여 웹 애플리케이션의 소스 코드나 시스템 파일 등의 중요한 정보를 탈취할 수 있습니다. 이 취약점을 해결하기 위해서는 파일 시스템의 파일 및 디렉토리를 접근하는 데 사용자의 입력값을 사용하지 말아야 합니다. 사용자 입력값을 사용해야 하는 경우 파일 시스템에서 의미를 가지는 `..`나 `/`와 같은 특수 문자를 변경해서 사용해야 합니다.",
  "rule.rasp.sv.java.3238.name": "경로 조작",
  "rule.rasp.sv.java.3240.description": "계좌번호 노출 취약점은 특정 페이지에서 계좌번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 계좌번호가 별도의 처리 없이 페이지 내용에 포함된 경우에 발생합니다. 공격이 성공한 경우, 공격자로 인해 해당 계좌번호 소유주의 개인 정보가 노출되거나 악용될 수 있습니다.",
  "rule.rasp.sv.java.3240.name": "계좌번호 노출",
  "rule.rasp.sv.java.3242.description": "여권번호 노출 취약점은 특정 페이지에서 여권번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 여권번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 여권번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 여권번호가 노출되는 경우, 해당 여권 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.",
  "rule.rasp.sv.java.3242.name": "여권번호 노출",
  "rule.rasp.sv.java.3244.description": "파일 절대 경로 노출은 HTTP 응답 메시지나 DOM에 파일 절대 경로가 노출되는 취약점입니다. 공격자는 이 취약점을 통해 웹 애플리케이션 서버에 있는 실제 디렉토리나 파일에 접근을 시도할 수 있습니다. 이를 통해 웹 애플리케이션 서버의 중요 정보가 탈취되거나, 의도치 않은 파일이 실행될 수 있습니다. 이를 막기 위해서는 파일 절대 경로가 노출되지 않도록 막아야 합니다.",
  "rule.rasp.sv.java.3244.name": "파일 절대 경로 노출",
  "rule.rasp.sv.java.3246.description": "LDAP 삽입 취약점은 사용자 입력에 기반한 LDAP 문을 구성하는 웹 기반 애플리케이션에 대하여 LDAP 문을 조작할 수 있는 취약점입니다. 공격자는 LDAP 문을 실행할 수 있는 양식에 `(`. `|`. `&`. `*` 등과 같은 특수문자를 이용하여 텍스트를 입력하는 등 웹 요소를 통해 악성 데이터를 서버로 전송합니다. 그 결과 특정 속성을 가진 대상을 열람하거나 인증 경로를 우회하여 허가받지 않은 정보에 접근할 수 있습니다. 해당 취약점을 해결하기 위해서는 LDAP 인코딩 함수를 통해 사용자의 입력 값을 검증 및 필터링하거나 자동적으로 검증 및 필터링을 수행하는 프레임워크를 사용해야 합니다.",
  "rule.rasp.sv.java.3246.name": "LDAP 삽입",
  "rule.rasp.sv.java.3247.description": "XPath 삽입 취약점은 XPath 쿼리문에 임의의 문자열을 삽입할 수 있는 취약점입니다. 이 취약점은 XPath 쿼리를 구성할 때 사용하는 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 비정상적인 XML 데이터를 처리하게 하는 악성 데이터를 서버로 전송하게 됩니다. 공격이 성공한 경우, 공격자는 XML 데이터의 구조를 파악하고 해당 데이터를 탈취하거나 조작할 수 있습니다.",
  "rule.rasp.sv.java.3247.name": "XPath 삽입",
  "rule.rasp.sv.java.3248.description": "크로스 사이트 스크립팅 취약점은 웹 사이트에 악성 스크립트를 삽입할 수 있는 취약점입니다. 공격자는 폼 내부에 있는 텍스트 입력과 같은 웹 요소를 통해 악성 스크립트를 서버로 전송합니다. 서버가 해당 데이터를 검증하지 않고 그대로 응답에 포함하는 경우, 악성 스크립트가 브라우저에서 실행됩니다. 그 결과, 공격자는 세션, 쿠키와 같은 사용자의 정보를 탈취하거나 서버에서 의도하지 않은 동작을 실행하도록 강제할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션이 사용자로부터 입력 받은 값을 검증 및 필터링해야 합니다. 즉, 태그의 이름, 속성, <script> 태그 내부, <style> 태그 내부, HTML 주석 내부 등에 사용자 입력 데이터를 되도록 사용하지 않고 사용자 입력 데이터를 사용해야만 하는 경우 `<`, `>`와 같은 기호를 변환하거나 인코딩하도록 합니다.",
  "rule.rasp.sv.java.3248.name": "크로스 사이트 스크립팅",
  "rule.rasp.sv.java.3249.description": "신용카드번호 노출 취약점은 특정 페이지에서 신용카드번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 신용카드번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 신용카드번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 신용카드번호가 노출되는 경우, 해당 신용카드 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.",
  "rule.rasp.sv.java.3249.name": "신용카드번호 노출",
  "rule.rasp.sv.java.3251.description": "SQL 삽입 취약점은 SQL 쿼리문에 임의의 문자열을 삽입할 수 있는 취약점입니다. 이 취약점은 데이터베이스 쿼리를 구성할 때 사용하는 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 비정상적인 DB 데이터를 처리하게 하는 악성 데이터를 서버로 전송하게 됩니다. 공격이 성공한 경우, 공격자는 데이터베이스 내부의 정보를 탈취하고 조작하거나 데이터베이스에 대해 관리자 명령을 실행할 수 있습니다.",
  "rule.rasp.sv.java.3251.name": "SQL 삽입",
  "rule.rasp.sv.java.3253.description": "운영체제 명령어 삽입 취약점은 서버의 운영체제에서 임의의 명령어를 수행하도록 강제할 수 있는 취약점입니다. 이 취약점은 운영체제 명령문을 구성할 때 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 서버에서 최고 권한을 획득하기 위한 명령어나 서버의 특정 파일을 조작하기 위한 명령어 등을 입력하게 됩니다. 공격이 성공한 경우, 공격자는 중요 위치에 접근하기 위해 권한을 탈취하고 서버의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "rule.rasp.sv.java.3253.name": "운영체제 명령어 삽입",
  "rule.rasp.sv.java.3257.description": "개별 주소 노출 취약점은 웹 페이지에 개별 IP 주소가 노출되는 취약점입니다. 공격자는 웹 페이지에 노출된 개별 IP 주소를 사용하여 웹 애플리케이션을 공격할 수 있습니다. 그 결과, 공격자는 웹 애플리케이션을 운영하는 단체에 속한 개별 IP 주소를 사용하여 웹 애플리케이션의 공용 IP로는 불가능한 공격을 시도함으로써 웹 애플리케이션의 정보를 탈취하거나 웹 애플리케이션에 허용되지 않은 권한으로 접근할 수 있습니다. 이 취약점을 해결하기 위해서는 웹 애플리케이션 내에 개별 IP 주소를 사용하지 않아야 합니다. 또한 개별 IP 주소가 노출될 가능성이 높은 부분을 검사하고, 개별 IP 주소를 사용해야 하는 경우 개별 IP 주소를 다른 식별자로 변경하여 사용하도록 합니다.",
  "rule.rasp.sv.java.3257.name": "개별 주소 노출",
  "rule.rasp.sv.java.3259.description": "운전면허번호 노출 취약점은 특정 페이지에서 운전면허번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 운전면허번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 운전면허번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 운전면허번호가 노출되는 경우, 해당 운전면허 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.",
  "rule.rasp.sv.java.3259.name": "운전면허번호 노출",
  "rule.rasp.sv.java.3261.description": "주민등록번호 노출 취약점은 특정 페이지에서 주민등록번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 주민등록번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 주민등록번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 주민등록번호가 노출되는 경우, 해당 주민등록 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다.",
  "rule.rasp.sv.java.3261.name": "주민등록번호 노출",
  "rule.rasp.sv.java.3271.description": "애플리케이션 내부에 대한 공격이나 애플리케이션 내부로의 침입 행위로 보여지는 의심스러운 이상 행위를 탐지합니다.",
  "rule.rasp.sv.java.3271.name": "이상 행위 발생",
  "rule.rasp.sv.js.3239.description": "경로 조작 취약점은 사용자의 입력 값이 디렉토리 경로 문자열에 사용되어 웹 애플리케이션의 최상단 디렉토리 밖의 파일 시스템이 노출되는 취약점입니다. 공격자는 대부분의 파일 시스템에서 부모 디렉토리를 나타내는 `..`와 디렉토리를 나타내는 `/` 등을 디렉토리 경로 문자열에 사용되는 입력 값으로 넣을 수 있습니다. 그 결과 공격자는 웹 애플리케이션의 최상단 디렉토리 밖의 파일 시스템에 접근하여 웹 애플리케이션의 소스 코드나 시스템 파일 등의 중요한 정보를 탈취할 수 있습니다. 이를 해결하기 위해서는 사용자의 입력 값을 파일 시스템의 파일 및 디렉토리 접근에 사용하지 말아야 합니다. 만약 사용해야 한다면 파일 시스템에서 의미를 가지는 `..`나 `/`와 같은 특수 문자를 변경해서 사용해야 합니다.",
  "rule.rasp.sv.js.3239.name": "경로 조작",
  "rule.rasp.sv.js.3252.description": "SQL 삽입 취약점은 SQL 쿼리문에 임의의 문자열을 삽입할 수 있는 취약점입니다. 이 취약점은 데이터베이스 쿼리를 구성할 때 사용하는 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 비정상적인 DB 데이터를 처리하게 하는 악성 데이터를 서버로 전송하게 됩니다. 공격이 성공한 경우, 공격자는 데이터베이스 내부의 정보를 탈취하고 조작하거나 데이터베이스에 대해 관리자 명령을 실행할 수 있습니다.",
  "rule.rasp.sv.js.3252.name": "SQL 삽입",
  "rule.rasp.sv.js.3256.description": "운영체제 명령어 삽입 취약점은 서버의 운영체제에서 임의의 명령어를 수행하도록 강제할 수 있는 취약점입니다. 이 취약점은 운영체제 명령문을 구성할 때 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 서버에서 최고 권한을 획득하기 위한 명령어나 서버의 특정 파일을 조작하기 위한 명령어 등을 입력하게 됩니다. 공격이 성공한 경우, 공격자는 중요 위치에 접근하기 위해 권한을 탈취하고 서버의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "rule.rasp.sv.js.3256.name": "운영체제 명령어 삽입",
  "rule.rasp.sv.php.3255.description": "운영체제 명령어 삽입 취약점은 서버의 운영체제에서 임의의 명령어를 수행하도록 강제할 수 있는 취약점입니다. 이 취약점은 운영체제 명령문을 구성할 때 사용자 입력값을 충분한 검증 없이 사용하는 경우 발생할 수 있습니다. 공격자는 공격을 수행하기 위하여 서버에서 최고 권한을 획득하기 위한 명령어나 서버의 특정 파일을 조작하기 위한 명령어 등을 입력하게 됩니다. 공격이 성공한 경우, 공격자는 중요 위치에 접근하기 위해 권한을 탈취하고 서버의 중요 정보를 탈취하거나 조작할 수 있습니다.",
  "rule.rasp.sv.php.3255.name": "운영체제 명령어 삽입",
  "rule.rasp.sv.php.3263.description": "주민등록번호 노출 취약점은 특정 페이지에서 주민등록번호에 해당하는 정보를 조회할 수 있는 취약점입니다. 이 취약점은 페이지 내에 주민등록번호가 별도의 처리 없이 포함되기 때문에 발생할 수 있습니다. 공격자는 공격을 수행하기 위해 임의의 페이지에 주민등록번호 규칙에 해당하는 문자열이 존재하는지 검색할 수 있습니다. 공격이 성공하여 유효한 주민등록번호가 노출되는 경우, 해당 주민등록 소유주의 개인 정보가 노출되고 공격자가 해당 정보를 악용할 수 있습니다. ",
  "rule.rasp.sv.php.3263.name": "주민등록번호 노출",
  "rule.saqt.c.abap.1740.description": "너무 긴 한 줄 체커는 코드 한 줄의 길이가 사전에 옵션을 통해 정의된 길이를 초과하는 경우를 검출합니다.\n코드 한 줄이 정해진 길이를 초과하면 줄 바꿈을 실행합니다.",
  "rule.saqt.c.abap.1740.example.0.dangerous": "라인 1: 한 줄이 지정된 길이 (60자)를 넘겼습니다.",
  "rule.saqt.c.abap.1740.example.0.safe": "라인 1: 줄 바꿈을 실행하여 한 줄이 지정된 길이(60자)를 넘기지 않도록 합니다.",
  "rule.saqt.c.abap.1740.name": "너무 긴 한 줄",
  "rule.saqt.c.abap.1740.option.max_column.description": "허용할 한 라인의 최대 길이를 입력합니다.<br/>예시) 100",
  "rule.saqt.c.abap.1740.option.max_column.name": "허용할 최대 길이",
  "rule.saqt.c.abap.1743.description": "부적절한 WHEN OTHERS 절 위치 체커는 CASE 구문 중간에 있는 WHEN OTHERS 절을 검출합니다.\nWHEN OTHERS 절은 CASE 구문의 맨 마지막에 위치해야 합니다.\nWHEN OTHERS 절의 위치를 CASE 구문의 맨 마지막으로 변경합니다.",
  "rule.saqt.c.abap.1743.example.0.dangerous": "라인 1: WHEN OTHERS 절이 CASE 구문의 첫 번째에 위치하고 있습니다.",
  "rule.saqt.c.abap.1743.example.0.safe": "라인 6: CASE 구문의 맨 마지막으로 WHEN OTHERS 절의 위치를 변경합니다.",
  "rule.saqt.c.abap.1743.name": "부적절한 WHEN OTHERS 절 위치",
  "rule.saqt.c.abap.1757.description": "DATA 변수 명명 규칭 위반 체커는 명명 규칙을 위반한 DATA 변수를 검출합니다.\nDATA 변수 이름은 명명 규칙을 위반하지 않아야 합니다. 명명 규칙을 잘 지키면 가독성과 유지보수에 도움이 되며 결과적으로 팀 협업에 도움이 됩니다. 명명 규칙은 옵션으로 설정할 수 있습니다.\n명명 규칙에 따라 변수 이름을 정의합니다.",
  "rule.saqt.c.abap.1757.example.0.dangerous": "라인 1: 변수 MyText가 명명 규칙을 위반했습니다. (명명 규칙이 대소문자 혼용을 금지할 경우 - 옵션 설정 가능)",
  "rule.saqt.c.abap.1757.example.0.safe": "라인 1: 명명 규칙에 맞게 변수 이름을 변경했습니다.",
  "rule.saqt.c.abap.1757.name": "DATA 변수 명명 규칭 위반",
  "rule.saqt.c.abap.1757.option.name_regex.description": "명명 규칙을 정규 표현식으로 입력합니다.",
  "rule.saqt.c.abap.1757.option.name_regex.name": "명명 규칙",
  "rule.saqt.c.abap.1759.description": "클래스 명명 규칙 위반 체커는 명명 규칙을 위반한 CLASS 변수를 검출합니다.\n클래스 이름은 반드시 명명 규칙을 따라야 합니다. 명명 규칙을 잘 지키면 가독성과 유지보수에 도움이 되며 결과적으로 팀 협업에 도움이 됩니다. 명명 규칙은 옵션으로 설정할 수 있습니다.\n명명 규칙에 따라 변수 이름을 정의합니다.",
  "rule.saqt.c.abap.1759.example.0.dangerous": "라인 1: 클래스 이름이 지정된 명명 규칙(정규 표현식 : )을 따르지 않았습니다.",
  "rule.saqt.c.abap.1759.example.0.safe": "라인 1: 명명 규칙에 맞게 변수 이름을 변경했습니다.",
  "rule.saqt.c.abap.1759.name": "클래스 명명 규칙 위반",
  "rule.saqt.c.abap.1759.option.name_regex.description": "명명 규칙을 정규 표현식으로 입력합니다.",
  "rule.saqt.c.abap.1759.option.name_regex.name": "명명 규칙",
  "rule.saqt.c.abap.1767.description": "폼 명명 규칙 위반 체커는 명명 규칙을 위반한 FORM을 검출합니다.\nFORM 이름은 명명 규칙을 위반하지 않아야 합니다. 명명 규칙을 잘 지키면 가독성과 유지보수에 도움이 되며 결과적으로 팀 협업에 도움이 됩니다. 명명 규칙은 옵션으로 설정할 수 있습니다.\nFORM 이름은 지정된 명명 규칙을 따라야 합니다. (기본값은 대소문자 혼용 불가)",
  "rule.saqt.c.abap.1767.example.0.dangerous": "라인 1: 변수 MyForm가 명명 규칙을 위반했습니다. (명명 규칙이 대소문자 혼용을 금지할 경우 - 옵션 설정 가능)",
  "rule.saqt.c.abap.1767.example.0.safe": "라인 1: 명명 규칙에 맞게 FORM 이름을 변경했습니다.",
  "rule.saqt.c.abap.1767.name": "폼 명명 규칙 위반",
  "rule.saqt.c.abap.1767.option.name_regex.description": "명명 규칙을 정규 표현식으로 입력합니다.",
  "rule.saqt.c.abap.1767.option.name_regex.name": "명명 규칙",
  "rule.saqt.c.abap.1768.description": "함수 명명 규칙 위반 체커는 명명 규칙을 위반한 함수를 검출합니다.\n함수 이름은 명명 규칙을 위반하지 않아야 합니다. 명명 규칙을 잘 지키면 가독성과 유지보수에 도움이 되며 결과적으로 팀 협업에 도움이 됩니다. 명명 규칙은 옵션으로 설정할 수 있습니다.\n함수 이름은 지정된 명명 규칙을 따라야 합니다. (기본값은 대소문자 혼용 불가)",
  "rule.saqt.c.abap.1768.example.0.dangerous": "라인 1: 변수 MyFunction가 명명 규칙을 위반했습니다. (명명 규칙이 대소문자 혼용을 금지할 경우 - 옵션 설정 가능)",
  "rule.saqt.c.abap.1768.example.0.safe": "라인 1: 명명 규칙에 맞게 함수 이름을 변경했습니다.",
  "rule.saqt.c.abap.1768.name": "함수 명명 규칙 위반",
  "rule.saqt.c.abap.1768.option.name_regex.description": "명명 규칙을 정규 표현식으로 입력합니다.",
  "rule.saqt.c.abap.1768.option.name_regex.name": "명명 규칙",
  "rule.saqt.c.abap.1776.description": "인터페이스 명명 규칙 위반 체커는 명명 규칙을 위반한 인터페이스를 검출합니다.\n인터페이스 이름은 명명 규칙을 위반하지 않아야 합니다. 명명 규칙을 잘 지키면 가독성과 유지보수에 도움이 되며 결과적으로 팀 협업에 도움이 됩니다. 명명 규칙은 옵션으로 설정할 수 있습니다.\n인터페이스 이름은 지정된 명명 규칙을 따라야 합니다. (기본값은 대소문자 혼용 불가)",
  "rule.saqt.c.abap.1776.example.0.dangerous": "라인 1: INTERFACE 이름인 MyInterface가 명명 규칙을 위반했습니다. (명명 규칙이 대소문자 혼용을 금지할 경우 - 옵션 설정 가능)",
  "rule.saqt.c.abap.1776.example.0.safe": "라인 1: 명명 규칙에 맞게 인터페이스 이름을 변경했습니다.",
  "rule.saqt.c.abap.1776.name": "인터페이스 명명 규칙 위반",
  "rule.saqt.c.abap.1776.option.name_regex.description": "명명 규칙을 정규 표현식으로 입력합니다.",
  "rule.saqt.c.abap.1776.option.name_regex.name": "명명 규칙",
  "rule.saqt.c.abap.1778.description": "메소드 명명 규칙 위반 체커는 명명 규칙을 위반한 메소드를 검출합니다.\n메소드 이름은 명명 규칙을 위반하지 않아야 합니다. 명명 규칙을 잘 지키면 가독성과 유지보수에 도움이 되며 결과적으로 팀 협업에 도움이 됩니다. 명명 규칙은 옵션으로 설정할 수 있습니다.\n메소드 함수 이름은 지정된 명명 규칙을 따라야 합니다. (기본값은 대소문자 혼용 불가)",
  "rule.saqt.c.abap.1778.example.0.dangerous": "라인 1: METHOD 이름 MyMethod가 명명 규칙을 위반했습니다. (명명 규칙이 대소문자 혼용을 금지할 경우 - 옵션 설정 가능)",
  "rule.saqt.c.abap.1778.example.0.safe": "라인 1: 명명 규칙에 맞게 METHOD 이름을 변경했습니다.",
  "rule.saqt.c.abap.1778.name": "메소드 명명 규칙 위반",
  "rule.saqt.c.abap.1778.option.name_regex.description": "명명 규칙을 정규 표현식으로 입력합니다.",
  "rule.saqt.c.abap.1778.option.name_regex.name": "명명 규칙",
  "rule.saqt.c.abap.1779.description": "REPORT 명명 규칙 위반 체커는 명명 규칙을 위반한 REPORT를 검출합니다.\nREPORT 이름은 명명 규칙을 위반하지 않아야 합니다. 명명 규칙을 잘 지키면 가독성과 유지보수에 도움이 되며 결과적으로 팀 협업에 도움이 됩니다. 명명 규칙은 옵션으로 설정할 수 있습니다.\nREPORT 이름은 지정된 명명 규칙을 따라야 합니다. (기본값은 대소문자 혼용 불가)",
  "rule.saqt.c.abap.1779.example.0.dangerous": "라인 1: 메소드 이름 MyReport가 명명 규칙을 위반했습니다. (명명 규칙이 대소문자 혼용을 금지할 경우 - 옵션 설정 가능)",
  "rule.saqt.c.abap.1779.example.0.safe": "라인 1: 명명 규칙에 맞게 REPORT 이름을 변경했습니다.",
  "rule.saqt.c.abap.1779.name": "REPORT 명명 규칙 위반",
  "rule.saqt.c.abap.1779.option.name_regex.description": "명명 규칙을 정규 표현식으로 입력합니다.",
  "rule.saqt.c.abap.1779.option.name_regex.name": "명명 규칙",
  "rule.saqt.c.abap.1780.description": "프로그램 명명 규칙 위반 체커는 명명 규칙을 위반한 PROGRAM 이름을 검출합니다.\nPROGRAM 이름은 명명 규칙을 위반하지 않아야 합니다. 명명 규칙을 잘 지키면 가독성과 유지보수에 도움이 되며 결과적으로 팀 협업에 도움이 됩니다. 명명 규칙은 옵션으로 설정할 수 있습니다.\nPROGRAM 이름은 지정된 명명 규칙을 따라야 합니다. (기본값은 대소문자 혼용 불가)",
  "rule.saqt.c.abap.1780.example.0.dangerous": "라인 1: PROGRAM 이름 MyProgram가 명명 규칙을 위반했습니다. (명명 규칙이 대소문자 혼용을 금지할 경우 - 옵션 설정 가능)",
  "rule.saqt.c.abap.1780.example.0.safe": "라인 1: 명명 규칙에 맞게 PROGRAM 이름을 변경했습니다.",
  "rule.saqt.c.abap.1780.name": "프로그램 명명 규칙 위반",
  "rule.saqt.c.abap.1780.option.name_regex.description": "명명 규칙을 정규 표현식으로 입력합니다.",
  "rule.saqt.c.abap.1780.option.name_regex.name": "명명 규칙",
  "rule.saqt.c.c.2045.description": "포인터 변수에 정수형 널 대입 체커는 포인터 타입 변수에 정수형 0을 대입한 경우를 검출합니다.\n포인터 대입 연산 외에도 동등, 부정 비교 및 3항 연산자에서 정수형 0이 포인터의 자리에 사용되는 것도 함께 검사합니다.\n포인터에 널 값을 대입할 때 int 등 정수형의 0 이 아닌 void * 등 포인터 타입으로 캐스팅된 0을 대입하여야 합니다. 일반적으로 표준 헤더에 정의되어 있는 널 매크로를 대입하면 됩니다.",
  "rule.saqt.c.c.2045.example.0.dangerous": "라인 4: 포인터 변수에 정수 0을 대입했습니다.",
  "rule.saqt.c.c.2045.example.0.safe": "라인 4: 포인터 변수에는 void *로 캐스팅된 0을 대입해야 합니다.",
  "rule.saqt.c.c.2045.name": "포인터 변수에 정수형 널 대입",
  "rule.saqt.c.c.2060.description": "구조체 및 공용체 내부 구현 노출 체커는 구조체 혹은 공용체가 멤버 참조 연산의 피연산자로 사용되지 않았는데도 내부의 필드 구성이 코드에 포함되어 있는 경우를 검출합니다.\n해당 구조체 혹은 공용체가 멤버 참조 연산의 피연산자로 사용될 일이 없는 소스 파일에는 그 선언의 헤더만 남겨두고 실제 내부 구현은 다른 소스 파일에 분리해두어야 합니다.",
  "rule.saqt.c.c.2060.example.0.dangerous": "라인 3: Not_OpaqueType 구조체는 같은 소스 파일 안에서 그 멤버인 c와 d에 접근하는 식이 존재하지 않는데도 내부 구현이 드러나있습니다.",
  "rule.saqt.c.c.2060.example.0.safe": "라인 3: 멤버 접근이 사용되지 않는 곳에서는 내부 구현을 숨깁니다.\n라인 7: 타입 선언만 남겨두어도 충분합니다.",
  "rule.saqt.c.c.2060.name": "구조체 및 공용체 내부 구현 노출",
  "rule.saqt.c.ccpp.1037.description": "비 표준 이스케이프 시퀀스 체커는 ISO C 표준에 명시되지 않은 이스케이프 시퀀스를 사용하는 경우를 검출합니다.\n이스케이프 시퀀스란 백슬래시(\\) 뒤에 숫자가 오는 문자 조합을 가리킵니다. ISO C 표준에서 명시된 이스케이프 시퀀스는 다음과 같습니다. \\`, \\``, \\?, \\\\, \\t, \\v, \\f, \\a, \\b, \\n, \\r, \\0.\n명시되지 않은 이스케이프 시퀀스를 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n표준 이스케이스 시퀀스가 아닌 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1037.example.0.dangerous": "라인 5: 표준에 명시되지 않은 이스케이프 시퀀스를 사용했습니다.",
  "rule.saqt.c.ccpp.1037.example.0.safe": "라인 5: 표준에 명시된 이스케이프 시퀀스를 사용합니다.",
  "rule.saqt.c.ccpp.1037.name": "비 표준 이스케이프 시퀀스",
  "rule.saqt.c.ccpp.1040.description": "다른 범위의 중복된 이름 체커는 서로 다른 범위에 있는 식별자의 이름이 동일한 경우를 검출합니다.\n컴파일러에서는 기본적으로 동일한 이름을 가진 식별자를 허용합니다. 단, 같은 이름을 가진 식별자의 경우 나중에 선언된 식별자가 먼저 선언된 식별자를 덮어씁니다.\n범위와 관계 없이 식별자 이름을 구별하도록 합니다.",
  "rule.saqt.c.ccpp.1040.example.0.dangerous": "라인 7: 매개 변수를 variable로 명명했습니다. 해당 이름을 이미 라인 1에서 전역 변수로 사용했습니다.",
  "rule.saqt.c.ccpp.1040.example.0.safe": "라인 7: 서로 다른 범위에서도 식별자 이름을 중복하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1040.name": "다른 범위의 중복된 이름",
  "rule.saqt.c.ccpp.1040.option.ignore_enum_constant.description": "옵션을 사용하는 경우, 열거형 상수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1040.option.ignore_enum_constant.name": "열거형 상수 식별자를 무시",
  "rule.saqt.c.ccpp.1040.option.ignore_label.description": "옵션을 사용하는 경우, 라벨 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1040.option.ignore_label.name": "라벨 식별자를 무시",
  "rule.saqt.c.ccpp.1040.option.ignore_normal_variable.description": "옵션을 사용하는 경우, 일반 변수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1040.option.ignore_normal_variable.name": "일반 변수 식별자를 무시",
  "rule.saqt.c.ccpp.1040.option.ignore_parameter.description": "선택시 파라메터 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1040.option.ignore_parameter.name": "파라미터 식별자 무시",
  "rule.saqt.c.ccpp.1040.option.ignore_routine.description": "선택시 함수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1040.option.ignore_routine.name": "함수 식별자를 무시",
  "rule.saqt.c.ccpp.1040.option.ignore_typedef.description": "옵션을 사용하는 경우, typedef 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1040.option.ignore_typedef.name": "typedef 식별자를 무시",
  "rule.saqt.c.ccpp.1041.description": "유일하지 않은 사용자 정의 타입 이름 체커는 typedef로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n컴파일러에서는 기본적으로 동일한 이름을 가진 식별자를 허용합니다. 단, 같은 이름을 가진 식별자의 경우 나중에 선언된 식별자가 먼저 선언된 식별자를 덮어씁니다.\ntypedef를 선언할 때 이전에 사용한 이름을 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1041.example.0.dangerous": "라인 1: int64_t란 이름으로 typedef를 선언했습니다.\n라인 7: int64_t란 이름으로 변수를 선언했습니다. 이 이름은 라인 1에서 이미 사용한 이름입니다.\n라인 11: int64_t란 이름으로 매개 변수를 선언했습니다. 이 이름은 라인 1에서 이미 사용한 이름입니다.",
  "rule.saqt.c.ccpp.1041.example.0.safe": "라인 7: 이전에 선언된 typedef와 동일한 식별자를 사용하지 않도록 합니다.\n라인 11: 이전에 선언된 typedef와 동일한 식별자를 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1041.name": "유일하지 않은 사용자 정의 타입 이름",
  "rule.saqt.c.ccpp.1042.description": "중복된 태그 이름 체커는 태그로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n여기서 태그는 클래스, 구조체, 공용체, 열거형 등을 의미합니다.\n태그를 선언할 때 한 번 사용한 이름을 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1042.example.0.dangerous": "라인 2: StructTest란 이름으로 구조체를 선언했습니다.\n라인 11: StructTest란 이름으로 공용체를 선언했습니다. 이 이름은 라인 2에서 이미 사용한 이름입니다.",
  "rule.saqt.c.ccpp.1042.example.0.safe": "라인 11: 이전에 선언된 구조체와 동일한 식별자를 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1042.name": "중복된 태그 이름",
  "rule.saqt.c.ccpp.1043.description": "재사용된 정적 식별자 체커는 정적 객체로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n여기서 정적 객체란 정적 저장(Static Storage) 기간을 가진 모든 객체의 식별자를 의미합니다. 여기에는 함수도 포함됩니다.\n정적 객체를 선언할 때 이전에 사용한 이름을 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1043.example.0.dangerous": "라인 1: staticVar1이란 이름으로 정적 변수를 선언했습니다.\n라인 2: staticVar2란 이름으로 정적 변수를 선언했습니다.\n라인 4: staticVar1이란 이름으로 typedef를 선언했습니다. 이 이름은 라인 1에서 이미 사용한 이름입니다.\n라인 5: staticVar2란 이름으로 지역 변수를 선언했습니다. 이 이름은 라인 2에서 이미 사용한 이름입니다.",
  "rule.saqt.c.ccpp.1043.example.0.safe": "라인 4: 이전에 선언된 정적 변수와 동일한 식별자를 사용하지 않도록 합니다.\n라인 5: 이전에 선언된 정적 변수와 동일한 식별자를 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1043.name": "재사용된 정적 식별자",
  "rule.saqt.c.ccpp.1045.description": "재사용된 식별자 체커는 어떠한 식별자라도 이름이 같은 경우를 검출합니다.\n이름 공간이 다를 경우 실제로 두 공간에 존재하는 이름이 겹치거나 가려지는 현상이 발생하지는 않습니다. 하지만 이 체커는 그것과 관계 없이 모든 식별자에서 이름을 재사용하는 것을 금지합니다. 여기서 식별자는 함수명, 레이블명, 열거형 상수명, 변수명, 매개 변수명, 태그명, 필드명을 포함합니다.\n이전에 사용한 식별자를 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1045.example.0.dangerous": "라인 4: fieldName이란 이름으로 필드를 선언했습니다.\n라인 9: fieldName이란 이름으로 함수를 선언했습니다. 이 이름은 라인 4에서 이미 사용한 이름입니다.",
  "rule.saqt.c.ccpp.1045.example.0.safe": "라인 9: 이전에 사용한 식별자를 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1045.name": "재사용된 식별자",
  "rule.saqt.c.ccpp.1045.option.ignore_enum_constant.description": "옵션을 사용하는 경우, 열거형 상수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1045.option.ignore_enum_constant.name": "열거형 상수 식별자를 무시",
  "rule.saqt.c.ccpp.1045.option.ignore_field.description": "옵션을 사용하는 경우, 필드 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1045.option.ignore_field.name": "필드 식별자를 무시",
  "rule.saqt.c.ccpp.1045.option.ignore_label.description": "옵션을 사용하는 경우, 라벨 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1045.option.ignore_label.name": "라벨 식별자를 무시",
  "rule.saqt.c.ccpp.1045.option.ignore_normal_variable.description": "옵션을 사용하는 경우, 일반 변수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1045.option.ignore_normal_variable.name": "일반 변수 식별자를 무시",
  "rule.saqt.c.ccpp.1045.option.ignore_parameter.description": "선택시 파라메터 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1045.option.ignore_parameter.name": "파라미터 식별자 무시",
  "rule.saqt.c.ccpp.1045.option.ignore_routine.description": "선택시 함수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1045.option.ignore_routine.name": "함수 식별자를 무시",
  "rule.saqt.c.ccpp.1045.option.ignore_tag.description": "선택시 태그 식별자를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.1045.option.ignore_tag.name": "태그 식별자를 무시",
  "rule.saqt.c.ccpp.1052.description": "타입 정의 시 누락된 크기 명시 체커는 기본 숫자 타입에 대한 typedef 선언에서 스토리지의 크기가 명시되지 않은 경우를 검출합니다.\n다만 기본 숫자 타입 중 plain char 타입과 C에서 boolean으로 사용되는 타입은 예외로 합니다.\n기본 숫자 타입을 typedef로 선언할 경우 일부 예외를 제외하곤 항상 스토리지 크기를 명시하도록 합니다.",
  "rule.saqt.c.ccpp.1052.example.0.dangerous": "라인 1: typedef 선언에서 스토리지의 크기가 포함되지 않았습니다.\n라인 2: typedef 선언에서 스토리지의 크기가 포함되지 않았습니다.",
  "rule.saqt.c.ccpp.1052.example.0.safe": "라인 1: typedef 선언에 스토리지의 크기를 포함합니다.\n라인 2: typedef 선언에 스토리지의 크기를 포함합니다.",
  "rule.saqt.c.ccpp.1052.name": "타입 정의 시 누락된 크기 명시",
  "rule.saqt.c.ccpp.1098.description": "부적절한 논리 연산의 피연산자 체커는 논리 연산자의 피연산자로 변수나 상수, 괄호 수식을 제외한 수식을 사용한 경우를 검출합니다.\n논리 연산자의 피연산자로 변수나 상수, 괄호 수식와 같은 기본 수식만을 사용합니다.",
  "rule.saqt.c.ccpp.1098.example.0.dangerous": "라인 3: 논리 연산자의 피연산자로 변수나 상수, 괄호 수식이 아닌 수식을 사용했습니다.",
  "rule.saqt.c.ccpp.1098.example.0.safe": "라인 3: 논리 연산자의 피연산자로 변수나 상수, 괄호 수식을 사용합니다.",
  "rule.saqt.c.ccpp.1098.name": "부적절한 논리 연산의 피연산자",
  "rule.saqt.c.ccpp.1111.description": "continue 구문 사용 체커는 소스 코드에서 continue 구문을 사용한 경우를 검출합니다.\n잦은 continue 구문의 사용은 프로그램의 실행 경로를 추적하기 어렵게 만듭니다. 이로 인해 의도하지 않은 제어 흐름이 만들어져 프로그램이 오동작할 수 있습니다.\ncontinue 문을 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1111.example.0.dangerous": "라인 4: continue 구문을 사용했습니다.",
  "rule.saqt.c.ccpp.1111.example.0.safe": "라인 3: continue 구문이 필요하지 않도록 로직을 수정합니다.",
  "rule.saqt.c.ccpp.1111.name": "continue 구문 사용",
  "rule.saqt.c.ccpp.1112.description": "누락된 switch 구문 내 default 케이스 체커는 switch 구문의 마지막 절이 default 절이 아닌 경우를 검출합니다.\n이 규칙의 검출 범위는 default 절 자체가 없는 경우도 포함됩니다.\nswitch 구문이 default 절로 끝나도록 코드를 작성합니다.",
  "rule.saqt.c.ccpp.1112.example.0.dangerous": "라인 2: switch 구문에 default 절이 포함되지 않았습니다.",
  "rule.saqt.c.ccpp.1112.example.0.safe": "라인 12: switch 구문의 마지막에 default 절을 추가합니다.",
  "rule.saqt.c.ccpp.1112.name": "누락된 switch 구문 내 default 케이스",
  "rule.saqt.c.ccpp.1112.option.allow_leading_default.description": "default를 맨 앞에 배치하는 것을 허용합니다.",
  "rule.saqt.c.ccpp.1112.option.allow_leading_default.name": "맨 앞에 default 허용",
  "rule.saqt.c.ccpp.1122.description": "너무 높은 포인터 단계 체커는 포인터 변수 선언 시 포인터의 레벨이 2를 초과하는 선언을 검출합니다.\n포인터는 접근하려는 깊이에 따라 이중 포인터나 삼중 포인터 이상을 선언할 수 있습니다.\n포인터는 최대 이중 포인터까지만 선언하여 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1122.example.0.dangerous": "라인 2: 3레벨의 포인터를 선언했습니다.",
  "rule.saqt.c.ccpp.1122.example.0.safe": "라인 2: 2레벨 이하의 포인터를 선언하도록 합니다.",
  "rule.saqt.c.ccpp.1122.name": "너무 높은 포인터 단계",
  "rule.saqt.c.ccpp.1132.description": "너무 복잡한 함수 체커는 함수가 매우 복잡한 방법으로 선언되어 있는 경우를 검출합니다.\n여기서 복잡한 방법이란 반환 타입이나 하나 이상의 매개 변수에 typedef를 사용하지 않고 함수 포인터를 선언하는 것을 가리킵니다.\n복잡한 함수 선언에서 typedef를 사용하여 반환 타입이나 매개 변수를 분리하거나, 함수 포인터를 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1132.example.0.dangerous": "라인 1: signal() 함수 포인터 선언이 너무 복잡합니다.",
  "rule.saqt.c.ccpp.1132.example.0.safe": "라인 1: 매개 변수로 사용한 함수 포인터를 typedef로 선언하여 사용합니다.",
  "rule.saqt.c.ccpp.1132.name": "너무 복잡한 함수",
  "rule.saqt.c.ccpp.1176.description": "논리 연산의 피연산자로 사용된 비 불린 값 체커는 논리 연산자들의 피연산자 타입이 Boolean이 아닌 수식을 검출합니다.\n여기서 논리 연산자란 !, &&, || 연산자 등을 의미합니다.\n논리 연산자의 피연산자 타입은 항상 Boolean이 오도록 수식을 수정합니다.",
  "rule.saqt.c.ccpp.1176.example.0.dangerous": "라인 3: && 연산자의 피연산자로 Boolean 타입이 아닌 x를 사용했습니다.",
  "rule.saqt.c.ccpp.1176.example.0.safe": "라인 3: && 연산자의 피연산자는 항상 Boolean 타입이 되도록 합니다.",
  "rule.saqt.c.ccpp.1176.name": "논리 연산의 피연산자로 사용된 비 불린 값",
  "rule.saqt.c.ccpp.1177.description": "여러 개의 break 구문 체커는 break 구문을 두 번 이상 사용한 반복문을 검출합니다.\n반복문 내에서 종료 제약의 수를 제한하는 것은 훌륭한 구조화 프로그래밍입니다. 하나의 break 문만 반복문에서 사용할 수 있습니다.\n반복문 내에서 break 구문이 여러 번 동작하는 것은 프로그램의 구조적인 측면에서 좋지 못한 방법입니다. 이러한 사용 방법은 제어 흐름을 복잡하게 만듭니다.\n반복문 내에서는 break 구문을 최대 한 번만 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1177.example.0.dangerous": "라인 7: break 구문을 사용했습니다.\n라인 10: break 구문을 사용했습니다. 하나의 반복문 안에서 break 구문이 두 번 사용되었습니다.",
  "rule.saqt.c.ccpp.1177.example.0.safe": "라인 5: 반복문 안에서는 break 구문을 최대 한 번만 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1177.name": "여러 개의 break 구문",
  "rule.saqt.c.ccpp.1180.description": "중첩된 블록 내 케이스 구문 체커는 switch 구문이 아닌 다른 복합 구문에서 case 구문이나 같은 유형인 default 구문을 사용한 경우를 검출합니다.\ncase 구문이나 default 구문은 반드시 switch 구문 내에서만 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1180.example.0.dangerous": "라인 6: case 구문을 switch 구문이 아닌 case 구문의 본문에서 사용했습니다.",
  "rule.saqt.c.ccpp.1180.example.0.safe": "라인 3: 모든 case 구문의 상위 복합문이 switch 구문이 되도록 합니다.",
  "rule.saqt.c.ccpp.1180.name": "중첩된 블록 내 케이스 구문",
  "rule.saqt.c.ccpp.1181.description": "누락된 파라미터 식별자 체커는 식별자를 가지지 않은 매개 변수가 있는 함수 프로토타입 선언을 검출합니다.\n함수 프로토타입 선언 시 모든 매개 변수가 식별자를 가지도록 작성합니다.",
  "rule.saqt.c.ccpp.1181.example.0.dangerous": "라인 1: 2번째 매개 변수의 식별자가 없습니다.\n라인 2: 모든 매개 변수의 식별자가 없습니다.",
  "rule.saqt.c.ccpp.1181.example.0.safe": "라인 1: 모든 매개 변수의 식별자를 작성합니다.\n라인 2: 모든 매개 변수의 식별자를 작성합니다.",
  "rule.saqt.c.ccpp.1181.name": "누락된 파라미터 식별자",
  "rule.saqt.c.ccpp.1182.description": "일치하지 않는 인자 이름 체커는 함수 선언과 정의에서 매개 변수의 식별자가 서로 다른 경우를 검출합니다.\n함수 선언과 정의에서 같은 매개 변수는 같은 식별자를 가지도록 작성합니다.",
  "rule.saqt.c.ccpp.1182.example.0.dangerous": "라인 1: func2() 함수를 선언했습니다.\n라인 2: func2() 함수를 정의했습니다. 하지만 라인 1의 선언과 비교했을 때 매개 변수 식별자가 다릅니다.",
  "rule.saqt.c.ccpp.1182.example.0.safe": "라인 2: 함수 선언과 정의시의 매개 변수 이름을 모두 동일하게 유지합니다.",
  "rule.saqt.c.ccpp.1182.name": "일치하지 않는 인자 이름",
  "rule.saqt.c.ccpp.1185.description": "후행하는 포함 구문 체커는 include 전처리 구문이 파일 최상단에 위치하지 않은 경우를 검출합니다.\n이때 파일 최상단에 다른 전처리 구문이나 주석이 오는 경우는 예외로 하도록 합니다.\n예외를 제외하고 항상 파일 최상단에는 include 전처리 구문이 오도록 합니다.",
  "rule.saqt.c.ccpp.1185.example.0.dangerous": "라인 2: include 전처리 구문 이전에 라인 2에서 전역 변수를 선언했습니다.",
  "rule.saqt.c.ccpp.1185.example.0.safe": "라인 2: include 전처리 구문은 다른 전처리 구문이나 주석을 제외하고 항상 파일 최상단에 와야 합니다.",
  "rule.saqt.c.ccpp.1185.name": "후행하는 포함 구문",
  "rule.saqt.c.ccpp.1208.description": "일관성 없는 파라미터 선언 체커는 함수를 선언할 때 매개 변수 목록을 일관성있게 작성하지 않은 경우를 검출합니다.\n매개 변수 선언이 일관성이 있어야 합니다. 일관성이 없는 매개 변수 선언은 소스 코드의 가독성을 떨어트리게 됩니다.\n매개 변수를 일관성 있게 선언합니다.",
  "rule.saqt.c.ccpp.1208.example.0.dangerous": "라인 1: 2번째 매개 변수에 식별자가 없습니다.",
  "rule.saqt.c.ccpp.1208.example.0.safe": "라인 1: 모든 매개 변수에 식별자가 있어야 합니다.",
  "rule.saqt.c.ccpp.1208.name": "일관성 없는 파라미터 선언",
  "rule.saqt.c.ccpp.1252.description": "헤더 파일 내 외부 전역 변수 선언 체커는 헤더 파일 선언 규칙대로 헤더 파일에서 선언을 구성하지 않은 경우를 검출합니다.\n헤더 파일 선언 규칙은 다음과 같습니다. 모든 인라인되지 않은 함수, 클래스, 변수, 열거형 및 열거형 상수, 이름이 있는 네임스페이스 영역, 외부 링크를 포함한 객체는 헤더 파일에서 선언되어야 합니다. 객체 정의 및 이름이 없는 네임스페이스에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n헤더 파일에서 필수 항목을 작성하지 않은 함수나 객체는 다른 파일에서 사용할 수 없습니다.\n헤더 파일 선언 규칙대로 헤더 파일을 구성하도록 합니다.",
  "rule.saqt.c.ccpp.1252.example.0.dangerous": "라인 4: 외부 링크를 포함한 전역 변수를 헤더 파일에서 정의했습니다.",
  "rule.saqt.c.ccpp.1252.example.0.safe": "라인 4: 전역 변수의 선언만 작성하도록 합니다.",
  "rule.saqt.c.ccpp.1252.name": "헤더 파일 내 외부 전역 변수 선언",
  "rule.saqt.c.ccpp.1252.option.as_Misra2008.description": "헤더에 정의되지 않은 모든 global변수들을 검사합니다.",
  "rule.saqt.c.ccpp.1252.option.as_Misra2008.name": "misra2008 스펙으로 동작",
  "rule.saqt.c.ccpp.1253.description": "헤더 파일 내 누락된 인라인 함수 정의 체커는 헤더 파일 인라인 정의 규칙대로 헤더 파일에서 인라인 정의를 수행하지 않은 경우를 검출합니다.\n헤더 파일 인라인 정의 규칙은 다음과 같습니다. 인라인 함수는 헤더 파일에서 선언하고 정의해야 합니다. 이름이 없는 네임스페이스에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n인라인 함수는 프로그램의 성능을 위해 함수의 내용을 함수 호출이 아닌 함수 내용을 대체 시켜 성능상의 향상을 얻는 방법입니다. 따라서 함수 구현의 가시성을 확보해 두는 것이 좋습니다.\n헤더 파일 인라인 정의 규칙대로 헤더 파일을 구성하도록 합니다.",
  "rule.saqt.c.ccpp.1253.example.0.dangerous": "라인 2: 헤더 파일에서 인라인 함수를 선언만 했습니다.",
  "rule.saqt.c.ccpp.1253.example.0.safe": "라인 2: 헤더 파일에서 인라인 함수를 정의하도록 합니다.",
  "rule.saqt.c.ccpp.1253.name": "헤더 파일 내 누락된 인라인 함수 정의",
  "rule.saqt.c.ccpp.1254.description": "소스 파일 내 템플릿 정의 체커는 헤더 파일 템플릿 정의 규칙대로 헤더 파일에서 템플릿 정의를 하지 않은 경우를 검출합니다.\n헤더 파일 템플릿 정의 규칙은 다음과 같습니다. 템플릿 클래스나 함수는 헤더 파일에서 선언 및 정의를 해야 합니다. 이름이 없는 네임스페이서에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n템플릿 정의는 인스턴스화하기 위해서는 다른 외부 링크에서도 템플릿 정의를 볼 수 있어야 합니다. 만약 명시적 인스턴스화 모델을 지원하는 컴파일러일 경우 반드시 템플릿 정의가 헤더 파일에 포함될 필요는 없습니다. 하지만 보편적인 관점에서는 템플릿 정의를 헤더 파일에 두는 것이 더 나은 방법입니다.\n헤더 파일 템플릿 정의 규칙대로 헤더 파일을 구성하도록 합니다.",
  "rule.saqt.c.ccpp.1254.example.0.dangerous": "라인 2: 소스 파일에 템플릿을 정의했습니다.",
  "rule.saqt.c.ccpp.1254.example.0.safe": "라인 2: 헤더 파일에 템플릿을 정의하도록 합니다.",
  "rule.saqt.c.ccpp.1254.name": "소스 파일 내 템플릿 정의",
  "rule.saqt.c.ccpp.1262.description": "불분명한 식별자 체커는 고유하지 않은 식별자를 사용할 때 검출합니다.\n각각의 식별자가 고유한지 확인하도록 합니다. 식별자의 유사성은 가독성을 떨어트리게 되며 이로 인한 실수가 발생할 수 있습니다.\n각 식별자를 고유하게 사용합니다.",
  "rule.saqt.c.ccpp.1262.example.0.dangerous": "라인 2: C라는 식별자가 C 클래스 타입 명을 가리게 됩니다. 실제로 이것은 C++에서 유효한 코드입니다.",
  "rule.saqt.c.ccpp.1262.example.0.safe": "라인 2: 고유한 식별자 명을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1262.name": "불분명한 식별자",
  "rule.saqt.c.ccpp.1263.description": "모호한 문법 사용 체커는 함수 스타일 캐스팅과 똑같이 생긴 문법으로 변수를 선언한 경우를 검출합니다.\n함수 스타일 캐스팅과 선언간의 애매한 문법을 사용을 하지 않도록 합니다. 이 규칙은 선언 시에 모호한 괄호를 사용하지 않는 것입니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n변수 선언 시 괄호를 사용하지 않습니다.",
  "rule.saqt.c.ccpp.1263.example.0.dangerous": "라인 6: b 선언 시에 괄호를 사용했습니다.",
  "rule.saqt.c.ccpp.1263.example.0.safe": "라인 6: 괄호를 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1263.name": "모호한 문법 사용",
  "rule.saqt.c.ccpp.1264.description": "식별자 내 혼란스러운 문자 체커는 동일한 식별자에서 숫자 `1`와 소문자 `l`, 숫자 `0`과 대문자 `O`를 같이 쓰면 검출합니다.\n동일한 식별자에서 숫자 `1`와 소문자 `l`, 숫자 `0`과 대문자 `O`를 같이 쓰지 않도록 합니다. 식별자를 읽을 때 혼동을 줄 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n동일한 식별자에서 숫자 `1`와 소문자 `l`, 숫자 `0`과 대문자 `O`를 같이 쓰지 않도록 합니다.",
  "rule.saqt.c.ccpp.1264.example.0.dangerous": "라인 1: 소문자 'l'과 숫자 '1'이 같은 식별자 내에서 사용되었습니다.",
  "rule.saqt.c.ccpp.1264.example.0.safe": "라인 1: 소문자 'l'과 숫자 '1'을 같은 식별자 내에서 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1264.name": "식별자 내 혼란스러운 문자",
  "rule.saqt.c.ccpp.1265.description": "하나의 타입 정의에 작성된 여러 개의 타입 이름 체커는 typedef 선언 시 하나 이상의 타입을 선언한 경우를 검출합니다.\ntypedef 선언 시 하나의 타입만 선언하도록 합니다. `&`나 `*`의 경우 인접한 선언자에만 적용되게 됩니다. 따라서 typedef시 여러 개의 타입을 선언하는 것은 혼란스럽고 유지보수에 어려움이 있을 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\ntypedef 선언 시 하나의 타입만 선언하도록 합니다.",
  "rule.saqt.c.ccpp.1265.example.0.dangerous": "라인 1: pointer의 경우 int 포인터 형으로, value의 경우 int 형 타입이 됩니다. 이는 프로그래머의 의도와 다를 수 있습니다.",
  "rule.saqt.c.ccpp.1265.example.0.safe": "라인 1: typedef 시 하나의 타입만 선언하도록 합니다.",
  "rule.saqt.c.ccpp.1265.name": "하나의 타입 정의에 작성된 여러 개의 타입 이름",
  "rule.saqt.c.ccpp.1266.description": "사용자 정의 배열 타입 체커는 배열 타입을 typedef로 선언한 경우를 검출합니다.\n배열 타입을 typedef로 선언하지 않도록 합니다. 배열 형식을 typedef로 선언하여 사용할 경우, 경계값의 확인 및 delete시 잘못 사용할 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\ntypedef로 배열 타입을 선언하지 않습니다.",
  "rule.saqt.c.ccpp.1266.example.0.dangerous": "라인 6: delete로 객체를 삭제했습니다. 문맥만을 놓고 보았을때는 문제 없어 보이나, ArrayType은 배열타입을 typedef 한 것입니다. 따라서 delete[]가 호출되어야 합니다.",
  "rule.saqt.c.ccpp.1266.example.0.safe": "라인 1: 일반 타입으로 typedef 선언을 하도록 합니다.",
  "rule.saqt.c.ccpp.1266.name": "사용자 정의 배열 타입",
  "rule.saqt.c.ccpp.1269.description": "* 및 & 토큰 규칙 위반 체커는 포인터 또는 참조자 선언 시 `*`와 `&`를 변수 이름에 붙인 경우를 검출합니다.\n포인터 또는 참조자 선언 시 `*`와 `&`는 변수 이름 대신 타입 이름에 붙이도록 합니다. 이렇게 할 경우 각각의 토큰이 주는 의미가 타입의 일부임을 강조하는데 도움이 됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n포인터 또는 참조자 선언 시 `*`와 `&`는 변수 이름 대신 타입 이름에 붙이도록 합니다.",
  "rule.saqt.c.ccpp.1269.example.0.dangerous": "라인 1: *가 변수 이름에 붙어있습니다.",
  "rule.saqt.c.ccpp.1269.example.0.safe": "라인 1: *를 타입 이름에 붙이도록 합니다.",
  "rule.saqt.c.ccpp.1269.name": "* 및 & 토큰 규칙 위반",
  "rule.saqt.c.ccpp.1270.description": "부호가 없는 타입 사용 체커는 부호없는 숫자 값을 사용한 경우를 검출합니다.\n부호없는 숫자 값 대신 signed 숫자 값 사용을 먼저 고려해야 합니다. 부호있는 정수와 부호없는 정수 간의 변환은 종종 알아채기 힘든 문제를 발생시킬 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nunsigned 숫자 값 대신 signed 숫자 값을 사용합니다.",
  "rule.saqt.c.ccpp.1270.example.0.dangerous": "라인 1: unsigned 형 정수형을 사용했습니다.",
  "rule.saqt.c.ccpp.1270.example.0.safe": "라인 1: signed 형 정수형을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1270.name": "부호가 없는 타입 사용",
  "rule.saqt.c.ccpp.1272.description": "부적절한 상수 값과 비교 체커는 변수와 상수를 비교할 때 상수가 오른쪽 피연산자로 사용된 경우를 검출합니다.\n변수와 상수를 비교할 때 상수값을 좌측에 두도록 합니다. C++에서는 종종 비교식에서 비교 연산자와 대입 연산자를 혼동하여 잘못 사용하기도 합니다. 상수값을 좌측에 둘 경우, 만약 비교 연산자를 사용해야 될 부분에서 대입 연산자를 사용해도 컴파일러가 이 오류를 검출하여 줍니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n변수와 상수를 비교할 때 상수값을 좌측에 두도록 합니다.",
  "rule.saqt.c.ccpp.1272.example.0.dangerous": "라인 2: value를 좌측항에 두었습니다.",
  "rule.saqt.c.ccpp.1272.example.0.safe": "라인 2: 상수값을 좌측항에 두도록 합니다.",
  "rule.saqt.c.ccpp.1272.name": "부적절한 상수 값과 비교",
  "rule.saqt.c.ccpp.1275.description": "삼항 연산자 사용 체커는 삼항 연산자를 사용하는 경우를 검출합니다.\n삼항 연산자를 사용하지 않도록 합니다. 복잡한 조건식을 평가하는데 가장 좋은 방법은 명시적으로 조건문을 사용하는 것입니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n삼항 연산자를 사용하지 않습니다.",
  "rule.saqt.c.ccpp.1275.example.0.dangerous": "라인 3: 삼항 연산자를 사용하고 있습니다.",
  "rule.saqt.c.ccpp.1275.example.0.safe": "라인 3: 삼항 연산자 대신 조건문을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1275.name": "삼항 연산자 사용",
  "rule.saqt.c.ccpp.1281.description": "전처리 구문 공백 규칙 위반 체커는 전처리 지시자가 첫 번째 컬럼에서 시작하지 않거나 #과 전처리 지시자 이름 사이에 공백이 있는 경우를 검출합니다.\n이 규칙은 WRITE_DIRECTIVE_NESTED_PREPROCESSOR와 서로 상충됩니다. 두 규칙을 같이 사용하지 않도록 합니다.\n전처리 지시자는 첫 번째 컬럼에서 시작하여 #과 전처리 지시자 이름 사이에 공백이 없도록 합니다.\n전처리 지시자는 첫 번째 컬럼에서 시작하여 #과 전처리 지시자 이름 사이에 공백이 없도록 합니다.",
  "rule.saqt.c.ccpp.1281.example.0.dangerous": "라인 1: 전처리 지시자의 시작이 첫 번째 컬럼이 아닙니다.",
  "rule.saqt.c.ccpp.1281.example.0.safe": "라인 1: 첫 번째 컬럼에서 시작하도록 합니다.",
  "rule.saqt.c.ccpp.1281.name": "전처리 구문 공백 규칙 위반",
  "rule.saqt.c.ccpp.1282.description": "중첩된 전처리 구문 공백 규칙 위반 체커는 전처리 지시자가 첫 번째 컬럼에서 시작하지 않거나 #과 전처리 지시자 이름 사이에 공백이 없는 경우를 검출합니다.\n전처리 조건문 내부에 속하는 전처리 지시자는 첫 번째 컬럼에서 시작하여 #와 전처리 지시자 이름 사이에 공백을 넣도록 합니다.\n전처리 조건문 내부에 속하는 전처리 지시자는 첫 번째 컬럼에서 시작하여 #와 전처리 지시자 이름 사이에 공백을 넣도록 합니다.",
  "rule.saqt.c.ccpp.1282.example.0.dangerous": "라인 2: #와 전처리 지시자 이름 사이에 공백이 없습니다.",
  "rule.saqt.c.ccpp.1282.example.0.safe": "라인 2: #와 전처리 지시자 이름 사이에 공백을 넣도록 합니다.",
  "rule.saqt.c.ccpp.1282.name": "중첩된 전처리 구문 공백 규칙 위반",
  "rule.saqt.c.ccpp.1283.description": "#if 지시자 사용 체커는 if 전처리 구문이 사용된 경우를 검출합니다.\n전 처리 토큰의 특정 값을 통해 조건부 컴파일을 제어하면 오류 발생 확률이 높아집니다.\nif 전처리 구문 대신 ifdef, ifndef 전처리 구문을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1283.example.0.dangerous": "라인 2: if 전처리 구문을 사용했습니다.",
  "rule.saqt.c.ccpp.1283.example.0.safe": "라인 2: ifdef 전처리 구문을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1283.name": "#if 지시자 사용",
  "rule.saqt.c.ccpp.1286.description": "포함 구문 내 경로 지정자 체커는 #include 지시자에서 파일 이름에 경로 문자가 포함된 경우를 검출합니다.\n특정 디렉토리의 이름과 경로는 플랫폼 및 컴파일러를 통해 변경될 수 있습니다.\n#include 지시자에서 파일 이름에 경로 문자를 포함하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1286.example.0.dangerous": "라인 1: 헤더 파일 포함시에 경로문자를 삽입했습니다.",
  "rule.saqt.c.ccpp.1286.example.0.safe": "라인 4: 메이크파일 에서 경로를 지정한 후 경로문자 없이 헤더 파일을 포함합니다.",
  "rule.saqt.c.ccpp.1286.name": "포함 구문 내 경로 지정자",
  "rule.saqt.c.ccpp.1311.description": "읽기 어려운 식별자 체커는 시각적으로 비슷하여 구별하기 어려운 식별자를 사용하는 경우를 검출합니다.\n문자 집합을 표시하기 위해 사용하는 글꼴에 따라 문자가 다르더라도 특정 글리프가 비슷하게 표시될 수 있습니다. 그러면 개발자가 식별자를 구분하기 어렵습니다.\n시각적으로 구별하기 쉬운 식별자를 사용해야 합니다.",
  "rule.saqt.c.ccpp.1311.example.0.dangerous": "라인 2: foo.h 에서 id_O (대문자 O)와 bar.h의 id_0(숫자 0)를 혼동할 위험성이 있습니다.",
  "rule.saqt.c.ccpp.1311.example.0.safe": "라인 2: 혼동되지 않는 문자와 숫자로 식별자 이름을 적어야 합니다.",
  "rule.saqt.c.ccpp.1311.name": "읽기 어려운 식별자",
  "rule.saqt.c.ccpp.1313.description": "소스 파일 내 타입 선언 체커는 소스 파일이 아닌 헤더 파일에 정의하도록 규정된 것들을 소스 파일에서 선언한 경우를 검출합니다.\n대체로 다른 소스 파일과 공유될 가능성이 있는 모든 정의는 헤더 파일에서 이루어져야 합니다. 그래야 각 소스 파일에 그 헤더 파일을 포함시키는 방식으로 서로 인터페이스를 공유할 수 있습니다.\n객체 정의 및 이름이 없는 네임스페이스에서의 선언과 정의를 제외한 모든 것을 헤더 파일에 선언하도록 합니다. 구체적으로는 다음의 항목들을 헤더 파일에서 선언해야 합니다: 모든 인라인되지 않은 함수, 클래스, 변수, 열거형 및 열거형 상수, 이름이 있는 네임스페이스 영역 부분, 외부 링크를 가지는 것들.",
  "rule.saqt.c.ccpp.1313.example.0.dangerous": "라인 2: 열거형 타입을 소스 파일에서 선언했습니다.\n라인 3: 클래스 타입을 소스 파일에서 선언했습니다.",
  "rule.saqt.c.ccpp.1313.example.0.safe": "라인 2: 열거형 타입은 헤더 파일에서 선언해야 합니다.\n라인 3: 클래스 타입은 헤더 파일에서 선언해야 합니다.",
  "rule.saqt.c.ccpp.1313.name": "소스 파일 내 타입 선언",
  "rule.saqt.c.ccpp.1361.description": "익명 네임스페이스 밖의 비 멤버 함수 체커는 외부 인터페이스에 속해있지 않은 비 멤버 함수가 소스 파일에서 이름이 없는 네임스페이스 안에 들어있지 않은 경우를 검출합니다.\n서로 다른 번역 단위에서 링크될 필요가 없는 함수를 만드는 기본적인 방법은 이름이 없는 네임스페이스 내에 함수 정의를 배치하는 것입니다. 명시적으로 정적 함수로 선언하는 것은 더 이상 사용되지 않습니다.\n소스 파일 전용 함수를 선언할 때 static 키워드를 사용하는 대신 이름 없는 네임스페이스를 사용합니다.",
  "rule.saqt.c.ccpp.1361.example.0.dangerous": "라인 2: 소스 파일에서만 사용되는 비 멤버 함수를 정적 함수로 선언했습니다.",
  "rule.saqt.c.ccpp.1361.example.0.safe": "라인 3: 소스 파일에서만 사용되는 비 멤버 함수는 이름 없는 네임스페이스 안에 선언합니다.",
  "rule.saqt.c.ccpp.1361.name": "익명 네임스페이스 밖의 비 멤버 함수",
  "rule.saqt.c.ccpp.1362.description": "구조체 내 멤버 함수 체커는 구조체에 멤버 함수를 포함시키거나 멤버에 접근 제어자를 사용하는 경우를 검출합니다.\n구조체를 클래스처럼 다루는 것은 아무런 이점이 없습니다. 구조체는 일반적으로 POD 형식을 지정하는데 사용되어야 합니다. 구조체와 공용체의 멤버의 기본 접근 제어는 public이며 이를 그대로 유지하여 사용합니다.\n접근 제어자나 멤버 함수를 활용하고싶다면 구조체가 아닌 클래스로 선언해야 합니다.",
  "rule.saqt.c.ccpp.1362.example.0.dangerous": "라인 2: 구조체 선언 안에서 protected 접근 제어자를 사용했습니다.\n라인 3: 구조체 안에 멤버 함수를 선언했습니다.",
  "rule.saqt.c.ccpp.1362.example.0.safe": "라인 1: 구조체의 내부는 변수로만 구성하도록 합니다.",
  "rule.saqt.c.ccpp.1362.name": "구조체 내 멤버 함수",
  "rule.saqt.c.ccpp.1363.description": "열거형 타입과 정수 값 비교 체커는 열거형을 내부적인 정수 표현값을 사용하여 명시적으로 비교하는 경우를 검출합니다.\n열거형을 내부 표현 정수로 표현하는 것보다 열거형에 선언된 상징적인 이름을 사용하는 것이 문서화나 유지보수에 더 유리합니다. 열거형의 정수값에 의존한 코드를 작성할 경우 열거형 목록을 변경하려면 코드 전체를 고쳐야 합니다.\n열거형의 정수값에 의존하지 않고 각 열거형 항목과 비교하도록 합니다.",
  "rule.saqt.c.ccpp.1363.example.0.dangerous": "라인 4: 열거형을 정수값과 비교했습니다.",
  "rule.saqt.c.ccpp.1363.example.0.safe": "라인 4: 열거형을 정수값과 연관짓지 않도록 합니다.",
  "rule.saqt.c.ccpp.1363.name": "열거형 타입과 정수 값 비교",
  "rule.saqt.c.ccpp.1373.description": "상위 범위 변수 이름을 포함하는 하위 범위 변수 이름 체커는 하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하는 경우를 검출합니다.\n하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하지 않도록 작성합니다.",
  "rule.saqt.c.ccpp.1373.example.0.dangerous": "라인 3: 변수 이름 'currentNumber' 이 라인 1의 변수 이름 'Number'라는 문자열을 포함하고 있습니다.",
  "rule.saqt.c.ccpp.1373.example.0.safe": "라인 3: 하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하지 말아야 합니다.",
  "rule.saqt.c.ccpp.1373.name": "상위 범위 변수 이름을 포함하는 하위 범위 변수 이름",
  "rule.saqt.c.ccpp.1374.description": "변수 명명 규칙 위반(BSSC) 체커는 변수 이름이 BSSC 규칙을 위반하는 경우를 검출합니다.\nBSSC 변수 명명 규칙은 다음과 같습니다. 변수의 이름은 첫 번째 단어를 제외하고, 단어의 시작을 대문자로, 하나 혹은 그 이상의 단어로 구성해야 합니다.\nBSSC 변수 명명 규칙을 따라 변수의 이름은 첫 번째 단어를 제외하고, 단어의 시작을 대문자로, 하나 혹은 그 이상의 단어로 구성하도록 합니다.",
  "rule.saqt.c.ccpp.1374.example.0.dangerous": "라인 1: 변수 이름이 대문자로 시작합니다.",
  "rule.saqt.c.ccpp.1374.example.0.safe": "라인 1: 변수 이름이 대문자로 시작하지 않고, 하나 이상의 단어로 구성되도록 합니다.",
  "rule.saqt.c.ccpp.1374.name": "변수 명명 규칙 위반(BSSC)",
  "rule.saqt.c.ccpp.1375.description": "함수 명명 규칙 위반 체커는 함수의 이름이 BSSC 함수 명명 규칙을 위반하는 경우를 검출합니다.\nBSSC 함수 명명 규칙은 다음과 같습니다. 함수의 이름은 각 단어 시작을 대문자로 하고 , 하나 혹은 그 이상의 단어로 구성해야 합니다.\nBSSC 함수 명명 규칙을 따라 함수의 이름은 각 단어 시작을 대문자로 하고 , 하나 혹은 그 이상의 단어로 구성하도록 합니다.",
  "rule.saqt.c.ccpp.1375.example.0.dangerous": "라인 1: 함수 이름이 소문자로 시작합니다.",
  "rule.saqt.c.ccpp.1375.example.0.safe": "라인 1: 함수 첫글자를 대문자로 하고 하나 이상의 단어로 구성되도록 합니다.",
  "rule.saqt.c.ccpp.1375.name": "함수 명명 규칙 위반",
  "rule.saqt.c.ccpp.1376.description": "사용자 정의 타입 명명 규칙 위반 체커는 사용자 정의 타입 이름이 T로 시작하지 않거나, _t 혹은 _type으로 끝나지 않는 경우를 검출합니다.\n사용자 정의 타입 이름을 T로 시작하게 하거나, 끝이 _t 혹은 _type으로 끝나도록 작성합니다.",
  "rule.saqt.c.ccpp.1376.example.0.dangerous": "라인 1: 사용자 정의 타입 이름이 T로 시작하지 않고, _t 또는 _type으로 끝나지 않습니다.",
  "rule.saqt.c.ccpp.1376.example.0.safe": "라인 1: 사용자 정의 타입 이름을 _t로 끝나게 합니다.",
  "rule.saqt.c.ccpp.1376.name": "사용자 정의 타입 명명 규칙 위반",
  "rule.saqt.c.ccpp.1377.description": "클래스 명명 규칙 위반 체커는 클래스 이름이 C로 시작하지 않거나, 끝이 _c 혹은 _class로 끝나지 않는 경우를 검출합니다.\n클래스 이름을 C로 시작하게 하거나, 끝이 _c 혹은 _class로 끝나도록 작성합니다.",
  "rule.saqt.c.ccpp.1377.example.0.dangerous": "라인 1: 클래스 이름이 클래스 이름이 C로 시작하지 않고, 끝이 _c 혹은 _class로 끝나지 않습니다.",
  "rule.saqt.c.ccpp.1377.example.0.safe": "라인 1: 클래스 이름을 C로 시작하게 합니다.",
  "rule.saqt.c.ccpp.1377.name": "클래스 명명 규칙 위반",
  "rule.saqt.c.ccpp.1415.description": "이른 변수 정의 체커는 지역 변수를 사용 직전보다 이르게 선언하여 오랫동안 범위에 살아있게 되는 경우를 검출합니다.\n변수가 사용되기 직전까지 변수 정의를 연기하면 생성 및 소멸의 불필요한 비용을 아낄 수 있습니다. 또한 사용하는 변수가 선언된 위치를 찾는 데에도 도움을 줍니다.\n지역 변수를 최대한 사용 직전에 선언하여 활성 범위(live range)를 최소화합니다.",
  "rule.saqt.c.ccpp.1415.example.0.dangerous": "라인 6: x 변수의 정의를 연기할 수 있습니다. 다음에 입력한 if 구문의 블록 안에서만 해당 객체를 사용합니다.\n라인 16: 위의 if 구문 블록과 달리 switch, for, while, do-while 구문의 블록은 예외로 합니다. switch 블록의 안쪽에서는 변수 선언이 불가능하며, 반복문 내에서 변수를 정의하는 것은 많은 비용을 발생시킬 수 있습니다.",
  "rule.saqt.c.ccpp.1415.example.0.safe": "라인 8: 변수의 정의를 최대한 연기하도록 합니다.",
  "rule.saqt.c.ccpp.1415.name": "이른 변수 정의",
  "rule.saqt.c.ccpp.1418.description": "쓸모없는 형변환 체커는 이미 해당 타입인 값을 다시 그 타입으로 명시적 캐스팅하는 경우를 검출합니다.\n명시적 캐스팅은 어떤 식의 계산 결과값의 타입이 그 결과값을 사용할 부분에서 요구하는 타입과 정확히 일치하지 않을때, 타입 시스템에게 이것은 작성자가 의도한 타입 불일치이니 적절히 변환하여 해석하라고 알려주는 역할을 합니다. 이미 해당 식이 특정한 타입을 가지고 있다면 그 타입으로 다시 명시적으로 캐스팅하는 것은 아무 의미 없는 행동이며 코드를 이해하기 어렵게 만듭니다.\n불필요한 명시적 캐스팅을 삭제합니다.",
  "rule.saqt.c.ccpp.1418.example.0.dangerous": "라인 3: y의 값은 이미 int 타입이므로 int 타입으로의 명시적 캐스팅을 할 필요가 없습니다.",
  "rule.saqt.c.ccpp.1418.example.0.safe": "라인 3: 불필요한 명시적 캐스팅을 삭제합니다.",
  "rule.saqt.c.ccpp.1418.name": "쓸모없는 형변환",
  "rule.saqt.c.ccpp.1428.description": "부적절한 매크로 이름 체커는 매크로로 선언된 이름에 대문자 알파벳과 밑줄(_)이 아닌 문자가 포함된 경우를 검출합니다.\n매크로 이름에는 대문자와 밑줄(_)만을 사용합니다.",
  "rule.saqt.c.ccpp.1428.example.0.dangerous": "라인 2: 매크로 이름에 소문자가 포함되었습니다.",
  "rule.saqt.c.ccpp.1428.example.0.safe": "라인 2: 대문자 알파벳과 밑줄(_)만 사용하여 매크로 이름을 지었습니다.",
  "rule.saqt.c.ccpp.1428.name": "부적절한 매크로 이름",
  "rule.saqt.c.ccpp.1428.option.ignore_list.description": "분석 제외 매크로를 설정합니다.",
  "rule.saqt.c.ccpp.1428.option.ignore_list.name": "분석 제외 매크로",
  "rule.saqt.c.ccpp.1947.description": "누락된 sizeof 함수 호출 체커는 특정 함수 호출 시 특정 인자가 sizeof 연산자가 아닌 수식을 검출합니다.\n이때 특정 함수의 명칭과 인자의 인덱스는 옵션으로 입력할 수 있습니다.\n특정 함수 호출 시 특정 인자에는 반드시 sizeof 연산자를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.1947.example.0.dangerous": "라인 2: somecall() 함수에서 첫 번째 인자에 sizeof 연산자를 사용하지 않았습니다. 이것은 특정 함수를 somecall(), 특정 인자 인덱스를 첫 번째로 지정했다고 가정했을 경우입니다.",
  "rule.saqt.c.ccpp.1947.example.0.safe": "라인 2: 옵션에서 설정한 대로 함수의 첫 번째 인자에 sizeof 연산자를 사용합니다.",
  "rule.saqt.c.ccpp.1947.name": "누락된 sizeof 함수 호출",
  "rule.saqt.c.ccpp.1947.option.check_sizeof.description": "해당 파라미터 수식에 sizeof 가 있다면 sizeof() 가 있다고 판단해서 이슈를 발생하지 않습니다. 예) sizeof(int)*24",
  "rule.saqt.c.ccpp.1947.option.check_sizeof.name": "수식 내 sizeof 검사 여부",
  "rule.saqt.c.ccpp.1947.option.target_func.description": "대상 함수와 파라미터 인덱스를 적습니다. (파라미터 인덱스):(대상 함수 이름) 을 적습니다. 파라미터 인덱스는 1부터 시작합니다. 예:) 1:memcpy",
  "rule.saqt.c.ccpp.1947.option.target_func.name": "대상 함수와 파라미터 인덱스",
  "rule.saqt.c.ccpp.1948.description": "잘못된 필드 배열의 길이 체커는 특정 구조체의 특정 필드 길이가 지정한 길이보다 짧은 경우를 검출합니다.\n이때 특정 구조체와 필드의 명칭 및 길이는 옵션으로 입력할 수 있습니다. 해당 필드가 배열인 경우만 해당되며 할당하는 바이트 수가 아닌 원소의 개수를 셉니다.\n특정 구조체의 특정 필드 길이를 옵션에서 지정한 길이 이상으로 선언하도록 합니다.",
  "rule.saqt.c.ccpp.1948.example.0.dangerous": "라인 2: 특정 구조체의 특정 필드 이름의 길이가 256보다 작습니다. 이것은 특정 구조체를 key, 특정 필드 이름을 module, 길이를 256으로 지정했다고 가정했을 경우입니다.",
  "rule.saqt.c.ccpp.1948.example.0.safe": "라인 2: 옵션에서 설정한 대로 필드 길이를 충분히 길게 선언하도록 합니다.",
  "rule.saqt.c.ccpp.1948.name": "잘못된 필드 배열의 길이",
  "rule.saqt.c.ccpp.1948.option.targets.description": "검출한 구조체, 필드명, 원소 수를 설정합니다. (구조체 이름),(필드명),(원소 수) 형태로 정의되어야 하며 빈칸이 없어야 합니다.",
  "rule.saqt.c.ccpp.1948.option.targets.name": "검출할 대상 설정",
  "rule.saqt.c.ccpp.1949.description": "중복된 파라미터 체커는 특정 함수를 호출할 때 동일한 매개 변수 변수를 사용한 경우를 검출합니다.\n이때 특정 함수의 명칭은 옵션으로 입력할 수 있습니다. 특정 함수를 호출할 경우 동일한 매개 변수 값을 검사합니다. 일부 함수는 매개 변수로 동일한 변수를 다시 사용하는 것을 금지하고 있습니다.\n특정 함수 호출 시 동일한 변수를 연속하여 인자로 전달하지 않도록 합니다.",
  "rule.saqt.c.ccpp.1949.example.0.dangerous": "라인 2: 동일한 변수를 매개 변수로 사용하는 것을 금지하는 함수 test에 동일한 변수 p를 2,3 번째 매개 변수에 사용했습니다.",
  "rule.saqt.c.ccpp.1949.example.0.safe": "라인 2: 동일한 변수를 인자로 전달하지 않아야 합니다.",
  "rule.saqt.c.ccpp.1949.name": "중복된 파라미터",
  "rule.saqt.c.ccpp.1949.option.target_func.description": "검출 대상 함수를 설정합니다.",
  "rule.saqt.c.ccpp.1949.option.target_func.name": "검출 대상 함수",
  "rule.saqt.c.ccpp.2135.description": "주석 내 코드 체커는 주석 내에 소스 코드가 있는 경우를 검출합니다.\n주석 (//, /*...*/) 내에 소스 코드가 있는 경우를 찾습니다. 불필요한 코드는 주석처리가 아닌 삭제 할 것을 추천합니다.\n주석 내에 코드를 작성하지 않습니다.",
  "rule.saqt.c.ccpp.2135.example.0.dangerous": "라인 1: 주석 안에 소스 코드로 추정되는 문자열이 존재합니다.\n라인 27: 주석 안에 소스 코드로 추정되는 문자열이 존재합니다.",
  "rule.saqt.c.ccpp.2135.example.0.safe": "라인 3: 주석 안에 소스 코드로 추정되는 문자열을 제거합니다.",
  "rule.saqt.c.ccpp.2135.name": "주석 내 코드",
  "rule.saqt.c.ccpp.2393.description": "하나 이상의 정의 금지 체커는 모든 인라인이 아닌 함수 또는 객체가 하나 이상의 정의를 가지면 검출합니다.\nOne Definition Rule을 지키지 않는 경우 의도하지 않은 결과를 일으킬 수 있습니다.\n함수 또는 객체는 다만 하나의 정의만 가져야 합니다.",
  "rule.saqt.c.ccpp.2393.example.0.dangerous": "라인 15: 타입의 정의가 서로 다릅니다.\n라인 20: 타입의 정의가 서로 다릅니다.",
  "rule.saqt.c.ccpp.2393.example.0.safe": "라인 15: 타입의 정의가 서로 같습니다.\n라인 20: 타입의 정의가 서로 같습니다.",
  "rule.saqt.c.ccpp.2393.name": "하나 이상의 정의 금지",
  "rule.saqt.c.ccpp.258.description": "너무 많은 함수 호출 체커는 옵션에 지정된 함수 호출의 개수를 초과하여 함수 호출을 한 경우를 검출합니다.\n옵션에서 최대 함수 호출 개수를 설정할 수 있습니다.\n옵션에 지정된 최대 함수 호출 개수를 초과하지 않도록 합니다.",
  "rule.saqt.c.ccpp.258.example.0.dangerous": "라인 9: 기본적으로 하나의 함수 내에 허용하는 함수 종류의 수는 7개입니다. 7개를 초과할 경우에 검출됩니다.",
  "rule.saqt.c.ccpp.258.example.0.safe": "라인 8: 허용하는 함수의 호출 개수를 지킵니다.",
  "rule.saqt.c.ccpp.258.name": "너무 많은 함수 호출",
  "rule.saqt.c.ccpp.258.option.max_call_number.description": "함수당 허용하려는 함수 호출의 최대 개수를 적습니다.",
  "rule.saqt.c.ccpp.258.option.max_call_number.name": "함수당 함수호출의 최대 개수",
  "rule.saqt.c.ccpp.259.description": "goto 구문 사용 체커는 goto 구문이 정해진 제한을 어기고 사용되는 경우를 검출합니다.\n옵션에서 함수당 허용하는 goto 구문의 최대 개수 및 매크로 내 goto 구문 검출 여부를 설정할 수 있습니다.\ngoto 문을 사용하지 않습니다.",
  "rule.saqt.c.ccpp.259.example.0.dangerous": "라인 7: goto 문이 사용되어 L1으로 이동하게 되어 무한 반복을 하게 됩니다.",
  "rule.saqt.c.ccpp.259.example.0.safe": "라인 3: goto 문은 프로그램의 흐름을 복잡하게 만들어 가독성을 떨어뜨립니다. 따라서 사용하지 않는 것을 권장합니다.",
  "rule.saqt.c.ccpp.259.name": "goto 구문 사용",
  "rule.saqt.c.ccpp.259.option.ignore_macro.description": "매크로 내 goto 무시 여부",
  "rule.saqt.c.ccpp.259.option.ignore_macro.name": "옵션을 사용하는 경우, 매크로 내 goto 문을 무시합니다.",
  "rule.saqt.c.ccpp.259.option.max_goto_statement_number.description": "함수당 허용하려는 goto 문의 최대 개수를 입력합니다.",
  "rule.saqt.c.ccpp.259.option.max_goto_statement_number.name": "함수당 goto 문의 최대 개수",
  "rule.saqt.c.ccpp.260.description": "너무 많은 반환 구문 체커는 한 함수 안에서 옵션에 명시된 반환 구문 최대 수를 초과하여 반환 구문을 사용하는 경우를 검출합니다.\n옵션에서 최대 반환 구문 수를 설정할 수 있습니다.\n반환 구문을 허용한 횟수 만큼만 사용해야 합니다.",
  "rule.saqt.c.ccpp.260.example.0.dangerous": "라인 5: 반환 구문이 하나 이상 사용되었습니다.",
  "rule.saqt.c.ccpp.260.example.0.safe": "라인 8: 각 함수 당 하나의 반환 구문만 사용하도록 합니다.",
  "rule.saqt.c.ccpp.260.name": "너무 많은 반환 구문",
  "rule.saqt.c.ccpp.260.option.max_return_statement_number.description": "함수당 허용할 return문의 최대 개수를 적습니다.",
  "rule.saqt.c.ccpp.260.option.max_return_statement_number.name": "함수당 return 문 최대 개수",
  "rule.saqt.c.ccpp.263.description": "비 매크로 상수 체커는 매크로로 정의하지 않은 상수를 사용하는 코드를 검출합니다.\n단, 시스템 API 혹은 프레임워크 API의 반환값을 확인하기 위해 매크로로 정의하지 않은 상수를 사용할 수 있습니다. 옵션에서 공용 헤더 파일 경로 및 허용하는 함수를 설정할 수 있습니다.\n가독성을 높이기 위해서 상수를 매크로로 정의하는 것이 좋습니다.",
  "rule.saqt.c.ccpp.263.example.0.dangerous": "라인 2: 일반 상수가 그대로 사용되었으므로 검출됩니다.",
  "rule.saqt.c.ccpp.263.example.0.safe": "라인 3: 상수를 매크로로 정의하도록 합니다.",
  "rule.saqt.c.ccpp.263.name": "비 매크로 상수",
  "rule.saqt.c.ccpp.263.option.allowed_function.description": "표준 함수 및 프레임워크 함수를 작성합니다. <br /> 이 함수들의 리턴 값은 매크로로 정의되지 않은 상수와 비교할 수 있습니다. <br /> 값이 입력되지 않은 경우 모든 함수 리턴 값 비교에 사용되는 상수를 무시합니다. <br />예시) strcmp",
  "rule.saqt.c.ccpp.263.option.allowed_function.name": "시스템 API 혹은 프레임워크 API",
  "rule.saqt.c.ccpp.263.option.common_header_path.description": "공용 헤더 파일 경로를 작성합니다.<br />값이 입력되지 않을 경우 매크로가 정의된 위치는 고려하지 않습니다.<br /> 예시) c:projectinclude",
  "rule.saqt.c.ccpp.263.option.common_header_path.name": "공용 헤더 파일 경로",
  "rule.saqt.c.ccpp.266.description": "반복문 조건 내 상수 체커는 반복문 제어부에 상수를 사용하는 코드를 검출합니다.\n옵션에서 검사 항목에 제외할 값을 설정할 수 있습니다.\n반복문 제어부에 상수를 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.266.example.0.dangerous": "라인 2: while 문의 조건식에 상수를 사용했습니다.",
  "rule.saqt.c.ccpp.266.example.0.safe": "라인 2: 조건식에 상수가 아닌 조건식을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.266.name": "반복문 조건 내 상수",
  "rule.saqt.c.ccpp.266.option.ignored_value.description": "검사항목에서 제외할 값을 기록합니다.",
  "rule.saqt.c.ccpp.266.option.ignored_value.name": "검사항목에서 제외할 값",
  "rule.saqt.c.ccpp.267.description": "함수 중간에 존재하는 변수 선언 체커는 함수의 앞부분이 아닌 중간에 일부 변수를 선언하거나 초기화하는 코드를 검출합니다.\n옵션에서 초기화 여부 검사 유무, 검사를 무시할 함수 및 변수 이름을 설정할 수 있습니다.\n함수 초반부에 함수에서 사용하는 변수를 선언하고 초기화해야 합니다.",
  "rule.saqt.c.ccpp.267.example.0.dangerous": "라인 3: if 문에서 변수를 선언했습니다. 함수의 초반부에 변수를 선언해야 합니다.",
  "rule.saqt.c.ccpp.267.example.0.safe": "라인 2: 함수의 시작 부분에서 변수를 선언하고 초기화해야 합니다.",
  "rule.saqt.c.ccpp.267.name": "함수 중간에 존재하는 변수 선언",
  "rule.saqt.c.ccpp.267.option.ignored_function_name.description": "변수 최초 선언보다 앞서 실행 할 수 있는 함수들의 목록을 작성합니다. <br /> 예시) ulog.*",
  "rule.saqt.c.ccpp.267.option.ignored_function_name.name": "예외 함수 목록",
  "rule.saqt.c.ccpp.267.option.ignored_variable_name.description": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "rule.saqt.c.ccpp.267.option.ignored_variable_name.name": "검사 대상에서 제외할 변수 이름",
  "rule.saqt.c.ccpp.267.option.skip_array_check.description": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.267.option.skip_array_check.name": "array의 초기화 검사 여부",
  "rule.saqt.c.ccpp.271.description": "너무 많은 연속 if 구문 체커는 If 구문을 연속적으로 사용하는 코드를 검출합니다.\n옵션에서 최대 if 문 연속 사용 수를 설정할 수 있습니다.\nif 문을 연속적으로 사용하지 않고 다른 조건문을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.271.example.0.dangerous": "라인 12: 해당 오류는 동일한 변수와 상수를 비교하는 if 문을 연속적으로 3번 이상 작성하는 경우에 발생합니다.",
  "rule.saqt.c.ccpp.271.example.0.safe": "라인 3: if 문을 다수 사용해야 하는 경우 switch-case 문을 사용합니다.",
  "rule.saqt.c.ccpp.271.name": "너무 많은 연속 if 구문",
  "rule.saqt.c.ccpp.271.option.max_number_of_ifs.description": "함수당 허용 가능한 if 문의 최대 개수를 적습니다.",
  "rule.saqt.c.ccpp.271.option.max_number_of_ifs.name": "함수당 if 문의 개수",
  "rule.saqt.c.ccpp.273.description": "enum 내 상수에 지정된 접두사 미사용 체커는 enum 내에서 선언된 상수들에 지정한 접두사가 없는 경우를 검출합니다.\n지정된 접두사의 정규식은 ([^_]+)_.+입니다.\nenum 내 상수들에 지정된 접두사를 사용합니다.",
  "rule.saqt.c.ccpp.273.example.0.dangerous": "라인 2: 상수 'A', 'B', 'C' 앞에 접두사가 없습니다. 접두사 'L1_'을 설정했을 경우 항상 적용해야 합니다.",
  "rule.saqt.c.ccpp.273.example.0.safe": "라인 2: 설정한 접두사를 enum 상수 앞에 붙여 넣습니다.",
  "rule.saqt.c.ccpp.273.name": "enum 내 상수에 지정된 접두사 미사용",
  "rule.saqt.c.ccpp.275.description": "헝가리안 표기법 위반 체커는 헝가리안 명명법을 사용하지 않은 식별자를 검출합니다.\n옵션에서 헝가리안 표기법에 사용할 접두사의 목록을 설정할 수 있습니다.\n헝가리안 명명법을 준수합니다.",
  "rule.saqt.c.ccpp.275.example.0.dangerous": "라인 2: 'p', 'i', 'n' 등을 접두사로 지정하여 표기하는 헝가리언 표기법을 지키지 않았을 경우를 검출합니다.",
  "rule.saqt.c.ccpp.275.example.0.safe": "라인 2: 지정한 접두사를 사용하여 변수를 선언합니다.",
  "rule.saqt.c.ccpp.275.name": "헝가리안 표기법 위반",
  "rule.saqt.c.ccpp.275.option.prefix.description": "헝가리안 표기법에서 사용할 접두사의 목록을 적습니다.",
  "rule.saqt.c.ccpp.275.option.prefix.name": "헝가리안 표기법의 접두사 목록",
  "rule.saqt.c.ccpp.276.description": "누락된 변수의 초기화 체커는 변수를 선언할 때 초기화 구문을 기술하지 않은 경우를 검출합니다.\n변수 선언 시 초기화 구문을 사용합니다.",
  "rule.saqt.c.ccpp.276.example.0.dangerous": "라인 2: 변수 var을 선언 후 초기화시키지 않았습니다.",
  "rule.saqt.c.ccpp.276.example.0.safe": "라인 2: 변수 선언 시 초기화를 시켜줍니다.",
  "rule.saqt.c.ccpp.276.name": "누락된 변수의 초기화",
  "rule.saqt.c.ccpp.276.option.check_global.description": "선택할 경우 전역 변수를 검사합니다.",
  "rule.saqt.c.ccpp.276.option.check_global.name": "전역 변수 확인 여부",
  "rule.saqt.c.ccpp.276.option.check_local.description": "선택할 경우 지역 변수를 검사합니다.",
  "rule.saqt.c.ccpp.276.option.check_local.name": "지역 변수 확인 여부",
  "rule.saqt.c.ccpp.276.option.check_only_ptr.description": "포인트 초기화 여부만 검사합니다.",
  "rule.saqt.c.ccpp.276.option.check_only_ptr.name": "포인트 초기화 여부만 검사",
  "rule.saqt.c.ccpp.276.option.ignore_name.description": "해당 변수는 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.276.option.ignore_name.name": "무시할 변수 이름",
  "rule.saqt.c.ccpp.277.description": "매크로 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 매크로 이름을 검출합니다.\n옵션에서 허용할 매크로 이름의 표현식을 설정할 수 있습니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.ccpp.277.example.0.dangerous": "라인 1: 매크로 이름이 옵션에 정의한 매크로 이름 표현식을 위반한 경우를 검출합니다.\n라인 2: 밑줄(_)로 시작한 매크로 이름을 검출합니다.",
  "rule.saqt.c.ccpp.277.example.0.safe": "라인 1: 정의한 매크로 이름 표현식에 적합한 매크로명을 작성합니다.\n라인 2: 정의한 매크로 이름 표현식에 적합한 매크로명을 작성합니다.",
  "rule.saqt.c.ccpp.277.name": "매크로 명명 규칙 위반",
  "rule.saqt.c.ccpp.277.option.macro_naming_expr.description": "허용할 매크로 이름의 표현식을 작성합니다.<br />예시) [A-Z]+(_[A-Z]+)*",
  "rule.saqt.c.ccpp.277.option.macro_naming_expr.name": "매크로 이름 표현식",
  "rule.saqt.c.ccpp.278.description": "상수 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 상수 이름을 검출합니다.\n옵션에서 허용할 상수 이름의 표현식과 매개 변수로 정의된 상수에 대한 검출 여부를 설정할 수 있습니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.ccpp.278.example.0.dangerous": "라인 1: 상수 이름이 정의한 상수 이름 표현식을 위한 경우를 검출합니다. 예를 들어 상수 변수 이름을 대문자로만 작성해야 한다면 위의 예제를 검출합니다.",
  "rule.saqt.c.ccpp.278.example.0.safe": "라인 1: 정의한 상수 이름 표현식에 적합한 상수 변수명을 작성합니다.",
  "rule.saqt.c.ccpp.278.name": "상수 명명 규칙 위반",
  "rule.saqt.c.ccpp.278.option.const_name_expr.description": "허용할 상수 이름의 표현식을 작성합니다.<br />예시) [A-Z][A-Z_]*",
  "rule.saqt.c.ccpp.278.option.const_name_expr.name": "상수 이름 표현식",
  "rule.saqt.c.ccpp.278.option.exclude_param.description": "선택할 경우 파라미터로 정의된 상수에 대해서는 이슈를 검출하지 않습니다.",
  "rule.saqt.c.ccpp.278.option.exclude_param.name": "파라미터 제외 여부",
  "rule.saqt.c.ccpp.2783.description": "개별 라인을 가지지 않은 중괄호 형식 체커는 조건문이나 반복문의 중괄호가 각각 한 라인을 가지지 않은 경우를 검출합니다.\n조건문이나 반복문의 중괄호가 각각 한 라인을 가지도록 소스 코드를 작성합니다.",
  "rule.saqt.c.ccpp.2783.example.0.dangerous": "라인 15: if 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 16: if 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 28: else 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 31: if 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 35: while 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 46: for 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.",
  "rule.saqt.c.ccpp.2783.example.0.safe": "라인 1: 조건문과 반복문의 중괄호들이 각각 한 라인을 가지도록 합니다.",
  "rule.saqt.c.ccpp.2783.name": "개별 라인을 가지지 않은 중괄호 형식",
  "rule.saqt.c.ccpp.279.description": "중복된 이름 체커는 상호간에 이름이 중복된 함수 및 변수, 필드를 선언한 경우를 검출합니다.\n함수 및 변수, 필드 선언 시 중복된 이름을 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.279.example.0.dangerous": "라인 1: name() 함수를 선언했습니다.\n라인 2: 변수의 이름을 name으로 선언했습니다. 함수 이름과 중복됩니다.",
  "rule.saqt.c.ccpp.279.example.0.safe": "라인 1: getName() 함수로 이름을 변경합니다. 라인 2의 변수 이름과 중복되지 않습니다.",
  "rule.saqt.c.ccpp.279.name": "중복된 이름",
  "rule.saqt.c.ccpp.279.option.check_function.description": "선택할 경우 함수 이름의 중복 여부를 확인합니다.",
  "rule.saqt.c.ccpp.279.option.check_function.name": "함수 이름 확인",
  "rule.saqt.c.ccpp.279.option.check_macro.description": "선택할 경우 소스 전체에서 매크로 이름과 중복 여부를 검사합니다.",
  "rule.saqt.c.ccpp.279.option.check_macro.name": "매크로 이름 확인",
  "rule.saqt.c.ccpp.279.option.check_same_type.description": "선택할 경우, 동일 유형 간 중복 여부를 검사합니다. 선택하지 않을 경우, 경우 다른 유형 간 중복 여부만 검사합니다.",
  "rule.saqt.c.ccpp.279.option.check_same_type.name": "동일 유형 내 중복 확인",
  "rule.saqt.c.ccpp.279.option.check_variable.description": "옵션을 사용하는 경우, 변수 이름의 중복 여부를 확인합니다.",
  "rule.saqt.c.ccpp.279.option.check_variable.name": "변수 이름 확인",
  "rule.saqt.c.ccpp.280.description": "전역 변수 명명 규칙 위반 체커는 사전에 정의된 전역 변수 접두사를 사용하지 않은 전역 변수 선언을 검출합니다.\n사전에 정의된 접두사는 옵션으로 입력할 수 있습니다.\n전역 변수의 이름은 사전에 정의된 전역 변수 접두사를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.280.example.0.dangerous": "라인 1: 변수 이름을 Name으로 선언했습니다. 사전에 정의된 전역 변수 접두사를 item이라고 했을 경우, 이 이름은 잘못된 이름입니다.",
  "rule.saqt.c.ccpp.280.example.0.safe": "라인 1: 사전에 정의된 전역 변수 접두사를 사용합니다.",
  "rule.saqt.c.ccpp.280.name": "전역 변수 명명 규칙 위반",
  "rule.saqt.c.ccpp.280.option.global_variable_name_expression.description": "전역 변수 이름 형식을 작성합니다.<br/>예시) g[A-Za-z]+",
  "rule.saqt.c.ccpp.280.option.global_variable_name_expression.name": "전역 변수 이름",
  "rule.saqt.c.ccpp.280.option.ignore_var_list.description": "제외할 변수 이름을 설정합니다.",
  "rule.saqt.c.ccpp.280.option.ignore_var_list.name": "제외할 변수 이름",
  "rule.saqt.c.ccpp.281.description": "너무 긴 이름 체커는 지정한 길이를 초과한 함수 및 변수, 필드 선언을 검출합니다.\n지정한 길이는 옵션으로 입력할 수 있습니다.\n함수 및 변수, 필드 선언 시 너무 긴 이름을 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.281.example.0.dangerous": "라인 1: 이름이 너무 긴 변수를 선언했습니다.\n라인 3: 이름이 너무 긴 필드를 선언했습니다.\n라인 5: 이름이 너무 긴 함수를 선언했습니다.",
  "rule.saqt.c.ccpp.281.example.0.safe": "라인 1: 지정한 길이를 초과하지 않는 변수를 선언합니다.\n라인 3: 지정한 길이를 초과하지 않는 필드를 선언합니다.\n라인 5: 지정한 길이를 초과하지 않는 함수를 선언합니다.",
  "rule.saqt.c.ccpp.281.name": "너무 긴 이름",
  "rule.saqt.c.ccpp.281.option.max_field_name_length.description": "허용할 필드 이름의 최대 길이를 작성합니다.<br />예시) 20",
  "rule.saqt.c.ccpp.281.option.max_field_name_length.name": "최대 필드 이름 길이",
  "rule.saqt.c.ccpp.281.option.max_func_name_length.description": "허용할 함수 이름의 최대 길이를 작성합니다.<br />예시) 20",
  "rule.saqt.c.ccpp.281.option.max_func_name_length.name": "최대 함수 이름 길이",
  "rule.saqt.c.ccpp.281.option.max_var_name_length.description": "허용할 변수 이름의 최대 길이를 작성합니다.<br />예시) 20",
  "rule.saqt.c.ccpp.281.option.max_var_name_length.name": "최대 변수 이름 길이",
  "rule.saqt.c.ccpp.282.description": "누락된 명시적 배열 크기 체커는 크기를 명시하지 않고 배열 변수를 선언하는 경우를 검출합니다.\n세부 검출 대상은 옵션에 지정할 수 있습니다.\n배열 변수를 선언하는 경우 크기를 명시하도록 합니다.",
  "rule.saqt.c.ccpp.282.example.0.dangerous": "라인 1: 외부 변수인 array1 변수의 크기를 명시하지 않고 선언했습니다.\n라인 2: array2 변수의 크기를 명시하지 않고 선언했습니다.",
  "rule.saqt.c.ccpp.282.example.0.safe": "라인 2: 배열 변수의 크기를 명확히 선언합니다.",
  "rule.saqt.c.ccpp.282.name": "누락된 명시적 배열 크기",
  "rule.saqt.c.ccpp.282.option.check_extern_only.description": "옵션을 사용하는 경우, extern으로 선언된 배열에 대해서만 분석합니다.",
  "rule.saqt.c.ccpp.282.option.check_extern_only.name": "extern 배열만 검출 여부",
  "rule.saqt.c.ccpp.282.option.check_initializer.description": "옵션을 사용하는 경우, 빈 배열이어도 초기화 구문이 있으면 결함으로 검출하지 않습니다.",
  "rule.saqt.c.ccpp.282.option.check_initializer.name": "초기화 구문이 있으면 무시",
  "rule.saqt.c.ccpp.282.option.include_char_type.description": "옵션을 사용하는 경우, char 형으로 선언된 배열도 분석에 포함시킵니다.",
  "rule.saqt.c.ccpp.282.option.include_char_type.name": "char 형 포함 여부",
  "rule.saqt.c.ccpp.283.description": "블록 주석 형식 위반 체커는 블록 주석의 시작과 끝이 지정한 문자가 아닌 경우를 검출합니다.\n지정한 문자는 옵션으로 입력할 수 있습니다.\n블록 주석의 시작과 끝은 반드시 지정한 문자를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.283.example.0.dangerous": "라인 1: 블록 주석을 /** 로 시작했습니다. 사전에 정의된 블록 주석 시작을 /* 라고 가정했을 경우, 이 시작 문자열는 잘못된 문자열입니다.\n라인 3: 블록 주석을 **/ 로 끝냈습니다. 사전에 정의된 블록 주석 끝을 */ 라고 가정했을 경우, 이 끝 문자열는 잘못된 문자열입니다.",
  "rule.saqt.c.ccpp.283.example.0.safe": "라인 1: 블록 주석의 시작은 지정한 문자열을 사용합니다.\n라인 3: 블록 주석의 끝은 지정한 문자열을 사용합니다.",
  "rule.saqt.c.ccpp.283.name": "블록 주석 형식 위반",
  "rule.saqt.c.ccpp.283.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.ccpp.283.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.ccpp.283.option.end_comment.description": "주석 종료 문자를 정의합니다.<br />예시) */",
  "rule.saqt.c.ccpp.283.option.end_comment.name": "블록 종료 문자",
  "rule.saqt.c.ccpp.283.option.start_comment.description": "주석 시작 문자를 정의합니다.<br />예시) /*",
  "rule.saqt.c.ccpp.283.option.start_comment.name": "블록 시작 문자",
  "rule.saqt.c.ccpp.284.description": "너무 긴 주석 전 소스 코드 체커는 주석이 시작하기 전 소스 코드의 길이가 지정한 길이를 초과할 경우를 검출합니다.\n지정한 길이 및 세부 조건은 옵션으로 입력할 수 있습니다.\n주석이 시작하기 전 소스 코드의 길이가 지정한 길이를 넘지 않도록 합니다.",
  "rule.saqt.c.ccpp.284.example.0.dangerous": "라인 4: 주석을 작성했습니다. 이 주석을 작성하기 전 소스 코드의 길이가 지정한 길이를 넘는 것은 잘못된 사용 방법입니다.",
  "rule.saqt.c.ccpp.284.example.0.safe": "라인 2: 주석을 작성하기 전 소스 코드의 길이가 지정한 길이를 넘지 않도록 해야 합니다.",
  "rule.saqt.c.ccpp.284.name": "너무 긴 주석 전 소스 코드",
  "rule.saqt.c.ccpp.284.option.allowed_max_line_length.description": "한 라인에 허용할 최대 소스 코드 길이를 입력합니다.<br />예시) 40",
  "rule.saqt.c.ccpp.284.option.allowed_max_line_length.name": "최대 소스 코드 길이",
  "rule.saqt.c.ccpp.284.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.ccpp.284.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.ccpp.285.description": "누락된 주석 앞 빈 줄 체커는 주석이 시작하기 전 소스 코드와 주석 사이에 빈 줄이 없는 경우를 검출합니다.\n주석이 시작하기 전 소스 코드와 주석 사이에 빈 줄을 삽입해야 합니다.",
  "rule.saqt.c.ccpp.285.example.0.dangerous": "라인 3: 주석의 이전 줄에 빈 줄을 넣지 않았습니다.",
  "rule.saqt.c.ccpp.285.example.0.safe": "라인 4: 주석이 시작하기 전에 빈 줄을 삽입합니다.",
  "rule.saqt.c.ccpp.285.name": "누락된 주석 앞 빈 줄",
  "rule.saqt.c.ccpp.285.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.ccpp.285.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.ccpp.286.description": "주석 들여쓰기 규칙 위반 체커는 주석의 시작열과 설명 대상 줄의 시작열이 다른 경우를 검출합니다.\n세부 조건은 옵션으로 입력할 수 있습니다.\n항상 주석의 시작열과 설명 대상 줄의 시작열을 동일하게 작성해야 합니다.",
  "rule.saqt.c.ccpp.286.example.0.dangerous": "라인 1: 주석의 시작열이 1열에서 시작했습니다.\n라인 2: 설명 대상 시작열이 3열에서 시작 했습니다. 시작열과 위치가 다릅니다.",
  "rule.saqt.c.ccpp.286.example.0.safe": "라인 2: 설명 대상 시작열을 주석의 시작열과 동일하게 맞춥니다.",
  "rule.saqt.c.ccpp.286.name": "주석 들여쓰기 규칙 위반",
  "rule.saqt.c.ccpp.286.option.check_general_comment.description": "체크 할 경우 일반 주석들의 들여쓰기를 검사합니다.",
  "rule.saqt.c.ccpp.286.option.check_general_comment.name": "일반 주석 들여쓰기 검사 여부",
  "rule.saqt.c.ccpp.286.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.ccpp.286.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.ccpp.286.option.check_voting_column.description": "다수의 들여쓰기를 선택하여 숫자가 적은 들여쓰기 그룹을 검출하게 됩니다.",
  "rule.saqt.c.ccpp.286.option.check_voting_column.name": "다수 들여쓰기 선택",
  "rule.saqt.c.ccpp.286.option.tab_size.description": "탭에 해당하는 공백의 개수를 설정합니다.",
  "rule.saqt.c.ccpp.286.option.tab_size.name": "탭 크기",
  "rule.saqt.c.ccpp.2984.description": "잘못된 열거자 연산 체커는 산술 연산자의 피연산자로 열거자를 사용하는 코드를 검출합니다.\n열거자는 비교 연산자에서만 사용하도록 합니다. 열거자를 계산에 사용하는 +, -와 같은 산술 연산자의 피연산자로 사용하면 안됩니다.\n열거자를 계산에 사용하는 산술 연산자의 피연산자로 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.2984.example.0.dangerous": "라인 3: 열거자를 계산에 사용했습니다.",
  "rule.saqt.c.ccpp.2984.example.0.safe": "라인 5: 열거자 대신 열거자의 값이 저장된 변수를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.2984.name": "잘못된 열거자 연산",
  "rule.saqt.c.ccpp.2985.description": "typedef로 부호 없는 숫자 타입 선언 체커는 typedef 선언 시 부호를 명시하지 않은 숫자 타입을 선언하는 코드를 검출합니다.\nchar, short, int, long, long long 타입을 대상으로 검사합니다.\ntypedef로 char, short, int, long, long long 타입을 선언할 때 singed 혹은 unsinged를 명시해야 합니다.",
  "rule.saqt.c.ccpp.2985.example.0.dangerous": "라인 1: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.\n라인 2: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.\n라인 3: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.\n라인 4: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.\n라인 5: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.",
  "rule.saqt.c.ccpp.2985.example.0.safe": "라인 1: typedef 선언에서 signed를 명시했습니다.\n라인 2: typedef 선언에서 signed를 명시했습니다.\n라인 3: typedef 선언에서 unsigned를 명시했습니다.\n라인 4: typedef 선언에서 unsigned를 명시했습니다.\n라인 5: typedef 선언에서 unsigned를 명시했습니다.",
  "rule.saqt.c.ccpp.2985.name": "typedef로 부호 없는 숫자 타입 선언",
  "rule.saqt.c.ccpp.2995.description": "잘못된 매크로의 이름 길이 체커는 매크로의 이름 길이가 63자를 넘어가는 코드를 검출합니다.\nMisra C 2012에서 5.4 룰에 의하면 C99 기준 매크로의 이름의 길이를 63자까지로 제한하고 있습니다.\n매크로 이름의 길이가 63자가 넘지 않도록 합니다.",
  "rule.saqt.c.ccpp.2995.example.0.dangerous": "라인 2: 매크로 이름의 길이가 79입니다.",
  "rule.saqt.c.ccpp.2995.example.0.safe": "라인 2: 매크로 이름의 길이가 63을 넘지 않도록 합니다.",
  "rule.saqt.c.ccpp.2995.name": "잘못된 매크로의 이름 길이",
  "rule.saqt.c.ccpp.2997.description": "매크로와 중복된 이름 체커는 매크로 이름과 동일한 식별자를 사용하는 변수나 함수를 검출합니다.\n소스 코드의 가독성과 개발자의 혼란을 줄이기 위해 매크로의 이름과 동일한 변수나 함수 이름을 사용하지 않도록 합니다.\n매크로의 이름과 동일한 식별자를 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.2997.example.0.dangerous": "라인 3: 변수 이름이 라인1에 있는 매크로의 이름과 같습니다.",
  "rule.saqt.c.ccpp.2997.example.0.safe": "라인 3: 변수 이름이 매크로 이름과 같지 않도록 변경합니다.",
  "rule.saqt.c.ccpp.2997.name": "매크로와 중복된 이름",
  "rule.saqt.c.ccpp.2999.description": "default 절로 시작하거나 끝나지 않은 switch 구문 체커는 switch 구문의 시작 혹은 마지막 절이 default 절이 아닌 경우를 검출합니다.\nswitch 구문이 default 절로 시작하거나 끝나도록 코드를 작성합니다.",
  "rule.saqt.c.ccpp.2999.example.0.dangerous": "라인 2: switch 구문에 default 절이 포함되지 않았습니다.",
  "rule.saqt.c.ccpp.2999.example.0.safe": "라인 3: switch 구문의 시작에 default 절을 추가합니다.\n라인 16: switch 구문의 마지막에 default 절을 추가합니다.",
  "rule.saqt.c.ccpp.2999.name": "default 절로 시작하거나 끝나지 않은 switch 구문",
  "rule.saqt.c.ccpp.300.description": "문자 배열의 잘못된 초기화 체커는 char 배열을 문자열로 초기화할 때 배열의 크기가 문자열 길이 + 1보다 작은 선언을 검출합니다.\n문자열의 길이를 다룰 때는 항상 널 바이트를 고려해야 합니다. 배열의 크기를 문자열의 크기에 맞게 선언을 한다면 널 바이트가 제거됩니다. 이는 프로그램이 예상하지 못한 행동 또는 잠재적인 취약점으로 남습니다.\n배열의 크기는 항상 초기화 구문보다 작지 않도록 선언해야 합니다. 문자열 초기화에서는 명시적인 배열의 크기를 작성하지 않으면 필요한 크기만큼 배열을 선언해줍니다. 알맞은 배열 크기를 계산하기 어려울 경우 이 방법을 사용하는 것이 유용합니다.",
  "rule.saqt.c.ccpp.300.example.0.dangerous": "라인 2: str 배열을 크기를 고정하여 문자열로 초기화했습니다. 널 바이트가 들어갈 공간이 없어 문제가 발생합니다.",
  "rule.saqt.c.ccpp.300.example.0.safe": "라인 2: 배열을 초기화할 때 고정된 상수값을 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.300.name": "문자 배열의 잘못된 초기화",
  "rule.saqt.c.ccpp.3000.description": "case 문에서 break 구문 누락 체커는 break 구문으로 끝나지 않는 case 문을 검출합니다.\nbreak 대신에 return, continue, goto 문을 사용하는 것도 허용됩니다. default 문도 break를 사용해야 합니다.\nswitch 문에서 break 문이 누락된 경우 프로그래머가 의도하지 않는 케이스를 실행하게 되어 예상하지 않은 동작이나 오류가 발생할 수 있습니다.\ncase 문에는 break, return, continue, goto 문 중 하나가 포함되어야 합니다. default 문도 break를 사용해야 합니다.",
  "rule.saqt.c.ccpp.3000.example.0.dangerous": "라인 6: case 문에서 break 문을 누락했으므로 뒤에 있는 case 문을 실행했습니다. 따라서 변수 a가 2인 경우 case 2와 case 3을 실행합니다.",
  "rule.saqt.c.ccpp.3000.example.0.safe": "라인 6: 실행 흐름을 고려하여 case 문에 break 문을 추가합니다.",
  "rule.saqt.c.ccpp.3000.name": "case 문에서 break 구문 누락",
  "rule.saqt.c.ccpp.3001.description": "switch 구문에 case 절 누락 체커는 switch 구문 내부에서 두 개 이상의 case 절이 없는 경우를 검출합니다.\ndefault도 case 절로 간주합니다. 빈 case 절 혹은 default는 포함되지 않습니다. 즉, 빈 case 절 하나와 default 하나가 있는 경우에는 검출됩니다.\nswitch 구문이 반드시 최소 두 개의 case 절을 가지도록 코드를 작성합니다.",
  "rule.saqt.c.ccpp.3001.example.0.dangerous": "라인 2: 유효한 case 문이 하나만 있습니다.\n라인 3: case 문이 비어 있습니다. 유효한 case 문이 아닙니다.",
  "rule.saqt.c.ccpp.3001.example.0.safe": "라인 2: switch 구문이 최소 두 개의 유효한 case 절을 가지도록 코드를 작성합니다.",
  "rule.saqt.c.ccpp.3001.name": "switch 구문에 case 절 누락",
  "rule.saqt.c.ccpp.3006.description": "extern으로 선언된 빈 배열의 크기 미지정 체커는 extern으로 선언된 배열 변수의 크기를 명시하지 않는 코드를 검출합니다.\n세부 검출 대상은 옵션에 지정할 수 있습니다.\n배열 변수를 선언하는 경우 크기를 명시하도록 합니다.",
  "rule.saqt.c.ccpp.3006.example.0.dangerous": "라인 1: 외부 변수인 array1 변수의 크기를 명시하지 않고 선언했습니다.",
  "rule.saqt.c.ccpp.3006.example.0.safe": "라인 2: 배열 변수의 크기를 명확히 선언합니다.",
  "rule.saqt.c.ccpp.3006.name": "extern으로 선언된 빈 배열의 크기 미지정",
  "rule.saqt.c.ccpp.3006.option.check_initializer.description": "옵션을 사용하는 경우, 빈 배열이어도 초기화 구문이 있으면 결함으로 검출하지 않습니다.",
  "rule.saqt.c.ccpp.3006.option.check_initializer.name": "초기화 구문이 있으면 무시",
  "rule.saqt.c.ccpp.3006.option.include_char_type.description": "옵션을 사용하는 경우, char 형으로 선언된 배열도 분석에 포함시킵니다.",
  "rule.saqt.c.ccpp.3006.option.include_char_type.name": "char 형 포함 여부",
  "rule.saqt.c.ccpp.3007.description": "if-else 문에서 else 누락 체커는 else 절로 끝나지 않는 if-else 구문을 검출합니다.\nif-else 조건문은 else 절로 끝나야 합니다.\nif-else 조건문에는 else 가 있어야 합니다.",
  "rule.saqt.c.ccpp.3007.example.0.dangerous": "라인 3: if 문에서 fp가 널이 아닐 경우에 해당 작업을 수행하지만 널 일 경우 예외 처리해 주는 else 문이 빠져 있습니다.",
  "rule.saqt.c.ccpp.3007.example.0.safe": "라인 5: else 문으로 적절한 예외 처리를 해줘야 합니다.",
  "rule.saqt.c.ccpp.3007.name": "if-else 문에서 else 누락",
  "rule.saqt.c.ccpp.3008.description": "잘못된 전역 변수의 이름 길이(Misra2012) 체커는 static 혹은 extern으로 선언된 전역 변수의 식별자 길이가 63을 넘는 코드를 검출합니다.\nMisra C 2012에서 5.2 룰에 의하면 C99 기준 전역 변수의 식별자 길이가 63자를 넘어가면 안됩니다.\nstatic 혹은 extern으로 선언된 전역 변수의 식별자 길이가 63자가 넘지 않도록 합니다.",
  "rule.saqt.c.ccpp.3008.example.0.dangerous": "라인 1: extern 전역 변수의 식별자 길이가 63를 넘었습니다.\n라인 2: static 전역 변수의 식별자 길이가 63를 넘었습니다.",
  "rule.saqt.c.ccpp.3008.example.0.safe": "라인 1: extern 전역 변수의 식별자 길이가 63를 넘지 않도록 합니다.\n라인 2: static 전역 변수의 식별자 길이가 63를 넘지 않도록 합니다.",
  "rule.saqt.c.ccpp.3008.name": "잘못된 전역 변수의 이름 길이(Misra2012)",
  "rule.saqt.c.ccpp.301.description": "부적절한 sizeof 인자의 연산자 체커는 sizeof의 인자가 수식인 경우를 검출합니다.\nsizeof의 인자에 수식을 사용하지 않도록 합니다.",
  "rule.saqt.c.ccpp.301.example.0.dangerous": "라인 3: sizeof의 인자에 수식을 사용했습니다.",
  "rule.saqt.c.ccpp.301.example.0.safe": "라인 3: sizeof의 인자에 수식을 사용하지 않습니다.",
  "rule.saqt.c.ccpp.301.name": "부적절한 sizeof 인자의 연산자",
  "rule.saqt.c.ccpp.302.description": "포인터 변수 명명 규칙 위반 체커는 사전에 정의된 이름 형식을 사용하지 않은 포인터 변수 선언을 검출합니다.\n사전에 정의된 이름 형식은 옵션으로 입력할 수 있습니다.\n포인터 변수의 이름은 사전에 정의된 이름 형식을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.302.example.0.dangerous": "라인 1: pnt 변수를 선언했습니다. 사전에 정의된 형식을 만족하지 않는다고 가정했을 때 이것은 잘못된 선언입니다.",
  "rule.saqt.c.ccpp.302.example.0.safe": "라인 1: 사전에 정의된 이름 형식에 일치하는 p_pnt 변수를 선언합니다.",
  "rule.saqt.c.ccpp.302.name": "포인터 변수 명명 규칙 위반",
  "rule.saqt.c.ccpp.302.option.check_param.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.c.ccpp.302.option.check_param.name": "파라미터 검사 여부",
  "rule.saqt.c.ccpp.302.option.ignore_name.description": "검사에서 제외할 변수 이름을 설정합니다.",
  "rule.saqt.c.ccpp.302.option.ignore_name.name": "검사에서 제외할 변수 이름",
  "rule.saqt.c.ccpp.302.option.ignore_type.description": "검사에서 제외할 타입을 설정합니다.(typedef 로 지정된 이름에 한합니다.)",
  "rule.saqt.c.ccpp.302.option.ignore_type.name": "검사에서 제외할 타입",
  "rule.saqt.c.ccpp.302.option.pointer_variable_name_expression.description": "포인터 변수 이름 형식을 작성합니다.<br/>예시) p_[A-Za-z]+",
  "rule.saqt.c.ccpp.302.option.pointer_variable_name_expression.name": "포인터 변수 이름",
  "rule.saqt.c.ccpp.303.description": "너무 긴 한 줄 체커는 코드 한 줄의 길이가 사전에 옵션을 통해 정의된 길이를 초과하는 경우를 검출합니다.\n코드 한 줄이 정해진 길이를 초과하면 줄 바꿈을 실행합니다.",
  "rule.saqt.c.ccpp.303.example.0.dangerous": "라인 1: 사전에 정의된 길이를 초과했습니다.",
  "rule.saqt.c.ccpp.303.example.0.safe": "라인 1: 사전에 정의된 길이를 초과하지 않도록 합니다. 긴 줄을 두 줄로 나누거나 식별자의 길이를 줄입니다.",
  "rule.saqt.c.ccpp.303.name": "너무 긴 한 줄",
  "rule.saqt.c.ccpp.303.option.max_column_width.description": "한 라인의 최대 폭을 입력합니다.",
  "rule.saqt.c.ccpp.303.option.max_column_width.name": "한 라인의 최대 폭",
  "rule.saqt.c.ccpp.304.description": "잘못된 길이의 들여쓰기 체커는 들여쓰기를 할 때 스페이스가 아닌 탭을 사용한 라인을 검출합니다.\n들여쓰기는 반드시 스페이스를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.304.example.0.dangerous": "라인 2: 탭 문자를 사용하여 들여쓰기를 했습니다.",
  "rule.saqt.c.ccpp.304.example.0.safe": "라인 2: 스페이스 문자를 사용하여 들여쓰기를 하도록 합니다.",
  "rule.saqt.c.ccpp.304.name": "잘못된 길이의 들여쓰기",
  "rule.saqt.c.ccpp.304.option.indent_size.description": "들여쓰기 크기를 입력합니다.",
  "rule.saqt.c.ccpp.304.option.indent_size.name": "들여쓰기 크기",
  "rule.saqt.c.ccpp.305.description": "한 줄에 작성된 여러 개의 구문 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.\n한 줄에 한 구문만 들어가도록 여러 줄에 나눠서 코드를 작성합니다.",
  "rule.saqt.c.ccpp.305.example.0.dangerous": "라인 2: 여러 구문이 한 줄에 연이어 들어가있습니다.",
  "rule.saqt.c.ccpp.305.example.0.safe": "라인 2: 한 줄에 한 구문만 존재하도록 분리합니다.",
  "rule.saqt.c.ccpp.305.name": "한 줄에 작성된 여러 개의 구문",
  "rule.saqt.c.ccpp.306.description": "키워드 주위 공백 규칙 위반 체커는 지정된 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n공백이 필요하다고 지정된 예약어는 if, for, while, switch, catch 구문입니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.ccpp.306.example.0.dangerous": "라인 3: while 구문 뒤에 공백이 없습니다.\n라인 8: do-while 구문 뒤에 공백이 없습니다.\n라인 9: if 구문 뒤에 공백이 없습니다.\n라인 11: if 구문 뒤에 공백이 없습니다.\n라인 14: switch 구문 뒤에 공백이 없습니다.\n라인 19: catch 구문 뒤에 공백이 없습니다.",
  "rule.saqt.c.ccpp.306.example.0.safe": "라인 3: while 구문과 괄호 사이에 공백을 추가합니다.\n라인 8: do-while 구문과 괄호 사이에 공백을 추가합니다.\n라인 9: if 구문과 괄호 사이에 공백을 추가합니다.\n라인 11: if 구문과 괄호 사이에 공백을 추가합니다.\n라인 14: switch 구문과 괄호 사이에 공백을 추가합니다.\n라인 19: catch 구문과 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.ccpp.306.name": "키워드 주위 공백 규칙 위반",
  "rule.saqt.c.ccpp.307.description": "누락된 이항 연산자 주위 공백 체커는 접근 이항 연산자를 제외한 이항 연산자들과 전후 피연산자들 사이에 공백이 없는 수식을 검출합니다.\n이 때 제외하는 접근 이항 연산자란 배열참조 ([]), 구조체 참조 (.), 구조체 포인터 참조 (->) 등을 의미합니다.\n접근 이항 연산자를 제외한 모든 이항 연산자는 반드시 사이에 공백을 넣도록 합니다.",
  "rule.saqt.c.ccpp.307.example.0.dangerous": "라인 2: 이항 연산자들과 피연산자들 사이에 공백이 없습니다.",
  "rule.saqt.c.ccpp.307.example.0.safe": "라인 2: 이항 연산자들과 피연산자들 사이에 공백을 넣도록 합니다.",
  "rule.saqt.c.ccpp.307.name": "누락된 이항 연산자 주위 공백",
  "rule.saqt.c.ccpp.308.description": "메소드 호출 시 공백 규칙 위반 체커는 함수 호출 시 함수 및 인자, 괄호 사이의 공백 규칙을 위반한 수식을 검출합니다.\n매개 변수가 있으면 괄호와 매개 변수 사이에 다음과 같은 공백이 있어야 합니다. func( param ); /* 괄호( 와 매개변수 param 사이에 공백, 괄호)와 매개변수 param 사이에 공백 */\n함수 호출 시 함수 및 인자, 괄호 사이의 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.308.example.0.dangerous": "라인 1: 함수 이름과 왼쪽 괄호 사이에 공백이 없습니다.\n라인 2: 인자가 없는 호출에서 시작 괄호와 끝 괄호 사이에 공백이 없습니다.\n라인 3: 인자와 시작 괄호 사이에 공백이 없습니다.\n라인 4: 인자와 시작 괄호 사이에 공백이 없습니다.\n라인 5: 콤마 뒤에 공백이 없습니다.",
  "rule.saqt.c.ccpp.308.example.0.safe": "라인 1: 함수 이름과 왼쪽 괄호 사이에 공백을 넣습니다.\n라인 2: 인자가 없는 호출에서 시작 괄호와 끝 괄호 사이에 공백을 넣습니다.\n라인 3: 인자와 시작 괄호 사이에 공백을 넣습니다.\n라인 4: 인자와 시작 괄호 사이에 공백을 넣습니다.\n라인 5: 콤마 뒤에 공백을 넣습습니다.",
  "rule.saqt.c.ccpp.308.name": "메소드 호출 시 공백 규칙 위반",
  "rule.saqt.c.ccpp.309.description": "for 구문 공백 규칙 위반 체커는 for 구문의 표현식 사이에 공백이 없는 경우를 검출합니다.\n각 표현식 사이에 공백을 추가합니다.",
  "rule.saqt.c.ccpp.309.example.0.dangerous": "라인 3: for 구문의 초기화, 조건, 다음 단계 식 사이에 공백이 없습니다.",
  "rule.saqt.c.ccpp.309.example.0.safe": "라인 3: for 구문의 각 수식 사이에 공백을 넣어줍니다.",
  "rule.saqt.c.ccpp.309.name": "for 구문 공백 규칙 위반",
  "rule.saqt.c.ccpp.311.description": "단항 연산자 주위 공백 체커는 ++ 또는 ?와 같은 단항 연산자와 피연산자 사이에 공백이 있는 경우를 검출합니다.\n규격에 맞게 단항 연산식을 작성합니다.",
  "rule.saqt.c.ccpp.311.example.0.dangerous": "라인 2: 피연산자 var와 단항 연산자 ++ 사이에 공백이 존재합니다.\n라인 3: 피연산자 var와 단항 연산자 -- 사이에 공백이 존재합니다.",
  "rule.saqt.c.ccpp.311.example.0.safe": "라인 2: 불필요한 공백을 제거합니다.\n라인 3: 불필요한 공백을 제거합니다.",
  "rule.saqt.c.ccpp.311.name": "단항 연산자 주위 공백",
  "rule.saqt.c.ccpp.313.description": "형변환 시 공백 규칙 위반 체커는 캐스팅 연산자와 피연산자 사이에 공백이 없는 수식을 검출합니다.\n캐스팅 연산자와 피연산자 사이에 공백을 추가하도록 합니다.",
  "rule.saqt.c.ccpp.313.example.0.dangerous": "라인 3: 캐스팅 연산자와 피연산자 사이에 공백이 없습니다.",
  "rule.saqt.c.ccpp.313.example.0.safe": "라인 3: 캐스팅 연산자와 피연산자 사이에 공백을 넣어줍니다.",
  "rule.saqt.c.ccpp.313.name": "형변환 시 공백 규칙 위반",
  "rule.saqt.c.ccpp.314.description": "접근 연산자 주위 공백 규칙 위반 체커는 특정 객체를 접근하는데 사용하는 연산자들과 피연산자 사이에 공백이 있는 경우를 검출합니다.\n특정 객체를 접근하는데 사용하는 연산자들이란 배열참조 ([]), 구조체 참조 (.), 구조체 포인터 참조 (->), 포인터 참조 (*), 주소 값 (&) 연산자를 의미합니다.\n접근 연산자와 피연산자 사이에 공백을 넣지 않도록 합니다.",
  "rule.saqt.c.ccpp.314.example.0.dangerous": "라인 1: -> 연산자와 피연산자 사이에 공백이 존재합니다.\n라인 2: [] 연산자와 피연산자 사이에 공백이 존재합니다.\n라인 3: * 연산자와 피연산자 사이에 공백이 존재합니다.",
  "rule.saqt.c.ccpp.314.example.0.safe": "라인 1: -> 연산자와 피연산자 사이에 공백을 제거합니다.\n라인 2: [] 연산자와 피연산자 사이에 공백을 제거합니다.\n라인 3: * 연산자와 피연산자 사이에 공백을 제거합니다.",
  "rule.saqt.c.ccpp.314.name": "접근 연산자 주위 공백 규칙 위반",
  "rule.saqt.c.ccpp.315.description": "잘못된 포함 순서 체커는 정해진 순서로 헤더 파일을 포함하지 않은 경우를 검출합니다.\n정해진 순서란 시스템 헤더 파일을 먼저 포함하고 이후에 사용자 헤더를 포함하는 것입니다. 이 순서가 바뀌거나 뒤섞이지 말아야 합니다.\n반드시 헤더 파일을 포함하는 순서를 시스템 헤더를 먼저 포함하고 이후에 사용자 헤더를 포함하도록 합니다.",
  "rule.saqt.c.ccpp.315.example.0.dangerous": "라인 2: 사용자 헤더를 포함했습니다.\n라인 3: 시스템 헤더를 포함했습니다. 라인 2에서 사용자 헤더를 포함하였으므로 순서가 올바르지 않습니다.",
  "rule.saqt.c.ccpp.315.example.0.safe": "라인 2: 시스템 헤더를 항상 사용자 헤더보다 먼저 포함합니다.",
  "rule.saqt.c.ccpp.315.name": "잘못된 포함 순서",
  "rule.saqt.c.ccpp.319.description": "포인터 연산자 주위 공백 규칙 위반 체커는 포인터 연산자와 피연산자 사이에 공백이 있는 수식을 검출합니다.\n포인터 연산자와 피연산자 사이에 공백을 넣지 않도록 합니다.",
  "rule.saqt.c.ccpp.319.example.0.dangerous": "라인 3: 포인터 연산자와 변수 사이에 공백이 존재합니다.",
  "rule.saqt.c.ccpp.319.example.0.safe": "라인 3: 포인터 연산자와 변수 사이에 공백을 제거합니다.",
  "rule.saqt.c.ccpp.319.name": "포인터 연산자 주위 공백 규칙 위반",
  "rule.saqt.c.ccpp.321.description": "함수 주위 공백 규칙 위반 체커는 함수의 이름과 그 뒤의 괄호 사이에 공백이 있는 경우를 검출합니다.\n함수의 이름과 그 뒤의 괄호 사이에 공백을 넣지 않도록 합니다.",
  "rule.saqt.c.ccpp.321.example.0.dangerous": "라인 1: 함수 이름과 왼쪽 괄호 사이에 공백이 있습니다.",
  "rule.saqt.c.ccpp.321.example.0.safe": "라인 1: 함수 이름과 왼쪽 괄호 사이에 공백을 제거합니다.",
  "rule.saqt.c.ccpp.321.name": "함수 주위 공백 규칙 위반",
  "rule.saqt.c.ccpp.322.description": "괄호 내 공백 규칙 위반 체커는 괄호를 사용할 때 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. 괄호를 사용할 때 괄호 안에 공백이 있어야 합니다. 괄호 안에 여러 줄이 있으면 괄호 열의 위치가 동일해야 합니다.\n괄호 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.322.example.0.dangerous": "라인 1: 괄호와 괄호 다음에 오는 수식 사이에 공백이 없습니다.\n라인 4: 시작 괄호와 끝 괄호의 열 위치가 다릅니다.",
  "rule.saqt.c.ccpp.322.example.0.safe": "라인 1: 괄호와 괄호 다음에 오는 수식 사이에 공백을 넣어줍니다.\n라인 5: 시작 괄호와 끝 괄호의 열 위치를 동일하게 맞춥니다.",
  "rule.saqt.c.ccpp.322.name": "괄호 내 공백 규칙 위반",
  "rule.saqt.c.ccpp.324.description": "세미콜론 주위 공백 규칙 위반 체커는 세미콜론(;) 앞에 공백이 있는 경우를 검출합니다.\n세미콜론 앞에는 공백을 두지 않습니다.",
  "rule.saqt.c.ccpp.324.example.0.dangerous": "라인 2: 세미콜론 앞에 공백이 있습니다.",
  "rule.saqt.c.ccpp.324.example.0.safe": "라인 2: 세미콜론 앞에 있는 공백을 삭제합니다.",
  "rule.saqt.c.ccpp.324.name": "세미콜론 주위 공백 규칙 위반",
  "rule.saqt.c.ccpp.325.description": "블록 들여쓰기 규칙 위반 체커는 동일한 블록 내부 문장들의 들여쓰기 수준이 다른 경우를 검출합니다.\n동일한 블록 내에서 모든 문장이 동일한 들여쓰기 수준을 가지도록 코드를 작성해야 합니다.",
  "rule.saqt.c.ccpp.325.example.0.dangerous": "라인 3: 함수 정의 들여쓰기와 현재 라인의 들여쓰기가 맞지 않았습니다.\n라인 6: if 구문 블록의 들여쓰기와 현재 라인의 들여쓰기가 맞지 않았습니다.",
  "rule.saqt.c.ccpp.325.example.0.safe": "라인 3: 현재 라인의 들여쓰기를 함수 정의 들여쓰기에 맞추도록 합니다.\n라인 6: 현재 라인의 들여쓰기를 if 구문 블록의 들여쓰기에 맞추도록 합니다.",
  "rule.saqt.c.ccpp.325.name": "블록 들여쓰기 규칙 위반",
  "rule.saqt.c.ccpp.326.description": "누락된 복합 구문 중괄호 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\n복합 구문 사용 시 구문 한 개로 이루어진 한 줄 짜리 코드라도 일관성을 위해 항상 중괄호로 감싸줍니다.",
  "rule.saqt.c.ccpp.326.example.0.dangerous": "라인 3: for 구문의 본체 코드가 중괄호 없이 한 줄로 작성되었습니다.",
  "rule.saqt.c.ccpp.326.example.0.safe": "라인 3: 코드에 중괄호를 추가합니다.",
  "rule.saqt.c.ccpp.326.name": "누락된 복합 구문 중괄호",
  "rule.saqt.c.ccpp.327.description": "누락된 복합 구문 시작 중괄호 체커는 복합 구문에서 잘못된 위치에 중괄호를 사용한 경우를 검출합니다.\n여기서 잘못된 위치란 다음과 같습니다. 제어문, 함수 선언 등 복합 구문과 중괄호의 시작 라인이 다릅니다. 끝 중괄호의 위치가 복합 구문 시작 위치와 다릅니다.\n복합 구문에서 올바른 방법으로 중괄호를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.327.example.0.dangerous": "라인 2: 함수 선언과 중괄호의 시작 라인 위치가 일치하지 않습니다.\n라인 5: for 구문과 중괄호의 시작 라인 위치가 일치하지 않습니다.",
  "rule.saqt.c.ccpp.327.example.0.safe": "라인 1: 함수 선언과 중괄호의 시작 라인을 동일하게 맞춥니다.\n라인 3: for 구문과 중괄호의 시작 라인을 동일하게 맞춥니다.",
  "rule.saqt.c.ccpp.327.name": "누락된 복합 구문 시작 중괄호",
  "rule.saqt.c.ccpp.328.description": "while 구문 공백 규칙 위반 체커는 while 구문에서 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. while 구문과 괄호 사이에 공백을 넣어야 합니다. 괄호와 수식 사이에는 공백을 넣어야 합니다.\nwhile 구문 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.328.example.0.dangerous": "라인 1: while 구문과 괄호 사이에 공백이 없습니다.\n라인 2: 괄호와 수식 사이에 공백이 없습니다.",
  "rule.saqt.c.ccpp.328.example.0.safe": "라인 1: 공백 규칙대로 공백을 잘 넣도록 합니다.",
  "rule.saqt.c.ccpp.328.name": "while 구문 공백 규칙 위반",
  "rule.saqt.c.ccpp.330.description": "if 구문 공백 규칙 위반 체커는 if 구문에서 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. if 구문과 괄호 사이에 공백을 넣어야 합니다. 괄호와 수식 사이에 공백을 넣어야 합니다.\nif 구문 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.330.example.0.dangerous": "라인 1: if 구문과 괄호 사이에 공백이 없습니다.\n라인 2: 괄호와 수식 사이에 공백이 없습니다.",
  "rule.saqt.c.ccpp.330.example.0.safe": "라인 1: 공백 규칙대로 공백을 잘 넣도록 합니다.",
  "rule.saqt.c.ccpp.330.name": "if 구문 공백 규칙 위반",
  "rule.saqt.c.ccpp.331.description": "switch 구문 들여쓰기 규칙 위반 체커는 switch 구문에서 들여쓰기 규칙을 위반한 경우를 검출합니다.\n들여쓰기 규칙은 다음과 같습니다. switch 구문과 조건부는 같은 라인에 작성해야 합니다. case 구문 및 default 구문은 다음 라인부터 작성해야 합니다.\nswitch 구문 사용 시 들여쓰기 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.331.example.0.dangerous": "라인 2: switch 구문과 조건부의 시작 라인이 일치하지 않았습니다.\n라인 6: case 구문을 switch 구문과 같은 라인에 작성했습니다.",
  "rule.saqt.c.ccpp.331.example.0.safe": "라인 1: switch 구문과 조건부를 같은 라인에 작성합니다.\n라인 2: case 구문을 switch 구문의 다음 라인부터 작성합니다.",
  "rule.saqt.c.ccpp.331.name": "switch 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.ccpp.332.description": "switch 구문 공백 규칙 위반 체커는 switch 구문에서 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. switch 구문과 괄호 사이에 공백을 넣어야 합니다. 괄호와 수식 사이에 공백을 넣어야 합니다.\nswitch 구문 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.332.example.0.dangerous": "라인 1: switch 구문과 괄호 사이에 공백이 없습니다.\n라인 2: 괄호와 수식 사이에 공백이 없습니다.",
  "rule.saqt.c.ccpp.332.example.0.safe": "라인 1: 공백 규칙대로 공백을 잘 넣도록 합니다.",
  "rule.saqt.c.ccpp.332.name": "switch 구문 공백 규칙 위반",
  "rule.saqt.c.ccpp.333.description": "case 및 default 구문 들여쓰기 규칙 위반 체커는 case 구문과 default 구문을 사용할 때 들여쓰기 규칙을 위반한 경우를 검출합니다.\n들여쓰기 규칙은 다음과 같습니다. case 구문과 default 구문은 switch 구문의 들여쓰기는 switch 구문에서 1단계 더 들여쓰기를 해야 합니다. case 구문과 default 구문에 속하는 수식의 들여쓰기는 1단계 더 들여쓰기를 해야 합니다.\ncase 구문과 default 구문 사용 시 들여쓰기 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.333.example.0.dangerous": "라인 5: case 구문을 1단계 더 들여쓰기 했습니다.\n라인 7: 수식을 1단계 이전으로 들여쓰기 했습니다.\n라인 8: 수식을 1단계 이전으로 들여쓰기 했습니다.\n라인 9: default 구문을 1단계 더 들여쓰기 했습니다.",
  "rule.saqt.c.ccpp.333.example.0.safe": "라인 1: 모든 case 구문과 default 구문의 들여쓰기를 일관적으로 잘 작성하도록 합니다.",
  "rule.saqt.c.ccpp.333.name": "case 및 default 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.ccpp.334.description": "쉼표 주위 공백 규칙 위반 체커는 콤마 연산자를 사용할 때 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. 콤마 앞에는 공백이 없어야 합니다. 콤마 뒤에는 공백이 있어야 합니다. 단, 옵션에 따라 공백이 존재해야 하는 위치는 조절 가능합니다.\n콤마 연산자 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.334.example.0.dangerous": "라인 1: 콤마 연산자 뒤에 공백이 없습니다.\n라인 2: 콤마 연산자 앞에 공백이 있습니다.",
  "rule.saqt.c.ccpp.334.example.0.safe": "라인 1: 공백 규칙대로 공백을 잘 넣도록 합니다.",
  "rule.saqt.c.ccpp.334.name": "쉼표 주위 공백 규칙 위반",
  "rule.saqt.c.ccpp.335.description": "너무 많은 논리 연산 체커는 하나의 수식에서 논리 연산자를 두 번 이상 사용한 수식을 검출합니다.\n하나의 수식에서 논리 연산자를 두 번 이상 사용한 경우 우선순위를 명확하게 하기 위해 괄호를 사용하도록 합니다. 혹은 하나의 수식에서 논리 연산자는 한 번만 사용하도록 합니다.",
  "rule.saqt.c.ccpp.335.example.0.dangerous": "라인 1: && 연산자와 || 연산자를 하나의 수식에서 동시에 사용했습니다.",
  "rule.saqt.c.ccpp.335.example.0.safe": "라인 1: 하나의 수식에서 두 번 이상의 논리 연산자는 괄호를 사용하여 우선순위를 구분합니다.\n라인 2: 하나의 수식에서 논리 연산자를 한 번만 사용합니다.",
  "rule.saqt.c.ccpp.335.name": "너무 많은 논리 연산",
  "rule.saqt.c.ccpp.335.option.allow_exceptional_cases.description": "흔하게 발생하는 예외 상황을 허용합니다. <br />예시) a == 0 && b == 1",
  "rule.saqt.c.ccpp.335.option.allow_exceptional_cases.name": "흔하게 발생하는 예외 상황을 허용",
  "rule.saqt.c.ccpp.338.description": "타입 명명 규칙 위반 체커는 타입을 선언할 때 명명 규칙을 위반한 경우를 검출합니다.\n명명 규칙은 다음과 같습니다. 타입은 모두 소문자로 구성하고 _t로 끝내야 합니다. 단어로 구성할 경우 단어들 사이는 _로 구분합니다. 포인터에 대한 타입을 정의할 때는 _p로 끝냅니다.\n타입 선언 시 명명 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.338.example.0.dangerous": "라인 1: typedef로 선언한 타입이 명명 규칙에 맞지 않습니다.\n라인 2: typedef로 선언한 타입이 명명 규칙에 맞지 않습니다.",
  "rule.saqt.c.ccpp.338.example.0.safe": "라인 1: 명명 규칙에 맞춰 타입을 선언하도록 합니다.\n라인 2: 명명 규칙에 맞춰 타입을 선언하도록 합니다.",
  "rule.saqt.c.ccpp.338.name": "타입 명명 규칙 위반",
  "rule.saqt.c.ccpp.338.option.ignore_types.description": "무시할 타입 이름을 작성합니다.",
  "rule.saqt.c.ccpp.338.option.ignore_types.name": "무시할 타입 이름",
  "rule.saqt.c.ccpp.342.description": "함수 사이 전역 변수 선언 체커는 함수와 함수 정의 사이에 있는 전역 변수 선언을 검출합니다.\n함수 정의 사이에 전역 변수를 선언하지 않도록 합니다. 전역 변수는 항상 함수 정의 이전에 선언해야 합니다.",
  "rule.saqt.c.ccpp.342.example.0.dangerous": "라인 2: 함수 정의 사이에 전역 변수를 선언했습니다.",
  "rule.saqt.c.ccpp.342.example.0.safe": "라인 1: 함수 정의 이전에 전역 변수를 선언합니다.",
  "rule.saqt.c.ccpp.342.name": "함수 사이 전역 변수 선언",
  "rule.saqt.c.ccpp.342.option.ignored_variable_name.description": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "rule.saqt.c.ccpp.342.option.ignored_variable_name.name": "검사 대상에서 제외할 변수 이름",
  "rule.saqt.c.ccpp.343.description": "블록 상단에 선언되지 않은 지역 변수 체커는 지역 변수가 함수 상단에 선언되지 않은 경우를 검출합니다.\n단, for 구문의 루프 카운터는 예외로 합니다.\n지역 변수는 반드시 함수 상단에 선언하도록 합니다.",
  "rule.saqt.c.ccpp.343.example.0.dangerous": "라인 3: 지역 변수가 함수 상단에 선언되어 있지 않습니다.",
  "rule.saqt.c.ccpp.343.example.0.safe": "라인 2: 지역 변수를 함수 상단에 선언하도록 합니다.",
  "rule.saqt.c.ccpp.343.name": "블록 상단에 선언되지 않은 지역 변수",
  "rule.saqt.c.ccpp.343.option.ignored_function_name.description": "검사 대상에서 제외할 함수 이름을 기록합니다.",
  "rule.saqt.c.ccpp.343.option.ignored_function_name.name": "검사 대상에서 제외할 함수 이름을 기록합니다.",
  "rule.saqt.c.ccpp.343.option.ignored_variable_name.description": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "rule.saqt.c.ccpp.343.option.ignored_variable_name.name": "검사 대상에서 제외할 변수 이름",
  "rule.saqt.c.ccpp.343.option.skip_array_check.description": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.343.option.skip_array_check.name": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.344.description": "반복문 내 변수 선언 규칙 위반 체커는 반복문의 반복 횟수를 결정하는 루프 카운터의 선언 규칙을 위반한 경우를 검출합니다.\n선언 규칙은 다음과 같습니다. for 구문의 루프 카운터는 초기화 구문 내에서 선언합니다. 다만 컴파일러가 초기화 구문 내에서의 선언을 지원하지 않을 경우는 예외로 합니다. for 구문의 루프 카운터 이름은 i, j, k 등의 한 글자로 된 문자는 사용하지 말아야 합니다.\n루프 카운터 선언 시 선언 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.ccpp.344.example.0.dangerous": "라인 3: 루프 카운터를 초기화 구문 바깥에서 선언했습니다.\n라인 4: 루프 카운터를 한글자로 선언했습니다.",
  "rule.saqt.c.ccpp.344.example.0.safe": "라인 2: 루프 카운터를 초기화 구문 내에서 선언하고 의미 있는 변수명을 사용하도록 합니다.",
  "rule.saqt.c.ccpp.344.name": "반복문 내 변수 선언 규칙 위반",
  "rule.saqt.c.ccpp.344.option.skip_loop_check.description": "for loop counter의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.344.option.skip_loop_check.name": "for loop counter의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.ccpp.346.description": "부적절한 크기 검사 체커는 sizeof를 사용하지 않고 타입 크기를 계산한 값이 필요한 함수를 호출하는 경우를 검출합니다.\n대상이 되는 함수는 다음과 같습니다. memset(), memcpy(), wmemcpy(), bcopy(), strncpy(), memmove(), memccpy(), mempcpy(), wmempcpy(), snprintf(), strlcat(), calloc(), malloc().\n타입 크기를 계산한 값이 필요한 함수를 호출하는 경우 sizeof를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.346.example.0.dangerous": "라인 3: memset() 함수를 호출할 때 sizeof를 사용하지 않았습니다.",
  "rule.saqt.c.ccpp.346.example.0.safe": "라인 3: 타입 크기를 계산해야 하는 인자에 sizeof를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.346.name": "부적절한 크기 검사",
  "rule.saqt.c.ccpp.347.description": "하나의 소스 파일에서만 사용되는 비 표준 전역 변수 체커는 한 소스 파일 내에서만 사용하는 전역 변수를 static 키워드 없이 선언한 경우를 검출합니다.\n한 소스 파일 내에서만 사용하는 전역 변수는 static으로 선언하도록 합니다.",
  "rule.saqt.c.ccpp.347.example.0.dangerous": "라인 1: 한 소스 파일 내에서만 사용하는 전역 변수를 static 키워드 없이 선언했습니다.",
  "rule.saqt.c.ccpp.347.example.0.safe": "라인 1: 전역 변수를 정적으로 선언합니다.",
  "rule.saqt.c.ccpp.347.name": "하나의 소스 파일에서만 사용되는 비 표준 전역 변수",
  "rule.saqt.c.ccpp.349.description": "헤더 파일 내 데이터 정의 시 누락된 extern 체커는 헤더 파일 내에서 변수를 정의할 때 extern 키워드가 사용되지 않은 경우를 검출합니다.\n헤더 파일에서 변수를 정의할 경우 반드시 extern 키워드를 사용하도록 합니다.",
  "rule.saqt.c.ccpp.349.example.0.dangerous": "라인 2: 헤더 파일 내에서 extern 키워드 없이 변수를 선언했습니다.",
  "rule.saqt.c.ccpp.349.example.0.safe": "라인 2: 헤더 파일에서는 반드시 extern 키워드를 붙여 변수를 선언합니다.",
  "rule.saqt.c.ccpp.349.name": "헤더 파일 내 데이터 정의 시 누락된 extern",
  "rule.saqt.c.ccpp.349.option.ignored_path.description": "검사 대상에서 제외할 경로 이름을 기록합니다.",
  "rule.saqt.c.ccpp.349.option.ignored_path.name": "검사 대상에서 제외할 경로 이름",
  "rule.saqt.c.ccpp.350.description": "타입 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 타입 주석을 검출합니다.\n타입 주석의 정해진 규격은 다음과 같습니다. 사전에 정의된 타입 주석 형식에 따라 코드에 선언된 재정의 타입에 대한 주석을 작성하였는지 확인합니다. 주석 내에 재정의 타입 이름이나 원본 타입 이름을 기재하는 형식의 경우 올바른 타입 이름을 기재했는지 확인합니다. 규격은 위의 두 가지 케이스입니다. 다만 타입 주석의 규격은 옵션으로 조정할 수 있습니다.\n정해진 규격에 따라 타입 주석을 작성하도록 합니다.",
  "rule.saqt.c.ccpp.350.example.0.dangerous": "라인 1: 타입 주석 형식이 잘못되었습니다.",
  "rule.saqt.c.ccpp.350.example.0.safe": "라인 1: 올바른 타입 주석 형식을 사용합니다.",
  "rule.saqt.c.ccpp.350.name": "타입 주석 형식 위반",
  "rule.saqt.c.ccpp.353.description": "한 줄에 작성된 여러 개의 선언 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.\n모든 선언은 별개의 라인으로 분리합니다.",
  "rule.saqt.c.ccpp.353.example.0.dangerous": "라인 1: 한 줄에 여러 개의 변수를 선언했습니다.",
  "rule.saqt.c.ccpp.353.example.0.safe": "라인 1: 한 줄에는 하나의 변수만 선언하도록 합니다.",
  "rule.saqt.c.ccpp.353.name": "한 줄에 작성된 여러 개의 선언",
  "rule.saqt.c.ccpp.7560.description": "`if-else if` 구문은 반드시 마지막에 `else` 블록으로 종료되어야 합니다. 이러한 방어적 프로그래밍 방식을 통해 제어 흐름 내의 모든 명시적 조건이 `false`로 평가되는 경우에도 예외 상황이나 기본 동작을 고려하게 됩니다.\n\n또한 단순히 `else` 블록을 추가하는 것만으로는 충분하지 않습니다. 해당 블록 내부에는 유의미한 실행 문장을 작성하거나, 아무 작업도 수행하지 않음을 명시하는 주석을 반드시 포함해야 합니다. 예를 들어, 빈 블록이나 널 구문만 존재하는 경우에는 개발 의도가 불명확한 코드로 간주됩니다. 이러한 규칙은 코드 리뷰 과정에서 개발자의 의도를 보다 명확하게 전달하는 데 도움이 됩니다.\n\n다만, `else if`가 없는 단순한 단독 `if` 구문에는 이 규칙이 적용되지 않습니다.\n즉, `if` 문 뒤에 하나 이상의 `else if` 문이 연결된 구조에서는 조건 분기의 마지막에 반드시 `else` 블록을 추가해야 합니다.\n\n`else` 블록 내부에는 예외 처리 로직이나 기본 상태를 지정하는 코드를 작성해야 합니다. 만약 모든 조건이 만족되지 않았을 때 별도로 수행할 로직이 없다면, 빈 블록이나 세미콜론만 남겨두는 대신 의도적으로 비워두었음을 나타내는 주석을 반드시 작성해야 합니다.",
  "rule.saqt.c.ccpp.7560.example.0.dangerous": "라인 3: if-else if 체인의 마지막에 else 블록이 누락되었습니다.\n라인 13, 21: 마지막 else 블록 내부에 유의미한 실행 문장이나 주석이 존재하지 않습니다.",
  "rule.saqt.c.ccpp.7560.example.0.safe": "라인 7, 15: else 블록 내부에 유의미한 실행 문장이나 주석을 올바르게 작성했습니다.\n라인 19: else if가 없는 단독 if 문은 사용해도 됩니다.",
  "rule.saqt.c.ccpp.7560.name": "if-else if 문에서 else 누락",
  "rule.saqt.c.ccpp.76.description": "불필요한 변수 범위 체커는 변수가 특정 파일(또는 함수)에서만 사용되는 경우 그 해당 파일(또는 함수)에 대해서 정적으로 선언되지 않은 경우를 검출합니다.\n구체적으로는 다음과 같은 경우를 검출합니다. 파일 내에서 선언된 전역 변수를 하나의 함수에서만 사용했습니다. extern 식별자로 선언한 전역 변수를 하나의 파일에서만 사용했습니다..\n변수가 사용되는 범위에 맞게 지역 변수나 전역 변수를 사용하여 소스 코드의 가독성을 높일 수 있습니다.\n전역 변수를 지역 변수로 변경하여 알맞은 범위 내에서 변수가 사용되도록 합니다.",
  "rule.saqt.c.ccpp.76.example.0.dangerous": "라인 1: 전역 변수 a에 대하여 사용 범위가 foo() 함수로 제한되어 있습니다.",
  "rule.saqt.c.ccpp.76.example.0.safe": "라인 2: 전역 변수를 지역 변수로 변경하여 알맞은 범위 내에서 변수가 사용되도록 합니다.",
  "rule.saqt.c.ccpp.76.name": "불필요한 변수 범위",
  "rule.saqt.c.ccpp.77.description": "클래스 주석 형식 위반 체커는 클래스에 해당하는 주석의 형식을 위반한 경우를 검출합니다.\n코드에 선언된 클래스에 대한 주석을 사전에 정의된 클래스 주석 형식에 따라 확인합니다. 추가적으로 주석 내에 클래스 이름을 기재하는 형식의 경우 올바른 클래스 이름을 기재했는지 확인합니다.\n사전에 정의된 형식에 맞게 클래스의 주석을 작성합니다.",
  "rule.saqt.c.ccpp.77.example.0.dangerous": "라인 2: 클래스 주석에 명시되어 있는 클래스 이름이 선언되어 있는 클래스 이름과 다릅니다.",
  "rule.saqt.c.ccpp.77.example.0.safe": "라인 2: 클래스 주석에 명시되어 있는 클래스 이름이 선언되어 있는 클래스 이름과 같습니다.",
  "rule.saqt.c.ccpp.77.name": "클래스 주석 형식 위반",
  "rule.saqt.c.ccpp.77.option.ClassComment.description": "클래스 주석 형식을 정의합니다.",
  "rule.saqt.c.ccpp.77.option.ClassComment.name": "클래스 주석 형식",
  "rule.saqt.c.ccpp.78.description": "함수 주석 형식 위반 체커는 함수에 해당하는 주석의 형식을 위반한 경우를 검출합니다.\n사전에 정의된 함수 주석 형식에 따라 코드에 선언된 함수에 대한 주석을 작성하였는지 확인합니다. 추가적으로 주석 내에 함수 이름, 함수 반환 타입 및 함수 인자들의 이름, 타입, 그리고 개수를 올바른 형식의 값으로 입력하였는지 확인합니다.\n사전에 정의된 형식에 맞게 함수 주석을 작성합니다.",
  "rule.saqt.c.ccpp.78.example.0.dangerous": "라인 5: 주석에 적힌 두 번째 매개변수 정보가 실제 함수의 두 번째 매개변수와 다릅니다.\n라인 6: 주석에 적힌 함수의 반환 타입과 실제 함수의 반환 타입이 다릅니다.",
  "rule.saqt.c.ccpp.78.example.0.safe": "라인 5: 주석에 적힌 두 번째 매개변수 정보가 실제 함수의 두 번째 매개변수와 같습니다.\n라인 6: 주석에 적힌 함수의 반환 타입과 실제 함수의 반환 타입이 같습니다.",
  "rule.saqt.c.ccpp.78.name": "함수 주석 형식 위반",
  "rule.saqt.c.ccpp.78.option.FunctionComment.description": "함수 주석 형식을 정의합니다.",
  "rule.saqt.c.ccpp.78.option.FunctionComment.name": "함수 주석 형식",
  "rule.saqt.c.ccpp.79.description": "필드 주석 형식 위반 체커는 필드 변수에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n사전에 정의된 필드 주석 형식에 따라 코드에 선언된 필드에 대한 주석을 작성하였는지 확인합니다. 추가적으로 주석 내에 필드 이름 및 필드 타입을 올바른 형식의 값으로 입력하였는지 확인합니다.\n사전에 정의된 형식에 맞게 필드 변수 주석을 작성합니다.",
  "rule.saqt.c.ccpp.79.example.0.dangerous": "라인 2: 선언된 필드 변수의 자료형과 주석에 명시된 필드 변수의 자료형이 다릅니다.",
  "rule.saqt.c.ccpp.79.example.0.safe": "라인 2: 선언된 필드 변수의 자료형과 주석에 명시된 필드 변수의 자료형이 같습니다.",
  "rule.saqt.c.ccpp.79.name": "필드 주석 형식 위반",
  "rule.saqt.c.ccpp.79.option.FieldComment.description": "변수 주석 형식을 정의합니다.",
  "rule.saqt.c.ccpp.79.option.FieldComment.name": "변수 주석 형식",
  "rule.saqt.c.ccpp.79.option.field_position.description": "필드 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.ccpp.79.option.field_position.name": "필드 변수 주석 위치",
  "rule.saqt.c.ccpp.79.option.global_position.description": "전역 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.ccpp.79.option.global_position.name": "전역 변수 주석 위치",
  "rule.saqt.c.ccpp.79.option.is_check_not_exist_comment.description": "존재하지 않는 주석을 확인할 여부를 판단합니다.",
  "rule.saqt.c.ccpp.79.option.is_check_not_exist_comment.name": "없는 주석 검출 확인",
  "rule.saqt.c.ccpp.79.option.local_position.description": "지역 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.ccpp.79.option.local_position.name": "지역 변수 주석 위치",
  "rule.saqt.c.ccpp.79.option.variable_kind_field.description": "변수가 필드 변수인 것을 확인합니다.",
  "rule.saqt.c.ccpp.79.option.variable_kind_field.name": "지역 변수 검사 확인",
  "rule.saqt.c.ccpp.79.option.variable_kind_global.description": "변수가 전역 변수인 것을 확인합니다.",
  "rule.saqt.c.ccpp.79.option.variable_kind_global.name": "전역 변수 검사 확인",
  "rule.saqt.c.ccpp.79.option.variable_kind_local.description": "필드 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.ccpp.79.option.variable_kind_local.name": "지역 변수 검사 확인",
  "rule.saqt.c.ccpp.81.description": "파일 주석 형식 위반 체커는 파일에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n코드에 작성된 파일 내 가장 첫 주석을 사전에 정의된 파일 주석 형식에 따라 확인합니다.\n사전에 정의된 형식에 맞게 파일 주석을 작성합니다.",
  "rule.saqt.c.ccpp.81.example.0.dangerous": "라인 1: 주석 형식이 /*로 되어 있습니다.",
  "rule.saqt.c.ccpp.81.example.0.safe": "라인 1: 설정한 주석 형식과 맞아야 합니다.",
  "rule.saqt.c.ccpp.81.name": "파일 주석 형식 위반",
  "rule.saqt.c.ccpp.81.option.FileComment.description": "파일 주석 형식을 정의합니다.",
  "rule.saqt.c.ccpp.81.option.FileComment.name": "파일 주석 형식",
  "rule.saqt.c.ccpp.81.option.comment_number.description": "파일 당 주석의 수를 지정합니다.",
  "rule.saqt.c.ccpp.81.option.comment_number.name": "파일 주석 수",
  "rule.saqt.c.ccpp.88.description": "변수 명명 규칙 위반 체커는 옵션에 지정된 변수 형식을 위반하는 코드를 검출합니다.\n옵션에서 전역 변수 검사 유무, 지역 변수 검사 유무, 매개 변수 검사 유무, 루프 변수 검사 유무, 허용할 변수 이름 형식, 금지할 변수 이름 형식을 설정할 수 있습니다.\n옵션에서 지정된 변수 형식에 따라 변수 이름을 지정합니다.",
  "rule.saqt.c.ccpp.88.example.0.dangerous": "라인 2: 변수 이름이 마침표(.)로 시작하므로 변수 형식을 위반했습니다.",
  "rule.saqt.c.ccpp.88.example.0.safe": "라인 2: 허용된 변수 이름 형식으로 변경합니다.",
  "rule.saqt.c.ccpp.88.name": "변수 명명 규칙 위반",
  "rule.saqt.c.ccpp.88.option.scope_target_global.description": "옵션을 사용하는 경우, 전역 변수를 검사합니다.",
  "rule.saqt.c.ccpp.88.option.scope_target_global.name": "전역 변수 분석",
  "rule.saqt.c.ccpp.88.option.scope_target_local.description": "옵션을 사용하는 경우, 지역 변수를 검사합니다.",
  "rule.saqt.c.ccpp.88.option.scope_target_local.name": "지역 변수 분석",
  "rule.saqt.c.ccpp.88.option.scope_target_loop.description": "옵션을 사용하는 경우, loop 변수를 검사합니다.",
  "rule.saqt.c.ccpp.88.option.scope_target_loop.name": "Loop 변수 분석",
  "rule.saqt.c.ccpp.88.option.scope_target_member.description": "옵션을 사용하는 경우, 멤버 변수를 검사합니다.",
  "rule.saqt.c.ccpp.88.option.scope_target_member.name": "멤버 변수 분석",
  "rule.saqt.c.ccpp.88.option.scope_target_parameter.description": "옵션을 사용하는 경우, 파라미터를 검사합니다.",
  "rule.saqt.c.ccpp.88.option.scope_target_parameter.name": "파라미터 분석",
  "rule.saqt.c.ccpp.88.option.variable_should_be_name.description": "허용할 변수 이름 형식을 작성합니다.<br/>예시) [a-zA-Z0-9_]*",
  "rule.saqt.c.ccpp.88.option.variable_should_be_name.name": "허용할 변수 이름",
  "rule.saqt.c.ccpp.88.option.variable_should_not_be_name.description": "금지할 변수 이름 형식을 작성합니다.<br/>예시) forbidden",
  "rule.saqt.c.ccpp.88.option.variable_should_not_be_name.name": "금지할 변수 이름",
  "rule.saqt.c.cpp.1037.description": "비 표준 이스케이프 시퀀스 체커는 ISO C 표준에 명시되지 않은 이스케이프 시퀀스를 사용하는 경우를 검출합니다.\n이스케이프 시퀀스란 백슬래시(\\) 뒤에 숫자가 오는 문자 조합을 가리킵니다. ISO C 표준에서 명시된 이스케이프 시퀀스는 다음과 같습니다. \\', \\'', \\?, \\\\, \\t, \\v, \\f, \\a, \\b, \\n, \\r, \\0.\n명시되지 않은 이스케이프 시퀀스를 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n표준 이스케이스 시퀀스가 아닌 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1037.example.0.dangerous": "라인 5: 표준에 명시되지 않은 이스케이프 시퀀스를 사용했습니다.",
  "rule.saqt.c.cpp.1037.example.0.safe": "라인 5: 표준에 명시된 이스케이프 시퀀스를 사용합니다.",
  "rule.saqt.c.cpp.1037.name": "비 표준 이스케이프 시퀀스",
  "rule.saqt.c.cpp.1040.description": "다른 범위의 중복된 이름 체커는 서로 다른 범위에 있는 식별자의 이름이 동일한 경우를 검출합니다.\n컴파일러에서는 기본적으로 동일한 이름을 가진 식별자를 허용합니다. 단, 같은 이름을 가진 식별자의 경우 나중에 선언된 식별자가 먼저 선언된 식별자를 덮어씁니다.\n범위와 관계 없이 식별자 이름을 구별하도록 합니다.",
  "rule.saqt.c.cpp.1040.example.0.dangerous": "라인 7: 매개 변수를 variable로 명명했습니다. 해당 이름을 이미 라인 1에서 전역 변수로 사용했습니다.",
  "rule.saqt.c.cpp.1040.example.0.safe": "라인 7: 서로 다른 범위에서도 식별자 이름을 중복하지 않도록 합니다.",
  "rule.saqt.c.cpp.1040.name": "다른 범위의 중복된 이름",
  "rule.saqt.c.cpp.1040.option.ignore_enum_constant.description": "옵션을 사용하는 경우, 열거형 상수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1040.option.ignore_enum_constant.name": "열거형 상수 식별자를 무시",
  "rule.saqt.c.cpp.1040.option.ignore_label.description": "옵션을 사용하는 경우, 라벨 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1040.option.ignore_label.name": "라벨 식별자를 무시",
  "rule.saqt.c.cpp.1040.option.ignore_normal_variable.description": "옵션을 사용하는 경우, 일반 변수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1040.option.ignore_normal_variable.name": "일반 변수 식별자를 무시",
  "rule.saqt.c.cpp.1040.option.ignore_parameter.description": "옵션을 사용하는 경우, 파라미터 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1040.option.ignore_parameter.name": "파라미터 식별자 무시",
  "rule.saqt.c.cpp.1040.option.ignore_routine.description": "옵션을 사용하는 경우, 함수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1040.option.ignore_routine.name": "함수 식별자를 무시",
  "rule.saqt.c.cpp.1040.option.ignore_typedef.description": "옵션을 사용하는 경우, typedef 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1040.option.ignore_typedef.name": "typedef 식별자를 무시",
  "rule.saqt.c.cpp.1041.description": "유일하지 않은 사용자 정의 타입 이름 체커는 typedef로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n컴파일러에서는 기본적으로 동일한 이름을 가진 식별자를 허용합니다. 단, 같은 이름을 가진 식별자의 경우 나중에 선언된 식별자가 먼저 선언된 식별자를 덮어씁니다.\ntypedef를 선언할 때 이전에 사용한 이름을 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1041.example.0.dangerous": "라인 1: int64_t란 이름으로 typedef를 선언했습니다.\n라인 7: int64_t란 이름으로 변수를 선언했습니다. 이 이름은 라인 1에서 이미 사용한 이름입니다.\n라인 11: int64_t란 이름으로 매개 변수를 선언했습니다. 이 이름은 라인 1에서 이미 사용한 이름입니다.",
  "rule.saqt.c.cpp.1041.example.0.safe": "라인 7: 이전에 선언된 typedef와 동일한 식별자를 사용하지 않도록 합니다.\n라인 11: 이전에 선언된 typedef와 동일한 식별자를 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1041.name": "유일하지 않은 사용자 정의 타입 이름",
  "rule.saqt.c.cpp.1042.description": "중복된 태그 이름 체커는 태그로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n여기서 태그는 클래스, 구조체, 공용체, 열거형 등을 의미합니다.\n태그를 선언할 때 한 번 사용한 이름을 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1042.example.0.dangerous": "라인 2: StructTest란 이름으로 구조체를 선언했습니다.\n라인 11: StructTest란 이름으로 공용체를 선언했습니다. 이 이름은 라인 2에서 이미 사용한 이름입니다.",
  "rule.saqt.c.cpp.1042.example.0.safe": "라인 11: 이전에 선언된 구조체와 동일한 식별자를 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1042.name": "중복된 태그 이름",
  "rule.saqt.c.cpp.1043.description": "재사용된 정적 식별자 체커는 정적 객체로 선언한 이름을 다른 곳에서 재사용한 경우를 검출합니다.\n여기서 정적 객체란 정적 저장(Static Storage) 기간을 가진 모든 객체의 식별자를 의미합니다. 여기에는 함수도 포함됩니다.\n정적 객체를 선언할 때 이전에 사용한 이름을 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1043.example.0.dangerous": "라인 1: staticVar1이란 이름으로 정적 변수를 선언했습니다.\n라인 2: staticVar2란 이름으로 정적 변수를 선언했습니다.\n라인 4: staticVar1이란 이름으로 typedef를 선언했습니다. 이 이름은 라인 1에서 이미 사용한 이름입니다.\n라인 5: staticVar2란 이름으로 지역 변수를 선언했습니다. 이 이름은 라인 2에서 이미 사용한 이름입니다.",
  "rule.saqt.c.cpp.1043.example.0.safe": "라인 4: 이전에 선언된 정적 변수와 동일한 식별자를 사용하지 않도록 합니다.\n라인 5: 이전에 선언된 정적 변수와 동일한 식별자를 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1043.name": "재사용된 정적 식별자",
  "rule.saqt.c.cpp.1045.description": "재사용된 식별자 체커는 어떠한 식별자라도 이름이 같은 경우를 검출합니다.\n이름 공간이 다를 경우 실제로 두 공간에 존재하는 이름이 겹치거나 가려지는 현상이 발생하지는 않습니다. 하지만 이 체커는 그것과 관계 없이 모든 식별자에서 이름을 재사용하는 것을 금지합니다. 여기서 식별자는 함수, 레이블, 열거형 상수, 변수, 매개 변수, 태그, 필드 등의 이름을 포함합니다.\n이전에 사용한 식별자를 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1045.example.0.dangerous": "라인 4: fieldName이란 이름으로 필드를 선언했습니다.\n라인 9: fieldName이란 이름으로 함수를 선언했습니다. 이 이름은 라인 4에서 이미 사용한 이름입니다.",
  "rule.saqt.c.cpp.1045.example.0.safe": "라인 9: 이전에 사용한 식별자를 다시 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1045.name": "재사용된 식별자",
  "rule.saqt.c.cpp.1045.option.ignore_enum_constant.description": "옵션을 사용하는 경우, 열거형 상수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1045.option.ignore_enum_constant.name": "열거형 상수 식별자를 무시",
  "rule.saqt.c.cpp.1045.option.ignore_field.description": "옵션을 사용하는 경우, 필드 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1045.option.ignore_field.name": "필드 식별자를 무시",
  "rule.saqt.c.cpp.1045.option.ignore_label.description": "옵션을 사용하는 경우, 라벨 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1045.option.ignore_label.name": "라벨 식별자를 무시",
  "rule.saqt.c.cpp.1045.option.ignore_normal_variable.description": "옵션을 사용하는 경우, 일반 변수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1045.option.ignore_normal_variable.name": "일반 변수 식별자를 무시",
  "rule.saqt.c.cpp.1045.option.ignore_parameter.description": "옵션을 사용하는 경우, 파라미터 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1045.option.ignore_parameter.name": "파라미터 식별자 무시",
  "rule.saqt.c.cpp.1045.option.ignore_routine.description": "옵션을 사용하는 경우, 함수 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1045.option.ignore_routine.name": "함수 식별자를 무시",
  "rule.saqt.c.cpp.1045.option.ignore_tag.description": "옵션을 사용하는 경우, 태그 식별자를 검사하지 않습니다.",
  "rule.saqt.c.cpp.1045.option.ignore_tag.name": "태그 식별자를 무시",
  "rule.saqt.c.cpp.1052.description": "타입 정의 시 누락된 크기 명시 체커는 기본 숫자 타입에 대한 typedef 선언에서 스토리지의 크기가 명시되지 않은 경우를 검출합니다.\n다만 기본 숫자 타입 중 plain char 타입과 C에서 boolean으로 사용되는 타입은 예외로 합니다.\n기본 숫자 타입을 typedef로 선언할 경우 일부 예외를 제외하곤 항상 스토리지 크기를 명시하도록 합니다.",
  "rule.saqt.c.cpp.1052.example.0.dangerous": "라인 1: typedef 선언에서 스토리지의 크기가 포함되지 않았습니다.\n라인 2: typedef 선언에서 스토리지의 크기가 포함되지 않았습니다.",
  "rule.saqt.c.cpp.1052.example.0.safe": "라인 1: typedef 선언에 스토리지의 크기를 포함합니다.\n라인 2: typedef 선언에 스토리지의 크기를 포함합니다.",
  "rule.saqt.c.cpp.1052.name": "타입 정의 시 누락된 크기 명시",
  "rule.saqt.c.cpp.1098.description": "부적절한 논리 연산의 피연산자 체커는 논리 연산자의 피연산자로 변수나 상수, 괄호 수식을 제외한 수식을 사용한 경우를 검출합니다.\n논리 연산자의 피연산자로 변수나 상수, 괄호 수식와 같은 기본 수식만을 사용합니다.",
  "rule.saqt.c.cpp.1098.example.0.dangerous": "라인 3: 논리 연산자의 피연산자로 변수나 상수, 괄호 수식이 아닌 수식을 사용했습니다.",
  "rule.saqt.c.cpp.1098.example.0.safe": "라인 3: 논리 연산자의 피연산자로 변수나 상수, 괄호 수식을 사용합니다.",
  "rule.saqt.c.cpp.1098.name": "부적절한 논리 연산의 피연산자",
  "rule.saqt.c.cpp.1111.description": "continue 구문 사용 체커는 소스 코드에서 continue 구문을 사용한 경우를 검출합니다.\n잦은 continue 구문의 사용은 프로그램의 실행 경로를 추적하기 어렵게 만듭니다. 이로 인해 의도하지 않은 제어 흐름이 만들어져 프로그램이 오동작할 수 있습니다.\ncontinue 문을 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1111.example.0.dangerous": "라인 4: continue 구문을 사용했습니다.",
  "rule.saqt.c.cpp.1111.example.0.safe": "라인 3: continue 구문이 필요하지 않도록 로직을 수정합니다.",
  "rule.saqt.c.cpp.1111.name": "continue 구문 사용",
  "rule.saqt.c.cpp.1112.description": "누락된 switch 구문 내 default 케이스 체커는 switch 구문의 마지막 절이 default 절이 아닌 경우를 검출합니다.\n이 규칙의 검출 범위는 default 절 자체가 없는 경우도 포함됩니다.\nswitch 구문이 default 절로 끝나도록 코드를 작성합니다.",
  "rule.saqt.c.cpp.1112.example.0.dangerous": "라인 2: switch 구문에 default 절이 포함되지 않았습니다.",
  "rule.saqt.c.cpp.1112.example.0.safe": "라인 12: switch 구문의 마지막에 default 절을 추가합니다.",
  "rule.saqt.c.cpp.1112.name": "누락된 switch 구문 내 default 케이스",
  "rule.saqt.c.cpp.1112.option.allow_leading_default.description": "default를 맨 앞에 배치하는 것을 허용합니다.",
  "rule.saqt.c.cpp.1112.option.allow_leading_default.name": "맨 앞에 default 허용",
  "rule.saqt.c.cpp.1122.description": "너무 높은 포인터 단계 체커는 포인터 변수 선언 시 포인터의 레벨이 2를 초과하는 선언을 검출합니다.\n포인터는 접근하려는 깊이에 따라 이중 포인터나 삼중 포인터 이상을 선언할 수 있습니다.\n포인터는 최대 이중 포인터까지만 선언하여 사용하도록 합니다.",
  "rule.saqt.c.cpp.1122.example.0.dangerous": "라인 2: 3레벨의 포인터를 선언했습니다.",
  "rule.saqt.c.cpp.1122.example.0.safe": "라인 2: 2레벨 이하의 포인터를 선언하도록 합니다.",
  "rule.saqt.c.cpp.1122.name": "너무 높은 포인터 단계",
  "rule.saqt.c.cpp.1132.description": "너무 복잡한 함수 체커는 함수가 매우 복잡한 방법으로 선언되어 있는 경우를 검출합니다.\n여기서 복잡한 방법이란 반환 타입이나 하나 이상의 매개 변수에 typedef를 사용하지 않고 함수 포인터를 선언하는 것을 가리킵니다.\n복잡한 함수 선언에서 typedef를 사용하여 반환 타입이나 매개 변수를 분리하거나, 함수 포인터를 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1132.example.0.dangerous": "라인 1: signal() 함수 포인터 선언이 너무 복잡합니다.",
  "rule.saqt.c.cpp.1132.example.0.safe": "라인 1: 매개 변수로 사용한 함수 포인터를 typedef로 선언하여 사용합니다.",
  "rule.saqt.c.cpp.1132.name": "너무 복잡한 함수",
  "rule.saqt.c.cpp.1176.description": "논리 연산의 피연산자로 사용된 비 불린 값 체커는 논리 연산자들의 피연산자 타입이 Boolean이 아닌 수식을 검출합니다.\n여기서 논리 연산자란 !, &&, || 연산자 등을 의미합니다.\n논리 연산자의 피연산자 타입은 항상 Boolean이 오도록 수식을 수정합니다.",
  "rule.saqt.c.cpp.1176.example.0.dangerous": "라인 3: && 연산자의 피연산자로 Boolean 타입이 아닌 x를 사용했습니다.",
  "rule.saqt.c.cpp.1176.example.0.safe": "라인 3: && 연산자의 피연산자는 항상 Boolean 타입이 되도록 합니다.",
  "rule.saqt.c.cpp.1176.name": "논리 연산의 피연산자로 사용된 비 불린 값",
  "rule.saqt.c.cpp.1177.description": "여러 개의 break 구문 체커는 break 구문을 두 번 이상 사용한 반복문을 검출합니다.\n반복문 내에서 종료 제약의 수를 제한하는 것은 훌륭한 구조화 프로그래밍입니다. 하나의 break 문만 반복문에서 사용할 수 있습니다.\n반복문 내에서 break 구문이 여러 번 동작하는 것은 프로그램의 구조적인 측면에서 좋지 못한 방법입니다. 이러한 사용 방법은 제어 흐름을 복잡하게 만듭니다.\n반복문 내에서는 break 구문을 최대 한 번만 사용하도록 합니다.",
  "rule.saqt.c.cpp.1177.example.0.dangerous": "라인 7: break 구문을 사용했습니다.\n라인 10: break 구문을 사용했습니다. 하나의 반복문 안에서 break 구문이 두 번 사용되었습니다.",
  "rule.saqt.c.cpp.1177.example.0.safe": "라인 5: 반복문 안에서는 break 구문을 최대 한 번만 사용하도록 합니다.",
  "rule.saqt.c.cpp.1177.name": "여러 개의 break 구문",
  "rule.saqt.c.cpp.1180.description": "중첩된 블록 내 케이스 구문 체커는 switch 구문이 아닌 다른 복합 구문에서 case 구문이나 같은 유형인 default 구문을 사용한 경우를 검출합니다.\ncase 구문이나 default 구문은 반드시 switch 구문 내에서만 사용하도록 합니다.",
  "rule.saqt.c.cpp.1180.example.0.dangerous": "라인 6: case 구문을 switch 구문이 아닌 case 구문의 본문에서 사용했습니다.",
  "rule.saqt.c.cpp.1180.example.0.safe": "라인 3: 모든 case 구문의 상위 복합문이 switch 구문이 되도록 합니다.",
  "rule.saqt.c.cpp.1180.name": "중첩된 블록 내 케이스 구문",
  "rule.saqt.c.cpp.1181.description": "누락된 파라미터 식별자 체커는 식별자를 가지지 않은 매개 변수가 있는 함수 프로토타입 선언을 검출합니다.\n함수 프로토타입 선언 시 모든 매개 변수가 식별자를 가지도록 작성합니다.",
  "rule.saqt.c.cpp.1181.example.0.dangerous": "라인 1: 2번째 매개 변수의 식별자가 없습니다.\n라인 2: 모든 매개 변수의 식별자가 없습니다.",
  "rule.saqt.c.cpp.1181.example.0.safe": "라인 1: 모든 매개 변수의 식별자를 작성합니다.\n라인 2: 모든 매개 변수의 식별자를 작성합니다.",
  "rule.saqt.c.cpp.1181.name": "누락된 파라미터 식별자",
  "rule.saqt.c.cpp.1182.description": "일치하지 않는 인자 이름 체커는 함수 선언과 정의에서 매개 변수의 식별자가 서로 다른 경우를 검출합니다.\n함수 선언과 정의에서 같은 매개 변수는 같은 식별자를 가지도록 작성합니다.",
  "rule.saqt.c.cpp.1182.example.0.dangerous": "라인 1: func2() 함수를 선언했습니다.\n라인 2: func2() 함수를 정의했습니다. 하지만 라인 1의 선언과 비교했을 때 매개 변수 식별자가 다릅니다.",
  "rule.saqt.c.cpp.1182.example.0.safe": "라인 2: 함수 선언과 정의시의 매개 변수 이름을 모두 동일하게 유지합니다.",
  "rule.saqt.c.cpp.1182.name": "일치하지 않는 인자 이름",
  "rule.saqt.c.cpp.1185.description": "후행하는 포함 구문 체커는 include 전처리 구문이 파일 최상단에 위치하지 않은 경우를 검출합니다.\n이때 파일 최상단에 다른 전처리 구문이나 주석이 오는 경우는 예외로 하도록 합니다.\n예외를 제외하고 항상 파일 최상단에는 include 전처리 구문이 오도록 합니다.",
  "rule.saqt.c.cpp.1185.example.0.dangerous": "라인 2: include 전처리 구문 이전에 라인 2에서 전역 변수를 선언했습니다.",
  "rule.saqt.c.cpp.1185.example.0.safe": "라인 2: include 전처리 구문은 다른 전처리 구문이나 주석을 제외하고 항상 파일 최상단에 와야 합니다.",
  "rule.saqt.c.cpp.1185.name": "후행하는 포함 구문",
  "rule.saqt.c.cpp.1208.description": "일관성 없는 파라미터 선언 체커는 함수를 선언할 때 매개 변수 목록을 일관성있게 작성하지 않은 경우를 검출합니다.\n매개 변수 선언이 일관성이 있어야 합니다. 일관성이 없는 매개 변수 선언은 소스 코드의 가독성을 떨어트리게 됩니다.\n매개 변수를 일관성 있게 선언합니다.",
  "rule.saqt.c.cpp.1208.example.0.dangerous": "라인 1: 2번째 매개 변수에 식별자가 없습니다.",
  "rule.saqt.c.cpp.1208.example.0.safe": "라인 1: 모든 매개 변수에 식별자가 있어야 합니다.",
  "rule.saqt.c.cpp.1208.name": "일관성 없는 파라미터 선언",
  "rule.saqt.c.cpp.1230.description": "비 const 멤버 함수 체커는 상태를 변경하지 않으며 const 선언이 없는 클래스 메소드를 검출합니다.\n메소드를 const로 선언하는 것은 외부에서 보았을 때 이 메소드가 내부 상태를 변경하지 않는다는 보장입니다. 만약 위 사항을 위반하면 컴파일러는 컴파일 오류를 발생시킵니다.\nconst 선언이 없는 메소드는 외부에서 보았을 때 객체의 상태를 바꿀 수 있다는 의미로 보입니다. 따라서 상태를 변경하지 않는 메소드도 이러한 오해를 받을 수 있습니다. 메소드를 정확한 인터페이스로 선언하는 것은 개발자에게 불필요한 오해를 줄이는 것과 동시에 컴파일러가 최적화하는데 도움을 주기도 합니다.\n상태를 변경하지 않는 메소드는 반드시 const로 선언하도록 합니다. 다만 내부적으로 사용하는 제어 변수 등을 const로 선언된 함수에서 변경이 필요한 경우가 있습니다. 이 경우에는 대상 변수를 mutable로 선언합니다. mutable로 선언한 변수는 const로 선언된 함수 내에서 상태를 변경할 수 있습니다.",
  "rule.saqt.c.cpp.1230.example.0.dangerous": "라인 4: 메소드 내부에서 상태를 변경하지 않으나 const로 선언하지 않았습니다.\n라인 5: flag 상태를 변경하나, 해당 변수는 mutable로 선언했습니다. 즉, 메소드 내부에서는 mutable 변수 외의 다른 상태 변경이 없으나 const로 선언하지 않았습니다.",
  "rule.saqt.c.cpp.1230.example.0.safe": "라인 4: 메소드를 const로 선언하도록 합니다.\n라인 5: 메소드를 const로 선언하도록 합니다.",
  "rule.saqt.c.cpp.1230.name": "비 const 멤버 함수",
  "rule.saqt.c.cpp.1252.description": "헤더 파일 내 외부 전역 변수 선언 체커는 헤더 파일 선언 규칙대로 헤더 파일에서 선언을 구성하지 않은 경우를 검출합니다.\n헤더 파일 선언 규칙은 다음과 같습니다. 모든 인라인되지 않은 함수, 클래스, 변수, 열거형 및 열거형 상수, 이름이 있는 네임스페이스 영역, 외부 링크를 포함한 객체는 헤더 파일에서 선언되어야 합니다. 객체 정의 및 이름이 없는 네임스페이스에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n헤더 파일에서 필수 항목을 작성하지 않은 함수나 객체는 다른 파일에서 사용할 수 없습니다.\n헤더 파일 선언 규칙대로 헤더 파일을 구성하도록 합니다.",
  "rule.saqt.c.cpp.1252.example.0.dangerous": "라인 4: 외부 링크를 포함한 전역 변수를 헤더 파일에서 정의했습니다.",
  "rule.saqt.c.cpp.1252.example.0.safe": "라인 4: 전역 변수의 선언만 작성하도록 합니다.",
  "rule.saqt.c.cpp.1252.name": "헤더 파일 내 외부 전역 변수 선언",
  "rule.saqt.c.cpp.1252.option.as_Misra2008.description": "헤더에 정의되지 않은 모든 global변수들을 검사합니다.",
  "rule.saqt.c.cpp.1252.option.as_Misra2008.name": "misra2008 스펙으로 동작",
  "rule.saqt.c.cpp.1253.description": "헤더 파일 내 누락된 인라인 함수 정의 체커는 헤더 파일 인라인 정의 규칙대로 헤더 파일에서 인라인 정의를 수행하지 않은 경우를 검출합니다.\n헤더 파일 인라인 정의 규칙은 다음과 같습니다. 인라인 함수는 헤더 파일에서 선언하고 정의해야 합니다. 이름이 없는 네임스페이스에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n인라인 함수는 프로그램의 성능을 위해 함수의 내용을 함수 호출이 아닌 함수 내용을 대체 시켜 성능상의 향상을 얻는 방법입니다. 따라서 함수 구현의 가시성을 확보해 두는 것이 좋습니다.\n헤더 파일 인라인 정의 규칙대로 헤더 파일을 구성하도록 합니다.",
  "rule.saqt.c.cpp.1253.example.0.dangerous": "라인 2: 헤더 파일에서 인라인 함수를 선언만 했습니다.",
  "rule.saqt.c.cpp.1253.example.0.safe": "라인 2: 헤더 파일에서 인라인 함수를 정의하도록 합니다.",
  "rule.saqt.c.cpp.1253.name": "헤더 파일 내 누락된 인라인 함수 정의",
  "rule.saqt.c.cpp.1254.description": "소스 파일 내 템플릿 정의 체커는 헤더 파일 템플릿 정의 규칙대로 헤더 파일에서 템플릿 정의를 하지 않은 경우를 검출합니다.\n헤더 파일 템플릿 정의 규칙은 다음과 같습니다. 템플릿 클래스나 함수는 헤더 파일에서 선언 및 정의를 해야 합니다. 이름이 없는 네임스페이서에서의 선언과 정의는 헤더 파일에서 작성하지 않아야 합니다.\n템플릿 정의는 인스턴스화하기 위해서는 다른 외부 링크에서도 템플릿 정의를 볼 수 있어야 합니다. 만약 명시적 인스턴스화 모델을 지원하는 컴파일러일 경우 반드시 템플릿 정의가 헤더 파일에 포함될 필요는 없습니다. 하지만 보편적인 관점에서는 템플릿 정의를 헤더 파일에 두는 것이 더 나은 방법입니다.\n헤더 파일 템플릿 정의 규칙대로 헤더 파일을 구성하도록 합니다.",
  "rule.saqt.c.cpp.1254.example.0.dangerous": "라인 2: 소스 파일에 템플릿을 정의했습니다.",
  "rule.saqt.c.cpp.1254.example.0.safe": "라인 2: 헤더 파일에 템플릿을 정의하도록 합니다.",
  "rule.saqt.c.cpp.1254.name": "소스 파일 내 템플릿 정의",
  "rule.saqt.c.cpp.1262.description": "불분명한 식별자 체커는 고유하지 않은 식별자를 사용할 때 검출합니다.\n각각의 식별자가 고유한지 확인하도록 합니다. 식별자의 유사성은 가독성을 떨어트리게 되며 이로 인한 실수가 발생할 수 있습니다.\n각 식별자를 고유하게 사용합니다.",
  "rule.saqt.c.cpp.1262.example.0.dangerous": "라인 2: C라는 식별자가 C 클래스 타입 이름을 가리게 됩니다. 실제로 이것은 C++에서 유효한 코드입니다.",
  "rule.saqt.c.cpp.1262.example.0.safe": "라인 2: 고유한 식별자 명을 사용하도록 합니다.",
  "rule.saqt.c.cpp.1262.name": "불분명한 식별자",
  "rule.saqt.c.cpp.1263.description": "모호한 문법 사용 체커는 함수 스타일 캐스팅과 똑같이 생긴 문법으로 변수를 선언한 경우를 검출합니다.\n함수 스타일 캐스팅과 선언간의 애매한 문법을 사용을 하지 않도록 합니다. 이 규칙은 선언 시에 모호한 괄호를 사용하지 않는 것입니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n변수 선언 시 괄호를 사용하지 않습니다.",
  "rule.saqt.c.cpp.1263.example.0.dangerous": "라인 6: b 선언 시에 괄호를 사용했습니다.",
  "rule.saqt.c.cpp.1263.example.0.safe": "라인 6: 괄호를 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1263.name": "모호한 문법 사용",
  "rule.saqt.c.cpp.1264.description": "식별자 내 혼란스러운 문자 체커는 동일한 식별자에서 숫자 '1'와 소문자 'l', 숫자 '0'과 대문자 'O'를 같이 쓰면 검출합니다.\n동일한 식별자에서 숫자 '1'와 소문자 'l', 숫자 '0'과 대문자 'O'를 같이 쓰지 않도록 합니다. 식별자를 읽을 때 혼동을 줄 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n동일한 식별자에서 숫자 '1'와 소문자 'l', 숫자 '0'과 대문자 'O'를 같이 쓰지 않도록 합니다.",
  "rule.saqt.c.cpp.1264.example.0.dangerous": "라인 1: 소문자 'l'과 숫자 '1'이 같은 식별자 내에서 사용되었습니다.",
  "rule.saqt.c.cpp.1264.example.0.safe": "라인 1: 소문자 'l'과 숫자 '1'을 같은 식별자 내에서 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.1264.name": "식별자 내 혼란스러운 문자",
  "rule.saqt.c.cpp.1265.description": "하나의 타입 정의에 작성된 여러 개의 타입 이름 체커는 typedef 선언 시 하나 이상의 타입을 선언한 경우를 검출합니다.\ntypedef 선언 시 하나의 타입만 선언하도록 합니다. '&'나 '*'의 경우 인접한 선언자에만 적용되게 됩니다. 따라서 typedef시 여러 개의 타입을 선언하는 것은 혼란스럽고 유지보수에 어려움이 있을 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\ntypedef 선언 시 하나의 타입만 선언하도록 합니다.",
  "rule.saqt.c.cpp.1265.example.0.dangerous": "라인 1: pointer의 경우 int 포인터 형으로, value의 경우 int 형 타입이 됩니다. 이는 프로그래머의 의도와 다를 수 있습니다.",
  "rule.saqt.c.cpp.1265.example.0.safe": "라인 1: typedef 시 하나의 타입만 선언하도록 합니다.",
  "rule.saqt.c.cpp.1265.name": "하나의 타입 정의에 작성된 여러 개의 타입 이름",
  "rule.saqt.c.cpp.1266.description": "사용자 정의 배열 타입 체커는 배열 타입을 typedef로 선언한 경우를 검출합니다.\n배열 타입을 typedef로 선언하지 않도록 합니다. 배열 형식을 typedef로 선언하여 사용할 경우, 경계값의 확인 및 delete시 잘못 사용할 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\ntypedef로 배열 타입을 선언하지 않습니다.",
  "rule.saqt.c.cpp.1266.example.0.dangerous": "라인 6: delete로 객체를 삭제했습니다. 문맥만을 놓고 보았을때는 문제 없어 보이나, ArrayType은 배열타입을 typedef 한 것입니다. 따라서 delete[]가 호출되어야 합니다.",
  "rule.saqt.c.cpp.1266.example.0.safe": "라인 1: 일반 타입으로 typedef 선언을 하도록 합니다.",
  "rule.saqt.c.cpp.1266.name": "사용자 정의 배열 타입",
  "rule.saqt.c.cpp.1267.description": "C 스타일 배열 사용 체커는 C 스타일의 배열을 사용한 변수 선언을 검출합니다.\nC 스타일의 배열은 범위를 벗어난 메모리에 액세스 하는 경우 정외되지 않은 동작을 일으킵니다. 또한, C 스타일의 배열은 배열 크기의 기록을 가지지 않으며 이로인해 문제가 발생할 수 있습니다.\nC 스타일 배열 대신 벡터와 같은 STL 컨테이너를 사용하는 것이 좋습니다.",
  "rule.saqt.c.cpp.1267.example.0.dangerous": "라인 1: 배열을 사용했습니다.",
  "rule.saqt.c.cpp.1267.example.0.safe": "라인 1: 배열 대신 벡터를 사용하도록 합니다.\n라인 2: 벡터는 가변적인 메모리 공간을 제공하며, resize() 메소드 사용 시 크기와 가용 공간을 변경할 수 있습니다.",
  "rule.saqt.c.cpp.1267.name": "C 스타일 배열 사용",
  "rule.saqt.c.cpp.1269.description": "* 및 & 토큰 규칙 위반 체커는 포인터 또는 참조자를 선언할 때 '*'와 '&'를 변수 이름에 붙인 경우를 검출합니다.\n포인터 또는 참조자 선언 시 '*'와 '&'는 변수 이름 대신 타입 이름에 붙이도록 합니다. 이렇게 할 경우 각각의 토큰이 주는 의미가 타입의 일부임을 강조하는데 도움이 됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n포인터 또는 참조자 선언 시 '*'와 '&'는 변수 이름 대신 타입 이름에 붙이도록 합니다.",
  "rule.saqt.c.cpp.1269.example.0.dangerous": "라인 1: *가 변수 이름에 붙어있습니다.",
  "rule.saqt.c.cpp.1269.example.0.safe": "라인 1: *를 타입 이름에 붙이도록 합니다.",
  "rule.saqt.c.cpp.1269.name": "* 및 & 토큰 규칙 위반",
  "rule.saqt.c.cpp.1270.description": "부호가 없는 타입 사용 체커는 부호없는 숫자 값을 사용한 경우를 검출합니다.\n부호없는 숫자 값 대신 signed 숫자 값 사용을 먼저 고려해야 합니다. 부호있는 정수와 부호없는 정수 간의 변환은 종종 알아채기 힘든 문제를 발생시킬 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nunsigned 숫자 값 대신 signed 숫자 값을 사용합니다.",
  "rule.saqt.c.cpp.1270.example.0.dangerous": "라인 1: unsigned 형 정수형을 사용했습니다.",
  "rule.saqt.c.cpp.1270.example.0.safe": "라인 1: signed 형 정수형을 사용하도록 합니다.",
  "rule.saqt.c.cpp.1270.name": "부호가 없는 타입 사용",
  "rule.saqt.c.cpp.1272.description": "부적절한 상수 값과 비교 체커는 변수와 상수를 비교할 때 상수가 오른쪽 피연산자로 사용된 경우를 검출합니다.\n변수와 상수를 비교할 때 상수값을 좌측에 두도록 합니다. C++에서는 종종 비교식에서 비교 연산자와 대입 연산자를 혼동하여 잘못 사용하기도 합니다. 상수값을 좌측에 둘 경우, 만약 비교 연산자를 사용해야 될 부분에서 대입 연산자를 사용해도 컴파일러가 이 오류를 검출하여 줍니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n변수와 상수를 비교할 때 상수값을 좌측에 두도록 합니다.",
  "rule.saqt.c.cpp.1272.example.0.dangerous": "라인 2: value를 좌측항에 두었습니다.",
  "rule.saqt.c.cpp.1272.example.0.safe": "라인 2: 상수값을 좌측항에 두도록 합니다.",
  "rule.saqt.c.cpp.1272.name": "부적절한 상수 값과 비교",
  "rule.saqt.c.cpp.1275.description": "삼항 연산자 사용 체커는 삼항 연산자를 사용하는 경우를 검출합니다.\n삼항 연산자를 사용하지 않도록 합니다. 복잡한 조건식을 평가하는데 가장 좋은 방법은 명시적으로 조건문을 사용하는 것입니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n삼항 연산자를 사용하지 않습니다.",
  "rule.saqt.c.cpp.1275.example.0.dangerous": "라인 3: 삼항 연산자를 사용하고 있습니다.",
  "rule.saqt.c.cpp.1275.example.0.safe": "라인 3: 삼항 연산자 대신 조건문을 사용하도록 합니다.",
  "rule.saqt.c.cpp.1275.name": "삼항 연산자 사용",
  "rule.saqt.c.cpp.1279.description": "비 정적으로 오버로딩된 new 연산자 체커는 클래스에서 정적으로 선언하지 않은 new 와 delete 연산자 오버로딩을 검출합니다.\nnew와 delete의 동작 구조 상 두 연산자는 기본적으로 정적입니다. 그러나 명시적으로 정적을 표시해 줄 경우 가독성에 도움이 됩니다.\nnew와 delete 연산자를 오버로딩할 경우 반드시 static 키워드를 붙여 정적으로 선언합니다.",
  "rule.saqt.c.cpp.1279.example.0.dangerous": "라인 3: new 연산자를 정적으로 선언하지 않았습니다.",
  "rule.saqt.c.cpp.1279.example.0.safe": "라인 3: new 연산자를 정적으로 선언합니다.",
  "rule.saqt.c.cpp.1279.name": "비 정적으로 오버로딩된 new 연산자",
  "rule.saqt.c.cpp.1281.description": "전처리 구문 공백 규칙 위반 체커는 전처리 지시자가 첫 번째 컬럼에서 시작하지 않거나 #과 전처리 지시자 이름 사이에 공백이 있는 경우를 검출합니다.\n이 규칙은 WRITE_DIRECTIVE_NESTED_PREPROCESSOR와 서로 상충됩니다. 두 규칙을 같이 사용하지 않도록 합니다.\n전처리 지시자는 첫 번째 컬럼에서 시작하여 #과 전처리 지시자 이름 사이에 공백이 없도록 합니다.\n전처리 지시자는 첫 번째 컬럼에서 시작하여 #과 전처리 지시자 이름 사이에 공백이 없도록 합니다.",
  "rule.saqt.c.cpp.1281.example.0.dangerous": "라인 1: 전처리 지시자의 시작이 첫 번째 컬럼이 아닙니다.",
  "rule.saqt.c.cpp.1281.example.0.safe": "라인 1: 첫 번째 컬럼에서 시작하도록 합니다.",
  "rule.saqt.c.cpp.1281.name": "전처리 구문 공백 규칙 위반",
  "rule.saqt.c.cpp.1282.description": "중첩된 전처리 구문 공백 규칙 위반 체커는 전처리 지시자가 첫 번째 컬럼에서 시작하지 않거나 #과 전처리 지시자 이름 사이에 공백이 없는 경우를 검출합니다.\n전처리 조건문 내부에 속하는 전처리 지시자는 첫 번째 컬럼에서 시작하여 #와 전처리 지시자 이름 사이에 공백을 넣도록 합니다.\n전처리 조건문 내부에 속하는 전처리 지시자는 첫 번째 컬럼에서 시작하여 #와 전처리 지시자 이름 사이에 공백을 넣도록 합니다.",
  "rule.saqt.c.cpp.1282.example.0.dangerous": "라인 2: #와 전처리 지시자 이름 사이에 공백이 없습니다.",
  "rule.saqt.c.cpp.1282.example.0.safe": "라인 2: #와 전처리 지시자 이름 사이에 공백을 넣도록 합니다.",
  "rule.saqt.c.cpp.1282.name": "중첩된 전처리 구문 공백 규칙 위반",
  "rule.saqt.c.cpp.1283.description": "#if 지시자 사용 체커는 if 전처리 구문이 사용된 경우를 검출합니다.\n전 처리 토큰의 특정 값을 통해 조건부 컴파일을 제어하면 오류 발생 확률이 높아집니다.\nif 전처리 구문 대신 ifdef, ifndef 전처리 구문을 사용하도록 합니다.",
  "rule.saqt.c.cpp.1283.example.0.dangerous": "라인 2: if 전처리 구문을 사용했습니다.",
  "rule.saqt.c.cpp.1283.example.0.safe": "라인 2: ifdef 전처리 구문을 사용하도록 합니다.",
  "rule.saqt.c.cpp.1283.name": "#if 지시자 사용",
  "rule.saqt.c.cpp.1286.description": "포함 구문 내 경로 지정자 체커는 #include 지시자에서 파일 이름에 경로 문자가 포함된 경우를 검출합니다.\n특정 디렉토리의 이름과 경로는 플랫폼 및 컴파일러를 통해 변경될 수 있습니다.\n#include 지시자에서 파일 이름에 경로 문자를 포함하지 않도록 합니다.",
  "rule.saqt.c.cpp.1286.example.0.dangerous": "라인 1: 헤더 파일 포함시에 경로문자를 삽입했습니다.",
  "rule.saqt.c.cpp.1286.example.0.safe": "라인 4: 메이크파일 에서 경로를 지정한 후 경로문자 없이 헤더 파일을 포함합니다.",
  "rule.saqt.c.cpp.1286.name": "포함 구문 내 경로 지정자",
  "rule.saqt.c.cpp.1288.description": "널 매크로 사용 체커는 널 매크로를 사용한 수식을 검출합니다.\n널 매크로는 많이 쓰이고 있긴 하나 C++ 표준에서는 존재하지 않습니다. 따라서 널 매크로는 이식성이 떨어지며 개발 환경에 따라 컴파일 오류가 발생할 수 있습니다.\n널 매크로 대신 0을 사용합니다. 만약 C++11을 지원하는 컴파일러를 사용하고 있는 경우 널ptr을 사용합니다.",
  "rule.saqt.c.cpp.1288.example.0.dangerous": "라인 2: 널 매크로를 사용했습니다.",
  "rule.saqt.c.cpp.1288.example.0.safe": "라인 2: 널 매크로 대신 0을 사용하도록 합니다.",
  "rule.saqt.c.cpp.1288.name": "널 매크로 사용",
  "rule.saqt.c.cpp.1302.description": "클래스 구성 규칙 위반 체커는 멤버 선언이 public, protected, private 순으로 되어 있지 않은 클래스를 검출합니다.\n보다 많은 사람들이 보게 될 내용이 클래스 선언 위쪽에 있는 것이 가독성을 향상시킬 수 있습니다. 예를 들어 클래스를 사용하는 사람은 public을, 클래스를 상속하여 사용하는 사람은 protected까지, 클래스를 구현하는 사람은 private 항목까지 볼 필요가 있습니다.\npublic, protected, private 순서로 클래스 항목들의 접근 권한을 정렬합니다. 이것은 메소드와 필드 양쪽다 해당합니다.",
  "rule.saqt.c.cpp.1302.example.0.dangerous": "라인 5: private 권한을 가진 멤버 이후에 public 권한을 가진 멤버가 나타났습니다.",
  "rule.saqt.c.cpp.1302.example.0.safe": "라인 3: 권한 순서를 규칙에서 명시한 대로 수정합니다.",
  "rule.saqt.c.cpp.1302.name": "클래스 구성 규칙 위반",
  "rule.saqt.c.cpp.1311.description": "읽기 어려운 식별자 체커는 시각적으로 비슷하여 구별하기 어려운 식별자를 사용하는 경우를 검출합니다.\n문자 집합을 표시하기 위해 사용하는 글꼴에 따라 문자가 다르더라도 특정 글리프가 비슷하게 표시될 수 있습니다. 그러면 개발자가 식별자를 구분하기 어렵습니다.\n시각적으로 구별하기 쉬운 식별자를 사용해야 합니다.",
  "rule.saqt.c.cpp.1311.example.0.dangerous": "라인 2: foo.h 에서 id_O (대문자 O)와 bar.h의 id_0(숫자 0)를 혼동할 위험성이 있습니다.",
  "rule.saqt.c.cpp.1311.example.0.safe": "라인 2: 혼동되지 않는 문자와 숫자로 식별자 이름을 적어야 합니다.",
  "rule.saqt.c.cpp.1311.name": "읽기 어려운 식별자",
  "rule.saqt.c.cpp.1313.description": "소스 파일 내 타입 선언 체커는 소스 파일이 아닌 헤더 파일에 정의하도록 규정된 것들을 소스 파일에서 선언한 경우를 검출합니다.\n대체로 다른 소스 파일과 공유될 가능성이 있는 모든 정의는 헤더 파일에서 이루어져야 합니다. 그래야 각 소스 파일에 그 헤더 파일을 포함시키는 방식으로 서로 인터페이스를 공유할 수 있습니다.\n객체 정의 및 이름이 없는 네임스페이스에서의 선언과 정의를 제외한 모든 것을 헤더 파일에 선언하도록 합니다. 구체적으로는 다음의 항목들을 헤더 파일에서 선언해야 합니다: 모든 인라인되지 않은 함수, 클래스, 변수, 열거형 및 열거형 상수, 이름이 있는 네임스페이스 영역 부분, 외부 링크를 가지는 것들.",
  "rule.saqt.c.cpp.1313.example.0.dangerous": "라인 2: 열거형 타입을 소스 파일에서 선언했습니다.\n라인 3: 클래스 타입을 소스 파일에서 선언했습니다.",
  "rule.saqt.c.cpp.1313.example.0.safe": "라인 2: 열거형 타입은 헤더 파일에서 선언해야 합니다.\n라인 3: 클래스 타입은 헤더 파일에서 선언해야 합니다.",
  "rule.saqt.c.cpp.1313.name": "소스 파일 내 타입 선언",
  "rule.saqt.c.cpp.1361.description": "익명 네임스페이스 밖의 비 멤버 함수 체커는 외부 인터페이스에 속해있지 않은 비 멤버 함수가 소스 파일에서 이름이 없는 네임스페이스 안에 들어있지 않은 경우를 검출합니다.\n서로 다른 번역 단위에서 링크될 필요가 없는 함수를 만드는 기본적인 방법은 이름이 없는 네임스페이스 내에 함수 정의를 배치하는 것입니다. 명시적으로 정적 함수로 선언하는 것은 더 이상 사용되지 않습니다.\n소스 파일 전용 함수를 선언할 때 static 키워드를 사용하는 대신 이름 없는 네임스페이스를 사용합니다.",
  "rule.saqt.c.cpp.1361.example.0.dangerous": "라인 2: 소스 파일에서만 사용되는 비 멤버 함수를 정적 함수로 선언했습니다.",
  "rule.saqt.c.cpp.1361.example.0.safe": "라인 3: 소스 파일에서만 사용되는 비 멤버 함수는 이름 없는 네임스페이스 안에 선언합니다.",
  "rule.saqt.c.cpp.1361.name": "익명 네임스페이스 밖의 비 멤버 함수",
  "rule.saqt.c.cpp.1362.description": "구조체 내 멤버 함수 체커는 구조체에 멤버 함수를 포함시키거나 멤버에 접근 제어자를 사용하는 경우를 검출합니다.\n구조체를 클래스처럼 다루는 것은 아무런 이점이 없습니다. 구조체는 일반적으로 POD 형식을 지정하는데 사용되어야 합니다. 구조체와 공용체의 멤버의 기본 접근 제어는 public이며 이를 그대로 유지하여 사용합니다.\n접근 제어자나 멤버 함수를 활용하고싶다면 구조체가 아닌 클래스로 선언해야 합니다.",
  "rule.saqt.c.cpp.1362.example.0.dangerous": "라인 2: 구조체 선언 안에서 protected 접근 제어자를 사용했습니다.\n라인 3: 구조체 안에 멤버 함수를 선언했습니다.",
  "rule.saqt.c.cpp.1362.example.0.safe": "라인 1: 구조체의 내부는 변수로만 구성하도록 합니다.",
  "rule.saqt.c.cpp.1362.name": "구조체 내 멤버 함수",
  "rule.saqt.c.cpp.1363.description": "열거형 타입과 정수 값 비교 체커는 열거형을 내부적인 정수 표현값을 사용하여 명시적으로 비교하는 경우를 검출합니다.\n열거형을 내부 표현 정수로 표현하는 것보다 열거형에 선언된 상징적인 이름을 사용하는 것이 문서화나 유지보수에 더 유리합니다. 열거형의 정수값에 의존한 코드를 작성할 경우 열거형 목록을 변경하려면 코드 전체를 고쳐야 합니다.\n열거형의 정수값에 의존하지 않고 각 열거형 항목과 비교하도록 합니다.",
  "rule.saqt.c.cpp.1363.example.0.dangerous": "라인 4: 열거형을 정수값과 비교했습니다.",
  "rule.saqt.c.cpp.1363.example.0.safe": "라인 4: 열거형을 정수값과 연관짓지 않도록 합니다.",
  "rule.saqt.c.cpp.1363.name": "열거형 타입과 정수 값 비교",
  "rule.saqt.c.cpp.1373.description": "상위 범위 변수 이름을 포함하는 하위 범위 변수 이름 체커는 하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하는 경우를 검출합니다.\n하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하지 않도록 작성합니다.",
  "rule.saqt.c.cpp.1373.example.0.dangerous": "라인 3: 변수 이름 'currentNumber' 이 라인 1의 변수 이름 'Number' 라는 문자열을 포함하고 있습니다.",
  "rule.saqt.c.cpp.1373.example.0.safe": "라인 3: 하위 범위의 변수 이름이 상위 범위의 변수 이름을 포함하지 말아야 합니다.",
  "rule.saqt.c.cpp.1373.name": "상위 범위 변수 이름을 포함하는 하위 범위 변수 이름",
  "rule.saqt.c.cpp.1374.description": "변수 명명 규칙 위반(BSSC) 체커는 변수 이름이 BSSC 규칙을 위반하는 경우를 검출합니다.\nBSSC 변수 명명 규칙은 다음과 같습니다. 변수의 이름은 첫 번째 단어를 제외하고, 단어의 시작을 대문자로, 하나 혹은 그 이상의 단어로 구성해야 합니다.\nBSSC 변수 명명 규칙을 따라 변수의 이름은 첫 번째 단어를 제외하고, 단어의 시작을 대문자로, 하나 혹은 그 이상의 단어로 구성하도록 합니다.",
  "rule.saqt.c.cpp.1374.example.0.dangerous": "라인 1: 변수 이름이 대문자로 시작합니다.",
  "rule.saqt.c.cpp.1374.example.0.safe": "라인 1: 변수 이름이 대문자로 시작하지 않고, 하나 이상의 단어로 구성되도록 합니다.",
  "rule.saqt.c.cpp.1374.name": "변수 명명 규칙 위반(BSSC)",
  "rule.saqt.c.cpp.1375.description": "함수 명명 규칙 위반 체커는 함수의 이름이 BSSC 함수 명명 규칙을 위반하는 경우를 검출합니다.\nBSSC 함수 명명 규칙은 다음과 같습니다. 함수의 이름은 각 단어 시작을 대문자로 하고 , 하나 혹은 그 이상의 단어로 구성해야 합니다.\nBSSC 함수 명명 규칙을 따라 함수의 이름은 각 단어 시작을 대문자로 하고 , 하나 혹은 그 이상의 단어로 구성하도록 합니다.",
  "rule.saqt.c.cpp.1375.example.0.dangerous": "라인 1: 함수 이름이 소문자로 시작합니다.",
  "rule.saqt.c.cpp.1375.example.0.safe": "라인 1: 함수 첫글자를 대문자로 하고 하나 이상의 단어로 구성되도록 합니다.",
  "rule.saqt.c.cpp.1375.name": "함수 명명 규칙 위반",
  "rule.saqt.c.cpp.1376.description": "사용자 정의 타입 명명 규칙 위반 체커는 사용자 정의 타입 이름이 T로 시작하지 않거나, _t 혹은 _type으로 끝나지 않는 경우를 검출합니다.\n사용자 정의 타입 이름을 T로 시작하게 하거나, 끝이 _t 혹은 _type으로 끝나도록 작성합니다.",
  "rule.saqt.c.cpp.1376.example.0.dangerous": "라인 1: 사용자 정의 타입 이름이 T로 시작하지 않고, _t 또는 _type으로 끝나지 않습니다.",
  "rule.saqt.c.cpp.1376.example.0.safe": "라인 1: 사용자 정의 타입 이름을 _t로 끝나게 합니다.",
  "rule.saqt.c.cpp.1376.name": "사용자 정의 타입 명명 규칙 위반",
  "rule.saqt.c.cpp.1377.description": "클래스 명명 규칙 위반 체커는 클래스 이름이 C로 시작하지 않거나, 끝이 _c 혹은 _class로 끝나지 않는 경우를 검출합니다.\n클래스 이름을 C로 시작하게 하거나, 끝이 _c 혹은 _class로 끝나도록 작성합니다.",
  "rule.saqt.c.cpp.1377.example.0.dangerous": "라인 1: 클래스 이름이 클래스 이름이 C로 시작하지 않고, 끝이 _c 혹은 _class로 끝나지 않습니다.",
  "rule.saqt.c.cpp.1377.example.0.safe": "라인 1: 클래스 이름을 C로 시작하게 합니다.",
  "rule.saqt.c.cpp.1377.name": "클래스 명명 규칙 위반",
  "rule.saqt.c.cpp.1381.description": "부적절한 접근 지정자 체커는 접근 한정자가 올바른 순서로 되어 있지 않은 클래스를 검출합니다.\n여기서 올바른 순서란 접근 한정자를 public, protected, private 순으로 각각 한 번씩 사용한 것을 의미합니다.\n클래스에서 접근 한정자를 작성할 때 public, protected, private 순서로 작성합니다. 또한 이 항목들은 반드시 한 번씩만 사용해야 합니다.",
  "rule.saqt.c.cpp.1381.example.0.dangerous": "라인 3: public 키워드를 사용했습니다.\n라인 10: public 키워드를 다시 사용했습니다.\n라인 14: CExample 클래스는 public 키워드만 사용했습니다.",
  "rule.saqt.c.cpp.1381.example.0.safe": "라인 1: public, protected, private 키워드를 순서대로 한 번씩 사용합니다.\n라인 13: 접근 한정자를 사용하는 멤버가 없더라도 모든 키워드를 순서대로 한 번씩 사용합니다.",
  "rule.saqt.c.cpp.1381.name": "부적절한 접근 지정자",
  "rule.saqt.c.cpp.1415.description": "이른 변수 정의 체커는 지역 변수를 사용 직전보다 이르게 선언하여 오랫동안 범위에 살아있게 되는 경우를 검출합니다.\n변수가 사용되기 직전까지 변수 정의를 연기하면 생성 및 소멸의 불필요한 비용을 아낄 수 있습니다. 또한 사용하는 변수가 선언된 위치를 찾는 데에도 도움을 줍니다.\n지역 변수를 최대한 사용 직전에 선언하여 활성 범위(live range)를 최소화합니다.",
  "rule.saqt.c.cpp.1415.example.0.dangerous": "라인 6: x 변수의 정의를 연기할 수 있습니다. 다음에 입력한 if 구문의 블록 안에서만 해당 객체를 사용합니다.\n라인 16: 위의 if 구문 블록과 달리 switch, for, while, do-while 구문의 블록은 예외로 합니다. switch 블록의 안쪽에서는 변수 선언이 불가능하며, 반복문 내에서 변수를 정의하는 것은 많은 비용을 발생시킬 수 있습니다.",
  "rule.saqt.c.cpp.1415.example.0.safe": "라인 8: 변수의 정의를 최대한 연기하도록 합니다.",
  "rule.saqt.c.cpp.1415.name": "이른 변수 정의",
  "rule.saqt.c.cpp.1418.description": "쓸모없는 형변환 체커는 이미 해당 타입인 값을 다시 그 타입으로 명시적 캐스팅하는 경우를 검출합니다.\n명시적 캐스팅은 어떤 식의 계산 결과값의 타입이 그 결과값을 사용할 부분에서 요구하는 타입과 정확히 일치하지 않을때, 타입 시스템에게 이것은 작성자가 의도한 타입 불일치이니 적절히 변환하여 해석하라고 알려주는 역할을 합니다. 이미 해당 식이 특정한 타입을 가지고 있다면 그 타입으로 다시 명시적으로 캐스팅하는 것은 아무 의미 없는 행동이며 코드를 이해하기 어렵게 만듭니다.\n불필요한 명시적 캐스팅을 삭제합니다.",
  "rule.saqt.c.cpp.1418.example.0.dangerous": "라인 3: y의 값은 이미 int 타입이므로 int 타입으로의 명시적 캐스팅을 할 필요가 없습니다.",
  "rule.saqt.c.cpp.1418.example.0.safe": "라인 3: 불필요한 명시적 캐스팅을 삭제합니다.",
  "rule.saqt.c.cpp.1418.name": "쓸모없는 형변환",
  "rule.saqt.c.cpp.1428.description": "부적절한 매크로 이름 체커는 매크로로 선언된 이름에 대문자 알파벳과 밑줄(_)이 아닌 문자가 포함된 경우를 검출합니다.\n매크로 이름에는 대문자와 밑줄(_)만을 사용합니다.",
  "rule.saqt.c.cpp.1428.example.0.dangerous": "라인 2: 매크로 이름에 소문자가 포함되었습니다.",
  "rule.saqt.c.cpp.1428.example.0.safe": "라인 2: 대문자 알파벳과 밑줄(_)만 사용하여 매크로 이름을 지었습니다.",
  "rule.saqt.c.cpp.1428.name": "부적절한 매크로 이름",
  "rule.saqt.c.cpp.1428.option.ignore_list.description": "분석 제외 매크로를 설정합니다.",
  "rule.saqt.c.cpp.1428.option.ignore_list.name": "분석 제외 매크로",
  "rule.saqt.c.cpp.1657.description": "지정되지 않은 예외 생성 체커는 예외 사양 기술과 실제로 던지는 예외의 타입이 다른 함수 선언을 검출합니다.\n예외 사양은 함수 선언 시 이 함수가 던질 수 있는 예외의 타입을 명시하는 것입니다.\n예외를 처리하지 않으면 프로그램이 강제로 종료될 수 있습니다.\n예외 사양에 기술되지 않은 모든 예외 던짐을 처리해야 합니다.",
  "rule.saqt.c.cpp.1657.example.0.dangerous": "라인 1: 예외 사양에 int 타입을 명시했습니다.\n라인 3: float 타입을 예외로 던졌습니다.",
  "rule.saqt.c.cpp.1657.example.0.safe": "라인 3: 예외 사양에 명시하지 않은 예외는 던지지 않습니다. 혹은 예외 사양에 작성하지 않은 모든 타입에 대하여 예외 처리를 해야 합니다.",
  "rule.saqt.c.cpp.1657.name": "지정되지 않은 예외 생성",
  "rule.saqt.c.cpp.1947.description": "누락된 sizeof 함수 호출 체커는 특정 함수 호출 시 특정 인자가 sizeof 연산자가 아닌 수식을 검출합니다.\n이때 특정 함수의 명칭과 인자의 인덱스는 옵션으로 입력할 수 있습니다.\n특정 함수 호출 시 특정 인자에는 반드시 sizeof 연산자를 사용하도록 합니다.",
  "rule.saqt.c.cpp.1947.example.0.dangerous": "라인 2: somecall() 함수에서 첫 번째 인자에 sizeof 연산자를 사용하지 않았습니다. 이것은 특정 함수를 somecall(), 특정 인자 인덱스를 첫 번째로 지정했다고 가정했을 경우입니다.",
  "rule.saqt.c.cpp.1947.example.0.safe": "라인 2: 옵션에서 설정한 대로 함수의 첫 번째 인자에 sizeof 연산자를 사용합니다.",
  "rule.saqt.c.cpp.1947.name": "누락된 sizeof 함수 호출",
  "rule.saqt.c.cpp.1947.option.check_sizeof.description": "해당 파라미터 수식에 sizeof 가 있다면 sizeof() 가 있다고 판단해서 이슈를 발생하지 않습니다. 예) sizeof(int)*24",
  "rule.saqt.c.cpp.1947.option.check_sizeof.name": "수식 내 sizeof 검사 여부",
  "rule.saqt.c.cpp.1947.option.target_func.description": "대상 함수와 파라미터 인덱스를 적습니다. (파라미터 인덱스):(대상 함수 이름) 을 적습니다. 파라미터 인덱스는 1부터 시작합니다. 예:) 1:memcpy",
  "rule.saqt.c.cpp.1947.option.target_func.name": "대상 함수와 파라미터 인덱스",
  "rule.saqt.c.cpp.1948.description": "잘못된 필드 배열의 길이 체커는 특정 구조체의 특정 필드 길이가 지정한 길이보다 짧은 경우를 검출합니다.\n이때 특정 구조체와 필드의 명칭 및 길이는 옵션으로 입력할 수 있습니다. 해당 필드가 배열인 경우만 해당되며 할당하는 바이트 수가 아닌 원소의 개수를 셉니다.\n특정 구조체의 특정 필드 길이를 옵션에서 지정한 길이 이상으로 선언하도록 합니다.",
  "rule.saqt.c.cpp.1948.example.0.dangerous": "라인 2: 특정 구조체의 특정 필드 이름의 길이가 256보다 작습니다. 이것은 특정 구조체를 key, 특정 필드 이름을 module, 길이를 256으로 지정했다고 가정했을 경우입니다.",
  "rule.saqt.c.cpp.1948.example.0.safe": "라인 2: 옵션에서 설정한 대로 필드 길이를 충분히 길게 선언하도록 합니다.",
  "rule.saqt.c.cpp.1948.name": "잘못된 필드 배열의 길이",
  "rule.saqt.c.cpp.1948.option.targets.description": "검출한 구조체 이름, 필드 이름, 원소 수를 설정합니다. (구조체 이름),(필드 이름),(원소 수) 형태로 정의되어야 하며 빈칸이 없어야 합니다.",
  "rule.saqt.c.cpp.1948.option.targets.name": "검출할 대상 설정",
  "rule.saqt.c.cpp.1949.description": "중복된 파라미터 체커는 특정 함수를 호출할 때 동일한 매개 변수 변수를 사용한 경우를 검출합니다.\n이때 특정 함수의 명칭은 옵션으로 입력할 수 있습니다. 특정 함수를 호출할 경우 동일한 매개 변수 값을 검사합니다. 일부 함수는 매개 변수로 동일한 변수를 다시 사용하는 것을 금지하고 있습니다.\n특정 함수 호출 시 동일한 변수를 연속하여 인자로 전달하지 않도록 합니다.",
  "rule.saqt.c.cpp.1949.example.0.dangerous": "라인 2: 동일한 변수를 매개 변수로 사용하는 것을 금지하는 함수 test에 동일한 변수 p를 2,3 번째 매개 변수에 사용했습니다.",
  "rule.saqt.c.cpp.1949.example.0.safe": "라인 2: 동일한 변수를 인자로 전달하지 않아야 합니다.",
  "rule.saqt.c.cpp.1949.name": "중복된 파라미터",
  "rule.saqt.c.cpp.1949.option.target_func.description": "검출 대상 함수를 설정합니다.",
  "rule.saqt.c.cpp.1949.option.target_func.name": "검출 대상 함수",
  "rule.saqt.c.cpp.2135.description": "주석 내 코드 체커는 주석 내에 소스 코드가 있는 경우를 검출합니다.\n주석 (//, /*...*/) 내에 소스 코드가 있는 경우를 찾습니다. 불필요한 코드는 주석처리가 아닌 삭제 할 것을 추천합니다.\n주석 내에 코드를 작성하지 않습니다.",
  "rule.saqt.c.cpp.2135.example.0.dangerous": "라인 1: 주석 안에 소스 코드로 추정되는 문자열이 존재합니다.\n라인 27: 주석 안에 소스 코드로 추정되는 문자열이 존재합니다.",
  "rule.saqt.c.cpp.2135.example.0.safe": "라인 3: 주석 안에 소스 코드로 추정되는 문자열을 제거합니다.",
  "rule.saqt.c.cpp.2135.name": "주석 내 코드",
  "rule.saqt.c.cpp.2281.description": "가상 함수의 중복 정의 체커는 부모 클래스에서 이미 정의한 가상 함수를 자식 클래스에서 재정의하는 경우를 검출합니다.\n이 규칙의 목적은 클래스 계층 구조 어느 지점에서나 실행하는 함수의 내용이 동일하도록 하는 것입니다. 일반적인 객체지향 방식과는 다르지만 안정성은 올라갈 수 있습니다.\n가상 함수는 부모 클래스에서 한 번만 정의하도록 합니다. 혹은 부모 클래스에서 순수 가상 함수로 정의한 뒤, 자식 클래스에서 한 번만 정의하도록 합니다.",
  "rule.saqt.c.cpp.2281.example.0.dangerous": "라인 5: 클래스 A에서 f3() 메소드가 가상으로 정의되었습니다.\n라인 16: 클래스 A를 상속하는 클래스 B에서 f3() 메소드를 오버라이딩했습니다.",
  "rule.saqt.c.cpp.2281.example.0.safe": "라인 5: 클래스 A에서 f3() 메소드를 가상으로 정의합니다.\n라인 13: 클래스 B에서 f() 메소드를 오버라이딩하지 않습니다.",
  "rule.saqt.c.cpp.2281.name": "가상 함수의 중복 정의",
  "rule.saqt.c.cpp.2298.description": "순수 가상 함수의 오버라이딩 체커는 순수 가상 함수를 또다시 순수 가상 함수로 오버라이딩하는 메소드 선언을 검출합니다.\n순수 가상 함수는 자식 클래스에서 일반적인 방법으로 오버라이딩합니다.",
  "rule.saqt.c.cpp.2298.example.0.dangerous": "라인 3: 클래스 A는 foo() 메소드를 순수 가상 함수로 선언했습니다.\n라인 8: 클래스 A2는 클래스 A의 순수 가상 함수인 foo() 메소드를 오버라이딩했습니다.\n라인 19: 클래스 B는 클래스 A1의 순수 가상 함수인 foo() 메소드를 오버라이딩했습니다.\n라인 24: 클래스 C는 클래스 B의 가상 함수인 foo() 메소드를 다시 순수 가상 함수로 오버라이딩했습니다.",
  "rule.saqt.c.cpp.2298.example.0.safe": "라인 24: 클래스 B 에서 정의한 foo() 메소드를 C 클래스에서 다시 순수 가상 함수로 오버라이딩하지 않습니다.",
  "rule.saqt.c.cpp.2298.name": "순수 가상 함수의 오버라이딩",
  "rule.saqt.c.cpp.2300.description": "잘못된 루프 카운터 비교 체커는 잘못된 방법으로 루프 카운터를 사용한 for 구문을 검출합니다.\n이 문제는 루프 카운터의 증감이 2 이상이며 일정한 숫자의 영역으로 비교하지 않았을때 발생합니다. 잘못된 방법이란 구체적으로 아래 조건을 모두 충족할 경우를 의미합니다. 루프 카운터가 증감문에서 ++ 연산자 혹은 -- 연산자로 변경되지 않습니다. 루프 카운터가 조건문에서 <=, <, >, >=로 비교되지 않습니다.\n이 문제로 인해 반복문은 종료되지 않을 수 있습니다. 루프 카운터가 -- 또는 ++ 이외의 연산자를 사용하여 변경된 경우, 루프 종료가 발생하지 않을 수 있으므로 == 및 !=은 사용하지 않아야 합니다.\n루프 카운터를 ++ 연산자나 -- 연산자로 변경합니다. 만약 루프 카운터를 ++ 연산자 혹은 -- 연산자로 변경하지 않을 경우, 반드시 조건문에서 <=, <, >, >= 연산자로 비교합니다.",
  "rule.saqt.c.cpp.2300.example.0.dangerous": "라인 3: 루프 카운터가 증감문에서 +=에 의해 변경되었습니다. 또한 조건문에서는 != 로 비교했습니다.",
  "rule.saqt.c.cpp.2300.example.0.safe": "라인 3: 루프 카운터의 증감 연산을 += 연산자 대신 ++ 연산자로 변경합니다.",
  "rule.saqt.c.cpp.2300.name": "잘못된 루프 카운터 비교",
  "rule.saqt.c.cpp.2302.description": "1개가 아닌 루프 카운터 체커는 루프 카운터가 1개가 아닌 for 구문을 검출합니다.\n정확히 하나의 루프 카운터가 없는 for 루프는 단순히 while 루프입니다. 이것이 원하는 동작이면 while 루프가 더 적절합니다.\nfor 문의 루프 카운터는 반드시 1개만 사용하도록 합니다.",
  "rule.saqt.c.cpp.2302.example.0.dangerous": "라인 4: 루프 카운터 x, y가 있습니다.",
  "rule.saqt.c.cpp.2302.example.0.safe": "라인 4: 루프 카운터 y를 제거합니다.",
  "rule.saqt.c.cpp.2302.name": "1개가 아닌 루프 카운터",
  "rule.saqt.c.cpp.2303.description": "가까운 범위에 있지 않은 case 구문 체커는 switch 문과 가장 가까운 범위에 있지 않은 case 구문을 검출합니다.\ncase 구문은 switch 문의 본문을 구성하는 명령문 내 어디에나 배치할 수 있습니다. 이로 인해 구조화되지 않은 코드가 발생할 수 있습니다.\n이러한 일이 발생하지 않도록 하려면 case 구문과 default 구문의 범위는 switch 문의 본문을 구성하는 복합 명령문이어야 합니다. 즉 모든 case 구문과 default 구문은 switch 구문 본문 내에 같은 범위에 있어야 합니다. 또한, 그 범위는 switch 구문 본문에 가장 가까운 범위여야 합니다.",
  "rule.saqt.c.cpp.2303.example.0.dangerous": "라인 8: case2 문은 나머지 case 문과 다른 범위에 있습니다.",
  "rule.saqt.c.cpp.2303.example.0.safe": "라인 8: case 2 문을 다른 case 문과 같은 범위에 위치시킵니다.",
  "rule.saqt.c.cpp.2303.name": "가까운 범위에 있지 않은 case 구문",
  "rule.saqt.c.cpp.2304.description": "헤더 파일에 있는 이름 없는 네임스페이스 체커는 소스 파일이 아닌 헤더 파일에 위치한 이름 없는 네임스페이스를 검출합니다.\n이름없는 네임스페이스는 각 번역 단위 내에서 고유합니다. 이로 인해 헤더의 이름없는 네임스페이스에 나타나는 모든 선언은 각 번역 단위의 여러 엔터티를 참조합니다. 이것은 개발자의 예상과 다를 수 있습니다.\n이름 없는 네임스페이스는 소스 파일에서만 사용하도록 합니다. 헤더 파일에 네임스페이스를 작성해야 할 경우 반드시 이름을 가진 네임스페이스를 사용합니다.",
  "rule.saqt.c.cpp.2304.example.0.dangerous": "라인 2: 헤더 파일에 있는 네임스페이스가 이름이 없습니다.",
  "rule.saqt.c.cpp.2304.example.0.safe": "라인 2: 헤더 파일에 있는 네임스페이스에 이름을 추가합니다.",
  "rule.saqt.c.cpp.2304.name": "헤더 파일에 있는 이름 없는 네임스페이스",
  "rule.saqt.c.cpp.2305.description": "메인 함수가 아닌 함수의 이름을 main으로 사용 체커는 함수 이름을 main으로 사용하였으나 프로그램의 맨 처음에 호출되는 메인 함수가 아닌 일반 함수를 검출합니다.\nmain 이라는 이름을 가진 함수는 전역 네임스페이스가 아닌 다른 네임스페이스에도 정의할 수 있습니다.\nmain 식별자는 보통 프로그램의 진입점이며 전역 네임스페이스에 있어야 하는 유일한 식별자입니다. 다른 함수의 이름를 main으로 사용하면 개발자의 예상과 다를 수 있습니다.\nmain 식별자를 사용하여 함수를 정의하는 것은 반드시 전역 네임스페이스에서 하나의 함수에만 사용하도록 합니다. 이 함수는 프로그램의 진입접이 되는 메인 함수입니다.",
  "rule.saqt.c.cpp.2305.example.0.dangerous": "라인 2: 네임스페이스 안에 main 식별자를 가진 함수를 정의했습니다.",
  "rule.saqt.c.cpp.2305.example.0.safe": "라인 1: 메인 함수는 전역 네임스페이스에서만 선언합니다.",
  "rule.saqt.c.cpp.2305.name": "메인 함수가 아닌 함수의 이름을 main으로 사용",
  "rule.saqt.c.cpp.2307.description": "C++에서 함수 반환 결과 미사용 체커는 일부 예외를 제외하고 반환 값을 사용하지 않은 함수 호출 수식을 검출합니다.\n이때 일부 예외란 반환 타입이 void인 함수와 연산자 오버로딩 메소드입니다. 반환 타입이 void인 함수는 반환 값이 없으며, 연산자 오버로딩 메소드들의 반환 값은 반드시 사용하지 않아도 됩니다.\nC++에서는 오류일 수 있는 반환 값을 사용하지 않고 함수를 호출 할 수 있습니다. 예외 처리 메커니즘 등이 존재하기 때문입니다. 단 연산자 오버로딩 메소드는 기본 제공 연산자와 동일한 방식으로 동작해야 하므로 꼭 사용할 필요는 없습니다.\n연산자 오버로딩 메소드를 제외한 함수의 반환 값을 항상 사용하도록 합니다. 혹은 함수 반환 결과를 void로 캐스팅하여 이 값을 사용할 필요가 없다는 것을 명시적으로 나타냅니다.",
  "rule.saqt.c.cpp.2307.example.0.dangerous": "라인 7: test() 함수를 호출하지만 반환 값을 저장하지 않았습니다.",
  "rule.saqt.c.cpp.2307.example.0.safe": "라인 7: test() 함수의 반환 값을 정수 자료형 c에 저장합니다.",
  "rule.saqt.c.cpp.2307.name": "C++에서 함수 반환 결과 미사용",
  "rule.saqt.c.cpp.2308.description": "같은 네임스페이스에서의 함수 오버로딩 체커는 동일한 네임스페이스 내에서 오버로딩한 함수 선언을 검출합니다.\n이 문제는 특히 함수 오버로딩이 후속 네임스페이스에서 이루어졌을 때 발생합니다.\nusing 선언에 의해 도입된 식별자 집합은 네임스페이스의 후속 선언에 의해 추가될 수 있는 선언을 포함하지 않습니다. 이후의 선언은 using 선언을 통해 찾을수 없으며 이는 개발자의 예상과 다른 함수가 호출될 가능성이 높습니다.\n함수를 동일한 네임스페이스에서 오버로딩하지 않도록 합니다.",
  "rule.saqt.c.cpp.2308.example.0.dangerous": "라인 2: 네임스페이스 NS1에서 f() 함수를 정의했습니다.\n라인 7: 네임스페이스 NS1의 f() 함수를 using 선언했습니다.\n라인 10: 후속 네임스페이스 NS1에서 f() 함수를 오버로딩했습니다.\n라인 16: f() 함수를 호출했습니다. 인자 값이 정수이므로 라인 10의 함수가 호출될 것을 기대할 수 있으나 실제로 호출되는 것은 라인 2의 함수입니다.",
  "rule.saqt.c.cpp.2308.example.0.safe": "라인 8: 같은 네임스페이스에서 함수를 오버로딩하지 않습니다.\n라인 13: using 선언을 후속 네임스페이스 뒤쪽에 위치시킵니다.",
  "rule.saqt.c.cpp.2308.name": "같은 네임스페이스에서의 함수 오버로딩",
  "rule.saqt.c.cpp.2311.description": "cvalue 식을 캐스팅 체커는 cvalue로 판단되는 수식을 캐스팅한 경우를 검출합니다.\ncvalue 식이란 암시적, 또는 명시적으로 캐스팅을 수행하지 말아야 하는 수식을 의미합니다. 예를 들어 정수형 타입들을 나누기 연산하여 실수형 타입의 변수에 담을때 나눗셈 계산 결과는 cvalue 식입니다. 이때 이 계산 결과를 실수형 타입으로 명시적으로 캐스팅을 수행하는 수식을 검출합니다.\n식의 결과에 적용한 캐스팅은 식이 계산되는 시점의 타입을 변경하지 않습니다. 이것은 개발자가 기대한 결과와 일치하지 않을 수 있습니다. 이러한 문제는 나눗셈 등에서 종종 발생할 수 있습니다. 나누기 연산에 cvalue 캐스팅을 하는 것은 정수형 피연산자를 실수형으로 바꾸어 계산 과정을 실수형으로 계산하길 기대하기 때문입니다. 하지만 cvalue 캐스팅이 이루어지는 수식은 이미 정수형으로 계산하여 실수형으로 결과가 나온 식을 또다시 실수형 캐스팅합니다. 이 캐스팅은 결과적으로 아무런 영향을 미치지 않습니다.\ncvalue 식을 명시적으로 캐스팅하지 않도록 합니다. 일반적으로 이 경우 캐스팅의 위치가 잘못되었을 가능성이 높습니다. 캐스팅 위치를 조절하도록 합니다.",
  "rule.saqt.c.cpp.2311.example.0.dangerous": "라인 4: 정수형 피연산자들을 나눈 후 실수형으로 캐스팅했습니다.",
  "rule.saqt.c.cpp.2311.example.0.safe": "라인 4: 나누기 연산자의 좌측항에 위치한 정수형 피연산자를 캐스팅한 후 나눗셈을 진행합니다.",
  "rule.saqt.c.cpp.2311.name": "cvalue 식을 캐스팅",
  "rule.saqt.c.cpp.2312.description": "포인터로 붕괴하는 배열 체커는 함수 인자로 전달하여 포인터로 붕괴하는 배열 객체를 검출합니다.\n배열 객체가 포인터로 붕괴하면 배열의 경계를 알 수 없어집니다. 설계상 길이가 다른 배열들을 인자로 전달할 필요가 있는 경우 클래스 필드 등을 사용하여 배열 객체를 캡슐화하는 등 다른 방법을 찾는 것이 좋습니다.\n배열을 함수의 인자로 전달하여 포인터로 붕괴시키지 않도록 합니다. 배열 객체를 캡슐화하는 것이 가장 좋으나, 꼭 함수로 전달해야 할 경우 범위 정보까지 전달할 수 있도록 함수의 매개 변수를 선언합니다. 또는 배열 타입 객체를 포인터 타입 변수에 대입하여 이 배열 타입 객체를 포인터처럼 사용하겠다고 선언하는 것이 좋습니다. 마지막 방법은 &arr[0] 와 같이 배열 타입이 포인터 타입으로 변경되어 전달된다는 사실을 수식에 나타나도록 명시적으로 표현하는 것입니다.",
  "rule.saqt.c.cpp.2312.example.0.dangerous": "라인 1: 배열을 전달 받을 수 있는 함수를 선언했습니다. 하지만 이 매개 변수는 포인터 붕괴가 발생합니다.\n라인 2: 배열을 전달 받을 수 있는 함수를 선언했습니다. 하지만 이 포인터 매개 변수는 포인터 붕괴가 발생합니다.\n라인 6: 함수 호출 과정에서 a 변수의 포인터 붕괴가 발생했습니다.\n라인 7: 함수 호출 과정에서 a 변수의 포인터 붕괴가 발생했습니다.",
  "rule.saqt.c.cpp.2312.example.0.safe": "라인 1: 배열의 인덱스 정보까지 받을 수 있도록 매개 변수를 잘 선언합니다.\n라인 6: 함수 호출 과정에서 a 변수가 포인터 붕괴 없이 전달됩니다.\n라인 8: 배열 타입의 객체를 포인터 변수에 대입합니다. 이 배열 객체를 포인터처럼 사용하겠다는 선언입니다.\n라인 9: a 변수를 가리키는 포인터 타입 ptr 객체를 함수 인자에 전달합니다.\n라인 11: a[0] 값의 주소를 전달하여 배열 타입을 포인터 타입으로 변경했음을 명확히 표현합니다.",
  "rule.saqt.c.cpp.2312.name": "포인터로 붕괴하는 배열",
  "rule.saqt.c.cpp.2315.description": "잘못된 전처리 구문 토큰 체커는 #토큰 이후에 올바른 전처리 토큰이 이어지지 않는 전처리 구문을 검출합니다.\n이 규칙은 모든 전처리 구문이 제외된 코드 블록 내에서 발생하더라도 문법적으로 유효해야 한다는 것입니다.\n전처리 구문에 의하여 소스 코드 일부가 제외된 경우, 제외된 구문의 내용은 #else, #elif, #endif 지시문이 나타날때까지 무시됩니다. 다만 이때 전처리 구문 중 하나가 잘못 구성된 경우 예상하지 않은 결과가 발생할 수 있습니다. 또한, 이러한 잘못이 컴파일러 경고없이 무시될 가능성이 있습니다. 특히 #else 및 #endif 지시문 뒤에 공백이 아닌 문자가 오지 않도록 해야 합니다. 컴파일러는 항상 이 요구 사항을 적용하는 데 있어 일관성이 없습니다.\n모든 전처리 구문은 #토큰 이후에 올바른 전처리 구문이 이어져야 합니다.",
  "rule.saqt.c.cpp.2315.example.0.dangerous": "라인 6: 조건의 처리를 위한 전처리 구문이 #else1로 잘못 작성되었습니다.",
  "rule.saqt.c.cpp.2315.example.0.safe": "라인 6: 전처리 구문을 올바르게 #else로 작성합니다.",
  "rule.saqt.c.cpp.2315.name": "잘못된 전처리 구문 토큰",
  "rule.saqt.c.cpp.2317.description": "전역 범위에서 변수 및 함수 선언 체커는 전역 범위에서 메인 함수와 네임스페이스 선언을 제외한 변수 및 함수 선언을 검출합니다.\n적절한 네임스페이스로 이름을 선언하면 검색하는 동안 발견될 이름이 줄어들어 개발의 편의성을 향상시킬 수 있습니다.\n전역 범위에는 반드시 메인 함수와 네임스페이스를 제외한 변수 및 함수를 선언하지 않도록 합니다.",
  "rule.saqt.c.cpp.2317.example.0.dangerous": "라인 7: 전역 변수를 선언했습니다.\n라인 8: 전역 함수를 선언했습니다.",
  "rule.saqt.c.cpp.2317.example.0.safe": "라인 7: 전역 변수를 제거합니다.\n라인 8: 전역 함수를 제거합니다. 이때 메인 함수는 예외로 합니다.",
  "rule.saqt.c.cpp.2317.name": "전역 범위에서 변수 및 함수 선언",
  "rule.saqt.c.cpp.2323.description": "부모 클래스의 생성자 호출 누락 체커는 부모 클래스의 생성자를 호출하지 않은 자식 클래스의 생성자를 검출합니다.\n여기서 부모 클래스의 생성자를 호출하지 않았다는 것은 생성자를 명시적으로 호출하지 않았다는 의미입니다. 컴파일러는 기본적으로 부모 클래스의 생성자를 암시적으로 호출합니다.\n자식 클래스 생성자에서 부모 클래스 생성자를 명시적으로 호출합니다.",
  "rule.saqt.c.cpp.2323.example.0.dangerous": "라인 10: 클래스 B 생성자에서 부모 클래스 A의 생성자를 명시적으로 호출하지 않았습니다.",
  "rule.saqt.c.cpp.2323.example.0.safe": "라인 10: 클래스 B 생성자에서 부모 클래스 A의 생성자를 명시적으로 호출합니다.",
  "rule.saqt.c.cpp.2323.name": "부모 클래스의 생성자 호출 누락",
  "rule.saqt.c.cpp.2330.description": "예외 명세에 포함되지 않은 예외 던짐 체커는 함수 내부에서 예외 명세에 포함되어 있지 않은 예외를 던지는 구문을 검출합니다.\n예외 명세가 선언된 함수에서 선언되지 않은 예외를 던질 경우 unexpected() 함수가 호출됩니다. 이 함수의 동작은 프로젝트 내에서 무시될 수 있습니다. 하지만 기본적으로는 std::bad_exception 예외가 발생합니다. 만약 예외 명세에 std::bad_exception이 포함되어 있지 않으면 terminate() 함수가 호출되어 구현 정의 동작(Implementation Defined Behavior)으로 프로그램이 종료됩니다.\n예외 명세에 포함되어 있는 타입만 예외로 던지도록 합니다. 혹은 예외 명세에 던져야 하는 타입을 추가하도록 합니다.",
  "rule.saqt.c.cpp.2330.example.0.dangerous": "라인 1: 예외 명세 타입을 int 타입으로 선언했습니다.\n라인 3: float 타입의 예외를 던졌습니다. 이 타입은 예외 명세에 선언되어 있지 않습니다.\n라인 6: int 타입의 예외를 던졌습니다. 이 예외 던짐은 특별한 문제가 없습니다.",
  "rule.saqt.c.cpp.2330.example.0.safe": "라인 3: int 타입의 예외를 던집니다. 예외 명세에 선언되어 있지 않은 예외 타입은 던지지 않습니다.",
  "rule.saqt.c.cpp.2330.name": "예외 명세에 포함되지 않은 예외 던짐",
  "rule.saqt.c.cpp.2331.description": "다른 파일에서 선언된 템플릿 특수화 체커는 기본 템플릿 선언이 이루어진 파일에서 선언되지 않은 템플릿 특수화를 검출합니다.\n템플릿 특수화(Template Specialization)은 템플릿 인자를 실제 타입으로 치환하여 템플릿 요소에서 일반적인 클래스나 함수, 메소드로 변환한 결과물을 의미합니다.\n템플릿 특수화가 템플릿 인자 집합과 일치하는 프로그램의 다른 위치에서 선언 혹은 정의되는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n템플릿 특수화는 기본 템플릿 선언이 이루어진 파일에서 선언하도록 합니다.",
  "rule.saqt.c.cpp.2331.example.0.dangerous": "라인 2: 기본 함수 템플릿을 선언했습니다.\n라인 3: 기본 함수 템플릿을 선언했습니다.\n라인 4: 같은 파일에서 good_tmpl() 함수의 명시적 특수화를 선언했습니다.\n라인 8: 다른 파일에서 bad_tmpl() 함수의 명시적 특수화를 선언했습니다.\n라인 13: bad_tmpl()의 명시적 특수화를 사용했습니다. 템플릿 특수화 선언이 다른 파일에 있으므로 이것은 정의되지 않은 동작입니다.",
  "rule.saqt.c.cpp.2331.example.0.safe": "라인 5: bad_tmpl() 함수의 기본 함수 템플릿과 명시적 특수화를 같은 파일에 선언하도록 합니다.",
  "rule.saqt.c.cpp.2331.name": "다른 파일에서 선언된 템플릿 특수화",
  "rule.saqt.c.cpp.2393.description": "하나 이상의 정의 금지 체커는 모든 인라인이 아닌 함수 또는 객체가 하나 이상의 정의를 가지면 검출합니다.\nOne Definition Rule을 지키지 않는 경우 의도하지 않은 결과를 일으킬 수 있습니다.\n함수 또는 객체는 다만 하나의 정의만 가져야 합니다.",
  "rule.saqt.c.cpp.2393.example.0.dangerous": "라인 15: 타입의 정의가 서로 다릅니다.\n라인 20: 타입의 정의가 서로 다릅니다.",
  "rule.saqt.c.cpp.2393.example.0.safe": "라인 15: 타입의 정의가 서로 같습니다.\n라인 20: 타입의 정의가 서로 같습니다.",
  "rule.saqt.c.cpp.2393.name": "하나 이상의 정의 금지",
  "rule.saqt.c.cpp.258.description": "너무 많은 함수 호출 체커는 옵션에 지정된 함수 호출의 개수를 초과하여 함수 호출을 한 경우를 검출합니다.\n옵션에서 최대 함수 호출 개수를 설정할 수 있습니다.\n옵션에 지정된 최대 함수 호출 개수를 초과하지 않도록 합니다.",
  "rule.saqt.c.cpp.258.example.0.dangerous": "라인 9: 기본적으로 하나의 함수 내에 허용하는 함수 종류의 수는 7개입니다. 7개를 초과할 경우에 검출됩니다.",
  "rule.saqt.c.cpp.258.example.0.safe": "라인 8: 허용하는 함수의 호출 개수를 지킵니다.",
  "rule.saqt.c.cpp.258.name": "너무 많은 함수 호출",
  "rule.saqt.c.cpp.258.option.max_call_number.description": "함수당 허용하려는 함수 호출의 최대 개수를 적습니다.",
  "rule.saqt.c.cpp.258.option.max_call_number.name": "함수당 함수호출의 최대 개수",
  "rule.saqt.c.cpp.259.description": "goto 구문 사용 체커는 goto 구문이 정해진 제한을 어기고 사용되는 경우를 검출합니다.\n옵션에서 함수당 허용하는 goto 구문의 최대 개수 및 매크로 내 goto 구문 검출 여부를 설정할 수 있습니다.\ngoto 문을 사용하지 않습니다.",
  "rule.saqt.c.cpp.259.example.0.dangerous": "라인 7: goto 문이 사용되어 L1으로 이동하게 되어 무한 반복을 하게 됩니다.",
  "rule.saqt.c.cpp.259.example.0.safe": "라인 3: goto 문은 프로그램의 흐름을 복잡하게 만들어 가독성을 떨어뜨립니다. 따라서 사용하지 않는 것을 권장합니다.",
  "rule.saqt.c.cpp.259.name": "goto 구문 사용",
  "rule.saqt.c.cpp.259.option.ignore_macro.description": "매크로 내 goto 무시 여부",
  "rule.saqt.c.cpp.259.option.ignore_macro.name": "옵션을 사용하는 경우, 매크로 내 goto 문을 무시합니다.",
  "rule.saqt.c.cpp.259.option.max_goto_statement_number.description": "함수당 허용하려는 goto 문의 최대 개수를 입력합니다.",
  "rule.saqt.c.cpp.259.option.max_goto_statement_number.name": "함수당 goto 문의 최대 개수",
  "rule.saqt.c.cpp.260.description": "너무 많은 반환 구문 체커는 한 함수 안에서 옵션에 명시된 반환 구문 최대 수를 초과하여 반환 구문을 사용하는 경우를 검출합니다.\n옵션에서 최대 반환 구문 수를 설정할 수 있습니다.\n반환 구문을 허용한 횟수 만큼만 사용해야 합니다.",
  "rule.saqt.c.cpp.260.example.0.dangerous": "라인 5: 반환 구문이 하나 이상 사용되었습니다.",
  "rule.saqt.c.cpp.260.example.0.safe": "라인 8: 각 함수 당 하나의 반환 구문만 사용하도록 합니다.",
  "rule.saqt.c.cpp.260.name": "너무 많은 반환 구문",
  "rule.saqt.c.cpp.260.option.max_return_statement_number.description": "함수당 허용할 return문의 최대 개수를 적습니다.",
  "rule.saqt.c.cpp.260.option.max_return_statement_number.name": "함수당 return 문 최대 개수",
  "rule.saqt.c.cpp.263.description": "비 매크로 상수 체커는 매크로로 정의하지 않은 상수를 사용하는 코드를 검출합니다.\n단, 시스템 API 혹은 프레임워크 API의 반환값을 확인하기 위해 매크로로 정의하지 않은 상수를 사용할 수 있습니다. 옵션에서 공용 헤더 파일 경로 및 허용하는 함수를 설정할 수 있습니다.\n가독성을 높이기 위해서 상수를 매크로로 정의하는 것이 좋습니다.",
  "rule.saqt.c.cpp.263.example.0.dangerous": "라인 2: 일반 상수가 그대로 사용되었으므로 검출됩니다.",
  "rule.saqt.c.cpp.263.example.0.safe": "라인 3: 상수를 매크로로 정의하도록 합니다.",
  "rule.saqt.c.cpp.263.name": "비 매크로 상수",
  "rule.saqt.c.cpp.263.option.allowed_function.description": "표준 함수 및 프레임워크 함수를 작성합니다. <br /> 이 함수들의 리턴 값은 매크로로 정의되지 않은 상수와 비교할 수 있습니다. <br /> 값이 입력되지 않은 경우 모든 함수 리턴 값 비교에 사용되는 상수를 무시합니다. <br />예시) strcmp",
  "rule.saqt.c.cpp.263.option.allowed_function.name": "시스템 API 혹은 프레임워크 API",
  "rule.saqt.c.cpp.263.option.common_header_path.description": "공용 헤더 파일 경로를 작성합니다.<br />값이 입력되지 않을 경우 매크로가 정의된 위치는 고려하지 않습니다.<br /> 예시) c:projectinclude",
  "rule.saqt.c.cpp.263.option.common_header_path.name": "공용 헤더 파일 경로",
  "rule.saqt.c.cpp.266.description": "반복문 조건 내 상수 체커는 반복문 제어부에 상수를 사용하는 코드를 검출합니다.\n옵션에서 검사 항목에 제외할 값을 설정할 수 있습니다.\n반복문 제어부에 상수를 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.266.example.0.dangerous": "라인 2: while 문의 조건식에 상수를 사용했습니다.",
  "rule.saqt.c.cpp.266.example.0.safe": "라인 2: 조건식에 상수가 아닌 조건식을 사용하도록 합니다.",
  "rule.saqt.c.cpp.266.name": "반복문 조건 내 상수",
  "rule.saqt.c.cpp.266.option.ignored_value.description": "검사항목에서 제외할 값을 기록합니다.",
  "rule.saqt.c.cpp.266.option.ignored_value.name": "검사항목에서 제외할 값",
  "rule.saqt.c.cpp.267.description": "함수 중간에 존재하는 변수 선언 체커는 함수의 앞부분이 아닌 중간에 일부 변수를 선언하거나 초기화하는 코드를 검출합니다.\n옵션에서 초기화 여부 검사 유무, 검사를 무시할 함수 및 변수 이름을 설정할 수 있습니다.\n함수 초반부에 함수에서 사용하는 변수를 선언하고 초기화해야 합니다.",
  "rule.saqt.c.cpp.267.example.0.dangerous": "라인 3: if 문에서 변수를 선언했습니다. 함수의 초반부에 변수를 선언해야 합니다.",
  "rule.saqt.c.cpp.267.example.0.safe": "라인 2: 함수의 시작 부분에서 변수를 선언하고 초기화해야 합니다.",
  "rule.saqt.c.cpp.267.name": "함수 중간에 존재하는 변수 선언",
  "rule.saqt.c.cpp.267.option.ignored_function_name.description": "변수 최초 선언보다 앞서 실행 할 수 있는 함수들의 목록을 작성합니다. <br /> 예시) ulog.*",
  "rule.saqt.c.cpp.267.option.ignored_function_name.name": "예외 함수 목록",
  "rule.saqt.c.cpp.267.option.ignored_variable_name.description": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "rule.saqt.c.cpp.267.option.ignored_variable_name.name": "검사 대상에서 제외할 변수 이름",
  "rule.saqt.c.cpp.267.option.skip_array_check.description": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.cpp.267.option.skip_array_check.name": "array의 초기화 검사 여부",
  "rule.saqt.c.cpp.271.description": "너무 많은 연속 if 구문 체커는 If 구문을 연속적으로 사용하는 코드를 검출합니다.\n옵션에서 최대 if 문 연속 사용 수를 설정할 수 있습니다.\nif 문을 연속적으로 사용하지 않고 다른 조건문을 사용하도록 합니다.",
  "rule.saqt.c.cpp.271.example.0.dangerous": "라인 12: 해당 오류는 동일한 변수와 상수를 비교하는 if 문을 연속적으로 3번 이상 작성하는 경우에 발생합니다.",
  "rule.saqt.c.cpp.271.example.0.safe": "라인 3: if 문을 다수 사용해야 하는 경우 switch-case 문을 사용합니다.",
  "rule.saqt.c.cpp.271.name": "너무 많은 연속 if 구문",
  "rule.saqt.c.cpp.271.option.max_number_of_ifs.description": "함수당 허용 가능한 if 문의 최대 개수를 적습니다.",
  "rule.saqt.c.cpp.271.option.max_number_of_ifs.name": "함수당 if 문의 개수",
  "rule.saqt.c.cpp.273.description": "enum 내 상수에 지정된 접두사 미사용 체커는 enum 내에서 선언된 상수들에 지정한 접두사가 없는 경우를 검출합니다.\n지정된 접두사의 정규식은 ([^_]+)_.+입니다.\nenum 내 상수들에 지정된 접두사를 사용합니다.",
  "rule.saqt.c.cpp.273.example.0.dangerous": "라인 2: 상수 'A', 'B', 'C' 앞에 접두사가 없습니다. 접두사 'L1_'을 설정했을 경우 항상 적용해야 합니다.",
  "rule.saqt.c.cpp.273.example.0.safe": "라인 2: 설정한 접두사를 enum 상수 앞에 붙여 넣습니다.",
  "rule.saqt.c.cpp.273.name": "enum 내 상수에 지정된 접두사 미사용",
  "rule.saqt.c.cpp.275.description": "헝가리안 표기법 위반 체커는 헝가리안 명명법을 사용하지 않은 식별자를 검출합니다.\n옵션에서 헝가리안 표기법에 사용할 접두사의 목록을 설정할 수 있습니다.\n헝가리안 명명법을 준수합니다.",
  "rule.saqt.c.cpp.275.example.0.dangerous": "라인 2: 'p', 'i', 'n' 등을 접두사로 지정하여 표기하는 헝가리언 표기법을 지키지 않았을 경우를 검출합니다.",
  "rule.saqt.c.cpp.275.example.0.safe": "라인 2: 지정한 접두사를 사용하여 변수를 선언합니다.",
  "rule.saqt.c.cpp.275.name": "헝가리안 표기법 위반",
  "rule.saqt.c.cpp.275.option.prefix.description": "헝가리안 표기법에서 사용할 접두사의 목록을 적습니다.",
  "rule.saqt.c.cpp.275.option.prefix.name": "헝가리안 표기법의 접두사 목록",
  "rule.saqt.c.cpp.276.description": "누락된 변수의 초기화 체커는 변수를 선언할 때 초기화 구문을 기술하지 않은 경우를 검출합니다.\n변수 선언 시 초기화 구문을 사용합니다.",
  "rule.saqt.c.cpp.276.example.0.dangerous": "라인 2: 변수 var을 선언 후 초기화시키지 않았습니다.",
  "rule.saqt.c.cpp.276.example.0.safe": "라인 2: 변수 선언 시 초기화를 시켜줍니다.",
  "rule.saqt.c.cpp.276.name": "누락된 변수의 초기화",
  "rule.saqt.c.cpp.276.option.check_global.description": "옵션을 사용하는 경우, 전역 변수를 검사합니다.",
  "rule.saqt.c.cpp.276.option.check_global.name": "전역 변수 확인 여부",
  "rule.saqt.c.cpp.276.option.check_local.description": "옵션을 사용하는 경우, 지역 변수를 검사합니다.",
  "rule.saqt.c.cpp.276.option.check_local.name": "지역 변수 확인 여부",
  "rule.saqt.c.cpp.276.option.check_only_ptr.description": "포인트 초기화 여부만 검사합니다.",
  "rule.saqt.c.cpp.276.option.check_only_ptr.name": "포인트 초기화 여부만 검사",
  "rule.saqt.c.cpp.276.option.ignore_name.description": "해당 변수는 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.cpp.276.option.ignore_name.name": "무시할 변수 이름",
  "rule.saqt.c.cpp.277.description": "매크로 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 매크로 이름을 검출합니다.\n옵션에서 허용할 매크로 이름의 표현식을 설정할 수 있습니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.cpp.277.example.0.dangerous": "라인 1: 매크로 이름이 옵션에 정의한 매크로 이름 표현식을 위반한 경우를 검출합니다.\n라인 2: 밑줄(_)로 시작한 매크로 이름을 검출합니다.",
  "rule.saqt.c.cpp.277.example.0.safe": "라인 1: 정의한 매크로 이름 표현식에 적합한 매크로명을 작성합니다.\n라인 2: 정의한 매크로 이름 표현식에 적합한 매크로명을 작성합니다.",
  "rule.saqt.c.cpp.277.name": "매크로 명명 규칙 위반",
  "rule.saqt.c.cpp.277.option.macro_naming_expr.description": "허용할 매크로 이름의 표현식을 작성합니다.<br />예시) [A-Z]+(_[A-Z]+)*",
  "rule.saqt.c.cpp.277.option.macro_naming_expr.name": "매크로 이름 표현식",
  "rule.saqt.c.cpp.278.description": "상수 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 상수 이름을 검출합니다.\n옵션에서 허용할 상수 이름의 표현식과 매개 변수로 정의된 상수에 대한 검출 여부를 설정할 수 있습니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.cpp.278.example.0.dangerous": "라인 1: 상수 이름이 정의한 상수 이름 표현식을 위한 경우를 검출합니다. 예를 들어 상수 변수 이름을 대문자로만 작성해야 한다면 위의 예제를 검출합니다.",
  "rule.saqt.c.cpp.278.example.0.safe": "라인 1: 정의한 상수 이름 표현식에 적합한 상수 변수명을 작성합니다.",
  "rule.saqt.c.cpp.278.name": "상수 명명 규칙 위반",
  "rule.saqt.c.cpp.278.option.const_name_expr.description": "허용할 상수 이름의 표현식을 작성합니다.<br />예시) [A-Z][A-Z_]*",
  "rule.saqt.c.cpp.278.option.const_name_expr.name": "상수 이름 표현식",
  "rule.saqt.c.cpp.278.option.exclude_param.description": "옵션을 사용하는 경우, 파라미터로 정의된 상수에 대해서는 이슈를 검출하지 않습니다.",
  "rule.saqt.c.cpp.278.option.exclude_param.name": "파라미터 제외 여부",
  "rule.saqt.c.cpp.2783.description": "개별 라인을 가지지 않은 중괄호 형식 체커는 조건문이나 반복문의 중괄호가 각각 한 라인을 가지지 않은 경우를 검출합니다.\n조건문이나 반복문의 중괄호가 각각 한 라인을 가지도록 소스 코드를 작성합니다.",
  "rule.saqt.c.cpp.2783.example.0.dangerous": "라인 15: if 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 16: if 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 28: else 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 31: if 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 35: while 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.\n라인 46: for 구문의 중괄호들이 각각 한 라인을 가지지 않습니다.",
  "rule.saqt.c.cpp.2783.example.0.safe": "라인 1: 조건문과 반복문의 중괄호들이 각각 한 라인을 가지도록 합니다.",
  "rule.saqt.c.cpp.2783.name": "개별 라인을 가지지 않은 중괄호 형식",
  "rule.saqt.c.cpp.279.description": "중복된 이름 체커는 상호간에 이름이 중복된 함수 및 변수, 필드를 선언한 경우를 검출합니다.\n함수 및 변수, 필드 선언 시 중복된 이름을 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.279.example.0.dangerous": "라인 1: name() 함수를 선언했습니다.\n라인 2: 변수의 이름을 name으로 선언했습니다. 함수 이름과 중복됩니다.",
  "rule.saqt.c.cpp.279.example.0.safe": "라인 1: getName() 함수로 이름을 변경합니다. 라인 2의 변수 이름과 중복되지 않습니다.",
  "rule.saqt.c.cpp.279.name": "중복된 이름",
  "rule.saqt.c.cpp.279.option.check_function.description": "옵션을 사용하는 경우, 함수 이름의 중복 여부를 확인합니다.",
  "rule.saqt.c.cpp.279.option.check_function.name": "함수 이름 확인",
  "rule.saqt.c.cpp.279.option.check_macro.description": "옵션을 사용하는 경우, 소스 전체에서 매크로 이름과 중복 여부를 검사합니다.",
  "rule.saqt.c.cpp.279.option.check_macro.name": "매크로 이름 확인",
  "rule.saqt.c.cpp.279.option.check_same_type.description": "선택할 경우, 동일 유형 간 중복 여부를 검사합니다. 선택하지 않을 경우, 경우 다른 유형 간 중복 여부만 검사합니다.",
  "rule.saqt.c.cpp.279.option.check_same_type.name": "동일 유형 내 중복 확인",
  "rule.saqt.c.cpp.279.option.check_variable.description": "옵션을 사용하는 경우, 변수 이름의 중복 여부를 확인합니다.",
  "rule.saqt.c.cpp.279.option.check_variable.name": "변수 이름 확인",
  "rule.saqt.c.cpp.280.description": "전역 변수 명명 규칙 위반 체커는 사전에 정의된 전역 변수 접두사를 사용하지 않은 전역 변수 선언을 검출합니다.\n사전에 정의된 접두사는 옵션으로 입력할 수 있습니다.\n전역 변수의 이름은 사전에 정의된 전역 변수 접두사를 사용하도록 합니다.",
  "rule.saqt.c.cpp.280.example.0.dangerous": "라인 1: 변수 이름을 Name으로 선언했습니다. 사전에 정의된 전역 변수 접두사를 item이라고 했을 경우, 이 이름은 잘못된 이름입니다.",
  "rule.saqt.c.cpp.280.example.0.safe": "라인 1: 사전에 정의된 전역 변수 접두사를 사용합니다.",
  "rule.saqt.c.cpp.280.name": "전역 변수 명명 규칙 위반",
  "rule.saqt.c.cpp.280.option.global_variable_name_expression.description": "전역 변수 이름 형식을 작성합니다.<br/>예시) g[A-Za-z]+",
  "rule.saqt.c.cpp.280.option.global_variable_name_expression.name": "전역 변수 이름",
  "rule.saqt.c.cpp.280.option.ignore_var_list.description": "제외할 변수 이름을 설정합니다.",
  "rule.saqt.c.cpp.280.option.ignore_var_list.name": "제외할 변수 이름",
  "rule.saqt.c.cpp.281.description": "너무 긴 이름 체커는 지정한 길이를 초과한 함수 및 변수, 필드 선언을 검출합니다.\n지정한 길이는 옵션으로 입력할 수 있습니다.\n함수 및 변수, 필드 선언 시 너무 긴 이름을 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.281.example.0.dangerous": "라인 1: 이름이 너무 긴 변수를 선언했습니다.\n라인 3: 이름이 너무 긴 필드를 선언했습니다.\n라인 5: 이름이 너무 긴 함수를 선언했습니다.",
  "rule.saqt.c.cpp.281.example.0.safe": "라인 1: 지정한 길이를 초과하지 않는 변수를 선언합니다.\n라인 3: 지정한 길이를 초과하지 않는 필드를 선언합니다.\n라인 5: 지정한 길이를 초과하지 않는 함수를 선언합니다.",
  "rule.saqt.c.cpp.281.name": "너무 긴 이름",
  "rule.saqt.c.cpp.281.option.max_field_name_length.description": "허용할 필드 이름의 최대 길이를 작성합니다.<br />예시) 20",
  "rule.saqt.c.cpp.281.option.max_field_name_length.name": "최대 필드 이름 길이",
  "rule.saqt.c.cpp.281.option.max_func_name_length.description": "허용할 함수 이름의 최대 길이를 작성합니다.<br />예시) 20",
  "rule.saqt.c.cpp.281.option.max_func_name_length.name": "최대 함수 이름 길이",
  "rule.saqt.c.cpp.281.option.max_var_name_length.description": "허용할 변수 이름의 최대 길이를 작성합니다.<br />예시) 20",
  "rule.saqt.c.cpp.281.option.max_var_name_length.name": "최대 변수 이름 길이",
  "rule.saqt.c.cpp.282.description": "누락된 명시적 배열 크기 체커는 크기를 명시하지 않고 배열 변수를 선언하는 경우를 검출합니다.\n세부 검출 대상은 옵션에 지정할 수 있습니다.\n배열 변수를 선언하는 경우 크기를 명시하도록 합니다.",
  "rule.saqt.c.cpp.282.example.0.dangerous": "라인 1: 외부 변수인 array1 변수의 크기를 명시하지 않고 선언했습니다.\n라인 2: array2 변수의 크기를 명시하지 않고 선언했습니다.",
  "rule.saqt.c.cpp.282.example.0.safe": "라인 2: 배열 변수의 크기를 명확히 선언합니다.",
  "rule.saqt.c.cpp.282.name": "누락된 명시적 배열 크기",
  "rule.saqt.c.cpp.282.option.check_extern_only.description": "옵션을 사용하는 경우, extern으로 선언된 배열에 대해서만 분석합니다.",
  "rule.saqt.c.cpp.282.option.check_extern_only.name": "extern 배열만 검출 여부",
  "rule.saqt.c.cpp.282.option.check_initializer.description": "옵션을 사용하는 경우, 빈 배열이어도 초기화 구문이 있으면 결함으로 검출하지 않습니다.",
  "rule.saqt.c.cpp.282.option.check_initializer.name": "초기화 구문이 있으면 무시",
  "rule.saqt.c.cpp.282.option.include_char_type.description": "옵션을 사용하는 경우, char 형으로 선언된 배열도 분석에 포함시킵니다.",
  "rule.saqt.c.cpp.282.option.include_char_type.name": "char 형 포함 여부",
  "rule.saqt.c.cpp.283.description": "블록 주석 형식 위반 체커는 블록 주석의 시작과 끝이 지정한 문자가 아닌 경우를 검출합니다.\n지정한 문자는 옵션으로 입력할 수 있습니다.\n블록 주석의 시작과 끝은 반드시 지정한 문자를 사용하도록 합니다.",
  "rule.saqt.c.cpp.283.example.0.dangerous": "라인 1: 블록 주석을 /** 로 시작했습니다. 사전에 정의된 블록 주석 시작을 /* 라고 가정했을 경우, 이 시작 문자열는 잘못된 문자열입니다.\n라인 3: 블록 주석을 **/ 로 끝냈습니다. 사전에 정의된 블록 주석 끝을 */ 라고 가정했을 경우, 이 끝 문자열는 잘못된 문자열입니다.",
  "rule.saqt.c.cpp.283.example.0.safe": "라인 1: 블록 주석의 시작은 지정한 문자열을 사용합니다.\n라인 3: 블록 주석의 끝은 지정한 문자열을 사용합니다.",
  "rule.saqt.c.cpp.283.name": "블록 주석 형식 위반",
  "rule.saqt.c.cpp.283.option.check_header.description": "옵션을 사용하는 경우 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.cpp.283.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.cpp.283.option.end_comment.description": "주석 종료 문자를 정의합니다.<br />예시) */",
  "rule.saqt.c.cpp.283.option.end_comment.name": "블록 종료 문자",
  "rule.saqt.c.cpp.283.option.start_comment.description": "주석 시작 문자를 정의합니다.<br />예시) /*",
  "rule.saqt.c.cpp.283.option.start_comment.name": "블록 시작 문자",
  "rule.saqt.c.cpp.284.description": "너무 긴 주석 전 소스 코드 체커는 주석이 시작하기 전 소스 코드의 길이가 지정한 길이를 초과할 경우를 검출합니다.\n지정한 길이 및 세부 조건은 옵션으로 입력할 수 있습니다.\n주석이 시작하기 전 소스 코드의 길이가 지정한 길이를 넘지 않도록 합니다.",
  "rule.saqt.c.cpp.284.example.0.dangerous": "라인 4: 주석을 작성했습니다. 이 주석을 작성하기 전 소스 코드의 길이가 지정한 길이를 넘는 것은 잘못된 사용 방법입니다.",
  "rule.saqt.c.cpp.284.example.0.safe": "라인 2: 주석을 작성하기 전 소스 코드의 길이가 지정한 길이를 넘지 않도록 해야 합니다.",
  "rule.saqt.c.cpp.284.name": "너무 긴 주석 전 소스 코드",
  "rule.saqt.c.cpp.284.option.allowed_max_line_length.description": "한 라인에 허용할 최대 소스 코드 길이를 입력합니다.<br />예시) 40",
  "rule.saqt.c.cpp.284.option.allowed_max_line_length.name": "최대 소스 코드 길이",
  "rule.saqt.c.cpp.284.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.cpp.284.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.cpp.285.description": "누락된 주석 앞 빈 줄 체커는 주석이 시작하기 전 소스 코드와 주석 사이에 빈 줄이 없는 경우를 검출합니다.\n주석이 시작하기 전 소스 코드와 주석 사이에 빈 줄을 삽입해야 합니다.",
  "rule.saqt.c.cpp.285.example.0.dangerous": "라인 3: 주석의 이전 줄에 빈 줄을 넣지 않았습니다.",
  "rule.saqt.c.cpp.285.example.0.safe": "라인 4: 주석이 시작하기 전에 빈 줄을 삽입합니다.",
  "rule.saqt.c.cpp.285.name": "누락된 주석 앞 빈 줄",
  "rule.saqt.c.cpp.285.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.cpp.285.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.cpp.286.description": "주석 들여쓰기 규칙 위반 체커는 주석의 시작열과 설명 대상 줄의 시작열이 다른 경우를 검출합니다.\n세부 조건은 옵션으로 입력할 수 있습니다.\n항상 주석의 시작열과 설명 대상 줄의 시작열을 동일하게 작성해야 합니다.",
  "rule.saqt.c.cpp.286.example.0.dangerous": "라인 1: 주석의 시작열이 1열에서 시작했습니다.\n라인 2: 설명 대상 시작열이 3열에서 시작 했습니다. 시작열과 위치가 다릅니다.",
  "rule.saqt.c.cpp.286.example.0.safe": "라인 2: 설명 대상 시작열을 주석의 시작열과 동일하게 맞춥니다.",
  "rule.saqt.c.cpp.286.name": "주석 들여쓰기 규칙 위반",
  "rule.saqt.c.cpp.286.option.check_general_comment.description": "체크 할 경우 일반 주석들의 들여쓰기를 검사합니다.",
  "rule.saqt.c.cpp.286.option.check_general_comment.name": "일반 주석 들여쓰기 검사 여부",
  "rule.saqt.c.cpp.286.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.cpp.286.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.cpp.286.option.check_voting_column.description": "다수의 들여쓰기를 선택하여 숫자가 적은 들여쓰기 그룹을 검출하게 됩니다.",
  "rule.saqt.c.cpp.286.option.check_voting_column.name": "다수 들여쓰기 선택",
  "rule.saqt.c.cpp.286.option.tab_size.description": "탭에 해당하는 공백의 개수를 설정합니다.",
  "rule.saqt.c.cpp.286.option.tab_size.name": "탭 크기",
  "rule.saqt.c.cpp.2984.description": "잘못된 열거자 연산 체커는 산술 연산자의 피연산자로 열거자를 사용하는 코드를 검출합니다.\n열거자는 비교 연산자에서만 사용하도록 합니다. 열거자를 계산에 사용하는 +, -와 같은 산술 연산자의 피연산자로 사용하면 안됩니다.\n열거자를 계산에 사용하는 산술 연산자의 피연산자로 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.2984.example.0.dangerous": "라인 3: 열거자를 계산에 사용했습니다.",
  "rule.saqt.c.cpp.2984.example.0.safe": "라인 5: 열거자 대신 열거자의 값이 저장된 변수를 사용하도록 합니다.",
  "rule.saqt.c.cpp.2984.name": "잘못된 열거자 연산",
  "rule.saqt.c.cpp.2985.description": "typedef로 부호 없는 숫자 타입 선언 체커는 typedef 선언 시 부호를 명시하지 않은 숫자 타입을 선언하는 코드를 검출합니다.\nchar, short, int, long, long long 타입을 대상으로 검사합니다.\ntypedef로 char, short, int, long, long long 타입을 선언할 때 singed 혹은 unsinged를 명시해야 합니다.",
  "rule.saqt.c.cpp.2985.example.0.dangerous": "라인 1: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.\n라인 2: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.\n라인 3: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.\n라인 4: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.\n라인 5: typedef로 숫자 타입을 선언할 때 부호를 명시하지 않았습니다.",
  "rule.saqt.c.cpp.2985.example.0.safe": "라인 1: typedef 선언에서 signed를 명시했습니다.\n라인 2: typedef 선언에서 signed를 명시했습니다.\n라인 3: typedef 선언에서 unsigned를 명시했습니다.\n라인 4: typedef 선언에서 unsigned를 명시했습니다.\n라인 5: typedef 선언에서 unsigned를 명시했습니다.",
  "rule.saqt.c.cpp.2985.name": "typedef로 부호 없는 숫자 타입 선언",
  "rule.saqt.c.cpp.2995.description": "잘못된 매크로의 이름 길이 체커는 매크로의 이름 길이가 63자를 넘어가는 코드를 검출합니다.\nMisra C 2012에서 5.4 룰에 의하면 C99 기준 매크로의 이름의 길이를 63자까지로 제한하고 있습니다.\n매크로 이름의 길이가 63자가 넘지 않도록 합니다.",
  "rule.saqt.c.cpp.2995.example.0.dangerous": "라인 2: 매크로 이름의 길이가 79입니다.",
  "rule.saqt.c.cpp.2995.example.0.safe": "라인 2: 매크로 이름의 길이가 63을 넘지 않도록 합니다.",
  "rule.saqt.c.cpp.2995.name": "잘못된 매크로의 이름 길이",
  "rule.saqt.c.cpp.2997.description": "매크로와 중복된 이름 체커는 매크로 이름과 동일한 식별자를 사용하는 변수나 함수를 검출합니다.\n소스 코드의 가독성과 개발자의 혼란을 줄이기 위해 매크로의 이름과 동일한 변수나 함수 이름을 사용하지 않도록 합니다.\n매크로의 이름과 동일한 식별자를 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.2997.example.0.dangerous": "라인 3: 변수 이름이 라인1에 있는 매크로의 이름과 같습니다.",
  "rule.saqt.c.cpp.2997.example.0.safe": "라인 3: 변수 이름이 매크로 이름과 같지 않도록 변경합니다.",
  "rule.saqt.c.cpp.2997.name": "매크로와 중복된 이름",
  "rule.saqt.c.cpp.2999.description": "default 절로 시작하거나 끝나지 않은 switch 구문 체커는 switch 구문의 시작 혹은 마지막 절이 default 절이 아닌 경우를 검출합니다.\nswitch 구문이 default 절로 시작하거나 끝나도록 코드를 작성합니다.",
  "rule.saqt.c.cpp.2999.example.0.dangerous": "라인 2: switch 구문에 default 절이 포함되지 않았습니다.",
  "rule.saqt.c.cpp.2999.example.0.safe": "라인 3: switch 구문의 시작에 default 절을 추가합니다.\n라인 16: switch 구문의 마지막에 default 절을 추가합니다.",
  "rule.saqt.c.cpp.2999.name": "default 절로 시작하거나 끝나지 않은 switch 구문",
  "rule.saqt.c.cpp.300.description": "문자 배열의 잘못된 초기화 체커는 char 배열을 문자열로 초기화할 때 배열의 크기가 문자열 길이 + 1보다 작은 선언을 검출합니다.\n문자열의 길이를 다룰 때는 항상 널 바이트를 고려해야 합니다. 배열의 크기를 문자열의 크기에 맞게 선언을 한다면 널 바이트가 제거됩니다. 이는 프로그램이 예상하지 못한 행동 또는 잠재적인 취약점으로 남습니다.\n배열의 크기는 항상 초기화 구문보다 작지 않도록 선언해야 합니다. 문자열 초기화에서는 명시적인 배열의 크기를 작성하지 않으면 필요한 크기만큼 배열을 선언해줍니다. 알맞은 배열 크기를 계산하기 어려울 경우 이 방법을 사용하는 것이 유용합니다.",
  "rule.saqt.c.cpp.300.example.0.dangerous": "라인 2: str 배열을 크기를 고정하여 문자열로 초기화했습니다. 널 바이트가 들어갈 공간이 없어 문제가 발생합니다.",
  "rule.saqt.c.cpp.300.example.0.safe": "라인 2: 배열을 초기화할 때 고정된 상수값을 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.300.name": "문자 배열의 잘못된 초기화",
  "rule.saqt.c.cpp.3000.description": "case 문에서 break 구문 누락(Misra2008) 체커는 break 구문으로 끝나지 않는 case 문을 검출합니다.\nbreak 대신에 return, continue, goto 문을 사용하는 것도 허용됩니다. default 문도 break를 사용해야 합니다.\nswitch 문에서 break 문이 누락된 경우 프로그래머가 의도하지 않는 케이스를 실행하게 되어 예상하지 않은 동작이나 오류가 발생할 수 있습니다.\ncase 문에는 break, return, continue, goto 문 중 하나가 포함되어야 합니다. default 문도 break를 사용해야 합니다.",
  "rule.saqt.c.cpp.3000.example.0.dangerous": "라인 6: case 문에서 break 문을 누락했으므로 뒤에 있는 case 문을 실행했습니다. 따라서 변수 a가 2인 경우 case 2와 case 3을 실행합니다.",
  "rule.saqt.c.cpp.3000.example.0.safe": "라인 6: 실행 흐름을 고려하여 case 문에 break 문을 추가합니다.",
  "rule.saqt.c.cpp.3000.name": "case 문에서 break 구문 누락(Misra2008)",
  "rule.saqt.c.cpp.3001.description": "switch 구문에 case 절 누락(Misra2012) 체커는 switch 구문 내부에서 두 개 이상의 case 절이 없는 경우를 검출합니다.\ndefault도 case 절로 간주합니다. 빈 case 절 혹은 default는 포함되지 않습니다. 즉, 빈 case 절 하나와 default 하나가 있는 경우에는 검출됩니다.\nswitch 구문이 반드시 최소 두 개의 case 절을 가지도록 코드를 작성합니다.",
  "rule.saqt.c.cpp.3001.example.0.dangerous": "라인 2: 유효한 case 문이 하나만 있습니다.\n라인 3: case 문이 비어 있습니다. 유효한 case 문이 아닙니다.",
  "rule.saqt.c.cpp.3001.example.0.safe": "라인 2: switch 구문이 최소 두 개의 유효한 case 절을 가지도록 코드를 작성합니다.",
  "rule.saqt.c.cpp.3001.name": "switch 구문에 case 절 누락(Misra2012)",
  "rule.saqt.c.cpp.3006.description": "extern으로 선언된 빈 배열의 크기 미지정 체커는 extern으로 선언된 배열 변수의 크기를 명시하지 않는 코드를 검출합니다.\n세부 검출 대상은 옵션에 지정할 수 있습니다.\n배열 변수를 선언하는 경우 크기를 명시하도록 합니다.",
  "rule.saqt.c.cpp.3006.example.0.dangerous": "라인 1: 외부 변수인 array1 변수의 크기를 명시하지 않고 선언했습니다.",
  "rule.saqt.c.cpp.3006.example.0.safe": "라인 2: 배열 변수의 크기를 명확히 선언합니다.",
  "rule.saqt.c.cpp.3006.name": "extern으로 선언된 빈 배열의 크기 미지정",
  "rule.saqt.c.cpp.3006.option.check_initializer.description": "옵션을 사용하는 경우, 빈 배열이어도 초기화 구문이 있으면 결함으로 검출하지 않습니다.",
  "rule.saqt.c.cpp.3006.option.check_initializer.name": "초기화 구문이 있으면 무시",
  "rule.saqt.c.cpp.3006.option.include_char_type.description": "옵션을 사용하는 경우, char 형으로 선언된 배열도 분석에 포함시킵니다.",
  "rule.saqt.c.cpp.3006.option.include_char_type.name": "char 형 포함 여부",
  "rule.saqt.c.cpp.3007.description": "if-else 문에서 else 누락 체커는 else 절로 끝나지 않는 if-else 구문을 검출합니다.\nif-else 조건문은 else 절로 끝나야 합니다.\nif-else 조건문에는 else 가 있어야 합니다.",
  "rule.saqt.c.cpp.3007.example.0.dangerous": "라인 3: if 문에서 fp가 널이 아닐 경우에 해당 작업을 수행하지만 널 일 경우 예외 처리해 주는 else 문이 빠져 있습니다.",
  "rule.saqt.c.cpp.3007.example.0.safe": "라인 5: else 문으로 적절한 예외 처리를 해줘야 합니다.",
  "rule.saqt.c.cpp.3007.name": "if-else 문에서 else 누락",
  "rule.saqt.c.cpp.3008.description": "잘못된 전역 변수의 이름 길이(Misra2012) 체커는 static 혹은 extern으로 선언된 전역 변수의 식별자 길이가 63을 넘는 코드를 검출합니다.\nMisra C 2012에서 5.2 룰에 의하면 C99 기준 전역 변수의 식별자 길이가 63자를 넘어가면 안됩니다.\nstatic 혹은 extern으로 선언된 전역 변수의 식별자 길이가 63자가 넘지 않도록 합니다.",
  "rule.saqt.c.cpp.3008.example.0.dangerous": "라인 1: extern 전역 변수의 식별자 길이가 63를 넘었습니다.\n라인 2: static 전역 변수의 식별자 길이가 63를 넘었습니다.",
  "rule.saqt.c.cpp.3008.example.0.safe": "라인 1: extern 전역 변수의 식별자 길이가 63를 넘지 않도록 합니다.\n라인 2: static 전역 변수의 식별자 길이가 63를 넘지 않도록 합니다.",
  "rule.saqt.c.cpp.3008.name": "잘못된 전역 변수의 이름 길이(Misra2012)",
  "rule.saqt.c.cpp.301.description": "부적절한 sizeof 인자의 연산자 체커는 sizeof의 인자가 수식인 경우를 검출합니다.\nsizeof의 인자에 수식을 사용하지 않도록 합니다.",
  "rule.saqt.c.cpp.301.example.0.dangerous": "라인 3: sizeof의 인자에 수식을 사용했습니다.",
  "rule.saqt.c.cpp.301.example.0.safe": "라인 3: sizeof의 인자에 수식을 사용하지 않습니다.",
  "rule.saqt.c.cpp.301.name": "부적절한 sizeof 인자의 연산자",
  "rule.saqt.c.cpp.302.description": "포인터 변수 명명 규칙 위반 체커는 사전에 정의된 이름 형식을 사용하지 않은 포인터 변수 선언을 검출합니다.\n사전에 정의된 이름 형식은 옵션으로 입력할 수 있습니다.\n포인터 변수의 이름은 사전에 정의된 이름 형식을 사용하도록 합니다.",
  "rule.saqt.c.cpp.302.example.0.dangerous": "라인 1: pnt 변수를 선언했습니다. 사전에 정의된 형식을 만족하지 않는다고 가정했을 때 이것은 잘못된 선언입니다.",
  "rule.saqt.c.cpp.302.example.0.safe": "라인 1: 사전에 정의된 이름 형식에 일치하는 p_pnt 변수를 선언합니다.",
  "rule.saqt.c.cpp.302.name": "포인터 변수 명명 규칙 위반",
  "rule.saqt.c.cpp.302.option.check_param.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.c.cpp.302.option.check_param.name": "파라미터 검사 여부",
  "rule.saqt.c.cpp.302.option.ignore_name.description": "검사에서 제외할 변수 이름을 설정합니다.",
  "rule.saqt.c.cpp.302.option.ignore_name.name": "검사에서 제외할 변수 이름",
  "rule.saqt.c.cpp.302.option.ignore_type.description": "검사에서 제외할 타입을 설정합니다.(typedef 로 지정된 이름에 한합니다.)",
  "rule.saqt.c.cpp.302.option.ignore_type.name": "검사에서 제외할 타입",
  "rule.saqt.c.cpp.302.option.pointer_variable_name_expression.description": "포인터 변수 이름 형식을 작성합니다.<br/>예시) p_[A-Za-z]+",
  "rule.saqt.c.cpp.302.option.pointer_variable_name_expression.name": "포인터 변수 이름",
  "rule.saqt.c.cpp.303.description": "너무 긴 한 줄 체커는 코드 한 줄의 길이가 사전에 옵션을 통해 정의된 길이를 초과하는 경우를 검출합니다.\n코드 한 줄이 정해진 길이를 초과하면 줄 바꿈을 실행합니다.",
  "rule.saqt.c.cpp.303.example.0.dangerous": "라인 1: 사전에 정의된 길이를 초과했습니다.",
  "rule.saqt.c.cpp.303.example.0.safe": "라인 1: 사전에 정의된 길이를 초과하지 않도록 합니다. 긴 줄을 두 줄로 나누거나 식별자의 길이를 줄입니다.",
  "rule.saqt.c.cpp.303.name": "너무 긴 한 줄",
  "rule.saqt.c.cpp.303.option.max_column_width.description": "한 라인의 최대 폭을 입력합니다.",
  "rule.saqt.c.cpp.303.option.max_column_width.name": "한 라인의 최대 폭",
  "rule.saqt.c.cpp.304.description": "잘못된 길이의 들여쓰기 체커는 들여쓰기를 할 때 스페이스가 아닌 탭을 사용한 라인을 검출합니다.\n들여쓰기는 반드시 스페이스를 사용하도록 합니다.",
  "rule.saqt.c.cpp.304.example.0.dangerous": "라인 2: 탭 문자를 사용하여 들여쓰기를 했습니다.",
  "rule.saqt.c.cpp.304.example.0.safe": "라인 2: 스페이스 문자를 사용하여 들여쓰기를 하도록 합니다.",
  "rule.saqt.c.cpp.304.name": "잘못된 길이의 들여쓰기",
  "rule.saqt.c.cpp.304.option.indent_size.description": "들여쓰기 크기를 입력합니다.",
  "rule.saqt.c.cpp.304.option.indent_size.name": "들여쓰기 크기",
  "rule.saqt.c.cpp.305.description": "한 줄에 작성된 여러 개의 구문 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.\n한 줄에 한 구문만 들어가도록 여러 줄에 나눠서 코드를 작성합니다.",
  "rule.saqt.c.cpp.305.example.0.dangerous": "라인 2: 여러 구문이 한 줄에 연이어 들어가있습니다.",
  "rule.saqt.c.cpp.305.example.0.safe": "라인 2: 한 줄에 한 구문만 존재하도록 분리합니다.",
  "rule.saqt.c.cpp.305.name": "한 줄에 작성된 여러 개의 구문",
  "rule.saqt.c.cpp.306.description": "키워드 주위 공백 규칙 위반 체커는 지정된 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n공백이 필요하다고 지정된 예약어는 if, for, while, switch, catch 구문입니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.cpp.306.example.0.dangerous": "라인 3: while 구문 뒤에 공백이 없습니다.\n라인 8: do-while 구문 뒤에 공백이 없습니다.\n라인 9: if 구문 뒤에 공백이 없습니다.\n라인 11: if 구문 뒤에 공백이 없습니다.\n라인 14: switch 구문 뒤에 공백이 없습니다.\n라인 19: catch 구문 뒤에 공백이 없습니다.",
  "rule.saqt.c.cpp.306.example.0.safe": "라인 3: while 구문과 괄호 사이에 공백을 추가합니다.\n라인 8: do-while 구문과 괄호 사이에 공백을 추가합니다.\n라인 9: if 구문과 괄호 사이에 공백을 추가합니다.\n라인 11: if 구문과 괄호 사이에 공백을 추가합니다.\n라인 14: switch 구문과 괄호 사이에 공백을 추가합니다.\n라인 19: catch 구문과 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.cpp.306.name": "키워드 주위 공백 규칙 위반",
  "rule.saqt.c.cpp.307.description": "누락된 이항 연산자 주위 공백 체커는 접근 이항 연산자를 제외한 이항 연산자들과 전후 피연산자들 사이에 공백이 없는 수식을 검출합니다.\n이 때 제외하는 접근 이항 연산자란 배열참조 ([]), 구조체 참조 (.), 구조체 포인터 참조 (->) 등을 의미합니다.\n접근 이항 연산자를 제외한 모든 이항 연산자는 반드시 사이에 공백을 넣도록 합니다.",
  "rule.saqt.c.cpp.307.example.0.dangerous": "라인 2: 이항 연산자들과 피연산자들 사이에 공백이 없습니다.",
  "rule.saqt.c.cpp.307.example.0.safe": "라인 2: 이항 연산자들과 피연산자들 사이에 공백을 넣도록 합니다.",
  "rule.saqt.c.cpp.307.name": "누락된 이항 연산자 주위 공백",
  "rule.saqt.c.cpp.308.description": "메소드 호출 시 공백 규칙 위반 체커는 함수 호출 시 함수 및 인자, 괄호 사이의 공백 규칙을 위반한 수식을 검출합니다.\n매개 변수가 있으면 괄호와 매개 변수 사이에 다음과 같은 공백이 있어야 합니다. func( param ); /* 괄호( 와 매개변수 param 사이에 공백, 괄호)와 매개변수 param 사이에 공백 */\n함수 호출 시 함수 및 인자, 괄호 사이의 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.308.example.0.dangerous": "라인 1: 함수 이름과 왼쪽 괄호 사이에 공백이 없습니다.\n라인 2: 인자가 없는 호출에서 시작 괄호와 끝 괄호 사이에 공백이 없습니다.\n라인 3: 인자와 시작 괄호 사이에 공백이 없습니다.\n라인 4: 인자와 시작 괄호 사이에 공백이 없습니다.\n라인 5: 콤마 뒤에 공백이 없습니다.",
  "rule.saqt.c.cpp.308.example.0.safe": "라인 1: 함수 이름과 왼쪽 괄호 사이에 공백을 넣습니다.\n라인 2: 인자가 없는 호출에서 시작 괄호와 끝 괄호 사이에 공백을 넣습니다.\n라인 3: 인자와 시작 괄호 사이에 공백을 넣습니다.\n라인 4: 인자와 시작 괄호 사이에 공백을 넣습니다.\n라인 5: 콤마 뒤에 공백을 넣습습니다.",
  "rule.saqt.c.cpp.308.name": "메소드 호출 시 공백 규칙 위반",
  "rule.saqt.c.cpp.309.description": "for 구문 공백 규칙 위반 체커는 for 구문의 표현식 사이에 공백이 없는 경우를 검출합니다.\n각 표현식 사이에 공백을 추가합니다.",
  "rule.saqt.c.cpp.309.example.0.dangerous": "라인 3: for 구문의 초기화, 조건, 다음 단계 식 사이에 공백이 없습니다.",
  "rule.saqt.c.cpp.309.example.0.safe": "라인 3: for 구문의 각 수식 사이에 공백을 넣어줍니다.",
  "rule.saqt.c.cpp.309.name": "for 구문 공백 규칙 위반",
  "rule.saqt.c.cpp.311.description": "단항 연산자 주위 공백 체커는 ++ 또는 ?와 같은 단항 연산자와 피연산자 사이에 공백이 있는 경우를 검출합니다.\n규격에 맞게 단항 연산식을 작성합니다.",
  "rule.saqt.c.cpp.311.example.0.dangerous": "라인 2: 피연산자 var와 단항 연산자 ++ 사이에 공백이 존재합니다.\n라인 3: 피연산자 var와 단항 연산자 -- 사이에 공백이 존재합니다.",
  "rule.saqt.c.cpp.311.example.0.safe": "라인 2: 불필요한 공백을 제거합니다.\n라인 3: 불필요한 공백을 제거합니다.",
  "rule.saqt.c.cpp.311.name": "단항 연산자 주위 공백",
  "rule.saqt.c.cpp.313.description": "형변환 시 공백 규칙 위반 체커는 캐스팅 연산자와 피연산자 사이에 공백이 없는 수식을 검출합니다.\n캐스팅 연산자와 피연산자 사이에 공백을 추가하도록 합니다.",
  "rule.saqt.c.cpp.313.example.0.dangerous": "라인 3: 캐스팅 연산자와 피연산자 사이에 공백이 없습니다.",
  "rule.saqt.c.cpp.313.example.0.safe": "라인 3: 캐스팅 연산자와 피연산자 사이에 공백을 넣어줍니다.",
  "rule.saqt.c.cpp.313.name": "형변환 시 공백 규칙 위반",
  "rule.saqt.c.cpp.314.description": "접근 연산자 주위 공백 규칙 위반 체커는 특정 객체를 접근하는데 사용하는 연산자들과 피연산자 사이에 공백이 있는 경우를 검출합니다.\n특정 객체를 접근하는데 사용하는 연산자들이란 배열참조 ([]), 구조체 참조 (.), 구조체 포인터 참조 (->), 포인터 참조 (*), 주소 값 (&) 연산자를 의미합니다.\n접근 연산자와 피연산자 사이에 공백을 넣지 않도록 합니다.",
  "rule.saqt.c.cpp.314.example.0.dangerous": "라인 1: -> 연산자와 피연산자 사이에 공백이 존재합니다.\n라인 2: [] 연산자와 피연산자 사이에 공백이 존재합니다.\n라인 3: * 연산자와 피연산자 사이에 공백이 존재합니다.",
  "rule.saqt.c.cpp.314.example.0.safe": "라인 1: -> 연산자와 피연산자 사이에 공백을 제거합니다.\n라인 2: [] 연산자와 피연산자 사이에 공백을 제거합니다.\n라인 3: * 연산자와 피연산자 사이에 공백을 제거합니다.",
  "rule.saqt.c.cpp.314.name": "접근 연산자 주위 공백 규칙 위반",
  "rule.saqt.c.cpp.315.description": "잘못된 포함 순서 체커는 정해진 순서로 헤더 파일을 포함하지 않은 경우를 검출합니다.\n정해진 순서란 시스템 헤더 파일을 먼저 포함하고 이후에 사용자 헤더를 포함하는 것입니다. 이 순서가 바뀌거나 뒤섞이지 말아야 합니다.\n반드시 헤더 파일을 포함하는 순서를 시스템 헤더를 먼저 포함하고 이후에 사용자 헤더를 포함하도록 합니다.",
  "rule.saqt.c.cpp.315.example.0.dangerous": "라인 2: 사용자 헤더를 포함했습니다.\n라인 3: 시스템 헤더를 포함했습니다. 라인 2에서 사용자 헤더를 포함하였으므로 순서가 올바르지 않습니다.",
  "rule.saqt.c.cpp.315.example.0.safe": "라인 2: 시스템 헤더를 항상 사용자 헤더보다 먼저 포함합니다.",
  "rule.saqt.c.cpp.315.name": "잘못된 포함 순서",
  "rule.saqt.c.cpp.319.description": "포인터 연산자 주위 공백 규칙 위반 체커는 포인터 연산자와 피연산자 사이에 공백이 있는 수식을 검출합니다.\n포인터 연산자와 피연산자 사이에 공백을 넣지 않도록 합니다.",
  "rule.saqt.c.cpp.319.example.0.dangerous": "라인 3: 포인터 연산자와 변수 사이에 공백이 존재합니다.",
  "rule.saqt.c.cpp.319.example.0.safe": "라인 3: 포인터 연산자와 변수 사이에 공백을 제거합니다.",
  "rule.saqt.c.cpp.319.name": "포인터 연산자 주위 공백 규칙 위반",
  "rule.saqt.c.cpp.321.description": "함수 주위 공백 규칙 위반 체커는 함수의 이름과 그 뒤의 괄호 사이에 공백이 있는 경우를 검출합니다.\n함수의 이름과 그 뒤의 괄호 사이에 공백을 넣지 않도록 합니다.",
  "rule.saqt.c.cpp.321.example.0.dangerous": "라인 1: 함수 이름과 왼쪽 괄호 사이에 공백이 있습니다.",
  "rule.saqt.c.cpp.321.example.0.safe": "라인 1: 함수 이름과 왼쪽 괄호 사이에 공백을 제거합니다.",
  "rule.saqt.c.cpp.321.name": "함수 주위 공백 규칙 위반",
  "rule.saqt.c.cpp.322.description": "괄호 내 공백 규칙 위반 체커는 괄호를 사용할 때 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. 괄호를 사용할 때 괄호 안에 공백이 있어야 합니다. 괄호 안에 여러 줄이 있으면 괄호 열의 위치가 동일해야 합니다.\n괄호 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.322.example.0.dangerous": "라인 1: 괄호와 괄호 다음에 오는 수식 사이에 공백이 없습니다.\n라인 4: 시작 괄호와 끝 괄호의 열 위치가 다릅니다.",
  "rule.saqt.c.cpp.322.example.0.safe": "라인 1: 괄호와 괄호 다음에 오는 수식 사이에 공백을 넣어줍니다.\n라인 5: 시작 괄호와 끝 괄호의 열 위치를 동일하게 맞춥니다.",
  "rule.saqt.c.cpp.322.name": "괄호 내 공백 규칙 위반",
  "rule.saqt.c.cpp.324.description": "세미콜론 주위 공백 규칙 위반 체커는 세미콜론(;) 앞에 공백이 있는 경우를 검출합니다.\n세미콜론 앞에는 공백을 두지 않습니다.",
  "rule.saqt.c.cpp.324.example.0.dangerous": "라인 2: 세미콜론 앞에 공백이 있습니다.",
  "rule.saqt.c.cpp.324.example.0.safe": "라인 2: 세미콜론 앞에 있는 공백을 삭제합니다.",
  "rule.saqt.c.cpp.324.name": "세미콜론 주위 공백 규칙 위반",
  "rule.saqt.c.cpp.325.description": "블록 들여쓰기 규칙 위반 체커는 동일한 블록 내부 문장들의 들여쓰기 수준이 다른 경우를 검출합니다.\n동일한 블록 내에서 모든 문장이 동일한 들여쓰기 수준을 가지도록 코드를 작성해야 합니다.",
  "rule.saqt.c.cpp.325.example.0.dangerous": "라인 3: 함수 정의 들여쓰기와 현재 라인의 들여쓰기가 맞지 않았습니다.\n라인 6: if 구문 블록의 들여쓰기와 현재 라인의 들여쓰기가 맞지 않았습니다.",
  "rule.saqt.c.cpp.325.example.0.safe": "라인 3: 현재 라인의 들여쓰기를 함수 정의 들여쓰기에 맞추도록 합니다.\n라인 6: 현재 라인의 들여쓰기를 if 구문 블록의 들여쓰기에 맞추도록 합니다.",
  "rule.saqt.c.cpp.325.name": "블록 들여쓰기 규칙 위반",
  "rule.saqt.c.cpp.326.description": "누락된 복합 구문 중괄호 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\n복합 구문 사용 시 구문 한 개로 이루어진 한 줄 짜리 코드라도 일관성을 위해 항상 중괄호로 감싸줍니다.",
  "rule.saqt.c.cpp.326.example.0.dangerous": "라인 3: for 구문의 본체 코드가 중괄호 없이 한 줄로 작성되었습니다.",
  "rule.saqt.c.cpp.326.example.0.safe": "라인 3: 코드에 중괄호를 추가합니다.",
  "rule.saqt.c.cpp.326.name": "누락된 복합 구문 중괄호",
  "rule.saqt.c.cpp.327.description": "누락된 복합 구문 시작 중괄호 체커는 복합 구문에서 잘못된 위치에 중괄호를 사용한 경우를 검출합니다.\n여기서 잘못된 위치란 다음과 같습니다. 제어문, 함수 선언 등 복합 구문과 중괄호의 시작 라인이 다릅니다. 끝 중괄호의 위치가 복합 구문 시작 위치와 다릅니다.\n복합 구문에서 올바른 방법으로 중괄호를 사용하도록 합니다.",
  "rule.saqt.c.cpp.327.example.0.dangerous": "라인 2: 함수 선언과 중괄호의 시작 라인 위치가 일치하지 않습니다.\n라인 5: for 구문과 중괄호의 시작 라인 위치가 일치하지 않습니다.",
  "rule.saqt.c.cpp.327.example.0.safe": "라인 1: 함수 선언과 중괄호의 시작 라인을 동일하게 맞춥니다.\n라인 3: for 구문과 중괄호의 시작 라인을 동일하게 맞춥니다.",
  "rule.saqt.c.cpp.327.name": "누락된 복합 구문 시작 중괄호",
  "rule.saqt.c.cpp.328.description": "while 구문 공백 규칙 위반 체커는 while 구문에서 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. while 구문과 괄호 사이에 공백을 넣어야 합니다. 괄호와 수식 사이에는 공백을 넣어야 합니다.\nwhile 구문 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.328.example.0.dangerous": "라인 1: while 구문과 괄호 사이에 공백이 없습니다.\n라인 2: 괄호와 수식 사이에 공백이 없습니다.",
  "rule.saqt.c.cpp.328.example.0.safe": "라인 1: 공백 규칙대로 공백을 잘 넣도록 합니다.",
  "rule.saqt.c.cpp.328.name": "while 구문 공백 규칙 위반",
  "rule.saqt.c.cpp.330.description": "if 구문 공백 규칙 위반 체커는 if 구문에서 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. if 구문과 괄호 사이에 공백을 넣어야 합니다. 괄호와 수식 사이에 공백을 넣어야 합니다.\nif 구문 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.330.example.0.dangerous": "라인 1: if 구문과 괄호 사이에 공백이 없습니다.\n라인 2: 괄호와 수식 사이에 공백이 없습니다.",
  "rule.saqt.c.cpp.330.example.0.safe": "라인 1: 공백 규칙대로 공백을 잘 넣도록 합니다.",
  "rule.saqt.c.cpp.330.name": "if 구문 공백 규칙 위반",
  "rule.saqt.c.cpp.331.description": "switch 구문 들여쓰기 규칙 위반 체커는 switch 구문에서 들여쓰기 규칙을 위반한 경우를 검출합니다.\n들여쓰기 규칙은 다음과 같습니다. switch 구문과 조건부는 같은 라인에 작성해야 합니다. case 구문 및 default 구문은 다음 라인부터 작성해야 합니다.\nswitch 구문 사용 시 들여쓰기 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.331.example.0.dangerous": "라인 2: switch 구문과 조건부의 시작 라인이 일치하지 않았습니다.\n라인 6: case 구문을 switch 구문과 같은 라인에 작성했습니다.",
  "rule.saqt.c.cpp.331.example.0.safe": "라인 1: switch 구문과 조건부를 같은 라인에 작성합니다.\n라인 2: case 구문을 switch 구문의 다음 라인부터 작성합니다.",
  "rule.saqt.c.cpp.331.name": "switch 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.cpp.332.description": "switch 구문 공백 규칙 위반 체커는 switch 구문에서 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. switch 구문과 괄호 사이에 공백을 넣어야 합니다. 괄호와 수식 사이에 공백을 넣어야 합니다.\nswitch 구문 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.332.example.0.dangerous": "라인 1: switch 구문과 괄호 사이에 공백이 없습니다.\n라인 2: 괄호와 수식 사이에 공백이 없습니다.",
  "rule.saqt.c.cpp.332.example.0.safe": "라인 1: 공백 규칙대로 공백을 잘 넣도록 합니다.",
  "rule.saqt.c.cpp.332.name": "switch 구문 공백 규칙 위반",
  "rule.saqt.c.cpp.333.description": "case 및 default 구문 들여쓰기 규칙 위반 체커는 case 구문과 default 구문을 사용할 때 들여쓰기 규칙을 위반한 경우를 검출합니다.\n들여쓰기 규칙은 다음과 같습니다. case 구문과 default 구문은 switch 구문의 들여쓰기는 switch 구문에서 1단계 더 들여쓰기를 해야 합니다. case 구문과 default 구문에 속하는 수식의 들여쓰기는 1단계 더 들여쓰기를 해야 합니다.\ncase 구문과 default 구문 사용 시 들여쓰기 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.333.example.0.dangerous": "라인 5: case 구문을 1단계 더 들여쓰기 했습니다.\n라인 7: 수식을 1단계 이전으로 들여쓰기 했습니다.\n라인 8: 수식을 1단계 이전으로 들여쓰기 했습니다.\n라인 9: default 구문을 1단계 더 들여쓰기 했습니다.",
  "rule.saqt.c.cpp.333.example.0.safe": "라인 1: 모든 case 구문과 default 구문의 들여쓰기를 일관적으로 잘 작성하도록 합니다.",
  "rule.saqt.c.cpp.333.name": "case 및 default 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.cpp.334.description": "쉼표 주위 공백 규칙 위반 체커는 콤마 연산자를 사용할 때 공백 규칙을 위반한 경우를 검출합니다.\n공백 규칙은 다음과 같습니다. 콤마 앞에는 공백이 없어야 합니다. 콤마 뒤에는 공백이 있어야 합니다. 단, 옵션에 따라 공백이 존재해야 하는 위치는 조절 가능합니다.\n콤마 연산자 사용 시 공백 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.334.example.0.dangerous": "라인 1: 콤마 연산자 뒤에 공백이 없습니다.\n라인 2: 콤마 연산자 앞에 공백이 있습니다.",
  "rule.saqt.c.cpp.334.example.0.safe": "라인 1: 공백 규칙대로 공백을 잘 넣도록 합니다.",
  "rule.saqt.c.cpp.334.name": "쉼표 주위 공백 규칙 위반",
  "rule.saqt.c.cpp.335.description": "너무 많은 논리 연산 체커는 하나의 수식에서 논리 연산자를 두 번 이상 사용한 수식을 검출합니다.\n하나의 수식에서 논리 연산자를 두 번 이상 사용한 경우 우선순위를 명확하게 하기 위해 괄호를 사용하도록 합니다. 혹은 하나의 수식에서 논리 연산자는 한 번만 사용하도록 합니다.",
  "rule.saqt.c.cpp.335.example.0.dangerous": "라인 1: && 연산자와 || 연산자를 하나의 수식에서 동시에 사용했습니다.",
  "rule.saqt.c.cpp.335.example.0.safe": "라인 1: 하나의 수식에서 두 번 이상의 논리 연산자는 괄호를 사용하여 우선순위를 구분합니다.\n라인 2: 하나의 수식에서 논리 연산자를 한 번만 사용합니다.",
  "rule.saqt.c.cpp.335.name": "너무 많은 논리 연산",
  "rule.saqt.c.cpp.335.option.allow_exceptional_cases.description": "흔하게 발생하는 예외 상황을 허용합니다. <br />예시) a == 0 && b == 1",
  "rule.saqt.c.cpp.335.option.allow_exceptional_cases.name": "흔하게 발생하는 예외 상황을 허용",
  "rule.saqt.c.cpp.338.description": "타입 명명 규칙 위반 체커는 타입을 선언할 때 명명 규칙을 위반한 경우를 검출합니다.\n명명 규칙은 다음과 같습니다. 타입은 모두 소문자로 구성하고 _t로 끝내야 합니다. 단어로 구성할 경우 단어들 사이는 _로 구분합니다. 포인터에 대한 타입을 정의할 때는 _p로 끝냅니다.\n타입 선언 시 명명 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.338.example.0.dangerous": "라인 1: typedef로 선언한 타입이 명명 규칙에 맞지 않습니다.\n라인 2: typedef로 선언한 타입이 명명 규칙에 맞지 않습니다.",
  "rule.saqt.c.cpp.338.example.0.safe": "라인 1: 명명 규칙에 맞춰 타입을 선언하도록 합니다.\n라인 2: 명명 규칙에 맞춰 타입을 선언하도록 합니다.",
  "rule.saqt.c.cpp.338.name": "타입 명명 규칙 위반",
  "rule.saqt.c.cpp.338.option.ignore_types.description": "무시할 타입 이름을 작성합니다.",
  "rule.saqt.c.cpp.338.option.ignore_types.name": "무시할 타입 이름",
  "rule.saqt.c.cpp.342.description": "함수 사이 전역 변수 선언 체커는 함수와 함수 정의 사이에 있는 전역 변수 선언을 검출합니다.\n함수 정의 사이에 전역 변수를 선언하지 않도록 합니다. 전역 변수는 항상 함수 정의 이전에 선언해야 합니다.",
  "rule.saqt.c.cpp.342.example.0.dangerous": "라인 2: 함수 정의 사이에 전역 변수를 선언했습니다.",
  "rule.saqt.c.cpp.342.example.0.safe": "라인 1: 함수 정의 이전에 전역 변수를 선언합니다.",
  "rule.saqt.c.cpp.342.name": "함수 사이 전역 변수 선언",
  "rule.saqt.c.cpp.342.option.ignored_variable_name.description": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "rule.saqt.c.cpp.342.option.ignored_variable_name.name": "검사 대상에서 제외할 변수 이름",
  "rule.saqt.c.cpp.343.description": "블록 상단에 선언되지 않은 지역 변수 체커는 지역 변수가 함수 상단에 선언되지 않은 경우를 검출합니다.\n단, for 구문의 루프 카운터는 예외로 합니다.\n지역 변수는 반드시 함수 상단에 선언하도록 합니다.",
  "rule.saqt.c.cpp.343.example.0.dangerous": "라인 3: 지역 변수가 함수 상단에 선언되어 있지 않습니다.",
  "rule.saqt.c.cpp.343.example.0.safe": "라인 2: 지역 변수를 함수 상단에 선언하도록 합니다.",
  "rule.saqt.c.cpp.343.name": "블록 상단에 선언되지 않은 지역 변수",
  "rule.saqt.c.cpp.343.option.ignored_function_name.description": "검사 대상에서 제외할 함수 이름을 기록합니다.",
  "rule.saqt.c.cpp.343.option.ignored_function_name.name": "검사 대상에서 제외할 함수 이름을 기록합니다.",
  "rule.saqt.c.cpp.343.option.ignored_variable_name.description": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "rule.saqt.c.cpp.343.option.ignored_variable_name.name": "검사 대상에서 제외할 변수 이름",
  "rule.saqt.c.cpp.343.option.skip_array_check.description": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.cpp.343.option.skip_array_check.name": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.cpp.344.description": "반복문 내 변수 선언 규칙 위반 체커는 반복문의 반복 횟수를 결정하는 루프 카운터의 선언 규칙을 위반한 경우를 검출합니다.\n선언 규칙은 다음과 같습니다. for 구문의 루프 카운터는 초기화 구문 내에서 선언합니다. 다만 컴파일러가 초기화 구문 내에서의 선언을 지원하지 않을 경우는 예외로 합니다. for 구문의 루프 카운터 이름은 i, j, k 등의 한 글자로 된 문자는 사용하지 말아야 합니다.\n루프 카운터 선언 시 선언 규칙을 잘 지키도록 합니다.",
  "rule.saqt.c.cpp.344.example.0.dangerous": "라인 3: 루프 카운터를 초기화 구문 바깥에서 선언했습니다.\n라인 4: 루프 카운터를 한글자로 선언했습니다.",
  "rule.saqt.c.cpp.344.example.0.safe": "라인 2: 루프 카운터를 초기화 구문 내에서 선언하고 의미 있는 변수명을 사용하도록 합니다.",
  "rule.saqt.c.cpp.344.name": "반복문 내 변수 선언 규칙 위반",
  "rule.saqt.c.cpp.344.option.skip_loop_check.description": "for loop counter의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.cpp.344.option.skip_loop_check.name": "for loop counter의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.c.cpp.346.description": "부적절한 크기 검사 체커는 sizeof를 사용하지 않고 타입 크기를 계산한 값이 필요한 함수를 호출하는 경우를 검출합니다.\n대상이 되는 함수는 다음과 같습니다. memset(), memcpy(), wmemcpy(), bcopy(), strncpy(), memmove(), memccpy(), mempcpy(), wmempcpy(), snprintf(), strlcat(), calloc(), malloc().\n타입 크기를 계산한 값이 필요한 함수를 호출하는 경우 sizeof를 사용하도록 합니다.",
  "rule.saqt.c.cpp.346.example.0.dangerous": "라인 3: memset() 함수를 호출할 때 sizeof를 사용하지 않았습니다.",
  "rule.saqt.c.cpp.346.example.0.safe": "라인 3: 타입 크기를 계산해야 하는 인자에 sizeof를 사용하도록 합니다.",
  "rule.saqt.c.cpp.346.name": "부적절한 크기 검사",
  "rule.saqt.c.cpp.347.description": "하나의 소스 파일에서만 사용되는 비 표준 전역 변수 체커는 한 소스 파일 내에서만 사용하는 전역 변수를 static 키워드 없이 선언한 경우를 검출합니다.\n한 소스 파일 내에서만 사용하는 전역 변수는 static으로 선언하도록 합니다.",
  "rule.saqt.c.cpp.347.example.0.dangerous": "라인 1: 한 소스 파일 내에서만 사용하는 전역 변수를 static 키워드 없이 선언했습니다.",
  "rule.saqt.c.cpp.347.example.0.safe": "라인 1: 전역 변수를 정적으로 선언합니다.",
  "rule.saqt.c.cpp.347.name": "하나의 소스 파일에서만 사용되는 비 표준 전역 변수",
  "rule.saqt.c.cpp.349.description": "헤더 파일 내 데이터 정의 시 누락된 extern 체커는 헤더 파일 내에서 변수를 정의할 때 extern 키워드가 사용되지 않은 경우를 검출합니다.\n헤더 파일에서 변수를 정의할 경우 반드시 extern 키워드를 사용하도록 합니다.",
  "rule.saqt.c.cpp.349.example.0.dangerous": "라인 2: 헤더 파일 내에서 extern 키워드 없이 변수를 선언했습니다.",
  "rule.saqt.c.cpp.349.example.0.safe": "라인 2: 헤더 파일에서는 반드시 extern 키워드를 붙여 변수를 선언합니다.",
  "rule.saqt.c.cpp.349.name": "헤더 파일 내 데이터 정의 시 누락된 extern",
  "rule.saqt.c.cpp.349.option.ignored_path.description": "검사 대상에서 제외할 경로 이름을 기록합니다.",
  "rule.saqt.c.cpp.349.option.ignored_path.name": "검사 대상에서 제외할 경로 이름",
  "rule.saqt.c.cpp.350.description": "타입 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 타입 주석을 검출합니다.\n타입 주석의 정해진 규격은 다음과 같습니다. 사전에 정의된 타입 주석 형식에 따라 코드에 선언된 재정의 타입에 대한 주석을 작성하였는지 확인합니다. 주석 내에 재정의 타입 이름이나 원본 타입 이름을 기재하는 형식의 경우 올바른 타입 이름을 기재했는지 확인합니다. 규격은 위의 두 가지 케이스입니다. 다만 타입 주석의 규격은 옵션으로 조정할 수 있습니다.\n정해진 규격에 따라 타입 주석을 작성하도록 합니다.",
  "rule.saqt.c.cpp.350.example.0.dangerous": "라인 1: 타입 주석 형식이 잘못되었습니다.",
  "rule.saqt.c.cpp.350.example.0.safe": "라인 1: 올바른 타입 주석 형식을 사용합니다.",
  "rule.saqt.c.cpp.350.name": "타입 주석 형식 위반",
  "rule.saqt.c.cpp.353.description": "한 줄에 작성된 여러 개의 선언 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.\n모든 선언은 별개의 라인으로 분리합니다.",
  "rule.saqt.c.cpp.353.example.0.dangerous": "라인 1: 한 줄에 여러 개의 변수를 선언했습니다.",
  "rule.saqt.c.cpp.353.example.0.safe": "라인 1: 한 줄에는 하나의 변수만 선언하도록 합니다.",
  "rule.saqt.c.cpp.353.name": "한 줄에 작성된 여러 개의 선언",
  "rule.saqt.c.cpp.76.description": "불필요한 변수 범위 체커는 변수가 특정 파일(또는 함수)에서만 사용되는 경우 그 해당 파일(또는 함수)에 대해서 정적으로 선언되지 않은 경우를 검출합니다.\n구체적으로는 다음과 같은 경우를 검출합니다. 파일 내에서 선언된 전역 변수를 하나의 함수에서만 사용했습니다. extern 식별자로 선언한 전역 변수를 하나의 파일에서만 사용했습니다..\n변수가 사용되는 범위에 맞게 지역 변수나 전역 변수를 사용하여 소스 코드의 가독성을 높일 수 있습니다.\n전역 변수를 지역 변수로 변경하여 알맞은 범위 내에서 변수가 사용되도록 합니다.",
  "rule.saqt.c.cpp.76.example.0.dangerous": "라인 1: 전역 변수 a에 대하여 사용 범위가 foo() 함수로 제한되어 있습니다.",
  "rule.saqt.c.cpp.76.example.0.safe": "라인 2: 전역 변수를 지역 변수로 변경하여 알맞은 범위 내에서 변수가 사용되도록 합니다.",
  "rule.saqt.c.cpp.76.name": "불필요한 변수 범위",
  "rule.saqt.c.cpp.77.description": "클래스 주석 형식 위반 체커는 클래스에 해당하는 주석의 형식을 위반한 경우를 검출합니다.\n코드에 선언된 클래스에 대한 주석을 사전에 정의된 클래스 주석 형식에 따라 확인합니다. 추가적으로 주석 내에 클래스 이름을 기재하는 형식의 경우 올바른 클래스 이름을 기재했는지 확인합니다.\n사전에 정의된 형식에 맞게 클래스의 주석을 작성합니다.",
  "rule.saqt.c.cpp.77.example.0.dangerous": "라인 2: 클래스 주석에 명시되어 있는 클래스 이름이 선언되어 있는 클래스 이름과 다릅니다.",
  "rule.saqt.c.cpp.77.example.0.safe": "라인 2: 클래스 주석에 명시되어 있는 클래스 이름이 선언되어 있는 클래스 이름과 같습니다.",
  "rule.saqt.c.cpp.77.name": "클래스 주석 형식 위반",
  "rule.saqt.c.cpp.77.option.ClassComment.description": "클래스 주석 형식을 정의합니다.",
  "rule.saqt.c.cpp.77.option.ClassComment.name": "클래스 주석 형식",
  "rule.saqt.c.cpp.78.description": "함수 주석 형식 위반 체커는 함수에 해당하는 주석의 형식을 위반한 경우를 검출합니다.\n사전에 정의된 함수 주석 형식에 따라 코드에 선언된 함수에 대한 주석을 작성하였는지 확인합니다. 추가적으로 주석 내에 함수 이름, 함수 반환 타입 및 함수 인자들의 이름, 타입, 그리고 개수를 올바른 형식의 값으로 입력하였는지 확인합니다.\n사전에 정의된 형식에 맞게 함수 주석을 작성합니다.",
  "rule.saqt.c.cpp.78.example.0.dangerous": "라인 5: 주석에 적힌 두 번째 매개변수 정보가 실제 함수의 두 번째 매개변수와 다릅니다.\n라인 6: 주석에 적힌 함수의 반환 타입과 실제 함수의 반환 타입이 다릅니다.",
  "rule.saqt.c.cpp.78.example.0.safe": "라인 5: 주석에 적힌 두 번째 매개변수 정보가 실제 함수의 두 번째 매개변수와 같습니다.\n라인 6: 주석에 적힌 함수의 반환 타입과 실제 함수의 반환 타입이 같습니다.",
  "rule.saqt.c.cpp.78.name": "함수 주석 형식 위반",
  "rule.saqt.c.cpp.78.option.FunctionComment.description": "함수 주석 형식을 정의합니다.",
  "rule.saqt.c.cpp.78.option.FunctionComment.name": "함수 주석 형식",
  "rule.saqt.c.cpp.79.description": "필드 주석 형식 위반 체커는 필드 변수에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n사전에 정의된 필드 주석 형식에 따라 코드에 선언된 필드에 대한 주석을 작성하였는지 확인합니다. 추가적으로 주석 내에 필드 이름 및 필드 타입을 올바른 형식의 값으로 입력하였는지 확인합니다.\n사전에 정의된 형식에 맞게 필드 변수 주석을 작성합니다.",
  "rule.saqt.c.cpp.79.example.0.dangerous": "라인 2: 선언된 필드 변수의 자료형과 주석에 명시된 필드 변수의 자료형이 다릅니다.",
  "rule.saqt.c.cpp.79.example.0.safe": "라인 2: 선언된 필드 변수의 자료형과 주석에 명시된 필드 변수의 자료형이 같습니다.",
  "rule.saqt.c.cpp.79.name": "필드 주석 형식 위반",
  "rule.saqt.c.cpp.79.option.FieldComment.description": "변수 주석 형식을 정의합니다.",
  "rule.saqt.c.cpp.79.option.FieldComment.name": "변수 주석 형식",
  "rule.saqt.c.cpp.79.option.field_position.description": "필드 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.cpp.79.option.field_position.name": "필드 변수 주석 위치",
  "rule.saqt.c.cpp.79.option.global_position.description": "전역 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.cpp.79.option.global_position.name": "전역 변수 주석 위치",
  "rule.saqt.c.cpp.79.option.is_check_not_exist_comment.description": "존재하지 않는 주석을 확인할 여부를 판단합니다.",
  "rule.saqt.c.cpp.79.option.is_check_not_exist_comment.name": "없는 주석 검출 확인",
  "rule.saqt.c.cpp.79.option.local_position.description": "지역 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.cpp.79.option.local_position.name": "지역 변수 주석 위치",
  "rule.saqt.c.cpp.79.option.variable_kind_field.description": "변수가 필드 변수인 것을 확인합니다.",
  "rule.saqt.c.cpp.79.option.variable_kind_field.name": "지역 변수 검사 확인",
  "rule.saqt.c.cpp.79.option.variable_kind_global.description": "변수가 전역 변수인 것을 확인합니다.",
  "rule.saqt.c.cpp.79.option.variable_kind_global.name": "전역 변수 검사 확인",
  "rule.saqt.c.cpp.79.option.variable_kind_local.description": "필드 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.cpp.79.option.variable_kind_local.name": "지역 변수 검사 확인",
  "rule.saqt.c.cpp.81.description": "파일 주석 형식 위반 체커는 파일에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n코드에 작성된 파일 내 가장 첫 주석을 사전에 정의된 파일 주석 형식에 따라 확인합니다.\n사전에 정의된 형식에 맞게 파일 주석을 작성합니다.",
  "rule.saqt.c.cpp.81.example.0.dangerous": "라인 1: 주석 형식이 /*로 되어 있습니다.",
  "rule.saqt.c.cpp.81.example.0.safe": "라인 1: 설정한 주석 형식과 맞아야 합니다.",
  "rule.saqt.c.cpp.81.name": "파일 주석 형식 위반",
  "rule.saqt.c.cpp.81.option.FileComment.description": "파일 주석 형식을 정의합니다.",
  "rule.saqt.c.cpp.81.option.FileComment.name": "파일 주석 형식",
  "rule.saqt.c.cpp.81.option.comment_number.description": "파일 당 주석의 수를 지정합니다.",
  "rule.saqt.c.cpp.81.option.comment_number.name": "파일 주석 수",
  "rule.saqt.c.cpp.88.description": "변수 명명 규칙 위반 체커는 옵션에 지정된 변수 형식을 위반하는 코드를 검출합니다.\n옵션에서 전역 변수 검사 유무, 지역 변수 검사 유무, 매개 변수 검사 유무, 루프 변수 검사 유무, 허용할 변수 이름 형식, 금지할 변수 이름 형식을 설정할 수 있습니다.\n옵션에서 지정된 변수 형식에 따라 변수 이름을 지정합니다.",
  "rule.saqt.c.cpp.88.example.0.dangerous": "라인 2: 변수 이름이 마침표(.)로 시작하므로 변수 형식을 위반했습니다.",
  "rule.saqt.c.cpp.88.example.0.safe": "라인 2: 허용된 변수 이름 형식으로 변경합니다.",
  "rule.saqt.c.cpp.88.name": "변수 명명 규칙 위반",
  "rule.saqt.c.cpp.88.option.scope_target_global.description": "옵션을 사용하는 경우, 전역 변수를 검사합니다.",
  "rule.saqt.c.cpp.88.option.scope_target_global.name": "전역 변수 분석",
  "rule.saqt.c.cpp.88.option.scope_target_local.description": "옵션을 사용하는 경우 지역 변수를 검사합니다.",
  "rule.saqt.c.cpp.88.option.scope_target_local.name": "지역 변수 분석",
  "rule.saqt.c.cpp.88.option.scope_target_loop.description": "옵션을 사용하는 경우, loop 변수를 검사합니다.",
  "rule.saqt.c.cpp.88.option.scope_target_loop.name": "Loop 변수 분석",
  "rule.saqt.c.cpp.88.option.scope_target_member.description": "선택할 경우 멤버 변수를 검사합니다.",
  "rule.saqt.c.cpp.88.option.scope_target_member.name": "멤버 변수 분석",
  "rule.saqt.c.cpp.88.option.scope_target_parameter.description": "선택할 경우 파라미터를 검사합니다.",
  "rule.saqt.c.cpp.88.option.scope_target_parameter.name": "파라미터 분석",
  "rule.saqt.c.cpp.88.option.variable_should_be_name.description": "허용할 변수 이름 형식을 작성합니다.<br/>예시) [a-zA-Z0-9_]*",
  "rule.saqt.c.cpp.88.option.variable_should_be_name.name": "허용할 변수 이름",
  "rule.saqt.c.cpp.88.option.variable_should_not_be_name.description": "금지할 변수 이름 형식을 작성합니다.<br/>예시) forbidden",
  "rule.saqt.c.cpp.88.option.variable_should_not_be_name.name": "금지할 변수 이름",
  "rule.saqt.c.cs.2423.description": "비어 있는 인터페이스 체커는 빈 인터페이스를 사용하는 경우를 검출합니다.\n마커의 목적으로 사용하는 경우에는 비어 있는 인터페이스를 사용하지 말고 사용자 지정 특성(custom attribute)을 사용해야 합니다.",
  "rule.saqt.c.cs.2423.example.0.dangerous": "라인 5: 빈 인터페이스를 사용했습니다.",
  "rule.saqt.c.cs.2423.example.0.safe": "라인 5: 비어 있는 인터페이스를 사용하지 않습니다.",
  "rule.saqt.c.cs.2423.name": "비어 있는 인터페이스",
  "rule.saqt.c.cs.2424.description": "구조체 안에 변경 가능한 형식 포함 체커는 구조체의 멤버 중 변경할 수 있는 형식이 포함된 경우를 검출합니다.\n구조체 내에 StringBuilder와 같은 변경할 수 있는(mutable) 형식을 정의하면, getter 등을 통해 값을 반환하는 경우 복사본이 암시적으로 생성되기 때문에 개발자가 인식을 못할 수 있습니다.\n구조체 내에서 변경 가능한 형식을 정의하지 않도록 합니다.",
  "rule.saqt.c.cs.2424.example.0.dangerous": "라인 5: 구조체 내에 StringBuilder와 같은 변경할 수 있는(mutable) 형식을 정의하면, getter 등을 통해 값을 반환하는 경우 복사본이 암시적으로 생성되기 때문에 개발자가 인식을 못할 수 있습니다.",
  "rule.saqt.c.cs.2424.example.0.safe": "라인 5: 기본 타입이나 변경 불가능한 형식을 사용합니다.",
  "rule.saqt.c.cs.2424.name": "구조체 안에 변경 가능한 형식 포함",
  "rule.saqt.c.cs.2424.option.forbidden_type.description": "금지된 클래스 타입의 이름을 작성합니다.",
  "rule.saqt.c.cs.2424.option.forbidden_type.name": "금지된 클래스 타입",
  "rule.saqt.c.cs.2425.description": "out 매개 변수 사용 체커는 out 매개 변수를 사용하는 경우를 검출합니다.\npublic, proteced 메소드에 out 매개 변수를 사용하는 것은 지양해야 합니다. 일반 사용자를 대상으로 하는 라이브러리 설계에서는 out 매개 변수를 사용하는 작업에 능숙할 것이라고 기대해서는 안됩니다.\nout 매개 변수를 사용하지 않습니다.",
  "rule.saqt.c.cs.2425.example.0.dangerous": "라인 8: BadMethod 메소드에 out 매개변수를 사용했습니다.",
  "rule.saqt.c.cs.2425.example.0.safe": "라인 12: BadMethod 메소드에 out 매개변수 대신 반환값을 활용합니다. 또한 둘 이상의 값을 반환해야 하는 경우 별도로 타입을 만들어서 사용하거나 튜플, 리스트 등의 컬렉션을 활용합니다.\n라인 15: out 매개변수가 반드시 필요한 경우 함수 한정자를 public이나 protected 대신 private 로 지정합니다.",
  "rule.saqt.c.cs.2425.name": "out 매개 변수 사용",
  "rule.saqt.c.cs.2426.description": "잘못된 네임스페이스 이름 체커는 네임스페이스의 이름이 소문자로 시작된 경우를 검출합니다.\n네임스페이스 이름을 대문자로 시작하도록 합니다.",
  "rule.saqt.c.cs.2426.example.0.dangerous": "라인 3: 네임스페이스의 이름이 소문자로 시작합니다.",
  "rule.saqt.c.cs.2426.example.0.safe": "라인 3: 네임스페이스의 이름은 대문자로 시작해야 합니다.",
  "rule.saqt.c.cs.2426.name": "잘못된 네임스페이스 이름",
  "rule.saqt.c.cs.2426.option.first_letter_pattern.description": "첫 글자 패턴을 입력합니다.",
  "rule.saqt.c.cs.2426.option.first_letter_pattern.name": "첫 글자 패턴",
  "rule.saqt.c.cs.2427.description": "파라미터 명명 규칙 위반 체커는 매개 변수의 이름이 대문자로 시작된 경우를 검출합니다.\n매개 변수 이름을 소문자로 시작하도록 합니다.",
  "rule.saqt.c.cs.2427.example.0.dangerous": "라인 8: 매개 변수 Reply의 이름이 대문자로 시작합니다.",
  "rule.saqt.c.cs.2427.example.0.safe": "라인 8: 매개 변수의 이름은 소문자로 시작해야 합니다.",
  "rule.saqt.c.cs.2427.name": "파라미터 명명 규칙 위반",
  "rule.saqt.c.cs.2427.option.first_letter_pattern.description": "첫 글자 패턴을 입력합니다.",
  "rule.saqt.c.cs.2427.option.first_letter_pattern.name": "첫 글자 패턴",
  "rule.saqt.c.cs.2428.description": "잘못된 지역 변수 이름 체커는 지역 변수 이름이 대문자로 시작된 경우를 검출합니다.\n지역 변수 이름을 소문자로 시작하도록 짓습니다.",
  "rule.saqt.c.cs.2428.example.0.dangerous": "라인 10: 지역 변수 LocalVar가 대문자로 시작합니다.",
  "rule.saqt.c.cs.2428.example.0.safe": "라인 10: 지역 변수는 소문자로 시작해야 합니다.",
  "rule.saqt.c.cs.2428.name": "잘못된 지역 변수 이름",
  "rule.saqt.c.cs.2428.option.first_letter_pattern.description": "첫 글자 패턴을 입력합니다.",
  "rule.saqt.c.cs.2428.option.first_letter_pattern.name": "첫 글자 패턴",
  "rule.saqt.c.cs.2431.description": "단일 필드 클래스 정의 체커는 단일 값을 가지는 클래스를 정의한 경우를 검출합니다.\n단일 값을 가지는 클래스를 정의했습니다. 이 경우에는 구조체(struct)로 정의하는 것을 권장합니다.\n클래스가 단일값을 가질 때는 구조체로 정의합니다.",
  "rule.saqt.c.cs.2431.example.0.dangerous": "라인 3: 단일 값을 가지는 클래스를 정의했습니다.",
  "rule.saqt.c.cs.2431.example.0.safe": "라인 3: 단일 값을 가지는 경우에는 구조체(struct)로 정의하는 것을 권장합니다.",
  "rule.saqt.c.cs.2431.name": "단일 필드 클래스 정의",
  "rule.saqt.c.java.2040.description": "정수 리터럴 직접 사용 체커는 -1, 0, 1을 제외한 정수 리터럴을 직접 사용한 경우를 검출합니다.\n-1, 0, 1은 for 구문의 카운터 값으로 사용될 수도 있어 제외됩니다.\n-1, 0, 1 이외의 정수 리터럴은 일단 변수에 저장한 후 그 변수를 사용하는 것을 권장합니다.",
  "rule.saqt.c.java.2040.example.0.dangerous": "라인 1: 30000 리터럴이 코드에 직접 사용되었습니다.",
  "rule.saqt.c.java.2040.example.0.safe": "라인 1: sleepTime 변수에 저장한 후 이 변수를 사용합니다.",
  "rule.saqt.c.java.2040.name": "정수 리터럴 직접 사용",
  "rule.saqt.c.java.2040.option.allowed_method.description": "인자로 상수를 전달하는 것을 허용할 메소드의 FQN을 정규식으로 지정합니다.<br />예시) .*String.substring",
  "rule.saqt.c.java.2040.option.allowed_method.name": "허용 메소드",
  "rule.saqt.c.java.2040.option.except_for_loop_head.description": "선택하면 for 구문의 제어부에 상수 사용을 허용합니다.",
  "rule.saqt.c.java.2040.option.except_for_loop_head.name": "for 구문 제어부에 상수 허용 여부",
  "rule.saqt.c.java.2251.description": "허용되지 않은 타입의 예외 던짐 체커는 허용된 종류 이외의 예외 객체를 던지는 경우를 검출합니다.\n허용된 예외 목록을 옵션으로 지정할 수 있습니다.\n코딩 규칙 가이드에 따라 지정된 예외 클래스만을 사용해야 합니다.",
  "rule.saqt.c.java.2251.example.0.dangerous": "라인 5: 허용되지 않은 클래스의 예외를 던지고 있습니다.\n라인 7: 허용되지 않은 클래스의 예외를 던지고 있습니다.",
  "rule.saqt.c.java.2251.example.0.safe": "라인 6: 허용된 예외 클래스만 사용합니다.",
  "rule.saqt.c.java.2251.name": "허용되지 않은 타입의 예외 던짐",
  "rule.saqt.c.java.2251.option.allowed_exceptions.description": "던져도 되도록 허용된 <i>Exception</i> 클래스 목록을, 패키지 이름을 포함한 전체 이름으로 입력합니다.",
  "rule.saqt.c.java.2251.option.allowed_exceptions.name": "허용 예외 클래스",
  "rule.saqt.c.java.2251.option.prohibited_exceptions.description": "던지는게 금지된 <i>Exception</i> 클래스 목록을, 패키지 이름을 포함한 전체 이름으로 입력합니다.",
  "rule.saqt.c.java.2251.option.prohibited_exceptions.name": "금지된 예외 클래스",
  "rule.saqt.c.java.2756.description": "최대 줄길이 제한 체커는 규정된 소스 라인의 최대 길이를 넘긴 경우를 검출합니다.\n너무 긴 줄을 적절한 위치에서 줄 바꿈하여 한 화면에 보기 좋게 만들어 줍니다.",
  "rule.saqt.c.java.2756.example.0.dangerous": "라인 2: 허용된 최대 길이가 100글자라면 딱 100글자인 라인은 허용됩니다.\n라인 7: 허용된 최대 길이가 100글자라면 100글자를 초과하는 라인을 작성하면 안됩니다.",
  "rule.saqt.c.java.2756.example.0.safe": "라인 7: 메소드 이름을 적절한 선에서 짧게 고치거나 적절한 위치에서 줄 바꿈을 하여 라인별 글자수를 조절합니다.",
  "rule.saqt.c.java.2756.name": "최대 줄길이 제한",
  "rule.saqt.c.java.2756.option.allow_excess_by_comment.description": "옵션을 사용하는 경우 라인의 맨 끝에 있는 주석 때문에 길이를 초과하는 경우는 허용합니다.",
  "rule.saqt.c.java.2756.option.allow_excess_by_comment.name": "라인 끝의 주석 예외 취급",
  "rule.saqt.c.java.2756.option.allowed_max_length.description": "라인별 최대 허용 길이를 정수로 입력합니다.",
  "rule.saqt.c.java.2756.option.allowed_max_length.name": "최대 허용 길이",
  "rule.saqt.c.java.2756.option.include_indent.description": "선택할 경우 들여쓰기 공백 문자의 수를 라인 길이에 포함합니다.",
  "rule.saqt.c.java.2756.option.include_indent.name": "들여쓰기 포함",
  "rule.saqt.c.java.2757.description": "일반적 중괄호 줄 바꿈 규칙 위반 체커는 중괄호 근처에서 언제 줄 바꿈을 해야 하는지에 대한 규칙을 위반한 경우를 검출합니다.\n각 구문별 상세한 중괄호 줄 바꿈 규칙을 옵션으로 설정할 수 있습니다. 기본 설정을 사용하면 Java에서 널리 통용되는 규칙을 기준으로 검사합니다.\n중괄호 근처에서 줄 바꿈을 규칙에 맞게 사용합니다.",
  "rule.saqt.c.java.2757.example.0.dangerous": "라인 6: 기본 설정일 때 else 블록에서 여는 중괄호 후 줄 바꿈을 해야 합니다.\n라인 7: 기본 설정일 때 for 구문에서 여는 중괄호 뒤에는 공백만 존재할 수 있고 주석을 쓸 수 없습니다.\n라인 9: 기본 설정일 때 for 구문에서 닫는 중괄호 앞에는 공백만 존재할 수 있고 주석을 쓸 수 없습니다.",
  "rule.saqt.c.java.2757.example.0.safe": "라인 5: 여는 중괄호 다음 줄 바꿈을 해줍니다.\n라인 8: 여는 중괄호 뒤에 주석을 사용하지 않고 줄 바꿈을 입력합니다.\n라인 11: 닫는 중괄호 앞에 주석을 사용하지 않고 필요하다면 다른 줄에 주석을 작성합니다.",
  "rule.saqt.c.java.2757.name": "일반적 중괄호 줄 바꿈 규칙 위반",
  "rule.saqt.c.java.2757.option.allow_after_open_level_ctrl.description": "각 종류별로 0은 임의의 코드 허용, 1은 주석과 공백문자 허용, 2는 공백문자만 허용, 3은 즉시 줄바꿈만 허용됩니다.",
  "rule.saqt.c.java.2757.option.allow_after_open_level_ctrl.name": "제어 종류별 중괄호를 연 후 허용되는 문자 수준",
  "rule.saqt.c.java.2757.option.allow_after_open_level_decl.description": "각 종류별로 0은 임의의 코드 허용, 1은 주석과 공백문자 허용, 2는 공백문자만 허용, 3은 즉시 줄바꿈만 허용됩니다.",
  "rule.saqt.c.java.2757.option.allow_after_open_level_decl.name": "선언 종류별 중괄호를 연 후 허용되는 문자 수준",
  "rule.saqt.c.java.2757.option.allow_close_without_newline_ctrl.description": "if, else, for, while, do, switch, try, catch, finally, synchronized 를 입력할 수 있습니다.",
  "rule.saqt.c.java.2757.option.allow_close_without_newline_ctrl.name": "중괄호를 닫기 전 줄바꿈을 하지 않아도 되는 제어 종류",
  "rule.saqt.c.java.2757.option.allow_close_without_newline_decl.description": "class, interface, enum, method, static, annotation, array 를 입력할 수 있습니다.",
  "rule.saqt.c.java.2757.option.allow_close_without_newline_decl.name": "중괄호를 닫기 전 줄바꿈을 하지 않아도 되는 선언 종류",
  "rule.saqt.c.java.2757.option.check_ctrl_exception.description": "if, else, for, while, do, switch, try, catch, finally, synchronized 를 입력할 수 있습니다.",
  "rule.saqt.c.java.2757.option.check_ctrl_exception.name": "검출하지 않을 제어 종류",
  "rule.saqt.c.java.2757.option.check_decl_exception.description": "class, interface, enum, method, static, annotation, array 를 입력할 수 있습니다.",
  "rule.saqt.c.java.2757.option.check_decl_exception.name": "검출하지 않을 선언 종류",
  "rule.saqt.c.java.2757.option.new_line_after_ctrl.description": "if, else, for, while, do, switch, try, catch, finally, synchronized 를 입력할 수 있습니다.",
  "rule.saqt.c.java.2757.option.new_line_after_ctrl.name": "중괄호를 열기 전 줄바꿈을 강제할 제어 종류",
  "rule.saqt.c.java.2757.option.new_line_after_decl.description": "class, interface, enum, method, static, annotation, array 를 입력할 수 있습니다.",
  "rule.saqt.c.java.2757.option.new_line_after_decl.name": "중괄호를 열기 전 줄바꿈을 강제할 선언 종류",
  "rule.saqt.c.java.2758.description": "조건으로 단일 변수 사용 체커는 if 구문의 조건식에 boolean 변수가 단독으로 사용되는 경우를 검출합니다.\n조건식의 내용이 변수 하나 뿐이거나 ! 연산자로 반전만 시킨 경우가 검출 대상입니다. && , || 와 같은 이항 논리 연산을 거치는 경우는 해당되지 않습니다.\n분기 조건으로 boolean 변수가 사용되는 경우, 명시적으로 true 혹은 false와 같은 값인지 비교하면 가독성을 높일 수 있습니다.",
  "rule.saqt.c.java.2758.example.0.dangerous": "라인 1: boolean 변수를 조건으로 직접 사용했습니다.\n라인 2: boolean 변수에 ! 연산만 적용해 조건으로 사용되었습니다.\n라인 5: boolean 변수가 ! 연산만 적용해 조건으로 사용되었습니다.\n라인 7: 이항 연산을 거치고 있으므로 boolean 변수를 쓰는 것에 문제가 없어 검출 대상이 아닙니다.",
  "rule.saqt.c.java.2758.example.0.safe": "라인 1: true 혹은 false 값과 명시적으로 비교하면 의미가 명확해집니다.\n라인 2: true 혹은 false 값과 명시적으로 비교하면 의미가 명확해집니다.\n라인 5: true 혹은 false 값과 명시적으로 비교하면 의미가 명확해집니다.",
  "rule.saqt.c.java.2758.name": "조건으로 단일 변수 사용",
  "rule.saqt.c.java.2759.description": "누락된 else 절 체커는 if 구문이 else 블록 없이 사용되는 경우를 검출합니다.\nelse 분기에서 아무런 해야 할 일이 없더라도 빈 else 블록을 작성합니다.",
  "rule.saqt.c.java.2759.example.0.dangerous": "라인 2: if 구문이 else 없이 단독으로 사용되었습니다.",
  "rule.saqt.c.java.2759.example.0.safe": "라인 4: if 구문 사용 시 else 블록을 반드시 사용합니다. 특별히 할 동작이 없다면 빈 else 블록을 사용해도 됩니다.",
  "rule.saqt.c.java.2759.name": "누락된 else 절",
  "rule.saqt.c.java.2760.description": "한정자 나열 순서 위반 체커는 여러 한정자를 동시에 사용할 때 정해진 순서를 지키지 않은 경우를 검출합니다.\n사용할 한정자 순서를 옵션으로 지정할 수 있습니다.\n순서에 맞게 한정자를 나열합니다.",
  "rule.saqt.c.java.2760.example.0.dangerous": "라인 1: 기본 설정에 따르면 public이 static final보다 앞에, static이 final보다 앞에 와야 합니다.\n라인 3: public이 synchronized final보다 앞에, final이 synchronized보다 앞에 와야 합니다.\n라인 8: final이 native보다 앞에, public이 native fianl보다 앞에 와야 합니다.\n라인 9: public이 final native보다 앞에 와야 합니다.",
  "rule.saqt.c.java.2760.example.0.safe": "라인 1: 순서에 맞게 한정자를 재배치합니다.\n라인 4: 순서에 맞게 한정자를 재배치합니다.\n라인 8: 순서에 맞게 한정자를 재배치합니다.\n라인 9: 순서에 맞게 한정자를 재배치합니다.",
  "rule.saqt.c.java.2760.name": "한정자 나열 순서 위반",
  "rule.saqt.c.java.2760.option.modifier_order.description": "여러 modifier가 동시에 사용될 때 지켜야할 순서를 입력합니다.",
  "rule.saqt.c.java.2760.option.modifier_order.name": "modifier 순서",
  "rule.saqt.c.java.2761.description": "복합 구문에서 중괄호 누락 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\n중괄호를 필수적으로 사용해야 하는 복합 구문의 종류를 옵션으로 지정할 수 있습니다.\n지정된 복합 구문에서 한 줄짜리 코드라 해도 규정에 맞게 항상 중괄호를 사용합니다.",
  "rule.saqt.c.java.2761.example.0.dangerous": "라인 1: if 구문의 참 분기에 중괄호가 쓰이지 않았습니다.\n라인 5: else 분기에 중괄호가 쓰이지 않았습니다.\n라인 7: if 구문의 참 분기에 중괄호가 쓰이지 않았습니다.\n라인 8: else 분기에 중괄호가 쓰이지 않았습니다.\n라인 10: for 구문에 중괄호가 쓰이지 않았습니다.\n라인 12: do 구문에 중괄호가 쓰이지 않았습니다.\n라인 17: 옵션에서 case에 중괄호를 사용하도록 설정되었다면 여기서도 중괄호가 필요합니다.\n라인 22: case 부분에 중괄호가 쓰이지 않았습니다.\n라인 24: case 부분에 중괄호가 쓰이지 않았습니다.\n라인 27: case 부분에 중괄호가 쓰이지 않았습니다.",
  "rule.saqt.c.java.2761.example.0.safe": "라인 1: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 4: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 6: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 10: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 12: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 16: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 22: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 26: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 32: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 35: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.\n라인 38: 옵션에 지정된 모든 복합 구문에 중괄호를 사용합니다.",
  "rule.saqt.c.java.2761.name": "복합 구문에서 중괄호 누락",
  "rule.saqt.c.java.2761.option.check_case.description": "선택할 경우 switch 구문의 각 case 별로 실행될 문장이 중괄호로 싸여있는지 검사합니다.",
  "rule.saqt.c.java.2761.option.check_case.name": "switch case에 항상 중괄호 사용",
  "rule.saqt.c.java.2761.option.check_do.description": "선택할 경우 do-while 구문의 반복 실행 문장이 중괄호로 싸여있는지 검사합니다.",
  "rule.saqt.c.java.2761.option.check_do.name": "do에 항상 중괄호 사용",
  "rule.saqt.c.java.2761.option.check_else.description": "옵션을 사용하는 경우, 거짓인 if 구문의 문장이 중괄호로 싸여있는지 검사합니다.",
  "rule.saqt.c.java.2761.option.check_else.name": "else에 항상 중괄호 사용",
  "rule.saqt.c.java.2761.option.check_for.description": "옵션을 사용하는 경우, for 구문의 반복 실행 문장이 중괄호로 싸여있는지 검사합니다.",
  "rule.saqt.c.java.2761.option.check_for.name": "for에 항상 중괄호 사용",
  "rule.saqt.c.java.2761.option.check_if.description": "옵션을 사용하는 경우, 참인 if 구문의 문장이 중괄호로 싸여있는지 검사합니다.",
  "rule.saqt.c.java.2761.option.check_if.name": "if 에 항상 중괄호 사용",
  "rule.saqt.c.java.2761.option.check_while.description": "옵션을 사용하는 경우 while 구문의 반복 실행 문장이 중괄호로 싸여있는지 검사합니다.",
  "rule.saqt.c.java.2761.option.check_while.name": "while에 항상 중괄호 사용",
  "rule.saqt.c.java.2762.description": "너무 넓은 변수 활성 범위 체커는 지역 변수를 사용 직전보다 이르게 선언하여 오랫동안 범위에 살아있게 되는 경우를 검출합니다.\n지역 변수를 최대한 사용 직전에 선언하여 활성 범위(live range)를 최소화합니다.",
  "rule.saqt.c.java.2762.example.0.dangerous": "라인 1: x는 맨 마지막에 사용되므로 굳이 처음에 선언할 필요가 없습니다.\n라인 2: a 선언 뒤에는 b와 p1을 선언하고 있지만, 그 다음 if 구문에서 사용되므로 기본 설정에서는 b의 선언과 한 묶음으로 보아 검출하지 않습니다.\n라인 3: b도 마찬가지로 그 다음 if 구문의 else 분기에서 사용되므로 기본 설정에서는 p1의 선언과 한 묶음으로 보아 검출하지 않습니다.",
  "rule.saqt.c.java.2762.example.0.safe": "라인 4: 변수 선언을 사용처에 최대한 가깝게 옮깁니다.\n라인 7: 변수 선언을 사용처에 최대한 가깝게 옮깁니다.\n라인 11: 변수 선언을 사용처에 최대한 가깝게 옮깁니다.",
  "rule.saqt.c.java.2762.name": "너무 넓은 변수 활성 범위",
  "rule.saqt.c.java.2762.option.allow_decl_seq.description": "선택하면 변수 선언 구문들이 연달아 사용되는 경우 하나의 선언처럼 처리합니다.",
  "rule.saqt.c.java.2762.option.allow_decl_seq.name": "변수 연속 선언을 한 묶음 처리",
  "rule.saqt.c.java.2973.description": "Switch 문에서 Default 미사용 체커는 Switch 문에서 Default를 사용하지 않는 코드를 검출합니다.\nSwitch 문에서 Default를 사용하지 않으면 예상하지 못한 동작을 대비할 수 없습니다.\nSwitch 문에서 Default를 사용해야 합니다.",
  "rule.saqt.c.java.2973.example.0.dangerous": "라인 4: switch 문에 default 절이 포함되지 않았습니다.\n라인 14: switch 문에 default 절이 포함되지 않았습니다.",
  "rule.saqt.c.java.2973.example.0.safe": "라인 8: switch 문에 default 절을 추가했습니다.\n라인 17: switch 문에 default 절을 추가했습니다.",
  "rule.saqt.c.java.2973.name": "Switch 문에서 Default 미사용",
  "rule.saqt.c.java.2977.description": "if-else 반환문의 잘못된 사용 체커는 if-else 반환문에 return 문만 존재하는 코드를 검출합니다.\nif-else 반환문에 return 구문만 있는 경우 조건문을 사용할 필요가 없습니다.\n따라서 삼항 연산자를 사용하거나, 값을 바로 반환하여 불필요한 코드를 줄일 수 있습니다.",
  "rule.saqt.c.java.2977.example.0.dangerous": "라인 4: if 문에 return 구문만 포함되어 있습니다.\n라인 6: else 문에 return 구문만 포함되어 있습니다.\n라인 11: if 문에 return 구문만 포함되어 있습니다.\n라인 13: else 문에 return 구문만 포함되어 있습니다.",
  "rule.saqt.c.java.2977.example.0.safe": "라인 2: 불필요한 if 문을 제거했습니다.\n라인 6: 삼항 연산자로 if 문을 대신했습니다.",
  "rule.saqt.c.java.2977.name": "if-else 반환문의 잘못된 사용",
  "rule.saqt.c.java.2983.description": "빈 while 구문 체커는 while 구문이 비어 있는 코드를 검출합니다.\nwhile 구문의 실행문이 없는 경우 중괄호를 사용하는 복합문을 사용하지 않도록 합니다.\nwhile 구문이 비어 있을 때는 중괄호를 사용하지 않도록 합니다.",
  "rule.saqt.c.java.2983.example.0.dangerous": "라인 2: while 구문의 실행문이 없이 중괄호를 사용했습니다.",
  "rule.saqt.c.java.2983.example.0.safe": "라인 2: while 구문이 비어 있는 경우 중괄호를 사용하지 않도록 합니다.",
  "rule.saqt.c.java.2983.name": "빈 while 구문",
  "rule.saqt.c.java.2986.description": "문서화 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 문서화 주석을 검출합니다.\n문서화 주석을 작성할 때는 기존 소스 코드와 동일한 레벨의 들여쓰기를 사용해야 하고, 소스 코드와 주석 사이에 적절한 공백 라인을 삽입해야 합니다.\n규격에 맞는 문서화 주석을 작성합니다.",
  "rule.saqt.c.java.2986.example.0.dangerous": "라인 2: 문서화 주석과 위의 소스 코드 간에 공백 라인이 없습니다.",
  "rule.saqt.c.java.2986.example.0.safe": "라인 3: 규격에 맞춰 문서화 주석을 시작하기 전에 공백 라인을 넣어줍니다.",
  "rule.saqt.c.java.2986.name": "문서화 주석 형식 위반",
  "rule.saqt.c.java.2987.description": "If 키워드 주위 공백 규칙 위반 체커는 if, else if 등의 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.java.2987.example.0.dangerous": "라인 3: if 뒤에 공백이 없습니다.\n라인 5: else if 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.2987.example.0.safe": "라인 3: if와 괄호 사이에 공백을 추가합니다.\n라인 5: else if와 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.2987.name": "If 키워드 주위 공백 규칙 위반",
  "rule.saqt.c.java.2988.description": "while 키워드 주위 공백 규칙 위반 체커는 while 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.java.2988.example.0.dangerous": "라인 3: while 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.2988.example.0.safe": "라인 3: while과 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.2988.name": "while 키워드 주위 공백 규칙 위반",
  "rule.saqt.c.java.2989.description": "for 키워드 주위 공백 규칙 위반 체커는 for 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.java.2989.example.0.dangerous": "라인 3: for 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.2989.example.0.safe": "라인 3: for와 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.2989.name": "for 키워드 주위 공백 규칙 위반",
  "rule.saqt.c.java.2990.description": "do-while 키워드 주위 공백 규칙 위반 체커는 do-while 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.java.2990.example.0.dangerous": "라인 5: while 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.2990.example.0.safe": "라인 5: while과 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.2990.name": "do-while 키워드 주위 공백 규칙 위반",
  "rule.saqt.c.java.2991.description": "switch 키워드 주위 공백 규칙 위반 체커는 switch 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.java.2991.example.0.dangerous": "라인 3: switch 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.2991.example.0.safe": "라인 3: switch와 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.2991.name": "switch 키워드 주위 공백 규칙 위반",
  "rule.saqt.c.java.2992.description": "try-catch 키워드 주위 공백 규칙 위반 체커는 try-catch 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.java.2992.example.0.dangerous": "라인 3: catch 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.2992.example.0.safe": "라인 3: catch와 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.2992.name": "try-catch 키워드 주위 공백 규칙 위반",
  "rule.saqt.c.java.2993.description": "증분 혹은 감소 연산자에서 잘못된 공백 사용 체커는 증분이나 감소 연산자를 사용할 때 피연산자와 연산자 사이에 공백이 있는 코드를 검출합니다.\n증분 혹은 감소 연산자와 비연산자 사이에 공백을 사용하지 않도록 합니다.\n증분 혹은 감소 연산자와 비연산자 사이에 공백을 사용하지 않습니다.",
  "rule.saqt.c.java.2993.example.0.dangerous": "라인 3: 증분 연산자와 피연산자 사이에 공백이 있습니다.\n라인 4: 감소 연산자와 피연산자 사이에 공백이 있습니다.\n라인 5: 증분 연산자와 피연산자 사이에 공백이 있습니다.\n라인 6: 감소 연산자와 피연산자 사이에 공백이 있습니다.",
  "rule.saqt.c.java.2993.example.0.safe": "라인 3: 증분 연산자와 피연산자 사이에 공백을 삭제합니다.\n라인 4: 감소 연산자와 피연산자 사이에 공백을 삭제합니다.\n라인 5: 증분 연산자와 피연산자 사이에 공백을 삭제합니다.\n라인 6: 감소 연산자와 피연산자 사이에 공백을 삭제합니다.",
  "rule.saqt.c.java.2993.name": "증분 혹은 감소 연산자에서 잘못된 공백 사용",
  "rule.saqt.c.java.2994.description": "assert 키워드 주위 공백 규칙 위반 체커는 assert 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.java.2994.example.0.dangerous": "라인 2: assert 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.2994.example.0.safe": "라인 2: assert와 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.2994.name": "assert 키워드 주위 공백 규칙 위반",
  "rule.saqt.c.java.410.description": "클래스 주석 형식 위반 체커는 형식에 어긋난 클래스 주석을 검출합니다.\n세부적인 주석 형식은 옵션으로 조정할 수 있습니다.\n사전에 정의된 형식에 맞게 클래스의 주석을 작성합니다.",
  "rule.saqt.c.java.410.example.0.dangerous": "라인 9: 정해진 형식에 어긋난 주석입니다.",
  "rule.saqt.c.java.410.example.0.safe": "라인 1: 정해진 형식에 맞게 주석을 작성합니다.",
  "rule.saqt.c.java.410.name": "클래스 주석 형식 위반",
  "rule.saqt.c.java.410.option.ClassComment.description": "클래스 주석 형식을 정의합니다.",
  "rule.saqt.c.java.410.option.ClassComment.name": "클래스 주석 형식",
  "rule.saqt.c.java.411.description": "필드 주석 형식 위반 체커는 형식에 어긋난 필드 변수 주석을 검출합니다.\n세부적인 주석 형식은 옵션으로 조정할 수 있습니다.\n사전에 정의된 형식에 맞게 필드 변수 주석을 작성합니다.",
  "rule.saqt.c.java.411.example.0.dangerous": "라인 1: 정해진 형식에 어긋난 주석입니다.",
  "rule.saqt.c.java.411.example.0.safe": "라인 1: 정해진 형식에 맞게 주석을 작성합니다.",
  "rule.saqt.c.java.411.name": "필드 주석 형식 위반",
  "rule.saqt.c.java.411.option.FieldComment.description": "변수 주석 형식을 정의합니다.",
  "rule.saqt.c.java.411.option.FieldComment.name": "변수 주석 형식",
  "rule.saqt.c.java.411.option.field_position.description": "필드 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.java.411.option.field_position.name": "필드 변수 주석 위치",
  "rule.saqt.c.java.411.option.global_position.description": "전역 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.java.411.option.global_position.name": "전역 변수 주석 위치",
  "rule.saqt.c.java.411.option.is_check_not_exist_comment.description": "존재하지 않는 주석을 확인할 여부를 판단합니다.",
  "rule.saqt.c.java.411.option.is_check_not_exist_comment.name": "없는 주석 검출 확인",
  "rule.saqt.c.java.411.option.local_position.description": "지역 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.java.411.option.local_position.name": "지역 변수 주석 위치",
  "rule.saqt.c.java.411.option.variable_kind_field.description": "변수가 필드 변수인 것을 확인합니다.",
  "rule.saqt.c.java.411.option.variable_kind_field.name": "지역 변수 검사 확인",
  "rule.saqt.c.java.411.option.variable_kind_global.description": "변수가 전역 변수인 것을 확인합니다.",
  "rule.saqt.c.java.411.option.variable_kind_global.name": "전역 변수 검사 확인",
  "rule.saqt.c.java.411.option.variable_kind_local.description": "필드 변수 주석 검사 위치를 지정합니다.",
  "rule.saqt.c.java.411.option.variable_kind_local.name": "지역 변수 검사 확인",
  "rule.saqt.c.java.412.description": "일반 주석 형식 위반 체커는 형식에 어긋난 일반적인 주석을 검출합니다.\n세부적인 주석 형식은 옵션으로 조정할 수 있습니다.\n사전에 정의된 형식에 맞게 일반 주석을 작성합니다.",
  "rule.saqt.c.java.412.example.0.dangerous": "라인 3: 정해진 형식에 어긋난 주석입니다.",
  "rule.saqt.c.java.412.example.0.safe": "라인 1: 정해진 형식에 맞게 주석을 작성합니다.",
  "rule.saqt.c.java.412.name": "일반 주석 형식 위반",
  "rule.saqt.c.java.412.option.GeneralComment.description": "일반 주석 형식을 정의합니다.",
  "rule.saqt.c.java.412.option.GeneralComment.name": "일반 주석 형식",
  "rule.saqt.c.java.413.description": "메소드 주석 형식 위반 체커는 형식에 어긋난 메소드 주석을 검출합니다.\n세부적인 주석 형식은 옵션으로 조정할 수 있습니다.\n사전에 정의된 형식에 맞게 패키지 주석을 작성합니다.",
  "rule.saqt.c.java.413.example.0.dangerous": "라인 1: 정해진 형식에 어긋난 주석입니다.",
  "rule.saqt.c.java.413.example.0.safe": "라인 1: 정해진 형식에 맞게 주석을 작성합니다.",
  "rule.saqt.c.java.413.name": "메소드 주석 형식 위반",
  "rule.saqt.c.java.413.option.MethodComment.description": "메소드 주석 형식을 정의합니다.",
  "rule.saqt.c.java.413.option.MethodComment.name": "메소드 주석 형식",
  "rule.saqt.c.java.413.option.exclude_method_prefix.description": "입력한 단어로 시작하는 메소드는 검출에서 제외됩니다.",
  "rule.saqt.c.java.413.option.exclude_method_prefix.name": "제외 메소드 시작 단어",
  "rule.saqt.c.java.413.option.exclude_package.description": "생성자 주석을 분석에서 제외할 패키지 이름을 입력합니다. 해당 패키지 이름 아래 있는 클래스의 생성자는 분석에서 제외됩니다.",
  "rule.saqt.c.java.413.option.exclude_package.name": "생성자 분석 제외 패키지",
  "rule.saqt.c.java.413.option.exclude_private.description": "private 한정자 메소드 제외 여부를 설정합니다.<br/> ex) 체크할 경우 private 메소드는 검사하지 않습니다.",
  "rule.saqt.c.java.413.option.exclude_private.name": "private 메소드 제외",
  "rule.saqt.c.java.414.description": "패키지 주석 형식 위반 체커는 형식에 어긋난 패캐지 주석을 검출합니다.\n세부적인 주석 형식은 옵션으로 조정할 수 있습니다.\n사전에 정의된 형식에 맞게 패키지 주석을 작성합니다.",
  "rule.saqt.c.java.414.example.0.dangerous": "라인 1: 정해진 형식에 어긋난 주석입니다.",
  "rule.saqt.c.java.414.example.0.safe": "라인 1: 정해진 형식에 맞게 주석을 작성합니다.",
  "rule.saqt.c.java.414.name": "패키지 주석 형식 위반",
  "rule.saqt.c.java.414.option.PackageComment.description": "패키지 주석 형식을 정의합니다.",
  "rule.saqt.c.java.414.option.PackageComment.name": "패키지 주석 형식",
  "rule.saqt.c.java.670.description": "파일 주석 형식 위반 체커는 파일에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n세부적인 주석 형식은 옵션으로 조정할 수 있습니다.\n사전에 정의된 형식에 맞게 파일 주석을 작성합니다.",
  "rule.saqt.c.java.670.example.0.dangerous": "라인 1: 정해진 형식에 어긋난 주석입니다.",
  "rule.saqt.c.java.670.example.0.safe": "라인 1: 정해진 형식에 맞게 주석을 작성합니다.",
  "rule.saqt.c.java.670.name": "파일 주석 형식 위반",
  "rule.saqt.c.java.670.option.FileComment.name": "파일 주석 형식",
  "rule.saqt.c.java.670.option.comment_number.description": "파일 당 주석의 수를 지정합니다.",
  "rule.saqt.c.java.670.option.comment_number.name": "파일 주석 수",
  "rule.saqt.c.java.782.description": "이름에 사용된 특수 문자 체커는 지정한 특수 문자가 포함된 변수, 메소드, 클래스 이름을 검출합니다.\n사용을 허용할 특수문자를 옵션으로 지정할 수 있습니다.\n특별히 사용이 허용된 특수문자를 제외하면 알파벳 대소문자, 숫자, 밑줄(_)만을 사용해 이름을 짓습니다.",
  "rule.saqt.c.java.782.example.0.dangerous": "라인 2: 변수 이름에 특수문자를 사용했습니다.\n라인 3: 메소드 이름에 특수문자를 사용했습니다.\n라인 4: 클래스 이름에 특수문자를 사용했습니다.",
  "rule.saqt.c.java.782.example.0.safe": "라인 2: 변수 이름에서 특수문자를 삭제합니다.\n라인 3: 메소드 이름에 특수문자를 삭제합니다.\n라인 4: 클래스 이름에 특수문자를 삭제합니다.",
  "rule.saqt.c.java.782.name": "이름에 사용된 특수 문자",
  "rule.saqt.c.java.782.option.allowed_special_char.description": "이름 내 허용할 특수 문자를 작성합니다.<br />예시) _",
  "rule.saqt.c.java.782.option.allowed_special_char.name": "허용할 특수 문자",
  "rule.saqt.c.java.783.description": "너무 긴 이름 체커는 지정한 길이를 초과한 클래스, 메소드, 변수 선언을 검출합니다.\n길이의 최댓값은 옵션으로 지정할 수 있습니다.\n지정된 최대 길이 이내의 이름을 사용합니다.",
  "rule.saqt.c.java.783.example.0.dangerous": "라인 3: 너무 긴 변수 이름을 사용했습니다.\n라인 5: 너무 긴 클래스 이름을 사용했습니다.",
  "rule.saqt.c.java.783.example.0.safe": "라인 2: 적절한 길이의 이름을 사용합니다.\n라인 3: 적절한 길이의 이름을 사용합니다.\n라인 4: 적절한 길이의 이름을 사용합니다.",
  "rule.saqt.c.java.783.name": "너무 긴 이름",
  "rule.saqt.c.java.783.option.max_class_name_length.description": "허용할 클래스 이름의 최대 길이를 입력합니다.<br />예시) 20",
  "rule.saqt.c.java.783.option.max_class_name_length.name": "클래스 이름의 최대 길이",
  "rule.saqt.c.java.783.option.max_method_name_length.description": "허용할 메소드 이름의 최대 길이를 입력합니다.<br />예시) 20",
  "rule.saqt.c.java.783.option.max_method_name_length.name": "메소드 이름의 최대 길이",
  "rule.saqt.c.java.783.option.max_var_name_length.description": "허용할 변수 이름의 최대 길이를 작성합니다.<br />예시) 20",
  "rule.saqt.c.java.783.option.max_var_name_length.name": "최대 변수 이름 길이",
  "rule.saqt.c.java.784.description": "하드코드된 숫자 체커는 정수나 실수 상수가 함수 인자나 수식 등에 직접 사용되는 경우를 검출합니다.\n한 번 이상 사용할 특정 상수는 상수 변수에 저장해두고 이 변수를 통해 사용합니다.",
  "rule.saqt.c.java.784.example.0.dangerous": "라인 10: 수식에 상수를 사용했습니다.",
  "rule.saqt.c.java.784.example.0.safe": "라인 2: 옵션을 통해 예외적으로 final 필드 변수 선언에 사용된 수식을 검출에서 제외 시킬 수 있습니다.",
  "rule.saqt.c.java.784.name": "하드코드된 숫자",
  "rule.saqt.c.java.784.option.exclude_final.description": "옵션을 사용하는 경우, final로 선언된 상수를 검출하지 않습니다.",
  "rule.saqt.c.java.784.option.exclude_final.name": "final 선언 제외 여부",
  "rule.saqt.c.java.784.option.exclude_for_init.description": "옵션을 사용하는 경우, for의 초기화 구문에서 사용된 숫자는 검출에서 제외합니다.",
  "rule.saqt.c.java.784.option.exclude_for_init.name": "For 초기화 구문 제외",
  "rule.saqt.c.java.784.option.excluded_number_literal.description": "검출에서 제외할 숫자 상수를 작성합니다.<br />예시) 0",
  "rule.saqt.c.java.784.option.excluded_number_literal.name": "제외할 숫자 상수",
  "rule.saqt.c.java.785.description": "모호한 수식 우선순위 체커는 연산이 지정한 크기보다 클 때 괄호를 통해 우선순위를 정해주지 않은 경우를 검출합니다.\n복잡한 수식을 사용할 때 혼란을 피하기 위해 괄호로 우선순위를 명시해줍니다.",
  "rule.saqt.c.java.785.example.0.dangerous": "라인 3: 복잡한 수식이 괄호 없을 사용했습니다.",
  "rule.saqt.c.java.785.example.0.safe": "라인 3: 우선순위를 명확히하기 위해 괄호를 사용합니다.",
  "rule.saqt.c.java.785.name": "모호한 수식 우선순위",
  "rule.saqt.c.java.785.option.min_num_of_expression.description": "수식 내 괄호로 우선순위 구분이 필요한 최소 연산 개수를 작성합니다.<br />예시) 3",
  "rule.saqt.c.java.785.option.min_num_of_expression.name": "괄호로 우선순위 구분이 필요한 최소 연산 개수",
  "rule.saqt.c.java.786.description": "너무 복잡한 for 구문 체커는 for 구문의 초기화 및 갱신 구문에 지정한 숫자보다 많은 수식이 사용된 경우를 검출합니다.\nfor 구문의 초기화 및 갱신 구문을 단순하게 만듭니다. 일정 이상 복잡해질 수밖에 없다면 같은 동작을 하는 while 구문으로 교체하는 것도 좋습니다.",
  "rule.saqt.c.java.786.example.0.dangerous": "라인 5: 이 예시에서는 옵션에 최댓값이 1로 지정되었다고 가정합니다. 초기화 및 갱신 구문에 식이 3개씩 사용되었습니다.",
  "rule.saqt.c.java.786.example.0.safe": "라인 5: for 구문의 초기화와 갱신 구문을 단순하게 조정합니다.",
  "rule.saqt.c.java.786.name": "너무 복잡한 for 구문",
  "rule.saqt.c.java.786.option.allowed_max_expression.description": "for의 초기화 및 갱신에 허용할 최대 수식 개수를 작성합니다.<br />예시) 2",
  "rule.saqt.c.java.786.option.allowed_max_expression.name": "for 문에 허용할 최대 수식 개수",
  "rule.saqt.c.java.788.description": "선언 시 누락된 탭 문자 체커는 변수 선언 시 타입과 식별자 사이를 탭으로 구분하지 않은 경우를 검출합니다.\n코딩 규약에 맞춰 타입과 식별자를 탭으로 구분합니다.",
  "rule.saqt.c.java.788.example.0.dangerous": "라인 2: 타입 이름 float과 변수 이름 bField 사이에 탭 문자 대신 공백 문자를 사용했습니다.\n라인 5: 타입 이름 float과 변수 이름 bLocal 사이에 탭 문자 대신 공백 문자를 사용했습니다.",
  "rule.saqt.c.java.788.example.0.safe": "라인 2: 타입 이름 float과 변수 이름 bField 사이를 탭 문자로 구분합니다.\n라인 4: 타입 이름 float과 변수 이름 bLocal 사이를 탭 문자로 구분합니다.",
  "rule.saqt.c.java.788.name": "선언 시 누락된 탭 문자",
  "rule.saqt.c.java.788.option.tab_size.description": "탭에 해당하는 공백의 개수를 설정합니다.\n예시) 4",
  "rule.saqt.c.java.788.option.tab_size.name": "탭 크기",
  "rule.saqt.c.java.790.description": "파라미터 명명 규칙 위반 체커는 필수적으로 사용해야 할 접두사를 사용하지 않은 매개 변수 변수명을 검출합니다.\n필수 접두사는 옵션으로 지정할 수 있습니다.\n모든 매개 변수 이름에 접두사를 붙입니다.",
  "rule.saqt.c.java.790.example.0.dangerous": "라인 2: 예를 들어 필수 접두사를 item으로 설정했다면 매개 변수 이름 Param은 규정에 어긋난 이름입니다.",
  "rule.saqt.c.java.790.example.0.safe": "라인 2: 규정에 맞는 매개 변수 이름을 사용합니다.",
  "rule.saqt.c.java.790.name": "파라미터 명명 규칙 위반",
  "rule.saqt.c.java.790.option.parameter_prefix.description": "파라미터 이름의 접두사로 사용될 패턴을 작성합니다.<br />예시) p",
  "rule.saqt.c.java.790.option.parameter_prefix.name": "파라미터 접두사",
  "rule.saqt.c.java.791.description": "중복된 이름 체커는 클래스, 메소드, 변수 간에 중복 사용되는 이름을 검출합니다.\n클래스와 메소드의 이름이 중복되거나 메소드 이름과 변수 이름이 중복되는 것이 검출 대상입니다.\n헷갈리지 않도록 모두 서로 다른 이름을 부여합니다.",
  "rule.saqt.c.java.791.example.0.dangerous": "라인 3: 메소드 이름이 이미 존재하는 변수 name과 동일합니다.",
  "rule.saqt.c.java.791.example.0.safe": "라인 3: 메소드 이름을 겹치지 않는 다른 이름으로 변경합니다.",
  "rule.saqt.c.java.791.name": "중복된 이름",
  "rule.saqt.c.java.792.description": "블록 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 블록 주석을 검출합니다.\n블록 주석을 작성할 때는 기존 소스 코드와 동일한 레벨의 들여쓰기를 사용해야 하고, 소스 코드와 주석 사이에 적절한 공백 라인을 삽입해야 합니다.\n규격에 맞는 블록 주석을 작성합니다.",
  "rule.saqt.c.java.792.example.0.dangerous": "라인 2: 블록 주석과 위의 소스 코드 간에 공백 라인이 없습니다.",
  "rule.saqt.c.java.792.example.0.safe": "라인 3: 규격에 맞춰 블록 주석을 시작하기 전에 공백 라인을 넣어줍니다.",
  "rule.saqt.c.java.792.name": "블록 주석 형식 위반",
  "rule.saqt.c.java.793.description": "한 줄 주석 형식 위반 체커는 정해진 규격에 맞춰 작성하지 않은 한 줄 주석을 검출합니다.\n한 줄 주석을 작성할 때는 기존 소스 코드와 동일한 레벨의 들여쓰기를 사용해야 하고, 소스 코드와 주석 사이에 적절한 공백 라인을 삽입해야 합니다.\n규격에 맞는 한 줄 주석을 작성합니다.",
  "rule.saqt.c.java.793.example.0.dangerous": "라인 2: 한 줄 주석과 위의 소스 코드 간에 공백 라인이 없습니다.\n라인 4: 한 줄 주석과 위의 소스 코드 간에 공백 라인이 없습니다.\n라인 7: 들여쓰기가 잘못되었습니다.\n라인 11: 들여쓰기가 필요합니다.",
  "rule.saqt.c.java.793.example.0.safe": "라인 3: 규격에 맞춰 한 줄 주석 위에 공백 라인을 넣어줍니다.\n라인 6: 규격에 맞춰 한 줄 주석 위에 공백 라인을 넣어줍니다.\n라인 9: 한 줄 주석 아래에는 공백 라인이 있어도 되고 없어도 됩니다.\n라인 14: 주위 소스 코드와 들여쓰기 수준을 잘 맞춰줍니다.",
  "rule.saqt.c.java.793.name": "한 줄 주석 형식 위반",
  "rule.saqt.c.java.793.option.tab_space.description": "탭에 해당하는 공백의 개수를 설정합니다.",
  "rule.saqt.c.java.793.option.tab_space.name": "탭 크기",
  "rule.saqt.c.java.794.description": "소스 코드 뒤 주석 형식 위반 체커는 코드 뒤에 이어 작성되는 한 줄 주석이 정해진 규격에 맞지 않는 경우를 검출합니다.\n소스 코드와 주석 사이에 하나 이상의 빈 칸이 필요하고, 여러 줄에 걸쳐 나란히 같은 형식의 주석이 이어질 경우엔 서로 시작 위치가 일정해야 합니다.\n규격에 맞는 한 줄 주석을 작성합니다.",
  "rule.saqt.c.java.794.example.0.dangerous": "라인 3: 인근 주석과 시작 위치가 다릅니다.\n라인 4: 소스 코드와 주석 사이에 빈 칸이 필요합니다.",
  "rule.saqt.c.java.794.example.0.safe": "라인 2: 소스 코드와 주석 사이에 빈 칸이 있습니다.\n라인 3: 비슷한 주석의 시작 위치가 정렬되었습니다.\n라인 4: 소스 코드와 주석 사이에 빈 칸이 있습니다.",
  "rule.saqt.c.java.794.name": "소스 코드 뒤 주석 형식 위반",
  "rule.saqt.c.java.795.description": "누락된 블록 마지막 주석 체커는 블록 안에서 한 줄 주석을 연속해서 사용하는 코드를 검출합니다.\n규격에 맞게 주석을 작성합니다.",
  "rule.saqt.c.java.795.example.0.dangerous": "라인 3: 블록에서 한 줄 주석을 연속해서 사용했습니다.\n라인 12: 블록에서 한 줄 주석을 연속해서 사용했습니다.",
  "rule.saqt.c.java.795.example.0.safe": "라인 3: 연속된 한 줄 주석을 블록 주석으로 묶습니다.\n라인 10: 한 줄 주석을 연속해서 사용하지 않도록 합니다.",
  "rule.saqt.c.java.795.name": "누락된 블록 마지막 주석",
  "rule.saqt.c.java.796.description": "단항 연산자 주위 공백 체커는 ++ 또는 ?와 같은 단항 연산자와 피연산자 사이에 공백이 있는 경우를 검출합니다.\n규격에 맞게 단항 연산식을 작성합니다.",
  "rule.saqt.c.java.796.example.0.dangerous": "라인 3: 피연산자 var와 단항 연산자 ++ 사이에 공백이 존재합니다.\n라인 4: 피연산자 var와 단항 연산자 -- 사이에 공백이 존재합니다.",
  "rule.saqt.c.java.796.example.0.safe": "라인 3: 불필요한 공백을 제거합니다.\n라인 4: 불필요한 공백을 제거합니다.",
  "rule.saqt.c.java.796.name": "단항 연산자 주위 공백",
  "rule.saqt.c.java.797.description": "괄호 없이 조건 연산 사용 체커는 삼항 조건 연산식에서 ? 연산자 앞에 괄호 없이 다른 이항 연산자가 존재하는 경우를 검출합니다.\n조건 부분이 연산식일 경우 조건 전체를 괄호로 감싸고, 조건 연산식 전체가 이항 연산의 대상인 경우 조건 연산식 전체를 괄호로 감싸서 읽을 때 헷갈리지 않도록 해줍니다.",
  "rule.saqt.c.java.797.example.0.dangerous": "라인 5: ? 조건 연산자 앞에 > 이항 연산자를 사용했습니다.",
  "rule.saqt.c.java.797.example.0.safe": "라인 4: 조건식 전체를 괄호로 감싸 헷갈리지 않도록 해줍니다.",
  "rule.saqt.c.java.797.name": "괄호 없이 조건 연산 사용",
  "rule.saqt.c.java.798.description": "증감연산자의 부적절한 사용 체커는 증감 연산자를 다른 연산자와 함께 사용하는 경우를 검출합니다.\n증감 연산자의 작동 순서가 헷갈리지 않도록 별도의 구문으로 분리합니다.",
  "rule.saqt.c.java.798.example.0.dangerous": "라인 5: 증감 연산자와 이항 연산자가 한 구문 안에서 동시에 사용됩니다.",
  "rule.saqt.c.java.798.example.0.safe": "라인 4: 증감 연산자의 작동 시점이 명확해지도록 여러 구문으로 분리합니다.",
  "rule.saqt.c.java.798.name": "증감연산자의 부적절한 사용",
  "rule.saqt.c.java.799.description": "누락된 이항 연산자 주위 공백 체커는 온점(.) 연산자를 제외한 이항 연산자와 전후 피연산자들 사이에 공백이 없는 경우를 검출합니다.\n옵션을 통해 단순 공백 존재 유무만 검사하거나, 혹은 필요 공백 개수를 지정할 수 있습니다.\n규칙에 맞게 적절한 공백을 포함한 이항 연산식을 작성합니다.",
  "rule.saqt.c.java.799.example.0.dangerous": "라인 3: 이항 연산자들과 피연산자들(x,y,z) 사이에 공백이 없습니다.",
  "rule.saqt.c.java.799.example.0.safe": "라인 3: 각 연산자와 피연산자 사이에 공백을 넣어줍니다.",
  "rule.saqt.c.java.799.name": "누락된 이항 연산자 주위 공백",
  "rule.saqt.c.java.799.option.check_existence_only.description": "옵션을 사용하는 경우, 공백 개수와는 관계 없이 공백 존재 유무만 검사합니다.",
  "rule.saqt.c.java.799.option.check_existence_only.name": "공백 존재 유무만 검사",
  "rule.saqt.c.java.799.option.required_whitespaces.description": "연산자와 피연산자 사이에 필요한 공백 개수를 작성합니다.<br/>예시) 1",
  "rule.saqt.c.java.799.option.required_whitespaces.name": "필요한 공백 개수",
  "rule.saqt.c.java.801.description": "한 줄에 작성된 여러 개의 구문 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.\n한 줄에 한 구문만 들어가도록 여러 줄에 나눠서 코드를 작성합니다.",
  "rule.saqt.c.java.801.example.0.dangerous": "라인 3: 여러 구문이 한 줄에 연이어 들어가있습니다.",
  "rule.saqt.c.java.801.example.0.safe": "라인 2: 한 줄에 한 구문만 존재하도록 분리합니다.",
  "rule.saqt.c.java.801.name": "한 줄에 작성된 여러 개의 구문",
  "rule.saqt.c.java.802.description": "블록 들여쓰기 규칙 위반 체커는 동일한 블록 내의 문장들의 들여쓰기가 각기 다른 경우를 검출합니다.\n한 블록 안의 문장들은 시작 컬럼을 일치시켜 들여쓰기를 맞춰줍니다.",
  "rule.saqt.c.java.802.example.0.dangerous": "라인 4: 들여쓰기가 잘못되었습니다.\n라인 7: 들여쓰기가 잘못되었습니다.",
  "rule.saqt.c.java.802.example.0.safe": "라인 4: 들여쓰기를 주위 문장과 일치시킵니다.\n라인 7: 들여쓰기를 주위 문장과 일치시킵니다.",
  "rule.saqt.c.java.802.name": "블록 들여쓰기 규칙 위반",
  "rule.saqt.c.java.802.option.check_alignment_block.description": "Block 내 처음 줄의 들여쓰기와 동일한 들여쓰기인지 확인합니다.",
  "rule.saqt.c.java.802.option.check_alignment_block.name": "정렬 여부 확인",
  "rule.saqt.c.java.802.option.tab_space.description": "탭에 해당하는 공백의 개수를 설정합니다.",
  "rule.saqt.c.java.802.option.tab_space.name": "탭 크기",
  "rule.saqt.c.java.802.option.target_block.description": "검출 대상 block 목록을 설정합니다. 목록에 없는 block 이름은 제외 됩니다.",
  "rule.saqt.c.java.802.option.target_block.name": "검출 할 대상 block 목록",
  "rule.saqt.c.java.802.option.white_space_number.description": "Block 내 들여쓰기 위치를 설정 합니다.",
  "rule.saqt.c.java.802.option.white_space_number.name": "들여쓰기 위치",
  "rule.saqt.c.java.803.description": "누락된 패키지 선언 체커는 소스 파일 맨 위에 패키지 선언이 없는 경우를 검출합니다.\n모든 소스 파일에 소속 패키지를 명시적으로 선언합니다.",
  "rule.saqt.c.java.803.example.0.dangerous": "라인 1: 패키지 선언 없이 소스 내용이 시작됩니다.",
  "rule.saqt.c.java.803.example.0.safe": "라인 1: 패키지를 명시적으로 선언합니다.",
  "rule.saqt.c.java.803.name": "누락된 패키지 선언",
  "rule.saqt.c.java.804.description": "반환 구문에서 누락된 괄호 체커는 반환 값이 단일 변수나 값이 아닌 식을 반환할 때 괄호가 없는 경우를 검출합니다.\n반환 구문에서 단일 변수나 값이 아닌 값에는 괄호를 사용해야 합니다.",
  "rule.saqt.c.java.804.example.0.dangerous": "라인 4: 반환문에 식을 사용했습니다. 괄호가 있어야 합니다.\n라인 6: 반환문에 식을 사용했습니다. 괄호가 있어야 합니다.",
  "rule.saqt.c.java.804.example.0.safe": "라인 4: 반환 값을 괄호로 감싸줍니다.\n라인 6: 반환 값을 괄호로 감싸줍니다.",
  "rule.saqt.c.java.804.name": "반환 구문에서 누락된 괄호",
  "rule.saqt.c.java.805.description": "누락된 if 구문 중괄호 체커는 if 구문의 각 분기별 코드를 중괄호 없이 작성한 경우를 검출합니다.\n각 분기별 코드가 한 줄 구문이라 해도 일관성을 위해 항상 중괄호로 감싸줍니다.",
  "rule.saqt.c.java.805.example.0.dangerous": "라인 4: if 구문의 참인 분기 코드가 중괄호 없이 작성되었습니다.",
  "rule.saqt.c.java.805.example.0.safe": "라인 3: 한 줄 구문이라도 중괄호를 항상 사용합니다.",
  "rule.saqt.c.java.805.name": "누락된 if 구문 중괄호",
  "rule.saqt.c.java.806.description": "누락된 finally 블록 체커는 try 구문에 finally 블록이 없는 경우를 검출합니다.\n모든 try 구문에 항상 finally 블록을 덧붙입니다.",
  "rule.saqt.c.java.806.example.0.dangerous": "라인 5: try 구문의 끝에 finlally 블록이 없습니다.",
  "rule.saqt.c.java.806.example.0.safe": "라인 6: try 구문에 finally 블록을 추가합니다.",
  "rule.saqt.c.java.806.name": "누락된 finally 블록",
  "rule.saqt.c.java.807.description": "for 구문 공백 규칙 위반 체커는 for 구문의 표현식 사이에 공백이 없는 경우를 검출합니다.\n각 표현식 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.807.example.0.dangerous": "라인 4: for 구문의 초기화, 조건, 다음 단계 식 사이에 공백이 없습니다.",
  "rule.saqt.c.java.807.example.0.safe": "라인 4: for 구문의 각 식 사이에 공백을 넣어줍니다.",
  "rule.saqt.c.java.807.name": "for 구문 공백 규칙 위반",
  "rule.saqt.c.java.808.description": "형변환 시 공백 규칙 위반 체커는 캐스팅 연산자와 피연산자 사이에 공백이 없는 수식을 검출합니다.\n캐스팅 연산자와 피연산자 사이에 공백이 있어야 합니다.",
  "rule.saqt.c.java.808.example.0.dangerous": "라인 4: 캐스팅 연산자(char)와 피연산자(num) 사이에 공백이 없습니다.",
  "rule.saqt.c.java.808.example.0.safe": "라인 4: 캐스팅 연산자와 피연산자 사이에 공백을 삽입합니다.",
  "rule.saqt.c.java.808.name": "형변환 시 공백 규칙 위반",
  "rule.saqt.c.java.808.option.check_inner_space.description": "선택할 경우 괄호 안쪽에 공백을 이슈로 검출합니다.",
  "rule.saqt.c.java.808.option.check_inner_space.name": "괄호 안 공백 확인",
  "rule.saqt.c.java.812.description": "if 구문 들여쓰기 규칙 위반 체커는 조건식이 여러 줄로 나뉘었을 때 조건식의 들여쓰기가 제대로 되지 않은 경우를 검출합니다.\nif 구문의 조건식에 해당하는 줄이 여러줄로 구성될 경우, if 구문 내의 다른 문장들과 구분하기 위해 충분한 공백을 사용하여 들여쓰기를 해야 합니다.",
  "rule.saqt.c.java.812.example.0.dangerous": "라인 4: if 구문의 조건식에서 줄 바꿈이 일어났는데 윗줄의 조건식 앞부분과 지나치게 떨어져있습니다.",
  "rule.saqt.c.java.812.example.0.safe": "라인 4: 줄 바꿈 전후의 수식들은 시작지점을 일치시켜 보기 좋게 정렬합니다.",
  "rule.saqt.c.java.812.name": "if 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.java.812.option.spaces_for_tab.description": "탭에 해당하는 공백의 개수를 설정합니다.\n예시) 4",
  "rule.saqt.c.java.812.option.spaces_for_tab.name": "탭 크기",
  "rule.saqt.c.java.813.description": "한 줄에 작성된 여러 개의 선언 체커는 한 줄에 여러 개의 선언이 존재하는 코드를 검출합니다.\n각 선언별로 별도의 주석을 매달 공간을 확보하기 위해 모든 선언은 별개의 라인으로 분리합니다.",
  "rule.saqt.c.java.813.example.0.dangerous": "라인 2: 변수 4개가 한 라인 안에서 선언되었습니다.",
  "rule.saqt.c.java.813.example.0.safe": "라인 2: 모든 선언이 각자 별개의 라인에 위치하도록 합니다.",
  "rule.saqt.c.java.813.name": "한 줄에 작성된 여러 개의 선언",
  "rule.saqt.c.java.814.description": "블록 중간에 존재하는 선언 체커는 지역 변수가 메소드 상단에 선언되지 않은 경우를 검출합니다.\n옵션을 통해 반복문에서 카운터로 사용되는 변수는 제외할 수 있습니다.\n모든 지역 변수를 메소드 블록 상단에 몰아서 선언합니다.",
  "rule.saqt.c.java.814.example.0.dangerous": "라인 5: 지역 변수가 메소드 맨 앞에 선언되지 않고 중간에 선언되었습니다.",
  "rule.saqt.c.java.814.example.0.safe": "라인 4: 모든 지역 변수 선언을 메소드 상단으로 옮깁니다.",
  "rule.saqt.c.java.814.name": "블록 중간에 존재하는 선언",
  "rule.saqt.c.java.814.option.exclude_loop_counter.description": "옵션을 사용하는 경우, loop index로 선언된 변수는 검출에서 제외합니다.",
  "rule.saqt.c.java.814.option.exclude_loop_counter.name": "Loop index 변수 제외",
  "rule.saqt.c.java.815.description": "중괄호 형식 위반 체커는 클래스나 메소드 선언에서 중괄호를 규격에 맞춰 사용하지 못한 경우를 검출합니다.\n여는 중괄호는 선언 부분과 같은 라인에서 사용하고, 닫는 중괄호에는 여는 중괄호가 포함되어 있는 문장과 같은 들여쓰기를 적용해야 합니다.",
  "rule.saqt.c.java.815.example.0.dangerous": "라인 3: 여는 중괄호가 메소드 선언 부분에 없습니다.\n라인 10: 닫는 중괄호와 라인 7의 메소드 선언부의 들여쓰기가 다릅니다.",
  "rule.saqt.c.java.815.example.0.safe": "라인 3: 클래스나 메소드 선언에서 여는 중괄호는 선언 헤더와 같은 라인에 위치해야 합니다.\n라인 6: 닫는 중괄호의 들여쓰기를 선언 시작부와 일치시킵니다.",
  "rule.saqt.c.java.815.name": "중괄호 형식 위반",
  "rule.saqt.c.java.816.description": "부적절한 배열 선언 체커는 배열을 선언할 때 타입 이름 뒤에 [] 대괄호를 입력하지 않은 코드를 검출합니다.\n타입 이름 대신 변수 이름 뒤에 대괄호를 써도 배열 선언이 가능하지만 타입 이름 뒤에 대괄호를 붙이는 방식으로 통일합니다.\n정해진 양식에 맞게 배열 선언을 수정합니다. 변수 이름 대신 타입 이름 바로 뒤에 대괄호를 두어야 하며 타입 이름과 대괄호 사이에는 공백이 없어야 합니다.",
  "rule.saqt.c.java.816.example.0.dangerous": "라인 2: 변수명 뒤에 대괄호를 붙이는 방식으로 배열이 선언되었습니다.",
  "rule.saqt.c.java.816.example.0.safe": "라인 2: 타입 이름 뒤에 대괄호를 붙이도록 수정합니다.",
  "rule.saqt.c.java.816.name": "부적절한 배열 선언",
  "rule.saqt.c.java.821.description": "동기화되지 않은 public 메소드 체커는 public으로 선언된 메소드에서 필드 변수가 사용되었지만 synchronized 한정자는 없는 경우를 검출합니다.\n필드 변수에 접근하는 public 메소드를 항상 synchronized로 선언합니다.",
  "rule.saqt.c.java.821.example.0.dangerous": "라인 3: public 메소드가 필드 변수 field에 접근하지만 synchronized 한정자가 지정되지 않았습니다.",
  "rule.saqt.c.java.821.example.0.safe": "라인 3: 조건에 부합하는 메소드를 synchronized로 선언합니다.",
  "rule.saqt.c.java.821.name": "동기화되지 않은 public 메소드",
  "rule.saqt.c.java.822.description": "동기화 구문 사용 체커는 모든 synchronized 구문을 검출합니다.\nsynchronized 구문이 아닌 synchronized 메소드를 사용할 것을 권장합니다.",
  "rule.saqt.c.java.822.example.0.dangerous": "라인 4: synchronized 구문을 사용했습니다.",
  "rule.saqt.c.java.822.example.0.safe": "라인 3: 동기화되어야 할 코드를 포함하는 메소드 자체를 synchronized로 선언합니다.",
  "rule.saqt.c.java.822.name": "동기화 구문 사용",
  "rule.saqt.c.java.826.description": "누락된 복합 구문 시작 중괄호 체커는 제어문, 클래스, 메소드 선언 등 복합문의 시작 라인에 여는 중괄호가 없는 경우를 검출합니다.\n여는 중괄호는 줄 바꿈하지 말고 해당 구문의 첫 라인에 함께 두어야 합니다.\n여는 중괄호를 쓰기 전 줄 바꿈을 하지 않습니다.",
  "rule.saqt.c.java.826.example.0.dangerous": "라인 2: 여는 중괄호가 클래스 선언 시작 라인 다음 라인에 위치합니다.\n라인 4: 여는 중괄호가 메소드 선언 시작 라인 다음 라인에 위치합니다.\n라인 7: 여는 중괄호가 for 구문 시작 라인 다음 라인에 위치합니다.",
  "rule.saqt.c.java.826.example.0.safe": "라인 2: 클래스 선언의 여는 중괄호는 줄 바꿈 없이 사용합니다.\n라인 3: 메소드 선언의 여는 중괄호는 줄 바꿈 없이 사용합니다.\n라인 5: for 구문의 여는 중괄호는 줄 바꿈 없이 사용합니다.",
  "rule.saqt.c.java.826.name": "누락된 복합 구문 시작 중괄호",
  "rule.saqt.c.java.826.option.tab_space.description": "탭에 해당하는 공백의 개수를 설정합니다.",
  "rule.saqt.c.java.826.option.tab_space.name": "탭 크기",
  "rule.saqt.c.java.827.description": "상수 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 상수 이름을 검출합니다.\n상수 이름 규칙은 옵션으로 지정 가능하며 final로 선언된 필드 변수가 상수로 취급됩니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.java.827.example.0.dangerous": "라인 2: 상수 이름이 대문자로 시작되어야한다는 규칙이 지정되었다면 bad는 잘못된 이름입니다.",
  "rule.saqt.c.java.827.example.0.safe": "라인 2: 규칙에 맞는 이름으로 정정합니다.",
  "rule.saqt.c.java.827.name": "상수 명명 규칙 위반",
  "rule.saqt.c.java.827.option.name_pattern.description": "상수 이름의 규칙을 작성합니다. <br /> 예시) [A-Z].*",
  "rule.saqt.c.java.827.option.name_pattern.name": "상수 이름 규칙",
  "rule.saqt.c.java.828.description": "변수 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 변수 이름을 검출합니다.\n옵션을 통해 다양한 종류의 변수에 대해 이름 규칙을 지정할 수 있습니다. 예를 들어 첫 번째 규칙의 기본 옵션은 !final과 [a-z].* 으로 주어져있는데, final이 아닌 모든 변수 이름은 알파벳 소문자로 시작되어야 한다는 의미로 해석됩니다. 또한 두 번째 규칙의 기본 옵션은 public static final field와 긴 정규식으로 주어져있는데, 이는 public static final 필드 변수 이름은 알파벳 대문자와 숫자, 밑줄로 이루어져야한다는 의미로 해석됩니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.java.828.example.0.dangerous": "라인 2: 기본 설정을 예로 들면 final이 아닌 모든 변수의 이름은 첫 글자가 소문자여야 하므로 BadName 은 잘못된 이름입니다.\n라인 4: public static final 필드 상수 이름은 대문자와 밑줄로만 구성되어야 하므로 stringConstant도 잘못된 이름입니다.",
  "rule.saqt.c.java.828.example.0.safe": "라인 2: 규칙에 맞게 소문자로 시작하는 변수 이름으로 수정했습니다.\n라인 4: 규칙에 맞게 대문자와 밑줄로만 변수 이름을 작성했습니다.",
  "rule.saqt.c.java.828.name": "변수 명명 규칙 위반",
  "rule.saqt.c.java.828.option.name_rule_1.description": "첫 번째 값으로는 패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다. \n예시) !final field (final이 아닌 모든 필드 변수), [a-z].* (첫 번째 글자가 소문자인 이름)",
  "rule.saqt.c.java.828.option.name_rule_1.name": "조건과 패턴",
  "rule.saqt.c.java.828.option.name_rule_2.description": "첫 번째 값으로는 패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다. \n예시) public static final field (public static final로 지정된 모든 필드 상수), [A-Z][A-Z 0-9]+(_[A-Z 0-9]+)* (대문자로 시작하며 대문자, 숫자, 밑줄로 이루어진 이름)",
  "rule.saqt.c.java.828.option.name_rule_2.name": "조건과 패턴",
  "rule.saqt.c.java.828.option.name_rule_3.description": "첫 번째 값으로는 패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다. \n예시) !final parameter (final이 아닌 모든 메소드 인자 변수), [a-z].* (첫 번째 글자가 소문자인 이름)",
  "rule.saqt.c.java.828.option.name_rule_3.name": "조건과 패턴",
  "rule.saqt.c.java.828.option.name_rule_4.description": "첫 번째 값으로는 패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다.\n예시) !final local (final이 아닌 모든 메소드 내 지역 변수), [a-z].* (첫 번째 글자가 소문자인 이름)",
  "rule.saqt.c.java.828.option.name_rule_4.name": "조건과 패턴",
  "rule.saqt.c.java.828.option.name_rule_5.description": "첫 번째 값으로는  패턴을 적용할 변수의 조건을, 두 번째 값으로는 적용할 정규식 패턴을 전달합니다.  <br /> 예시) !final field (final이 아닌 모든 필드 변수), [a-z].* (첫번째 글자가 소문자인 이름)",
  "rule.saqt.c.java.828.option.name_rule_5.name": "조건과 패턴",
  "rule.saqt.c.java.829.description": "메소드 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 메소드 이름을 검출합니다.\n옵션을 통해 메소드 이름 규칙을 지정할 수 있습니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.java.829.example.0.dangerous": "라인 2: 메소드 이름은 소문자로 시작되어아 하며, 첫 단어 검사 옵션 선택시 지정된 동사로 시작되어야 합니다.",
  "rule.saqt.c.java.829.example.0.safe": "라인 3: 메소드 이름을 소문자로 시작하도록, 그리고 지정된 첫 단어 중 하나인 set으로 시작하도록 변경했습니다.",
  "rule.saqt.c.java.829.name": "메소드 명명 규칙 위반",
  "rule.saqt.c.java.829.option.check_first_word.description": "선택할 경우 메소드 이름의 첫 단어를 검사합니다.",
  "rule.saqt.c.java.829.option.check_first_word.name": "메소드 이름 첫 단어 검사",
  "rule.saqt.c.java.829.option.check_private_method.description": "체크시 private 메소드의 이름도 검사합니다.",
  "rule.saqt.c.java.829.option.check_private_method.name": "private 메소드 검사",
  "rule.saqt.c.java.829.option.first_word.description": "메소드 이름의 맨 앞에 사용할 동사 목록을 작성합니다. <br /> 예시) do",
  "rule.saqt.c.java.829.option.first_word.name": "메소드의 첫 단어",
  "rule.saqt.c.java.829.option.name_pattern.description": "메소드 이름의 규칙을 작성합니다. <br /> 예시) [a-z].*",
  "rule.saqt.c.java.829.option.name_pattern.name": "메소드 이름 규칙",
  "rule.saqt.c.java.830.description": "클래스 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 클래스 혹은 인터페이스의 이름을 검출합니다.\n옵션을 통해 클래스 이름과 인터페이스 이름의 첫 글자 규칙을 지정할 수 있습니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.java.830.example.0.dangerous": "라인 1: 클래스 이름의 첫 글자가 소문자입니다.",
  "rule.saqt.c.java.830.example.0.safe": "라인 1: 규칙에 맞게 클래스 이름의 첫 글자를 대문자로 변경합니다.",
  "rule.saqt.c.java.830.name": "클래스 명명 규칙 위반",
  "rule.saqt.c.java.830.option.first_letter_pattern.description": "클래스 혹은 인터페이스의 첫 글자 규칙을 작성합니다. <br /> 예시) A-Z",
  "rule.saqt.c.java.830.option.first_letter_pattern.name": "클래스 혹은 인터페이스의 첫 글자 규칙",
  "rule.saqt.c.java.831.description": "반복문 내에서의 잠금 혹은 잠금 해제 체커는 반복문 안에 잠금 및 잠금 해제 역할을 하는 메소드가 호출되는 경우를 검출합니다.\n옵션을 통해 잠금 관련 메소드 이름을 지정할 수 있습니다.\n반복문 안에서 잠금 상태를 변경하지 않습니다.",
  "rule.saqt.c.java.831.example.0.dangerous": "라인 4: lock() 메소드가 반복문 안에서 호출되었습니다.\n라인 5: unlock() 메소드가 반복문 안에서 호출되었습니다.",
  "rule.saqt.c.java.831.example.0.safe": "라인 3: lock() 메소드 호출을 반복문 밖으로 꺼냅니다.\n라인 7: unlock() 메소드 호출을 반복문 밖으로 꺼냅니다.",
  "rule.saqt.c.java.831.name": "반복문 내에서의 잠금 혹은 잠금 해제",
  "rule.saqt.c.java.831.option.lock_or_unlock_functions.description": "Lock 혹은 Unlock r역할을 하는 메소드 이름을 입력합니다. <br /> 예시) Lock",
  "rule.saqt.c.java.831.option.lock_or_unlock_functions.name": "Lock 혹은 Unlock 메소드 이름",
  "rule.saqt.c.java.832.description": "반복문 내에서의 스트림 읽기 체커는 반복문 안에 스트림에 대한 read() 메소드가 호출되는 경우를 검출합니다.\n반복문 안에서 스트림을 읽지 않습니다.",
  "rule.saqt.c.java.832.example.0.dangerous": "라인 6: 반복문 안에서 스트림을 읽고 있습니다.",
  "rule.saqt.c.java.832.example.0.safe": "라인 5: 반복문 안에서 스트림을 읽지 않도록 수정합니다.",
  "rule.saqt.c.java.832.name": "반복문 내에서의 스트림 읽기",
  "rule.saqt.c.java.832.option.stream_list.description": "스트림 이름을 입력합니다. <br /> 예시) FileInputStream",
  "rule.saqt.c.java.832.option.stream_list.name": "스트림 이름",
  "rule.saqt.c.java.833.description": "누락된 빈 줄 체커는 빈 줄을 집어넣도록 약속되어 있는 곳에 적절한 빈 줄이 들어가있지 않은 곳을 검출합니다.\n코드 단위 별 공백이 존재하지 않을 경우를 검출합니다. 코드 단위 별 공백의 정의는 다음과 같습니다. 1. 클래스, 인터페이스 : 2줄 공백 2. 패키지, import 선언 이 후 : 1줄 공백 3. 메소드와 메소드 사이 : 1줄 공백 4. 메소드 내부의 변수 선언 후 : 1줄 공백\n정해진 규칙에 맞게 빈 줄을 삽입합니다.",
  "rule.saqt.c.java.833.example.0.dangerous": "라인 2: import 구문과 클래스 선언 사이에 두 줄의 공백이 있습니다.\n라인 8: func() 메소드와 setName() 메소드 사이에 빈 줄이 없습니다.",
  "rule.saqt.c.java.833.example.0.safe": "라인 2: import 구문과 클래스 선언 사이에는 빈 줄 하나가 필요합니다.\n라인 8: 두 메소드 선언 사이에는 빈 줄 하나가 필요합니다.",
  "rule.saqt.c.java.833.name": "누락된 빈 줄",
  "rule.saqt.c.java.834.description": "누락된 public 클래스 혹은 인터페이스 체커는 소스 파일내에 올바른 이름의 public 클래스 혹은 인터페이스가 존재하지 않는 경우를 검출합니다.\npublic이 아닌 클래스 혹은 인터페이스는 반드시 public 클래스 혹은 인터페이스 내부에 선언되어야 합니다. 또한 가장 바깥에 위치한 public 클래스의 이름은 파일 이름과 일치해야 합니다.",
  "rule.saqt.c.java.834.example.0.dangerous": "라인 1: 파일 내에 private 인터페이스만 존재할 경우 인터페이스의 기능을 사용하지 못하게 됩니다.",
  "rule.saqt.c.java.834.example.0.safe": "라인 1: 파일 이름과 같은 이름을 갖는 public 인터페이스를 선언했습니다.",
  "rule.saqt.c.java.834.name": "누락된 public 클래스 혹은 인터페이스",
  "rule.saqt.c.java.836.description": "처리되지 않은 추가 예외 체커는 데이타베이스에 접근할 때 SQLException이 아닌 예외를 처리하지 않는 경우를 검출합니다.\n물론 SQLException은 당연히 처리해야 하지만 그 외의 다른 예외가 발생할 수도 있습니다.\nSQLException에 대한 catch 구문 아래에 다른 예외에 대한 catch 구문을 더해줍니다.",
  "rule.saqt.c.java.836.example.0.dangerous": "라인 6: SQLException을 처리하고 있습니다. 하지만 다른 예외들은 방치됩니다.",
  "rule.saqt.c.java.836.example.0.safe": "라인 14: SQLException 외의 다른 예외도 처리할 수 있도록 확장합니다.",
  "rule.saqt.c.java.836.name": "처리되지 않은 추가 예외",
  "rule.saqt.c.java.839.description": "메소드 호출 시 공백 규칙 위반 체커는 메소드 호출식에서 규칙에 맞게 공백이 사용되지 않은 경우를 검출합니다.\n옵션을 통해 세부적인 규칙을 조정할 수 있습니다.\n규칙에 맞게 메소드 호출식을 작성합니다.",
  "rule.saqt.c.java.839.example.0.dangerous": "라인 1: 메소드 이름과 괄호 사이에 공백이 있습니다.\n라인 2: 인자가 없는 호출에서 괄호 안에 공백이 있습니다.\n라인 3: 인자 구분을 위해 사용하는 콤마 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.839.example.0.safe": "라인 1: 메소드 이름과 괄호 사이에 공백을 제거하도록 합니다.\n라인 2: 인자가 없는 호출에서 괄호 안쪽의 공백을 삭제하도록 합니다.\n라인 3: 인자 구분을 위해 사용하는 콤마 뒤에 공백을 추가합니다.",
  "rule.saqt.c.java.839.name": "메소드 호출 시 공백 규칙 위반",
  "rule.saqt.c.java.839.option.check_empty_argument_whitespace.description": "선택할 경우 함수 호출 인자가 없고 공백이 존재하는 경우를 검출합니다.",
  "rule.saqt.c.java.839.option.check_empty_argument_whitespace.name": "인자가 없는 경우 공백 허용 안 함",
  "rule.saqt.c.java.839.option.check_existence_only_for_inner_argument.description": "선택할 경우 공백 개수가 아닌 공백 유무만 검사합니다.",
  "rule.saqt.c.java.839.option.check_existence_only_for_inner_argument.name": "인자 사이 공백 존재 유무만 검사",
  "rule.saqt.c.java.839.option.check_existence_only_for_outer_argument.description": "옵션을 사용하는 경우, 공백 개수가 아닌 공백 유무만 검사합니다.",
  "rule.saqt.c.java.839.option.check_existence_only_for_outer_argument.name": "가장 바깥쪽 괄호 공백 존재 유무만 검사",
  "rule.saqt.c.java.839.option.check_inner_argument_whitespace.description": "옵션을 사용하는 경우, 인자 사이 공백 여부를 검사합니다.",
  "rule.saqt.c.java.839.option.check_inner_argument_whitespace.name": "인자 사이 공백 검사",
  "rule.saqt.c.java.839.option.check_outer_argument_whitespace.description": "옵션을 사용하는 경우, 함수를 호출할 때 가장 바깥쪽 괄호 안쪽에 공백이 존재하는지 검사합니다.",
  "rule.saqt.c.java.839.option.check_outer_argument_whitespace.name": "가장 바깥쪽 괄호 공백 검사",
  "rule.saqt.c.java.839.option.check_preceding_whitespace_before_comma.description": "옵션을 사용하는 경우 인자 구분에 사용되는 콤마 앞에 공백이 존재하는지 검사합니다.",
  "rule.saqt.c.java.839.option.check_preceding_whitespace_before_comma.name": "콤마 앞 공백 검사",
  "rule.saqt.c.java.839.option.check_whitespace_after_method.description": "옵션을 선택하는 경우, 함수 호출 시 메소드 이름 뒤에 공백이 존재하는지 검사합니다.",
  "rule.saqt.c.java.839.option.check_whitespace_after_method.name": "메소드 이름 뒤 공백 검사",
  "rule.saqt.c.java.839.option.required_inner_argument_whitespaces.description": "함수 호출 시 인자 사이에 필요한 공백 개수를 입력합니다.<br/>예시) 1",
  "rule.saqt.c.java.839.option.required_inner_argument_whitespaces.name": "인자 사이 필요한 공백 개수",
  "rule.saqt.c.java.839.option.required_outer_argument_whitespaces.description": "함수 호출 시 가장 바깥쪽 괄호 안쪽에 필요한 공백 개수를 입력합니다.<br/>예시) 1",
  "rule.saqt.c.java.839.option.required_outer_argument_whitespaces.name": "가장 바깥쪽 괄호 안쪽에 필요한 공백 개수",
  "rule.saqt.c.java.840.description": "누락된 지역 변수의 초기화 체커는 초기화가 없는 변수 선언을 검출합니다.\nJava 표준에 의하면 초기화되지 않은 지역 변수를 사용하면 컴파일 시점에서 오류가 발생하므로 Java에서는 초기화되지 않은 변수와 관련된 중대한 문제가 잘 발생하지 않고 컴파일 단계에서 걸러지는 경우가 많습니다. 따라서 모든 지역 변수를 선언 즉시 초기화할지 여부는 각 프로젝트별 선택의 영역입니다.\n모든 지역 변수를 선언과 동시에 초기화합니다.",
  "rule.saqt.c.java.840.example.0.dangerous": "라인 2: 지역 변수가 초기값 없이 선언되었습니다.\n라인 3: 지역 변수가 초기값 없이 선언되었습니다.\n라인 4: 지역 변수가 초기값 없이 선언되었습니다.",
  "rule.saqt.c.java.840.example.0.safe": "라인 2: 지역 변수를 선언과 동시에 초기화합니다.\n라인 3: 지역 변수를 선언과 동시에 초기화합니다.\n라인 4: 지역 변수를 선언과 동시에 초기화합니다.",
  "rule.saqt.c.java.840.name": "누락된 지역 변수의 초기화",
  "rule.saqt.c.java.840.option.excluded_variable.description": "검출에서 제외할 지역 변수 이름을 작성합니다.<br/>예시) excluded",
  "rule.saqt.c.java.840.option.excluded_variable.name": "제외할 지역 변수 이름",
  "rule.saqt.c.java.840.option.target_variable.description": "선언 직후 초기화가 수행되지 않는 경우를 검출할 대상 지역 변수 이름을 작성합니다.<br/>예시) local",
  "rule.saqt.c.java.840.option.target_variable.name": "대상 지역 변수 이름",
  "rule.saqt.c.java.841.description": "필드의 즉시 초기화 체커는 선언과 동시에 초기화되는 필드 변수를 검출합니다.\n필드 변수는 선언 부분이 아니라 생성자에서 초기화하도록 합니다.",
  "rule.saqt.c.java.841.example.0.dangerous": "라인 2: 필드 변수에 초기값이 부여되었습니다.\n라인 3: 필드 변수에 초기값이 부여되었습니다.\n라인 4: 필드 변수에 초기값이 부여되었습니다.",
  "rule.saqt.c.java.841.example.0.safe": "라인 2: 필드 변수는 초기값 없이 선언합니다.\n라인 3: 필드 변수는 초기값 없이 선언합니다.\n라인 4: 필드 변수는 초기값 없이 선언합니다.",
  "rule.saqt.c.java.841.name": "필드의 즉시 초기화",
  "rule.saqt.c.java.841.option.exclude_final.description": "옵션을 사용하는 경우, final로 선언된 필드는 분석에서 제외합니다.",
  "rule.saqt.c.java.841.option.exclude_final.name": "final 필드 제외",
  "rule.saqt.c.java.841.option.exclude_static.description": "옵션을 사용하는 경우, static으로 선언된 필드는 분석에서 제외합니다.",
  "rule.saqt.c.java.841.option.exclude_static.name": "static 필드 제외",
  "rule.saqt.c.java.841.option.excluded_variable.description": "검출에서 제외할 필드 이름을 작성합니다.<br/>예시) excluded",
  "rule.saqt.c.java.841.option.excluded_variable.name": "제외할 필드 이름",
  "rule.saqt.c.java.841.option.target_variable.description": "선언 직후 초기화가 수행되는 경우를 검출할 대상 필드 이름을 작성합니다.<br/>예시) field",
  "rule.saqt.c.java.841.option.target_variable.name": "대상 필드 이름",
  "rule.saqt.c.java.842.description": "괄호 내 공백 규칙 위반 체커는 괄호를 사용할 때 지켜야할 공백 사용 규칙을 위반한 경우를 검출합니다.\n다음 3개의 공백 관련 규칙을 검사합니다.1) 괄호의 안쪽에는 공백이 존재해야 합니다. 2) 괄호 안의 또 다른 괄호에 대해서는 공백이 존재하지 않아야 합니다.3) 괄호 안의 내용이 여러 줄에 걸친 경우, 괄호의 시작과 끝의 컬럼이 일치해야 합니다. 옵션을 통해 각 세부 규칙의 활성화 여부를 결정할 수 있습니다.\n규칙에 맞게 괄호 근처에서 공백을 적절히 사용합니다.",
  "rule.saqt.c.java.842.example.0.dangerous": "라인 1: 여는 괄호 안쪽에 공백이 없습니다.\n라인 2: 이중 괄호 중 안쪽 괄호 안에 공백이 있습니다.\n라인 5: 괄호 안의 내용이 여러 줄에 걸쳐 있으나 닫는 괄호가 여는 괄호와 다른 컬럼에 있습니다.",
  "rule.saqt.c.java.842.example.0.safe": "라인 1: 괄호 안쪽에 공백을 추가합니다.\n라인 2: 안쪽 괄호에서는 괄호 안에 공백을 두지 않습니다.\n라인 6: 여는 괄호와 닫는 괄호가 다른 라인에 있을 때 둘의 컬럼을 일치시킵니다.",
  "rule.saqt.c.java.842.name": "괄호 내 공백 규칙 위반",
  "rule.saqt.c.java.842.option.check_inner_blank.description": "옵션을 사용하는 경우, 괄호 내 다른 괄호 안쪽에 공백이 존재하는 경우 이를 검출합니다.",
  "rule.saqt.c.java.842.option.check_inner_blank.name": "괄호 내 괄호 안쪽에 공백 미 허용",
  "rule.saqt.c.java.842.option.check_multiline_alignment.description": "옵션을 사용하는 경우, 괄호 안의 내용이 여러 줄에 걸쳐 있을 때 여는 괄호와 닫는 괄호가 같은 컬럼에 위치하며 닫는 괄호가 해당 줄의 처음에 위치하는지 확인합니다.",
  "rule.saqt.c.java.842.option.check_multiline_alignment.name": "괄호 정렬 검사",
  "rule.saqt.c.java.842.option.check_outer_blank.description": "옵션을 사용하는 경우, 가장 바깥쪽 괄호 안쪽에 공백이 존재하는지 여부를 검사합니다.",
  "rule.saqt.c.java.842.option.check_outer_blank.name": "가장 바깥쪽 괄호 공백 검사",
  "rule.saqt.c.java.843.description": "키워드 주위 공백 규칙 위반 체커는 if, for, while 등의 예약어와 이어지는 괄호 사이에 공백이 없는 경우를 검출합니다.\n지정된 예약어 다음에는 반드시 공백을 넣습니다.",
  "rule.saqt.c.java.843.example.0.dangerous": "라인 2: assert 뒤에 공백이 없습니다.",
  "rule.saqt.c.java.843.example.0.safe": "라인 2: assert와 괄호 사이에 공백을 추가합니다.",
  "rule.saqt.c.java.843.name": "키워드 주위 공백 규칙 위반",
  "rule.saqt.c.java.852.description": "클래스 구성 규칙 위반 체커는 클래스의 멤버 선언이 적절한 순서로 이루어지지 않은 경우를 검출합니다.\n순서를 고려하는 클래스 구성 요소는 필드(field), 내부 클래스(innerclass), 메소드(method), 생성자(constructor), 정적 초기자(initializer)입니다. 이들의 바른 선언 순서를 옵션으로 설정할 수 있습니다.\n클래스 멤버 선언을 지정된 순서에 맞춰 나열합니다.",
  "rule.saqt.c.java.852.example.0.dangerous": "라인 3: 기본 설정에 따르면 일반 메소드보다 생성자가 먼저 선언되어야 합니다.",
  "rule.saqt.c.java.852.example.0.safe": "라인 3: 생성자 선언이 일반 메소드 선언보다 먼저 오도록 조정합니다.",
  "rule.saqt.c.java.852.name": "클래스 구성 규칙 위반",
  "rule.saqt.c.java.852.option.class_element_priority.description": "클래스 요소 별 선언 우선 순위를 작성합니다. 작성 가능한 클래스 요소는 'field', 'innerclass', 'constructor', 'method', 'initializer' 이며 세미콜론(;)으로 구분하여 우선순위가 높은 순으로 작성합니다. 작성되지 않은 필드 타입은 자동적으로 가장 낮은 우선 순위로 정해집니다.<br/>예시) field;innerclass;constructor;method;initializer",
  "rule.saqt.c.java.852.option.class_element_priority.name": "클래스 요소 우선 순위",
  "rule.saqt.c.java.853.description": "소스 코드 시작점에 존재하는 들여쓰기 체커는 소스 코드의 첫 시작이 첫 번째 컬럼이 아닌 경우를 검출합니다.\n소스 코드의 첫 시작점에 공백이 오지 않도록 합니다. 대부분의 경우 Java 소스 코드의 맨 앞에는 package 키워드가 위치하여 패키지 선언이 이루어져야 합니다.",
  "rule.saqt.c.java.853.example.0.dangerous": "라인 1: 소스 코드 첫 줄에 들여쓰기가 존재합니다.",
  "rule.saqt.c.java.853.example.0.safe": "라인 1: 소스 코드의 첫 줄을 들여쓰지 않고 시작하도록 합니다.",
  "rule.saqt.c.java.853.name": "소스 코드 시작점에 존재하는 들여쓰기",
  "rule.saqt.c.java.854.description": "너무 긴 한 줄 체커는 코드 한 줄의 길이가 사전에 옵션을 통해 정의된 길이를 초과하는 경우를 검출합니다.\n코드 한 줄이 정해진 길이를 초과하면 줄 바꿈을 실행합니다.",
  "rule.saqt.c.java.854.example.0.dangerous": "라인 2: 한 줄이 너무 길게 작성되었습니다.",
  "rule.saqt.c.java.854.example.0.safe": "라인 2: 한 줄이 너무 길다면 줄 바꿈을 하거나 이름을 짧게 줄이는 등의 방법으로 제한 길이보다 짧게 수정합니다.",
  "rule.saqt.c.java.854.name": "너무 긴 한 줄",
  "rule.saqt.c.java.854.option.ignore_comment.description": "옵션을 사용하는 경우, 주석 길이를 라인 길이에 포함하지 않습니다.",
  "rule.saqt.c.java.854.option.ignore_comment.name": "주석 무시 여부",
  "rule.saqt.c.java.854.option.max_column.description": "허용할 한 라인의 최대 길이를 입력합니다.<br/>예시) 100",
  "rule.saqt.c.java.854.option.max_column.name": "허용할 최대 길이",
  "rule.saqt.c.java.855.description": "잘못된 길이의 들여쓰기 체커는 들여쓰기를 할 때 스페이스가 아닌 탭을 사용한 라인을 검출합니다.\n공백 대신 탭 문자를 사용하고 싶다면 옵션으로 조정할 수 있습니다.\n들여쓰기는 반드시 스페이스를 사용하도록 합니다.",
  "rule.saqt.c.java.855.example.0.dangerous": "라인 2: 탭 문자로 들여쓰기 되었습니다.",
  "rule.saqt.c.java.855.example.0.safe": "라인 2: 공백을 사용하도록 수정합니다.",
  "rule.saqt.c.java.855.name": "잘못된 길이의 들여쓰기",
  "rule.saqt.c.java.855.option.allowed_tab.description": "탭 사용 여부를 설정합니다.",
  "rule.saqt.c.java.855.option.allowed_tab.name": "탭 사용 허용",
  "rule.saqt.c.java.855.option.tab_number.description": "코드 시작에 사용할 탭 개수를 설정합니다.",
  "rule.saqt.c.java.855.option.tab_number.name": "탭 개수",
  "rule.saqt.c.java.856.description": "for 구문 들여쓰기 규칙 위반 체커는 for 구문의 반복 조건 부분을 여러 줄에 나눠쓸 때 지켜야 할 들여쓰기 규칙을 지키지 않는 경우를 검출합니다.\n어떤 이유로 for 구문의 반복 조건을 여러 줄에 나눠서 작성한다면 초기화, 조건식, 변화식 세 가지를 모두 같은 컬럼에서 시작하도록 들여쓰기를 일치시켜야 합니다. 또한 여는 괄호와 닫는 괄호도 같은 컬럼에서 시작하도록 일치시켜야 합니다.",
  "rule.saqt.c.java.856.example.0.dangerous": "라인 2: for 구문의 들여쓰기 규칙을 위반한 코드입니다.",
  "rule.saqt.c.java.856.example.0.safe": "라인 3: 줄 바꿈 한 요소들 간에 들여쓰기를 일치시켜 줍니다.\n라인 6: 두 괄호의 위치를 일치시켜 줍니다.",
  "rule.saqt.c.java.856.name": "for 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.java.857.description": "메소드 선언 규칙 위반 체커는 메소드를 선언할 때 들여쓰기와 공백을 적절히 사용하지 않은 경우를 검출합니다.\n메소드 이름과 매개 변수 목록 괄호 사이에는 공백이 없도록 합니다. 여러 줄에 매개 변수를 분리하여 작성할 경우 서로 다른 줄에 위치한 매개 변수의 들여쓰기를 일치시킵니다. 각 매개 변수를 구분하는 콤마(,) 앞에는 공백을 두지 않습니다. 한 줄 안에 매개 변수가 두 개 이상 위치할 때 매개 변수를 구분하는 콤마 뒤에는 공백을 하나 이상 추가합니다.",
  "rule.saqt.c.java.857.example.0.dangerous": "라인 1: 메소드 이름과 매개 변수 괄호 사이에 공백이 있습니다.\n라인 2: 빈 매개 변수 괄호 안에 불필요한 공백이 있습니다.\n라인 3: 여러 줄에 걸쳐 작성된 매개 변수간에 들여쓰기가 잘못되었습니다.\n라인 6: 닫는 괄호의 들여쓰기가 잘못되었습니다.",
  "rule.saqt.c.java.857.example.0.safe": "라인 1: 메소드 이름과 괄호 사이에는 공백을 두지 않습니다.\n라인 4: 줄 바꿈한 매개 변수 선언의 들여쓰기를 일치시킵니다.\n라인 6: 닫는 괄호의 위치를 여는 괄호에 일치시킵니다.",
  "rule.saqt.c.java.857.name": "메소드 선언 규칙 위반",
  "rule.saqt.c.java.858.description": "접근 연산자 주위 공백 규칙 위반 체커는 특정 객체의 내부에 접근할 때 사용하는 연산자들과 피연산자 사이에 공백이 있는 경우를 검출합니다.\n배열 참조([ ])와 객체 멤버 참조(.) 연산자가 검사 대상입니다.\n접근 연산자와 피연산자 사이에 공백을 넣지 않도록 합니다.",
  "rule.saqt.c.java.858.example.0.dangerous": "라인 1: 멤버 참조 연산자와 객체 변수 사이에 공백이 있습니다.\n라인 2: 배열 참조 연산자와 객체 변수 사이에 공백이 있습니다.",
  "rule.saqt.c.java.858.example.0.safe": "라인 1: 공백을 제거합니다.\n라인 2: 공백을 제거합니다.",
  "rule.saqt.c.java.858.name": "접근 연산자 주위 공백 규칙 위반",
  "rule.saqt.c.java.858.option.check_array_subscriptor.description": "옵션을 사용하는 경우, 배열 참조 연산자 주위의 공백을 검출합니다.",
  "rule.saqt.c.java.858.option.check_array_subscriptor.name": "배열 참조 연산자 검사",
  "rule.saqt.c.java.858.option.check_dot_operator.description": "옵션을 사용하는 경우 Dot 연산자 주위의 공백을 검출합니다.",
  "rule.saqt.c.java.858.option.check_dot_operator.name": "Dot 연산자 검사",
  "rule.saqt.c.java.859.description": "줄 바꿈 규칙 위반 체커는 수식이나 인자 목록을 여러 줄에 걸쳐 작성할 때 잘못된 위치에서 줄 바꿈 한 경우를 검출합니다.\n옵션에 따라 줄 바꿈 후 지켜야 하는 들여쓰기에 관한 규칙도 지정할 수 있습니다.\n여러 줄에 걸쳐 작성할 경우 연산자 앞 또는 콤마(,) 뒤에서 줄을 나누어 작성해야 합니다.",
  "rule.saqt.c.java.859.example.0.dangerous": "라인 2: 콤마 뒤에 줄 바꿈을 해야 하지만 콤마 앞에서 줄 바꿈을 했습니다.\n라인 4: 연산자 앞에서 줄 바꿈을 해야 하지만 연산자 뒤에서 줄 바꿈을 했습니다.",
  "rule.saqt.c.java.859.example.0.safe": "라인 2: 줄 바꿈을 해야 한다면 콤마 뒤에서 합니다.\n라인 4: 줄 바꿈을 해야 한다면 연산자 앞에서 합니다.",
  "rule.saqt.c.java.859.name": "줄 바꿈 규칙 위반",
  "rule.saqt.c.java.859.option.check_alignment.description": "옵션을 사용하는 경우, 줄 바꿈이 대상 줄이 같은 컬럼에 위치하는지 검사합니다",
  "rule.saqt.c.java.859.option.check_alignment.name": "줄바꿈 정렬 검사",
  "rule.saqt.c.java.859.option.check_if_condition_alignment.description": "옵션을 사용하는 경우, if 문 조건식의 줄바꿈 정렬을 if 문의 시작과 비교합니다.",
  "rule.saqt.c.java.859.option.check_if_condition_alignment.name": "if문 조건식의 줄바꿈 특별 검사",
  "rule.saqt.c.java.859.option.tab_space.description": "탭에 해당하는 공백의 개수를 설정합니다.",
  "rule.saqt.c.java.859.option.tab_space.name": "탭 크기",
  "rule.saqt.c.java.859.option.wrap_after_comma.description": "옵션을 사용하는 경우, 콤마 뒤에 줄 바꿈을 허용합니다.",
  "rule.saqt.c.java.859.option.wrap_after_comma.name": "콤마 뒤 줄 바꿈 허용",
  "rule.saqt.c.java.859.option.wrap_after_operator.description": "옵션을 사용하는 경우, 연산자 뒤에서 줄 바꿈을 허용합니다.",
  "rule.saqt.c.java.859.option.wrap_after_operator.name": "연산자 뒤 줄바꿈 허용",
  "rule.saqt.c.java.859.option.wrap_at_the_top_level.description": "옵션을 사용하는 경우, 최상위 연산자에서만 줄바꿈을 허용합니다.",
  "rule.saqt.c.java.859.option.wrap_at_the_top_level.name": "최상위 연산자에서만 줄 바꿈 허용",
  "rule.saqt.c.java.859.option.wrap_before_comma.description": "옵션을 사용하는 경우, 콤마 앞 줄 바꿈을 허용합니다.",
  "rule.saqt.c.java.859.option.wrap_before_comma.name": "콤마 앞 줄 바꿈 허용",
  "rule.saqt.c.java.859.option.wrap_before_operator.description": "옵션을 사용하는 경우, 연산자 앞 줄 바꿈을 허용합니다.",
  "rule.saqt.c.java.859.option.wrap_before_operator.name": "연산자 앞 줄바꿈 허용",
  "rule.saqt.c.java.860.description": "import 구문 사이 누락된 빈 줄 체커는 서로 다른 성격의 import 구문 사이에 빈 줄이 없는 경우를 검출합니다.\n서로 비슷한 연속적인 import 그룹 안에서는 줄을 붙여서 쓰고, 서로 구분되는 그룹간에는 빈 줄을 넣어줍니다.",
  "rule.saqt.c.java.860.example.0.dangerous": "라인 2: 옵션으로 지정된 depth 이내의 패키지 수준에서 서로 다른 그룹인 import 구문이 빈 줄 없이 나란히 존재합니다.\n라인 3: 옵션으로 지정된 depth 이내의 패키지 수준에서 서로 다른 그룹인 import 구문이 빈 줄 없이 나란히 존재합니다.",
  "rule.saqt.c.java.860.example.0.safe": "라인 2: 빈 줄을 삽입합니다.\n라인 4: 빈 줄을 삽입합니다.",
  "rule.saqt.c.java.860.name": "import 구문 사이 누락된 빈 줄",
  "rule.saqt.c.java.860.option.depth.description": "Import 문에서 비교 할 깊이를 설정합니다. (예: java.io는 깊이 2입니다.)",
  "rule.saqt.c.java.860.option.depth.name": "Import 문 검색 깊이",
  "rule.saqt.c.java.860.option.order_list.description": "허용할 Import 문의 순서의 목록을 등록합니다.",
  "rule.saqt.c.java.860.option.order_list.name": "Import 문 순서 목록",
  "rule.saqt.c.java.861.description": "메소드 구역 사이 누락된 빈 줄 체커는 메소드 안에서 섹션 별로 적절한 빈 줄이 삽입되지 않은 경우를 검출합니다.\n가독성을 높이기 위해서 섹션 사이에 빈 줄을 삽입합니다.",
  "rule.saqt.c.java.861.example.0.dangerous": "라인 5: for 구문 블록과 if 구문 블록은 서로 다른 섹션으로 취급되므로 빈 줄이 필요합니다.",
  "rule.saqt.c.java.861.example.0.safe": "라인 5: 빈 줄을 삽입합니다.",
  "rule.saqt.c.java.861.name": "메소드 구역 사이 누락된 빈 줄",
  "rule.saqt.c.java.861.option.blank_line_number.description": "각 section 간의 간격의 간격을 공백 줄 개수로 설정합니다.",
  "rule.saqt.c.java.861.option.blank_line_number.name": "Section 간의 간격",
  "rule.saqt.c.java.862.description": "온디맨드 방식으로 import 체커는 `*` 형태로 import 하는 경우를 검출합니다.\n온디맨드 방식으로 import 하지 말고 개별 클래스나 정적 멤버를 모두 나열하는 방식으로 import 합니다.",
  "rule.saqt.c.java.862.example.0.dangerous": "라인 1: 온디맨드 import 구문이 존재합니다.",
  "rule.saqt.c.java.862.example.0.safe": "라인 1: 필요한 특정 클래스를 명시적으로 import 합니다.",
  "rule.saqt.c.java.862.name": "온디맨드 방식으로 import",
  "rule.saqt.c.java.863.description": "클래스 들여쓰기 규칙 위반 체커는 클래스 선언에서 들여쓰기 규칙을 지키지 않은 경우를 검출합니다.\n옵션을 통해 세부적인 규칙을 설정할 수 있습니다.\n규칙에 맞게 들여쓰기를 적용합니다.",
  "rule.saqt.c.java.863.example.0.dangerous": "라인 2: implements 부분의 들여쓰기가 잘못되었습니다.",
  "rule.saqt.c.java.863.example.0.safe": "라인 2: 규칙에 맞게 들여쓰기를 적용합니다.",
  "rule.saqt.c.java.863.name": "클래스 들여쓰기 규칙 위반",
  "rule.saqt.c.java.863.option.max_implements_num.description": "한 줄에 선언 할 수 있는 implements class의 개수를 설정합니다.",
  "rule.saqt.c.java.863.option.max_implements_num.name": "Implements class 개수",
  "rule.saqt.c.java.863.option.start_class_column.description": "Class선언이 들여쓰기 할 column의 위치를 설정합니다.",
  "rule.saqt.c.java.863.option.start_class_column.name": "Class 선언 들여쓰기 위치",
  "rule.saqt.c.java.863.option.start_others_column.description": "Implements 문 혹은 extends 문이 다음 줄에 있을 경우 class 선언 시작과의 간격을 설정합니다.",
  "rule.saqt.c.java.863.option.start_others_column.name": "Implements or extends 들여쓰기 위치",
  "rule.saqt.c.java.864.description": "메소드 들여쓰기 규칙 위반 체커는 메소드 선언에서 들여쓰기 규칙을 지키지 않은 경우를 검출합니다.\n옵션을 통해 클래스와 메소드 간 들여쓰기 간격을 설정할 수 있습니다. 또한 메소드 선언 사이에 공백이 있어야 합니다.\n규칙에 맞게 들여쓰기를 적용합니다. 또한 메소드 선언 사이에 공백이 있어야 합니다.",
  "rule.saqt.c.java.864.example.0.dangerous": "라인 2: 메소드 선언의 들여쓰기가 잘못되었습니다.\n라인 4: 메소드 간에 공백이 존재해야 합니다.",
  "rule.saqt.c.java.864.example.0.safe": "라인 2: 규칙에 맞게 들여쓰기를 적용합니다.\n라인 4: 규칙에 맞게 공백을 삽입합니다.",
  "rule.saqt.c.java.864.name": "메소드 들여쓰기 규칙 위반",
  "rule.saqt.c.java.864.option.start_method_column.description": "Class 선언과 method 선언 간의 간격을 설정합니다.",
  "rule.saqt.c.java.864.option.start_method_column.name": "Method 선언 들여쓰기 위치",
  "rule.saqt.c.java.865.description": "필드 선언 규칙 위반 체커는 클래스의 필드 변수들을 정해진 순서에 맞게 선언하지 않은 경우를 검출합니다.\n순서를 고려하는 필드 변수의 종류는 상수(constant), 정적(static), 원시 타입(primitive), 참조 타입(reference), public, protected, private, package 변수입니다. 이들의 바른 선언 순서를 옵션으로 설정할 수 있습니다.\n규칙에 맞는 순서로 필드 변수들을 선언합니다.",
  "rule.saqt.c.java.865.example.0.dangerous": "라인 3: 기본 설정에 따르면 상수는 일반 정적 필드 선언보다 먼저 등장해야 합니다.",
  "rule.saqt.c.java.865.example.0.safe": "라인 3: 상수 선언을 일반 정적 필드 선언 앞으로 당깁니다.",
  "rule.saqt.c.java.865.name": "필드 선언 규칙 위반",
  "rule.saqt.c.java.865.option.field_priority.description": "필드 변수의 타입 별 선언 우선 순위를 작성합니다. 작성 가능한 필드 타입은 'constant', 'static', 'primitive', 'reference' 이며 세미콜론(;)으로 구분하여 우선순위가 높은 순으로 작성합니다. 작성되지 않은 필드 타입은 자동적으로 가장 낮은 우선 순위로 정해집니다.<br/>예시) constant;static;primitive;reference",
  "rule.saqt.c.java.865.option.field_priority.name": "필드 변수 우선 순위",
  "rule.saqt.c.java.866.description": "필드 들여쓰기 규칙 위반 체커는 필드 변수 선언에서 들여쓰기 규칙을 지키지 않은 경우를 검출합니다.\n필드 변수 선언의 들여쓰기가 클래스가 선언된 위치에서부터 일정한 위치에 되어야 합니다.\n규칙에 맞게 들여쓰기를 적용합니다.",
  "rule.saqt.c.java.866.example.0.dangerous": "라인 2: 필드 선언의 들여쓰기가 잘못되었습니다.",
  "rule.saqt.c.java.866.example.0.safe": "라인 2: 규칙에 맞게 들여쓰기를 적용합니다.",
  "rule.saqt.c.java.866.name": "필드 들여쓰기 규칙 위반",
  "rule.saqt.c.java.866.option.start_field_column.description": "Class 선언과 field 선언 간의 간격을 설정합니다.",
  "rule.saqt.c.java.866.option.start_field_column.name": "Field 선언 들여쓰기 위치",
  "rule.saqt.c.java.866.option.tab_space.description": "탭에 해당하는 공백의 개수를 설정합니다.",
  "rule.saqt.c.java.866.option.tab_space.name": "탭 크기",
  "rule.saqt.c.java.867.description": "세미콜론 주위 공백 규칙 위반 체커는 세미콜론(;) 앞에 공백이 있는 경우를 검출합니다.\n세미콜론 앞에는 공백을 두지 않습니다.",
  "rule.saqt.c.java.867.example.0.dangerous": "라인 2: 세미콜론 앞에 공백이 있습니다.",
  "rule.saqt.c.java.867.example.0.safe": "라인 2: 세미콜론 앞에 있는 공백을 삭제합니다.",
  "rule.saqt.c.java.867.name": "세미콜론 주위 공백 규칙 위반",
  "rule.saqt.c.java.868.description": "변수 선언 규칙 위반 체커는 변수 여러 개를 연속적으로 선언할 때 적당한 순서와 묶음으로 선언하지 않는 경우를 검출합니다.\n변수 선언 구문을 여러 개 연속으로 사용할 때 서로 유사한 변수들과 타입이 동일한 변수들을 연속으로 묶어서 선언합니다.",
  "rule.saqt.c.java.868.example.0.dangerous": "라인 4: int 변수 선언 사이에 String 변수 선언이 끼어있습니다.",
  "rule.saqt.c.java.868.example.0.safe": "라인 5: 변수 선언 순서를 타입별로 묶어 재조정합니다.",
  "rule.saqt.c.java.868.name": "변수 선언 규칙 위반",
  "rule.saqt.c.java.869.description": "반복문 내 변수 선언 규칙 위반 체커는 for 구문의 루프 카운터 변수가 적절하게 선언되지 않은 경우를 검출합니다.\n루프 카운터 변수가 for 구문의 초기화 식 안에서 선언되지 않거나 옵션에서 금지하고 있는 이름으로 선언되면 규칙 위반입니다. 별도로 옵션을 설정하지 않으면 i, j, k를 금지된 이름으로 간주합니다.\n규칙에 맞게 for 구문을 작성합니다.",
  "rule.saqt.c.java.869.example.0.dangerous": "라인 2: for 구문의 루프 카운터 변수가 for 구문 외부에서 선언되었습니다.\n라인 4: 금지된 이름 변수 이름 i를 사용했습니다.",
  "rule.saqt.c.java.869.example.0.safe": "라인 2: 카운터 변수 이름을 적절하게 지어서 for 구문 안에서 선언합니다.",
  "rule.saqt.c.java.869.name": "반복문 내 변수 선언 규칙 위반",
  "rule.saqt.c.java.869.option.prohibit_name_list.description": "For 문에 사용되는 loop 변수 이름 중 금지할 변수 이름을 설정합니다.",
  "rule.saqt.c.java.869.option.prohibit_name_list.name": "For문 금지 loop 변수",
  "rule.saqt.c.java.870.description": "정수 타입 사용 체커는 정수형 중 허용되지 않은 타입이 사용된 경우를 검출합니다.\nchar, byte, short, int, long이 정수형으로 간주되며 이 중 기본 설정으로는 int와 long만이 허용됩니다.\n허용된 타입만 사용합니다.",
  "rule.saqt.c.java.870.example.0.dangerous": "라인 2: 기본 옵션에 허용되지 않은 char 타입을 사용했습니다.\n라인 3: 기본 옵션에 허용되지 않은 byte 타입을 사용했습니다.",
  "rule.saqt.c.java.870.example.0.safe": "라인 2: 허용된 int 타입을 사용합니다.\n라인 3: 허용된 long 타입을 사용합니다.",
  "rule.saqt.c.java.870.name": "정수 타입 사용",
  "rule.saqt.c.java.870.option.allowed_type.description": "허용할 integer type을 등록합니다. 등록하지 않은 integer type은 검출됩니다.",
  "rule.saqt.c.java.870.option.allowed_type.name": "허용할 integer type 목록",
  "rule.saqt.c.java.871.description": "실수 타입 사용 체커는 실수 타입 중 허용되지 않은 타입이 사용된 경우를 검출합니다.\nfloat, double, BigDecimal이 실수 타입으로 간주되며 이 중 기본 설정으로는 BigDecimal만이 허용됩니다.\n허용된 타입만 사용합니다.",
  "rule.saqt.c.java.871.example.0.dangerous": "라인 2: 기본 옵션에 허용되지 않은 float 타입을 사용했습니다.\n라인 3: 기본 옵션에 허용되지 않은 BigDecimal 타입을 사용했습니다.",
  "rule.saqt.c.java.871.example.0.safe": "라인 2: 허용된 BigDecimal 타입을 사용합니다.",
  "rule.saqt.c.java.871.name": "실수 타입 사용",
  "rule.saqt.c.java.871.option.allowed_type.description": "허용할 float type을 등록합니다. 등록하지 않은 float type은 검출됩니다.",
  "rule.saqt.c.java.871.option.allowed_type.name": "허용할 float type 목록",
  "rule.saqt.c.java.872.description": "while 구문 공백 규칙 위반 체커는 while 조건식과 여는 중괄호 사이에 공백이 없는 코드를 검출합니다.\nwhile 조건식과 중괄호 사이에 공백이 있어야 합니다.\n규칙에 맞게 공백을 삽입합니다.",
  "rule.saqt.c.java.872.example.0.dangerous": "라인 1: while 조건식과 여는 중괄호 사이에 공백이 빠졌습니다.",
  "rule.saqt.c.java.872.example.0.safe": "라인 1: while 조건식과 여는 중괄호 사이에 공백을 삽입합니다.",
  "rule.saqt.c.java.872.name": "while 구문 공백 규칙 위반",
  "rule.saqt.c.java.873.description": "do 구문 들여쓰기 규칙 위반 체커는 do-while 구문에서 중괄호와 키워드 사이에 공백이 없는 코드를 검출합니다.\ndo-while 구문에서 중괄호와 키워드 사이에 공백이 있어야 합니다.\n규칙에 맞게 do 구문을 작성합니다.",
  "rule.saqt.c.java.873.example.0.dangerous": "라인 1: 여는 중괄호와 do 키워드 사이에 공백이 없습니다.\n라인 3: 닫는 중괄호와 while 키워드 사이에 공백이 없습니다.",
  "rule.saqt.c.java.873.example.0.safe": "라인 1: do 키워드와 중괄호 사이에 공백이 있습니다.\n라인 3: while 키워드와 중괄호 사이에 공백이 있습니다.",
  "rule.saqt.c.java.873.name": "do 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.java.874.description": "if 구문 공백 규칙 위반 체커는 if 구문에서 적절하게 공백이 사용되지 않은 경우를 검출합니다.\nif 예약어와 여는 괄호, 조건 괄호와 조건식 사이에서 규칙에 맞게 공백을 사용해야 합니다.\n규칙에 맞게 공백을 삽입합니다.",
  "rule.saqt.c.java.874.example.0.dangerous": "라인 1: if 예약어와 여는 괄호 사이에 공백이 빠졌습니다.\n라인 2: 괄호와 조건식 사이에 공백이 빠졌습니다.",
  "rule.saqt.c.java.874.example.0.safe": "라인 1: if 예약어와 여는 괄호 사이, 괄호와 조건식 사이에 공백을 삽입합니다.",
  "rule.saqt.c.java.874.name": "if 구문 공백 규칙 위반",
  "rule.saqt.c.java.874.option.check_space_number.description": "공백 존재 여부 혹은 공백 개수를 검사할지 설정합니다.",
  "rule.saqt.c.java.874.option.check_space_number.name": "공백 수 확인 여부",
  "rule.saqt.c.java.874.option.white_space_number.description": "If 문 내 expression과 괄호 사이 간격을 설정합니다.",
  "rule.saqt.c.java.874.option.white_space_number.name": "If 문 내 expression과 괄호 사이 간격을 설정합니다.",
  "rule.saqt.c.java.875.description": "switch 구문 들여쓰기 규칙 위반 체커는 switch 구문의 검사식과 첫 번째 case 블록이 올바른 위치에 있지 않은 경우를 검출합니다.\nswitch 키워드와 검사식이 같은 줄에 위치해야 하고, switch 키워드와 첫 번째 case 블록의 줄 사이에 옵션으로 지정된 만큼의 차이가 있어야 합니다.\n규칙에 맞게 switch 구문을 작성합니다.",
  "rule.saqt.c.java.875.example.0.dangerous": "라인 1: switch 조건식과 중괄호 사이에 공백이 없습니다.\n라인 2: case 키워드의 들여쓰기가 switch 키워드 들여쓰기와 같지 않습니다.\n라인 5: 첫 번째 case 블록이 switch 키워드와 같은 줄에 존재합니다.",
  "rule.saqt.c.java.875.example.0.safe": "라인 1: switch 조건식과 중괄호 사이에 공백을 삽입합니다.\n라인 2: case 키워드의 들여쓰기가 switch 키워드 들여쓰기와 같습니다.\n라인 5: 기본 설정에 따르면 첫 번째 case 블록은 switch 키워드의 바로 다음 줄에 있어야 합니다.",
  "rule.saqt.c.java.875.name": "switch 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.java.876.description": "switch 구문 공백 규칙 위반 체커는 switch 구문에서 적절하게 공백이 사용되지 않은 경우를 검출합니다.\nswitch 예약어와 여는 괄호, 조건 괄호와 검사식 사이에서 규칙에 맞게 공백을 사용해야 합니다.\n규칙에 맞게 공백을 삽입합니다.",
  "rule.saqt.c.java.876.example.0.dangerous": "라인 1: switch 예약어와 여는 괄호 사이에 공백이 빠졌습니다.\n라인 2: 괄호와 조건식 사이에 공백이 빠졌습니다.",
  "rule.saqt.c.java.876.example.0.safe": "라인 1: switch 예약어와 여는 괄호 사이, 괄호와 조건식 사이에 공백을 삽입합니다.",
  "rule.saqt.c.java.876.name": "switch 구문 공백 규칙 위반",
  "rule.saqt.c.java.876.option.check_space_number.description": "공백이 존재 하는지 또는 공백 수를 검사 할 것인지 설정합니다.",
  "rule.saqt.c.java.876.option.check_space_number.name": "공백 수 확인 여부",
  "rule.saqt.c.java.876.option.white_space_number.description": "Switch 문 내 expression과 괄호 사이 간격을 설정합니다.",
  "rule.saqt.c.java.876.option.white_space_number.name": "Switch 문 내에 expression과 괄호 사이 간격",
  "rule.saqt.c.java.877.description": "case 및 default 구문 들여쓰기 규칙 위반 체커는 switch 구문에서 case 및 default 블록의 들여쓰기와 간격 규정을 위반한 경우를 검출합니다.\n옵션을 통해 들여쓰기 및 간격을 설정할 수 있습니다.\n규칙에 맞게 들여쓰기와 빈 줄을 삽입합니다.",
  "rule.saqt.c.java.877.example.0.dangerous": "라인 5: case 예약어의 들여쓰기가 잘못되었습니다.\n라인 7: case 블록 안의 구문의 들여쓰기가 잘못되었습니다.\n라인 8: case 블록 안의 구문의 들여쓰기가 잘못되었습니다.\n라인 9: default 예약어의 들여쓰기가 잘못되었습니다.",
  "rule.saqt.c.java.877.example.0.safe": "라인 5: case 예약어에 적절한 들여쓰기를 적용합니다.\n라인 7: case 블록 안에 적절한 들여쓰기를 적용합니다.\n라인 8: case 블록 안에 적절한 들여쓰기를 적용합니다.\n라인 9: default 예약어에 적절한 들여쓰기를 적용합니다.",
  "rule.saqt.c.java.877.name": "case 및 default 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.java.877.option.blank_line_number.description": "Case 문과 Case 문과의 공백 줄 개수를 설정합니다.",
  "rule.saqt.c.java.877.option.blank_line_number.name": "Case 문 간격",
  "rule.saqt.c.java.877.option.indentation_space_number.description": "Switch 문 내 Case 문의 들여쓰기 위치를 설정합니다.",
  "rule.saqt.c.java.877.option.indentation_space_number.name": "들여쓰기 위치",
  "rule.saqt.c.java.878.description": "한 줄에 작성된 여러 개의 case 구문 체커는 한 줄에 하나 이상의 케이스 문과 default문을 사용하는 경우를 검출합니다.\nswitch 구문을 사용할 때 각 case 구문과 default 구문이 서로 다른 각자의 줄에 위치하도록 작성합니다.",
  "rule.saqt.c.java.878.example.0.dangerous": "라인 2: 두 개의 case 구문이 한 줄에 작성되었습니다.",
  "rule.saqt.c.java.878.example.0.safe": "라인 3: 서로 다른 case 구문은 다른 줄에 배치합니다.",
  "rule.saqt.c.java.878.name": "한 줄에 작성된 여러 개의 case 구문",
  "rule.saqt.c.java.879.description": "try 구문 들여쓰기 규칙 위반 체커는 try 구문에서 중괄호와 들여쓰기에 관련된 규칙 위반을 검출합니다.\n규칙 1. try 키워드와 여는 중괄호는 같은 줄에 작성해야 합니다. 규칙 2. catch 구문은 try 혹은 catch 블록이 끝나는 줄의 바로 다음에 작성하며 try 구문과 같은 들여쓰기를 사용합니다. 규칙 3. finally 구문은 try 혹은 catch 블록이 끝나는 줄의 바로 다음에 작성하며 try 구문과 같은 들여쓰기를 사용합니다.\n규칙에 맞게 코드를 수정합니다.",
  "rule.saqt.c.java.879.example.0.dangerous": "라인 1: try 블록을 여는 중괄호의 위치가 잘못되었습니다.\n라인 4: catch 구문이 닫는 중괄호와 같은 줄에 있습니다.\n라인 6: finally 구문이 닫는 중괄호와 같은 줄에 있습니다.",
  "rule.saqt.c.java.879.example.0.safe": "라인 1: try 블록을 여는 중괄호는 try 키워드와 같은 줄에 위치시킵니다.\n라인 4: catch 구문은 앞 블록의 바로 다음 줄에 작성합니다.\n라인 7: finally 구문은 앞 블록의 바로 다음 줄에 작성합니다.",
  "rule.saqt.c.java.879.name": "try 구문 들여쓰기 규칙 위반",
  "rule.saqt.c.java.880.description": "catch 구문 공백 규칙 위반 체커는 catch 구문과 괄호에 적절한 공백이 사용되지 않은 경우를 검출합니다.\ncatch 예약어와 여는 괄호 사이, 괄호와 처리할 예외 정보 사이에 적절한 공백이 필요합니다.\n규칙에 맞게 공백을 삽입합니다.",
  "rule.saqt.c.java.880.example.0.dangerous": "라인 3: catch 예약어와 여는 괄호 사이에 공백이 없습니다.\n라인 6: 괄호와 예외 타입, 예외 변수 사이에 공백이 없습니다.",
  "rule.saqt.c.java.880.example.0.safe": "라인 3: catch와 여는 괄호 사이에 공백을 두고 괄호 안쪽에도 양 끝에 공백을 둡니다.",
  "rule.saqt.c.java.880.name": "catch 구문 공백 규칙 위반",
  "rule.saqt.c.java.880.option.check_space_number.description": "공백이 존재 하는지 또는 공백 수를 검사 할 것인지 설정합니다.",
  "rule.saqt.c.java.880.option.check_space_number.name": "공백 수 확인 여부",
  "rule.saqt.c.java.880.option.white_space_number.description": "Catch 문 내 expression과 괄호 사이 간격을 설정합니다.",
  "rule.saqt.c.java.880.option.white_space_number.name": "Catch 문 내 expression과 괄호 사이 간격",
  "rule.saqt.c.java.881.description": "쉼표 주위 공백 규칙 위반 체커는 콤마(,) 앞에 공백이 있는 경우 또는 콤마(,) 뒤에 공백이 없는 경우를 검출합니다.\n규칙에 맞게 공백을 삽입합니다.",
  "rule.saqt.c.java.881.example.0.dangerous": "라인 1: 콤마 뒤에 공백이 없습니다.\n라인 2: 콤마 앞에 공백이 있습니다.",
  "rule.saqt.c.java.881.example.0.safe": "라인 1: 콤마의 앞에는 공백이 없고 뒤에는 공백이 있도록 수정합니다.",
  "rule.saqt.c.java.881.name": "쉼표 주위 공백 규칙 위반",
  "rule.saqt.c.java.881.option.blank_after_comma.description": "옵션을 사용하는 경우, 콤마 뒤에 존재하는 공백을 허용합니다.",
  "rule.saqt.c.java.881.option.blank_after_comma.name": "콤마 뒤 공백 허용",
  "rule.saqt.c.java.881.option.blank_before_comma.description": "옵션을 사용하는 경우, 콤마 앞에 존재하는 공백을 허용합니다.",
  "rule.saqt.c.java.881.option.blank_before_comma.name": "콤마 앞 공백 허용",
  "rule.saqt.c.java.882.description": "내부 클래스의 상수 체커는 내부 클래스에 정적 final로 선언된 상수 변수를 외부 클래스에서 직접 참조하는 경우를 검출합니다.\n외부 클래스에서 사용될 수 있는 상수 변수는 내부 클래스에 선언하지 말고 외부 클래스로 옮깁니다.",
  "rule.saqt.c.java.882.example.0.dangerous": "라인 3: 내부 클래스에 public static final 변수가 상수로 선언되었습니다.\n라인 8: 외부 클래스의 메소드에서 내부 클래스 상수에 접근합니다.",
  "rule.saqt.c.java.882.example.0.safe": "라인 5: 외부 클래스에서 사용되는 상수 선언을 외부 클래스로 옮깁니다.",
  "rule.saqt.c.java.882.name": "내부 클래스의 상수",
  "rule.saqt.c.java.883.description": "너무 많은 논리 연산 체커는 하나의 논리 연산식에서 && 또는 || 연산자를 두 번 이상 연달아 사용한 경우를 검출합니다.\n괄호를 사용해 각 논리 연산자 사이의 연산 순서를 명확히 지정하거나 별도의 식으로 분리합니다.",
  "rule.saqt.c.java.883.example.0.dangerous": "라인 1: && 연산자와 || 연산자가 한 식에서 연달아 사용되었습니다.",
  "rule.saqt.c.java.883.example.0.safe": "라인 1: 괄호를 사용해 연산의 순서를 명확히 지정합니다.\n라인 2: 한 번에 하나의 연산만 사용합니다.",
  "rule.saqt.c.java.883.name": "너무 많은 논리 연산",
  "rule.saqt.c.java.883.option.check_multi_line.description": "여러 라인 검사 여부를 설정합니다.",
  "rule.saqt.c.java.883.option.check_multi_line.name": "여러 라인 검사 여부",
  "rule.saqt.c.java.883.option.ignore_parenthesis.description": "괄호 무시 여부를 설정합니다.",
  "rule.saqt.c.java.883.option.ignore_parenthesis.name": "괄호 무시 여부",
  "rule.saqt.c.java.883.option.operator_numbers.description": "허용할 연산자 개수를 설정합니다.",
  "rule.saqt.c.java.883.option.operator_numbers.name": "연산자 개수",
  "rule.saqt.c.java.884.description": "+ 및 += 연산자로 더해진 문자열 체커는 문자열에 대해 + 연산을 수행하는 경우를 검출합니다.\n이항 연산자 +에 대해서는 피연산자 둘 중 하나라도 문자열이면 문자열 덧셈으로 인식합니다. 복합 대입 연산자 +=에 대해서는 좌변의 대입 대상이 문자열인 경우를 문자열 덧셈으로 인식합니다.\n문자열 덧셈 대신 StringBuilder 혹은 StringBuffer 클래스를 사용합니다. 특히 문자열들이 3개 이상 더해질 때, 이 방식으로 성능도 향상시킬 수 있습니다.",
  "rule.saqt.c.java.884.example.0.dangerous": "라인 5: 문자열을 덧셈으로 연결합니다.",
  "rule.saqt.c.java.884.example.0.safe": "라인 3: 덧셈 대신 StringBuilder 혹은 StringBuffer의 append() 메소드를 사용합니다.",
  "rule.saqt.c.java.884.name": "+ 및 += 연산자로 더해진 문자열",
  "rule.saqt.c.java.885.description": "반복문 내에서의 인스턴스 생성 체커는 반복문 안에서 생성자를 사용하여 인스턴스를 생성하는 경우를 검출합니다.\n반복문 안에서 인스턴스를 꼭 생성해야만 하는지, 반복문 시작 전에 한 번만 생성한 후 재사용할 방법이 없는지 생각해봅니다.",
  "rule.saqt.c.java.885.example.0.dangerous": "라인 4: 반복문 안에서 StringBuilder 객체를 반복적으로 생성합니다.",
  "rule.saqt.c.java.885.example.0.safe": "라인 3: StringBuilder 객체를 반복문 시작 전에 미리 생성합니다.\n라인 7: 하나의 객체를 재사용해도 이전과 같은 결과를 얻으면서 메모리는 더 적게 사용할 수 있습니다.",
  "rule.saqt.c.java.885.name": "반복문 내에서의 인스턴스 생성",
  "rule.saqt.c.java.885.option.check_only_declaration_in_loop.description": "반복문 내에서 선언한 인스턴스만 검출하고 싶을 경우 체크합니다.",
  "rule.saqt.c.java.885.option.check_only_declaration_in_loop.name": "반복문 내 선언 검사",
  "rule.saqt.c.java.885.option.excluded_class_type.description": "분석 제외 클래스 타입을 기술합니다.",
  "rule.saqt.c.java.885.option.excluded_class_type.name": "분석 제외 클래스 타입",
  "rule.saqt.c.java.886.description": "패키지 명명 규칙 위반 체커는 올바르지 않은 패키지 이름을 검출합니다.\n패키지 이름의 최상위 레벨은 최상위 도메인 이름(com, edu, gov, mil, net, org 등) 또는 2자리로 구성된 국가 코드(kr, cn, jp 등)여야 합니다. 또한 최상위 레벨의 이름은 소문자로 구성되어야 합니다. 옵션을 통해서 1~4 레벨을 검사하도록 지정할 수 있습니다.\n규칙에 맞는 패키지 이름을 사용합니다.",
  "rule.saqt.c.java.886.example.0.dangerous": "라인 1: 기본 설정에 따르면 패키지 이름에는 대문자를 사용할 수 없습니다.",
  "rule.saqt.c.java.886.example.0.safe": "라인 1: 규칙에 맞게 패키지 이름을 수정합니다.",
  "rule.saqt.c.java.886.name": "패키지 명명 규칙 위반",
  "rule.saqt.c.java.886.option.1st_level.description": "패키지의 첫 번째 레벨에 사용할 이름 목록을 작성합니다.",
  "rule.saqt.c.java.886.option.1st_level.name": "패키지의 첫 번째 레벨 단어",
  "rule.saqt.c.java.886.option.2nd_level.description": "패키지의 두 번째 레벨에 사용할 이름 목록을 작성합니다.",
  "rule.saqt.c.java.886.option.2nd_level.name": "패키지의 두 번째 레벨 단어",
  "rule.saqt.c.java.886.option.3rd_level.description": "패키지의 세 번째 레벨에 사용할 이름 목록을 작성합니다.",
  "rule.saqt.c.java.886.option.3rd_level.name": "패키지의 세 번째 레벨 단어",
  "rule.saqt.c.java.886.option.4th_level.description": "패키지의 네 번째 레벨에 사용할 이름 목록을 작성합니다.",
  "rule.saqt.c.java.886.option.4th_level.name": "패키지의 네 번째 레벨 단어",
  "rule.saqt.c.java.886.option.check_1st_level.description": "옵션을 사용하는 경우, 패키지의 첫 번째 레벨 이름을 검사합니다.",
  "rule.saqt.c.java.886.option.check_1st_level.name": "패키지 첫 번째 레벨 이름 검사",
  "rule.saqt.c.java.886.option.check_2nd_level.description": "옵션을 사용하는 경우, 패키지의 두 번째 레벨 이름을 검사합니다.",
  "rule.saqt.c.java.886.option.check_2nd_level.name": "패키지 두 번째 레벨 이름 검사",
  "rule.saqt.c.java.886.option.check_3rd_level.description": "옵션을 사용하는 경우, 패키지의 세 번째 레벨 이름을 검사합니다.",
  "rule.saqt.c.java.886.option.check_3rd_level.name": "패키지 세 번째 레벨 이름 검사",
  "rule.saqt.c.java.886.option.check_4th_level.description": "옵션을 사용하는 경우, 패키지의 네 번째 레벨 이름을 검사합니다.",
  "rule.saqt.c.java.886.option.check_4th_level.name": "패키지 네 번째 레벨 이름 검사",
  "rule.saqt.c.java.887.description": "패키지 들여쓰기 규칙 위반 체커는 파일 주석과 package 선언 구문 사이의 줄간격이 설정과 다르게 쓰인 경우를 검출합니다.\n규칙에 맞는 간격을 사용합니다.",
  "rule.saqt.c.java.887.example.0.dangerous": "라인 2: 기본 설정에 따르면 파일 주석과 첫 패키지 선언 사이에 빈 줄 하나가 필요합니다.",
  "rule.saqt.c.java.887.example.0.safe": "라인 2: 설정에 맞게 빈 줄을 삽입합니다.",
  "rule.saqt.c.java.887.name": "패키지 들여쓰기 규칙 위반",
  "rule.saqt.c.java.887.option.blank_line.description": "패키지 구문과 파일 주석 사이 간격을 설정합니다.",
  "rule.saqt.c.java.887.option.blank_line.name": "패키지 구문과 주석 사이 간격",
  "rule.saqt.c.java.888.description": "빈 분기문 체커는 if 구문의 거짓 분기 혹은 switch 구문의 case 및 default 블록에 실행할 코드가 없는 경우를 검출합니다.\n규칙에 맞게 각 분기에 실행할 코드를 삽입합니다.",
  "rule.saqt.c.java.888.example.0.dangerous": "라인 3: else 블록에 실행할 코드가 없습니다.",
  "rule.saqt.c.java.888.example.0.safe": "라인 4: else 블록에 실행할 코드를 추가합니다.",
  "rule.saqt.c.java.888.name": "빈 분기문",
  "rule.saqt.c.java.888.option.check_empty_case.description": "옵션을 사용하는 경우, 빈 case branch를 검출합니다.",
  "rule.saqt.c.java.888.option.check_empty_case.name": "빈 case branch 검출",
  "rule.saqt.c.java.888.option.check_empty_default_case.description": "옵션을 사용하는 경우, 빈 default case branch를 검출합니다.",
  "rule.saqt.c.java.888.option.check_empty_default_case.name": "빈 default case branch 검출",
  "rule.saqt.c.java.888.option.check_empty_else_branch.description": "옵션을 사용하는 경우, 빈 else branch를 이슈로 검출합니다.",
  "rule.saqt.c.java.888.option.check_empty_else_branch.name": "빈 else branch 검출",
  "rule.saqt.c.java.889.description": "equals 메소드를 통한 문자열 비교 체커는 따옴표로 싸인 문자열 상수를 문자열 비교에 직접 사용하는 경우를 검출합니다.\nequals() 메소드 혹은 equalsIgnoreCase() 메소드를 사용한 비교가 검출 대상입니다.\n다른 문자열 변수와 비교할 일이 있는 문자열 상수는 직접 비교에 사용하지 말고 final 변수로 선언해두고 이 변수로 비교해야 합니다.",
  "rule.saqt.c.java.889.example.0.dangerous": "라인 2: 문자열 상수 \"abcde\"가 비교에 직접 사용되었습니다.",
  "rule.saqt.c.java.889.example.0.safe": "라인 2: 비교에 사용할 문자열을 static final 변수에 저장해두고 사용합니다.",
  "rule.saqt.c.java.889.name": "equals 메소드를 통한 문자열 비교",
  "rule.saqt.c.java.890.description": "인스턴스에 접근 체커는 클래스가 아닌 객체를 통해서 클래스의 정적 멤버에 접근하는 경우를 검출합니다.\n정적 멤버에 접근할 때는 클래스를 명시하여 접근합니다.",
  "rule.saqt.c.java.890.example.0.dangerous": "라인 9: Storage 클래스의 정적 멤버인 staticField에 객체 st를 통해 접근하고 있습니다.",
  "rule.saqt.c.java.890.example.0.safe": "라인 9: 정적 멤버에 접근할 때에는 클래스 이름을 명시하여 접근합니다.",
  "rule.saqt.c.java.890.name": "인스턴스에 접근",
  "rule.saqt.c.java.890.option.check_static_only.description": "옵션을 사용하는 경우, static 변수 및 메소드만 검출합니다.",
  "rule.saqt.c.java.890.option.check_static_only.name": "static만 검출",
  "rule.saqt.c.java.891.description": "쓸모없는 이름 체커는 상위 범위에서 선언된 이름을 하위 범위에서 중복 선언하여 덮어쓰는 경우를 검출합니다.\n이 때 상위 범위의 이름은 가려져 직접 접근할 수 없게 됩니다.\n상위 범위 선언에 무리없이 접근할 수 있도록 이미 존재하는 이름을 그대로 사용하지 말고 다른 이름을 사용하도록 합니다.",
  "rule.saqt.c.java.891.example.0.dangerous": "라인 2: 클래스에 var 필드 변수가 선언되어 있습니다.\n라인 5: 메소드에 var 지역 변수가 선언되어 상위 클래스의 var 필드 변수 선언을 가립니다. 이때 var 필드 변수에 접근하려면 this.var 와 같이 접근해야 합니다.",
  "rule.saqt.c.java.891.example.0.safe": "라인 5: 상위 범위의 선언을 가리지 않도록 지역 변수 이름을 변경합니다.",
  "rule.saqt.c.java.891.name": "쓸모없는 이름",
  "rule.saqt.c.java.892.description": "주석 들여쓰기 규칙 위반 체커는 주석의 시작열과 설명 대상 줄의 시작열이 다를 경우를 검출합니다.\n세부 조건은 옵션으로 입력할 수 있습니다.\n항상 주석의 시작열과 설명 대상 줄의 시작열을 동일하게 작성해야 합니다.",
  "rule.saqt.c.java.892.example.0.dangerous": "라인 1: 주석의 시작열이 1열에서 시작했습니다.\n라인 2: 설명 대상 시작열이 3열에서 시작 했습니다. 시작열과 위치가 다릅니다.",
  "rule.saqt.c.java.892.example.0.safe": "라인 2: 설명 대상 시작열을 주석의 시작열과 동일하게 맞춥니다.",
  "rule.saqt.c.java.892.name": "주석 들여쓰기 규칙 위반",
  "rule.saqt.c.java.892.option.check_general_comment.description": "체크 할 경우 일반 주석들의 들여쓰기를 검사합니다.",
  "rule.saqt.c.java.892.option.check_general_comment.name": "일반 주석 들여쓰기 검사 여부",
  "rule.saqt.c.java.892.option.check_header.description": "옵션을 사용하는 경우 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.c.java.892.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.c.java.892.option.check_voting_column.description": "다수의 들여쓰기를 선택하여 숫자가 적은 들여쓰기 그룹을 검출하게 됩니다.",
  "rule.saqt.c.java.892.option.check_voting_column.name": "다수 들여쓰기 선택",
  "rule.saqt.c.java.892.option.tab_size.description": "탭에 해당하는 공백의 개수를 설정합니다.",
  "rule.saqt.c.java.892.option.tab_size.name": "탭 크기",
  "rule.saqt.c.js.1696.description": "불필요한 블록 체커는 블필요한 블록이 사용된 경우에 검출됩니다.\n불필요한 블록을 제거합니다",
  "rule.saqt.c.js.1696.example.0.dangerous": "라인 3: 불필요한 블록을 사용했습니다.",
  "rule.saqt.c.js.1696.example.0.safe": "라인 2: 불필요한 블록이 제거되었습니다.",
  "rule.saqt.c.js.1696.name": "불필요한 블록",
  "rule.saqt.c.js.1697.description": "불필요한 괄호 체커는 불필요한 괄호를 사용한 경우에 검출됩니다.\n불필요한 괄호를 제거합니다",
  "rule.saqt.c.js.1697.example.0.dangerous": "라인 1: 불필요한 괄호를 사용했습니다.",
  "rule.saqt.c.js.1697.example.0.safe": "라인 1: 불필요한 괄호가 제거되었습니다.",
  "rule.saqt.c.js.1697.name": "불필요한 괄호",
  "rule.saqt.c.js.1699.description": "누락된 중괄호 체커는 if, for 등의 복합 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\n복합 구문 사용 시 구문 한 개로 이루어진 한 줄 짜리 코드라도 일관성을 위해 항상 중괄호로 감싸줍니다.",
  "rule.saqt.c.js.1699.example.0.dangerous": "라인 1: if 구문이 중괄호 없을 사용했습니다.",
  "rule.saqt.c.js.1699.example.0.safe": "라인 1: 한 줄 짜리 코드라도 중괄호를 사용해 작성합니다.",
  "rule.saqt.c.js.1699.name": "누락된 중괄호",
  "rule.saqt.c.js.1699.option.else.description": "else문에서의 검출 여부에 대해 입력하세요 (true/false)",
  "rule.saqt.c.js.1699.option.else.name": "else문 검출 여부",
  "rule.saqt.c.js.1699.option.for.description": "for문에서의 검출 여부에 대해 입력하세요 (true/false)",
  "rule.saqt.c.js.1699.option.for.name": "for문 검출 여부",
  "rule.saqt.c.js.1699.option.if.description": "if문에서의 검출 여부에 대해 입력하세요 (true/false)",
  "rule.saqt.c.js.1699.option.if.name": "if문 검출 여부",
  "rule.saqt.c.js.1699.option.while.description": "while문에서의 검출 여부에 대해 입력하세요 (true/false)",
  "rule.saqt.c.js.1699.option.while.name": "while문 검출 여부",
  "rule.saqt.c.js.1700.description": "변수 명명 규칙 위반 체커는 정해진 규칙에 맞지 않는 변수 이름을 검출합니다.\n옵션을 통해 변수 이름을 작성할 때 지켜야 할 규칙을 정규식으로 지정할 수 있습니다.\n규칙에 맞는 이름을 사용합니다.",
  "rule.saqt.c.js.1700.example.0.dangerous": "라인 1: 기본 설정에 따르면 변수 이름은 밑줄로 시작할 수 없습니다.",
  "rule.saqt.c.js.1700.example.0.safe": "라인 1: 정규식 패턴에 맞는 변수 이름을 사용합니다.",
  "rule.saqt.c.js.1700.name": "변수 명명 규칙 위반",
  "rule.saqt.c.js.1700.option.pattern.description": "변수 정규식 패턴을 입력하세요. <br/> ex) [a-z][a-zA-Z]*",
  "rule.saqt.c.js.1700.option.pattern.name": "변수정규식 패턴",
  "rule.saqt.c.sql.1833.description": "SELECT 구문에서 누락된 컬럼 주석 체커는 조회 컬럼 뒤 주석이 누락된 SELECT 구문을 검출합니다.\nSELECT 구문 안 조회 컬럼 뒤에 컬럼을 설명하는 주석을 추가합니다.",
  "rule.saqt.c.sql.1833.example.0.dangerous": "라인 3: 컬럼에 대한 주석이 존재하지 않습니다.",
  "rule.saqt.c.sql.1833.example.0.safe": "라인 3: 컬럼에 대한 설명을 주석으로 추가합니다.",
  "rule.saqt.c.sql.1833.name": "SELECT 구문에서 누락된 컬럼 주석",
  "rule.saqt.c.sql.1833.option.check_outer_sql_only.description": "가장 바깥쪽 sql 만을 검사하도록 설정합니다.",
  "rule.saqt.c.sql.1833.option.check_outer_sql_only.name": "검사 영역 제한",
  "rule.saqt.c.sql.1833.option.exceptional_column.description": "해당 컬럼명의 경우 주석이 생략되어 있어도 결함을 검출하지 않습니다.",
  "rule.saqt.c.sql.1833.option.exceptional_column.name": "예외 컬럼명",
  "rule.saqt.c.sql.1833.option.excluded_target_file_name.description": "검사 대상에서 제외할 파일 이름을 적습니다.",
  "rule.saqt.c.sql.1833.option.excluded_target_file_name.name": "검사 대상 제외 파일명",
  "rule.saqt.c.sql.955.description": "테이블 명명 규칙 위반 체커는 옵션으로 주어지는 정규식에 일치하지 않는 테이블 이름을 검출합니다.\n테이블 이름을 옵션으로 주어지는 정규식에 일치하도록 변경합니다.",
  "rule.saqt.c.sql.955.example.0.dangerous": "라인 1: 위의 예시에서는 테이블 이름이 옵션으로 주어진 정규식(대문자, '_'만 사용)과 맞지 않습니다.",
  "rule.saqt.c.sql.955.example.0.safe": "라인 1: 옵션으로 설정한 정규식(대문자, '_'만 사용)에 맞게 테이블 이름을 구성합니다. 위의 예시에서는 테이블 이름을 대문자와 '_'으로만 사용하여 만듭니다.",
  "rule.saqt.c.sql.955.name": "테이블 명명 규칙 위반",
  "rule.saqt.c.sql.955.option.naming_convention.description": "명명 규칙을 정규식으로 작성합니다.",
  "rule.saqt.c.sql.955.option.naming_convention.name": "테이블 명명 규칙",
  "rule.saqt.c.sql.963.description": "금지된 테이블 사용 체커는 옵션으로 금지한 테이블 사용을 검출합니다.\n금지된 테이블은 사용하지 않습니다.",
  "rule.saqt.c.sql.963.example.0.dangerous": "라인 4: 옵션으로 FORBIDDEN으로 시작하는 테이블 사용을 금지했습니다. 사용이 금지된 테이블은 사용하지 말아야 합니다.",
  "rule.saqt.c.sql.963.example.0.safe": "라인 4: 금지되지 않은 테이블을 사용하도록 변경했습니다.",
  "rule.saqt.c.sql.963.name": "금지된 테이블 사용",
  "rule.saqt.c.sql.963.option.forbidden_table.description": "검출할 테이블 이름을 설정합니다.",
  "rule.saqt.c.sql.963.option.forbidden_table.name": "검출 테이블",
  "rule.saqt.c.sql.978.description": "금지된 테이블 컬럼 사용 체커는 옵션으로 금지한 테이블 컬럼 사용을 검출합니다.\n금지된 테이블 컬럼은 사용하지 않습니다.",
  "rule.saqt.c.sql.978.example.0.dangerous": "라인 2: 금지된 테이블 컬럼인 FORBIDDEN_COLUMN을 인덱스 힌트로 사용하고 있습니다.",
  "rule.saqt.c.sql.978.example.0.safe": "라인 2: 사용이 허가된 컬럼 ALLOWED_COLUMN을 인덱스 힌트로 사용합니다.",
  "rule.saqt.c.sql.978.name": "금지된 테이블 컬럼 사용",
  "rule.saqt.c.sql.978.option.forbidden_column.description": "검출할 컬럼 이름을 설정합니다.",
  "rule.saqt.c.sql.978.option.forbidden_column.name": "검출 컬럼",
  "rule.saqt.c.sql.978.option.forbidden_table.description": "검출할 테이블 이름을 설정합니다.",
  "rule.saqt.c.sql.978.option.forbidden_table.name": "검출 테이블",
  "rule.saqt.m.ccpp.7180.description": "함수의 순환 복잡도가 지나치게 높은 경우 분기나 반복 구조가 지나치게 복잡해져 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n불필요하거나 중복되는 분기문, 반복문을 정리하고, 로직을 기능별로 분리하여 순환 복잡도를 낮춥니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7180.example.0.dangerous": "라인 1: 이 함수의 순환 복잡도가 지나치게 큽니다.\n라인 6: 지나치게 많은 if 문으로 인해 순환 복잡도가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7180.example.0.safe": "라인 1: 이 함수의 순환복잡도를 제한값 이하로 낮추도록 합니다.\n라인 6: 순환 복잡도 값이 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7180.name": "너무 높은 순환 복잡도",
  "rule.saqt.m.ccpp.7180.option.mcc.name": "switch-case 구문을 1로 계산",
  "rule.saqt.m.ccpp.7180.option.threshold.description": "순환 복잡도의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7180.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7184.description": "최대 블록 중첩 깊이가 지나치게 클 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n불필요하게 깊게 중첩되는 블록 깊이를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7184.example.0.dangerous": "라인 1: 이 함수의 최대 블록 중첩 깊이가 지나치게 깊습니다.\n라인 7: 지나치게 많은 블록 중첩으로 인해 최대 블록 중첩 깊이가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7184.example.0.safe": "라인 1: 이 함수의 최대 블록 중첩 깊이를 제한값 이하로 낮추도록 합니다.\n라인 7: 최대 블록 중첩 깊이가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7184.name": "너무 깊은 최대 블록 중첩 깊이",
  "rule.saqt.m.ccpp.7184.option.threshold.description": "최대 블록 중첩 깊이의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7184.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7187.description": "파라미터 수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n파라미터 수가 너무 많지 않도록 줄이기 바랍니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7187.example.0.dangerous": "라인 1: 이 함수의 파라미터 수가 지나치게 많습니다.",
  "rule.saqt.m.ccpp.7187.example.0.safe": "라인 1: 이 함수의 파라미터 수를 제한값 이하로 낮추도록 합니다.",
  "rule.saqt.m.ccpp.7187.name": "너무 많은 파라미터",
  "rule.saqt.m.ccpp.7187.option.threshold.description": "파라미터의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7187.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7188.description": "이 검출 규칙은 어떤 함수를 호출하는 고유 호출자의 수를 측정하여 과도한 의존 관계가 있는지 평가합니다. 한 함수 내에서 여러 번 호출되더라도 한 번으로 계산합니다. 호출자가 지나치게 많아지면 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n로직의 계층 구조를 잘 설계하여 다른 함수에서 지나치게 많이 호출되는 상황을 줄입니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7188.example.0.dangerous": "라인 1: 이 함수를 호출하는 다른 함수의 개수가 지나치게 많습니다.\n라인 20: calleeFunction() 함수를 호출한 다른 함수의 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7188.example.0.safe": "라인 1: 이 함수를 호출하는 다른 함수의 개수를 제한값 이하로 낮추도록 합니다.\n라인 20: calleeFunction() 함수를 호출한 다른 함수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7188.name": "너무 많은 함수 호출자",
  "rule.saqt.m.ccpp.7188.option.ignore_implicit.description": "옵션을 사용하는 경우, 대상 함수가 다른 함수에서 암시적으로 호출된 횟수를 제외합니다.",
  "rule.saqt.m.ccpp.7188.option.ignore_implicit.name": "암시적으로 호출한 함수를 계산에서 제외",
  "rule.saqt.m.ccpp.7188.option.threshold.description": "함수 호출자의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7188.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7189.description": "이 검출 규칙은 어떤 함수에서 호출하는 다른 함수의 개수를 측정하여 과도한 의존 관계가 있는지 평가합니다. 한 함수를 여러 번 호출하더라도 한 번으로 계산합니다. 함수에서 호출하는 다른 함수가 지나치게 많아지면 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n로직의 계층 구조를 잘 설계하여 다른 함수를 지나치게 많이 호출하는 상황을 줄입니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7189.example.0.dangerous": "라인 1: 이 함수가 호출하는 다른 함수의 개수가 지나치게 많습니다.\n라인 5: 이 함수가 호출한 다른 함수의 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7189.example.0.safe": "라인 1: 이 함수가 호출하는 다른 함수의 개수를 제한값 이하로 낮추도록 합니다.\n라인 5: 이 함수가 호출한 다른 함수의 개수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7189.name": "너무 많은 호출 대상 함수",
  "rule.saqt.m.ccpp.7189.option.ignore_implicit.description": "옵션을 사용하는 경우, 분석 대상 함수에서 호출하는 다른 함수가 소스코드 상에서 보이지 않거나 직관적으로 알기 힘든 암시적 호출이라면 계산에서 제외합니다.",
  "rule.saqt.m.ccpp.7189.option.ignore_implicit.name": "암시적으로 호출한 함수를 계산에서 제외",
  "rule.saqt.m.ccpp.7189.option.threshold.description": "호출 대상 함수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7189.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7190.description": "함수의 실행 가능한 라인수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n실행 가능한 라인수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7190.example.0.dangerous": "라인 1: 이 함수의 실행 가능한 라인 수가 지나치게 많습니다.\n라인 4: 함수의 실행 가능한 라인 수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7190.example.0.safe": "라인 1: 이 함수의 실행 가능한 라인 수를 제한값 이하로 낮추도록 합니다.\n라인 4: 함수의 실행 가능한 라인 수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7190.name": "너무 많은 실행 가능 라인",
  "rule.saqt.m.ccpp.7190.option.threshold.description": "실행 가능 라인의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7190.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7199.description": "함수의 문장(statement)이 지나치게 많을 경우 분기나 반복 구조가 지나치게 복잡해져 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n함수의 문장 개수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7199.example.0.dangerous": "라인 1: 이 함수의 문장 개수가 지나치게 많습니다.\n라인 4: 함수의 문장 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7199.example.0.safe": "라인 1: 이 함수의 문장 개수를 제한값 이하로 낮추도록 합니다.\n라인 4: 함수의 문장 개수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7199.name": "너무 많은 문장",
  "rule.saqt.m.ccpp.7199.option.threshold.description": "문장 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7199.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7200.description": "함수의 유일한 피연산자 수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n유일한 피연산자 수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7200.example.0.dangerous": "라인 1: 이 함수의 유일한 피연산자 수가 지나치게 많습니다.\n라인 4: 함수의 유일한 피연산자 수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7200.example.0.safe": "라인 1: 이 함수의 유일한 피연산자 수를 제한값 이하로 낮추도록 합니다.\n라인 3: 함수의 유일한 피연산자 수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7200.name": "너무 많은 유일한 피연산자",
  "rule.saqt.m.ccpp.7200.option.threshold.description": "유일한 피연산자 수의 제한값을 입력합니다. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7200.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7201.description": "함수의 유일한 연산자 수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n유일한 연산자 수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7201.example.0.dangerous": "라인 1: 이 함수의 유일한 연산자 수가 지나치게 많습니다.\n라인 5: 함수의 유일한 연산자 수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7201.example.0.safe": "라인 1: 이 함수의 유일한 연산자 수를 제한값 이하로 낮추도록 합니다.\n라인 4: 함수의 유일한 연산자 수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7201.name": "너무 많은 유일한 연산자",
  "rule.saqt.m.ccpp.7201.option.threshold.description": "유일한 연산자 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7201.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7202.description": "함수의 총 피연산자 수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n총 피연산자 수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7202.example.0.dangerous": "라인 1: 이 함수의 총 피연산자 수가 지나치게 많습니다.\n라인 4: 함수의 총 피연산자 수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7202.example.0.safe": "라인 1: 이 함수의 총 피연산자 수를 제한값 이하로 낮추도록 합니다.\n라인 3: 함수의 총 피연산자 수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7202.name": "너무 많은 총 피연산자",
  "rule.saqt.m.ccpp.7202.option.threshold.description": "총 피연산자 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7202.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7203.description": "함수의 총 연산자 수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n총 연산자 수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7203.example.0.dangerous": "라인 1: 이 함수의 총 연산자 수가 지나치게 많습니다.\n라인 5: 함수의 총 연산자 수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7203.example.0.safe": "라인 1: 이 함수의 총 연산자 수를 제한값 이하로 낮추도록 합니다.\n라인 4: 함수의 총 연산자 수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7203.name": "너무 많은 총 연산자",
  "rule.saqt.m.ccpp.7203.option.threshold.description": "총 연산자 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7203.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7204.description": "함수의 어휘량 크기가 지나치게 클 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다. 이때 여기에서 어휘량 크기란 유일한 연산자 수와 유일한 피연산자 수를 합한 것입니다.\n어휘량 크기를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7204.example.0.dangerous": "라인 1: 이 함수의 어휘량 크기가 지나치게 큽니다.\n라인 5: 함수의 어휘량 크기가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7204.example.0.safe": "라인 1: 이 함수의 어휘량 크기를 제한값 이하로 낮추도록 합니다.\n라인 4: 함수의 어휘량 크기가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7204.name": "너무 큰 어휘량 크기",
  "rule.saqt.m.ccpp.7204.option.threshold.description": "어휘량 크기의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7204.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7205.description": "함수의 컴포넌트 길이가 지나치게 길 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다. 이때 여기에서 컴포넌트 길이란 총 연산자 수와 총 피연산자 수를 합한 것입니다.\n컴포넌트 길이를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7205.example.0.dangerous": "라인 1: 이 함수의 컴포넌트 길이가 지나치게 깁니다.\n라인 5: 함수의 컴포넌트 길이가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7205.example.0.safe": "라인 1: 이 함수의 컴포넌트 길이를 제한값 이하로 낮추도록 합니다.\n라인 4: 함수의 컴포넌트 길이가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7205.name": "너무 긴 컴포넌트 길이",
  "rule.saqt.m.ccpp.7205.option.threshold.description": "컴포넌트 길이의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7205.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7206.description": "함수의 평균 문장 크기가 지나치게 클 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다. 이때 여기에서 평균 문장 크기란 컴포넌트 길이를 문장 개수로 나눈 값입니다.\n평균 문장 크기를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7206.example.0.dangerous": "라인 1: 이 함수의 평균 문장 크기가 지나치게 큽니다.\n라인 4: 함수의 평균 문장 크기가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7206.example.0.safe": "라인 1: 이 함수의 평균 문장 크기를 제한값 이하로 낮추도록 합니다.\n라인 3: 함수의 평균 문장 크기가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7206.name": "너무 큰 평균 문장 크기",
  "rule.saqt.m.ccpp.7206.option.threshold.description": "평균 문장 크기의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7206.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7207.description": "함수의 결정 문장 개수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다. 이때 여기에서 결정 문장이란 분기를 발생시키는 구문 및 연산자를 포함합니다.\n결정 문장 개수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.ccpp.7207.example.0.dangerous": "라인 1: 이 함수의 결정 문장 개수가 지나치게 많습니다.\n라인 4: 함수의 결정 문장 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7207.example.0.safe": "라인 1: 이 함수의 결정 문장 개수를 제한값 이하로 낮추도록 합니다.\n라인 4: 함수의 결정 문장 개수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7207.name": "너무 많은 결정 문장",
  "rule.saqt.m.ccpp.7207.option.threshold.description": "결정 문장 개수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7207.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7208.description": "함수의 탈출점 개수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다. 여기에서 탈출점이란 리턴 구문이나 프로그램을 종료하는 함수의 호출을 의미합니다.\n탈출점 개수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 탈출점이 여러개 만들어지는 상황을 회피하도록 합니다.",
  "rule.saqt.m.ccpp.7208.example.0.dangerous": "라인 1: 이 함수의 탈출점 개수가 지나치게 많습니다.\n라인 6: 함수의 탈출점 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7208.example.0.safe": "라인 1: 이 함수의 탈출점 개수를 제한값 이하로 낮추도록 합니다.\n라인 9: 탈출점 개수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7208.name": "너무 많은 탈출점",
  "rule.saqt.m.ccpp.7208.option.threshold.description": "탈출점 개수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7208.option.threshold.name": "제한값",
  "rule.saqt.m.ccpp.7209.description": "함수의 제어하지 않은 점프문이 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다. 여기서 제어하지 않은 점프문이란 함수 내 goto문이나 점프 함수를 의미합니다.\n제어하지 않은 점프문 수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 제어하지 않은 점프문이 여러 개 만들어지는 상황을 회피하도록 합니다.",
  "rule.saqt.m.ccpp.7209.example.0.dangerous": "라인 1: 이 함수의 제어하지 않은 점프문 수가 지나치게 많습니다.\n라인 5: 함수의 제어하지 않은 점프문 수가 제한값을 초과했습니다.",
  "rule.saqt.m.ccpp.7209.example.0.safe": "라인 1: 이 함수의 제어하지 않은 점프문 수를 제한값 이하로 낮추도록 합니다.\n라인 3: 제어하지 않은 점프문 수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.ccpp.7209.name": "너무 많은 제어하지 않은 점프문",
  "rule.saqt.m.ccpp.7209.option.threshold.description": "제어하지 않은 점프문 개수의 제한값을 입력하세오. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.ccpp.7209.option.threshold.name": "제한값",
  "rule.saqt.m.cs.7183.description": "함수의 순환 복잡도가 지나치게 높은 경우 분기나 반복 구조가 지나치게 복잡해져 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n불필요하거나 중복되는 분기문, 반복문을 정리하고, 로직을 기능별로 분리하여 순환 복잡도를 낮춥니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.cs.7183.example.0.dangerous": "라인 2: 이 함수의 순환 복잡도가 지나치게 큽니다.\n라인 11: 지나치게 많은 if 문으로 인해 순환 복잡도가 제한값을 초과했습니다.",
  "rule.saqt.m.cs.7183.example.0.safe": "라인 2: 이 함수의 순환복잡도를 제한값 이하로 낮추도록 합니다.\n라인 11: 순환 복잡도 값이 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.cs.7183.name": "너무 높은 순환 복잡도",
  "rule.saqt.m.cs.7183.option.mcc.name": "switch-case 구문을 1로 계산",
  "rule.saqt.m.cs.7183.option.theshold.description": "순환 복잡도의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.cs.7183.option.theshold.name": "제한값",
  "rule.saqt.m.cs.7183.option.threshold.description": "순환 복잡도의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.cs.7183.option.threshold.name": "제한값",
  "rule.saqt.m.cs.7186.description": "최대 블록 중첩 깊이가 지나치게 클 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n불필요하게 깊게 중첩되는 블록 깊이를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.cs.7186.example.0.dangerous": "라인 2: 이 함수의 최대 블록 중첩 깊이가 지나치게 깊습니다.\n라인 8: 지나치게 많은 블록 중첩으로 인해 최대 블록 중첩 깊이가 제한값을 초과했습니다.",
  "rule.saqt.m.cs.7186.example.0.safe": "라인 2: 이 함수의 최대 블록 중첩 깊이를 제한값 이하로 낮추도록 합니다.\n라인 8: 최대 블록 중첩 깊이가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.cs.7186.name": "너무 깊은 최대 블록 중첩 깊이",
  "rule.saqt.m.cs.7186.option.threshold.description": "최대 블록 중첩 깊이의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.cs.7186.option.threshold.name": "제한값",
  "rule.saqt.m.cs.7192.description": "파라미터 수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n파라미터 수가 너무 많지 않도록 줄이기 바랍니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.cs.7192.example.0.dangerous": "라인 2: 이 함수의 파라미터 수가 지나치게 많습니다.",
  "rule.saqt.m.cs.7192.example.0.safe": "라인 2: 이 함수의 파라미터 수를 제한값 이하로 낮추도록 합니다.",
  "rule.saqt.m.cs.7192.name": "너무 많은 파라미터",
  "rule.saqt.m.cs.7192.option.threshold.description": "파라미터 개수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.cs.7192.option.threshold.name": "제한값",
  "rule.saqt.m.cs.7194.description": "이 검출 규칙은 어떤 함수를 호출하는 고유 호출자의 수를 측정하여 과도한 의존 관계가 있는지 평가합니다. 한 함수 내에서 여러 번 호출되더라도 한 번으로 계산합니다. 호출자가 지나치게 많아지면 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n로직의 계층 구조를 잘 설계하여 다른 함수에서 지나치게 많이 호출되는 상황을 줄입니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.cs.7194.example.0.dangerous": "라인 2: 이 함수를 호출하는 다른 함수의 개수가 지나치게 많습니다.\n라인 21: calleeMethod() 함수를 호출한 다른 함수의 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.cs.7194.example.0.safe": "라인 2: 이 함수를 호출하는 다른 함수의 개수를 제한값 이하로 낮추도록 합니다.\n라인 21: calleeMethod() 함수를 호출한 다른 함수의 개수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.cs.7194.name": "너무 많은 함수 호출자",
  "rule.saqt.m.cs.7194.option.threshold.description": "함수 호출자의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.cs.7194.option.threshold.name": "제한값",
  "rule.saqt.m.cs.7196.description": "이 검출 규칙은 어떤 함수에서 호출하는 다른 함수의 개수를 측정하여 과도한 의존 관계가 있는지 평가합니다. 한 함수를 여러 번 호출하더라도 한 번으로 계산합니다. 함수에서 호출하는 다른 함수가 지나치게 많아지면 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n로직의 계층 구조를 잘 설계하여 다른 함수를 지나치게 많이 호출하는 상황을 줄입니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.cs.7196.example.0.dangerous": "라인 2: 이 함수가 호출하는 다른 함수의 개수가 지나치게 많습니다.\n라인 6: 이 함수가 호출한 다른 함수의 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.cs.7196.example.0.safe": "라인 2: 이 함수가 호출하는 다른 함수의 개수를 제한값 이하로 낮추도록 합니다.\n라인 6: 이 함수가 호출한 다른 함수의 개수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.cs.7196.name": "너무 많은 호출 대상 함수",
  "rule.saqt.m.cs.7196.option.threshold.description": "호출 대상 함수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.cs.7196.option.threshold.name": "제한값",
  "rule.saqt.m.cs.7198.description": "함수의 실행 가능한 라인수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n실행 가능한 라인수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.cs.7198.example.0.dangerous": "라인 2: 이 함수의 실행 가능한 라인 수가 지나치게 많습니다.\n라인 5: 함수의 실행 가능한 라인 수가 제한값을 초과했습니다.",
  "rule.saqt.m.cs.7198.example.0.safe": "라인 2: 이 함수의 실행 가능한 라인 수를 제한값 이하로 낮추도록 합니다.\n라인 5: 함수의 실행 가능한 라인 수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.cs.7198.name": "너무 많은 실행 가능 라인",
  "rule.saqt.m.cs.7198.option.threshold.description": "실행 가능 라인의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.cs.7198.option.threshold.name": "제한값",
  "rule.saqt.m.java.7181.description": "함수의 순환 복잡도가 지나치게 높은 경우 분기나 반복 구조가 지나치게 복잡해져 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n불필요하거나 중복되는 분기문, 반복문을 정리하고, 로직을 기능별로 분리하여 순환 복잡도를 낮춥니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.java.7181.example.0.dangerous": "라인 2: 이 함수의 순환 복잡도가 지나치게 큽니다.\n라인 11: 지나치게 많은 if 문으로 인해 순환 복잡도가 제한값을 초과했습니다.",
  "rule.saqt.m.java.7181.example.0.safe": "라인 2: 이 함수의 순환복잡도를 제한값 이하로 낮추도록 합니다.\n라인 11: 순환 복잡도 값이 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.java.7181.name": "너무 높은 순환 복잡도",
  "rule.saqt.m.java.7181.option.mcc.name": "switch-case 구문을 1로 계산",
  "rule.saqt.m.java.7181.option.threshold.description": "순환 복잡도의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.java.7181.option.threshold.name": "제한값",
  "rule.saqt.m.java.7185.description": "최대 블록 중첩 깊이가 지나치게 클 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n불필요하게 깊게 중첩되는 블록 깊이를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.java.7185.example.0.dangerous": "라인 2: 이 함수의 최대 블록 중첩 깊이가 지나치게 깊습니다.\n라인 8: 지나치게 많은 블록 중첩으로 인해 최대 블록 중첩 깊이가 제한값을 초과했습니다.",
  "rule.saqt.m.java.7185.example.0.safe": "라인 2: 이 함수의 최대 블록 중첩 깊이를 제한값 이하로 낮추도록 합니다.\n라인 8: 최대 블록 중첩 깊이가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.java.7185.name": "너무 깊은 최대 블록 중첩 깊이",
  "rule.saqt.m.java.7185.option.threshold.description": "최대 블록 중첩 깊이의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.java.7185.option.threshold.name": "제한값",
  "rule.saqt.m.java.7191.description": "파라미터 수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n파라미터 수가 너무 많지 않도록 줄이기 바랍니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.java.7191.example.0.dangerous": "라인 2: 이 함수의 파라미터 수가 지나치게 많습니다.",
  "rule.saqt.m.java.7191.example.0.safe": "라인 2: 이 함수의 파라미터 수를 제한값 이하로 낮추도록 합니다.",
  "rule.saqt.m.java.7191.name": "너무 많은 파라미터",
  "rule.saqt.m.java.7191.option.threshold.description": "파라미터 개수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.java.7191.option.threshold.name": "제한값",
  "rule.saqt.m.java.7193.description": "이 검출 규칙은 어떤 함수를 호출하는 고유 호출자의 수를 측정하여 과도한 의존 관계가 있는지 평가합니다. 한 함수 내에서 여러 번 호출되더라도 한 번으로 계산합니다. 호출자가 지나치게 많아지면 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n로직의 계층 구조를 잘 설계하여 다른 함수에서 지나치게 많이 호출되는 상황을 줄입니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.java.7193.example.0.dangerous": "라인 2: 이 함수를 호출하는 다른 함수의 개수가 지나치게 많습니다.\n라인 21: calleeMethod() 함수를 호출한 다른 함수의 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.java.7193.example.0.safe": "라인 2: 이 함수를 호출하는 다른 함수의 개수를 제한값 이하로 낮추도록 합니다.\n라인 21: calleeMethod() 함수를 호출한 다른 함수의 개수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.java.7193.name": "너무 많은 함수 호출자",
  "rule.saqt.m.java.7193.option.threshold.description": "함수 호출자의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.java.7193.option.threshold.name": "제한값",
  "rule.saqt.m.java.7195.description": "이 검출 규칙은 어떤 함수에서 호출하는 다른 함수의 개수를 측정하여 과도한 의존 관계가 있는지 평가합니다. 한 함수를 여러 번 호출하더라도 한 번으로 계산합니다. 함수에서 호출하는 다른 함수가 지나치게 많아지면 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n로직의 계층 구조를 잘 설계하여 다른 함수를 지나치게 많이 호출하는 상황을 줄입니다. 필요하다면 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.java.7195.example.0.dangerous": "라인 2: 이 함수가 호출하는 다른 함수의 개수가 지나치게 많습니다.\n라인 6: 이 함수가 호출한 다른 함수의 개수가 제한값을 초과했습니다.",
  "rule.saqt.m.java.7195.example.0.safe": "라인 2: 이 함수가 호출하는 다른 함수의 개수를 제한값 이하로 낮추도록 합니다.\n라인 6: 이 함수가 호출한 다른 함수의 개수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.java.7195.name": "너무 많은 호출 대상 함수",
  "rule.saqt.m.java.7195.option.threshold.description": "호출 대상 함수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.java.7195.option.threshold.name": "제한값",
  "rule.saqt.m.java.7197.description": "함수의 실행 가능한 라인수가 지나치게 많을 경우 코드 가독성과 유지보수성이 저하될 수 있습니다. 이는 오류 발생 가능성을 높이고, 추후 기능 확장 시 작업 비용을 많이 증가시키는 원인이 됩니다.\n실행 가능한 라인수를 줄이도록 합니다. 필요하다면 함수 분할 또는 코드 리팩토링을 통해 복잡도를 줄이고 가독성을 높이기를 바랍니다.",
  "rule.saqt.m.java.7197.example.0.dangerous": "라인 2: 이 함수의 실행 가능한 라인 수가 지나치게 많습니다.\n라인 5: 함수의 실행 가능한 라인 수가 제한값을 초과했습니다.",
  "rule.saqt.m.java.7197.example.0.safe": "라인 2: 이 함수의 실행 가능한 라인 수를 제한값 이하로 낮추도록 합니다.\n라인 5: 함수의 실행 가능한 라인 수가 제한값을 초과하지 않았습니다.",
  "rule.saqt.m.java.7197.name": "너무 많은 실행 가능 라인",
  "rule.saqt.m.java.7197.option.threshold.description": "실행 가능 라인 수의 제한값을 입력하세요. 이 값을 초과하면 이슈로 검출합니다.",
  "rule.saqt.m.java.7197.option.threshold.name": "제한값",
  "rule.saqt.q.abap.1734.description": "BREAK-POINT 구문 사용 체커는 BREAK-POINT 구문을 검출합니다.\nBREAK-POINT 구문은 애플리케이션을 디버그 모드로 전환시키므로 공격자가 디버깅을 통해 애플리케이션의 정보를 획득할 수 있습니다.\n공격자가 디버그 모드에서 변수 조작 등을 통해 접근할 수 없는 테이블에 접근할 수 있습니다\nBREAK-POINT 구문은 배포되는 애플리케이션 코드에서 제거해야 합니다.",
  "rule.saqt.q.abap.1734.example.0.dangerous": "라인 2: BREAK-POINT 구문을 사용했습니다.",
  "rule.saqt.q.abap.1734.example.0.safe": "라인 2: 배포되는 애플리케이션 코드에서 BREAK-POINT 구문을 제거하도록 합니다.",
  "rule.saqt.q.abap.1734.name": "BREAK-POINT 구문 사용",
  "rule.saqt.q.abap.1735.description": "SYSTEM-CALL 구문 사용 체커는 SYSTEM-CALL 구문을 검출합니다.\nSYSTEM-CALL 구문을 사용하면 안됩니다. ABAP 공식 문서에는 이 구문을 오직 내부 개발 용도로만 사용하라고 강력하게 권고하고 있습니다. 추후 ABAP의 버전업에 따라 어떠한 경고나 고지 없이 SYSTEM-CALL이 더 이상 호환되지 않을 수 있습니다.\nSYSTEM-CALL 구문은 배포되는 애플리케이션 코드에서 제거해야 합니다.",
  "rule.saqt.q.abap.1735.example.0.dangerous": "라인 4: SYSTEM-CALL을 사용했습니다.",
  "rule.saqt.q.abap.1735.example.0.safe": "라인 4: 배포되는 애플리케이션 코드에서 SYSTEM-CALL 구문을 제거하도록 합니다.",
  "rule.saqt.q.abap.1735.name": "SYSTEM-CALL 구문 사용",
  "rule.saqt.q.abap.1736.description": "시스템 C 함수 사용 체커는 CALL 구문을 검출합니다.\n시스템 C 함수 호출(CALL 구문)을 사용하지 마십시오. ABAP 공식 문서에는 이 구문은 내부 용도로만 사용하고 애플리케이션 프로그램에 사용하지 말라고 경고하고 있습니다.\nCALL 구문은 배포되는 애플리케이션 코드에서 제거해야 합니다.",
  "rule.saqt.q.abap.1736.example.0.dangerous": "라인 2: CALL 구문을 사용했습니다.",
  "rule.saqt.q.abap.1736.example.0.safe": "라인 4: 배포되는 애플리케이션 코드에서 CALL 구문을 제거하도록 합니다.",
  "rule.saqt.q.abap.1736.name": "시스템 C 함수 사용",
  "rule.saqt.q.abap.1737.description": "CX_ROOT 예외 처리 체커는 CX_ROOT를 사용한 예외 처리를 검출합니다.\nCX_ROOT는 가장 기본적인 예외 타입으로 모든 예외를 포함합니다. CX_ROOT를 사용하여 예외를 처리하면, 어떤 예외가 발생했는지 파악하기 어렵습니다.\n좀 더 구체적인 예외 타입을 사용하십시오. 예를 들어, 0으로 나누기가 발생할 수 있는 코드에는 CX_ROOT 대신 CX_SY_ZERODIVIDE 타입을 사용합니다.",
  "rule.saqt.q.abap.1737.example.0.dangerous": "라인 6: CX_ROOT를 catch했습니다.",
  "rule.saqt.q.abap.1737.example.0.safe": "라인 6: CX_ROOT 대신 CX_SY_ZERODIVIDE를 catch하도록 합니다.",
  "rule.saqt.q.abap.1737.name": "CX_ROOT 예외 처리",
  "rule.saqt.q.abap.1738.description": "누락된 WHEN OTHERS 절 체커는 WHEN OTHERS 절이 없는 CASE 구문을 검출합니다.\nWHEN OTHERS 절은 조건문이 CASE 구문 안에 다른 WHEN 절에 해당되지 않는 경우를 처리하는 구문입니다. 프로그램의 안정성을 위해 케이스 구문에는 반드시 WHEN OTHERS 절이 반드시 존재해야 합니다.\nCASE 구문 안에 WHEN OTHERS 절을 추가합니다.",
  "rule.saqt.q.abap.1738.example.0.dangerous": "라인 1: CASE 구문에서 WHEN OTHERS 절이 없습니다.",
  "rule.saqt.q.abap.1738.example.0.safe": "라인 6: CASE 구문에서 WHEN OTHERS 절을 사용하도록 합니다.",
  "rule.saqt.q.abap.1738.name": "누락된 WHEN OTHERS 절",
  "rule.saqt.q.abap.1739.description": "너무 적은 WHEN 절 체커는 3개 미만의 WHEN 절을 포함하는 CASE 구문을 검출합니다.\nCASE 구문은 적어도 3개의 WHEN 절(WHEN OTHERS 절 포함)을 가져야 합니다. 만약 3개 미만의 WHEN 절을 사용해야 한다면 IF-ELSE 구문을 고려하십시오.\nIF 구문을 사용하여 조건 분기를 처리합니다.",
  "rule.saqt.q.abap.1739.example.0.dangerous": "라인 1: CASE 구문에 WHEN 절이 2개 밖에 없습니다.",
  "rule.saqt.q.abap.1739.example.0.safe": "라인 1: 분기문을 IF-ELSE 구문으로 처리하도록 합니다.",
  "rule.saqt.q.abap.1739.name": "너무 적은 WHEN 절",
  "rule.saqt.q.abap.1739.option.threshold.description": "WHEN 절의 갯수가 기준값 미만이면 결함으로 검출합니다. (기본값 : 3)",
  "rule.saqt.q.abap.1739.option.threshold.name": "WHEN 절 기준 값",
  "rule.saqt.q.abap.1741.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.saqt.q.abap.1741.example.0.dangerous": "라인 5: CATCH 블록 안에 아무런 예외 처리 코드가 없습니다.",
  "rule.saqt.q.abap.1741.example.0.safe": "라인 5: CATCH 블록 안에 예외 처리 코드를 추가하도록 합니다.",
  "rule.saqt.q.abap.1741.name": "빈 catch 블록",
  "rule.saqt.q.abap.1744.description": "누락된 ELSE 절 체커는 ELSE 절로 끝나지 않는 IF-ELSEIF 구문을 검출합니다.\nIF-ELSEIF 는 ELSE 절로 끝나야 합니다. ELSE 절을 생략하면 예외 상황에 대한 처리가 미흡한 경우가 많습니다.\n예외 상황을 처리할 수 있는 적절한 ELSE 구문을 추가합니다.",
  "rule.saqt.q.abap.1744.example.0.dangerous": "라인 1: IF 문이 ELSE 로 끝나지 않았습니다.",
  "rule.saqt.q.abap.1744.example.0.safe": "라인 5: 예외 상황을 처리하는 ELSE 절을 추가하도록 합니다.",
  "rule.saqt.q.abap.1744.name": "누락된 ELSE 절",
  "rule.saqt.q.abap.1754.description": "DATA BEGIN OF OCCURS 구문 사용 체커는 DATA BEGIN OF OCCURS 구문을 검출합니다.\nDATA BEGIN OF OCCURS 구문은 ABAP 7.0부터 더 이상 지원되지 않기 때문에 사용하면 안됩니다. ABAP 공식 문서에서는 더 이상 사용하지 않기를 권장하고 있습니다.\nDATA BEGIN OF OCCURS 구문 대신 DATA BEGIN OF 구문을 사용합니다.",
  "rule.saqt.q.abap.1754.example.0.dangerous": "라인 1: DATA BEGIN OF OCCURS 구문을 사용했습니다.",
  "rule.saqt.q.abap.1754.example.0.safe": "라인 1: DATA BEGIN OF OCCURS 구문 대신 DATA BEGIN OF를 사용하도록 합니다.",
  "rule.saqt.q.abap.1754.name": "DATA BEGIN OF OCCURS 구문 사용",
  "rule.saqt.q.abap.1755.description": "NOT IN 사용 체커는 NOT IN을 사용한 SQL 쿼리문을 검출합니다.\nSQL 쿼리문에서 NOT IN을 사용하지 마십시오. 비록 NOT IN이 NOT EXIST보다 효율적일지 모르지만, NOT IN의 값 중 널이 들어가면 잘못된 결과가 나올 수 있습니다.\nNOT IN 대신 NO EXIST를 사용합니다.",
  "rule.saqt.q.abap.1755.example.0.dangerous": "라인 2: NOT IN을 사용했습니다.",
  "rule.saqt.q.abap.1755.example.0.safe": "라인 2: NOT IN 대신 NOT EXISTS를 사용하도록 합니다.",
  "rule.saqt.q.abap.1755.name": "NOT IN 사용",
  "rule.saqt.q.abap.1756.description": "DELETE 구문에서 누락된 WHERE 절 체커는 WHERE 절이 없는 DELETE 구문을 검출합니다.\nDELETE from dbtable 구문은 반드시 WHERE 절이 있어야 합니다. WHERE 절 없이 이 구문을 실행하면 테이블의 모든 레코드가 삭제됩니다. 모든 레코드를 지우고 싶더라도, 반드시 WHERE 절을 적어서 실수를 방지해야 합니다.\nDELETE 구문을 사용할 때 WHERE 절을 명시합니다.",
  "rule.saqt.q.abap.1756.example.0.dangerous": "라인 1: WHERE 절 없이 DELETE를 사용했습니다.",
  "rule.saqt.q.abap.1756.example.0.safe": "라인 1: DELETE 구문에 WHERE 절을 사용하도록 합니다.",
  "rule.saqt.q.abap.1756.name": "DELETE 구문에서 누락된 WHERE 절",
  "rule.saqt.q.abap.1756.option.ignore_table.description": "검출 대상에서 무시할 테이블명을 입력합니다.",
  "rule.saqt.q.abap.1756.option.ignore_table.name": "무시할 테이블명",
  "rule.saqt.q.abap.1758.description": "반복문 내에서의 EXIT 및 CHECK 구문 사용 체커는 SELECT 루프 내에서 사용된 EXIT 및 CHECK를 검출합니다.\nSELECT 루프 내에서 EXIT 및 CHECK 구문을 사용하지 마십시오. 해당 구문은 SELECT 루프의 실행을 중단시킵니다. 따라서 데이터를 거르는데 비효율적이고 리소스를 낭비합니다. CHECK 및 EXIT 조건을 SELECT 문의 조건으로 만드는 것이 좋습니다.\nCHECK 및 EXIT 조건으로 제외할 데이터를 SELECT 문의 조건으로 먼저 제외합니다.",
  "rule.saqt.q.abap.1758.example.0.dangerous": "라인 2: CHECK 구문을 사용했습니다.",
  "rule.saqt.q.abap.1758.example.0.safe": "라인 2: CHECK 구문의 조건을 SELECT 문의 조건으로 이동했습니다.",
  "rule.saqt.q.abap.1758.name": "반복문 내에서의 EXIT 및 CHECK 구문 사용",
  "rule.saqt.q.abap.1760.description": "SELECT 구문 내 * 사용 체커는 *를 사용하여 모든 컬럼을 읽어들이는 SELECT 구문을 검출합니다.\nSELECT * ... 구문을 사용하여 모든 컬럼을 읽어들이지 마십시오. 성능에 부정적인 영향을 끼칠 수 있습니다.\nSELECT 문을 사용할 때 구체적인 컬럼을 명시합니다.",
  "rule.saqt.q.abap.1760.example.0.dangerous": "라인 1: SELECT 구문에 *를 사용했습니다.",
  "rule.saqt.q.abap.1760.example.0.safe": "라인 1: SELECT 구문에 읽어들일 컬럼을 명시했습니다.",
  "rule.saqt.q.abap.1760.name": "SELECT 구문 내 * 사용",
  "rule.saqt.q.abap.1761.description": "네이티브 SQL 사용 체커는 EXEC 구문을 검출합니다.\nABAP에서는 Native SQL을 사용하지 않기를 권장하고 있습니다.\nOpen SQL로 대체할 수 있는 경우에는 Open SQL을 사용하십시오. 대체할 수 없는 경우(다른 DB 호환)에만 Native SQL을 사용합니다.",
  "rule.saqt.q.abap.1761.example.0.dangerous": "라인 1: Native SQL(EXEC SQL~ ENDEXEC.)을 사용했습니다.",
  "rule.saqt.q.abap.1761.example.0.safe": "라인 1: Native SQL을 제거했습니다.",
  "rule.saqt.q.abap.1761.name": "네이티브 SQL 사용",
  "rule.saqt.q.abap.1762.description": "FORM 구문 사용 체커는 FORM을 검출합니다.\nFORM은 내부적으로 활용하는 서브루틴이므로 코드 재사용성이 떨어집니다. 이 구문은 SAP에서 사용하지 않기를 권장하는 구문입니다.\n코드 재사용성을 위해 METHOD 또는 FUNCTION을 대신 사용하십시오.",
  "rule.saqt.q.abap.1762.example.0.dangerous": "라인 1: FORM 구문을 사용했습니다.",
  "rule.saqt.q.abap.1762.example.0.safe": "라인 1: METHOD로 대체했습니다.",
  "rule.saqt.q.abap.1762.name": "FORM 구문 사용",
  "rule.saqt.q.abap.1763.description": "UPDATE 구문에서 누락된 WHERE 절 체커는 WHERE 절이 누락된 UPDATE 구문을 검출합니다.\nUPDATE 구문에는 반드시 WHERE 절이 있어야 합니다. WHERE 절이 없으면 모든 레코드의 값이 갱신됩니다.\nWHERE 절을 추가하여 모든 레코드 값이 갱신되는 것을 방지합니다.",
  "rule.saqt.q.abap.1763.example.0.dangerous": "라인 1: UPDATE 구문에 WHERE 절이 없습니다.",
  "rule.saqt.q.abap.1763.example.0.safe": "라인 1: UPDATE 구문에 WHERE 절이 있습니다.",
  "rule.saqt.q.abap.1763.name": "UPDATE 구문에서 누락된 WHERE 절",
  "rule.saqt.q.abap.1764.description": "REFRESH FROM TABLE 구문 사용 체커는 REFRESH FROM TABLE 구문을 검출합니다.\nREFRESH itable FROM TABLE dbtable 구문은 더 이상 지원하지 않기 때문에 사용하면 안됩니다.\nREFRESH 구문을 SELECT 구문 안에 INTO 절로 대체합니다.",
  "rule.saqt.q.abap.1764.example.0.dangerous": "라인 7: \"REFRESH itab FROM TABLE dbtable\" 구문을 사용했습니다.",
  "rule.saqt.q.abap.1764.example.0.safe": "라인 3: SELECT 구문의 INTO 절로 \"REFRESH itab FROM TABLE dbtable\"구문을 대체합니다.",
  "rule.saqt.q.abap.1764.name": "REFRESH FROM TABLE 구문 사용",
  "rule.saqt.q.abap.1765.description": "반복문 내에서의 SELECT 구문 사용 체커는 LOOP 나 WHILE 구문 내에서 사용된 SELECT 구문을 검출합니다.\nSELECT 구문은 LOOP 나 WHILE 구문 내에서 사용하면 안됩니다. 반복문 내에서의 쿼리는 성능 문제를 발생시킬 수 있습니다. 단, UP TO 1 ROWS 절이 있는 경우 가능합니다.\nUP TO 1 ROWS와 같이 사용하지 않는 이상 LOOP나 WHILE 구문 안에 SELECT 구문을 사용하지 마십시오.",
  "rule.saqt.q.abap.1765.example.0.dangerous": "라인 2: LOOP 안에서 SELECT 구문을 사용했습니다. UP TO 1 ROWS 절과 함께 사용되지 않는 SELECT 구문은 성능 문제가 발생할 수 있습니다.",
  "rule.saqt.q.abap.1765.example.0.safe": "라인 1: LOOP 문 밖에서 SELECT 문을 사용했습니다.",
  "rule.saqt.q.abap.1765.name": "반복문 내에서의 SELECT 구문 사용",
  "rule.saqt.q.abap.1766.description": "너무 깊이 중첩된 제어 흐름 체커는 과도하게 중첩된 제어문을 검출합니다.\n제어 흐름과 관련된 구문인 IF, DO, LOOP, CASE, WHILE,SELECT, PROVIDE 구문이 옵션에서 지정한 중첩도 제한 이상으로 중첩되는 경우를 검출합니다.\n과도하게 중첩된 코드는 가독성과 유지보수성이 떨어지므로 수정해야 합니다. 제어문의 중첩도 제한은 옵션에서 수정할 수 있습니다.\nAND 또는 OR 절을 사용하여 의미 없는 중첩을 제거합니다.",
  "rule.saqt.q.abap.1766.example.0.dangerous": "라인 1: IF 구문이 있습니다.\n라인 2: IF 구문이 있습니다.\n라인 3: DO 구문이 있습니다. 3번 중첩된 구문입니다.",
  "rule.saqt.q.abap.1766.example.0.safe": "라인 1: IF 구문이 있습니다.\n라인 2: DO 구문이 있습니다. 두 번 중첩된 구문입니다(기본 중첩문 깊이 제한 3)",
  "rule.saqt.q.abap.1766.name": "너무 깊이 중첩된 제어 흐름",
  "rule.saqt.q.abap.1766.option.threshold.description": "중첩되는 구문의 제한 횟수를 설정합니다.",
  "rule.saqt.q.abap.1766.option.threshold.name": "중첩도 제한",
  "rule.saqt.q.abap.1769.description": "너무 큰 파일 체커는 라인 수가 제한을 넘는 소스 파일을 검출합니다.\n한 소스 코드 파일의 라인 수가 너무 많습니다. 한 소스 코드 파일이 너무 많은 라인으로 이루어져 있으면 유지보수가 힘듭니다. 라인 수 제한은 옵션에서 변경할 수 있습니다(기본 500).\n소스 코드 내에서 유사한 기능을 지닌 코드를 모아 분할하여 다른 파일로 만듭니다.",
  "rule.saqt.q.abap.1769.example.0.dangerous": "라인 1: 파일 source1.abap의 크기가 라인 수 제한을 초과했습니다.",
  "rule.saqt.q.abap.1769.example.0.safe": "라인 1: source1.abap 파일을 유사한 코드를 모아 두 개의 소스 파일(source1_1.abap, source1_2.abap)로 분할했습니다.",
  "rule.saqt.q.abap.1769.name": "너무 큰 파일",
  "rule.saqt.q.abap.1769.option.max_lines.description": "최대 라인수를 설정합니다.",
  "rule.saqt.q.abap.1769.option.max_lines.name": "최대 라인 수",
  "rule.saqt.q.abap.1770.description": "중첩된 SELECT 구문 사용 체커는 SELECT 구문 안에서 사용된 SELECT 구문을 검출합니다.\nSELECT 구문을 중첩해서 사용하는 대신 JOIN 절을 사용하십시오. SELECT 구문에 JOIN을 사용하는 것이 중첩 SELECT 구문보다 더 성능이 좋습니다.\n중첩된 SELECT 구문 대신 JOIN 절을 사용합니다.",
  "rule.saqt.q.abap.1770.example.0.dangerous": "라인 3: SELECT 문이 중첩되었습니다.",
  "rule.saqt.q.abap.1770.example.0.safe": "라인 3: SELECT 구문을 중첩시키는 대신 JOIN 절을 사용합니다.",
  "rule.saqt.q.abap.1770.name": "중첩된 SELECT 구문 사용",
  "rule.saqt.q.abap.1771.description": "반복문 내 너무 많은 분기 체커는 제어문을 남용한 반복문을 검출합니다.\n반복문 내에서 제어문(CONTINUE, EXIT, CHECK)을 두 번 이상 사용된 반복문을 검출합니다.\n반복문 내에서 CONTINUE, EXIT, CHECK 구문을 두 번 이상 사용하지 마십시오. 두 번 이상 사용하고 있다면 구조가 복잡해질 가능성이 높습니다.\n의미적으로 동일한 다른 구조의 반복문으로 변경합니다.",
  "rule.saqt.q.abap.1771.example.0.dangerous": "라인 6: 반복문 내에서 CONTINUE, EXIT, CHECK 구문을 두 번 이상 사용했습니다.",
  "rule.saqt.q.abap.1771.example.0.safe": "라인 5: 동일한 의미를 갖는 다른 구조의 반복문으로 변경하여 제어문을 오직 한 번 사용했습니다.",
  "rule.saqt.q.abap.1771.name": "반복문 내 너무 많은 분기",
  "rule.saqt.q.abap.1773.description": "누락된 SORT 필드 체커는 정렬에 사용될 필드를 명시하지 않는 SORT 구문을 검출합니다.\n내부 테이블 정렬을 위해 SORT 구문에 기준이 될 필드가 존재해야 합니다. 정렬에 사용될 필드를 명시하지 않으면 매우 비효율적이 될 수 있습니다.\n정렬할 때 사용할 필드를 명시합니다.",
  "rule.saqt.q.abap.1773.example.0.dangerous": "라인 1: SORT 필드를 명시하지 않고 내부 테이블을 정렬했습니다.",
  "rule.saqt.q.abap.1773.example.0.safe": "라인 1: 정렬할 때 기준이 되는 필드를 명시했습니다.",
  "rule.saqt.q.abap.1773.name": "누락된 SORT 필드",
  "rule.saqt.q.abap.1774.description": "SELECT 구문에서 누락된 ORDER BY 절 체커는 ORDER BY 절 없이 사용된 SELECT 구문을 검출합니다.\nSELECT 구문은 반드시 ORDER BY 절과 함께 사용해야 합니다. ORDER BY 절과 사용하지 않으면 예측하지 못한 순서로 데이터를 받아옵니다.\nSELECT 구문을 ORDER BY 절과 함께 사용합니다.",
  "rule.saqt.q.abap.1774.example.0.dangerous": "라인 1: ORDER BY 없이 SELECT 구문을 사용했습니다.\n라인 2: ORDER BY 없이 SELECT 구문을 사용했습니다.",
  "rule.saqt.q.abap.1774.example.0.safe": "라인 1: SELECT 구문에 ORDER BY 절을 사용했습니다.\n라인 2: SELECT 구문에 ORDER BY 절을 사용했습니다.",
  "rule.saqt.q.abap.1774.name": "SELECT 구문에서 누락된 ORDER BY 절",
  "rule.saqt.q.abap.1775.description": "SELECT 구문에서 누락된 WHERE 절 체커는 WHERE 절 없이 사용된 SELECT 구문을 검출합니다.\nSELECT 구문은 반드시 WHERE 절과 함께 사용해야 합니다. WHERE 절 없이 사용하면 해당 테이블의 모든 레코드를 가져오며, 성능에 영향을 줄 수 있습니다.\nSELECT 구문을 WHERE 절과 함께 사용합니다.",
  "rule.saqt.q.abap.1775.example.0.dangerous": "라인 1: WHERE 절 없이 SELECT 구문을 사용했습니다.",
  "rule.saqt.q.abap.1775.example.0.safe": "라인 1: SELECT 구문에 WHERE 절을 사용했습니다.",
  "rule.saqt.q.abap.1775.name": "SELECT 구문에서 누락된 WHERE 절",
  "rule.saqt.q.abap.1777.description": "내부 소스 코드 처리 구문 사용 체커는 내부적으로만 사용되어야 하는 구문을 검출합니다.\n해당 구문은 다음과 같습니다. DELETE REPORT, GENERATE REPORT, LOAD REPORT, SCAN, DELETE TEXTPOOL, EXPORT DYNPRO, IMPORT DYNPRO, DELETE DYNPRO, SYNTAX-CHECK FOR DYNPRO,GENERATE DYNPRO\n내부적으로만 사용되는 구문은 배포되는 소스 코드에 사용하지 말아야 합니다. SAP에서도 내부 용도로만 사용하거나, 사용하지 말 것을 권장하고 있습니다.\n내부적으로만 사용되는 구문을 삭제합니다.",
  "rule.saqt.q.abap.1777.example.0.dangerous": "라인 1: LOAD REPORT 구문을 사용했습니다.",
  "rule.saqt.q.abap.1777.example.0.safe": "라인 1: 내부적으로 사용되는 구문을 제거합니다.",
  "rule.saqt.q.abap.1777.name": "내부 소스 코드 처리 구문 사용",
  "rule.saqt.q.abap.1781.description": "BYPASSING BUFFER 절 사용 체커는 BYPASSING BUFFER 절을 사용한 SELECT 구문을 검출합니다.\nSQL 문에서 BYPASSING BUFFER 절을 사용하지 마십시오. BYPASSING BUFFER 절을 사용하는 것은 SAP 테이블의 버퍼링을 명시적으로 사용하지 않겠다는 의미이며, 따라서 SELECT 문은 데이터베이스에서 직접적으로 데이터를 읽어옵니다. 따라서 성능 이슈가 발생할 수 있으니 가능한 사용하지 않는 것이 좋습니다.\nSELECT 구문에서 BYPASSING BUFFER 절을 제거합니다.",
  "rule.saqt.q.abap.1781.example.0.dangerous": "라인 3: BYPASSING BUFFER 절을 사용했습니다.",
  "rule.saqt.q.abap.1781.example.0.safe": "라인 3: SELECT 구문에서 BYPASSING BUFFER 절을 제거했습니다.",
  "rule.saqt.q.abap.1781.name": "BYPASSING BUFFER 절 사용",
  "rule.saqt.q.abap.1782.description": "DISTINCT 연산자 사용 체커는 DISTINCT 연산자를 사용한 SELECT 구문을 검출합니다.\nSQL 문에서 DISTINCT 연산자를 사용하지 마십시오. 이 연산자를 사용하면 애플리케이션 서버의 버퍼에서 값을 읽지 않고 직접적으로 데이터베이스에서 값을 읽어들입니다.\nSELECT 구문에서 DISTINCT 연산자를 제거합니다.",
  "rule.saqt.q.abap.1782.example.0.dangerous": "라인 1: SELECT 문에서 DISTINCT 연산자를 사용했습니다.",
  "rule.saqt.q.abap.1782.example.0.safe": "라인 1: SELECT 문에서 DISTINCT 연산자를 제거합니다.",
  "rule.saqt.q.abap.1782.name": "DISTINCT 연산자 사용",
  "rule.saqt.q.abap.1784.description": "중복된 문자열 체커는 반복되어 사용된 동일한 내용의 문자열 상수를 검출합니다.\n동일한 내용의 문자열 상수가 일정 횟수 이상 반복되어 사용한 경우를 검출합니다.\n반복적으로 사용된 문자열 상수를 수정하려면 모든 문자열 상수를 수정해야 하며, 따라서 오류가 발생할 가능성도 높습니다.\n자주 사용되는 문자열인 경우 변수로 저장하여 사용합니다.",
  "rule.saqt.q.abap.1784.example.0.dangerous": "라인 3: 같은 내용의 문자열 \"Firstname\" 이 옵션에 설정된 값인 3 이상 중복되었습니다.",
  "rule.saqt.q.abap.1784.example.0.safe": "라인 1: 문자열 \"Firstname\"을 fname 변수에 값을 저장하여 사용합니다.",
  "rule.saqt.q.abap.1784.name": "중복된 문자열",
  "rule.saqt.q.abap.1784.option.threshold.description": "중복되는 문자열의 제한 횟수를 설정합니다.",
  "rule.saqt.q.abap.1784.option.threshold.name": "중복 제한 횟수",
  "rule.saqt.q.c.127.description": "잘못된 TRY 및 CATCH 매크로 사용 체커는 TRY CATCH 매크로를 사용할 때 CATCH 레이블 뒤에 TRY 매크로를 다시 사용하는 코드를 검출합니다.\nCATCH 레이블 아래에 TRY 매크로를 다시 사용하면 해당 TRY 매크로 안에서 발생한 예외를 다시 잡아줄 CATCH 레이블을 같은 이름으로 작성할 수 없기 때문에 제어 흐름을 이해하기가 어렵습니다.\nCATCH 레이블은 TRY 매크로를 모두 작성한 후에 한 번만 사용합니다.",
  "rule.saqt.q.c.127.example.0.dangerous": "라인 5: CATCH 레이블을 사용하고 나서 다시 TRY 매크로를 사용했습니다.",
  "rule.saqt.q.c.127.example.0.safe": "라인 5: CATCH 레이블을 사용한 후에 TRY 매크로를 사용하지 않습니다.",
  "rule.saqt.q.c.127.name": "잘못된 TRY 및 CATCH 매크로 사용",
  "rule.saqt.q.c.127.option.catch_macro.description": "catch 매크로 이름을 설정합니다.",
  "rule.saqt.q.c.127.option.catch_macro.name": "catch 매크로",
  "rule.saqt.q.c.127.option.try_macro.description": "try 매크로 이름을 설정합니다.",
  "rule.saqt.q.c.127.option.try_macro.name": "try 매크로",
  "rule.saqt.q.c.142.description": "트랜잭션에서 누락된 commit 혹은 rollback 함수 호출 체커는 DB 트랜잭션에서 작업을 수행할 때 명시적으로 commit() 함수나 rollback() 함수에 대한 명시적 호출이 누락된 코드를 검출합니다.\nDB 트랜잭션에서 한 가지 작업이 정상적으로 끝나는 경우 commit() 함수를 호출합니다. 반대로 동작이 어떠한 이유로든 실패하는 경우 rollback() 함수를 호출하게 됩니다. 둘 중 어느 하나가 코드 상에 작성되지 않을 경우 DB 트랜잭션 중 발생할 수 있는 상황에 제대로 대응하지 못하게 됩니다.\nDB 트랜잭션 블록에서 commit() 함수와 rollback() 함수를 쌍으로 작성합니다.",
  "rule.saqt.q.c.142.example.0.dangerous": "라인 2: commit() 함수를 호출한 후에 rollback() 함수를 명시적으로 호출하지 않았습니다.",
  "rule.saqt.q.c.142.example.0.safe": "라인 2: commit() 함수와 rollback() 함수를 모두 명시적으로 호출해야 합니다.",
  "rule.saqt.q.c.142.name": "트랜잭션에서 누락된 commit 혹은 rollback 함수 호출",
  "rule.saqt.q.c.142.option.commit_function.description": "commit함수를 설정합니다.",
  "rule.saqt.q.c.142.option.commit_function.name": "commit함수",
  "rule.saqt.q.c.142.option.rollback_function.description": "rollback함수를 설정합니다.",
  "rule.saqt.q.c.142.option.rollback_function.name": "rollback함수",
  "rule.saqt.q.c.1440.description": "금지된 한정자 restrict 사용 체커는 restrict 타입 한정자 사용을 검출합니다.\nrestrict 타입 한정자는 보통 컴파일러가 좀 더 효율적인 코드를 생성하도록 유도할 목적으로 사용됩니다. 하지만 restrict 타입 한정자를 사용할 때는 프로그래머가 반드시 두 개 혹은 그 이상의 포인터가 특정 메모리 영역을 조작하는지 정확히 숙지하고 있어야 합니다. 컴파일러가 조금 더 효율적인 코드를 생성할 여지가 생기는 이점에 비해 프로그래머가 포인터 관련 실수를 할 가능성으로 인한 위험성이 더 크기 때문에 사용하지 않기를 권장합니다.\nrestrict 타입 한정자를 사용하지 않습니다.",
  "rule.saqt.q.c.1440.example.0.dangerous": "라인 3: restrict 타입 한정자를 사용했습니다.",
  "rule.saqt.q.c.1440.example.0.safe": "라인 3: restrict 타입 한정자를 사용하지 마십시오.",
  "rule.saqt.q.c.1440.name": "금지된 한정자 restrict 사용",
  "rule.saqt.q.c.1446.description": "금지된 헤더 tgmath.h 사용 체커는 표준 헤더 tgmath.h를 사용한 경우를 검출합니다.\ntgmath.h 헤더는 타입 제네릭(Type Generic) 수학 함수들을 제공합니다. 이 라이브러리를 사용하면 인자 타입에 따라 실제로 어떤 함수 구현체가 선택될지 직관적으로 파악하기 어려울 수 있고 의도와 다른 함수가 선택되면 프로그램의 실행이 의도하지 않은 방향으로 흘러갈 수 있으므로 가능하면 호출할 함수를 명확히 지정하여 사용할 수 있는 math.h 헤더를 사용하는 것이 좋습니다.\ntgmath.h 헤더 대신 math.h 헤더를 사용하도록 합니다.",
  "rule.saqt.q.c.1446.example.0.dangerous": "라인 1: tgmath.h를 include했습니다.",
  "rule.saqt.q.c.1446.example.0.safe": "라인 1: tgmath.h를 사용하지 마십시오.",
  "rule.saqt.q.c.1446.name": "금지된 헤더 tgmath.h 사용",
  "rule.saqt.q.c.1652.description": "부적절한 scanf 인자의 타입 체커는 scanf() 함수의 두 번째 이후 인자로 참조 주소 값이 전달되지 않는 경우를 검출합니다.\nscanf() 함수는 입력을 해석한 값을 저장하기 위해 값을 저장할 메모리 주소를 인자로 받습니다. 따라서 배열 혹은 포인터 변수를 전달하거나, 지역 변수에 값을 저장하고 싶다면 그 변수의 참조(&)값을 전달해야 합니다.\nscanf() 함수를 호출할 때 참조 주소 값을 전달하도록 합니다.",
  "rule.saqt.q.c.1652.example.0.dangerous": "라인 3: scanf() 함수의 인자로 일반 정수 변수를 전달하고 있습니다.",
  "rule.saqt.q.c.1652.example.0.safe": "라인 3: scanf() 함수의 인자로 변수 n의 주소를 전달합니다.",
  "rule.saqt.q.c.1652.name": "부적절한 scanf 인자의 타입",
  "rule.saqt.q.c.1653.description": "부적절한 할당 블록 크기 체커는 메모리 할당 크기로 할당 결과를 저장할 포인터 타입 크기의 배수가 전달되지 않는 경우를 검출합니다.\n메모리 할당 결과를 특정 타입의 포인터 변수에 저장하는 것은, 특별한 이유가 없다면 해당 메모리 공간을 특정 타입의 객체들이 저장되는 공간으로 해석하겠다는 의미입니다. 따라서 이 때 총 메모리 할당 크기는 특정 타입이 메모리에서 차지하는 공간의 배수여야 합니다.\n메모리를 할당할 때 결과를 저장할 포인터 타입 크기의 배수로 할당 크기 인자를 전달합니다.",
  "rule.saqt.q.c.1653.example.0.dangerous": "라인 3: 할당한 메모리를 long 포인터에 저장하지만 요청하는 메모리의 크기 11은 4의 배수가 아닙니다.\n라인 4: 할당한 메모리를 long 포인터에 저장하지만 요청하는 메모리의 크기 3은 4의 배수가 아닙니다.",
  "rule.saqt.q.c.1653.example.0.safe": "라인 3: 할당되는 총 메모리 블록의 크기는 long의 크기인 4의 배수여야 합니다.",
  "rule.saqt.q.c.1653.name": "부적절한 할당 블록 크기",
  "rule.saqt.q.c.1890.description": "부적절한 타입으로 매개변수 할당 체커는 함수를 호출할 때 전달하는 인자의 타입과 함수 선언에서 지정한 매개 변수 타입이 서로 다른 경우를 검출합니다.\n매개 변수와 인자의 타입이 일치하지 않으면 함수가 오작동하거나 의도하지 않게 암시적 캐스팅이 일어날 수 있습니다.\n매개 변수 타입과 인자 타입을 일치시킵니다.",
  "rule.saqt.q.c.1890.example.0.dangerous": "라인 1: use_int16() 함수의 선언에서는 매개 변수로 int16_t(short) 타입을 받도록 선언했습니다.\n라인 7: use_int16() 함수를 호출하면서 인자로 uint16_t(unsigned short) 타입을 전달했습니다.",
  "rule.saqt.q.c.1890.example.0.safe": "라인 7: 함수를 호출할 때 선언된 매개 변수와 동일한 타입의 인자를 전달해야 합니다.",
  "rule.saqt.q.c.1890.name": "부적절한 타입으로 매개변수 할당",
  "rule.saqt.q.c.1891.description": "문자 및 정수 타입을 혼용한 할당 체커는 1바이트 크기의 문자형 및 정수형 변수에 잘못된 값을 대입한 경우를 검출합니다.\n문자형으로 의도된 타입(char_t 등)의 변수에 정수를 대입하거나, 정수형으로 의도된 타입(sint8_t, uint8_t 등)의 변수에 문자를 대입하지 않아야 합니다.\n컴파일 및 실행 환경에 따라서 기계적으로는 1바이트 정수형과 문자형이 동일하게 해석될 수도 있지만 둘을 구분해서 사용하는 것이 혼동을 줄이는 데에 도움이 됩니다. 또한 경우에 따라 문자형의 크기를 2바이트로 확장하여 사용할 수도 있기 때문에 둘을 제대로 구분해서 사용하지 않으면 작성한 코드의 호환성이 떨어지게 됩니다.\n문자형과 정수형을 명확히 구분해 사용합니다.",
  "rule.saqt.q.c.1891.example.0.dangerous": "라인 4: 문자형인 char_t 변수에 숫자를 대입했습니다.\n라인 5: 정수형인 sint8_t 변수에 문자를 대입했습니다.",
  "rule.saqt.q.c.1891.example.0.safe": "라인 4: 문자형인 char_t 변수에는 문자를 대입합니다.\n라인 5: 정수형인 sint8_t 변수에는 숫자를 대입합니다.",
  "rule.saqt.q.c.1891.name": "문자 및 정수 타입을 혼용한 할당",
  "rule.saqt.q.c.1945.description": "누락된 필수 함수 호출 체커는 하나의 함수 본문 내에서 특정 함수가 호출되면 다른 함수가 추가로 반드시 호출되도록 짝지었으나 추가 함수 호출이 누락된 경우를 검출합니다.\n짝지어진 함수의 쌍은 옵션으로 지정할 수 있습니다.\n예를 들어 잠금 함수와 잠금 해제 함수, 메모리 할당 함수와 메모리 해제 함수, 파일을 여는 함수와 닫는 함수 등은 꼭 쌍을 이뤄서 호출되어야 합니다. 이 함수의 쌍이 반드시 한 함수 안에서 둘 다 호출되어야만 하는 것은 아니지만 한 함수 안에서 호출하는 것이 후속 함수 호출을 놓치는 실수를 줄이는 방법 중 하나입니다. 반드시 한 함수 안에서 두 함수가 쌍으로 호출되도록 강제하고 싶을 경우 이 체커를 활용할 수 있습니다.\n지정된 두 함수를 항상 한 함수 내에서 쌍으로 호출합니다.",
  "rule.saqt.q.c.1945.example.0.dangerous": "라인 11: mycall() 함수와 mustcall() 함수가 옵션에 쌍으로 지정되었다고 가정합니다. 대상 함수 mycall()이 호출되었습니다.\n라인 12: bad_ex() 함수 내에서 mycall() 함수가 호출되었지만 mustcall() 함수는 호출되지 않았습니다.",
  "rule.saqt.q.c.1945.example.0.safe": "라인 11: mycall() 함수가 호출되었습니다.\n라인 17: 짝지어져 반드시 호출되어야 하는 mustcall() 함수가 호출되었습니다.",
  "rule.saqt.q.c.1945.name": "누락된 필수 함수 호출",
  "rule.saqt.q.c.1945.option.sink_func.description": "대상 함수가 호출되었을 경우 반드시 호출되어야 하는 함수를 적습니다.(함수 범위 내)",
  "rule.saqt.q.c.1945.option.sink_func.name": "필수 호출 함수",
  "rule.saqt.q.c.1945.option.source_func.description": "대상 함수를 적습니다.",
  "rule.saqt.q.c.1945.option.source_func.name": "대상 함수",
  "rule.saqt.q.c.1950.description": "누락된 함수 선언 체커는 함께 컴파일 되는 모든 소스 안에서 선언을 찾을 수 없는 이름의 함수가 호출된 경우를 검출합니다.\n선언이 없는 함수를 호출하면 컴파일이 되지 않습니다. 호출할 함수의 이름을 헷갈려 잘못 작성했을 수 있습니다.\n함수의 선언을 깜빡 했거나 호출할 함수 이름을 잘못 작성하지 않았는지 확인하고 수정합니다.",
  "rule.saqt.q.c.1950.example.0.dangerous": "라인 4: func() 함수가 선언된 곳이 없습니다.",
  "rule.saqt.q.c.1950.example.0.safe": "라인 1: 함수를 선언한 후에 사용해야 합니다.",
  "rule.saqt.q.c.1950.name": "누락된 함수 선언",
  "rule.saqt.q.c.2013.description": "FILE 객체의 잘못된 사용 체커는 FILE 객체의 포인터를 역참조하거나 객체 내부를 직접 조작한 경우를 검출합니다.\nFILE 객체는 관련 라이브러리 함수 호출을 통해서만 다루도록 설계되어 있습니다. 따라서 FILE 객체를 복사해서 사용하면 두 객체가 같은 동작을 할 것이 보장되지 않으며, 객체 내부의 값을 임의로 조작하면 관련 라이브러리가 제대로 작동하지 않을 수 있습니다.\nFILE 객체를 다루려면 설계된 대로 라이브러리 함수를 호출해야 합니다.",
  "rule.saqt.q.c.2013.example.0.dangerous": "라인 6: FILE 객체의 내부 값을 직접 조작했습니다.\n라인 13: FILE 포인터 pf1을 역참조했습니다.",
  "rule.saqt.q.c.2013.example.0.safe": "라인 6: FILE 객체 내부의 값을 직접 조작하지 마십시오.\n라인 13: FILE 객체를 역참조하지 말고 포인터 값을 대입합니다.",
  "rule.saqt.q.c.2013.name": "FILE 객체의 잘못된 사용",
  "rule.saqt.q.c.2032.description": "배열 타입 매개 변수에 static 키워드 사용 체커는 함수 선언에서 배열 타입 매개 변수의 중괄호 사이에 static 키워드를 사용한 경우를 검출합니다.\nC99 표준에서는 배열 매개 변수의 중괄호 사이에 static 키워드를 사용하여 컴파일러에게 해당 배열의 크기가 n 이상임을 알려줄 수 있습니다. 일부 컴파일러는 이 정보를 사용해 일부 프로세서에서 좀 더 효율적인 코드를 만들어 내기도 합니다. 하지만 해당 매개 변수에 크기가 n 미만인 배열을 전달하면 정의되지 않은 동작이 발생합니다. 이에 대해 컴파일러는 아무런 보장도 해주지 않으며 이런 상황이 발생하지 않도록 보장할 책임은 프로그래머에게 있습니다. 이로 인해 발생하는 버그는 디버그를 통해 발견하기가 어려우므로 처음부터 프로그래머가 많은 책임을 져야 하는 이러한 기능은 사용하지 않는 것이 좋습니다.\n배열 매개 변수 선언에 static 키워드를 사용하지 않습니다.",
  "rule.saqt.q.c.2032.example.0.dangerous": "라인 1: 배열 매개 변수 선언에 static 키워드를 사용했습니다. 인자로 전달될 배열의 크기가 항상 20 이상이라는 약속의 표현입니다.\n라인 7: 크기가 20 미만인 배열을 인자로 전달합니다. 이로 인해 예측 불가능한 실행 결과가 발생할 수 있습니다.",
  "rule.saqt.q.c.2032.example.0.safe": "라인 1: 함수의 배열 매개 변수 선언에 static 키워드를 사용하지 마십시오.",
  "rule.saqt.q.c.2032.name": "배열 타입 매개 변수에 static 키워드 사용",
  "rule.saqt.q.c.2039.description": "값 전달 호출 함수에서 매개 변수 수정 체커는 함수의 본체에서 전달받은 매개 변수에 값을 대입한 경우를 검출합니다.\nC에서 함수 호출은 기본적으로 값 전달 호출(Call-By-Value) 방식으로 이루어지므로 매개 변수에 값을 대입해도 그 결과가 함수 호출 시 전달한 인자에는 영향을 미치지 않습니다. C에 익숙하지 않은 프로그래머는 매개 변수를 수정하면 이 함수를 호출한 함수에서 전달했던 인자에 영향을 줄 것으로 착각할 수가 있고 이로 인해 발견하기 어려운 버그가 생길 수 있습니다.\n매개 변수에는 값을 대입하지 않습니다. 함수를 호출한 측의 인자에 영향을 미치고 싶다면 매개 변수 타입을 포인터 타입으로 바꾸고 함수를 호출할 때는 인자 변수를 직접 전달하는 대신 그 참조를 전달해야 합니다.",
  "rule.saqt.q.c.2039.example.0.dangerous": "라인 3: 매개 변수에 값을 대입합니다.\n라인 9: C에 익숙하지 않은 작성자는 x의 값이 0으로 바뀌길 기대할 수도 있지만 x의 값은 여전히 10입니다.",
  "rule.saqt.q.c.2039.example.0.safe": "라인 3: 함수를 호출한 쪽의 변수를 조작하고 싶다면 매개 변수 타입을 포인터로 선언하고 역참조 한 메모리에 값을 대입합니다.\n라인 9: 함수 f()를 호출할 때 x의 참조를 전달합니다. 함수가 반환된 후에는 x의 값이 0입니다.",
  "rule.saqt.q.c.2039.name": "값 전달 호출 함수에서 매개 변수 수정",
  "rule.saqt.q.c.2046.description": "inline 함수 선언에서 static 누락 체커는 inline 함수가 static으로 선언되지 않은 경우를 검출합니다.\ninline 함수는 항상 static으로 선언합니다.",
  "rule.saqt.q.c.2046.example.0.dangerous": "라인 1: inline 함수를 static 없이 정의하고 있습니다.",
  "rule.saqt.q.c.2046.example.0.safe": "라인 1: inline 함수에는 static 키워드를 함께 부여합니다.",
  "rule.saqt.q.c.2046.name": "inline 함수 선언에서 static 누락",
  "rule.saqt.q.c.2047.description": "키워드를 매크로 이름으로 사용 체커는 매크로 정의에서 키워드를 이름으로 지정한 경우를 검출합니다.\n키워드는 프로그래밍 언어의 문법 정의에서 미리 정의되어 있는 주요 단어들입니다.(auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while)\n매크로 이름을 키워드가 아닌 것으로 바꿉니다.",
  "rule.saqt.q.c.2047.example.0.dangerous": "라인 1: 매크로 이름으로 while 키워드를 사용했습니다.",
  "rule.saqt.q.c.2047.example.0.safe": "라인 1: 키워드가 아닌 것으로 매크로 이름을 고칩니다.",
  "rule.saqt.q.c.2047.name": "키워드를 매크로 이름으로 사용",
  "rule.saqt.q.c.2049.description": "한 줄 주석문을 여러 줄로 작성 체커는 `//`으로 시작되는 한 줄 주석문에 역슬래시를 사용한 줄 분할이 존재하는 경우를 검출합니다.\nC 언어에서 임의의 라인 맨 뒤에 역슬래시가 존재하면 겉으로 보기에는 줄 바꿈이 있는 것으로 보이지만 컴파일러는 해당 줄과 다음 줄을 한 줄처럼 해석합니다.\n여러 줄로 주석문을 작성하고 싶다면 여러 줄 주석문을 위한 방법 (`/* */`)을 사용합니다.",
  "rule.saqt.q.c.2049.example.0.dangerous": "라인 1: 한 줄 주석의 맨 끝에 역슬래시를 사용했습니다.\n라인 2: 위에 있는 역슬래시로 인해 이 라인까지 주석으로 해석됩니다.",
  "rule.saqt.q.c.2049.example.0.safe": "라인 1: 코드 구조 상 역슬래시가 실수로 쓰인 것으로 보이므로 역슬래시를 제거합니다.",
  "rule.saqt.q.c.2049.name": "한 줄 주석문을 여러 줄로 작성",
  "rule.saqt.q.c.2051.description": "불필요한 레이블 체커는 함수 내에서 사용되지 않는 레이블을 검출합니다.\n사용되지 않는 레이블이 남아 있으면 프로그램의 제어 흐름을 읽기 어렵게 만듭니다.\n사용되지 않는 레이블은 삭제합니다.",
  "rule.saqt.q.c.2051.example.0.dangerous": "라인 3: 레이블 second가 존재하지만 함수 내에서 사용되지 않았습니다.",
  "rule.saqt.q.c.2051.example.0.safe": "라인 3: 사용되지 않는 레이블은 삭제합니다.",
  "rule.saqt.q.c.2051.name": "불필요한 레이블",
  "rule.saqt.q.c.2053.description": "불필요한 태그 선언 체커는 프로젝트 어디에서도 사용되지 않는 태그 선언을 검출합니다.\n사용되지 않는 태그 선언이 존재하면 프로그램의 전체 구조를 읽기 어렵게 만들고, 추후 실수로 태그를 중복해서 선언했을 때 어느 쪽이 원래 의도였는지 파악하기 어렵게 만듭니다.\n사용되지 않는 태그는 삭제합니다.",
  "rule.saqt.q.c.2053.example.0.dangerous": "라인 3: state 열거형 태그가 선언되었지만 사용되지 않았습니다.\n라인 8: record_t 구조체 태그가 선언되었지만 사용되지 않고 이후 record1_t 타입만이 사용됩니다.",
  "rule.saqt.q.c.2053.example.0.safe": "라인 8: 사용되지 않는 태그를 선언하지 말고 record1_t 타입을 직접 정의하여 사용합니다.",
  "rule.saqt.q.c.2053.name": "불필요한 태그 선언",
  "rule.saqt.q.c.2054.description": "불필요한 매크로 선언 체커는 프로젝트 어디에서도 사용되지 않는 매크로 선언을 검출합니다.\n사용되지 않는 매크로 선언이 존재하면 추후 실수로 매크로를 중복해서 선언했을 때 어느 쪽이 원래 의도였는지 파악하기 어렵게 만듭니다.\n사용되지 않는 매크로는 삭제합니다.",
  "rule.saqt.q.c.2054.example.0.dangerous": "라인 1: DATA 매크로가 선언되었지만 사용되지 않았습니다.",
  "rule.saqt.q.c.2054.example.0.safe": "라인 1: 사용되지 않는 매크로는 삭제합니다.",
  "rule.saqt.q.c.2054.name": "불필요한 매크로 선언",
  "rule.saqt.q.c.2055.description": "외부 연결 식별자 중복 선언 체커는 링크 단계에서 다른 소스 파일에 선언된 동일한 식별자와 연결된 전역 식별자를 다른 범위에서 중복 선언한 경우를 검출합니다.\n전역적으로 선언되어 외부와 연결되는 식별자는 프로젝트 전체에서 중요한 의미를 갖는 식별자일 가능성이 높습니다. 이런 식별자를 내부에서 다시 중복 선언하면 코드의 이해를 방해할 수 있습니다.\n중복 선언된 식별자를 삭제하거나 이름을 변경합니다.",
  "rule.saqt.q.c.2055.example.0.dangerous": "라인 7: 다른 소스 파일에 선언된 count8 전역 변수가 함수의 로컬 변수로 중복 선언되었습니다.",
  "rule.saqt.q.c.2055.example.0.safe": "라인 7: 변수의 이름을 바꾸거나 삭제합니다.",
  "rule.saqt.q.c.2055.name": "외부 연결 식별자 중복 선언",
  "rule.saqt.q.c.2056.description": "초기화 리스트에서 부수 효과 발생 체커는 초기화 리스트의 초기값 계산식에 부수 효과가 존재하는 경우를 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n초기화 리스트에 상수만을 쓸 수 있었던 C90과는 달리 C99에서는 초기화 리스트에 임의의 식을 쓸 수 있습니다. 하지만 초기화 리스트 안에 있는 여러 초기값 사이의 계산 순서는 특별히 정의되어 있지 않으므로 컴파일러마다 다르게 해석할 수 있습니다. 따라서 초기화 리스트 안에서 메모리 상태 변화를 일으키는 식이 존재하면 그 중 어느 식이 먼저 실행되느냐에 따라 전체 결과가 달라질 수 있으므로 그 결과를 예측하기 힘듭니다.\n초기화 리스트에는 서로 간섭이 없이 결과값을 계산하기만 하는 식을 사용합니다.",
  "rule.saqt.q.c.2056.example.0.dangerous": "라인 7: 초기화 리스트에 부작용이 포함된 식이 있습니다. 값 계산 과정에서 x 변수의 상태가 변하므로 계산 순서에 따라 전체 결과가 달라질 수 있습니다.",
  "rule.saqt.q.c.2056.example.0.safe": "라인 7: 부작용이 포함된 식을 제거합니다.",
  "rule.saqt.q.c.2056.name": "초기화 리스트에서 부수 효과 발생",
  "rule.saqt.q.c.2057.description": "지정 초기화 리스트에서 부수 효과 발생 체커는 지정 초기화 리스트의 값 계산식에 부수 효과가 존재하는 경우를 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n지정 초기화 리스트의 초기값으로 임의의 식이 쓰일 수 있습니다. 그런데 초기화 리스트 안에 있는 여러 초기값 사이의 계산 순서는 특별히 정의되어 있지 않으므로 컴파일러마다 다르게 해석할 수 있습니다. 따라서 초기화 리스트 안에서 메모리 상태 변화를 일으키는 식이 존재하면 그 중 어느 식이 먼저 실행되느냐에 따라 전체 결과가 달라질 수 있으므로 그 결과를 예측하기 힘듭니다.\n지정 초기화 리스트에는 서로 간섭이 없이 결과값을 계산하기만 하는 식을 사용합니다.",
  "rule.saqt.q.c.2057.example.0.dangerous": "라인 5: 지정 초기화 리스트에 부작용이 포함된 식이 있습니다. 값 계산 과정에서 *p 역참조 메모리의 상태가 변하므로 계산 순서에 따라 전체 결과가 달라질 수 있습니다.",
  "rule.saqt.q.c.2057.example.0.safe": "라인 5: 부작용을 제거합니다.",
  "rule.saqt.q.c.2057.name": "지정 초기화 리스트에서 부수 효과 발생",
  "rule.saqt.q.c.2058.description": "지정 초기화 리스트에서 일부 항목 누락 체커는 지정 초기화 리스트에서 초기값이 주어지지 않은 일부 요소가 존재하는 경우를 검출합니다.\n배열이나 구조체 등의 객체를 초기화할 때 일부 항목에만 초기값을 부여하고 나머지는 내버려두면 초기화 이후의 코드에서 객체 전체가 이미 초기화된 것으로 잘못 간주한 채 객체를 사용할 수 있습니다. 이로 인해 프로그램이 잘못된 동작을 일으킬 수 있습니다.\n지정 초기화 리스트에서 모든 요소가 초기화되도록 수정합니다.",
  "rule.saqt.q.c.2058.example.0.dangerous": "라인 10: 구조체 mystruct의 필드 c가 초기화되지 않았습니다.",
  "rule.saqt.q.c.2058.example.0.safe": "라인 10: 모든 필드를 빠짐없이 초기화합니다.",
  "rule.saqt.q.c.2058.name": "지정 초기화 리스트에서 일부 항목 누락",
  "rule.saqt.q.c.2059.description": "특정 컴파일러 전용 확장 코드 사용 체커는 특정 환경 및 컴파일러에서만 사용할 수 있는 확장 코드를 사용한 경우를 검출합니다.\n특정 환경 및 컴파일러에서만 사용할 수 있는 확장 코드를 소스 코드에 포함시키면 해당 소스 코드의 이식성이 떨어집니다.\n최대한 언어의 공통 표준을 지켜서 이식성 높은 소스 코드를 작성합니다.",
  "rule.saqt.q.c.2059.example.0.dangerous": "라인 1: 함수에 강제로 inline 속성을 부여하고 있습니다. 이 속성은 gcc에서만 정상적으로 작동합니다.",
  "rule.saqt.q.c.2059.example.0.safe": "라인 1: 특정 컴파일러 전용 속성을 삭제합니다.",
  "rule.saqt.q.c.2059.name": "특정 컴파일러 전용 확장 코드 사용",
  "rule.saqt.q.c.2061.description": "전처리 구문 조건식의 결과값 제약 위반 체커는 전처리 구문의 #if 와 #elif의 표현식의 결과값이 0 또는 1이 아닌 경우를 검출합니다.\n전처리 구문의 조건식으로는 계산 결과가 정확히 0이나 1로 결정되는 식만 사용합니다.",
  "rule.saqt.q.c.2061.example.0.dangerous": "라인 6: #if 전처리문에 사용된 조건식의 계산 결과가 10입니다.",
  "rule.saqt.q.c.2061.example.0.safe": "라인 6: 전처리 구문 조건식의 계산 결과가 0 또는 1이 되도록 수정합니다.",
  "rule.saqt.q.c.2061.name": "전처리 구문 조건식의 결과값 제약 위반",
  "rule.saqt.q.c.2062.description": "지정 초기화 리스트에서 중복 초기화 체커는 지정 초기화 리스트에서 같은 항목이 두 번 이상 표시된 경우를 검출합니다.\n지정 초기화 리스트에서 한 항목은 한 번만 초기화합니다.",
  "rule.saqt.q.c.2062.example.0.dangerous": "라인 6: 같은 항목 [2]를 두 번 초기화했습니다.",
  "rule.saqt.q.c.2062.example.0.safe": "라인 6: 한 항목은 한 번만 초기화합니다.",
  "rule.saqt.q.c.2062.name": "지정 초기화 리스트에서 중복 초기화",
  "rule.saqt.q.c.2063.description": "금지된 fenv.h 헤더의 예외 처리 사용 체커는 fenv.h 헤더에 포함된 예외 처리 기능을 사용한 경우를 검출합니다.\n부동소수점 상태 플래그가 의도하지 않은 결과를 일으킬 수 있습니다. 특히 다중 스레드 환경에서는 더욱 주의가 필요합니다.\nfenv.h 헤더가 제공하는 예외 처리 기능을 사용하지 않습니다.",
  "rule.saqt.q.c.2063.example.0.dangerous": "라인 10: fenv.h에서 제공하는 예외 처리 기능인 feclearexcept() 함수를 사용했습니다.",
  "rule.saqt.q.c.2063.example.0.safe": "라인 10: 해당 함수를 호출하지 않습니다.",
  "rule.saqt.q.c.2063.name": "금지된 fenv.h 헤더의 예외 처리 사용",
  "rule.saqt.q.c.2064.description": "금지된 stdarg.h 헤더의 기능 사용 체커는 stdarg.h 헤더를 사용한 경우를 검출합니다.\nstdarg.h 헤더가 제공하는 가변 인자 함수 관련 기능은 정해진 규약을 완벽하게 지켜서 사용하지 않으면 프로그램의 스택을 침범하여 중대한 오류를 발생시킬 수 있습니다. 사용이 까다롭고 실수할 가능성이 높기 때문에 사용하지 않는 것을 권장합니다.\nstdarg.h 헤더를 사용하지 않습니다.",
  "rule.saqt.q.c.2064.example.0.dangerous": "라인 3: va_list를 사용했습니다.\n라인 7: va_arg를 호출했습니다.",
  "rule.saqt.q.c.2064.example.0.safe": "라인 3: 가변 인자 함수를 선언하지 않습니다.",
  "rule.saqt.q.c.2064.name": "금지된 stdarg.h 헤더의 기능 사용",
  "rule.saqt.q.c.2065.description": "너무 긴 함수 코드 체커는 지정된 제한 길이보다 많은 라인으로 작성된 함수를 검출합니다.\n각 함수의 최대 라인 수 제한을 옵션으로 지정할 수 있습니다.\n제한 길이보다 짧은 길이가 되도록 함수를 수정합니다. 어떤 함수가 지나치게 길다면 해당 함수가 너무 많은 기능을 수행하고 있을 가능성이 있으므로 더 작은 여러 개의 함수로 쪼갤 수 있는지 검토해봅니다.",
  "rule.saqt.q.c.2065.example.0.dangerous": "라인 1: 함수 big_function()이 너무 길게 작성되었습니다.",
  "rule.saqt.q.c.2065.example.0.safe": "라인 1: 함수를 더 작은 여러 개의 함수로 쪼개거나 코드를 정비하여 짧게 줄입니다.",
  "rule.saqt.q.c.2065.name": "너무 긴 함수 코드",
  "rule.saqt.q.c.2065.option.include_comment_null_stmt.description": "빈 줄이나 주석도 포함합니다.",
  "rule.saqt.q.c.2065.option.include_comment_null_stmt.name": "빈 줄이나 주석 포함 여부",
  "rule.saqt.q.c.2065.option.max_loc.description": "함수의 최대 라인 수를 설정합니다.",
  "rule.saqt.q.c.2065.option.max_loc.name": "함수의 최대 라인 수",
  "rule.saqt.q.c.2066.description": "너무 깊은 중첩 블록 체커는 중첩 블록 깊이가 지나치게 깊게 작성된 함수를 검출합니다.\n함수의 블록 깊이가 지나치게 깊으면 가독성이 떨어지고 유지보수가 어려워집니다.\n해당 함수가 너무 많은 기능을 수행하고 있을 가능성이 있으므로 더 작은 여러 개의 함수로 쪼갤 수 있는지 검토해봅니다. 혹은 깊은 블록이 없어질 수 있도록 코드를 리팩토링합니다.",
  "rule.saqt.q.c.2066.example.0.dangerous": "라인 5: if 구문 블록이 이중 블록(if, for) 안에 들어있습니다.",
  "rule.saqt.q.c.2066.example.0.safe": "라인 5: if 구문 블록을 제거해 중첩도를 낮춥니다.",
  "rule.saqt.q.c.2066.name": "너무 깊은 중첩 블록",
  "rule.saqt.q.c.2066.option.max_level.description": "최대 중첩도를 설정합니다.",
  "rule.saqt.q.c.2066.option.max_level.name": "최대 중첩도",
  "rule.saqt.q.c.2067.description": "함수의 상수 인자 제한 범위 위반 체커는 상수 인자를 전달하며 어떤 함수를 호출할 때 그 상수 인자가 사전에 지정된 범위를 초과한 경우를 검출합니다.\n각 함수 및 함수 인자별 상수 인자의 범위 제약을 옵션으로 지정할 수 있습니다.\n일부 함수는 특정 범위의 인자가 전달되었을 때에만 정상적으로 작동하도록 정의되어 있습니다. 예를 들어 수학에서 나누기는 두 번째 연산자가 0인 경우에 대해서 결과가 정의되지 않으며, 아크 사인 삼각 역함수는 -1 이상 1 이하의 실수에서만 제대로 정의됩니다. 프로그램에도 이와 같은 제약이 존재할 수 있으므로 이 체커를 통해 해당 제약을 준수했는지 검사할 수 있습니다.\n함수 호출에서 상수 인자를 범위 안에 맞게 조정합니다.",
  "rule.saqt.q.c.2067.example.0.dangerous": "라인 6: foo() 함수가 0 이상 1000 이하의 정수를 인자로 받도록 정의되어 있다면 -1은 잘못된 인자입니다.",
  "rule.saqt.q.c.2067.example.0.safe": "라인 6: 허용된 범위 내의 인자를 전달해야 합니다.",
  "rule.saqt.q.c.2067.name": "함수의 상수 인자 제한 범위 위반",
  "rule.saqt.q.c.2067.option.targets.description": "대상 함수를 적습니다. \"함수명,인덱스,범위시작-범위끝\" 순으로 표기합니다.인덱스는 0부터 시작합니다.",
  "rule.saqt.q.c.2067.option.targets.name": "대상 함수",
  "rule.saqt.q.c.2068.description": "너무 많은 실행 경로 체커는 함수 안에 실행 가능한 경로가 지나치게 많은 경우를 검출합니다.\n실행 가능한 경로 수의 제약을 옵션으로 지정할 수 있습니다.\n함수의 실행 가능 경로가 지나치게 많으면 가독성이 떨어지고 유지보수가 어려워집니다.\n해당 함수가 너무 많은 기능을 수행하고 있을 가능성이 있으므로 더 작은 여러 개의 함수로 쪼갤 수 있는지 검토해봅니다. 혹은 실행 가능한 경로의 수가 줄어들 수 있도록 코드를 리팩토링합니다.",
  "rule.saqt.q.c.2068.example.0.dangerous": "라인 2: switch 구문이 100개의 case 구문을 사용해 모든 경로가 일일이 정의되어 있으면 지나치게 실행 가능 경로가 많은 코드일 수 있습니다.",
  "rule.saqt.q.c.2068.example.0.safe": "라인 2: 리팩토링을 통해 서로 동일한 동작을 하는 case 구문을 묶어주면 실행 가능 경로를 줄일 수 있습니다.",
  "rule.saqt.q.c.2068.name": "너무 많은 실행 경로",
  "rule.saqt.q.c.2068.option.threshold.description": "설정한 수 이상의 실행 가능 경로가 있는 경우 이슈를 검출합니다.",
  "rule.saqt.q.c.2068.option.threshold.name": "경로 제한 수",
  "rule.saqt.q.c.2069.description": "불확실한 값으로 나누기 체커는 나누기 연산에서 불확실한 값으로 나누기를 수행한 경우를 검출합니다.\n이 체커는 0으로 나누기 등의 위험을 방지하기 위해 항상 명확한 값으로만 나누도록 강제합니다.\n나누기 연산의 두 번째 피연산자로 항상 명확한 값만 전달하도록 수정합니다.",
  "rule.saqt.q.c.2069.example.0.dangerous": "라인 2: 변수 p1의 값을 정확히 알 수 없습니다.",
  "rule.saqt.q.c.2069.example.0.safe": "라인 3: 변수 b의 값이 미리 결정되어 있으므로 나누기 연산이 허용됩니다.",
  "rule.saqt.q.c.2069.name": "불확실한 값으로 나누기",
  "rule.saqt.q.c.2070.description": "암시적 함수 선언 체커는 함수가 암시적으로 선언된 경우를 검출합니다.\n함수가 암시적으로 선언되면 컴파일러에 따라 반환 타입과 인자 타입을 임의로 지정하며 타입을 정확히 검사하지 않습니다. 따라서 함수를 정확한 방법으로 사용하지 않는 실수를 할 가능성이 높아집니다.\n함수를 항상 인자 타입과 반환 타입을 포함하여 명시적으로 사전에 선언한 후 사용합니다.",
  "rule.saqt.q.c.2070.example.0.dangerous": "라인 4: power() 함수가 암시적으로 선언되었습니다.",
  "rule.saqt.q.c.2070.example.0.safe": "라인 1: power() 함수를 명시적으로 선언한 후 사용해야 합니다.",
  "rule.saqt.q.c.2070.name": "암시적 함수 선언",
  "rule.saqt.q.c.2753.description": "읽기 전용 파일에 쓰기 시도 체커는 읽기 모드로 열린 파일에 쓰기를 시도한 경우를 검출합니다.\nC 표준에서 읽기 전용 스트림에 쓰기를 시도하는 것은 정의되지 않은 동작입니다. 어떠한 동작이 수행될지 예상할 수 없습니다.\n읽기 전용 파일에서는 읽기 동작만 수행합니다. 파일에 쓰기 동작을 할 필요가 있다면 읽기와 쓰기가 모두 가능한 모드로 파일을 엽니다.",
  "rule.saqt.q.c.2753.example.0.dangerous": "라인 4: tmp 파일을 읽기 모드로 열었습니다.\n라인 5: 읽기 전용으로 연 파일 객체에 대해 frpintf() 함수로 쓰기를 시도합니다.",
  "rule.saqt.q.c.2753.example.0.safe": "라인 4: 파일에 쓰기를 할 필요가 있다면 모드 인자로 \"rw\"를 전달하여 읽기와 쓰기가 모두 가능한 상태로 열어야 합니다.",
  "rule.saqt.q.c.2753.name": "읽기 전용 파일에 쓰기 시도",
  "rule.saqt.q.c.2764.description": "반복문 없이 cnd_wait 사용 체커는 반복문으로 제어하지 않고 cnd_wait() 함수를 호출하는 경우를 검출합니다.\n아직 필요한 리소스를 획득하지 못한 상태로 cnd_wait() 함수가 블로킹 상태에서 해제될 수도 있기 때문에 반복문을 통해 다시 한 번 확인한 후 다음 단계로 진행해야 합니다.\ncnd_wait() 함수를 반복문으로 제어하도록 합니다.",
  "rule.saqt.q.c.2764.example.0.dangerous": "라인 19: 반복문 없이 cnd_wait() 함수를 호출했습니다.",
  "rule.saqt.q.c.2764.example.0.safe": "라인 19: 반복문 안에서 cnd_wait() 함수를 호출했습니다.",
  "rule.saqt.q.c.2764.name": "반복문 없이 cnd_wait 사용",
  "rule.saqt.q.c.2765.description": "스레드 이중 해제 체커는 하나의 스레드에 join 및 detach 동작을 모두 수행하는 경우를 검출합니다.\njoin과 detach는 모두 호출되는 스레드의 리소스를 회수하는 역할을 하기 때문에 둘 중 하나만 사용해야 합니다. 예를 들어, A 스레드가 B 스레드에 join 동작을 수행하면 B 스레드의 작업이 종료될 때까지 기다렸다가 B 스레드의 리소스를 회수합니다. 반대로 B 스레드가 detach 동작을 수행하면 B 스레드를 호출한 A 스레드와 분리되어 B 스레드의 작업이 종료될 때 자동적으로 리소스를 회수합니다. A 스레드가 B 스레드에 join을 수행하는 동시에 B 스레드가 detach를 수행하면 B 스레드의 리소스가 두 번 회수됩니다. 하나의 스레드로부터 리소스를 두 번 이상 회수하면 어떤 결과가 발생할지 예측할 수 없습니다.\n하나의 스레드에서 join 혹은 detach 중 하나의 동작만을 수행하도록 합니다.",
  "rule.saqt.q.c.2765.example.0.dangerous": "라인 6: 스레드에 thrd_detach() 함수를 호출하여 detach 동작을 수행했습니다.\n라인 18: 같은 스레드에 thrd_join() 함수를 호출하여 join 동작을 수행했습니다.",
  "rule.saqt.q.c.2765.example.0.safe": "라인 6: 스레드에 join 동작만을 수행하고 detach 동작 함수를 호출하지 않도록 삭제합니다.",
  "rule.saqt.q.c.2765.name": "스레드 이중 해제",
  "rule.saqt.q.c.6479.description": "MISRA C:2012에서는 C11 표준에 추가된 언어 기능을 사용하지 말 것을 권고합니다. 이 기능들은 정의되지 않거나 명확하지 않은 동작을 유발할 수 있으며, 개발자가 예상하지 못한 동작을 할 수 있습니다.\n안전한 소프트웨어 개발을 위해 C11 표준에 추가된 기능의 사용을 피해야 합니다.",
  "rule.saqt.q.c.6479.example.0.dangerous": "라인 1, 5, 12: C11 표준에 추가된 기능이 사용되어 예상하지 못한 동작으로 인한 문제점이 발생할 수 있습니다.",
  "rule.saqt.q.c.6479.example.0.safe": "라인 1-12: C11 표준에 추가된 기능이 사용되지 않아 안전합니다.",
  "rule.saqt.q.c.6479.name": "추가된 언어 기능 사용 금지",
  "rule.saqt.q.c.6480.description": "<ctype.h> 파일의 함수들은 정수형의 인자를 받지만, 인자 값이 unsigned char의 범위 내에 있거나 EOF 값이어야만 정상적인 동작을 보장합니다. 만약 다른 값이 전달되면 정의되지 않은 동작을 유발할 수 있습니다.\n<ctype.h>에 정의된 함수들에 값을 전달할 때 unsigned char로 표현 가능하거나 EOF 값인지 확인합니다. 이를 위해 명시적으로 캐스팅하거나 조건문을 통해 값의 범위를 확인해야 합니다.",
  "rule.saqt.q.c.6480.example.0.dangerous": "라인 6: unsigned char 범위 외에 있는 값이 isalnum()에서 사용되어 위험합니다.",
  "rule.saqt.q.c.6480.example.0.safe": "라인 6: unsigned char 범위 내에 있는 값이 isalnum()에서 사용되어 안전합니다.",
  "rule.saqt.q.c.6480.name": "<ctype.h> 함수에 전달되는 값의 유효성 검사",
  "rule.saqt.q.c.6481.description": "표준 라이브러리 함수인 `memcpy`, `memmove`, `memcmp`에 전달되는 포인터 인자들은 서로 호환되는 타입이어야 한다고 명시하고 있습니다. 이 함수들은 포인터 타입에 대해 엄격한 타입 호환성을 요구하기 때문입니다. 호환되지 않는 타입의 포인터를 사용하면 예상치 못한 동작을 유발할 수 있습니다.\n`memcpy`, `memmove`, `memcmp` 함수에 전달되는 포인터 인자들은 동일한 타입이어야 합니다.",
  "rule.saqt.q.c.6481.example.0.dangerous": "라인 8: memcpy() 함수에 전달되는 포인터 인자들이 서로 다른 타입이라 위험합니다.",
  "rule.saqt.q.c.6481.example.0.safe": "라인 8: memcpy() 함수에 전달되는 포인터 인자들이 동일한 타입이어서 안전합니다.",
  "rule.saqt.q.c.6481.name": "포인터 인자 타입 호환성 확인",
  "rule.saqt.q.c.6482.description": "표준 라이브러리 함수인 `localeconv`, `getenv`, `setlocale`, `strerror` 에 의해 반환된 포인터는 `const`를 가진 포인터로만 사용되어야 한다고 명시하고 있습니다. 이 함수들은 내부적으로 정적 데이터를 반환하고, 데이터를 수정하려고 하면 예상하지 못한 동작을 유발할 수 있습니다. 따라서, 반환된 포인터를 수정 불가능한 `const` 포인터로 처리해야 합니다.\n`localeconv`, `getenv`, `setlocale`, `strerror` 에 의해 반환된 포인터는 `const`한정자를 가진 포인터로만 사용되어야 합니다.",
  "rule.saqt.q.c.6482.example.0.dangerous": "라인 10: strerror()에서 반환된 포인터가 const 한정자로 처리되지 않아 위험합니다.",
  "rule.saqt.q.c.6482.example.0.safe": "라인 10: strerror()에서 반환된 포인터가 const 한정자로 처리되어 안전합니다.",
  "rule.saqt.q.c.6482.name": "반환된 포인터 const 처리",
  "rule.saqt.q.c.6483.description": "표준 라이브러리 함수인 `asctime`, `ctime`, `gmtime`, `localtime`, `localeconv`, `getenv`, `setlocale`, `strerror`에 의해 반환된 포인터는 동일한 함수의 후속 호출 이후에 재사용하지 말 것을 권고합니다. 이러한 함수들은 내부적으로 정적 버퍼를 사용하여 데이터를 저장하며, 후속 호출 시 버퍼가 덮어써질 수 있습니다.\n`asctime`, `ctime`, `gmtime`, `localtime`, `localeconv`, `getenv`, `setlocale`, `strerror` 함수에서 반환된 포인터를 후속 호출 이후에 재사용하지 않고, 이전에 반환된 값을 복사하여 사용해야 합니다.",
  "rule.saqt.q.c.6483.example.0.dangerous": "라인 8: setlocale() 함수에서 반환된 데이터가 동일 함수 사용 이후에 재사용되어 위험합니다.",
  "rule.saqt.q.c.6483.example.0.safe": "라인 5-11: setlocale() 함수에서 반환된 데이터가 동일 함수 사용 이후에 재사용되지 않아 안전합니다.",
  "rule.saqt.q.c.6483.name": "반환된 포인터 재사용 금지",
  "rule.saqt.q.c.6484.description": "표준 라이브러리 함수로부터 반환된 값은 수정하거나 형변환하지 않은 상태에서 EOF와 비교해야 한다고 명시하고 있습니다. 이는 EOF 값을 반환할 수 있는 함수들의 값이 수정된 후 비교될 경우, 올바르게 EOF 조건을 판별할 수 없기 때문입니다.\nEOF 값을 반환할 수 있는 `getchar`, `fgetc`, `scanf`, `fscanf`, `getwc`, `fgetwc`, `ungetc` 함수의 반환 값을 형변환하지 않고 EOF 매크로와 비교합니다.",
  "rule.saqt.q.c.6484.example.0.dangerous": "라인 12: EOF 값을 반환할 수 있는 fscanf() 함수를 EOF 값과 비교하지 않고 사용하여 위험합니다.",
  "rule.saqt.q.c.6484.example.0.safe": "라인 12-15: EOF 값을 반환할 수 있는 fscanf() 함수를 EOF 값과 비교하고 사용하여 안전합니다.",
  "rule.saqt.q.c.6484.name": "반환된 EOF 데이터 비교",
  "rule.saqt.q.c.6485.description": "`errno` 설정 함수를 호출하면, 다음 함수 호출 이전에 `errno` 값을 `0`과 비교하여 오류 여부를 확인해야 합니다. `errno`는 오류가 발생하면 `0`이 아닌 값으로 설정되며, 설정 함수가 오류를 감지하지 않으면 값이 수정되지 않습니다.\n`errno` 설정 함수 호출 후, 다음 함수 호출 이전에 `errno` 값을 `0`과 비교하여 오류 여부를 확인합니다. 동일한 함수 내 모든 경로에서 이루어져야 하며, 검사하기 전에는 `errno`를 수정하지 않아야 합니다.",
  "rule.saqt.q.c.6485.example.0.dangerous": "라인 6: 기타 함수 사용 전에 errno의 값이 0인지 확인하지 않아 위험합니다.",
  "rule.saqt.q.c.6485.example.0.safe": "라인 10: 기타 함수 사용 전에 errno의 값이 0인지 확인하여 안전합니다.",
  "rule.saqt.q.c.6485.name": "errno 설정 후 오류 확인",
  "rule.saqt.q.c.6486.description": "`errno` 값을 검사할 때, 마지막으로 호출된 함수가 `errno`를 설정하는 함수여야 합니다. `errno`를 설정하는 함수만이 오류가 발생했을 때 `errno` 값을 설정합니다. 이외에 다른 함수들은 `errno`를 설정하지 않거나 예기치 않게 설정할 수 있습니다.\n`errno` 값을 검사하기 전에 마지막으로 호출된 함수가 `errno`를 설정하는 함수인지 확인합니다.",
  "rule.saqt.q.c.6486.example.0.dangerous": "라인 8: errno의 값을 검증하는 코드 직전의 함수가 errno 설정 함수가 아니어서 위험합니다.",
  "rule.saqt.q.c.6486.example.0.safe": "라인 7: errno를 설정하는 함수인 strtod()에서 errno를 설정하여 안전합니다.",
  "rule.saqt.q.c.6486.name": "잘못된 errno 검사",
  "rule.saqt.q.c.69.description": "불필요한 할당 체커는 할당을 수행했음에도 포함된 변수의 값을 변경시키지 않는 코드를 검출합니다.\n해당 오류는 변수를 할당할 때 해당 변수의 값을 변경하지 않는 경우에 발생합니다.\n구문을 제거하더라도 프로그램 출력에 영향을 미치지 않는 코드는 중복 코드로써 불필요합니다. 해당 코드가 의도적인지 아니면 오류로 인해 발생했는지 여부는 검토자에게 명확하지 않습니다. 의미 없는 계산을 수행하기 때문에 프로그램의 최적화를 위해서 해결해야 할 문제입니다.\n프로그램에 영향을 주지 않는 코드를 제거합니다.",
  "rule.saqt.q.c.69.example.0.dangerous": "라인 2: 변수 a에 2를 할당했습니다.\n라인 4: 변수 b에 a+2(=4)를 할당했습니다.\n라인 6: 변수 a의 값에 원래 2를 할당하였고, b의 값도 2이기 때문에 검출되었습니다.",
  "rule.saqt.q.c.69.example.0.safe": "라인 6: 재할당되는 값과 원래 변수의 값을 고려하여 불필요한 변수 할당을 하지 않도록 코드를 수정할 수 있습니다.",
  "rule.saqt.q.c.69.name": "불필요한 할당",
  "rule.saqt.q.c.7310.description": "C 언어에서 extern 으로 선언된 변수나 함수와 같은 외부 식별자들은 컴파일러가 인식하는 유의미한 문자를 기준으로 서로 구분되어야 합니다. C 표준은 외부 식별자의 최소 31자 까지를 유의미한 문자로 인식합니다. 만약 서로 다른 두 식별자가 31자 내에서 동일하다면 링커는 이를 구분하지 못해 이름 충돌이 발생할 수 있습니다.\n\n이러한 이름 충돌은 링커 오류를 일으키거나 예상치 못한 동작으로 이어지는 이식성 문제를 유발합니다. 따라서 외부 식별자들은 유의미한 문자 범위 내에서 명확히 구분되어야 합니다.\n외부 식별자는 다른 식별자와 구분될 수 있도록 충분히 다른 이름을 사용해야 합니다.  특히 31자 이내에서 명확하게 구분되는 이름을 사용하여 이름 충돌을 피해야 합니다.",
  "rule.saqt.q.c.7310.example.0.dangerous": "라인 2: 충돌의 원인이 되는 이전에 선언된 식별자입니다.\n라인 3: 라인2의 식별자와 31자 이내에서 동일한 이름을 가지므로 충돌이 발생합니다.",
  "rule.saqt.q.c.7310.example.0.safe": "라인 3: 이름을 다른 외부 식별자와 31자 내에서 구분이 되도록 작성하여 이름 충돌을 피해야 합니다.",
  "rule.saqt.q.c.7310.name": "외부 식별자 이름 충돌",
  "rule.saqt.q.c.7311.description": "C언어에서 동일한 범위에 선언된 내부 식별자들은 컴파일러가 인식하는 유의미한 문자를 기준으로 서로 구분되어야 합니다. C 표준은 내부 식별자의 최소 63자 까지를 유의미한 문자로 인식합니다. 만약 서로 다른 두 식별자가 63자 내에서 동일하다면 컴파일러는 이를 구분하지 못해 이름 충돌이 발생할 수 있습니다.\n\n이러한 이름 충돌은 컴파일러 오류를 일으키거나 예상치 못한 동작으로 이어지는 이식성 문제를 유발합니다. 따라서 내부 식별자들은 유의미한 문자 범위 내에서 명확히 구분되어야 합니다.\n내부 식별자는 같은 범위 내에서 다른 식별자와 구분될 수 있도록 충분히 다른 이름을 사용해야 합니다. 특히 63자 이내에서 명확하게 구분되는 이름을 사용하여 이름 충돌을 피해야 합니다.",
  "rule.saqt.q.c.7311.example.0.dangerous": "라인 3: 충돌의 원인이 되는 이전에 선언된 식별자입니다.\n라인 4: 라인2의 식별자와 63자 이내에서 동일한 이름을 가지므로 충돌이 발생합니다.",
  "rule.saqt.q.c.7311.example.0.safe": "라인 4: 이름을 다른 내부 식별자와 63자 내에서 구분이 되도록 작성하여 이름 충돌을 피해야 합니다.",
  "rule.saqt.q.c.7311.name": "내부 식별자 이름 충돌",
  "rule.saqt.q.c.7313.description": "C 언어에서 매크로와 식별자는 전처리기가 인식하는 유의미한 문자를 기준으로 서로 구분되어야 합니다. C표준은 매크로 및 식별자의 최소 63자 까지를 유의미한 문자로 인식합니다. 만약 매크로와 식별자가 63자 내에서 동일하다면 전처리기는 이를 구분하지 못해 이름 충돌이 발생할 수 있습니다. \n\n이러한 이름 충돌은 예상치 못한 텍스트 치환이나 컴파일 오류를 유발합니다. 따라서 매크로와 식별자는 유의미한 문자 범위 내에서 명확히 구분되어야 합니다.\n매크로와 식별자는 서로 구분될 수 있도록 충분히 다른 이름을 사용해야 합니다. 특히 63자 이내에서 명확하게 구분되는 이름을 사용하여 이름 충돌을 피해야 합니다.",
  "rule.saqt.q.c.7313.example.0.dangerous": "라인 2: 충돌의 원인이 되는 이전에 선언된 매크로입니다.\n라인 3: 라인 2의 매크로와 63자 이내에서 동일한 이름을 가지므로 충돌이 발생합니다.",
  "rule.saqt.q.c.7313.example.0.safe": "라인 3: 이름을 매크로와 63자 내에서 구분이 되도록 작성하여 이름 충돌을 피해야 합니다.",
  "rule.saqt.q.c.7313.name": "유의미한 문자 내 매크로 이름 충돌",
  "rule.saqt.q.c.7324.description": "_Noreturn 지정자는 함수가 어떤 경로로도 호출자에게 돌아오지 않음을 명시적으로 선언하는 역할을 합니다. 이러한 함수는 abort() 나 exit() 와 같이 프로그램의 제어 흐름을 비정상적으로 종료시키거나 다른 곳으로 옮길 때 사용됩니다. _Noreturn 함수에서 return 문을 사용하거나, 함수 본문의 끝에 도달하여 반환되는 것은 정의되지 않은 동작(Undefined behavior)를 유발합니다. 이는 개발자가 의도한 제어 흐름의 약속을 어기는 행위로 프로그램의 안정성을 심각하게 해칠 수 있습니다.\n_Noreturn 으로 선언된 함수가 호출자에게 반환될 가능성을 제거해야 합니다. return 문을 삭제하거나, abort() 또는 exit() 와 같이 반환되지 않음이 보장되는 함수를 호출하여 함수가 종료되도록 수정해야 합니다. 이것은 모든 제어 흐름에서 검토되어야 하며, 암시적으로 호출되는 return 문도 존재하지 않아야 합니다.",
  "rule.saqt.q.c.7324.example.0.dangerous": "라인 3: _Noreturn 으로 선언한 함수에서 명시적 반환 구문을 사용했습니다.\n라인 11: _Noreturn 으로 선언한 함수에서 암시적인 반환이 발생했습니다.",
  "rule.saqt.q.c.7324.example.0.safe": "라인 3: 반환이 이루어지지 않도록 종료 함수를 사용해야 합니다.\n라인 11: 모든 제어 흐름에서 반환이 이루어질 수 있는 가능성을 제거해야 합니다.",
  "rule.saqt.q.c.7324.name": "_Noreturn 으로 선언한 함수에서 반환",
  "rule.saqt.q.c.7326.description": "호출자에게 제어를 반환하지 않는 함수는 _Noreturn 함수 지정자를 명시해야 합니다. 이는 해당 함수가 종료 함수를 통해 프로그램을 종료하거나 무한 루프에 진입하는 등, 설계 의도상 반환하지 않음을 명확히 표현할 수 있습니다. _Noreturn 사용은 코드의 가독성과 유지보수성을 높이는 데 도움이 됩니다.\n\nmain() 함수는 이 규칙의 예외이며 C 표준에 따라 _Noreturn으로 선언할 수 없습니다.\n함수 내의 모든 제어 흐름이 반환하지 않는 경우, 해당 함수 선언 및 정의에 _Noreturn 지정자를 추가해야 합니다.",
  "rule.saqt.q.c.7326.example.0.dangerous": "라인 1: 반환하지 않는 함수에서 _Noreturn 지정자 선언이 누락되었습니다.",
  "rule.saqt.q.c.7326.example.0.safe": "라인 1: 모든 제어 흐름에서 반환하지 않는 함수일 경우 _Noreturn 지정자를 선언해야 합니다.",
  "rule.saqt.q.c.7326.name": "반환하지 않는 함수의 _Noreturn 선언 누락",
  "rule.saqt.q.c.7335.description": "제네릭 선택 표현식의 첫번째 인자는 제어 표현식에 해당하며 이곳에 전달된 수식은 컴파일 시점에 그 타입만 식별됩니다. 따라서 해당 수식 내에서 부수 효과(Side effect)가 있더라도 실제로는 연산이 수행되지 않습니다. 이로 인해 프로그래머가 의도한 부수 효과가 발생하지 않아 예측 불가능한 버그로 이어질 수 있습니다.\n_Generic의 제어 표현식에는 부수 효과(Side effect)가 없는 순수한 수식만 사용해야 합니다. 즉, 값을 변경하거나 함수를 호출하는 등의 부수 효과를 일으키는 연산자를 포함해서는 안 됩니다.",
  "rule.saqt.q.c.7335.example.0.dangerous": "라인 8: _Generic 인자에 부수 효과가 있는 수식을 사용했습니다.",
  "rule.saqt.q.c.7335.example.0.safe": "라인 9: _Generic 인자에 부수 효과가 있는 수식을 사용하지 않아야 합니다.",
  "rule.saqt.q.c.7335.name": "_Generic 인자에 포함된 부수 효과",
  "rule.saqt.q.c.7336.description": "제네릭 선택 표현식에는 최소 하나 이상의 명확한 타입(Explicit type)이 포함되어야 합니다. 만약 _Generic 의 연관 목록(Association list)에 default 기본값만 존재하고 다른 타입 명세가 없다면, 이는 제네릭 선택으로서 아무런 의미가 없습니다. default 항목은 항상 무조건 선택되므로 _Generic 표현식 자체가 불필요해지는 것입니다. \n\n_Generic의 사용 목적은 여러 타입 중에서 첫번째 인자로 전달된 타입과 일치하는 수식을 선택하는 것이므로, 최소 한 개 이상의 특정 타입을 명시해야 이 기능의 사용 의도에 부합한다고 볼 수 있습니다.\n제네릭 선택 표현식에 기본값인 default 항목 외에 최소 하나 이상의 특정 타입을 명세해야 합니다.",
  "rule.saqt.q.c.7336.example.0.dangerous": "라인 1: _Generic 타입 명세에 기본값만 존재하고 특정 타입에 대한 명세가 없습니다.",
  "rule.saqt.q.c.7336.example.0.safe": "라인 1: _Generic 타입 명세에 하나 이상의 명시적인 타입을 작성하여 이 기능의 의도에 맞게 사용해야 합니다.",
  "rule.saqt.q.c.7336.name": "기본값만 포함된 _Generic",
  "rule.saqt.q.c.7337.description": "제네릭 선택 표현식의 타입 명세를 작성하는 연관 목록(Association list)에는 제어 표현식의 타입과 절대 일치할 수 없는 부적합한 타입이 포함되어서는 안 됩니다. _Generic은 제어 표현식의 타입이 lvalue 변환을 거친 후의 타입과 일치하는 항목을 선택합니다. 이 변환 과정에서 const, volatile 과 같은 최상위 한정자는 제거되고 배열과 함수 타입은 포인터로 변환 됩니다.\n\n따라서 const int, int[] 와 같은 타입은 _Generic의 타입 명세로 사용될 수 없습니다. 이러한 부적합한 타입은 아무런 용도가 없으며 프로그래머의 실수이거나 해당 기능에 대해 정확하게 파악하지 못하고 있을 가능성이 있습니다.\n제네릭 선택 표현식의 타입 명세 작성시 lvalue 변환 이후의 타입과 일치할 수 있는 타입만 사용해야 합니다. 따라서 타입 명세시 최상위 한정자는 제거하고, 배열 타입은 포인터 타입을 대신 사용하며, 함수 타입은 함수 포인터 타입으로 명세해야 합니다. 또한 익명 구조체나 공용체는 명세할 수 없습니다.",
  "rule.saqt.q.c.7337.example.0.dangerous": "라인 2: _Generic의 연관 목록에 const와 같은 한정자를 명세했습니다.\n라인 3: _Generic의 연관 목록에 배열 타입을 명세했습니다.",
  "rule.saqt.q.c.7337.example.0.safe": "라인 2: 타입 명세 작성시 const와 같은 한정자는 제거해야 합니다.\n라인 3: 타입 명세 작성시 배열 타입은 포인터 타입으로 변환하여 작성해야 합니다.",
  "rule.saqt.q.c.7337.name": "_Generic의 부적합한 타입 명세",
  "rule.saqt.q.c.7353.description": "C언어에서 지정 초기화(Designated initializer)를 사용해 배열 객체를 초기화할 때, 배열의 크기를 명시적으로 지정하지 않으면 컴파일러가 초기화된 요소 중 가장 높은 인덱스를 기준으로 배열의 크기를 결정합니다. 여기서 지정 초기화란 C99 표준에 도입된 기능으로 배열이나 구조체를 초기화 할 때 특정 요소나 멤버에 직접 값을 할당하는 방식을 의미합니다.\n이와 같은 지정 초기화는 사용 방식에 따라 개발자가 의도하지 않은 크기의 배열이 생성될 수 있으며 이는 대규모 초기화 리스트에서 특히 더 혼란을 초래합니다. 배열의 크기를 명확히 명시하면 컴파일러가 경계를 벗어나는 초기화 시도를 잡아내어 잠재적인 런타임 오류나 버그를 방지하는 중요한 안전장치가 됩니다.\n지정 초기화를 사용하는 모든 배열 초기화에서 배열 선언 시 \\[] 안에 크기를 명시해야 합니다. 이는 코드를 더 명확하고 안전하게 만들며 다른 개발자가 코드를 읽을 때도 배열의 실제 크기를 즉시 파악할 수 있게 해줍니다.",
  "rule.saqt.q.c.7353.example.0.dangerous": "라인 2-3: 지정 초기화를 사용하여 초기화 한 배열에 명시적인 배열 크기가 누락되었습니다.",
  "rule.saqt.q.c.7353.example.0.safe": "라인 2-3: 지정 초기화를 사용한 배열의 크기를 명시적으로 지정해야 합니다.",
  "rule.saqt.q.c.7353.name": "배열 객체 지정 초기화 크기 누락",
  "rule.saqt.q.c.7364.description": "체인 지정자(Chained designator)는 구조체나 배열 내의 하위 객체에 접근하기 위해 a.b.c와 같이 여러 지정자를 연결하여 사용하는 방식이며, 구조체의 대상을 직접적으로 접근할 수 있는 명시적인 지정자의 한 종류입니다.\n\n초기화 리스트에 체인 지정자가 하나라도 사용되면, 모든 초기화는 명시적인 지정자를 사용해야 합니다. 체인 지정자와 순서 기반 초기화(Positional initializer)를 혼용하면 코드를 읽는 사람에게 혼란을 주고, 개발자의 의도를 모호하게 만듭니다. 특히 중첩된 구조체나 배열의 초기화에서 어떤 값이 어느 멤버에 할당되는지 파악하기 매우 어렵습니다.\n\n따라서 구조체를 초기화 할 때 일관된 초기화 방식을 사용하여 코드의 가독성을 높이고  잠재적인 버그를 방지할 필요가 있습니다.\n초기화 리스트에 체인 지정자를 사용했다면 모든 초기화 요소에 .member 또는 [index]와 같은 명시적인 지정자를 사용해야 합니다. 단 이것은 모든 필드를 초기화 하라는 의미는 아니며, 초기화 방법을 체인 지정자와 명시적인 지정자로 통일하라는 것입니다.\n\n만약 위치에 기반한 초기화가 필요한 경우에는 체인 지정자를 사용하지 않거나 별도의 중괄호 {}를 사용하여 하위 객체를 명확히 구분해야 합니다.",
  "rule.saqt.q.c.7364.example.0.dangerous": "라인 13: 구조체 초기화 시 체인 지정자와 순서 기반 초기화를 혼용했습니다.",
  "rule.saqt.q.c.7364.example.0.safe": "라인 13: 구조체 초기화시 체인 지정자를 사용했다면 나머지 항목도 명시적인 지정자를 사용하여 초기화 해야 합니다.\n라인 14: 혹은 순서 기반 초기화를 사용해야 할 경우 구조체 초기화에 대해서는 명확한 중괄호를 사용하여 구분 해 주어야 합니다.",
  "rule.saqt.q.c.7364.name": "체인 지정자와 순서 기반 초기화의 혼용",
  "rule.saqt.q.c.7385.description": "_Atomic 타입 한정자는 변수가 원자적으로 접근되어야 함을 명시합니다. 이는 멀티스레드 환경에서 변수에 대한 동시 접근 시 데이터 경쟁(Race condition)을 방지하여 메모리 손상을 막는 중요한 역할을 합니다. 만약 _Atomic 한정자를 제거하는 변환을 수행한다면 원자적 접근의 보장이 무효화되며, 이로 인해 여러 스레드가 동시에 해당 변수에 접근할 때 예상치 못한 동작이나 데이터 손상이 발생할 수 있습니다.\n어떠한 경우에도 _Atomic 한정자를 제거하는 변환을 수행하지 않도록 합니다.",
  "rule.saqt.q.c.7385.example.0.dangerous": "라인 4: 명시적 캐스팅을 통해 포인터가 가리키는 타입의 _Atomic 한정자를 제거했습니다.",
  "rule.saqt.q.c.7385.example.0.safe": "라인 3: 변수의 _Atomic 한정자를 제거하지 않고 그대로 사용하여 원자적 연산을 보장하고 타입읠 일광선을 확보해야 합니다.",
  "rule.saqt.q.c.7385.name": "형변환 시 _Atomic 자격 손실",
  "rule.saqt.q.c.7386.description": "C언어에서 _Atomic 한정자는 변수의 원자적 연산을 보장합니다. 하지만 불완전 타입(Incomplete type)인 void에 _Atomic 한정자를 적용하는 것은 잘못된 사용 방법입니다.\n구체적으로는, 포인터가 가리키는 대상에 원자성을 부여하는 void _Atomic* 과 같은 타입 선언은 포인터의 크기나 메모리 정렬에 대한 보증을 제공하지 않으므로 정의되지 않은 동작(Undefined behavior)을 유발하며 이식성을 저해합니다.\n이는 포인터 변수 자체에 원자성을 부여하는 _Atomic void* 형태와 명확히 다르며, _Atomic이 포인터가 가리키는 타입(void)에 적용된 경우만을 검출합니다.\n_Atomic 한정자는 완전 타입(Complete type)에만 적용해야 합니다. 즉 void _Atomic *와 같은 불완전 타입에 _Atomic 한정자를 사용하는 대신, 크기와 구조가 명확히 정의된 타입에 대해서만 _Atomic 한정자를 사용해야 합니다.",
  "rule.saqt.q.c.7386.example.0.dangerous": "라인 8: 완전 타입인 구조체의 주소를 불완전 타입인 void _Atomic* 변수에 대입하여 선언했습니다.\n라인 9: _Atomic int32_t 타입의 필드 주소를 void _Atomic* 변수에 대입하여 선언했습니다.",
  "rule.saqt.q.c.7386.example.0.safe": "라인 8: 구조체 주소를 동일한 완전 타입인 struct S* 에 올바르게 대입해야 합니다.\n라인 9: _Atomic int32_t 타입의 필드 주소를 올바른 포인터 타입에 대입해야 합니다.",
  "rule.saqt.q.c.7386.name": "부적절한 void _Atomic 타입 사용",
  "rule.saqt.q.c.7387.description": "C언어에서 _Atomic 한정자는 다중 스레드 환경에서 데이터 경쟁을 방지하고 변수에 대한 읽기/쓰기 연산이 원자적으로 이루어지도록 보장합니다. C 표준은 이러한 원자적 연산을 위해 atomic_store(), atomic_load()와 같은 전용 함수와 전체 객체에 대한 대입 연산자를 사용하도록 규정합니다.\n만약 _Atomic으로 선언된 구조체나 공용체의 멤버에 . 또는 -> 연산자를 사용하여 직접 접근할 경우 이는 원자성을 보장하는 보호 장치를 우회하는 행위가 됩니다. 이로 인해 해당 멤버에 대한 접근이 원자적으로 이루어지지 않아 데이터 경쟁이 발생하고 프로그램의 동작이 예측 불가능해질 수 있습니다.\n_Atomic으로 선언된 구조체나 공용체의 멤버에 직접 접근하는 것을 피해야 합니다. 대신 필드를 접근할 필요가 있을 경우 지역 변수에 복사본을 만들어 접근하는 것이 좋습니다. 예를 들면, 먼저 atomic_load() 함수를 사용해 원자적 객체 전체를 지역 변수에 복사해야 합니다. 그 후 지역 변수의 멤버를 안전하게 수정하고 atomic_store() 함수나 대입 연산자를 통해 수정된 값을 다시 원자적 객체에 저장해야 합니다. 이 과정을 통해 멤버에 대한 연산이 아닌 전체 객체에 대한 연산이 원자적으로 보장됩니다.",
  "rule.saqt.q.c.7387.example.0.dangerous": "라인 9: _Atomic으로 선언된 구조체의 멤버에 직접 접근했습니다.",
  "rule.saqt.q.c.7387.example.0.safe": "라인 9-12: _Atomic으로 선언된 구조체 멤버의 값을 업데이트하려면 지역 변수와 원자적 객체와 관련된 함수를 이용하여 업데이트해야 합니다.",
  "rule.saqt.q.c.7387.name": "원자적 객체 멤버 직접 접근 금지",
  "rule.saqt.q.c.7392.description": "가변 크기 배열(Variably-modified array)은 배열의 크기가 컴파일 시점이 아닌 프로그램 실행 중에 결정되는 배열을 의미합니다. 이러한 가변 크기 배열을 가리키는 포인터는 그 타입 자체에 동적인 크기 정보를 포함하게 됩니다.\n만약 두 개의 가변 크기 배열 포인터가 대입이나 비교 등에서 사용될 경우, 컴파일러는 이 포인터들이 가리키는 배열의 크기가 서로 같은지 확인할 수 없습니다. 이로 인해 타입 시스템의 안정성이 무너져 크기가 다른 배열 포인터 간의 대입이 발생할 경우 정의되지 않은 동작(Undefined Behavior)을 유발할 수 있습니다. 특히, 이러한 문법은 많은 컴파일러에서 지원하지 않아 이식성 문제를 야기합니다.\n포인터 타입을 포함하여 파라미터에 가변 크기 배열을 사용하지 않아야 합니다. 만약 일련의 길이를 가지는 배열 데이터를 함수에 전달하고자 한다면, 전통적인 방법인 포인터 전달과 배열 크기를 별도의 파라미터로 함께 전달하는 방법을 사용하는 것이 좋습니다.",
  "rule.saqt.q.c.7392.example.0.dangerous": "라인 1: 두 번째 파라미터를 가변 크기 배열을 가리키는 포인터 타입으로 선언했습니다.",
  "rule.saqt.q.c.7392.example.0.safe": "라인 1: 가변 크기 배열 포인터 대신, 전통적인 포인터 타입과 배열 크기를 파라미터로 전달하는 방식을 사용하는 것이 좋습니다.",
  "rule.saqt.q.c.7392.name": "허용되지 않은 가변 길이 배열 파라미터",
  "rule.saqt.q.c.7410.description": "<tgmath.h> 헤더에 정의된 타입 제네릭 매크로는 인수의 타입에 따라 자동으로 적절한 함수를 선택합니다. 이 기능이 올바르게 동작하려면 매크로에 전달되는 모든 인수는 반드시 본질적 산술 타입(Essentially arithmetic type)이어야 합니다. 본질적 문자나 열거형과 같은 비산술 타입을 사용하는 것은 규칙 위반이며 정의되지 않은 동작(Undefined behavior)을 유발합니다. \n\n이 때 컴파일러에 따라 수학 연산을 수행하는 타입 제네릭 매크로의 구현체가 함수인 경우가 있으므로, 실제 검출 과정에서는 함수를 대상으로 검사를 수행합니다.\n<tgmath.h> 타입 제네릭 매크로에 전달되는 모든 인수가 정수, 부동 소수점과 같은 본질적 산술 타입을 가지도록 해야 합니다. 본질적 문자, 열거형, 비산술 타입을 사용할 경우, 매크로 호출 전에 명시적 형변환을 통해 산술 타입으로 변환하는 것이 좋습니다.",
  "rule.saqt.q.c.7410.example.0.dangerous": "라인 6: 타입 제네릭 매크로에 본질적 문자 타입을 인자로 전달했습니다.\n라인 7: 타입 제네릭 매크로에 열거형 타입을 인자로 전달했습니다.",
  "rule.saqt.q.c.7410.example.0.safe": "라인 6: 타입 제네릭 매크로에 본질적 산술 타입을 전달하여 매크로가 올바르게 작동하도록 해야 합니다.\n라인 8: 혹은 비 산술 타입을 사용하기 전에 명시적 형변환을 통해 산술 타입으로 변환한 뒤 타입 제네릭 매크로에 전달해야 합니다.",
  "rule.saqt.q.c.7410.name": "타입 제네릭 매크로의 부적절한 인자 타입",
  "rule.saqt.q.c.7411.description": "<tgmath.h>에 정의된 pow, hypot, fmax 등 두 개 이상의 인자를 받는 타입 제네릭 매크로를 사용할 때, 모든 인자는 정수 승격(Integer promotion)이 적용된 후에도 동일한 타입을 가져야 합니다. \n\n인자들의 타입이 서로 다를 경우 매크로가 최종적으로 어떤 정밀도의 함수를 선택할지 불분명해지면서 예상치 못한 정밀도 손실이 발생할 위험이 있습니다. 이는 특히 확장된 실수 타입을 사용하는 플랫폼에서 흔히 발생하며, 코드의 명확성을 해치고 잠재적인 데이터 손실을 유발합니다.\n다중 인자 타입 제네릭 매크로에 전달되는 모든 인자가 정수 승격 후 동일한 타입을 가지도록 명시적으로 조정해야 합니다.\n\n구체적으로, 정수형은 작은 범위의 경우 승격 규칙에 따라 자동으로 int 또는 unsigned int로 승격되므로 혼합하여 사용하여도 문제 없으나, 정수 승격 후 long 타입과는 충돌할 수 있으므로 혼합하여 사용할 수 없습니다.\n\n실수형은 float 및 double과 같이 각 실수형 타입은 혼합하여 사용할 수 없습니다. 두가지 케이스 모두 더 넓은 범위의 타입으로 명시적 형변환 후 사용해야 합니다.",
  "rule.saqt.q.c.7411.example.0.dangerous": "라인 9-10: 타입 제네릭 매크로에 전달된 인자들이 정수 승격 후 동일한 표준 타입을 갖지 않습니다.",
  "rule.saqt.q.c.7411.example.0.safe": "라인 9-10: 타입 제네릭 매크로에 전달하는 인자들은 명시적 형변환을 통해 동일한 표준 타입을 가지도록 해야 합니다.",
  "rule.saqt.q.c.7411.name": "다중 인자 타입 제네릭 매크로의 타입 불일치",
  "rule.saqt.q.c.7412.description": "C11 표준에서 다중 스레드 환경의 데이터 경쟁을 방지하기 위해 제공하는 원자적(Atomic) 연산은 메모리 동기화 순서를 지정하는 memory_order 열거형을 사용합니다.\n\n이 중에서 순차적 일관성은 C표준에서 동작이 완전하게 정의되고 플랫폼 간 이식성을 보장하는 유일한 메모리 순서입니다.\n\n다른 동기화 순서는 하드웨어 아키텍처 및 컴파일러에 따라 동작이 달라지거나 직관적이지 않은 동작을 유발할 수 있습니다. 따라서 메모리 동기화 순서와 관련된 원자적 함수를 사용할 때 이점을 충분히 유의해야 합니다.\n메모리 동기화 순서와 관련된 원자적 함수를 사용할 때는 기본 함수를 사용하거나, 명시적인 순서 지정이 필요한 경우 순차적 일관성 동작을 지정하는 memory_order_seq_cst 열거형 값을 사용해야 합니다. \n\n이는 모든 메모리 동기화 순서가 순차적 일관성으로 동작하도록 보장하는 유일한 방법입니다.",
  "rule.saqt.q.c.7412.example.0.dangerous": "라인 5: 원자적 연산을 수행하는 함수에 순차적 일관성이 아닌 메모리 순서를 지정했습니다.",
  "rule.saqt.q.c.7412.example.0.safe": "라인 6: 원자적 연산을 수행하는 함수에 순차적 일관성을 지정하는 memory_order_seq_cst 열거형 값을 사용해야 합니다.\n라인 8: 혹은 기본적으로 순차적 일관성으로 동작하는 원자적 연산을 수행하는 함수를 사용해야 합니다.",
  "rule.saqt.q.c.7412.name": "메모리 동기화 순서 제한 위반",
  "rule.saqt.q.c.7416.description": "제네릭 선택 표현식은 _Generic 키워드를 사용하며, C11 표준에서 매크로의 인자 타입을 컴파일 타임에 질의하는 목적으로 설계되었습니다.\n\n이러한 제네릭 선택 표현식의 경우 매크로 인수의 타입을 연결 목록과 비교할 때 암시적 타입 변환을 시도하지 않습니다.\n\n따라서 연결 목록에 포인터 타입이 포함된 경우 개발자가 적절한 암시적 변환이 일어날 것이라고 잘못 기대하면 의도와 달리 default 항목이 선택될 수 있습니다. 이것은 예측 불가능한 동작을 유발하는 오류의 원인이 될 수 있습니다.\n_Generic의 선택 표현식에 포인터 타입이 포함되어 있고, 연결 목록에 다른 포인터 타입이 있다면 반드시 삼항 연산자를 사용하여 명시적인 변환 래퍼를 작성하기 바랍니다.\n\n이러한 작성 방방법을 통해 선택 표현식의 타입을 연결 목록에 있는 타입으로 강제 변환하는 것으로 _Geneirc의 엄격한 타입 일치 규칙을 준수할 수 있습니다.",
  "rule.saqt.q.c.7416.example.0.dangerous": "라인 11: 매크로 호출 시, 제어 표현식이 명시적 변환 래퍼 없이 사용되어 포인터 타입 암시적 변환에 의존합니다.",
  "rule.saqt.q.c.7416.example.0.safe": "라인 13: 매크로 호출 시, 제어 표현식에 삼항 연산자를 사용한 변환 래퍼를 작성하여 타입 변환의 모호성을 제거해야 합니다.",
  "rule.saqt.q.c.7416.name": "_Generic의 포인터 암시적 변환 의존 금지",
  "rule.saqt.q.c.7417.description": "제네릭 선택 표현식은 _Generic 키워드를 사용하며, C11 표준에서 매크로의 인자 타입을 컴파일 타임에 질의하는 목적으로 설계되었습니다.\n\n이러한 제네릭 선택 표현식을 사용하면 컴파일러는 제어 표현식의 표준 타입(Standard Type)을 기준으로 연결 목록의 타입을 선택합니다. 하지만 이러한 동작은 코드의 의미적 안정성을 해칠 수 있는 본질적 타입(Essential Type)의 일관성 문제를 야기합니다.\n\n예를 들어 char 나 short 와 같은 작은 정수 타입이나 열거형 타입이 제어 표현식에서 사용될 경우, 정수 승격으로 인해 의도와 다른 타입이 선택될 수 있습니다. 이로 인해 _Generic 사용 시 개발자가 기대하지 않은 표준 타입이 선택되는 예기치 않은 동작이 발생할 수 있습니다.\n_Generic 제어 표현식에 int 보다 작은 정수 타입이나 열거형 타입을 직접 사용하지 말아야 합니다. 대신, 개발자가 원하는 타입이 선택되도록 제어 표현식의 타입을 미리 명시적으로 변환해야 합니다.",
  "rule.saqt.q.c.7417.example.0.dangerous": "라인 11-13: 제어 표현식의 본질적 타입과 정수 승격으로 인한 표준 타입이 달라 의도와 다른 타입이 선택될 수 있습니다.",
  "rule.saqt.q.c.7417.example.0.safe": "라인 11-13: 제어 표현식을 개발자가 매칭되기를 원하는 타입으로 명시적 형변환 해야 합니다.",
  "rule.saqt.q.c.7417.name": "_Generic 제어 표현식의 본질적 타입 불일치",
  "rule.saqt.q.c.7420.description": "제네릭 선택 표현식은 _Generic 키워드를 사용하며, C11 표준에서 매크로의 인자 타입을 컴파일 타임에 질의하는 목적으로 설계되었습니다.\n\n이러한 _Generic 사용시 주의할 점은, 제어 표현식에 전달된 인자가 _Generic의 연결 목록 중 어떤 항목을 선택하느냐에 따라 평가되는 횟수가 달라지면 안 된다는 것입니다.\n\n예를 들어 인자에 사이드 이펙트(Side Effect)가 포함된 경우, 선택된 항목 별로 평가 횟수가 다르다면 프로그램의 동작이 예측 불가능해집니다.\n_Generic의 제어 표현식에 전달된 인자가 어떤 연결 목록을 선택하던 인자가 실행되는 총 횟수가 항상 일정해야 합니다.\n\n이를 위하여 _Generic 의 모든 연결 목록에 인자를 일관되게 포함 시키거나, 매크로에서 _Generic 구문이 끝난 후 외부에 인자를 배치하도록 해야 합니다.",
  "rule.saqt.q.c.7420.example.0.dangerous": "라인 4: _Generic 의 제어 표현식의 평가 회수가 연결 목록 중 선택된 항목에 따라 다릅니다.\n라인 9: 제어 표현식에 전달된 인자가 func_float() 함수에 전달되어 1번 평가됩니다.\n라인 10: 제어 표현식에 전달된 인자가 평가되지 않습니다.",
  "rule.saqt.q.c.7420.example.0.safe": "라인 4, 8: _Generic의 모든 연결 목록에서 인자를 동일하게 사용하거나, _Generic 외부에서 인자를 평가하도록 코드를 작성하여 평가 횟수가 항상 일정하도록 해야 합니다.",
  "rule.saqt.q.c.7420.name": "_Generic 인자 평가 회수 불일치",
  "rule.saqt.q.c.7421.description": "제네릭 선택 표현식은 _Generic 키워드를 사용하며, C11 표준에서 매크로의 인자 타입을 컴파일 타임에 질의하는 목적으로 설계되었습니다.\n\n이러한 _Generic의 연결 목록에서 다른 항목에 매칭되지 않았을 때, default 키워드를 사용하여 기본적으로 매칭되는 항목을 지정할 수 있습니다.\n\n다만, 기본 항목의 위치는 코드의 가독성과 구조의 명확성을 높이기 위해 어느정도 제한할 필요가 있습니다. 예를 들어 기본 항목이 목록 중간에 위치하면 _Generic 의 구조를 파악하는데 어려움이 생기고 코드 분석시 혼란을 유발할 수 있습니다.\n_Generic 구문에서 기본 항목이 사용되었을 때 반드시 연결 목록의 첫 번째 항목이나 마지막 항목에 배치해야 합니다. 만약 기본 항목이 필요없다면 아예 생략하는 것도 허용합니다.",
  "rule.saqt.q.c.7421.example.0.dangerous": "라인 3: _Generic의 기본 항목이 연결 목록의 첫 번째나 마지막에 위치하지 않습니다.",
  "rule.saqt.q.c.7421.example.0.safe": "라인 4: _Generic의 기본 항목은 연결 목록의 첫 번째나 마지막에 위치해야 합니다.",
  "rule.saqt.q.c.7421.name": "_Generic 의 잘못된 기본 항목 위치",
  "rule.saqt.q.ccpp.100.description": "금지된 인자 사용 체커는 옵션에 지정된 함수를 호출할 때 사용이 금지된 인자를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 금지 인자 이름을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 사용 금지 인자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.100.example.0.dangerous": "라인 5: 분석 대상인 Func() 함수를 정의했습니다.\n라인 6: 분석 대상인 memcpy_API01() 함수를 호출했습니다. API01_COUNTER 인자를 사용하므로 검출됩니다.",
  "rule.saqt.q.ccpp.100.example.0.safe": "라인 5: 분석 대상인 Func() 함수를 정의했습니다.\n라인 6: 분석 대상인 memcpy_API01() 함수를 호출했습니다. API01_COUNTER 인자 대신 \"test\"가 인자를 사용하므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.100.name": "금지된 인자 사용",
  "rule.saqt.q.ccpp.100.option.call_param_should_not_be_name.description": "반드시 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.ccpp.100.option.call_param_should_not_be_name.name": "사용하지 말아야 할 인자",
  "rule.saqt.q.ccpp.100.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.100.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.100.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.100.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.ccpp.100.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.saqt.q.ccpp.100.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.ccpp.100.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.100.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.ccpp.101.description": "부적절한 문자열 인자의 값 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 문자열이 아닌 값을 전달하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 문자열 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수에 포함된 특정 위치의 인자에 문자열을 입력해야 합니다.",
  "rule.saqt.q.ccpp.101.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: 분석 대상인 memcpy_API02() 함수를 호출했습니다. 두 번째 인자가 문자열이 아닌 변수 y입니다.",
  "rule.saqt.q.ccpp.101.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: 분석 대상인 memcpy_API02() 함수를 호출했습니다. 두 번째 인자가 문자열이므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.101.name": "부적절한 문자열 인자의 값",
  "rule.saqt.q.ccpp.101.option.call_param_should_be_string.description": "문자열이 위치해야 할 함수와 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.ccpp.101.option.call_param_should_be_string.name": "문자열이 위치해야 할 함수와 파라미터 인덱스",
  "rule.saqt.q.ccpp.101.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.ccpp.101.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.ccpp.101.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.101.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.ccpp.101.option.function_target.description": "대상이 되는 함수를 설정합니다.",
  "rule.saqt.q.ccpp.101.option.function_target.name": "대상이 되는 함수",
  "rule.saqt.q.ccpp.101.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.101.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.ccpp.102.description": "명시되지 않은 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 옵션에 명시되어 있는 인자를 사용하지 않은 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 인자 위치와 인자 이름을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수의 특정 위치의 인자에 지정된 인자를 사용해야 합니다.",
  "rule.saqt.q.ccpp.102.example.0.dangerous": "라인 4: 분석 대상인 Func() 함수를 정의했습니다.\n라인 5: memcpy_API03() 함수를 호출했습니다. 두 번째 인자가 옵션에 명시된 인자가 아니므로 검출됩니다.",
  "rule.saqt.q.ccpp.102.example.0.safe": "라인 4: 분석 대상인 Func() 함수를 정의했습니다.\n라인 5: memcpy_API03() 함수를 호출했습니다. 두 번째 인자가 옵션에 명시된 인자이므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.102.name": "명시되지 않은 인자 사용",
  "rule.saqt.q.ccpp.102.option.call_param_should_be_name.description": "반드시 사용해야 될 파라미터 이름과 인덱스를 설정합니다.",
  "rule.saqt.q.ccpp.102.option.call_param_should_be_name.name": "반드시 사용해야 될 파라미터 이름과 인덱스",
  "rule.saqt.q.ccpp.102.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.ccpp.102.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.ccpp.102.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.102.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.ccpp.102.option.function_target.description": "대상이 되는 함수를 설정합니다.",
  "rule.saqt.q.ccpp.102.option.function_target.name": "대상이 되는 함수",
  "rule.saqt.q.ccpp.102.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.102.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.ccpp.103.description": "부적절한 가변 인자 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치를 정수 상수로 정의하지 않거나, 해당 값만큼 추가적인 인자가 존재하지 않는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 상수 인자 위치, 다음 인자의 수를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 위치에 정수 상수 인자를 사용하고, 해당 값만큼 추가적인 개수의 인자가 존재해야 합니다.",
  "rule.saqt.q.ccpp.103.example.0.dangerous": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: Fun_API04_call() 함수를 호출했습니다. 첫 번째 상수 인자 1 뒤에 두 개의 인자가 있습니다.",
  "rule.saqt.q.ccpp.103.example.0.safe": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: Fun_API04_call() 함수를 호출했습니다. 첫 번째 상수 인자 1 뒤에 한 개의 인자가 있으므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.103.name": "부적절한 가변 인자",
  "rule.saqt.q.ccpp.103.option.call_param_should_be_deciaml.description": "숫자를 사용해야 하는 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.ccpp.103.option.call_param_should_be_deciaml.name": "숫자를 사용해야 하는 파라미터 인덱스",
  "rule.saqt.q.ccpp.103.option.call_param_value_equal_next_param_count.description": "해당 인덱스에 있는 파라미터의 숫자 만큼 다음 인자가 와야합니다.",
  "rule.saqt.q.ccpp.103.option.call_param_value_equal_next_param_count.name": "가변 인자 갯수 표현 파라미터 인덱스",
  "rule.saqt.q.ccpp.103.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.103.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.103.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.103.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.ccpp.103.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.saqt.q.ccpp.103.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.ccpp.103.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.103.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.ccpp.1035.description": "암시적 실수 업캐스팅 체커는 실수형 복합 수식절이 암시적으로 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1035.example.0.dangerous": "라인 4: 실수형 타입인 복합 수식절에서 암시적으로 더 큰 타입의 실수형으로 캐스팅되었습니다.",
  "rule.saqt.q.ccpp.1035.example.0.safe": "라인 4: 실수형 타입인 복합 수식절을 더 큰 타입의 실수형으로 캐스팅할 경우에는 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1035.name": "암시적 실수 업캐스팅",
  "rule.saqt.q.ccpp.1036.description": "캡슐화되지 않은 어셈블리 언어 체커는 따로 함수로 분리되지 않고 사용하는 어셈블리어 코드를 검출합니다.\n인라인 어셈블리어의 사용은 코드의 이식성을 저해할 수 있으므로 가급적 피해야 합니다.\n만약 꼭 필요할 경우 어셈블리어 부분은 특정 함수로 캡슐화하도록 합니다.",
  "rule.saqt.q.ccpp.1036.example.0.dangerous": "라인 3: 인라인 어셈블리어 부분이 추상화 되지 않았습니다.",
  "rule.saqt.q.ccpp.1036.example.0.safe": "라인 1: 인라인 어셈블리어 부분을 함수로 캡슐화 하도록 합니다.",
  "rule.saqt.q.ccpp.1036.name": "캡슐화되지 않은 어셈블리 언어",
  "rule.saqt.q.ccpp.1036.option.allow_asm_macro.description": "체크시 asm 매크로를 허용합니다.",
  "rule.saqt.q.ccpp.1036.option.allow_asm_macro.name": "asm 매크로 허용",
  "rule.saqt.q.ccpp.1039.description": "너무 긴 식별자 체커는 대상이 되는 식별자의 길이가 31자를 넘어서는 경우를 검출합니다.\n대상 식별자는 태그, 변수 이름, 타입, 필드, 매크로입니다.\nISO 표준에서는 코드의 이식성을 보장하기 위해 식별자를 처음 31자에서 구별하도록 명시하고 있습니다. 즉, 31자를 넘어서는 식별자를 다른 환경에서 컴파일하는 경우 이식성에 문제가 발생할 수 있습니다.\n식별자를 31자 이하로 명명하도록 합니다.",
  "rule.saqt.q.ccpp.1039.example.0.dangerous": "라인 1: 구조체 태그 이름이 31자를 초과했습니다.\n라인 3: 구조체 필드 이름이 31자를 초과했습니다.\n라인 7 : typedef 이름이 31자를 초과했습니다.\n라인 11: 지역 변수 이름이 31자를 초과했습니다.",
  "rule.saqt.q.ccpp.1039.example.0.safe": "라인 1: 구조체 태그 이름을 31자 이하로 수정합니다.\n라인 3: 구조체 필드 이름을 31자 이하로 수정합니다.\n라인 7: typedef 이름을 31자 이하로 수정합니다.\n라인 11: 지역 변수 이름을 31자 이하로 수정합니다.",
  "rule.saqt.q.ccpp.1039.name": "너무 긴 식별자",
  "rule.saqt.q.ccpp.1044.description": "네임스페이스 안에서 중복된 이름 체커는 어떠한 이름 공간에 속한 식별자가 다른 이름 공간에 속한 식별자와 이름이 같은 경우를 검출합니다.\n이름 공간이 다를 경우 실제로 두 공간에 존재하는 이름이 겹치거나 가려지는 현상이 발생하지는 않습니다. 하지만 이 체커는 그것과 관계 없이 이름 공간이 다른 경우에도 식별자의 이름이 같은 경우를 검출합니다. 다만 검출 규칙 중에서 구조체와 공용체의 필드 이름은 예외로 하도록 합니다.\n구조체와 공용체의 필드를 제외하고, 서로 다른 이름 공간에 속했더라도 동일한 식별자 이름을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1044.example.0.dangerous": "라인 2: sourceTest란 이름으로 구조체를 선언했습니다.\n라인 8: sourceTest란 이름으로 구조체를 선언했습니다. 이 이름은 라인 2에서 이미 사용한 이름입니다.",
  "rule.saqt.q.ccpp.1044.example.0.safe": "라인 8: 다른 이름 공간에 있는 식별자더라도 동일한 식별자를 다시 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1044.name": "네임스페이스 안에서 중복된 이름",
  "rule.saqt.q.ccpp.1046.description": "부적절한 타입으로 할당 체커는 변수에 값을 대입할 경우 서로 타입이 다른 수식을 검출합니다.\n구체적으로 기본 타입에 대해 대입 관련 연산을 수행하는 경우 다음과 같은 조건을 검출합니다.\n연산자 양쪽 항의 부호가 다르고 대입되는 값이 변경될 수 있는 경우 \n좌측항이 정수형 타입이고 우측항이 실수형 타입인 경우\n좌측항의 기본 타입보다 우측항의 기본 타입의 범위가 넓은 경우 (단, 정수 상수의 경우 컴파일러에 의한 타입 판단 문제로 인해 검출 대상에서 제외함)\nboolean 타입에 true 혹은 false를 제외한 정수를 대입한 경우\n값을 대입하는 변수와 값의 타입이 서로 다른 경우 의도했던 값과 다른 값이 들어갈 수 있습니다. 이러한 문제는 알아채기 힘든 오류를 발생시킵니다.\n대입하는 변수와 값의 타입을 동일하게 유지하도록 합니다. 대입하려는 변수의 타입을 변경하거나 값의 접미사를 변수에 맞게 조정하도록 합니다.",
  "rule.saqt.q.ccpp.1046.example.0.dangerous": "라인 5: 연산자 양쪽 항의 부호가 다르고 대입되는 값이 변경될 수 있습니다.\n라인 6: 좌측항이 정수형 타입이고 우측항이 실수형 타입입니다.\n라인 7: 좌측항의 기본 타입보다 우측항의 기본 타입의 범위가 넓습니다.\n라인 8: boolean 타입에 true 혹은 false를 제외한 정수를 대입했습니다.",
  "rule.saqt.q.ccpp.1046.example.0.safe": "라인 5: 해당 값을 반드시 대입해야 하는 경우 명시적인 캐스팅을 사용합니다.\n라인 6: 정수형 타입에는 정수형 값을 대입하도록 합니다.\n라인 7: 좌측항의 기본 타입보다 우측항의 기본 타입의 범위를 좁게 만들도록 합니다.\n라인 8: boolean 타입에 true 혹은 false를 대입하도록 합니다.",
  "rule.saqt.q.ccpp.1046.name": "부적절한 타입으로 할당",
  "rule.saqt.q.ccpp.1047.description": "대체된 문자 타입 변수 체커는 부호 표시가 없는 일반 char 타입의 변수에 숫자를 대입하거나 비교하는 수식을 검출합니다.\nplain char 타입은 컴파일러에 따라 unsigned char 혹은 signed char와 동등한 타입으로 동작합니다. 단, 컴파일러에 따라 달라질 수 있습니다. 즉, plain char 타입에 숫자를 사용하면 컴파일러에 따라 값이 변경될 수 있습니다. 따라서 plain char 타입에는 문자를 사용하고, unsigned char나 signed char에는 숫자를 사용하는 것이 좋습니다.\nplain char 타입에는 숫자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1047.example.0.dangerous": "라인 1: 매개 변수 foo를 plain char 타입으로 정의했습니다.\n라인 10: 문자 대신 정수 상수 111을 사용했습니다. 이 값을 plain char 타입인 foo 변수와 비교했습니다.",
  "rule.saqt.q.ccpp.1047.example.0.safe": "라인 3: switch 구문의 조건부에서 검사하는 변수 타입이 plain char인 경우 case 문에는 일반 문자만 사용합니다.",
  "rule.saqt.q.ccpp.1047.name": "대체된 문자 타입 변수",
  "rule.saqt.q.ccpp.1048.description": "연산의 피연산자로 사용된 문자 값 체커는 부호 표시가 없는 일반 char 타입의 변수에 산술 연산을 사용하는 수식을 검출합니다.\nplain char 타입은 컴파일러에 따라 unsigned char 혹은 signed char와 동등한 타입으로 동작합니다. 단, 컴파일러에 따라 달라질 수 있습니다. 즉, plain char 타입에 숫자를 사용하면 컴파일러에 따라 값이 변경될 수 있습니다. 따라서 plain char 타입에는 문자를 사용하고, unsigned char나 signed char에는 숫자를 사용하는 것이 좋습니다.\nplaint char 타입에는 산술 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1048.example.0.dangerous": "라인 2: foo 변수를 plain char 타입으로 정의했습니다.\n라인 3: foo 변수를 산술연산의 피연산자로 사용했습니다.",
  "rule.saqt.q.ccpp.1048.example.0.safe": "라인 3: plain char 타입의 변수는 산술 연산의 피연산자로 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1048.name": "연산의 피연산자로 사용된 문자 값",
  "rule.saqt.q.ccpp.1049.description": "누락된 명시적 형변환 체커는 값을 대입할 경우 서로 타입이 다르고 암시적인 캐스팅이 발생하는 수식을 검출합니다.\n이 때 좌측항의 타입이 우측항의 타입보다 큰 경우는 예외로 합니다. 즉, 대입의 결과로 값이 변경될 가능성이 있는 경우만 검출합니다.\n대입 연산자의 양쪽 수식의 타입이 서로 다른 경우 의도했던 값과 다른 값이 들어갈 수 있습니다. 이러한 문제는 알아채기 힘든 오류를 발생시킵니다.\n대입 연산 시 양쪽 피연산자의 타입이 같아지도록 명시적인 캐스팅을 사용합니다. 이러한 캐스팅 사용은 설령 값이 변경되더라도 의도한 구현이라는 점을 명시할 수 있습니다.",
  "rule.saqt.q.ccpp.1049.example.0.dangerous": "라인 1: uint32_t 타입인 u32a 매개 변수를 선언했습니다.\n라인 2: uint16_t 타입인 u16a 변수를 u32a로 초기화했습니다. 이 과정에서 암시적 캐스팅이 발생하며, 좌측항의 타입 크기가 우측항의 타입크기보다 작습니다.",
  "rule.saqt.q.ccpp.1049.example.0.safe": "라인 2: 우측항의 값을 명시적으로 캐스팅한 후 대입합니다.",
  "rule.saqt.q.ccpp.1049.name": "누락된 명시적 형변환",
  "rule.saqt.q.ccpp.105.description": "사용되지 않은 래퍼 함수 체커는 옵션에 지정된 특정 함수를 허용된 함수의 인자가 아닌 값으로 사용하는 코드를 검출합니다.\n옵션에서 호출 대상 함수, 인자로 사용돼야 하는 함수를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 특정 함수의 인자로만 사용해야 합니다.",
  "rule.saqt.q.ccpp.105.example.0.dangerous": "라인 4: API06_NEED_WRAPPER() 함수를 API06_WRAPPER() 함수의 인자로 사용하지 않았습니다.",
  "rule.saqt.q.ccpp.105.example.0.safe": "라인 4: API06_NEED_WRAPPER() 함수를 API06_WRAPPER() 함수의 인자로 사용합니다.",
  "rule.saqt.q.ccpp.105.name": "사용되지 않은 래퍼 함수",
  "rule.saqt.q.ccpp.105.option.call_should_be_used_parameter.description": "반드시 사용해야 할 파라미터 이름과 인덱스를 설정합니다.",
  "rule.saqt.q.ccpp.105.option.call_should_be_used_parameter.name": "반드시 사용해야 할 파라미터 이름과 인덱스",
  "rule.saqt.q.ccpp.105.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.105.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.1050.description": "대체된 부호가 있는 문자 타입 변수 체커는 unsigned char 혹은 signed char 타입의 변수에 문자를 대입하거나 비교하는 수식을 검출합니다.\nplain char 타입은 컴파일러에 따라 unsigned char 혹은 signed char와 동등한 타입으로 동작합니다. 단, 컴파일러에 따라 달라질 수 있습니다. 즉, plain char 타입에 숫자를 사용하면 컴파일러에 따라 값이 변경될 수 있습니다. 따라서 plain char 타입에는 문자를 사용하고, unsigned char나 signed char에는 숫자를 사용하는 것이 좋습니다.\nsigned char 타입에 문자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1050.example.0.dangerous": "라인 1: 매개 변수 ch를 unsigned char 타입으로 정의했습니다.\n라인 4: 숫자 대신 문자 'a'를 사용했습니다. 이 값을 unsigned char 타입인 ch 변수와 비교했습니다.",
  "rule.saqt.q.ccpp.1050.example.0.safe": "라인 3: switch 구문의 조건부에서 검사하는 변수 타입이 signed char 인 경우 case 문에는 숫자만 사용합니다.",
  "rule.saqt.q.ccpp.1050.name": "대체된 부호가 있는 문자 타입 변수",
  "rule.saqt.q.ccpp.1051.description": "기본 타입의 직접 사용 체커는 기본 숫자 타입을 typedef로 선언하지 않고 사용한 구문을 검출합니다.\n기본 숫자 타입을 그대로 사용하지 않도록 합니다. 명확한 스토리지 크기를 명시하는 typedef 선언을 한 뒤 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1051.example.0.dangerous": "라인 2: 기본 타입인 int를 그대로 사용하여 변수를 선언했습니다.",
  "rule.saqt.q.ccpp.1051.example.0.safe": "라인 1: 기본 타입을 명확한 스토리지 크기를 명시하여 typedef로 선언합니다.",
  "rule.saqt.q.ccpp.1051.name": "기본 타입의 직접 사용",
  "rule.saqt.q.ccpp.1053.description": "부적절한 비트 필드 타입 체커는 unsigned int나 signed int 타입이 아닌 타입으로 비트 필드를 선언한 경우를 검출합니다.\nunsigned int와 signed int를 제외한 다른 숫자 타입은 이식성 문제로 인해 비트 필드의 타입으로 사용하기에는 적합하지 않습니다. 또한 부호 표시가 없는 일반적인 int는 컴파일러마다 다르게 정의되기 때문에 명시적으로 signed int 타입을 사용하는 것이 좋습니다.\n비트 필드를 선언할 경우에는 반드시 unsigned int 나 signed int 타입을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1053.example.0.dangerous": "라인 3: long 타입을 비트 필드의 타입으로 사용했습니다.\n라인 4: short 타입을 비트 필드의 타입으로 사용했습니다.",
  "rule.saqt.q.ccpp.1053.example.0.safe": "라인 1: 모든 비트 필드의 타입은 unsigned int 혹은 signed int 타입만 사용합니다.",
  "rule.saqt.q.ccpp.1053.name": "부적절한 비트 필드 타입",
  "rule.saqt.q.ccpp.1054.description": "너무 작은 부호가 있는 정수 타입 체커는 비트 필드의 타입이 signed 타입이며 비트 필드의 크기가 1비트인 선언을 검출합니다.\nC99 표준에서 signed 타입의 비트 필드를 1비트 선언한 것은 값 비트 없이 부호 비트만 선언한 것으로 간주됩니다. 값 비트가 0일 경우 의미있는 값을 지정할 수 없습니다.\nsigned 타입의 비트 필드는 최소 2비트 이상으로 선언하도록 합니다. 만약 반드시 1비트만 사용해야 할 경우 unsigned 타입으로 비트 필드를 선언합니다.",
  "rule.saqt.q.ccpp.1054.example.0.dangerous": "라인 2: signed 타입인 비트 필드의 크기가 1비트입니다.",
  "rule.saqt.q.ccpp.1054.example.0.safe": "라인 2: signed 타입인 비트 필드의 크기를 적어도 2비트 이상이 되도록 합니다.",
  "rule.saqt.q.ccpp.1054.name": "너무 작은 부호가 있는 정수 타입",
  "rule.saqt.q.ccpp.1055.description": "8진수 사용 체커는 8진수를 사용하는 수식을 검출합니다.\n숫자 0으로 시작하는 상수는 8진수로 간주됩니다.\n일반적으로 8진수로 표현된 상수는 사용자의 의도가 아니라 값의 위치를 맞추기 위해 잘못 사용되었을 가능성이 높습니다. 따라서 개발자가 인지하지 못한 채 잘못된 상수를 사용할 위험이 있습니다.\n8진수로 된 값을 상수로 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1055.example.0.dangerous": "라인 3: 10진수로 표현된 상수 2719를 대입했습니다.\n라인 4: 10진수로 표현된 상수 4435를 대입했습니다.\n라인 5: 가독성을 위해 앞에 2개의 숫자 0을 붙여서 상수 0042를 사용했습니다. 하지만 해당 값은 8진수이며, 실제로 대입되는 값은 34입니다.",
  "rule.saqt.q.ccpp.1055.example.0.safe": "라인 5: 10진수로 표현된 상수를 입력하도록 합니다.",
  "rule.saqt.q.ccpp.1055.name": "8진수 사용",
  "rule.saqt.q.ccpp.1056.description": "의심스러운 8진수 이스케이프 시퀀스 체커는 8진수 이스케이프 시퀀스를 사용하는 수식을 검출합니다.\n역슬래쉬 뒤에 0~7 사이의 3자리 숫자가 있는 경우 8진수로 취급합니다.\n8진수 이스케이프 시퀀스를 처리하는 방법은 구현 정의 동작입니다. 따라서 컴파일러마다 다르게 처리될 수 있습니다. 예를 들어 8진수 이스케이프 시퀀스의 뒤에 오는 숫자의 값에 따라 8진수로 표현되기도 하고 8진수+남은 10진수 정수로 나뉘어 표현되기도 합니다. 따라서 개발자가 인지하지 못한 채 잘못된 상수를 사용할 위험이 있습니다.\n8진수 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1056.example.0.dangerous": "라인 3: 8진수 이스케이프 시퀀스를 사용했습니다.",
  "rule.saqt.q.ccpp.1056.example.0.safe": "라인 3: 8진수 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1056.name": "의심스러운 8진수 이스케이프 시퀀스",
  "rule.saqt.q.ccpp.1057.description": "함수 내 함수 선언 체커는 함수가 파일 영역에서 선언되지 않고 함수 내부에서 선언된 경우를 검출합니다.\n함수 내부에서 함수를 선언하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n함수는 반드시 파일 영역에서 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1057.example.0.dangerous": "라인 4: foo() 함수 내부에서 bar() 함수를 선언했습니다.",
  "rule.saqt.q.ccpp.1057.example.0.safe": "라인 1: 반드시 파일 영역에서 함수를 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1057.name": "함수 내 함수 선언",
  "rule.saqt.q.ccpp.1058.description": "불필요한 전역 변수 체커는 한 개의 함수에서만 전역 변수를 사용하는 경우를 검출합니다.\n특정한 한 개의 함수에서만 사용하는 전역 변수를 전역으로 선언할 필요성이 없기 때문입니다. 따라서 변수는 최소 블록 범위에서 정의하여 다른 곳에서 실수로 동일한 변수를 사용할 가능성을 줄여야 합니다.\n전역 변수가 한 개의 함수에서만 사용되는 경우 해당 함수의 지역 변수로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1058.example.0.dangerous": "라인 3: 전역 변수 g_c를 선언했습니다.\n라인 17: 전역 변수 g_c를 사용했습니다. 이 변수는 main() 함수에서만 사용하고 있습니다.",
  "rule.saqt.q.ccpp.1058.example.0.safe": "라인 16: 전역 변수 g_c를 main() 함수의 지역 변수로 수정합니다.",
  "rule.saqt.q.ccpp.1058.name": "불필요한 전역 변수",
  "rule.saqt.q.ccpp.1059.description": "중복된 외부 객체 혹은 함수 체커는 여러 헤더 파일에서 선언된 extern 객체 및 함수를 검출합니다.\n어떤 식별자가 다른 번역 단위에서 여러번 정의되거나 반대로 정의가 전혀 존재하지 않는 것은 링크 오류 등 여러 가지 문제가 발생할 수 있습니다.\nextern 객체나 함수의 하나의 헤더 파일에서 한 번만 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1059.example.0.dangerous": "라인 2: foo.h 헤더 파일에서 calc() 함수를 extern으로 선언했습니다.\n라인 4: bar.h 헤더 파일에서 calc() 함수를 extern으로 선언했습니다.",
  "rule.saqt.q.ccpp.1059.example.0.safe": "라인 4: bar.h 헤더 파일에서 extern으로 선언한 함수의 이름을 다른 것으로 변경합니다.",
  "rule.saqt.q.ccpp.1059.name": "중복된 외부 객체 혹은 함수",
  "rule.saqt.q.ccpp.106.description": "함수 호출 후 인자 사용 규칙 위반 체커는 특정 함수를 호출한 후에 특정 인자를 사용하는 코드를 검출합니다.\n옵션에서 호출 대상 함수, 사용하면 안되는 인자를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출한 후에는 인자로 사용하지 않도록 금지한 값, 문자열, 매개변수 등을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.106.example.0.dangerous": "라인 6: API07_FUNC() 함수를 호출했습니다.\n라인 7: output() 함수의 인자로 API07_TARGET_NAME 을 사용했습니다.",
  "rule.saqt.q.ccpp.106.example.0.safe": "라인 6: API07_FUNC() 함수를 호출했습니다.\n라인 7: output() 함수의 인자로 \"test\"를 사용하므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.106.name": "함수 호출 후 인자 사용 규칙 위반",
  "rule.saqt.q.ccpp.106.option.call_param_should_not_be_name.description": "반드시 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.ccpp.106.option.call_param_should_not_be_name.name": "사용하지 말아야 할 인자",
  "rule.saqt.q.ccpp.106.option.function_target_begin_call_function.description": "설정한 함수가 호출되는 이후 분석을 수행합니다.",
  "rule.saqt.q.ccpp.106.option.function_target_begin_call_function.name": "분석을 시작할 특정 함수 호출",
  "rule.saqt.q.ccpp.1060.description": "외부 참조 없이 비 정적 객체 혹은 함수 사용 체커는 외부에서 접근할 필요가 없으며 파일 범위에 extern으로 선언되어 있는 객체 및 함수를검출합니다.\n외부에서 접근할 필요가 없는 전역 객체는 정적으로 선언하여 단일 번역 단위 안쪽으로 숨기는 것이 좋습니다. 이와 같은 조치로 다른 파일의 전역 객체 및 함수와의 불필요한 충돌을 막을 수 있습니다.\n하나의 파일에서만 사용하는 파일 범위 객체나 함수는 정적으로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1060.example.0.dangerous": "라인 2: wrong 변수를 extern으로 선언했습니다. 해당 변수는 foo.c 파일에서만 사용했습니다.",
  "rule.saqt.q.ccpp.1060.example.0.safe": "라인 2: wrong 변수를 정적으로 선언합니다. static 키워드는 생략할 수 있습니다.",
  "rule.saqt.q.ccpp.1060.name": "외부 참조 없이 비 정적 객체 혹은 함수 사용",
  "rule.saqt.q.ccpp.1061.description": "누락된 배열 초기화 중괄호 체커는 구조체와 배열을 초기화할 때 내부 구조와 다른 형태로 중괄호 초기화를 사용한 경우를 검출합니다.\n구조체나 배열을 초기화할 때는 한 쌍의 중괄호로 묶어서 초기화해야 합니다. 이때 중첩 구조를 나타내기 위해서는 추가적으로 중괄호를 사용하여 복잡한 타입의 요소가 정상적으로 초기화되도록 내부 구조와 초기화 방식을 맞추어야 합니다. 초기화 방법과 내부 구조가 다를 경우 컴파일러에 따라 초기화되는 값이 다를 수 있습니다.\n구조체나 배열을 0으로 초기화하는 경우를 제외하고 내부 구조에 맞춰 중괄호로 초기화하도록 합니다.",
  "rule.saqt.q.ccpp.1061.example.0.dangerous": "라인 12: foo2를 중괄호로 초기화했습니다. 다만 첫 번째와 두 번째 원소를 묶어야 할 중괄호가 생략되었습니다.",
  "rule.saqt.q.ccpp.1061.example.0.safe": "라인 12: 구조체 및 배열의 내부 구조에 맞춰 중괄호로 초기화하도록 합니다.",
  "rule.saqt.q.ccpp.1061.name": "누락된 배열 초기화 중괄호",
  "rule.saqt.q.ccpp.1062.description": "불충분한 초기화 값 체커는 명시된 구조체나 배열의 크기보다 중괄호 초기화 데이터가 부족한 정의를 검출합니다.\n중괄호 초기화의 요소가 구조체 및 배열의 크기보다 적은 경우 기본적으로 0으로 초기화됩니다. 단, 이러한 값이 개발자가 의도한 결과인지는 알 수 없습니다. 따라서 원래의 의도와 다른 결과가 발생할 수 있습니다.\n구조체나 배열의 크기와 중괄호 초기화의 항목 수를 동일하게 맞추도록 합니다.",
  "rule.saqt.q.ccpp.1062.example.0.dangerous": "라인 2: 크기가 3인 배열을 중괄호 초기화로 초기화했습니다. 여기서 초기화 요소는 2개입니다.",
  "rule.saqt.q.ccpp.1062.example.0.safe": "라인 2: 배열의 크기와 중괄호 초기화 요소의 수를 동일하게 맞추도록 합니다.",
  "rule.saqt.q.ccpp.1062.name": "불충분한 초기화 값",
  "rule.saqt.q.ccpp.1064.description": "부분적으로 초기화 된 열거형 리스트 체커는 열거형 목록의 요소 중 일부에만 값을 대입하여 선언한 경우를 검출합니다.\n열거형 목록에 값을 대입하지 않을 경우 각 요소의 값은 0부터 시작하여 1씩 증가합니다. 만약 특정 요소에 값을 대입하는 경우 해당 요소는 대입된 값을 가집니다. 해당 요소 이후의 값은 이전 요소에 대입된 값에서 1씩 증가합니다. 만약 열거형 목록의 일부 요소에만 대입하는 경우 실제 열거형 목록의 각 요소가 가지는 값이 무엇인지 식별하기 어려울 수 있습니다. 또한 열거형 목록의 요소 중 일부가 동일한 값을 가지게 될 수도 있습니다. 따라서 개발자의 의도와 달리 정상적인 동작이 실행되지 않게 됩니다.\n열거형 목록의 요소에 값을 대입하지 않거나 모두 대입하도록 합니다.",
  "rule.saqt.q.ccpp.1064.example.0.dangerous": "라인 3: 열거형 목록의 melon 요소에 432 값을 대입했습니다.\n라인 4: 열거형 목록의 orange 요소에 2를 대입했습니다.\n라인 5: 열거형 목록의 strawberry 값이 컴파일러에 의해 3으로 초기화되었습니다. 이 값은 melon과 동일합니다.",
  "rule.saqt.q.ccpp.1064.example.0.safe": "라인 2: 열거형 목록의 요소를 초기화하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1064.name": "부분적으로 초기화 된 열거형 리스트",
  "rule.saqt.q.ccpp.1064.option.allow_enum_assign.description": "열거형에 다른 열거형 대입을 허용합니다.",
  "rule.saqt.q.ccpp.1064.option.allow_enum_assign.name": "열거형 대입 허용",
  "rule.saqt.q.ccpp.1065.description": "암시적 정수 형변환 체커는 함수의 인자로 전달되는 정수형 값이 암시적으로 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1065.example.0.dangerous": "라인 6: use_int32() 함수를 호출할 때 foo 인자 값이 암시적으로 int32_t 타입으로 캐스팅되었습니다.",
  "rule.saqt.q.ccpp.1065.example.0.safe": "라인 6: foo 인자를 명시적으로 캐스팅합니다.",
  "rule.saqt.q.ccpp.1065.name": "암시적 정수 형변환",
  "rule.saqt.q.ccpp.1066.description": "암시적 정수 업캐스팅 체커는 정수형 복합 수식절이 암시적으로 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1066.example.0.dangerous": "라인 5: 정수형의 복합 수식절이 암시적으로 더 큰 타입의 정수형으로 캐스팅되었습니다.",
  "rule.saqt.q.ccpp.1066.example.0.safe": "라인 4: 정수형 타입인 복합 수식절을 더 큰 타입의 정수형으로 캐스팅할 경우에는 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1066.name": "암시적 정수 업캐스팅",
  "rule.saqt.q.ccpp.1067.description": "암시적 정수 다운캐스팅 체커는 정수형 복합 수식절이 암시적으로 더 작은 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1067.example.0.dangerous": "라인 5: 정수형의 복합 수식절이 암시적으로 더 작은 타입의 정수형으로 캐스팅되었습니다.",
  "rule.saqt.q.ccpp.1067.example.0.safe": "라인 5: 정수형 타입인 복합 수식절을 더 작은 타입의 정수형으로 변경할 경우에는 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1067.name": "암시적 정수 다운캐스팅",
  "rule.saqt.q.ccpp.1068.description": "일치하지 않는 정의 및 선언의 반환 타입 체커는 함수 선언 반환 타입과 실제 반환하는 값의 타입이 다른 수식을 검출합니다.\n반환 타입과 실제 반환하는 값의 타입이 다른 경우는 개발자가 의도하지 않은 결과일 수 있습니다. 이 경우 암시적 캐스팅이 발생하며 이로 인해 결과값이 바뀔 수 있습니다.\n반환하는 값의 타입을 반환 타입에 맞추어 캐스팅하거나 반환하는 값 자체를 반환 타입에 맞추어 조정하도록 합니다.",
  "rule.saqt.q.ccpp.1068.example.0.dangerous": "라인 2: 실수형 값을 반환했습니다. 하지만 foo() 함수의 반환 타입은 int32_t 이므로 서로 일치하지 않습니다.\n라인 7: double 타입 값을 반환했습니다. 하지만 bar() 함수의 반환 타입은 float 타입 이므로 서로 일치하지 않습니다.",
  "rule.saqt.q.ccpp.1068.example.0.safe": "라인 2: 함수 반환 타입인 int32_t형과 일치하도록 정수형 값을 반환합니다.\n라인 7: 함수 반환 타입인 float 타입과 일치하도록 상수값에 접미사F를 붙여 float 타입임을 표현합니다.",
  "rule.saqt.q.ccpp.1068.name": "일치하지 않는 정의 및 선언의 반환 타입",
  "rule.saqt.q.ccpp.1068.option.strict_suffix.description": "float이 32비트, double이 64비트인 플랫폼에서 float형을 리턴하는 함수는 반드시 접미사 F를 붙여야 합니다.",
  "rule.saqt.q.ccpp.1068.option.strict_suffix.name": "접미사 'F' 추가 여부",
  "rule.saqt.q.ccpp.1069.description": "금지된 매크로 사용 체커는 정해진 사용 방법을 벗어나도록 매크로를 선언한 경우를 검출합니다.\n여기서 매크로의 정해진 사용 방법이란 중괄호 초기자, 상수, 문자열, 괄호 수식, 타입 한정자, 저장 클래스 지시자, do-while(0) 구조를 의미합니다.\n매크로를 정해진 사용 방법대로 사용하면 유용합니다. 하지만 매크로를 사용하는 경우 사용자가 보는 코드와 실제 코드가 달라지게 됩니다. 따라서 무분별하게 매크로를 사용하면 다양한 문제가 발생할 수 있습니다.\n정해진 사용 방법 이외의 방법으로 매크로를 선언하거나 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1069.example.0.dangerous": "라인 1: #define 매크로를 사용하여 타입을 정의했습니다.",
  "rule.saqt.q.ccpp.1069.example.0.safe": "라인 1: typedef를 사용하여 타입을 정의하도록 합니다.",
  "rule.saqt.q.ccpp.1069.name": "금지된 매크로 사용",
  "rule.saqt.q.ccpp.1070.description": "암시적 실수 형변환 체커는 함수의 인자로 전달되는 실수형 값이 암시적으로 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1070.example.0.dangerous": "라인 6: use_f64() 함수를 호출할 때 f32a 인자 값이 암시적으로 float64_t 타입으로 캐스팅되었습니다.",
  "rule.saqt.q.ccpp.1070.example.0.safe": "라인 5: f32a 인자를 명시적으로 캐스팅합니다.",
  "rule.saqt.q.ccpp.1070.name": "암시적 실수 형변환",
  "rule.saqt.q.ccpp.1071.description": "암시적 실수 다운캐스팅 체커는 실수형 복합 수식절이 암시적으로 더 작은 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1071.example.0.dangerous": "라인 5: 실수형의 복합 수식절이 암시적으로 더 작은 타입의 실수형으로 캐스팅되었습니다.",
  "rule.saqt.q.ccpp.1071.example.0.safe": "라인 5: 실수형 타입인 복합 수식절을 더 작은 타입의 실수형으로 변경할 경우에는 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1071.name": "암시적 실수 다운캐스팅",
  "rule.saqt.q.ccpp.1072.description": "더 큰 타입으로 정수 형변환 체커는 정수형 복합 수식절이 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n복합 수식절의 결과를 캐스팅하는 것은 프로세서에 따라 값의 변화를 예상하기 힘듭니다. 이러한 문제로 인해 연산 결과를 캐스팅하면서 잘못된 영역의 값을 처리할 수 있습니다.\n정수형 타입들로 복합 수식절을 사용할 때 모두 같은 크기의 정수형 타입을 사용하도록 합니다. 만약 어떤 값을 다른 타입으로 변경할 필요가 있을 경우 먼저 복합 수식절의 계산 결과를 저장한 후, 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1072.example.0.dangerous": "라인 2: uint16_t 타입의 복합 수식절 결과를 명시적으로 더 큰 정수형 타입인 uint32_t 타입으로 캐스팅했습니다.",
  "rule.saqt.q.ccpp.1072.example.0.safe": "라인 2: 복합 수식절의 결과를 동일한 타입을 가진 객체에 저장합니다.\n라인 3: 만약 더 큰 정수형 타입으로 변환이 필요한 경우 단항 수식을 캐스팅하여 저장합니다.",
  "rule.saqt.q.ccpp.1072.name": "더 큰 타입으로 정수 형변환",
  "rule.saqt.q.ccpp.1073.description": "부호가 있는 데이터와 없는 데이터 간 변환 체커는 signed 정수형과 unsigned 정수형간에 캐스팅이 일어나는 복합 수식절을 검출합니다.\n복합 수식절의 결과를 캐스팅하는 것은 프로세서에 따라 값의 변화를 예상하기 힘듭니다. 이러한 문제로 인해 연산 결과를 캐스팅하면서 잘못된 영역의 값을 처리할 수 있습니다.\n복합 수식절의 타입들은 모두 동일한 부호를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1073.example.0.dangerous": "라인 2: signed 정수형 복합 수식절을 unsigned 정수형으로 캐스팅했습니다.",
  "rule.saqt.q.ccpp.1073.example.0.safe": "라인 2: 복합 수식절의 부호와 계산 결과를 담을 변수의 부호를 동일하게 유지합니다.",
  "rule.saqt.q.ccpp.1073.name": "부호가 있는 데이터와 없는 데이터 간 변환",
  "rule.saqt.q.ccpp.1074.description": "더 큰 타입으로 실수 형변환 체커는 실수형 복합 수식절이 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n복합 수식절의 결과를 캐스팅하는 것은 프로세서에 따라 값의 변화를 예상하기 힘듭니다. 이러한 문제로 인해 연산 결과를 캐스팅하면서 잘못된 영역의 값을 처리할 수 있습니다.\n실수형 타입들로 복합 수식절을 사용할 때 모두 같은 크기의 실수형 타입을 사용하도록 합니다. 만약 어떤 값을 다른 타입으로 변경할 필요가 있을 경우 먼저 복합 수식절의 계산 결과를 저장한 다음 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1074.example.0.dangerous": "라인 2: float32_t 타입의 복합 수식절 결과를 명시적으로 더 큰 실수형 타입인 float64_t 타입으로 캐스팅했습니다.",
  "rule.saqt.q.ccpp.1074.example.0.safe": "라인 2: 복합 수식절의 결과를 동일한 타입을 가진 객채에 저장합니다.\n라인 3: 만약 더 큰 실수형 타입으로 변환이 필요한 경우 단항 수식을 캐스팅하여 저장합니다.",
  "rule.saqt.q.ccpp.1074.name": "더 큰 타입으로 실수 형변환",
  "rule.saqt.q.ccpp.1075.description": "누락된 비트 연산 결과에 대한 형변환 체커는 비트 연산에서 unsigned char 혹은 unsigned short 타입의 피연산자를 즉시 피연산자 타입으로 캐스팅하지 않은 수식을 검출합니다.\n비트 연산은 ~, <<, >> 등을 가리킵니다.\n피연산자가 unsigned char나 unsigned short인 비트 연산의 결과에서 정수 승격(Integral Promotion)이 발생할 수 있습니다. 따라서 최종 결과의 타입으로 바로 캐스팅하지 않으면 예상하지 않은 값이 나올 수 있습니다.\nunsigned char나 unsigned short 타입의 변수에 비트 연산을 수행한 후, 바로 원래 타입으로 캐스팅하도록 합니다.",
  "rule.saqt.q.ccpp.1075.example.0.dangerous": "라인 4: port 변수에 비트 연산을 수행했습니다. 하지만 즉시 타입을 캐스팅하지 않았습니다.",
  "rule.saqt.q.ccpp.1075.example.0.safe": "라인 4: port 변수에 비트 연산을 수행한 후, 즉시 원래 타입인 unsigned short 타입으로 캐스팅합니다.",
  "rule.saqt.q.ccpp.1075.name": "누락된 비트 연산 결과에 대한 형변환",
  "rule.saqt.q.ccpp.1076.description": "포인터 타입에서 정수 타입으로 형변환 체커는 포인터형을 정수형으로 캐스팅하는 수식을 검출합니다.\n포인터를 정수로 캐스팅하는 경우에 필요한 정수의 크기를 지정하는 것은 구현 정의 동작(Implementation Defined Behavior)입니다. 따라서 컴파일러에 따라 동작이 달라질 수 있습니다. 메모리 매핑 레지스터나 하드웨어의 특정 기능을 지정하는 것 이외에는 사용하지 않도록 합니다.\n포인터형을 정수형으로 변환하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1076.example.0.dangerous": "라인 4: 포인터형을 정수형으로 캐스팅했습니다.",
  "rule.saqt.q.ccpp.1076.example.0.safe": "라인 4: 포인터형을 정수형으로 변환하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1076.name": "포인터 타입에서 정수 타입으로 형변환",
  "rule.saqt.q.ccpp.1077.description": "정수 타입에서 포인터 타입으로 형변환 체커는 정수형을 포인터형으로 캐스팅하는 수식을 검출합니다.\n일반적으로 정수 값이나 void 형 포인터를 특정 타입에 대한 포인터로 캐스팅하는 경우 정의되지 않은 동작이 발생할 수 있습니다. 따라서 이렇게 캐스팅하지 않도록 합니다.\n정수형을 포인터형으로 변환하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1077.example.0.dangerous": "라인 2: 정수형을 포인터형으로 캐스팅했습니다.",
  "rule.saqt.q.ccpp.1077.example.0.safe": "라인 2: 정수형을 포인터형으로 캐스팅하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1077.name": "정수 타입에서 포인터 타입으로 형변환",
  "rule.saqt.q.ccpp.1078.description": "포인터 타입으로 형변환 체커는 일반형이나 포인터형을 다른 포인터형으로 캐스팅하는 수식을 검출합니다.\n일반적으로 일반형이나 포인터형을 다른 포인터형으로 캐스팅하면 다양한 문제를 일으킬 수 있습니다. 따라서 이렇게 캐스팅하지 않도록 합니다.\n일반형이나 포인터형을 다른 포인터형으로 변환하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1078.example.0.dangerous": "라인 5: long* 타입에서 short* 타입으로 캐스팅했습니다.",
  "rule.saqt.q.ccpp.1078.example.0.safe": "라인 5: 객체를 다른 포인터로 캐스팅하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1078.name": "포인터 타입으로 형변환",
  "rule.saqt.q.ccpp.108.description": "인자로 금지된 문자열 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 문자열을 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 문자열 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 특정 위치의 인자로 문자열을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.108.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: memcpy_API09() 함수의 두 번째 인자가 문자열이므로 검출됩니다.",
  "rule.saqt.q.ccpp.108.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: memcpy_API09() 함수의 두 번째 인자가 정수형이므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.108.name": "인자로 금지된 문자열 사용",
  "rule.saqt.q.ccpp.108.option.call_param_should_not_be_string.description": "문자열을 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.ccpp.108.option.call_param_should_not_be_string.name": "문자열을 사용하지 말아야 할 인자",
  "rule.saqt.q.ccpp.108.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.108.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.108.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.108.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.ccpp.108.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.saqt.q.ccpp.108.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.ccpp.108.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.108.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.ccpp.1081.description": "모호한 수식 우선순위 체커는 복합 수식에서 우선순위가 다른 연산자를 괄호 없이 사용하는 경우를 검출합니다.\nC/C++에서는 연산자 우선순위가 다소 복잡하므로 개발자가 실수하는 경우가 있을 수 있습니다. 즉, 연산자가 우선순위에 따라 동작하더라도 개발자가 의도한 순서라고는 확신할 수 없습니다. 따라서 원래 의도와 다른 결과가 나올 수 있습니다.\n복합 수식에서 우선순위가 다른 연산자가 있다면 괄호를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1081.example.0.dangerous": "라인 3: 연산자 우선순위에 의존하여 수식을 작성했습니다.",
  "rule.saqt.q.ccpp.1081.example.0.safe": "라인 3: a*b 연산에 괄호를 사용합니다. 연산자 우선순위에 의해 올바른 값이 계산되더라도 괄호를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1081.name": "모호한 수식 우선순위",
  "rule.saqt.q.ccpp.1082.description": "수식의 부수 효과 체커는 수식 내부에서 부수 효과가 일어나는 수식을 검출합니다.\n부수 효과(Side Effect)란 수식의 결과로 인해 메모리의 값이 변경되는 것을 가리킵니다. 일반적인 대입 연산의 경우 수식이 아니라 수식으로 구성된 문장이기 때문에 부수 효과에 해당되지 않습니다. 단, 대입 연산의 우측항이나 조건문의 조건부에서 부수 효과가 발생하는 경우 이 규칙의 검출 대상입니다.\n수식에서 부수 효과가 발생하는 경우 연산 순서에 따라 결과가 달라질 수 있습니다. 일반적인 연산자의 경우 연산 순서가 정해져 있으므로 문제가 발생하지 않을 수 있습니다. 하지만 연산순서가 정의되지 않은 연산자도 있습니다. 예를 들어 함수의 인자를 평가하는 순서는 정의되지 않은 동작입니다. 해당 인자에 부수 효과가 존재한다면 컴파일러에 따라 결과가 달라질 수 있습니다.\n수식 내부에서 부수 효과가 일어나지 않도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1082.example.0.dangerous": "라인 5: 수식에서 x 변수에 부수 효과가 발생했습니다. x는 같은 수식 내에서 arr 배열의 인덱스로도 사용되고 있으므로 컴파일러의 연산 순서에 따라 결과가 달라질 수 있습니다.",
  "rule.saqt.q.ccpp.1082.example.0.safe": "라인 5: x 변수에 대한 ++ 연산을 다른 수식으로 분리합니다.\n라인 6: 수식에서 부수 효과가 발생하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1082.name": "수식의 부수 효과",
  "rule.saqt.q.ccpp.1083.description": "함수 호출의 부수 효과 체커는 함수를 호출할 때 부수 효과가 발생하는 수식이 있는 경우를 검출합니다.\n부수 효과(Side Effect)란 수식의 결과로 인해 메모리의 값이 변경되는 것을 가리킵니다.\n수식에서 부수 효과가 발생하는 경우 연산 순서에 따라 결과가 달라질 수 있습니다. 일반적인 연산자의 경우 연산 순서가 정해져 있으므로 문제가 발생하지 않을 수 있습니다. 하지만 연산순서가 정의되지 않은 연산자도 있습니다. 예를 들어 함수의 인자를 평가하는 순서는 정의되지 않은 동작입니다. 해당 인자에 부수 효과가 존재한다면 컴파일러에 따라 결과가 달라질 수 있습니다.\n함수를 호출할 때 부수 효과가 발생하지 않도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1083.example.0.dangerous": "라인 5: func() 함수를 호출할 때 부수 효과가 발생했습니다. 따라서 전체 수식에서 총 3번의 부수 효과가 발생하므로 컴파일러의 연산 순서에 따라 결과가 달라질 수 있습니다.",
  "rule.saqt.q.ccpp.1083.example.0.safe": "라인 5: 함수를 호출할 때 부수 효과를 일으키지 않도록 합니다.\n라인 6: 함수를 호출할 때 부수 효과를 일으키지 않도록 합니다.",
  "rule.saqt.q.ccpp.1083.name": "함수 호출의 부수 효과",
  "rule.saqt.q.ccpp.1084.description": "파라미터의 부수 효과 체커는 함수를 호출할 때 인자에 부수 효과가 발생하는 수식이 있는 경우를 검출합니다.\n부수 효과(Side Effect)란 수식의 결과로 인해 메모리의 값이 변경되는 것을 가리킵니다.\n수식에서 부수 효과가 발생하는 경우 연산 순서에 따라 결과가 달라질 수 있습니다. 일반적인 연산자의 경우 연산 순서가 정해져 있으므로 문제가 발생하지 않을 수 있습니다. 하지만 연산순서가 정의되지 않은 연산자도 있습니다. 예를 들어 함수의 인자를 평가하는 순서는 정의되지 않은 동작입니다. 해당 인자에 부수 효과가 존재한다면 컴파일러에 따라 결과가 달라질 수 있습니다.\n함수를 호출할 때 인자에서 부수 효과가 발생하지 않도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1084.example.0.dangerous": "라인 4: someFunc() 함수를 호출할 때 사용하는 첫 번째 인자인 foo 변수에서 부수 효과가 발생했습니다. 컴파일러에 따라 인자의 연산 순서가 달라질 수 있습니다.",
  "rule.saqt.q.ccpp.1084.example.0.safe": "라인 4: 함수를 호출할 때 인자에서 부수 효과를 일으키지 않도록 합니다.",
  "rule.saqt.q.ccpp.1084.name": "파라미터의 부수 효과",
  "rule.saqt.q.ccpp.1085.description": "피연산자에 사용된 할당 체커는 수식 내에서 대입 연산을 사용한 경우를 검출합니다.\n구체적으로는 다음의 경우를 의미합니다. 하나의 수식 문장 내에서 이미 대입 연산을 사용하고 있는 항의 우측 수식 항에 대입 연산이 있습니다. 조건 수식이 들어가는 곳에 대입 연산이 있습니다.\n이와 같은 문제들은 부수 효과를 일으키거나 잘못 사용된 결과일 수 있습니다. 특히 반복문이나 조건문의 조건부에서 대입 연산을 사용한 것은 비교 연산을 잘못 사용한 경우가 많으며, 이로 인해 수식의 평가 결과가 항상 참이 되어 다른 문제로 이어지게 됩니다.\n수식 내에서 대입 연산을 사용하지 않도록 합니다. 이것은 수식 문장에서 대입 연산이 있는 경우는 제외합니다. 대입 연산의 우측항에 대입 연산이 있거나 문장으로 끝나지 않는 조건부와 같은 수식에 대입 연산이 있는 경우에 해당합니다.",
  "rule.saqt.q.ccpp.1085.example.0.dangerous": "라인 3: 대입 연산의 우측항에서 또다시 대입 연산을 사용했습니다. a 변수의 타입이 bool 이므로 비교 연산을 잘못 사용한 것일 수 있습니다.\n라인 4: y 변수의 초기화 수식에서 대입 연산을 사용했습니다.",
  "rule.saqt.q.ccpp.1085.example.0.safe": "라인 3: 비교 연산을 사용합니다.\n라인 4: x 변수에 5를 대입하는 연산을 분리합니다.\n라인 5: y 변수의 초기화 수식에 x를 대입합니다.",
  "rule.saqt.q.ccpp.1085.name": "피연산자에 사용된 할당",
  "rule.saqt.q.ccpp.1086.description": "복합 수식 내에서 volatile 타입 변수 사용 체커는 복합 수식절에서 volatile 한정자를 가진 변수를 피연산자로 두 번 이상 사용하는 수식을 검출합니다.\nvolatile 형으로 표현된 휘발성 객체는 프로그램 외부에서 수정될 수 있습니다. 해당 변수는 수식을 평가할 때 서로 다른 값을 가질 수 있습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n복합 수식절에서는 volatile 한정자를 가진 변수를 최대 한 번만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1086.example.0.dangerous": "라인 4: volatile 한정자를 가진 v 변수를 하나의 수식에서 두 번 사용했습니다.",
  "rule.saqt.q.ccpp.1086.example.0.safe": "라인 4: volatile 한정자를 가진 v 변수를 bar에 저장합니다. volatile 변수를 하나의 수식에서 한 번만 사용합니다.",
  "rule.saqt.q.ccpp.1086.name": "복합 수식 내에서 volatile 타입 변수 사용",
  "rule.saqt.q.ccpp.1087.description": "크기 검사의 부수 효과 체커는 sizeof 피연산자에 부수 효과가 발생하는 수식을 검출합니다.\n추가적으로, sizeof 외에 유사한 이슈가 있는 decltype 과 같은 연산자에서도 동일한 방식으로 검출을 수행합니다.\nsizeof 연산자는 피연산자를 연산하지 않습니다. 따라서 부수 효과가 있는 수식이 존재하는 경우 예측하지 못한 결과가 발생할 수 있습니다.\nsizeof 피연산자에 부수 효과가 발생하는 수식을 작성하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1087.example.0.dangerous": "라인 4: sizeof 피연산자에 부수 효과가 발생했습니다.",
  "rule.saqt.q.ccpp.1087.example.0.safe": "라인 4: y++ 연산을 다른 수식으로 분리합니다.\n라인 5: sizeof 피연산자에 부수 효과가 있는 수식을 작성하지 않습니다.",
  "rule.saqt.q.ccpp.1087.name": "크기 검사의 부수 효과",
  "rule.saqt.q.ccpp.1088.description": "잘못된 호출 순서로 인한 함수 호출의 부수 효과 체커는 논리 연산자의 우측항에서 함수를 호출하는 수식을 검출합니다.\n&&, || 와 같은 논리 연산자의 우측항에서 함수를 호출하면 부수 효과가 발생할 수 있습니다. 이로 인해 논리 연산자의 좌측항에 대한 평가 결과가 달라질 수 있습니다. 따라서 원래 의도했던 것과 다른 결과가 발생할 수 있습니다.\n논리 연산자의 우측항에서 함수를 호출하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1088.example.0.dangerous": "라인 7: 논리 연산자의 우측항에서 test1() 함수를 호출했습니다. bar 값이 변경되는 부수 효과가 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.1088.example.0.safe": "라인 7: 함수를 호출하는 수식을 분리합니다.\n라인 8: 논리 연산자의 우측항에서 부수 효과가 발생할 수 있는 함수를 호출하지 않습니다.",
  "rule.saqt.q.ccpp.1088.name": "잘못된 호출 순서로 인한 함수 호출의 부수 효과",
  "rule.saqt.q.ccpp.1089.description": "논리 연산의 부수 효과 체커는 논리 연산자의 우측항에서 부수 효과를 발생시키는 연산자를 사용하는 수식을 검출합니다.\nC/C++에서는 논리 연산자의 좌측항의 결과에 따라 우측항이 단락 평가(Short Circuit Evaluation)를 수행하게 됩니다. 예를 들어 좌측항의 연산 결과에 따라 우측항의 연산을 수행하지 않는 경우가 있습니다. 따라서 개발자는 우측항에서 부수 효과가 발생할 것을 기대하고 코드를 작성했으나 의도한 것과 다르게 부수 효과가 발생하지 않을 수 있습니다.\n논리 연산자의 우측항에서 부수 효과가 발생시키는 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1089.example.0.dangerous": "라인 4: 논리 연산자의 우측항에서 부수 효과가 발생했습니다.",
  "rule.saqt.q.ccpp.1089.example.0.safe": "라인 5: 논리 연산자의 우측항을 분리합니다.\n라인 6: 부수 효과가 발생하는 수식을 분리합니다. 그러면 논리 연산자의 우측항에서 부수 효과가 발생하는 수식을 사용하지 않게 됩니다.",
  "rule.saqt.q.ccpp.1089.name": "논리 연산의 부수 효과",
  "rule.saqt.q.ccpp.109.description": "명시된 함수 인자 미사용 체커는 옵션에 지정된 함수에서 특정 인자 위치에 지정된 자료형 함수가 아닌 값을 인자로 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 함수 인자 위치와 함수 이름을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 지정된 함수를 사용해야 합니다.",
  "rule.saqt.q.ccpp.109.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: PFM_ERR_API10() 함수를 호출했습니다. 두 번째 인자가 옵션에 명시된 함수가 아니므로 검출됩니다.",
  "rule.saqt.q.ccpp.109.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: PFM_ERR_API10() 함수를 호출했습니다. 두 번째 인자가 옵션에 명시된 함수인 PfmNumber_API10()이므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.109.name": "명시된 함수 인자 미사용",
  "rule.saqt.q.ccpp.109.option.call_param_should_be_call.description": "필수 호출 파라미터를 설정합니다.",
  "rule.saqt.q.ccpp.109.option.call_param_should_be_call.name": "필수 호출 파라미터 설정",
  "rule.saqt.q.ccpp.109.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.109.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.109.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.109.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.ccpp.109.option.function_target.description": "분석 대상이 되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.109.option.function_target.name": "분석 대상이 되는 함수",
  "rule.saqt.q.ccpp.109.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.109.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.ccpp.1090.description": "이미 열려진 파일 열기 체커는 이미 열려 있는 파일을 다시 열려고 하면 이슈를 검출합니다.\n이미 열린 파일을 다시 열 경우 파일을 다루는 과정에서 문제가 발생할 수 있습니다.\n이미 열려 있는 파일을 다시 열지 않도록 주의해야 합니다.",
  "rule.saqt.q.ccpp.1090.example.0.dangerous": "라인 3: 이미 열려있는 파일을 다시 열었습니다.",
  "rule.saqt.q.ccpp.1090.example.0.safe": "라인 2: 같은 파일은 동시에 한번 만 열도록 합니다.",
  "rule.saqt.q.ccpp.1090.name": "이미 열려진 파일 열기",
  "rule.saqt.q.ccpp.1093.description": "부적절한 배열 해제 체커는 delete 구문으로 배열을 해제할 때 인덱스를 명시한 수식을 검출합니다.\ndelete 구문으로 배열을 해제할 때 인덱스를 명시하는 것은 비표준적인 방법입니다. 중요한 오류가 발생하는 문제는 아니지만 표준에 따른 코딩 방법을 준수하는 것이 좋습니다.\ndelete 구문으로 배열을 해제할 때 인덱스를 명시하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1093.example.0.dangerous": "라인 3: arr 배열을 delete 구문으로 해제하면서 인덱스를 명시했습니다.",
  "rule.saqt.q.ccpp.1093.example.0.safe": "라인 3: 인덱스를 명시하지 않고 배열을 해제합니다.",
  "rule.saqt.q.ccpp.1093.name": "부적절한 배열 해제",
  "rule.saqt.q.ccpp.1094.description": "void 파라미터 타입 사용 체커는 void 타입을 매개 변수의 타입으로 사용한 함수 선언을 검출합니다.\nvoid 타입을 매개 변수의 타입으로 사용하는 것은 비표준적인 방법입니다. 중요한 오류가 발생하는 문제는 아니지만 표준에 따른 코딩 방법을 준수하는 것이 좋습니다.\n매개 변수의 타입으로 void 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1094.example.0.dangerous": "라인 1: 매개 변수 a를 void 타입으로 선언했습니다.",
  "rule.saqt.q.ccpp.1094.example.0.safe": "라인 1: 매개 변수의 타입으로 void 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1094.name": "void 파라미터 타입 사용",
  "rule.saqt.q.ccpp.1097.description": "논리 연산 내에서의 volatile 변수 접근 체커는 논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하는 수식을 검출합니다.\n논리 연산자에서는 좌측항에서 우측항으로 연산을 수행합니다. 하지만 우측항에 volatile 한정자를 가진 변수가 존재하고 해당 변수가 좌측항의 값에 의존하여 변경되는 경우 의도하지 않은 프로그램 동작이 발생할 수 있습니다.\n논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1097.example.0.dangerous": "라인 3: 논리 연산자의 우측항에서 volatile 한정자를 가진 var 변수를 사용했습니다.",
  "rule.saqt.q.ccpp.1097.example.0.safe": "라인 3: 논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1097.name": "논리 연산 내에서의 volatile 변수 접근",
  "rule.saqt.q.ccpp.1099.description": "부호가 있는 값에 대해 비트 연산 체커는 signed 정수형 객체를 비트 연산자의 피연산자로 사용하는 수식을 검출합니다.\nsigned 정수형 변수를 비트 연산에 사용하는 경우 부호 비트로 인해 원래 의도했던 값과 다른 결과가 발생할 수 있습니다.\nsigned 대신 unsigned 정수형 객체를 비트 연산자의 피연산자로 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1099.example.0.dangerous": "라인 4: 비트 연산에 signed int 타입의 x 변수를 사용했습니다.",
  "rule.saqt.q.ccpp.1099.example.0.safe": "라인 4: unsigned 정수형 객체를 비트 연산자의 피연산자로 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1099.name": "부호가 있는 값에 대해 비트 연산",
  "rule.saqt.q.ccpp.1100.description": "부호가 있는 값에 대해 시프트 체커는 signed 정수형 객체를 시프트 연산자의 피연산자로 사용하는 수식을 검출합니다.\nsigned 정수형 변수를 시프트 연산에 사용하는 경우 부호 비트로 인해 원래 의도했던 값과 다른 결과가 발생할 수 있습니다.\n시프트 연산자의 피연산자에 unsigned 정수형 객체를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1100.example.0.dangerous": "라인 4: 시프트 연산에 signed int 타입의 x 변수를 사용했습니다.",
  "rule.saqt.q.ccpp.1100.example.0.safe": "라인 4: 시프트 연산의 피연산자는 unsigned 정수형이어야 합니다.",
  "rule.saqt.q.ccpp.1100.name": "부호가 있는 값에 대해 시프트",
  "rule.saqt.q.ccpp.1101.description": "부호가 없는 값에 대해 부정 연산 체커는 unsigned 정수형 변수에 단항 마이너스 연산자를 사용하는 수식을 검출합니다.\nunsigned 정수형 변수는 음수를 표현할 수 없습니다. 따라서 기본적으로 단항 마이너스 연산자를 unsigned 정수형 변수에 적용할 수 없습니다. 그러나 암시적 캐스팅으로 인해 일부 컴파일러에서는 해당 수식에서 예상하지 못한 결과가 발생할 수 있습니다.\nunsigned 정수형 변수에 단항 마이너스 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1101.example.0.dangerous": "라인 3: unsigned int 타입 x 변수에 단항 마이너스 연산자를 사용했습니다.",
  "rule.saqt.q.ccpp.1101.example.0.safe": "라인 3: x 변수의 타입을 int 타입으로 변경합니다.",
  "rule.saqt.q.ccpp.1101.name": "부호가 없는 값에 대해 부정 연산",
  "rule.saqt.q.ccpp.1102.description": ", 연산자 사용 체커는 콤마 연산을 사용한 수식을 검출합니다.\n이때 기본적으로 콤마가 들어가는 함수 호출의 인자 값 등은 제외합니다.\n콤마 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1102.example.0.dangerous": "라인 4: 콤마 연산자를 사용했습니다.",
  "rule.saqt.q.ccpp.1102.example.0.safe": "라인 4: 콤마 연산자를 사용하지 않고 수식을 분리합니다.\n라인 5: 콤마 연산자를 사용하지 않고 수식을 분리합니다.",
  "rule.saqt.q.ccpp.1102.name": ", 연산자 사용",
  "rule.saqt.q.ccpp.1103.description": "부동 소수점 값에 대해 비트 표현 사용 체커는 실수형으로 선언한 값을 비트 단위로 접근하는 캐스팅이나 선언 등을 검출합니다.\n실수형 값을 비트 단위로 접근하는 것은 위험한 방법입니다. 이것은 실수형 값의 메모리 체계(Memory Format)가 컴파일러마다 상이하여 이로 인해 의도했던 것과 달라질 수 있기 때문입니다.\n실수형 값을 비트 단위로 접근하지 않습니다. 구체적으로는 실수형 값을 비트 단위로 접근 가능한 다른 타입으로 캐스팅하거나 공용체에서 정수형과 같이 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1103.example.0.dangerous": "라인 3: float 타입 변수를 unsigned int 참조 타입으로 캐스팅했습니다. 이 경우 이 값을 비트 단위로 참조할 수 있게 됩니다.\n라인 6: 공용체에 float 타입과 unsigned int 타입을 동시에 사용했습니다. 이 경우 실수형 값을 대입하고 정수형 타입을 사용하여 비트 단위로 참조할 수 있게 됩니다.",
  "rule.saqt.q.ccpp.1103.example.0.safe": "라인 3: float 타입 변수를 참조로 대입하지 않고 값으로 대입하여 사용합니다.\n라인 6: 실수형 데이터 타입과 정수형 데이터 타입을 동시에 공용체의 필드로 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1103.name": "부동 소수점 값에 대해 비트 표현 사용",
  "rule.saqt.q.ccpp.1104.description": "암시적 비교 수식 체커는 조건문 등에서 Boolean 값을 암시적으로 비교한 경우를 검출합니다.\n구체적으로는 단순 변수를 0이나 널 값과 비교하기 위해 비교 구문 없이 사용하는 경우를 의미합니다.\nBoolean 값을 암시적으로 비교하는 코딩 스타일에 익숙해질 경우, 값이 항상 1과 0이 아닌 비교 구문에 대해서는 잘못 처리될 수 있습니다. 예를 들어 문자열을 비교하는 함수의 경우 일반적인 조건식과 다르게 0이 참이며, 거짓은 양수나 음수가 됩니다. 따라서 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n조건문 등에서 수식이 Boolean 값으로 끝나야 하는 경우 항상 명시적인 비교 구문을 작성하도록 합니다.",
  "rule.saqt.q.ccpp.1104.example.0.dangerous": "라인 2: if 구문 내의 조건식이 Boolean 표현이 아닙니다.",
  "rule.saqt.q.ccpp.1104.example.0.safe": "라인 2: if 구문내의 조건식을 Boolean 표현식이 되도록 비교 연산을 사용합니다.",
  "rule.saqt.q.ccpp.1104.name": "암시적 비교 수식",
  "rule.saqt.q.ccpp.1105.description": "반복문 인덱스로 실수 타입 사용 체커는 실수형 변수를 루프 카운터로 사용하는 경우를 검출합니다.\n실수는 사칙연산 과정에서 결과에 미세한 오차가 누적되어 생각했던 것과 다른 값이 될 수 있으므로 루프 카운터로 사용하기에 적합하지 않습니다. 코드를 작성할 때 의도하지 않은 횟수로 반복될 수 있습니다.\n루프 카운터에 실수형이 아닌 정수형 변수만을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1105.example.0.dangerous": "라인 2: 실수형 변수를 루프 카운터로 사용했습니다.",
  "rule.saqt.q.ccpp.1105.example.0.safe": "라인 2: 실수형 변수를 루프 카운터로 사용하지 않도록 합니다.\n라인 3: 만약 실수형 변수를 반복적으로 처리해야 하는 경우 따로 처리하도록 합니다.",
  "rule.saqt.q.ccpp.1105.name": "반복문 인덱스로 실수 타입 사용",
  "rule.saqt.q.ccpp.1106.description": "누락된 반복문 인덱스 변경 체커는 증감부에서 루프 카운터에 대한 증감 연산이 누락된 for 구문을 검출합니다.\nfor 구문의 증감부에서 루프 카운터의 증감 연산이 없을 경우 잘못된 반복문일 수 있습니다. 이 경우 보통 다른 곳에서 루프 카운터를 증감시키지만 사소한 변경이나 실수로 인해 무한 루프에 빠질 위험이 있습니다.\nfor 구문의 증감부에서는 항상 루프 카운터의 증감 연산을 수행하도록 합니다.",
  "rule.saqt.q.ccpp.1106.example.0.dangerous": "라인 3: for 구문의 증감부에서 루프 카운터 i 변수를 증가시키거나 감소시키지 않았습니다.",
  "rule.saqt.q.ccpp.1106.example.0.safe": "라인 3: for 구문의 증감부에서 루프 카운터의 i 변수에 증감 연산자를 사용합니다.",
  "rule.saqt.q.ccpp.1106.name": "누락된 반복문 인덱스 변경",
  "rule.saqt.q.ccpp.1107.description": "누락된 반복문 조건 체커는 평가부에서 루프 카운터에 대한 비교 연산이 누락된 for 구문을 검출합니다.\nfor 구문의 평가부에서 루프 카운터의 비교 연산이 없을 경우 잘못된 반복문일 수 있습니다. 이 경우 보통 다른 곳에서 루프 카운터를 비교하지만 사소한 변경이나 실수로 인해 무한 루프에 빠질 위험이 있습니다.\nfor 구문의 평가부에서는 항상 루프 카운터의 비교 연산을 수행하도록 합니다.",
  "rule.saqt.q.ccpp.1107.example.0.dangerous": "라인 1: 평가부에서 루프 카운터 i 변수를 평가하지 않았습니다.\n라인 7: 평가부에서 루프 카운터에 대한 비교 연산이 없습니다.",
  "rule.saqt.q.ccpp.1107.example.0.safe": "라인 1: 평가부에서 루프 카운터 i 변수에 대한 비교 연산을 수행합니다.\n라인 7: 평가부에서 루프 카운터 i 변수에 대한 비교 연산을 추가합니다.",
  "rule.saqt.q.ccpp.1107.name": "누락된 반복문 조건",
  "rule.saqt.q.ccpp.1108.description": "반복문 내에서 반복문 인덱스를 제외한 변수 변경 체커는 증감부에서 루프 카운터가 아닌 변수에 대해 증감 연산을 한 for 구문을 검출합니다.\nfor 구문의 증감부에서 루프 카운터가 아닌 변수를 증감 연산 하는 것은 잘못된 반복문일 수 있습니다. 이 경우 원래 증감 하려던 루프 카운터 대신 다른 변수를 잘못 사용했을 가능성이 있으며 무한 루프에 빠질 위험이 있습니다. 혹은 이러한 사용이 의도했던 것이라면 가독성 측면에서 좋지 않습니다.\nfor 구문의 증감부에서는 항상 루프 카운터만 증감 연산을 수행하도록 합니다.",
  "rule.saqt.q.ccpp.1108.example.0.dangerous": "라인 3: 루프 카운터 i 변수 외에 var 변수의 값도 증가시켰습니다.",
  "rule.saqt.q.ccpp.1108.example.0.safe": "라인 3: 루프 카운터 외에 다른 변수의 값을 증감시키지 않도록 합니다.",
  "rule.saqt.q.ccpp.1108.name": "반복문 내에서 반복문 인덱스를 제외한 변수 변경",
  "rule.saqt.q.ccpp.1109.description": "반복문 내에서의 여러 개의 초기화 체커는 초기화 영역에서 루프 카운터가 아닌 변수를 초기화한 for 구문을 검출합니다.\nfor 구문의 초기화 영역에서 루프 카운터가 아닌 변수를 초기화하는 것은 잘못된 반복문일 수 있습니다. 이 경우 원래 초기화하려던 루프 카운터 대신 다른 변수를 잘못 사용했을 가능성이 있으며 무한 루프에 빠질 위험이 있습니다. 혹은 이렇나 사용이 의도했던 것이라면 가독성 측면에서 좋지 않습니다.\nfor 구문의 초기와 영역에서는 항상 루프 카운터만 초기화하도록 합니다.",
  "rule.saqt.q.ccpp.1109.example.0.dangerous": "라인 4: 루프 카운터 i 변수 외에 var 변수도 초기화했습니다.",
  "rule.saqt.q.ccpp.1109.example.0.safe": "라인 3: 루프 카운터 외에 다른 변수의 값을 초기화시키지 않도록 합니다.",
  "rule.saqt.q.ccpp.1109.name": "반복문 내에서의 여러 개의 초기화",
  "rule.saqt.q.ccpp.111.description": "명시된 인자 미사용 체커는 옵션에 지정된 특정 함수에서 지정된 함수를 해당 함수의 인자로 사용하지 않은 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 호출 대상 함수의 비교 대상이 되는 인자 위치, 호출 대상 함수의 인자로 사용되는 함수 위치, 인자로 사용되는 함수 이름, 인자로 사용된 함수에서 비교 대상이 되는 인자 위치, 비교 모드 설정을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수의 인자와 사용된 함수의 인자가 동일하게 맞춰져야 합니다.",
  "rule.saqt.q.ccpp.111.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: memcpy_API12() 함수를 호출했습니다. 세 번째 인자로 사용된 strlen_API12() 함수 인자와 memcpy_API12() 함수의 첫 번째 인자가 일치하지 않으므로 검출됩니다.",
  "rule.saqt.q.ccpp.111.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: memcpy_API12() 함수를 호출했습니다. 세 번째 인자로 사용된 strlen_API12() 함수 인자와 memcpy_API12() 함수의 첫 번째 인자가 일치합니다.",
  "rule.saqt.q.ccpp.111.name": "명시된 인자 미사용",
  "rule.saqt.q.ccpp.111.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.111.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.111.option.call_target_call_param.description": "함수 호출이어야 하는 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.ccpp.111.option.call_target_call_param.name": "함수 호출이어야 하는 파라미터 인덱스",
  "rule.saqt.q.ccpp.111.option.call_target_compare_param.description": "호출 대상 함수의 비교대상이 되는 파라미터를 설정합니다.",
  "rule.saqt.q.ccpp.111.option.call_target_compare_param.name": "호출 대상 함수의 비교대상이 되는 파라미터",
  "rule.saqt.q.ccpp.111.option.call_target_param_call.description": "파라미터로 호출할 함수 이름을 설정합니다.",
  "rule.saqt.q.ccpp.111.option.call_target_param_call.name": "파라미터로 호출할 함수 이름",
  "rule.saqt.q.ccpp.111.option.call_target_param_compare_mode.description": "decimal : 상수 숫자.string : 상수 문자열.variable: 변수",
  "rule.saqt.q.ccpp.111.option.call_target_param_compare_mode.name": "비교 모드를 설정합니다.",
  "rule.saqt.q.ccpp.111.option.call_target_param_compare_param.description": "파라미터로 호출된 함수에서 비교대상이 되는 파라미터를 설정합니다.",
  "rule.saqt.q.ccpp.111.option.call_target_param_compare_param.name": "파라미터로 호출된 함수에서 비교대상이 되는 파라미터",
  "rule.saqt.q.ccpp.111.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.saqt.q.ccpp.111.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.ccpp.111.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.saqt.q.ccpp.111.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.ccpp.111.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.111.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.ccpp.1110.description": "반복문 내에서 변경된 반복문 인덱스 체커는 for 구문의 증감부가 아닌 본문에서 루프 카운터를 변경하는 수식을 검출합니다.\nfor 구문의 본문에서 루프 카운터를 증감 연산 하는 것은 잘못된 반복문일 수 있습니다. 이 경우 제어 흐름을 잘못 설계할 경우 무한 루프에 빠질 위험이 있습니다. 혹은 이러한 사용이 의도했던 것이라면 가독성 측면에서 좋지 않습니다.\nfor 구문의 본문에서는 루프 카운터의 증감 연산을 수행하지 않도록 합니다. 루프 카운터는 오로지 증감부에서 변경되어야 합니다.",
  "rule.saqt.q.ccpp.1110.example.0.dangerous": "라인 4: for 구문 본문에서 루프 카운터 a 변수를 변경했습니다.\n라인 5: for 구문 본문에서 루프 카운터 a 변수를 변경했습니다.",
  "rule.saqt.q.ccpp.1110.example.0.safe": "라인 3: 루프 카운터는 for 구문의 증감부에서만 변경하도록 합니다.",
  "rule.saqt.q.ccpp.1110.name": "반복문 내에서 변경된 반복문 인덱스",
  "rule.saqt.q.ccpp.1113.description": "switch 구문 조건 내 불린 수식 체커는 조건부에 일반 변수가 아니라 Boolean 값이 나오는 switch 구문을 검출합니다.\nBoolean 값은 true나 false로 결정되는 값입니다. 이 경우 굳이 switch 구문을 사용할 필요가 없습니다.\nswitch 구문의 조건부에 Boolean 값이 오지 않도록 합니다. 만약 Boolean 값이 와야 하는 경우 switch 구문 대신 if 구문을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1113.example.0.dangerous": "라인 2: switch 구문의 조건부에 Boolean 값이 왔습니다.",
  "rule.saqt.q.ccpp.1113.example.0.safe": "라인 2: switch 구문의 조건부에는 Boolean 값이 오지 않도록 합니다.",
  "rule.saqt.q.ccpp.1113.name": "switch 구문 조건 내 불린 수식",
  "rule.saqt.q.ccpp.1114.description": "빈 switch 구문 체커는 switch 구문 내부에서 case 절이나 default 절이 하나도 없는 경우를 검출합니다.\nswitch 구문이 반드시 최소 한 개의 case 절을 가지도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1114.example.0.dangerous": "라인 2: switch 구문에 case 절이 다만 한 개도 없습니다.",
  "rule.saqt.q.ccpp.1114.example.0.safe": "라인 2: switch 구문이 최소 1개의 case 절을 가지도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1114.name": "빈 switch 구문",
  "rule.saqt.q.ccpp.1115.description": "함수의 가변 인자 체커는 함수를 선언할 때 가변 인자를 사용하는 코드를 검출합니다.\n몇몇 함수에서는 가변 인자가 유용하게 쓰이는 경우가 있습니다. 하지만 컴파일러가 가변 인자에 대한 타입 검사를 수행하지 않기 때문에 이로 인해 프로그램이 오동작할 가능성이 있습니다. 특히 안정성이 중요한 프로그램을 개발하는 경우 가변 인자를 사용하면 상당한 위험이 따를 수 있습니다. 따라서 가변 인자를 사용하지 않는 것이 좋습니다.\n함수를 선언할 때 가변 인자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1115.example.0.dangerous": "라인 2: 함수를 선언할 때 가변 인자를 사용했습니다.",
  "rule.saqt.q.ccpp.1115.example.0.safe": "라인 2: 함수를 선언할 때 가변 인자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1115.name": "함수의 가변 인자",
  "rule.saqt.q.ccpp.1116.description": "부적절한 읽기 전용 파라미터 선언 체커는 매개 변수로 사용할 클래스 타입을 const 참조형으로 선언하지 않은 경우를 검출합니다.\n클래스 타입을 제외한 기본 타입은 값으로 전달합니다.\n클래스 타입 매개 변수를 const 참조형으로 전달하고 기본 타입을 값으로 전달하는 방법이 해당 타입의 보편적인 크기와 사용성을 고려했을 때 가장 이상적이기 때문입니다. 만약 클래스 타입을 값으로 전달한다면 불필요한 복사 연산 비용을 지불해야 하며, 포인터로 전달한다면 클래스 타입 객체가 널 포인터일 수 있습니다. 따라서 잘못 접근하는 경우 런타임 오류가 발생합니다.\n클래스 타입 매개 변수를 const 참조형으로 전달하도록 합니다.",
  "rule.saqt.q.ccpp.1116.example.0.dangerous": "라인 4: 클래스 타입 매개 변수를 값으로 대입했습니다.",
  "rule.saqt.q.ccpp.1116.example.0.safe": "라인 4: 클래스 타입을 const 참조형으로 전달하도록 합니다.",
  "rule.saqt.q.ccpp.1116.name": "부적절한 읽기 전용 파라미터 선언",
  "rule.saqt.q.ccpp.1117.description": "함수 식별자의 직접 사용 체커는 함수 식별자를 올바르지 않은 방법으로 사용한 경우를 검출합니다.\n여기서 올바른 방법이란 함수 식별자를 & 연산자의 피연산자로 사용하거나, 인자 목록을 포함하는 괄호와 함께 사용하는 것입니다. 즉 함수 포인터의 주소 값을 사용하거나 함수 호출의 방법으로 사용하는 것을 의미합니다.\n올바르지 않은 함수 식별자 사용의 경우 대부분 함수 호출을 잘못 사용했을 가능성이 높습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n함수 식별자는 함수 포인터의 주소 값으로 사용하거나 함수 호출로만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1117.example.0.dangerous": "라인 3: foo() 함수를 일반 변수처럼 사용했습니다.\n라인 13: MISRA2008_8_4_4___f1() 함수를 & 연산자 없이 사용했습니다.\n라인 17: MISRA2008_8_4_4___f1() 함수를 & 연산자 없이 사용했습니다.",
  "rule.saqt.q.ccpp.1117.example.0.safe": "라인 3: foo() 함수를 함수 호출 형태로 사용합니다.\n라인 13: MISRA2008_8_4_4___f1() 함수를 & 연산자의 피연산자로 사용합니다. 이 수식의 결과는 함수 포인터를 접근하게 됩니다.\n라인 17: MISRA2008_8_4_4___f1() 함수를 & 연산자의 피연산자로 사용합니다. 이 수식의 결과는 함수 포인터를 접근하게 됩니다.",
  "rule.saqt.q.ccpp.1117.name": "함수 식별자의 직접 사용",
  "rule.saqt.q.ccpp.1118.description": "일반 포인터에 대해 산술 연산 체커는 배열이 아닌 일반 포인터 타입 객체에 포인터 연산을 사용한 수식을 검출합니다.\n배열이 아닌 포인터 타입 객체에 포인터 연산을 수행하는 것은 유효한 주소를 가리킨다는 보장이 없습니다. 따라서 유효하지 않은 메모리 영역을 접근할 위험이 커지게 됩니다.\n포인터 연산은 배열 타입 객체나 배열 타입 객체를 가리키는 포인터에만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1118.example.0.dangerous": "라인 2: 배열이 아닌 일반 포인터 타입 객체에 대해 포인터 연산을 수행했습니다.",
  "rule.saqt.q.ccpp.1118.example.0.safe": "라인 3: 배열을 가리키는 포인터에 대해서만 포인터 연산을 수행합니다.",
  "rule.saqt.q.ccpp.1118.name": "일반 포인터에 대해 산술 연산",
  "rule.saqt.q.ccpp.1119.description": "다른 객체 포인터의 감소 연산 체커는 같은 배열 요소가 아닌 객체 간에 포인터 감소 연산을 수행하는 수식을 검출합니다.\n다른 배열 요소 간에 포인터 감소 연산을 수행하면 결과를 예측할 수 없습니다. 포인터의 주소 값은 런타임 때마다 달라지며, 같은 배열 요소가 아닌 경우 이러한 감소 연산을 수행하는 것은 매번 결과가 달라질 수밖에 없습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n서로 다른 배열 요소 간에 포인터 감소 연산을 수행하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1119.example.0.dangerous": "라인 7: p1 변수와 p2 변수를 포인터 감소 연산으로 계산했습니다. 여기서 두 포인터가 다른 배열을 가리켰습니다.",
  "rule.saqt.q.ccpp.1119.example.0.safe": "라인 7: 같은 배열을 가리키는 포인터 간에 감소 연산을 수행하도록 합니다.",
  "rule.saqt.q.ccpp.1119.name": "다른 객체 포인터의 감소 연산",
  "rule.saqt.q.ccpp.112.description": "인자로 리터럴 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 위치의 인자에 리터럴 혹은 문자열로 전달하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 숫자를 사용하지 말아야 할 인자 위치, 문자열을 사용하지 말아야 할 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 숫자 혹은 문자열을 입력하지 않도록 합니다.",
  "rule.saqt.q.ccpp.112.example.0.dangerous": "라인 3: 옵션에서 분석 대상 함수에 memset_API13() 을 입력했다고 가정합니다. 첫 번째 인자에 문자열이 있으므로 검출됩니다.",
  "rule.saqt.q.ccpp.112.example.0.safe": "라인 3: 옵션에서 분석 대상 함수에 memset_API13() 을 입력했다고 가정합니다. 첫 번째 인자에 문자가 있으므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.112.name": "인자로 리터럴 사용",
  "rule.saqt.q.ccpp.112.option.call_param_should_not_be_deciaml.description": "숫자를 사용하지 말아야 할 호출 파라미터를 설정합니다.",
  "rule.saqt.q.ccpp.112.option.call_param_should_not_be_deciaml.name": "숫자를 사용하지 말아야 할 호출 파라미터",
  "rule.saqt.q.ccpp.112.option.call_param_should_not_be_string.description": "문자열을 사용하지 말아야 할 호출 파라미터를 설정합니다.",
  "rule.saqt.q.ccpp.112.option.call_param_should_not_be_string.name": "문자열을 사용하지 말아야 할 호출 파라미터",
  "rule.saqt.q.ccpp.112.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.ccpp.112.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.ccpp.112.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.112.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.ccpp.1120.description": "다른 객체 포인터 간 비교 체커는 같은 배열 요소가 아닌 객체 간에 비교 연산을 수행하는 수식을 검출합니다.\n비교 연산은 <, <=, >, >=, == 연산 등을 의미합니다.\n다른 배열 요소 간에 비교 연산을 수행하면 결과를 예측할 수 없습니다. 포인터의 주소 값은 런타임 때마다 달라지며, 같은 배열 요소가 아닌 경우 이러한 비교 연산을 수행하는 것은 매번 결과가 달라질 수밖에 없습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n서로 다른 배열 요소 간에 비교 연산을 수행하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1120.example.0.dangerous": "라인 6: p1 변수와 p2 변수를 비교 연산으로 계산했습니다. 여기서 두 포인터가 다른 배열을 가리켰습니다.",
  "rule.saqt.q.ccpp.1120.example.0.safe": "라인 6: 같은 배열을 가리키는 포인터 간에 비교 연산을 수행하도록 합니다.",
  "rule.saqt.q.ccpp.1120.name": "다른 객체 포인터 간 비교",
  "rule.saqt.q.ccpp.1121.description": "포인터 타입 변수에 대한 배열 접근 체커는 배열이 안니 일반 포인터 타입 객체에 배열 접근 연산을 사용한 수식을 검출합니다.\n배열이 아닌 포인터 타입 객체에 배열 접근 연산을 수행하는 것은 유효한 주소를 가리킨다는 보장이 없습니다. 따라서 유효하지 않은 메모리 영역을 접근할 위험이 커지게 됩니다.\n배열 접근 연산은 배열 타입 객체나 배열 타입 객체를 가리키는 포인터에만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1121.example.0.dangerous": "라인 3: 포인터 타입 param 변수에 배열 접근 연산자를 사용했습니다.\n라인 4: 포인터 타입 param 변수에 배열 접근 연산자를 사용했습니다.",
  "rule.saqt.q.ccpp.1121.example.0.safe": "라인 3: 배열 타입에만 배열 접근 연산자를 사용합니다.",
  "rule.saqt.q.ccpp.1121.name": "포인터 타입 변수에 대한 배열 접근",
  "rule.saqt.q.ccpp.1121.option.ignore_parameter.description": "파라미터로 변수는 분석대상에서 제외합니다.",
  "rule.saqt.q.ccpp.1121.option.ignore_parameter.name": "파라미터 변수를 무시합니다.",
  "rule.saqt.q.ccpp.1123.description": "겹치는 메모리 영역의 객체 간 대입 연산 체커는 수식을 평가하면서 서로 메모리 영역이 겹치는 부분 간에 대입이 발생하는 수식을 검출합니다.\n구체적으로는 문자열 관련 함수를 사용하면서 원본 객체와 목적 객체의 메모리가 겹치는 부분이 있는 경우를 검출합니다.\n메모리 저장 영역이 겹치는 객체 간에 대입 연산을 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n서로 메모리 영역이 겹치는 객체 간에는 대입이 일어나는 함수를 호출하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1123.example.0.dangerous": "라인 3: char 타입 배열인 str 변수에 str 변수를 복사했습니다.",
  "rule.saqt.q.ccpp.1123.example.0.safe": "라인 4: 원본 객체와 목적 객체의 메모리 영역이 겹치지 않아야 합니다.",
  "rule.saqt.q.ccpp.1123.name": "겹치는 메모리 영역의 객체 간 대입 연산",
  "rule.saqt.q.ccpp.1124.description": "중복 저장소에 할당 체커는 수식을 평가하면서 서로 메모리 영역이 겹치는 공용체 필드 간에 대입이 발생하는 수식을 검출합니다.\n메모리 저장 영역이 겹치는 객체 간에 대입 연산을 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n같은 공용체 객체의 필드 간에는 대입 연산을 수행하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1124.example.0.dangerous": "라인 7: 공용체 객체 ut1의 a 필드에 b 필드를 대입했습니다. 둘은 같은 메모리 영역에 있습니다.",
  "rule.saqt.q.ccpp.1124.example.0.safe": "라인 7 : 같은 공용체 객체의 필드 간에 대입 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1124.name": "중복 저장소에 할당",
  "rule.saqt.q.ccpp.1125.description": "금지된 표준 라이브러리 함수 사용 체커는 표준 라이브러리 함수 중 일부 금지된 함수를 호출한 수식을 검출합니다.\n금지된 함수는 stdlib.h 에 정의된 abort(), exit(), getenv(), system() 함수입니다.\nC의 표준 라이브러리 중 stdlib.h에 속한 일부 함수는 결함이 많고 오류가 발생하기 쉽습니다. 이 라이브러리를 대체할 다른 라이브러리를 사용하는 것이 좋습니다.\n금지된 표준 라이브러리를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1125.example.0.dangerous": "라인 3: 금지된 exit() 함수를 사용했습니다.",
  "rule.saqt.q.ccpp.1125.example.0.safe": "라인 2: 금지된 함수를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1125.name": "금지된 표준 라이브러리 함수 사용",
  "rule.saqt.q.ccpp.1125.option.check_misra_2004.description": "\"abort\", \"exit\", \"getenv\", \"system\" 함수가 분석에 포함됩니다.",
  "rule.saqt.q.ccpp.1125.option.check_misra_2004.name": "검출 대상 함수 이름",
  "rule.saqt.q.ccpp.1125.option.check_misra_2012.description": "\"qsort\", \"bsearch\" 함수가 분석에 포함됩니다.",
  "rule.saqt.q.ccpp.1125.option.check_misra_2012.name": "검출 대상 함수 이름",
  "rule.saqt.q.ccpp.1126.description": "금지된 시간 함수 사용 체커는 시간 라이브러리 헤더를 포함한 전처리 구문을 검출합니다.\n이 규칙은 다른 금지된 함수와 관련된 규칙과 다르게 헤더 파일 포함 자체를 금지하고 있습니다. 금지된 시간 라이브러리는 time.h입니다.\n시간 라이브러리 중 일부 함수는 명시되지 않은 동작(Unspecified Behavior)입니다. 컴파일러는 이것에 대하여 구현 방법을 제공하지만 문서로 명세해두지는 않습니다. 경우에 따라 의도한 것과 다른 동작이 있을 수 있습니다.\n금지된 시간 라이브러리를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1126.example.0.dangerous": "라인 2: time.h 헤더 파일을 포함했습니다.",
  "rule.saqt.q.ccpp.1126.example.0.safe": "라인 2: time.h 헤더 파일을 포함하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1126.name": "금지된 시간 함수 사용",
  "rule.saqt.q.ccpp.1127.description": "switch 구문 밖에서의 break 구문 사용 체커는 switch 구문을 제외한 다른 문장에서 break 구문을 사용한 경우를 검출합니다.\nbreak 구문은 switch 구문 외에도 반복문에서 제어 흐름을 정해진 방법 외에 탈출할 때 사용합니다. 이 경우 제어 흐름이 복잡해지고 가독성이 떨어지는 문제가 발생할 수 있습니다.\nbreak 구문은 switch 구문에서만 사용하도록 합니다. 꼭 break 구문이 필요한 경우, 조건식을 변경하여 break 구문이 없어도 제어 흐름을 벗어날 수 있도록 코드를 수정합니다.",
  "rule.saqt.q.ccpp.1127.example.0.dangerous": "라인 4: while 구문 내에서 while 구문을 탈출하기 위해 break 구문을 사용했습니다.",
  "rule.saqt.q.ccpp.1127.example.0.safe": "라인 2: while 구문 내에서 break 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1127.name": "switch 구문 밖에서의 break 구문 사용",
  "rule.saqt.q.ccpp.1128.description": "비 const 함수 포인터 체커는 함수 포인터 선언 시 const를 붙이지 않은 경우를 검출합니다.\n함수 포인터가 const 가 아닐 경우 필요에 따라 해당 함수 포인터가 가리키는 함수를 변경할 수 있습니다. 이 경우 프로그램의 흐름을 추적하기 어려워지고 예측할 수 없는 결과가 발생하기도 합니다.\n함수 포인터는 반드시 const를 붙여 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1128.example.0.dangerous": "라인 6: 함수 포인터인 fp1 변수를 const 없이 선언했습니다.",
  "rule.saqt.q.ccpp.1128.example.0.safe": "라인 6: 함수 포인터는 const 로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1128.name": "비 const 함수 포인터",
  "rule.saqt.q.ccpp.113.description": "인자로 변수 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 변수를 전달하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 변수를 사용하지 말아야 할 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.113.example.0.dangerous": "라인 3: memcpy_API14() 함수를 호출했습니다. 함수의 첫 번째 인자가 변수이므로 검출됩니다.",
  "rule.saqt.q.ccpp.113.example.0.safe": "라인 3: memcpy_API14() 함수를 호출했습니다. 함수의 첫 번째 인자가 문자열이므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.113.name": "인자로 변수 사용",
  "rule.saqt.q.ccpp.113.option.call_param_should_not_be_variable.description": "특정 변수를 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.ccpp.113.option.call_param_should_not_be_variable.name": "파리미터로 사용하지 말아야 할 변수",
  "rule.saqt.q.ccpp.113.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.113.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.113.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.113.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.ccpp.1130.description": "구조체 및 공용체 내 익명 필드 체커는 구조체나 공용체에서 이름이 없는 필드를 선언한 경우를 검출합니다.\n이름이 없는 구조체 혹은 공용체 필드는 접근할 방법이 없습니다. 이러한 선언은 특별한 목적이 있지 않는 이상 사용하지 않는 것이 좋습니다.\n구조체나 공용체에서 필드를 선언할 때 항상 이름을 가지도록 합니다.",
  "rule.saqt.q.ccpp.1130.example.0.dangerous": "라인 4: 이름 없는 비트 필드를 선언했습니다.\n라인 6: 이름 없는 구조체 타입 필드를 선언했습니다.",
  "rule.saqt.q.ccpp.1130.example.0.safe": "라인 1: 모든 필드들이 이름을 가지도록 구조체를 선언합니다.",
  "rule.saqt.q.ccpp.1130.name": "구조체 및 공용체 내 익명 필드",
  "rule.saqt.q.ccpp.1131.description": "포인터 타입 재정의 체커는 함수 포인터를 제외하고 포인터형을 typedef로 선언한 경우를 검출합니다.\n포인터형을 typedef로 선언할 때 const 한정자를 붙이면 적용되는 방법이 달라집니다. 따라서 const 한정자를 사용하였음에도 객체를 수정할 수 있게 되는 문제 등이 발생할 수 있습니다.\n포인터형을 typedef로 선언하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1131.example.0.dangerous": "라인 5: 포인터형을 typedef로 선언했습니다.\n라인 7: const 한정자를 붙였으나 매개 변수의 값을 수정할 수 있게 됩니다.",
  "rule.saqt.q.ccpp.1131.example.0.safe": "라인 7: typedef로 선언하지 않은 포인터형에 const 한정자를 붙였으므로 정상적으로 매개 변수의 값을 수정할 수 없습니다.",
  "rule.saqt.q.ccpp.1131.name": "포인터 타입 재정의",
  "rule.saqt.q.ccpp.1133.description": "소문자 long 접미사 체커는 long 타입 상수에서 소문자 L을 접미사로 사용하는 수식을 검출합니다.\nlong 타입 상수에서 소문자 L을 접미사로 사용하면 숫자 1과 혼동될 수 있습니다.\nlong 타입 상수의 접미사로 항상 대문자 L을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1133.example.0.dangerous": "라인 1: long 타입 상수 111의 접미사로 소문자 L을 사용했습니다.",
  "rule.saqt.q.ccpp.1133.example.0.safe": "라인 1: long 타입 상수의 접미사로 대문자 L을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1133.name": "소문자 long 접미사",
  "rule.saqt.q.ccpp.1134.description": "부적절한 가변형 배열 멤버 선언 체커는 올바르지 않은 문법으로 가변형 배열을 선언한 경우를 검출합니다.\n가변형 배열(Variable Array Length)이란 배열의 크기를 컴파일 타임에 명시하지 않는 배열로써 런타임에서 배열 크기를 지정할 수 있습니다. 여기서 올바르지 않은 문법이란 가변형 배열을 표현할 때 [1]과 같이 배열의 크기를 1로 명시하는 것을 가리킵니다.\nC99에서 가변형 배열을 선언할 때 크기를 1로 명시하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n가변형 배열을 사용하는 경우 크기를 명시하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1134.example.0.dangerous": "라인 4: 구조체에서 가변형 배열을 선언했습니다. 동시에 배열 크기를 1로 명시했습니다.",
  "rule.saqt.q.ccpp.1134.example.0.safe": "라인 4: 가변형 배열을 사용하려면 배열 크기를 명시하지 않고 선언합니다.",
  "rule.saqt.q.ccpp.1134.name": "부적절한 가변형 배열 멤버 선언",
  "rule.saqt.q.ccpp.1135.description": "memcmp의 인자로 구조체 사용 체커는 memcmp()의 피연산자로 구조체 객체를 사용하는 수식을 검출합니다.\n구조체를 선언하면 필드와 필드 사이에 패딩 비트(Padding bit)가 발생할 수 있습니다. 패딩 비트에는 기본적으로 값이 지정되지 않으므로 바이트 단위의 비교를 수행하면 잘못된 결과가 발생할 수 있습니다.\n구조체 객체를 비교할 경우에는 memcmp() 함수를 사용하지 않고 필드를 직접 비교하도록 합니다.",
  "rule.saqt.q.ccpp.1135.example.0.dangerous": "라인 8: memcmp() 함수의 인자로 구조체를 사용했습니다.",
  "rule.saqt.q.ccpp.1135.example.0.safe": "라인 8: memcmp() 함수의 인자로 구조체를 사용하지 않도록 합니다. 대신 구조체의 필드를 비교합니다.",
  "rule.saqt.q.ccpp.1135.name": "memcmp의 인자로 구조체 사용",
  "rule.saqt.q.ccpp.1136.description": "가정된 상수 값 체커는 이미 명명된 상수를 매크로로 가정하여 사용하는 수식을 검출합니다. BUFSIZE와 같은 알려진 상수 값을 수식으로 표현하지 않도록 합니다.\n대표적으로 stdio.h 헤더 파일에 정의되는 BUFSIZE와 같은 명명된 상수가 있습니다. 해당 상수의 값은 기본적으로 512입니다.\n값이 다른 경우 예상하지 못한 문제가 발생할 수 있습니다.\n명명된 상수인 경우 가정하지 않고 그대로 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1136.example.0.dangerous": "라인 3: BUFSIZE가 512라 가정하고 2를 9번 시프트 연산한 값을 사용했습니다.",
  "rule.saqt.q.ccpp.1136.example.0.safe": "라인 3: 명명된 상수를 사용합니다.",
  "rule.saqt.q.ccpp.1136.name": "가정된 상수 값",
  "rule.saqt.q.ccpp.1137.description": "부적절한 연산자 결합 체커는 다수의 비교 연산자를 괄호 없이 논리 연산자의 바로 뒤에 사용하는 수식을 검출합니다.\n비교 연산자를 이어서 사용하는 것은 올바른 방법이 아닐 가능성이 높습니다. 다수의 비교 연산자가 이어져 있는 경우 첫 번째 비교 연산의 결과인 Boolean 값을 다음 비교 연산의 피연산자로 사용하게 됩니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n다수의 비교 연산자를 이어서 사용하는 경우 괄호를 사용하여 논리 연산자와 분리하도록 합니다.",
  "rule.saqt.q.ccpp.1137.example.0.dangerous": "라인 5: < 연산자를 여러 번 사용했습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n라인 8: == 연산자를 여러 번 사용했습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.1137.example.0.safe": "라인 5: 괄호를 사용하여 < 연산자와 논리 연산자를 분리합니다.\n라인 8: 괄호를 사용하여 == 연산자와 논리 연산자를 분리합니다.",
  "rule.saqt.q.ccpp.1137.name": "부적절한 연산자 결합",
  "rule.saqt.q.ccpp.1138.description": "구문과 같은 라인에 위치한 세미콜론 체커는 if, for, while 구문과 같은 줄에 세미콜론이 위치하는 수식을 검출합니다.\nif, for, while 구문과 같은 줄에 세미콜론이 위치하는 경우 잘못 사용했을 가능성이 있습니다. 일반적으로 해당 구문은 조건식이나 반복 조건을 검사한 후에 본문으로 이어집니다. 하지만 세미콜론이 있다면 본문으로 이어지지 않고 그대로 끝나게 됩니다. 따라서 개발자가 의도하지 않은 결과일 가능성이 높습니다. 만약 정상적으로 본문 후에 세미콜론이 있다고 하더라도 가독성을 위해서나 실수를 방지하기 위해 조건식과 본문을 분리해주는 것이 좋습니다.\nif, for, while 구문과 같은 줄에서 세미콜론을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1138.example.0.dangerous": "라인 1: 세미콜론을 if 구문과 같은 라인에 작성했습니다. 세미콜론 뒤의 본문은 if 구문의 조건식과 관계없이 실행됩니다.",
  "rule.saqt.q.ccpp.1138.example.0.safe": "라인 1: 세미콜론을 if 구문과 같은 라인에 작성하지 않습니다.",
  "rule.saqt.q.ccpp.1138.name": "구문과 같은 라인에 위치한 세미콜론",
  "rule.saqt.q.ccpp.1139.description": "비 volatile 참조를 통한 volatile 객체 접근 체커는 volatile 한정자를 가지지 않은 변수로 volatile 변수를 참조하는 수식을 검출합니다.\nvolatile 한정자를 가지지 않은 일반 변수로 volatile 변수를 참조하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\nvolatile 변수로만 volatile 변수를 참조할 수 있습니다.",
  "rule.saqt.q.ccpp.1139.example.0.dangerous": "라인 7: volatile이 아닌 ip 변수의 주소 값을 volatile인 ipp 변수에 대입했습니다. 따라서 volatile이 아닌 변수로 volatile 변수에 접근하게 됩니다.\n라인 8: volatile이 아닌 ip 변수의 주소 값을 volatile인 ipp 변수에 대입했습니다. 따라서 volatile이 아닌 변수로 volatile 변수에 접근하게 됩니다.",
  "rule.saqt.q.ccpp.1139.example.0.safe": "라인 6: volatile 변수에서만 volatile 변수를 참조하도록 합니다.",
  "rule.saqt.q.ccpp.1139.name": "비 volatile 참조를 통한 volatile 객체 접근",
  "rule.saqt.q.ccpp.114.description": "변수가 아닌 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 변수가 아닌 값을 전달하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 변수를 사용해야 할 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 변수를 사용해야 합니다.",
  "rule.saqt.q.ccpp.114.example.0.dangerous": "라인 3: memcpy_API15() 함수를 호출했습니다. 함수의 첫 번째 인자가 문자열이므로 검출됩니다.",
  "rule.saqt.q.ccpp.114.example.0.safe": "라인 3: memcpy_API15() 함수를 호출했습니다. 함수의 첫 번째 인자가 변수이므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.114.name": "변수가 아닌 인자 사용",
  "rule.saqt.q.ccpp.114.option.call_param_should_be_variable.description": "반드시 사용해야 하는 변수와 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.ccpp.114.option.call_param_should_be_variable.name": "반드시 사용해야 하는 변수와 파라미터 인덱스",
  "rule.saqt.q.ccpp.114.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.114.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.114.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.saqt.q.ccpp.114.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.ccpp.1140.description": "임시 객체 수정 체커는 수식의 결과로 인해 생성된 임시 객체를 변경하는 경우를 검출합니다.\n임시 객체를 수정하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n임시 객체를 수정하지 않도록 합니다. 필요한 경우 일반적인 변수에 값을 받아 수정합니다.",
  "rule.saqt.q.ccpp.1140.example.0.dangerous": "라인 8: get_x() 함수의 반환값으로 생성된 임시 객체의 값을 수정했습니다.",
  "rule.saqt.q.ccpp.1140.example.0.safe": "라인 8: get_x() 함수의 반환값을 변수에 저장한 후 해당 변수를 수정합니다.",
  "rule.saqt.q.ccpp.1140.name": "임시 객체 수정",
  "rule.saqt.q.ccpp.1141.description": "누락된 입력 함수에 대한 오류 처리 체커는 문자 데이터를 변환하기 위한 입력 함수에서 발생한 오류를 처리하지 않는 경우를 검출합니다.\n여기서 입력 함수란 scanf() 함수 등을 가리킵니다.\n혹은, 문자 데이터를 숫자로 변환하기 위해 입력 함수를 사용할 수도 있습니다. 하지만 개발자가 의도한 값만 들어온다고 보장할 수 없습니다. 따라서 가능한 입력을 모두 처리하지 않으면 비정상적인 동작이 일어날 수 있습니다.\n문자 데이터를 변환하기 위해 입력 함수를 사용하는 경우 해당 입력에서 발생하는 오류를 처리하도록 합니다. 예를 들어, errno 값 등을 검사해야 합니다.",
  "rule.saqt.q.ccpp.1141.example.0.dangerous": "라인 2: scanf() 함수를 사용하여 입력 받은 문자 데이터를 숫자로 변환했습니다. 하지만 오류에 대한 대응이 누락되었습니다.",
  "rule.saqt.q.ccpp.1141.example.0.safe": "라인 6: scanf() 함수가 실패한 경우에는 errno 검사를 수행합니다.",
  "rule.saqt.q.ccpp.1141.name": "누락된 입력 함수에 대한 오류 처리",
  "rule.saqt.q.ccpp.1142.description": "단일 식 내 시프트 및 산술 연산 체커는 동일한 변수를 비트 연산자와 산술 연산자의 피연산자로 사용하는 수식을 검출합니다.\n정수형의 기본 유형에 따라 비트 연산의 결과가 달라질 수 있습니다. 이것은 구현 정의 동작(Implementation Defined Behavior)입니다. 따라서 컴파일러마다 비트 연산의 결과가 달라질 수 있으며, 산술 연산의 결과도 영향을 받게 됩니다. 뿐만 아니라 변수를 사용하는 방법으로 인해 가독성을 떨어트리게 됩니다.\n동일한 변수에 대해 비트 연산과 산술 연산을 모두 수행하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1142.example.0.dangerous": "라인 2: x 변수에 대해 비트 연산을 수행한 후에 다시 산술 연산을 수행했습니다.",
  "rule.saqt.q.ccpp.1142.example.0.safe": "라인 2: 동일한 변수에 대해 비트 연산과 산술 연산을 모두 수행하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1142.name": "단일 식 내 시프트 및 산술 연산",
  "rule.saqt.q.ccpp.1143.description": "가정된 부호가 있는 정수 표현법 체커는 특정한 signed 정수의 표현을 가정하는 경우를 검출합니다.\n컴파일러마다 정수의 부호 표시가 다릅니다. 따라서 특정한 signed 정수의 표현을 가정한다면 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n특정한 signed 정수의 표현을 가정하지 않도록 합니다. 예를 들어 signed 정수를 1의 보수로 표현한다고 가정하여 홀수 짝수를 판단하기 위해 0x1 비트 연산을 수행하는 경우가 있습니다.",
  "rule.saqt.q.ccpp.1143.example.0.dangerous": "라인 3: value 변수에 0x1 비트 연산을 수행했습니다. 여기서는 컴파일러가 signed 정수를 1의 보수로 표현한다고 가정했기 때문입니다.",
  "rule.saqt.q.ccpp.1143.example.0.safe": "라인 3: signed 정수의 표현을 컴파일러에 의존하지 않고 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1143.name": "가정된 부호가 있는 정수 표현법",
  "rule.saqt.q.ccpp.1145.description": "누락된 부동 소수점 반환 값 형변환 체커는 실수형을 반환하는 함수에서 값을 실수형으로 캐스팅하지 않고 반환하는 구문을 검출합니다.\n수식의 결과를 실수형으로 캐스팅하지 않고 반환하는 경우 정밀도에 문제가 발생할 수 있습니다. 따라서 컴파일하는 환경에 따라 미묘한 값의 차이가 발생하게 되며 이것은 개발자가 의도하지 않은 결과일 수 있습니다.\n실수형을 반환하는 함수에서는 반환값을 명시적으로 실수형으로 캐스팅한 후에 반환하도록 합니다.",
  "rule.saqt.q.ccpp.1145.example.0.dangerous": "라인 2: 명시적인 캐스팅 없이 반환값을 반환했습니다. 이 함수의 반환 타입은 실수형입니다.",
  "rule.saqt.q.ccpp.1145.example.0.safe": "라인 2: 반환 타입이 실수형인 함수에서는 반드시 반환값을 명시적으로 캐스팅한 후에 반환하도록 합니다.",
  "rule.saqt.q.ccpp.1145.name": "누락된 부동 소수점 반환 값 형변환",
  "rule.saqt.q.ccpp.1146.description": "비 const 문자열 포인터 체커는 문자열 상수를 가리키는 포인터가 const로 선언되지 않은 경우를 검출합니다.\n문자열 상수를 수정하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n문자열 상수를 const로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1146.example.0.dangerous": "라인 1: 문자열 상수를 가리키는 포인터를 const로 지정하지 않았습니다.",
  "rule.saqt.q.ccpp.1146.example.0.safe": "라인 1: 문자열 상수를 가리키는 포인터를 const로 지정합니다.",
  "rule.saqt.q.ccpp.1146.name": "비 const 문자열 포인터",
  "rule.saqt.q.ccpp.1147.description": "다른 종류의 문자열 연결 체커는 와이드 문자열 상수와 일반 문자열 상수를 연결하는 수식을 검출합니다.\n와이드 문자열과 일반 문자열을 연결하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n와이드 문자열과 일반 문자열을 연결하여 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1147.example.0.dangerous": "라인 1: 와이드 문자열과 일반 문자열을 연결했습니다.",
  "rule.saqt.q.ccpp.1147.example.0.safe": "라인 1: 와이드 문자열은 와이드 문자열과 연결하고, 일반 문자열은 일반 문자열과 연결하도록 합니다.",
  "rule.saqt.q.ccpp.1147.name": "다른 종류의 문자열 연결",
  "rule.saqt.q.ccpp.1148.description": "문자열 리터럴의 수정 체커는 문자열 리터럴의 내용을 수정하는 수식을 검출합니다.\n문자열 리터럴을 수정하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n문자열 리터럴을 선언한 후에는 수정하지 않도록 합니다. 만약 문자열을 수정해야 한다면 문자열 리터럴 대신 배열 등으로 선언하여 사용합니다.",
  "rule.saqt.q.ccpp.1148.example.0.dangerous": "라인 2: 문자열 리터럴을 수정했습니다.",
  "rule.saqt.q.ccpp.1148.example.0.safe": "라인 1: 만약 문자열을 수정해야 한다면 리터럴 대신 배열로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1148.name": "문자열 리터럴의 수정",
  "rule.saqt.q.ccpp.1149.description": "누락된 메모리 할당 후 형변환 체커는 메모리 할당 값을 할당된 타입으로 캐스팅하지 않고 사용하는 경우를 검출합니다.\n메모리 할당 함수는 malloc() 함수 등을 의미합니다.\n메모리 할당 값을 캐스팅 없이 사용하는 것은 정의되지 않은 동작입니다. 또한 컴파일러에 따라 결과가 달라질 수 있습니다.\n메모리 할당 값을 캐스팅한 후에 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1149.example.0.dangerous": "라인 14; malloc() 함수를 호출한 후에 메모리 할당 값을 할당한 타입으로 캐스팅하지 않았습니다.",
  "rule.saqt.q.ccpp.1149.example.0.safe": "라인 14: malloc() 함수를 호출한 후에 메모리 할당 값을 즉시 할당한 타입으로 캐스팅합니다.",
  "rule.saqt.q.ccpp.1149.name": "누락된 메모리 할당 후 형변환",
  "rule.saqt.q.ccpp.115.description": "하드코드된 데이터 체커는 옵션에 지정된 변수 중 하나를 하드코딩하는 코드를 검출합니다.\n분석 대상 수식, 분석 제외 대상 수식, 정수형 하드코딩 검사 여부, 부동소수형 하드코딩 검사 여부, 문자 하드코딩 검사 여부, 문자열 하드코딩 검사 여부, 상수 하드코딩 검사 여부, 비상수 하드코딩 검사 여부, 조건문 하드코딩 검사 여부, 대입문 하드코딩 검사 여부, 호출 하드코딩 검사 여부, 반환 구문 하드코딩 검사 여부를 옵션에 지정할 수 있습니다.\n하드코딩은 외부에 정보를 노출시키는 요소입니다. 비밀번호, 경로 등 보안에 중요한 요소를 하드코드로 작성하는 경우 보안에 중대한 취약점이 발생할 수 있습니다.\n지정된 옵션에 따라 소스 코드를 하드코드로 작성하지 않도록 합니다.",
  "rule.saqt.q.ccpp.115.example.0.dangerous": "라인 3: 금지된 하드코드 문자열을 사용했습니다.",
  "rule.saqt.q.ccpp.115.example.0.safe": "라인 3: 하드코드 대신에 get_value() 함수의 반환값을 반환합니다.",
  "rule.saqt.q.ccpp.115.name": "하드코드된 데이터",
  "rule.saqt.q.ccpp.115.option.excluded_expr.description": "분석 제외 수식의 정규표현식을 적습니다.",
  "rule.saqt.q.ccpp.115.option.excluded_expr.name": "분석 제외 수식",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_assignment.description": "대입문의 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_assignment.name": "대입문 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_call.description": "호출의 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_call.name": "호출 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_character.description": "문자 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_character.name": "문자 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_conditional.description": "조건문의 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_conditional.name": "조건문 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_const.description": "상수 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_const.name": "상수 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_float.description": "부동소수점형 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_float.name": "부동소수점형 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_integer.description": "정수 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_integer.name": "정수형 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_non_const.description": "비상수형 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_non_const.name": "비상수형 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_return.description": "반환 구문의 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_return.name": "반환 구문 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_string.description": "문자열 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.115.option.hard_coding_target_string.name": "문자열 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.115.option.target_expr.description": "분석 대상 수식의 정규표현식을 적습니다.",
  "rule.saqt.q.ccpp.115.option.target_expr.name": "분석 대상 수식",
  "rule.saqt.q.ccpp.1150.description": "가변 길이 멤버 배열과 정적 할당 및 복사 체커는 가변 배열 필드를 가진 구조체를 동적으로 생성하지 않는 경우를 검출합니다.\n동적으로 할당하지 않은 가변 배열 필드는 실제 값을 가지고 있지 않으며 필드 객체도 스택에 위치합니다. 이 값을 일반적인 배열과 같이 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n가변 배열을 가진 구조체를 동적으로 생성하여 사용하도록 합니다. 가변 배열 필드는 필요한 크기에 따라 할당되는 메모리 크기도 다르게 생성되어야 합니다.",
  "rule.saqt.q.ccpp.1150.example.0.dangerous": "라인 7: 가변 배열 필드를 가진 구조체를 동적으로 생성하지 않았습니다.\n라인 12: 가변 배열 필드에 접근했습니다.",
  "rule.saqt.q.ccpp.1150.example.0.safe": "라인 7: 가변 배열 필드를 가진 구조체를 포인터로 선언합니다.\n라인 10: 구조체를 필요한 크기만큼 동적 할당하여 대입합니다.\n라인 18: 동적 할당을 수행한 후에 가변 배열 필드에 접근합니다.",
  "rule.saqt.q.ccpp.1150.name": "가변 길이 멤버 배열과 정적 할당 및 복사",
  "rule.saqt.q.ccpp.1153.description": "안전하지 않은 시스템 간 바이너리 데이터 전송 체커는 다른 시스템으로 잘못된 이진 데이터를 전송하는 경우를 검출합니다.\n다른 시스템 간에 데이터 무결성을 보장하지 않는 fread(), fwrite() 함수 등을 사용하면 이진 데이터 전송에 문제가 발생할 수 있습니다.\n다른 시스템 간에 이식성이 낮은 함수를 사용하는 것은 위험합니다. 배열이나 구조체와 같은 데이터 타입뿐만 아니라 정수와 같은 스칼라 데이터 타입도 변경 없이 전달된다고 보장할 수 없습니다. 여기에는 구조체의 패딩이나 부동 소수점 모델, 바이트당 비트 수, 엔디안 및 이진 데이터 형식 등과 같은 복합적인 문제가 얽혀 있습니다.\n다른 시스템으로 데이터를 전송할 때 텍스트 표현이나 데이터의 무결성을 보장하는 특수한 라이브러리를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1153.example.0.dangerous": "라인 9: myData 구조체 객체를 파일에서 읽어들였습니다. 이러한 구조체 데이터는 다른 시스템에서 다르게 표현될 수 있습니다.",
  "rule.saqt.q.ccpp.1153.example.0.safe": "라인 11: 일반 문자열 버퍼로 데이터를 읽어들입니다.\n라인 14: 문자열 데이터를 구조체 필드에 저장합니다.\n라인 15: 일반 문자열 버퍼로 데이터를 읽어들입니다.\n라인 18: 문자열 데이터를 strtol() 함수로 변환하여 구조체 숫자 필드에 저장합니다.",
  "rule.saqt.q.ccpp.1153.name": "안전하지 않은 시스템 간 바이너리 데이터 전송",
  "rule.saqt.q.ccpp.1154.description": "잘못된 파일 열기 모드 체커는 잘못된 모드 매개 변수를 전달하여 fopen() 함수를 호출하는 경우를 검출합니다.\n잘못 지정된 모드 매개 변수가 어떻게 처리되는지 예측할 수 없습니다. 따라서 개발자가 의도하지 않은 동작이 발생할 수 있습니다.\nfopen() 함수를 사용하여 파일을 열 때 항상 유효한 모드를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1154.example.0.dangerous": "라인 1: 'c'는 유효하지 않은 모드입니다.",
  "rule.saqt.q.ccpp.1154.example.0.safe": "라인 1: 유효한 모드를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1154.name": "잘못된 파일 열기 모드",
  "rule.saqt.q.ccpp.1155.description": "여러 번 ungetc 함수 사용 체커는 ungetc() 함수를 여러 번 호출하는 경우를 검출합니다.\n해당 체커에서는 ungetc()와 ungetwc() 함수를 검사합니다.\nungetc() 함수는 하나의 스트림에서 지정한 문자를 읽어들입니다. 하지만 파일 위치와 관련된 함수를 성공적으로 호출하면 스트림에 읽어들인 문자를 버리는 문제가 발생합니다. 따라서 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n한 개 이상의 문자를 읽어들여야 한다면 ungetc() 함수 대신 fgetpos()와 fsetpost() 함수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1155.example.0.dangerous": "라인 12: 하나의 스트림에서 여러 개의 문자를 읽어들이고 있습니다.",
  "rule.saqt.q.ccpp.1155.example.0.safe": "라인 10: ungetc() 함수로 한 개 이상의 문자를 읽어들이는 대신 데이터 읽기 전후에 fgetpos() 함수와 fsetpos() 함수를 사용합니다.",
  "rule.saqt.q.ccpp.1155.name": "여러 번 ungetc 함수 사용",
  "rule.saqt.q.ccpp.1156.description": "부적절한 fsetpot 인자의 값 체커는 fsetpos() 함수의 인자에 fgetpos()의 반환값 이외의 값을 전달하는 경우를 검출합니다.\nfsetpos() 함수의 인자에 fgetpos() 함수에서 반환된 값이 아닌 만약 그 외에 다른 값을 사용하는 것은 정의되지 않은 동작입니다. fsetpos() 함수를 잘못 사용하면 파일 위치 지시자가 파일의 의도하지 않은 곳을 가리키게 만들 수 있습니다.\nfsetpos() 함수의 인자에 항상 fgetpos()의 반환값을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1156.example.0.dangerous": "라인 8: fgetpos() 함수로부터 얻지 않은 오프셋 값을 fsetpos() 함수의 인자로 사용했습니다.",
  "rule.saqt.q.ccpp.1156.example.0.safe": "라인 6: fgetpos() 함수를 호출한 후에 반환값을 저장합니다.\n라인 9: fsetpos() 함수의 인자에 fgetpos() 함수의 반환값을 전달합니다.",
  "rule.saqt.q.ccpp.1156.name": "부적절한 fsetpot 인자의 값",
  "rule.saqt.q.ccpp.1159.description": "파일 스트림 오류 확인을 위한 errno 사용 체커는 파일 스트림 오류를 확인하기 위해 errno 지시자를 사용하는 경우를 검출합니다.\n라이브러리 함수를 여러 번 호출한 후에 errno 지시자를 확인하면 잘못된 오류 리포팅을 확인하게 되고 잘못된 프로그램 동작으로 이어질 수 있습니다.\n파일 스트림 오류를 확인하는 경우 errno 지시자가 아닌 ferror() 함수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1159.example.0.dangerous": "라인 5: 표준에 속한 printf() 함수가 여러 번 사용되었습니다.\n라인 6: errno 지시자가 가리키는 오류는 라인 5의 printf() 함수 호출 결과입니다.",
  "rule.saqt.q.ccpp.1159.example.0.safe": "라인 5: 표준 함수를 여러 번 호출하는 경우 errno 지시자 대신 ferror() 함수를 사용하여 오류를 처리하도록 합니다.",
  "rule.saqt.q.ccpp.1159.name": "파일 스트림 오류 확인을 위한 errno 사용",
  "rule.saqt.q.ccpp.116.description": "포인터 파라미터에 누락된 필요 한정자 체커는 옵션에 지정된 특정 함수의 매개변수 자료형으로 포인터를 선언할 때 지정된 한정자를 사용하지 않은 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 포인터형 매개 변수 위치, 포인터형 매개 변수에 있어야 하는 한정자를 설정할 수 있습니다.\n포인터 타입의 매개변수에 한정자를 지정하지 않으면 의도하지 않게 값이 변경될 수 있습니다.\n옵션에 지정된 함수의 포인터형 매개변수에 명시된 한정자를 사용해야 합니다.",
  "rule.saqt.q.ccpp.116.example.0.dangerous": "라인 1: char 포인터를 매개변수로 사용하므로 검출됩니다.",
  "rule.saqt.q.ccpp.116.example.0.safe": "라인 1: const형 char 포인터를 매개변수로 사용하므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.116.name": "포인터 파라미터에 누락된 필요 한정자",
  "rule.saqt.q.ccpp.116.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.116.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.ccpp.116.option.function_target.description": "분석 대상이 되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.116.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.ccpp.116.option.function_target_excluded.description": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.116.option.function_target_excluded.name": "분석 대상에서 제외되는 함수",
  "rule.saqt.q.ccpp.116.option.parameter_should_have_qualifiers.description": "반드시 사용해야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 ,(컴마)를 사용합니다.<br /> 예) const, volatile",
  "rule.saqt.q.ccpp.116.option.parameter_should_have_qualifiers.name": "필수 한정자",
  "rule.saqt.q.ccpp.116.option.parameter_target_type_is_pointer.description": "타입이 포인터인 파라미터 인덱스를 설정합니다. \n예시) 포맷 [param index]:[data]\nparam index - 전체 index 지정 : 0\n특정 index (복수)지정 : 1,2",
  "rule.saqt.q.ccpp.116.option.parameter_target_type_is_pointer.name": "포인터형 파라미터",
  "rule.saqt.q.ccpp.1161.description": "부적절한 종료 방법 체커는 fopen() 함수를 사용한 후에 적절하지 않은 종료 함수를 호출하는 경우를 검출합니다.\n여기서 적절한 종료란 exit() 함수를 호출하는 것입니다. 그 외에 다른 종료 방법으로는 abort(), _Exit() 함수 등이 있습니다.\nabort(), _Exit() 함수를 호출하면 임시 파일을 제거하는 것은 구현 정의 동작(Implementation Defined Behavior)입니다. 즉, fopen() 함수를 호출하여 열린 파일이 제대로 처리된다고 보장할 수 없습니다.\nfopen() 함수를 호출하면 종료하기 위해 exit() 함수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1161.example.0.dangerous": "라인 9: 파일 스트림이 열린 상태에서 abort() 함수를 호출했습니다. 따라서 파일이 제대로 닫히지 않을 수 있습니다.",
  "rule.saqt.q.ccpp.1161.example.0.safe": "라인 9: abort() 함수 대신 exit() 함수를 사용합니다. 그러면 정상적으로 파일이 처리됩니다.",
  "rule.saqt.q.ccpp.1161.name": "부적절한 종료 방법",
  "rule.saqt.q.ccpp.1164.description": "초기화되지 않은 errno 체커는 errno를 통해 오류 상황을 알리는 함수를 호출하기 전에 errno를 0으로 초기화하지 않는 경우를 검출합니다.\nerrno 함수를 통해 오류 상황을 알리는 함수는 경우에 따라 errno 값을 설정하지 않는 경우가 있습니다. 따라서 다른 함수 호출에서 반환된 errno 값을 처리해야 하는 문제가 발생할 수 있습니다.\nerrno를 통해 오류 상황을 알리는 함수를 호출하기 전에 errno 값을 0으로 초기화하도록 합니다.",
  "rule.saqt.q.ccpp.1164.example.0.dangerous": "라인 5: strtoul() 함수는 오류 발생 시 errno 값을 설정합니다. 하지만 오류가 발생하지 않아도 이전의 값에 의해 errno는 0이 아닐 수 있습니다.\n라인 6: strtoul() 함수 이전에 호출된 다른 함수에 의해 errno 값이 설정되어 있을 수 있습니다. 만약 이 경우 잘못된 오류 제어 흐름에 들어가게 됩니다.",
  "rule.saqt.q.ccpp.1164.example.0.safe": "라인 5: strtoul() 함수 호출전에 errno 값을 0으로 설정합니다.",
  "rule.saqt.q.ccpp.1164.name": "초기화되지 않은 errno",
  "rule.saqt.q.ccpp.1165.description": "time_t 타입 변수의 직접 사용 체커는 time_t 타입의 변수를 직접 조작하는 수식을 검출합니다.\ntime_t의 타입은 기본적으로 정수형입니다. 해당 값을 직접 조작하면 time_t 타입 변수를 산술 연산으로 계산하게 됩니다. 하지만 시간을 산술 타입으로 인코딩하는 것은 정의되지 않은 동작입니다. 즉, 인코딩 방식이 지정되어 있지 않기 때문에 이 타입에 대해 직접 산술 연산을 수행하는 것은 안전하지 않습니다.\n따라서 산술 연산으로 time_t 타입의 변수를 직접 조작하지 않도록 합니다. 대신 적절한 시간 관련 함수를 사용하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.1165.example.0.dangerous": "라인 6: start 변수와 seconds_to_work 변수를 더한 값을 time() 함수 호출 결과와 비교했습니다. 하지만 인코딩이 정의되어 있지 않으므로 seconds_to_work 변수의 값이 초를 더하는 것이라고 보장할 수 없습니다.",
  "rule.saqt.q.ccpp.1165.example.0.safe": "라인 7: difftime() 함수를 사용하여 시간 차이를 구하도록 합니다.",
  "rule.saqt.q.ccpp.1165.name": "time_t 타입 변수의 직접 사용",
  "rule.saqt.q.ccpp.1166.description": "부적절한 assert 구문 체커는 부적절한 진단 테스트에서 assert를 사용하는 수식을 검출합니다.\n여기서 부적절한 진단 테스트란 검사한 이후에도 런타임 오류나 서비스 거부 공격이 발생할 수 있는 경우를 가리킵니다.\nassert는 릴리즈 모드에서 아무런 동작도 수행하지 않습니다. 따라서 부적절한 진단 테스트가 실행되는 경우 실제 제품에서는 런타임 오류나 서비스 거부 공격에 노출될 수 있습니다.\n프로그램에 치명적인 오류가 발생할 수 있는 검사를 assert로 수행하지 않도록 합니다. 대신 조건문을 사용하고 오류를 처리하여 해당 검사를 수행하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.1166.example.0.dangerous": "라인 6: assert를 사용하여 메모리 할당이 성공했는지 검사했습니다. 하지만 assert는 릴리즈 모드에서 실행되지 않습니다. 따라서 경우에 따라 런타임 오류나 서비스 거부 공격에 노출될 수 있습니다.",
  "rule.saqt.q.ccpp.1166.example.0.safe": "라인 8: 메모리 할당의 성공 여부는 assert가 아니라 일반적인 조건문을 사용하여 검사하고 처리하도록 합니다.",
  "rule.saqt.q.ccpp.1166.name": "부적절한 assert 구문",
  "rule.saqt.q.ccpp.1167.description": "너무 복잡한 switch 구문 체커는 switch 구문 내에서 for 구문이나 if 구문의 본문이 case 구문과 중첩되어 있는 경우를 검출합니다.\n본문이 있는 다른 구문과 switch 구문을 중첩하는 경우 제어 흐름이 복잡해집니다. 만약 개발자가 이러한 동작을 의도했더라도 가독성을 떨어뜨린다는 점에서 해당 코드를 수정하는 것이 좋습니다.\n본문이 있는 다른 구문과 switch 구문을 중첩하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1167.example.0.dangerous": "라인 3: 중첩된 구문으로 인해 변수 i 값이 1, 2, 3일 때 변수 j 값은 각각 12, 12, 11, 그 밖의 경우에는 0이 되었습니다.\n라인 4: 1 값에 대한 case 구문을 작성했습니다.\n라인 5: 반복문의 시작점을 작성했습니다.\n라인 6: 반복문의 본문과 2 값에 대한 case 구문이 중첩되었습니다.",
  "rule.saqt.q.ccpp.1167.example.0.safe": "라인 3: 본문이 있는 다른 구문과 switch 구문을 중첩시키지 않도록 합니다.",
  "rule.saqt.q.ccpp.1167.name": "너무 복잡한 switch 구문",
  "rule.saqt.q.ccpp.117.description": "포인터 파라미터에 금지된 한정자 사용 체커는 옵션에 지정된 특정 함수의 매개변수 자료형으로 포인터를 선언할 때 지정된 한정자를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 포인터형 매개 변수 위치, 포인터형 매개 변수에 없어야 하는 한정자를 설정할 수 있습니다.\n한정자를 사용하지 않은 함수를 검출하여 API의 잘못된 사용을 방지합니다.\n옵션에 지정된 함수의 포인터형 매개변수에 지정된 한정자를 사용하지 않아야 합니다.",
  "rule.saqt.q.ccpp.117.example.0.dangerous": "라인 1: const형 char 포인터를 매개변수로 사용하므로 검출됩니다.",
  "rule.saqt.q.ccpp.117.example.0.safe": "라인 1: char 포인터를 매개변수로 사용하므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.117.name": "포인터 파라미터에 금지된 한정자 사용",
  "rule.saqt.q.ccpp.117.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.117.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.ccpp.117.option.function_target.description": "분석 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.117.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.ccpp.117.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.117.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.ccpp.117.option.parameter_should_not_have_qualifiers.description": "사용하지 말아야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 ,(컴마)를 사용합니다.<br /> 예) const, volatile",
  "rule.saqt.q.ccpp.117.option.parameter_should_not_have_qualifiers.name": "금지 한정자",
  "rule.saqt.q.ccpp.117.option.parameter_target_type_is_pointer.description": "타입이 포인터인 파라미터 인덱스를 설정합니다. \n예시) 포맷 [param index]:[data]\nparam index - 전체 index 지정 : 0\n특정 index (복수)지정 : 1,2",
  "rule.saqt.q.ccpp.117.option.parameter_target_type_is_pointer.name": "포인터형 파라미터",
  "rule.saqt.q.ccpp.1174.description": "POSIX 잠금 중 차단 체커는 POSIX 잠금이 걸린 상태에서 블록이 발생할 수 있는 연산을 수행하는 수식을 검출합니다.\nPOSIX 잠금이 걸린 상태에서 블록이 발생할 수 있는 연산을 수행하면 시스템 성능을 저하시키거나 데드락을 발생시킬 수 있습니다.\nPOSIX 잠금이 걸린 상태에서는 블록이 발생할 수 있는 어떠한 연산도 수행하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1174.example.0.dangerous": "라인 7: 뮤텍스를 잠갔습니다.\n라인 10: recv() 함수의 경우 소켓을 통해 데이터를 전달받을 때까지 블록됩니다. 이로 인해 다른 스레드도 잠금이 걸린 상태로 블록됩니다.\n라인 13: 뮤텍스를 해제했습니다. 하지만 라인 10에서 블록된 함수를 호출했습니다.",
  "rule.saqt.q.ccpp.1174.example.0.safe": "라인 6: recv() 함수에 잠금이 걸리기 전에 해당 함수를 호출합니다. POSIX 잠금이 걸린 상태에서는 블록이 발생할 수 있는 어떠한 연산도 수행하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1174.name": "POSIX 잠금 중 차단",
  "rule.saqt.q.ccpp.1178.description": "누락된 switch 구문 중괄호 체커는 switch 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\nswitch 구문의 본문은 항상 중괄호로 감싸줍니다.",
  "rule.saqt.q.ccpp.1178.example.0.dangerous": "라인 2: switch 구문의 본문을 중괄호로 감싸지 않았습니다.",
  "rule.saqt.q.ccpp.1178.example.0.safe": "라인 2: switch 구문의 본문을 중괄호로 감싸도록 합니다.",
  "rule.saqt.q.ccpp.1178.name": "누락된 switch 구문 중괄호",
  "rule.saqt.q.ccpp.1179.description": "누락된 if-else 구문 중괄호 체커는 if-elseif-else 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\nif 구문 및 elseif, else 구문의 본문을 중괄호로 감싸야 합니다.",
  "rule.saqt.q.ccpp.1179.example.0.dangerous": "라인 7: else 구문의 본문을 중괄호로 감싸지 않았습니다.",
  "rule.saqt.q.ccpp.1179.example.0.safe": "라인 7: else 구문의 본문을 중괄호로 감싸도록 합니다.",
  "rule.saqt.q.ccpp.1179.name": "누락된 if-else 구문 중괄호",
  "rule.saqt.q.ccpp.118.description": "유효하지 않은 오류 코드 사용 체커는 옵션에 지정된 함수를 호출할 때 특정 인자 위치에 지정된 문자열을 포함하지 않는 값을 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 대상 제외 함수, 검사 대상 호출 함수, 문자열이 위치해야 할 함수 및 매개변수 위치를 설정할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 지정된 문자열을 사용해야 합니다.",
  "rule.saqt.q.ccpp.118.example.0.dangerous": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 3: SET_ERR_API19() 함수를 호출했습니다. 첫 번째 인자의 문자열이 ERR00으로 시작되지 않으므로 검출됩니다.",
  "rule.saqt.q.ccpp.118.example.0.safe": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 3: SET_ERR_API19() 함수를 호출했습니다. 첫 번째 인자의 문자열이 ERR00으로 시작되므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.118.name": "유효하지 않은 오류 코드 사용",
  "rule.saqt.q.ccpp.118.option.call_param_should_be_string.description": "문자열이 위치해야 할 함수와 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.ccpp.118.option.call_param_should_be_string.name": "문자열이 위치해야 할 함수와 파라미터 인덱스",
  "rule.saqt.q.ccpp.118.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.ccpp.118.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.ccpp.118.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.118.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.ccpp.118.option.function_target.description": "대상이 되는 함수를 설정합니다.",
  "rule.saqt.q.ccpp.118.option.function_target.name": "대상이 되는 함수",
  "rule.saqt.q.ccpp.118.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.118.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.ccpp.1183.description": "불완전한 구조체 및 공용체 타입 체커는 구조체 및 공용체가 완전한 타입이 아닌 경우를 검출합니다.\n여기서 완전하지 않은 타입이란 구조체 및 공용체가 아직 정의되지 않은 타입을 필드로 사용하여 불명확한 상태인 타입을 의미합니다.\n일반적으로 이런 타입 선언은 컴파일 단계에서 오류가 발생합니다. 다만 몇몇 오래되거나 표준을 지키지 않은 컴파일러의 경우 이러한 타입 선언을 허용할 수도 있습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n구조체 및 공용체는 완전한 타입으로 선언합니다.",
  "rule.saqt.q.ccpp.1183.example.0.dangerous": "라인 6: B 구조체는 정의되지 않았습니다.",
  "rule.saqt.q.ccpp.1183.example.0.safe": "라인 4: B 구조체를 정의합니다.\n라인 7: 구조체 및 공용체는 완전한 타입이 되도록 합니다.",
  "rule.saqt.q.ccpp.1183.name": "불완전한 구조체 및 공용체 타입",
  "rule.saqt.q.ccpp.1184.description": "공용체 사용 체커는 공용체를 선언한 경우를 검출합니다.\n공용체를 사용하는 것은 공용체의 특성 상 잠재적으로 잘못된 포인터 참조가 일어날 가능성이 높습니다. 일반적으로는 어떤 값을 가리키는 타입이 여러 종류일 경우, 메모리 사용량을 줄이기 위해 공용체를 사용할 수 있습니다. 다만 이 규칙은 그러한 메모리 사용량이 주는 잇점 대신 잘못된 포인터 참조로 인한 프로그램 오류를 방지하기 위해 공용체 사용을 금지합니다.\n공용체를 사용하지 않도록 합니다. 다소의 퍼포먼스를 희생하더라도 구조체를 사용합니다.",
  "rule.saqt.q.ccpp.1184.example.0.dangerous": "라인 1: 공용체를 선언했습니다.",
  "rule.saqt.q.ccpp.1184.example.0.safe": "라인 1: 공용체 대신 구조체를 사용합니다.",
  "rule.saqt.q.ccpp.1184.name": "공용체 사용",
  "rule.saqt.q.ccpp.1186.description": "포함 구문 내 비 표준 문자 체커는 include 전처리 구문으로 포함시키는 파일의 이름에 비표준 문자가 있는 경우를 검출합니다.\ninclude 전처리 구문의 파일 이름에 비표준 문자를 사용하는 것은 컴파일 환경에 따라 정상적으로 파일을 읽어들이지 못할 수 있습니다.\ninclude 전처리 구문으로 포함시킬 파일 이름은 표준 문자로만 구성하도록 합니다.",
  "rule.saqt.q.ccpp.1186.example.0.dangerous": "라인 1: include 전처리 구문의 파일 이름에서 비표준 문자를 사용했습니다.",
  "rule.saqt.q.ccpp.1186.example.0.safe": "라인 1: include 전처리 구문의 파일 이름은 표준 문자만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1186.name": "포함 구문 내 비 표준 문자",
  "rule.saqt.q.ccpp.1187.description": "포함 파일 이름 형식 위반 체커는 include 전처리 구문 뒤에 오는 파일 이름이 지정된 형식을 벗어난 경우를 검출합니다.\n여기서 지정된 형식이란 `파일 이름`이나 <파일 이름>을 의미합니다.\n일부 표준을 지키지 않는 컴파일러는 지정된 형식 외에도 include 전처리 구문으로 파일을 포함시키는 것을허용하기도 합니다. 다만 지정된 형식을 벗어난 소스 코드는 표준을 지키는 컴파일러에서 컴파일 할 경우 오류가 발생합니다.\ninclude 전처리 구문으로 파일을 포함시키는 경우 항상 지정된 형식을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1187.example.0.dangerous": "라인 1: include 전처리 구문 사용 방식이 지정된 형식을 벗어났습니다.\n라인 2: include 전처리 구문 사용 방식이 지정된 형식을 벗어났습니다.",
  "rule.saqt.q.ccpp.1187.example.0.safe": "라인 1: include 전처리 구문으로 포함시킬 파일 이름은 항상 \"\" 나 <> 로 감싸도록 합니다.",
  "rule.saqt.q.ccpp.1187.name": "포함 파일 이름 형식 위반",
  "rule.saqt.q.ccpp.1188.description": "블록 내에서 정의 혹은 해제된 매크로 체커는 함수 본문과 같은 블록 내에서 define 이나 undef 전처리 구문을 사용한 경우를 검출합니다.\ndefine 이나 undef와 같은 전처리 구문은 항상 블록 범위 바깥에서 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1188.example.0.dangerous": "라인 3: 함수 블록에서 define 전처리 구문을 사용했습니다.\n라인 5: 함수 블록에서 undef 전처리 구문을 사용했습니다.",
  "rule.saqt.q.ccpp.1188.example.0.safe": "라인 1: define이나 undef 전처리 구문은 파일 블록 바깥에서 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1188.name": "블록 내에서 정의 혹은 해제된 매크로",
  "rule.saqt.q.ccpp.1189.description": "#undef 지시자 사용 체커는 undef 전처리 구문을 사용한 경우를 검출합니다.\nundef 전처리 구문을 사용한 헤더 파일을 include 하는 경우, 이전에 define 전처리 구문으로 정의한 매크로 변수의 값이 달라져 헤더 파일이 비정상적으로 포함될 수 있습니다. 이 경우 원인을 파악하기 힘든 오류가 발생할 수 있습니다.\nundef 전처리 구문은 최대한 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1189.example.0.dangerous": "라인 1: undef 전처리 구문을 사용했습니다.",
  "rule.saqt.q.ccpp.1189.example.0.safe": "라인 1: undef 전처리 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1189.name": "#undef 지시자 사용",
  "rule.saqt.q.ccpp.119.description": "오류 발생 시 누락된 초기화 함수 호출 체커는 옵션에 지정된 오류 값을 반환하기 전에 초기화 함수를 호출하지 않는 코드를 검출합니다.\n옵션에서 조건문에 비교할 값, 반환할 오류 값, 초기화 함수를 설정할 수 있습니다.\n옵션에 지정된 조건문 비교 오류 값 실행안에서 오류 값이 반환되기 전에 반드시 명시된 초기화 함수가 호출되어야 합니다.",
  "rule.saqt.q.ccpp.119.example.0.dangerous": "라인 6: 조건문에 RC_NRM을 사용합니다.\n라인 7: RC_ERR을 반환했습니다. 초기화 함수가 호출되지 않으므로 검출됩니다.",
  "rule.saqt.q.ccpp.119.example.0.safe": "라인 6: 조건문에 RC_NRM을 사용합니다.\n라인 7: RC_ERR가 반환되기 전에 초기화 함수 pfmInitError()가 호출되므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.119.name": "오류 발생 시 누락된 초기화 함수 호출",
  "rule.saqt.q.ccpp.119.option.cond_error.description": "조건문에서 비교할 에러 값을 설정합니다.",
  "rule.saqt.q.ccpp.119.option.cond_error.name": "조건문에서 비교할 에러 값",
  "rule.saqt.q.ccpp.119.option.init_function.description": "초기화 할 함수를 설정합니다.",
  "rule.saqt.q.ccpp.119.option.init_function.name": "초기화 함수",
  "rule.saqt.q.ccpp.119.option.return_error.description": "리턴할 에러 값을 설정합니다.",
  "rule.saqt.q.ccpp.119.option.return_error.name": "리턴 에러값",
  "rule.saqt.q.ccpp.1190.description": "함수 같은 매크로 체커는 매크로 함수를 정의하여 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 함수를 사용하면 타입 안정성을 보장할 수 없습니다. 또한 연산 순서에 충분히 주의하지 않는 경우 종종 예상하지 못한 결과가 발생하게 됩니다.\n매크로 함수를 사용하지 않도록 합니다. 성능의 문제로 인해 일반 함수를 사용하지 않는 경우 대신 인라인 함수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1190.example.0.dangerous": "라인 1: 매크로 함수를 선언했습니다.",
  "rule.saqt.q.ccpp.1190.example.0.safe": "라인 1: 매크로 함수 대신 동일한 동작을 수행하는 인라인 함수를 선언하여 사용합니다.",
  "rule.saqt.q.ccpp.1190.name": "함수 같은 매크로",
  "rule.saqt.q.ccpp.1191.description": "일치하지 않는 매크로 인자 수 체커는 매크로 함수 사용 시 모든 인자들을 포함하지 않고 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 함수에서 선언한 매개 변수 개수와 실제로 전달한 인자 개수가 다른건 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n매크로 함수에서 선언한 매개 변수 개수와 매크로 함수에 전달하는 인자 개수가 일치하도록 매크로 함수를 사용합니다.",
  "rule.saqt.q.ccpp.1191.example.0.dangerous": "라인 1: 매개 변수가 2개인 MY_MACRO를 선언했습니다.\n라인 4: MY_MACRO 매크로를 사용했습니다. 하지만 전달 인자의 개수가 1개입니다.",
  "rule.saqt.q.ccpp.1191.example.0.safe": "라인 4: 라인 1에서 정의한 매크로의 매개 변수 개수에 맞게 인자 2개를 전달합니다.",
  "rule.saqt.q.ccpp.1191.name": "일치하지 않는 매크로 인자 수",
  "rule.saqt.q.ccpp.1192.description": "매크로 내 전처리 구문 체커는 전처리 구문을 매크로 함수의 인자로 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 인자에 전처리 구문을 포함하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n매크로 함수의 인자에 다른 전처리 구문이 포함되지 않도록 합니다.",
  "rule.saqt.q.ccpp.1192.example.0.dangerous": "라인 3: 여러 라인에 걸쳐 매크로 함수를 사용했습니다.\n라인 4: 매크로 함수의 인자 사이에 전처리 구문을 사용했습니다.",
  "rule.saqt.q.ccpp.1192.example.0.safe": "라인 4: 매크로 함수의 인자 사이에 전처리 구문을 포함하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1192.name": "매크로 내 전처리 구문",
  "rule.saqt.q.ccpp.1193.description": "누락된 매크로 인자 주위 괄호 체커는 # 연산 및 ## 연산을 제외하고 함수형 매크로의 인자를 괄호로 감싸지 않고 선언되는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n그렇지 않으면 매크로 인자로 전달된 수식에 따라 연산 순서가 달라지는 문제가 발생할 수 있습니다. 따라서 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n매크로 함수를 선언할 때 인자를 괄호로 감싸도록 합니다.",
  "rule.saqt.q.ccpp.1193.example.0.dangerous": "라인 1: 매크로 함수의 인자를 괄호로 감싸지 않았습니다.\n라인 2: 매크로 함수의 인자를 괄호로 감싸지 않았습니다.",
  "rule.saqt.q.ccpp.1193.example.0.safe": "라인 1: 매크로 함수의 인자를 각각 괄호로 감싸도록 합니다.",
  "rule.saqt.q.ccpp.1193.name": "누락된 매크로 인자 주위 괄호",
  "rule.saqt.q.ccpp.1194.description": "정의되지 않은 식별자 체커는 앞서 정의되지 않은 매크로 식별자를 ifdef, ifndef, defined 전처리 구문에 사용한 경우를 검출합니다.\nifdef, ifndef, defined 전처리 구문에서 사용하는 매크로 식별자는 미리 정의되어 있지 않은 경우 0으로 간주됩니다. 이것은 개발자가 의도한 동작이 아닐 수 있습니다.\n모든 매크로 식별자는 사용하기전에 미리 정의하도록 합니다.",
  "rule.saqt.q.ccpp.1194.example.0.dangerous": "라인 1: if 전처리 구문에서 매크로 식별자 FLAG를 비교했습니다. 이 매크로 식별자를 정의되어 있지 않은 매크로이며 따라서 값은 0입니다.",
  "rule.saqt.q.ccpp.1194.example.0.safe": "라인 1: if 전처리 구문에서 사용하기 전에 명시적으로 FLAG 매크로 식별자를 정의합니다.",
  "rule.saqt.q.ccpp.1194.name": "정의되지 않은 식별자",
  "rule.saqt.q.ccpp.1195.description": "여러 개의 # 혹은 ## 연산 체커는 # 연산이나 ## 연산을 두 번 이상 사용하여 하나의 매크로를 정의하는 코드를 검출합니다.\n연산 및 ## 연산과 관련된 계산 순서는 명시되지 않은 동작(Unspecified Defined Behavior)입니다. 컴파일러는 이것에 대하여 구현 방법을 제공하지만 문서로 명세해두지는 않습니다. 경우에 따라 의도한 것과 다른 동작이 있을 수 있습니다.\n하나의 매크로를 정의할 때는 # 연산이나 ## 연산은 최대 한 번만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1195.example.0.dangerous": "라인 1: 매크로 정의에서 # 연산이나 ## 연산을 두 번 이상 사용했습니다.\n라인 2: 매크로 정의에서 # 연산이나 ## 연산을 두 번 이상 사용했습니다.\n라인 3: 매크로 정의에서 # 연산이나 ## 연산을 두 번 이상 사용했습니다.",
  "rule.saqt.q.ccpp.1195.example.0.safe": "라인 1: 매크로를 정의하는 경우 # 연산이나 ## 연산을 한 번만 사용하도록 합니다.\n라인 2: 매크로를 정의하는 경우 # 연산이나 ## 연산을 한 번만 사용하도록 합니다.\n라인 3: 매크로를 정의하는 경우 # 연산이나 ## 연산을 한 번만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1195.name": "여러 개의 # 혹은 ## 연산",
  "rule.saqt.q.ccpp.1196.description": "# 혹은 ## 연산자 사용 체커는 # 연산이나 ## 연산을 사용하여 매크로를 정의하는 경우를 검출합니다.\n매크로의 문자열 치환 방식을 잘 이해하지 못하고 # 연산이나 ## 연산을 사용하면 부정확한 소스 코드를 작성하게 됩니다. 따라서 개발자가 예상하지 못한 결과가 발생할 수 있습니다.\n매크로를 정의하는 경우 # 연산이나 ## 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1196.example.0.dangerous": "라인 1: 매크로 정의에서 # 연산이나 ## 연산을 사용했습니다.",
  "rule.saqt.q.ccpp.1196.example.0.safe": "라인 1: 매크로를 정의하는 경우 # 연산이나 ## 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1196.name": "# 혹은 ## 연산자 사용",
  "rule.saqt.q.ccpp.1197.description": "비 표준 전처리 구문 형식 체커는 defined 전처리 구문의 사용 방식이 지정된 형식을 벗어난 경우를 검출합니다.\n여기서 지정된 형식이란 defined (식별자) 혹은 defined 식별자 이 두 가지 표준 형태를 의미합니다.\n지정된 형식이 아닌 다른 방법으로 defined 전처리 구문을 정의하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\ndefined 전처리 구문을 정의할 경우에는 반드시 지정된 형식으로 정의하도록 합니다.",
  "rule.saqt.q.ccpp.1197.example.0.dangerous": "라인 1: TEXT4 식별자 뒤에 15라는 추가적인 식별자가 있습니다.\n라인 4: 식별자를 작성하는 부분에 수식이 있습니다.\n라인 7: defined 전처리 구문을 매크로로 지정했습니다.",
  "rule.saqt.q.ccpp.1197.example.0.safe": "라인 1: 지정한 형식대로 defined 전처리 구문을 구성합니다.",
  "rule.saqt.q.ccpp.1197.name": "비 표준 전처리 구문 형식",
  "rule.saqt.q.ccpp.1198.description": "전처리 구문 뒤 추가 문자 체커는 정상적인 전처리 구문 형식 뒤에 공백을 제외한 불필요한 문자가 오는 경우를 검출합니다.\n전처리 구문 뒤에 공백을 제외한 불필요한 문자는 기본적으로 제외됩니다. 하지만 모든 컴파일러가 이와 같이 ISO에서 정한 표준을 지키는 것은 아닙니다. 경우에 따라 개발자가 의도하지 못한 동작이 발생할 수 있습니다.\n전처리 구문 뒤에는 공백을 제외한 불필요한 문자가 오지 않도록 합니다.",
  "rule.saqt.q.ccpp.1198.example.0.dangerous": "라인 1: 전처리 구문 뒤에 공백이 아닌 문자가 들어갔습니다.\n라인 2: 전처리 구문 뒤에 공백이 아닌 문자가 들어갔습니다.",
  "rule.saqt.q.ccpp.1198.example.0.safe": "라인 1: 전처리 구문 뒤에 공백을 제외한 문자를 작성하지 않도록 합니다.\n라인 2: 전처리 구문 뒤에 공백을 제외한 문자를 작성하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1198.name": "전처리 구문 뒤 추가 문자",
  "rule.saqt.q.ccpp.1199.description": "전처리 구문에 후행하는 세미콜론 체커는 정상적인 전처리 구문 형식 뒤에 세미콜론이 오는 경우를 검출합니다.\n전처리 구문 뒤에 공백을 제외한 불필요한 문자는 기본적으로 제외됩니다. 하지만 모든 컴파일러가 이와 같이 ISO에서 정한 표준을 지키는 것은 아닙니다. 경우에 따라 개발자가 의도하지 못한 동작이 발생할 수 있습니다.\n전처리 구문 뒤에는 세미콜론이 오지 않도록 합니다.",
  "rule.saqt.q.ccpp.1199.example.0.dangerous": "라인 1: 전처리 구문 뒤에 세미콜론이 들어갔습니다.\n라인 2: 전처리 구문 뒤에 세미콜론이 들어갔습니다.",
  "rule.saqt.q.ccpp.1199.example.0.safe": "라인 1: 전처리 구문 뒤에 세미콜론을 작성하지 않도록 합니다.\n라인 2: 전처리 구문 뒤에 세미콜론을 작성하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1199.name": "전처리 구문에 후행하는 세미콜론",
  "rule.saqt.q.ccpp.120.description": "오류 발생 시 부적절한 반환 값 체커는 옵션에 지정된 특정 함수를 호출한 후에 반환문을 사용하지 않은 코드를 검출합니다.\n옵션으로 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 검사 대상 호출 함수를 설정할 수 있습니다.\n옵션에 지정된 함수를 호출한 후에 명시적으로 반환문을 사용해야 합니다.",
  "rule.saqt.q.ccpp.120.example.0.dangerous": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 3: SET_ERR_API21() 함수가 호출된 후에 Func()의 return 문이 없으므로 검출됩니다.",
  "rule.saqt.q.ccpp.120.example.0.safe": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 3: SET_ERR_API21() 함수를 호출합니다. 이후에 return 문이 있으므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.120.name": "오류 발생 시 부적절한 반환 값",
  "rule.saqt.q.ccpp.120.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.ccpp.120.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.ccpp.120.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.ccpp.120.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.ccpp.120.option.function_target.description": "대상이 되는 함수를 설정합니다.",
  "rule.saqt.q.ccpp.120.option.function_target.name": "대상이 되는 함수",
  "rule.saqt.q.ccpp.120.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.120.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.ccpp.1200.description": "동적 메모리 할당 체커는 동적 할당을 사용한 수식을 검출합니다.\n동적 할당을 사용하는 것은 C/C++ 언어에서 매우 일반적인 사용 방법입니다. 하지만 종종 임베디드 환경에서는 매우 제한된 메모리 상에서 프로그램이 동작해야 하는 경우가 있습니다. 이 경우 동적 할당을 사용하는 것은 위험할 수 있습니다. 이러한 경향은 자동차나 항공, 원자력 발전소 등 기계가 지속적으로 안정적인 동작을 필요로 하는 경우 특히 심해집니다.\n동적 할당을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1200.example.0.dangerous": "라인 2: malloc() 함수를 호출하는 동적 할당을 사용했습니다.",
  "rule.saqt.q.ccpp.1200.example.0.safe": "라인 1: 지역 변수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1200.name": "동적 메모리 할당",
  "rule.saqt.q.ccpp.1201.description": "errno 사용 체커는 errno 지시자를 사용하는 코드를 검출합니다.\nerrno 지시자가 이론적으로는 유용해 보이지만 실제로는 ISO/IEC14882 : 2003 [1]에서 잘못 정의된 기능입니다. 0이 아닌 값은 오류가 발생했다는 사실을 표시할 수도 있고 표시하지 않을 수도 있습니다. 따라서 errno 지시자를 사용하는 경우 오류가 발생했는지를 확인하기가 어렵습니다.\nerrno 지시자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1201.example.0.dangerous": "라인 5: errno 지시자를 사용하여 오류를 확인했습니다.",
  "rule.saqt.q.ccpp.1201.example.0.safe": "라인 5: 반환 값이나 매개 변수 입력값을 체크하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.1201.name": "errno 사용",
  "rule.saqt.q.ccpp.1202.description": "offsetof 매크로 사용 체커는 offsetof 매크로를 사용하는 경우를 검출합니다.\n표준 라이브러리 `stddef.h` 에 있는 offsetof 매크로를 사용하면 안됩니다. offsetof 매크로를 표준 레이아웃이 아닌 클래스에 사용하면 정의되지 않은 동작이 발생할 수 있으므로 offsetof 매크로를 사용하지 않는 것이 좋습니다. 표준 레이아웃 타입은 C와 같은 레이아웃을 가진 타입을 의미하며, 아래 특성을 만족합니다. \n\n1. 가상 함수나 가상 기저 클래스를 갖지 않는다. \n2. 비정적 데이터 멤버가 동일한 접근 제어를 가진다. \n3. 모든 비정적 데이터 멤버가 표준 레이아웃이다. \n4. 모든 기저 클래스가 표준 레이아웃이다. \n5. 첫 번째 비정적 멤버로 기저 클래스와 동일한 타입의 데이터를 갖지 않는다. \n6. 레퍼런스 멤버를 갖지 않는다. \n7. 한 개 이상의 기저 클래스 혹은 파생 및 기저 클래스 둘 다에서 비정적 데이터를 갖지 않는다. \n\n표준 레이아웃 타입인지 확인하려면 <type_traits>의 std::is_standard_layout을 사용하도록 합니다.\noffsetof 메크로를 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1202.example.0.dangerous": "라인 10: offsetof 매크로를 사용했습니다.",
  "rule.saqt.q.ccpp.1202.example.0.safe": "라인 10: offsetof 매크로를 사용하지 않도록 합니다. 필요한 경우 별도 함수를 만들어 사용합니다.",
  "rule.saqt.q.ccpp.1202.name": "offsetof 매크로 사용",
  "rule.saqt.q.ccpp.1203.description": "setjmp 함수 사용 체커는 setjmp 매크로를 사용하는 수식을 검출합니다.\nsetjmp 매크로를 사용하면 제어 흐름을 추적하기가 어려울 수 있습니다.\nsetjmp 매크로를 사용하지 않도록 합니다. 가능하면 점프 구문이 필요하지 않도록 제어 흐름을 구성하는 것이 바람직합니다.",
  "rule.saqt.q.ccpp.1203.example.0.dangerous": "라인 3: setjmp 매크로를 사용했습니다.",
  "rule.saqt.q.ccpp.1203.example.0.safe": "라인 1: setjmp 매크로를 사용하지 않도록 합니다. 되도록이면 점프 구문이 필요하지 않도록 제어 흐름을 구성합니다.",
  "rule.saqt.q.ccpp.1203.name": "setjmp 함수 사용",
  "rule.saqt.q.ccpp.1204.description": "longjmp 함수 사용 체커는 longjmp() 함수를 사용하는 수식을 검출합니다.\nlongjmp() 함수를 사용하면 제어 흐름을 추적하기가 어려울 수 있습니다.\nlongjmp() 함수를 사용하지 않도록 합니다. 가능하면 점프 구문이 필요하지 않도록 제어 흐름을 구성하는 것이 바람직합니다.",
  "rule.saqt.q.ccpp.1204.example.0.dangerous": "라인 12: longjmp() 함수를 사용했습니다.",
  "rule.saqt.q.ccpp.1204.example.0.safe": "라인 1: longjmp() 함수를 사용하지 않도록 합니다. 되도록이면 점프 구문이 필요하지 않도록 제어 흐름을 구성합니다.",
  "rule.saqt.q.ccpp.1204.name": "longjmp 함수 사용",
  "rule.saqt.q.ccpp.1205.description": "시그널 핸들링 사용 체커는 signal.h의 시그널 핸들링 기능을 사용하는 경우를 검출합니다.\nsignal.h의 시그널 핸들링 기능을 사용하면 안됩니다. 시그널 핸들링은 플랫폼마다 다르고, 정의되지 않은 동작을 발생시킬 수 있습니다.\nsignal.h의 시그널 핸들링 기능을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1205.example.0.dangerous": "라인 1: signal.h 헤더 파일을 include 했습니다.",
  "rule.saqt.q.ccpp.1205.example.0.safe": "라인 1: signal.h의 시그널 핸들링 기능을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1205.name": "시그널 핸들링 사용",
  "rule.saqt.q.ccpp.1206.description": "stdio.h 사용 체커는 stdio.h를 사용하는 경우를 검출합니다.\n양산 코드에는 C의 표준 라이브러리의 stdio.h를 사용하지 말아야 합니다. C의 표준 라이브러리 stdio.h 는 결함이 많고 오류 발생이 쉽습니다. 해당 라이브러리를 대체할 다른 라이브러리를 사용하십시오.\nstdio 헤더를 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1206.example.0.dangerous": "라인 1: stdio.h를 include 했습니다.",
  "rule.saqt.q.ccpp.1206.example.0.safe": "라인 1: stdio.h를 include 하지 말아야 합니다.",
  "rule.saqt.q.ccpp.1206.name": "stdio.h 사용",
  "rule.saqt.q.ccpp.1207.description": "와이드 문자열 사용 체커는 와이드 문자열을 사용하는 경우를 검출합니다.\n와이드 문자열을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1207.example.0.dangerous": "라인 1: \"Fred\"를 와이드 문자열로 사용했습니다.",
  "rule.saqt.q.ccpp.1207.example.0.safe": "라인 1: 와이드 문자열을 사용하지 말아야 합니다.",
  "rule.saqt.q.ccpp.1207.name": "와이드 문자열 사용",
  "rule.saqt.q.ccpp.1209.description": "void 반환 타입 함수 내에서 반환 체커는 반환 타입이 void인 함수가 반환문에서 값을 반환하는 경우를 검출합니다.\nvoid 반환 타입 함수가 반환 수식을 가지면 일부 컴파일러에서 컴파일 오류가 발생하며, 오류가 발생하지 않더라도 불필요한 계산을 수행하므로 전체 프로그램의 성능을 저하시킵니다.\nvoid 반환 타입 함수에 반환 수식을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1209.example.0.dangerous": "라인 4: void를 반환하는 함수가 x+1 수식을 반환하고 있습니다.",
  "rule.saqt.q.ccpp.1209.example.0.safe": "라인 4: void 형을 반환하는 함수는 return 뒤에 수식 및 값이 없어야 합니다.",
  "rule.saqt.q.ccpp.1209.name": "void 반환 타입 함수 내에서 반환",
  "rule.saqt.q.ccpp.1210.description": "포인터 연산 사용 체커는 포인터 연산을 하는 경우를 검출합니다.\n잘못된 포인터 연산은 런타임 오류와 같은 문제를 발생시킬 수 있습니다.\n포인터 연산을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1210.example.0.dangerous": "라인 4: 포인터에 직접적으로 연산을 수행했습니다.",
  "rule.saqt.q.ccpp.1210.example.0.safe": "라인 4: 포인터 연산을 하지 말아야 합니다.",
  "rule.saqt.q.ccpp.1210.name": "포인터 연산 사용",
  "rule.saqt.q.ccpp.1211.description": "setlocale 함수 사용 체커는 locale.h 라이브러리의 setlocale() 함수를 호출하는 경우를 검출합니다.\nsetlocale을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1211.example.0.dangerous": "라인 3: 표준함수locale.h의 setlocale() 함수를 사용했습니다.",
  "rule.saqt.q.ccpp.1211.example.0.safe": "라인 3: setlocale() 함수를 사용하지 말아야 합니다.",
  "rule.saqt.q.ccpp.1211.name": "setlocale 함수 사용",
  "rule.saqt.q.ccpp.1213.description": "시그널 핸들러의 공유 객체 접근 체커는 시그널 핸들러가 공유 객체에 접근하는 경우를 검출합니다.\n시그널 핸들러가 공유 객체에 접근하면 경쟁 조건이 발생할 수 있습니다. 이식성을 보장하기 위해서 시그널 핸들러가 volatile sig_atomic_t 타입의 변수를 전달 받거나, 설정하거나, 반환해야 합니다. 혹은 Lock-Free Atomic Access 방식으로 문제를 해결해야 합니다. 자세한 사항은 CERT 페이지를 참조하면 확인할 수 있습니다.\n시그널 핸들러에서는 공유 객체에 접근하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1213.example.0.dangerous": "라인 4: SIGINT 시그널이 전달되었다고 알려주기 위해 err_msg를 업데이트했습니다. 하지만 SIGINT 시그널이 할당 작업 전에 생성되면 정의되지 않은 동작이 발생합니다.",
  "rule.saqt.q.ccpp.1213.example.0.safe": "라인 2: 이식성을 보장하기 위해서 시그널 핸들러가 volatile sig_atomic_t 타입의 변수를 전달 받거나, 설정하거나, 반환해야 합니다. 혹은 Lock-Free Atomic Access 방식으로 문제를 해결해야 합니다. 자세한 사항은 CERT 페이지를 참조하면 확인할 수 있습니다.",
  "rule.saqt.q.ccpp.1213.name": "시그널 핸들러의 공유 객체 접근",
  "rule.saqt.q.ccpp.1215.description": "시그널 핸들러 반환 체커는 프로그램이 종료되어야 하는 치명적인 오류 시그널 핸들러에서 암시적 혹은 명시적으로 값을 반환하는 경우를 검출합니다.\nSIGSEGV, SIGILL, SIGFPE와 같은 치명적인 오류 시그널 핸들러의 경우 값을 반환하는 대신 abort(), quick_exit(), _Exit() 등 특정한 함수를 호출하여 프로그램을 종료해야 합니다.\n세그멘테이션 오류(SIGSEGV), 잘못된 명령(SIGILL), 산술 연산 오류(SIGFPE)와 같은 치명적인 오류 상황에서 발생하는 시그널을 임의로 무시해서는 안됩니다. 해당 시그널 핸들러를 적절하게 처리하고 프로그램을 종료시켜야 합니다.\n치명적 오류 시그널 핸들러 함수에서는 값을 반환하는 대신 abort(), quick_exit(), _Exit()와 같은 함수를 호출하여 프로그램을 종료해야 합니다.",
  "rule.saqt.q.ccpp.1215.example.0.dangerous": "라인 7: 시그널 핸들러 함수에 특정한 프로그램 종료 코드가 없으므로 실행을 마치면 암시적으로 값을 반환하게 됩니다.\n라인 15: denom 값이 0이면 SIGFPE 시그널이 발생하게 됩니다. 따라서 무한 루프에 빠질 수 있습니다.",
  "rule.saqt.q.ccpp.1215.example.0.safe": "라인 6: abort(), quick_exit(), _Exit()를 사용하여 SIGFPE, SIGILL, SIGSEGV 핸들러를 종료해야 합니다. 혹은 기본 핸들러가 프로그램을 종료해주므로 기본 핸들러를 사용하도록 내버려두어도 됩니다.",
  "rule.saqt.q.ccpp.1215.name": "시그널 핸들러 반환",
  "rule.saqt.q.ccpp.1216.description": "사용되지 않은 런타임 지정 핸들러 체커는 경계 검사 함수를 호출하기 전에 런타임 지정 핸들러를 등록하지 않은 경우를 검출합니다.\nC11 표준에 의하면 경계 검사를 수행하는 라이브러리 함수에서는 전달받은 인자가 제약 조건을 만족하는지를 확인하고, 만족하지 않는 경우 시그널을 발생시키도록 규정되어 있습니다. 따라서 해당 라이브러리 함수를 사용할 때 제약 조건에 어긋나는 인자가 전달되면 프로그램이 사실을 인지하고 대응할 수 있도록 시그널 핸들러를 등록하는 것이 좋습니다.\nset_constraint_handler_s() 함수를 사용하여 핸들러를 등록합니다.",
  "rule.saqt.q.ccpp.1216.example.0.dangerous": "라인 3: strcpy_s()가 호출되었으나 이전에 런타임 지정 핸들러가 명시적으로 등록되지 않았습니다.",
  "rule.saqt.q.ccpp.1216.example.0.safe": "라인 7: 런타임 핸들러를 명시적으로 지정해야 합니다.",
  "rule.saqt.q.ccpp.1216.name": "사용되지 않은 런타임 지정 핸들러",
  "rule.saqt.q.ccpp.1218.description": "멀티스레드 프로그램 내에서 signal 함수 사용 체커는 다중 스레드 프로그램에서 signal() 함수를 호출하는 경우를 검출합니다.\nsignal() 함수로 인해 다중 스레드 환경에서 정의되지 않은 동작이 발생할 수 있습니다.\n다중 스레드 프로그램에서 signal() 함수를 호출하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1218.example.0.dangerous": "라인 13: 자식 스레드에서 반복문을 탈출하기 위해 signal() 함수를 사용했습니다.",
  "rule.saqt.q.ccpp.1218.example.0.safe": "라인 16: 자식 스레드가 반복문을 탈출하기 위해 signal() 함수를 사용하는 대신 atomic_flag 타입의 객체를 사용합니다.",
  "rule.saqt.q.ccpp.1218.name": "멀티스레드 프로그램 내에서 signal 함수 사용",
  "rule.saqt.q.ccpp.122.description": "오류 발생 시 누락된 로깅 체커는 옵션에 지정된 오류 코드를 반환하기 전에 오류 로그 함수를 호출하지 않는 코드를 검출합니다.\n옵션에서 오류 코드, 오류 로그 함수를 설정할 수 있습니다.\n오류가 발생할 때 오류 로그를 기록하지 않는다면 유지보수에 어려움이 있기 때문에 항상 오류 메시지를 기록하도록 프로그램을 작성해야 합니다.\n옵션에 지정된 오류 코드를 반환하기 전에 오류 로그 함수를 호출해야 합니다.",
  "rule.saqt.q.ccpp.122.example.0.dangerous": "라인 7: 오류 코드가 반환됩니다. 오류 로그 함수가 호출되지 않으므로 검출됩니다.",
  "rule.saqt.q.ccpp.122.example.0.safe": "라인 7: 오류 코드가 반환되기 전에 오류 로그 함수를 호출합니다.\n라인 8: 오류 코드가 반환됩니다.",
  "rule.saqt.q.ccpp.122.name": "오류 발생 시 누락된 로깅",
  "rule.saqt.q.ccpp.122.option.error_expr.description": "에러 표현식을 설정합니다.",
  "rule.saqt.q.ccpp.122.option.error_expr.name": "에러 표현식",
  "rule.saqt.q.ccpp.122.option.log_function.description": "로그 함수를 설정합니다.",
  "rule.saqt.q.ccpp.122.option.log_function.name": "로그 함수",
  "rule.saqt.q.ccpp.123.description": "하드코드된 인자 체커는 옵션에 지정된 함수를 호출할 때 특정 인자 위치에 하드코딩된 값을 사용하는 코드를 검출합니다.\n옵션에서 검출 대상 함수, 변수 및 하드코드 검사 인자 위치, 포함 및 제외 표현식, 인자의 자료형을 설정할 수 있습니다.\n하드코딩은 외부에 정보를 노출시키는 요소입니다. 비밀번호, 경로 등 보안에 중요한 요소를 하드코드로 작성하는 경우 보안에 중대한 취약점이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 하드코딩된 인자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.123.example.0.dangerous": "라인 3: strcpy() 함수를 호출할 때 두 번째 인자에 하드코딩된 값을 사용했습니다.",
  "rule.saqt.q.ccpp.123.example.0.safe": "라인 3: strcpy() 함수를 호출할 때 두 번째 인자에 하드코딩된 값을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.123.name": "하드코드된 인자",
  "rule.saqt.q.ccpp.123.option.excluded_expr.description": "제외할 표현식을 설정합니다.",
  "rule.saqt.q.ccpp.123.option.excluded_expr.name": "제외 표현",
  "rule.saqt.q.ccpp.123.option.param_target_character.description": "옵션을 사용하는 경우, char 인자를 검사합니다.",
  "rule.saqt.q.ccpp.123.option.param_target_character.name": "char형 인자 검사",
  "rule.saqt.q.ccpp.123.option.param_target_float.description": "옵션을 사용하는 경우, 부동 소수점값 인자를 검사합니다.",
  "rule.saqt.q.ccpp.123.option.param_target_float.name": "부동 소수점 인자 검사",
  "rule.saqt.q.ccpp.123.option.param_target_integer.description": "옵션을 사용하는 경우, 정수값 인자를 검사합니다.",
  "rule.saqt.q.ccpp.123.option.param_target_integer.name": "정수 인자 검사",
  "rule.saqt.q.ccpp.123.option.param_target_string.description": "옵션을 사용하는 경우, 문자열값 인자를 검사합니다.",
  "rule.saqt.q.ccpp.123.option.param_target_string.name": "문자열 인자 검사",
  "rule.saqt.q.ccpp.123.option.target_expr.description": "하드코드 표현식을 설정합니다.",
  "rule.saqt.q.ccpp.123.option.target_expr.name": "하드코드 표현",
  "rule.saqt.q.ccpp.123.option.target_func.description": "검사할 함수 호출을 설정합니다. (클래스::메서드|하드코딩 파라미터 인덱스)",
  "rule.saqt.q.ccpp.123.option.target_func.name": "검사 대상 함수 호출",
  "rule.saqt.q.ccpp.124.description": "하드코드된 초기화 값 체커는 옵션에 지정된 변수를 초기화할 때 하드코딩된 값을 사용하는 코드를 검출합니다.\n옵션에서 분석 대상 수식, 분석 대상의 자료형, 분석 제외 대상 수식을 설정할 수 있습니다.\n하드코딩은 외부에 정보를 노출시키는 요소입니다. 비밀번호, 경로 등 보안에 중요한 요소를 하드코드로 작성하는 경우 보안에 중대한 취약점이 발생할 수 있습니다.\n옵션에 지정된 변수를 초기화할 때 하드코딩된 값을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.124.example.0.dangerous": "라인 2: str 변수를 초기화할 때 하드코딩된 값을 사용했습니다.",
  "rule.saqt.q.ccpp.124.example.0.safe": "라인 2: str 변수를 초기화할 때 하드코딩된 값을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.124.name": "하드코드된 초기화 값",
  "rule.saqt.q.ccpp.124.option.excluded_expr.description": "분석 제외 수식의 정규표현식을 적습니다.",
  "rule.saqt.q.ccpp.124.option.excluded_expr.name": "분석 제외 수식",
  "rule.saqt.q.ccpp.124.option.init_target_character.description": "문자형 초기화 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.124.option.init_target_character.name": "문자형 초기화 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.124.option.init_target_float.description": "부동소수점형 초기화 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.124.option.init_target_float.name": "부동소수점형 초기화 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.124.option.init_target_integer.description": "정수형 초기화 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.124.option.init_target_integer.name": "정수형 초기화 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.124.option.init_target_string.description": "문자열 초기화 하드코딩을 검사합니다.",
  "rule.saqt.q.ccpp.124.option.init_target_string.name": "문자열 초기화 하드코딩 검사 여부",
  "rule.saqt.q.ccpp.124.option.target_expr.description": "분석 대상 수식의 정규표현식을 적습니다.",
  "rule.saqt.q.ccpp.124.option.target_expr.name": "분석 대상 수식",
  "rule.saqt.q.ccpp.1241.description": "너무 많은 파라미터 체커는 일정 이상으로 라인 수가 많거나 매개 변수가 여러 개인 함수를 검출합니다.\n함수의 매개 변수가 너무 여러 개거나 코드가 지나치게 길면 함수의 동작을 이해하기 어려워지고 코드의 유지보수도 어려워집니다.\n지정된 수 이내의 매개 변수를 사용하고 지정된 길이 이내로 함수를 작성합니다. 너무 긴 함수는 적당한 길이의 짧은 함수 여러 개로 쪼개거나 리팩토링을 통해 길이를 줄여야 합니다.",
  "rule.saqt.q.ccpp.1241.example.0.dangerous": "라인 1: 기본 옵션에 따르면 함수의 매개 변수는 최대 6개까지 사용할 수 있습니다. 이 함수의 매개 변수는 7개로 선언되었습니다.",
  "rule.saqt.q.ccpp.1241.example.0.safe": "라인 1: 지정된 최댓값 이내의 매개 변수만 사용합니다.",
  "rule.saqt.q.ccpp.1241.name": "너무 많은 파라미터",
  "rule.saqt.q.ccpp.1241.option.max_loc_count.description": "최대 라인 수를 입력합니다.",
  "rule.saqt.q.ccpp.1241.option.max_loc_count.name": "최대 라인 수",
  "rule.saqt.q.ccpp.1241.option.max_param_count.description": "최대 파라미터 수를 입력합니다.",
  "rule.saqt.q.ccpp.1241.option.max_param_count.name": "최대 파라미터 수",
  "rule.saqt.q.ccpp.1242.description": "여러 번 변경된 반복문 인덱스 체커는 반복문 내에서 반복 제어 변수를 두 번 이상 변경하는 경우를 검출합니다.\n반복 제어 변수를 반복문 안의 여러 군데에서 변경하면 반복문의 동작을 이해하기가 어려워집니다.\n반복 제어 변수는 반복문의 다만 한 군데에서만 변경하도록 합니다.",
  "rule.saqt.q.ccpp.1242.example.0.dangerous": "라인 2: 반복 제어 변수 i가 for 구문의 다음 단계 계산식에서 변경됩니다.\n라인 4: 반복 제어 변수 i가 for 구문의 본체 내부에서 한 번 더 변경됩니다.",
  "rule.saqt.q.ccpp.1242.example.0.safe": "라인 2: 반복 제어 변수 i를 한 군데에서만 변경되도록 수정했습니다.",
  "rule.saqt.q.ccpp.1242.name": "여러 번 변경된 반복문 인덱스",
  "rule.saqt.q.ccpp.1243.description": "변할 수 있는 반복문 조건 체커는 for 구문의 반복 횟수에 관한 조건을 계산할 때 상수가 아닌 복잡한 식을 사용한 경우를 검출합니다.\nfor 구문의 반복 종료 조건식은 한 번의 반복이 끝날때마다 매번 새로 계산됩니다. 따라서 이 조건식에 상수가 아닌 복잡한 식을 사용하면 식을 계산하는 데 걸리는 시간에 비례하여 반복문 실행의 성능이 떨어질 수 있습니다.\n반복문의 반복 횟수를 제어하는 식은 최대한 미리 계산해둔 상수 변수를 사용합니다.",
  "rule.saqt.q.ccpp.1243.example.0.dangerous": "라인 2: 반복 조건식 부분에서 value.getSize() 수식을 사용했습니다. 만약 getSize() 함수가 계산에 오래 걸리는 함수라면 반복문의 성능이 떨어지게 됩니다.",
  "rule.saqt.q.ccpp.1243.example.0.safe": "라인 1: 반복 횟수를 제어하는 값을 반복문 실행 전에 미리 계산해둡니다.",
  "rule.saqt.q.ccpp.1243.name": "변할 수 있는 반복문 조건",
  "rule.saqt.q.ccpp.1243.option.allow_divide.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `/` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.ccpp.1243.option.allow_divide.name": "/ 연산자 허용",
  "rule.saqt.q.ccpp.1243.option.allow_minus.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `-` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.ccpp.1243.option.allow_minus.name": "- 연산자 허용",
  "rule.saqt.q.ccpp.1243.option.allow_multiply.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `*` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.ccpp.1243.option.allow_multiply.name": "* 연산자 허용",
  "rule.saqt.q.ccpp.1243.option.allow_plus.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `+` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.ccpp.1243.option.allow_plus.name": "+ 연산자 허용",
  "rule.saqt.q.ccpp.1243.option.allow_remainder.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `%` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.ccpp.1243.option.allow_remainder.name": "% 연산자 허용",
  "rule.saqt.q.ccpp.1244.description": "여러 개의 진입 및 탈출 지점 체커는 switch 구문을 제외한 복합 구문에 진입 및 탈출 지점이 각기 한 개를 초과하는 경우를 검출합니다.\n예외 처리에 의한 탈출은 제외합니다.\n진입 및 탈출 지점을 1개로 제한하면 복합 구문의 제어 그래프가 단순해지고 코드 전체의 복잡도를 줄일 수 있습니다.\n복합 구문의 진입 및 탈출 지점을 1개로 줄입니다.",
  "rule.saqt.q.ccpp.1244.example.0.dangerous": "라인 4: break 구문에 의해 for 구문의 탈출 지점이 2개가 되었습니다.\n라인 8: 레이블 및 goto 구문으로 인해 while 구문의 진입 지점이 2개가 되었습니다.",
  "rule.saqt.q.ccpp.1244.example.0.safe": "라인 2: 복합 구문의 진입 및 탈출 지점을 각기 하나로 유지하도록 합니다.",
  "rule.saqt.q.ccpp.1244.name": "여러 개의 진입 및 탈출 지점",
  "rule.saqt.q.ccpp.1245.description": "부적절한 switch 구문 체커는 모든 경우에 대한 명시적인 케이스문을 추가하지 않고 일부 경우를 작성하지 않은 경우를 검출합니다.\n모든 경우에 대한 명시적인 케이스문을 추가하여야 합니다. 모든 경우를 고려할 경우 예상하지 못한 값으로 인한 위험을 줄일 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n모든 경우를 명시적으로 작성해야 합니다.",
  "rule.saqt.q.ccpp.1245.example.0.dangerous": "라인 5: 연속적이지 않은 숫자의 case 문이 작성되었습니다.",
  "rule.saqt.q.ccpp.1245.example.0.safe": "라인 11: switch 문에 default 문을 추가하도록 합니다.",
  "rule.saqt.q.ccpp.1245.name": "부적절한 switch 구문",
  "rule.saqt.q.ccpp.1246.description": "for 구문 내에서의 부적절한 변수 선언 체커는 루프 제어 변수를 for 문에서 선언하지 않고 기존 변수를 사용한 경우를 검출합니다.\n루프 제어 변수는 기존의 변수를 사용하는 대신 for 문장에서 선언하도록 합니다. 이와 같은 방법을 사용하는 가장 큰 장점은 자동적으로 루프 제어 변수의 범위가 루프 범위 안으로 한정된다는 점입니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n루프 제어 변수를 for 문에서 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1246.example.0.dangerous": "라인 2: 루프 제어변수를 for 문 외부에서 선언된 idx를 사용했습니다.",
  "rule.saqt.q.ccpp.1246.example.0.safe": "라인 2: 루프 제어변수를 for 문에서 선언한 i로 사용합니다.",
  "rule.saqt.q.ccpp.1246.name": "for 구문 내에서의 부적절한 변수 선언",
  "rule.saqt.q.ccpp.1247.description": "누락된 정수 상수 접미사 체커는 상수값에 대문자 접미사를 명시하지 않은 경우를 검출합니다.\nlong 상수에 접미사 L을, unsigned int 상수에 접미사 U를, unsigned long 상수에 접미사 UL을 사용하도록 합니다. 각각의 상수값에는 대문자로 접미사를 명시하는 것이 좋습니다.\n정수형 상수값에는 각 상수값에 맞는 접미사를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1247.example.0.dangerous": "라인 2: 접미사 U를 붙이지 않았습니다.\n라인 3: 접미사 UL을 붙이지 않았습니다.\n라인 4: 접미사 L을 붙이지 않았습니다.",
  "rule.saqt.q.ccpp.1247.example.0.safe": "라인 2-4: 각각 접미사 U, UL, L을 붙이도록 합니다.",
  "rule.saqt.q.ccpp.1247.name": "누락된 정수 상수 접미사",
  "rule.saqt.q.ccpp.1247.option.ignore_one.description": "상수값 1에 대해서 검사하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1247.option.ignore_one.name": "상수값 1 무시",
  "rule.saqt.q.ccpp.1247.option.ignore_zero.description": "상수값 0에 대해서 검사하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1247.option.ignore_zero.name": "상수값 0 무시",
  "rule.saqt.q.ccpp.1248.description": "누락된 부동 소수점 상수 접미사 체커는 float 상수에 접미사 F을, long double 상수에 접미사 L을 사용하지 않은 경우를 검출합니다.\nfloat 상수에 접미사 F을, long double 상수에 접미사 L을 사용하도록 합니다. 각각의 상수값에는 대문자로 접미사를 명시하는 것이 좋습니다.\nfloat 타입 상수값에는 각 상수값에 맞는 접미사를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1248.example.0.dangerous": "라인 2: 접미사 F를 붙이지 않았습니다.\n라인 3: 접미사 L을 붙이지 않았습니다.",
  "rule.saqt.q.ccpp.1248.example.0.safe": "라인 2-3: 각각 접미사 F, L을 붙이도록 합니다.",
  "rule.saqt.q.ccpp.1248.name": "누락된 부동 소수점 상수 접미사",
  "rule.saqt.q.ccpp.1249.description": "비 const 전역 및 정적 변수 체커는 전역 변수나 정적 변수가 const로 선언되어 있지 않은 경우를 검출합니다.\n전역 변수나 정적 변수는 const로 선언하는 것이 좋습니다. 상수가 아닌 전역 변수나 정적 변수를 사용하는 함수는 재진입하는데 문제가 있으며 이것은 재귀 및 멀티 스레딩에서 문제가 발생합니다. 또한, 전역 변수는 자주 유지보수와 관련하여 문제가 발생할 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n전역 변수나 정적 변수는 const로 선언합니다.",
  "rule.saqt.q.ccpp.1249.example.0.dangerous": "라인 1: 전역 변수를 사용했습니다.",
  "rule.saqt.q.ccpp.1249.example.0.safe": "라인 1: 각각의 변수를 const로 선언합니다. 만약 값이 수정될 수 있는 정적 변수나 전역 변수가 필요한 경우 싱글톤 패턴(Singleton Pattern) 등을 고려합니다.",
  "rule.saqt.q.ccpp.1249.name": "비 const 전역 및 정적 변수",
  "rule.saqt.q.ccpp.125.description": "인자로 금지된 숫자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 숫자를 사용하는 코드를 검출합니다.\n옵션에서 분석 대상 함수, 사용 금지된 숫자 위치와 값을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 숫자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.125.example.0.dangerous": "라인 3: LB_call_WA() 함수의 세 번째 인자가 숫자이므로 검출됩니다.",
  "rule.saqt.q.ccpp.125.example.0.safe": "라인 3: LB_call_WA() 함수의 세 번째 인자가 숫자 대신 strlen() 함수를 사용합니다.",
  "rule.saqt.q.ccpp.125.name": "인자로 금지된 숫자 사용",
  "rule.saqt.q.ccpp.125.option.call_param_should_not_be_deciaml.description": "숫자를 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.ccpp.125.option.call_param_should_not_be_deciaml.name": "숫자를 사용하지 말아야 할 인자",
  "rule.saqt.q.ccpp.125.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.ccpp.125.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.ccpp.1250.description": "부동 소수점 타입에서 정수 타입으로 형변환 체커는 표준 라이브러리를 사용하지 않고 실수형 타입을 정수형 타입으로 캐스팅하는 경우를 검출합니다.\n표준 라이브러리를 사용하지 않고 실수형 타입을 정수형 타입으로 캐스팅하지 않도록 합니다. 산술 정밀도가 혼합된 식을 계산하는 것은 정의되지 않은 동작입니다. 단, 다음과 같은 변환 함수의 경우 개발자의 의도를 명확히 할 수 있으며 안전하다고 판단합니다. 관련 함수는 ceil(), floor(), round() 이며 각각 소수점 이하를 올림, 버림, 반올림합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n실수형을 정수형으로 변환하는 경우 표준 라이브러리를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1250.example.0.dangerous": "라인 3: 실수형 변수를 정수형 변수로 캐스팅했습니다.",
  "rule.saqt.q.ccpp.1250.example.0.safe": "라인 6: 실수형 타입을 정수형 타입으로 캐스팅하지 않거나, 예시와 같이 특정 변환 함수를 사용합니다. 여기서 floor()의 경우 소수점 이하를 버립니다.",
  "rule.saqt.q.ccpp.1250.name": "부동 소수점 타입에서 정수 타입으로 형변환",
  "rule.saqt.q.ccpp.1251.description": "암시적 인자 형변환 체커는 함수를 호출할 때 인자값을 암시적으로 변환해야 하는 경우를 검출합니다.\n함수를 호출할 때 인자값을 암시적으로 변환해야 하는 코드를 작성하지 않도록 합니다. 사용자 정의 타입을 암시적으로 변환하면 임시 객체를 생성하고 소멸시킵니다. 이것은 매우 비효율적이며, 종종 예상하지 않은 부작용을 만들어 냅니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n함수를 호출할 때 인자값을 암시적으로 변환해야 하는 코드를 작성하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1251.example.0.dangerous": "라인 6: std:string 타입을 암시적으로 변환하게 됩니다.",
  "rule.saqt.q.ccpp.1251.example.0.safe": "라인 7: 암시적으로 변환하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1251.name": "암시적 인자 형변환",
  "rule.saqt.q.ccpp.1251.option.allow_primitive_type.description": "선택시 기본 타입의 암시적 변환을 허용합니다.",
  "rule.saqt.q.ccpp.1251.option.allow_primitive_type.name": "기본 타입의 암시적 변환 허용",
  "rule.saqt.q.ccpp.1251.option.allow_string_conversion.description": "선택시 문자열을 string 객체와 같은 문자열 클래스로의 암시적 변환을 허용합니다.",
  "rule.saqt.q.ccpp.1251.option.allow_string_conversion.name": "문자열의 암시적 변환 허용",
  "rule.saqt.q.ccpp.1251.option.allow_wrapping_class.description": "선택시 구조체를 래핑한 클래스의 암시적 변환을 허용합니다. MFC와 같은 몇몇 라이브러리들이 이에 해당됩니다.",
  "rule.saqt.q.ccpp.1251.option.allow_wrapping_class.name": "구조체를 래핑한 클래스의 암시적 변환 허용",
  "rule.saqt.q.ccpp.1255.description": "전역 변수 사용 체커는 전역 변수를 사용한 경우를 검출합니다.\n전역 변수는 클래스나 이름이 없는 네임스페이스, 함수 밖에서 선언된 것이며 외부 링크를 가집니다. 이것은 어떤 객체도 직접적으로 해당 변수에 접근하고 수정할 수 있게 되며, 이러 인해 문제가 발생할 수 있습니다. 만약 전역적으로 사용할 필요가 있는 데이터가 있는 경우 싱글턴 패턴(Singleton Pattern)의 사용을 고려합니다.\n전역 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1255.example.0.dangerous": "라인 1: 전역 변수를 사용했습니다.",
  "rule.saqt.q.ccpp.1255.example.0.safe": "라인 1: 전역 데이터를 관리하는 싱글톤 클래스를 사용합니다.",
  "rule.saqt.q.ccpp.1255.name": "전역 변수 사용",
  "rule.saqt.q.ccpp.1256.description": "using 지시자 사용 체커는 명시적인 네임스페이스 한정자를 쓰거나, using 선언을 사용하지 않고 using 지시자를 사용한 경우를 검출합니다.\nusing 지시문은 이름 조회 중에 검색된 범위 집합에 추가 범위를 추가합니다. 이러한 범위의 모든 식별자가 표시되므로 컴파일러에서 찾은 식별자가 개발자의 예상과 다를 가능성이 커집니다. using-declarations 또는 fully qualified names는 명시적으로 지정된 이름으로 간주되는 이름 집합으로 제한하므로 더 안전한 옵션입니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nusing 지시자 대신 명시적인 네임스페이스 한정자를 사용하거나 using 선언을 사용합니다.",
  "rule.saqt.q.ccpp.1256.example.0.dangerous": "라인 3: using 지시자를 사용했습니다.",
  "rule.saqt.q.ccpp.1256.example.0.safe": "라인 3: using 선언을 사용합니다.",
  "rule.saqt.q.ccpp.1256.name": "using 지시자 사용",
  "rule.saqt.q.ccpp.1257.description": "포함 구문 전 using 구문 체커는 using 지시자가 메인 소스 파일에서, 모든 #include 이후에 있지 않은 경우를 검출합니다.\nusing 지시자는 메인 소스 파일에서, 모든 #include 이후에 있어야 합니다. 예를 들어 #include 사이에 using 지시자를 사용하게 될 경우, 포함한 헤더 파일 사이에서 이름 충돌의 가능성이 생기게 됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nusing 지시자를 메인 소스 파일의 모든 #include 이후에 작성합니다.",
  "rule.saqt.q.ccpp.1257.example.0.dangerous": "라인 3: #include 사이에서 using 지시자를 사용했습니다.",
  "rule.saqt.q.ccpp.1257.example.0.safe": "라인 4: 메인 소스 파일에서, 모든 헤더 파일의 포함이 끝난 후using 지시자를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1257.name": "포함 구문 전 using 구문",
  "rule.saqt.q.ccpp.1259.description": "extern 사용 체커는 extern 키워드를 사용한 경우를 검출합니다.\nextern 키워드의 사용을 제한합니다. 암시적으로 이미 외부 링크를 가질 때, extern 키워드를 사용하지 않습니다.\nextern 키워드를 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1259.example.0.dangerous": "라인 1: 이미 extern인 함수에서 extern 키워드를 사용했습니다.",
  "rule.saqt.q.ccpp.1259.example.0.safe": "라인 1: extern을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1259.name": "extern 사용",
  "rule.saqt.q.ccpp.126.description": "헤더 파일 내 정적 지정자 사용 체커는 헤더 파일에서 함수 또는 변수 속성으로 정적 한정자를 사용하는 코드를 검출합니다.\n옵션에서 정적 함수 사용 가능 여부, 정적 변수 사용 가능 여부를 설정할 수 있습니다.\n헤더 파일에 정적 함수나 정적 변수가 포함되면 헤더 파일 안에서 정의가 이루어질 것입니다. 이 경우에 해당 함수나 변수를 사용하려면 추적하기가 어렵고, 충돌의 가능성이 있으므로 오류를 발생시키는 원인이 될 수 있습니다.\n헤더 파일에서 정적 한정자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.126.example.0.dangerous": "라인 2: 변수 a를 static으로 선언했습니다.",
  "rule.saqt.q.ccpp.126.example.0.safe": "라인 2: 헤더 파일에서 static 변수나 함수를 선언하지 않습니다.",
  "rule.saqt.q.ccpp.126.name": "헤더 파일 내 정적 지정자 사용",
  "rule.saqt.q.ccpp.126.option.ignore_function.description": "헤더 파일에서 정적 함수 사용을 허용합니다.",
  "rule.saqt.q.ccpp.126.option.ignore_function.name": "정적 함수 사용 가능 여부",
  "rule.saqt.q.ccpp.126.option.ignore_variable.description": "헤더 파일에서 정적 변수 사용을 허용합니다.",
  "rule.saqt.q.ccpp.126.option.ignore_variable.name": "정적 변수 사용 가능 여부",
  "rule.saqt.q.ccpp.1260.description": "auto 키워드 사용 체커는 auto 키워드를 사용한 경우를 검출합니다.\nauto 키워드를 사용하지 않도록 합니다. auto 키워드는 변수 선언에 사용할 경우 스택에 메모리를 할당한다는 의미입니다. 또한 아무것도 표시하지 않은 변수는 auto와 같은 의미를 가집니다. auto나 register 키워드를 사용하여 프로그래머가 메모리 할당을 조정하는 것보다 현대적인 컴파일러에게 맡겨두는 것이 더 났습니다. 이와 별개로, C++11 표준에서 auto 키워드는 자동으로 변수의 타입을 추론하는데 사용됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nauto 키워드를 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1260.example.0.dangerous": "라인 1: auto 키워드를 사용했습니다.",
  "rule.saqt.q.ccpp.1260.example.0.safe": "라인 1: auto 키워드를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1260.name": "auto 키워드 사용",
  "rule.saqt.q.ccpp.1261.description": "register 키워드 사용 체커는 register 키워드를 사용한 경우를 검출합니다.\nregister 키워드를 사용하지 않도록 합니다. register 키워드는 가능할 경우, 변수를 프로세서의 레지스터에 적재시키도록 하는 힌트입니다. auto나 register 키워드를 사용하여 프로그래머가 메모리 할당을 조정하는 것보다 현대적인 컴파일러에게 맡겨두는 것이 더 낫습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nregister 키워드를 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1261.example.0.dangerous": "라인 1: register 키워드를 사용했습니다.",
  "rule.saqt.q.ccpp.1261.example.0.safe": "라인 1: register 키워드를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1261.name": "register 키워드 사용",
  "rule.saqt.q.ccpp.1268.description": "누락된 const 한정자 체커는 포인터 매개변수를 선언할 때 const를 사용할 수 있는 곳에 const를 사용하지 않은 경우를 검출합니다.\n포인터 타입 매개변수를 선언할 때 가능하면 const를 사용하도록 합니다. const를 사용함으로써 포인터 매개변수의 값이 변경되지 않도록 보장하므로 함수 인터페이스를 더 견고하게 만들 수 있습니다.\n포인터 타입 매개변수를 선언할 때 내부에서 값을 변경하지 않는다면 const로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1268.example.0.dangerous": "라인 1: 변수 'p'를 const로 선언할 수 있음에도 const로 선언하지 않았습니다.",
  "rule.saqt.q.ccpp.1268.example.0.safe": "라인 3: 변수 'p'를 const로 선언합니다.",
  "rule.saqt.q.ccpp.1268.name": "누락된 const 한정자",
  "rule.saqt.q.ccpp.1271.description": "대입 연산 결과 사용 체커는 대입 연산자의 결과값을 다른 식의 일부로 사용하는 경우를 검출합니다.\n항상 대입 연산자의 결과를 직접적으로 사용하지 않도록 합니다. 할당 연산자는 자주 비교 연산자와 혼동됩니다. 예를들어 조건식에서 대입 연산을 사용한 후 비교 연산을 수행하는 것은 혼란을 주게 됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n대입 연산자의 결과를 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1271.example.0.dangerous": "라인 1: i를 j에 대입하는 연산을 수행한 후 그 결과를 1과 비교하는데 사용했습니다.",
  "rule.saqt.q.ccpp.1271.example.0.safe": "라인 1: 대입연산자의 결과를 직접적으로 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1271.name": "대입 연산 결과 사용",
  "rule.saqt.q.ccpp.1271.option.check_return.description": "리턴문에서 대입연산을 사용했을 경우를 검출합니다.",
  "rule.saqt.q.ccpp.1271.option.check_return.name": "리턴문 검사",
  "rule.saqt.q.ccpp.1273.description": "혼합된 부호가 있는 데이터 및 부호가 없는 데이터 체커는 수식에서 부호를 혼용하는 경우를 검출합니다.\n수식에서 부호를 혼용하지 않도록 합니다. 부호를 혼용하면 잘못된 계산으로 인한 문제가 발생할 수 있습니다.\n부호를 혼용하면 잘못된 계산으로 인한 문제가 발생할 수 있습니다.\n수식에서 부호를 혼용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1273.example.0.dangerous": "라인 3: 부호를 혼용했습니다. 실제 x의 값은 의도된 바와 다르게 계산됩니다.",
  "rule.saqt.q.ccpp.1273.example.0.safe": "라인 3: 수식에서 부호를 혼용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1273.name": "혼합된 부호가 있는 데이터 및 부호가 없는 데이터",
  "rule.saqt.q.ccpp.1273.option.allow_constant.description": "선택시 상수의 접미사와 관계없이, unsigned 및 signed 타입의 변수에 대해 연산할 수 있도록 허용합니다.",
  "rule.saqt.q.ccpp.1273.option.allow_constant.name": "상수를 모든 타입에 대해 연산할 수 있도록 허용",
  "rule.saqt.q.ccpp.1273.option.ignore_assign.description": "선택시 대입 연산자의 좌측항을 검사하지 않습니다.",
  "rule.saqt.q.ccpp.1273.option.ignore_assign.name": "대입 연산자를 검출 대상에서 제외합니다.",
  "rule.saqt.q.ccpp.1274.description": "혼합된 산술 정밀도 체커는 수식에서 산술 정밀도를 혼용하는 경우를 검출합니다.\n산술 정밀도를 혼용하기 위해 명시적인 캐스팅을 수행하고 항상 주의를 기울여야 합니다.\n산술 정밀도를 혼용하면 잘못된 계산으로 인한 문제가 발생할 수 있습니다.\n수식에서 산술 정밀도를 혼용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1274.example.0.dangerous": "라인 2: 산술 정밀도를 혼용했습니다.",
  "rule.saqt.q.ccpp.1274.example.0.safe": "라인 2: 산술 정밀도를 혼용하지 않거나, 명시적인 캐스팅을 수행하여 의도된 바를 명확히 하도록 합니다.",
  "rule.saqt.q.ccpp.1274.name": "혼합된 산술 정밀도",
  "rule.saqt.q.ccpp.1278.description": "오버로딩된 함수에 대해 기본 인자 사용 체커는 오버로딩으로 정의된 함수에 기본 인자 값이 사용된 경우를 검출합니다.\n오버로딩된 함수들에서 기본 인자 값을 사용하지 않도록 합니다. 만약 오버로딩된 함수에서 기본 인자 값을 사용할 경우 함수 호출 시 모호성이 발생할 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n오버로딩된 함수에서 기본 인자 값을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1278.example.0.dangerous": "라인 6: 함수 호출 시 모호성이 발생합니다.",
  "rule.saqt.q.ccpp.1278.example.0.safe": "라인 2: 기본 인자 값을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.1278.name": "오버로딩된 함수에 대해 기본 인자 사용",
  "rule.saqt.q.ccpp.128.description": "배열에 대해 사용자 정의 타입의 미사용 체커는 변수 또는 함수를 재정의된 자료형이 아닌 배열 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 배열 선언에서 Typedef로 재정의된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 배열 타입, 멤버 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n배열 자료형을 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.128.example.0.dangerous": "라인 1: 선언된 전역 배열 변수 a의 타입이 기본 배열 타입입니다.",
  "rule.saqt.q.ccpp.128.example.0.safe": "라인 2: 배열 타입을 재정의된 타입으로 선언합니다.",
  "rule.saqt.q.ccpp.128.name": "배열에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.ccpp.128.option.allowed_array_type.description": "허용되는 배열 타입을 설정합니다.",
  "rule.saqt.q.ccpp.128.option.allowed_array_type.name": "허용되는 배열 타입",
  "rule.saqt.q.ccpp.128.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.128.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.ccpp.128.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.128.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.1280.description": "해제 후 초기화 되지 않은 포인터 체커는 메모리 해제 후 포인터를 0으로 설정하지 않는 경우를 검출합니다.\n메모리 해제 후 항상 포인터를 0으로 설정합니다. 이후 해당 변수를 다시 사용할 때, 유효하지 않은 메모리를 참조하는 실수를 방지할 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n메모리 해제 후 항상 포인터를 0으로 설정합니다.",
  "rule.saqt.q.ccpp.1280.example.0.dangerous": "라인 4: delete후 해당 변수를 0으로 세팅하지 않았습니다.",
  "rule.saqt.q.ccpp.1280.example.0.safe": "라인 5: delete 한 포인터 변수를 0으로 셋팅 합니다.",
  "rule.saqt.q.ccpp.1280.name": "해제 후 초기화 되지 않은 포인터",
  "rule.saqt.q.ccpp.1284.description": "매크로 내 주석 체커는 매크로 정의 중간에 주석이 포함된 경우를 검출합니다.\n컴파일러가 매크로를 다루는 방법에 따라서 문제가 발생할 수 있습니다.\n매크로에 주석을 포함하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1284.example.0.dangerous": "라인 1: 매크로에서 주석을 사용했습니다.",
  "rule.saqt.q.ccpp.1284.example.0.safe": "라인 1: 매크로에서 주석을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1284.name": "매크로 내 주석",
  "rule.saqt.q.ccpp.1285.description": "소스 코드 마지막의 비어있지 않은 줄 체커는 소스 코드가 포함된 모든 파일의 마지막 줄이 빈 줄이 아닌 경우를 검출합니다.\n표준에 의하면 소스 파일의 마지막 줄은 항상 빈 줄이어야 합니다.\n소스 코드가 포함된 모든 파일의 마지막 줄은 빈 줄로 작성합니다.",
  "rule.saqt.q.ccpp.1285.example.0.dangerous": "라인 3: 마지막 줄이 빈 줄이 아닙니다.",
  "rule.saqt.q.ccpp.1285.example.0.safe": "라인 4: 마지막 줄을 빈 줄로 합니다.",
  "rule.saqt.q.ccpp.1285.name": "소스 코드 마지막의 비어있지 않은 줄",
  "rule.saqt.q.ccpp.1287.description": "포함 파일 이름에 사용된 대문자 체커는 #include 지시자에서 파일 이름에 대문자가 포함된 경우를 검출합니다.\n이 규칙은 대소 문자를 구분하는 파일 시스템과 구분하지 않은 파일 시스템 간의 호환성을 위한 규칙입니다.\n#include 지시자에서 파일 이름에 대문자를 포함하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1287.example.0.dangerous": "라인 1: 대문자와 소문자를 혼합된 파일 이름을 참조했습니다.",
  "rule.saqt.q.ccpp.1287.example.0.safe": "라인 1: 파일 이름을 소문자로만 한 뒤 참조하도록 합니다.",
  "rule.saqt.q.ccpp.1287.name": "포함 파일 이름에 사용된 대문자",
  "rule.saqt.q.ccpp.1289.description": "부적절한 상수 정의 체커는 상수 정의에 const 객체나 열거형 대신 매크로를 사용한 경우를 검출합니다.\n상수 정의에 매크로를 사용하는 것보다 const 객체나 열거형을 사용하는 것이 컴파일 과정에서 타입 시스템의 도움을 받기에 더 수월합니다.\n상수 정의에는 const 객체나 열거형을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1289.example.0.dangerous": "라인 1: #define으로 상수를 정의했습니다.",
  "rule.saqt.q.ccpp.1289.example.0.safe": "라인 1: 상수 객체나 열거형을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1289.name": "부적절한 상수 정의",
  "rule.saqt.q.ccpp.129.description": "배열 타입 사용 체커는 옵션에 지정된 변수를 배열 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 배열 변수 검사 범위를 지정할 수 있습니다.\n변수를 배열 자료형으로 선언하지 않습니다.",
  "rule.saqt.q.ccpp.129.example.0.dangerous": "라인 1: 인자로 배열 변수를 선언했습니다.",
  "rule.saqt.q.ccpp.129.example.0.safe": "라인 1: 배열을 사용하지 않도록 금지된 특정 유형의 변수에 배열 타입을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.129.name": "배열 타입 사용",
  "rule.saqt.q.ccpp.129.option.expand_typedef.description": "옵션을 사용하는 경우, 타입을 재정의한 변수를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.expand_typedef.name": "타입 재정의(typedef) 변수를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.scope_target_global.description": "옵션을 사용하는 경우, 전역 범위를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.scope_target_global.name": "전역 범위 검사 여부",
  "rule.saqt.q.ccpp.129.option.scope_target_local.description": "옵션을 사용하는 경우, 지역 범위를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.scope_target_local.name": "지역 범위 검사 여부",
  "rule.saqt.q.ccpp.129.option.scope_target_parameter.description": "옵션을 사용하는 경우, 인자를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.scope_target_parameter.name": "인자 검사 여부",
  "rule.saqt.q.ccpp.129.option.variable_target_const.description": "옵션을 사용하는 경우, 상수를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.variable_target_const.name": "상수 검사 여부",
  "rule.saqt.q.ccpp.129.option.variable_target_non_const.description": "옵션을 사용하는 경우, 비상수를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.variable_target_non_const.name": "비상수 검사 여부",
  "rule.saqt.q.ccpp.129.option.variable_target_signed.description": "옵션을 사용하는 경우, 부호있는 정수를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.variable_target_signed.name": "부호있는 정수 검사 여부",
  "rule.saqt.q.ccpp.129.option.variable_target_unsigned.description": "옵션을 사용하는 경우, 부호없는 정수를 검사합니다.",
  "rule.saqt.q.ccpp.129.option.variable_target_unsigned.name": "부호없는 정수 검사 여부",
  "rule.saqt.q.ccpp.1290.description": "이중자 사용 체커는 이중자(digraph)를 사용하는 경우를 검출합니다.\n이중자(digraph)를 사용하지 않도록 합니다. 이중자의 사용은 코드의 가독성을 떨어트릴 수 있습니다.\n이중자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1290.example.0.dangerous": "라인 1: 이중자를 사용했습니다.",
  "rule.saqt.q.ccpp.1290.example.0.safe": "라인 1: 이중자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1290.name": "이중자 사용",
  "rule.saqt.q.ccpp.130.description": "금지된 타입 사용 체커는 옵션에 지정된 자료형으로 변수를 선언하는 코드를 검출합니다.\n옵션에서 사용이 금지된 자료형의 검사 범위 및 한정자를 지정할 수 있습니다.\n옵션에 지정된 자료형을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.130.example.0.dangerous": "라인 1: foo() 함수의 첫 번째 인자가 금지된 long 타입입니다.",
  "rule.saqt.q.ccpp.130.example.0.safe": "라인 1: 금지된 타입 대신 대체할 수 있는 다른 타입을 사용하도록 합니다. long 타입은 int, int32, int64 등 크기를 알기 쉬운 타입으로 대체하는 것이 안전합니다.",
  "rule.saqt.q.ccpp.130.name": "금지된 타입 사용",
  "rule.saqt.q.ccpp.130.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.130.option.forbidden_type.description": "사용 금지 타입을 설정합니다.",
  "rule.saqt.q.ccpp.130.option.forbidden_type.name": "사용 금지 타입",
  "rule.saqt.q.ccpp.130.option.ignore_const.description": "상수 무시 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.ignore_const.name": "상수 무시 여부",
  "rule.saqt.q.ccpp.130.option.scope_target_global.description": "전역 변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.scope_target_global.name": "전역 변수 검사 여부",
  "rule.saqt.q.ccpp.130.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.ccpp.130.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.ccpp.130.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.130.option.type_target_array.description": "배열 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.type_target_array.name": "배열 타입 검사 여부",
  "rule.saqt.q.ccpp.130.option.type_target_pointer.description": "포인터 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.type_target_pointer.name": "포인터 타입 검사 여부",
  "rule.saqt.q.ccpp.130.option.type_target_signed.description": "부호있는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.type_target_signed.name": "부호있는 정수 검사 여부",
  "rule.saqt.q.ccpp.130.option.type_target_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.type_target_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.130.option.type_target_unsigned.description": "부호없는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.130.option.type_target_unsigned.name": "부호없는 정수 검사 여부",
  "rule.saqt.q.ccpp.1305.description": "너무 높은 역참조 수준 체커는 한 문장 안에서 역참조가 2단계를 초과하여 중첩 사용된 경우를 검출합니다.\n한 번에 수행하는 역참조의 단계가 너무 깊으면 코드의 가독성이 떨어지며 실수를 할 가능성도 높아집니다.\n두 단계를 초과하는 역참조를 수행하려면 임시 변수에 중간 결과를 저장하는 등의 방법으로 역참조 중첩을 분리해야 합니다.",
  "rule.saqt.q.ccpp.1305.example.0.dangerous": "라인 2: 3단계의 역참조가 이루어졌습니다.",
  "rule.saqt.q.ccpp.1305.example.0.safe": "라인 2: 역참조는 2단계 이하로 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1305.name": "너무 높은 역참조 수준",
  "rule.saqt.q.ccpp.1306.description": "매크로 내에서 포인터 역참조 연산 사용 체커는 매크로 정의를 사용하여 포인터 역참조 연산을 보이지 않게 숨기는 경우를 검출합니다.\n포인터 역참조 연산식을 작성할 때는 그 부분에서 오류가 발생하기 하기 쉽기 때문에 최대한 겉으로 드러나는 방식으로 작성해야 합니다. 그래야 작성자를 포함하여 코드를 읽는 누구든지 그 지점에서 역참조가 일어난다는 사실을 인지하고 실수가 있는지 여부를 판단할 수 있습니다.\n포인터 역참조 연산은 매크로로 정의하지 말고 겉으로 드러나게 사용합니다.",
  "rule.saqt.q.ccpp.1306.example.0.dangerous": "라인 1: 포인터 역참조 연산을 매크로 내부에 숨기고 있습니다.",
  "rule.saqt.q.ccpp.1306.example.0.safe": "라인 1: 매크로 내에서 역참조 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1306.name": "매크로 내에서 포인터 역참조 연산 사용",
  "rule.saqt.q.ccpp.1308.description": "파일 간 중복된 함수 혹은 변수 이름 체커는 다른 파일에서 같은 함수명 혹은 변수명을 재사용하는 경우를 검출합니다.\n다른 파일에서 전역적으로 같은 이름을 중복해서 사용하는 경우 개별 파일을 컴파일할 때에는 문제가 없지만 그 결과를 서로 링크할 때 해석이 모호해질 수 있습니다.\n다른 파일에서는 다른 함수명과 변수명을 사용하도록 수정합니다.",
  "rule.saqt.q.ccpp.1308.example.0.dangerous": "라인 2: 8_9a.c 파일에 func() 함수 정의가 존재합니다.\n라인 6: 8_9b.c 파일에도 func() 함수 정의가 존재합니다.",
  "rule.saqt.q.ccpp.1308.example.0.safe": "라인 6: 다른 파일에서 전역적으로 같은 이름이 존재하지 않도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1308.name": "파일 간 중복된 함수 혹은 변수 이름",
  "rule.saqt.q.ccpp.1309.description": "누락된 extern 변수 선언 체커는 다른 소스 파일 어디에서도 선언을 찾을 수 없는 변수가 extern으로 선언된 경우를 검출합니다.\nextern으로 전역 변수를 선언하는 것은 다른 소스 파일에 해당 변수가 구체적으로 정의되어 있을 것을 가정하고 해당 전역 변수를 끌어다 쓰겠다는 의미입니다. 그러나 그 변수가 같은 프로젝트 내의 다른 소스 파일에서 제대로 선언되어 있지 않다면 작성자가 어디선가 실수를 했을 가능성이 높습니다.\n이 소스 파일에서 extern 키워드 없이 변수를 직접 선언하거나 변수를 소유할 다른 소스 파일에 변수를 제대로 선언해줍니다.",
  "rule.saqt.q.ccpp.1309.example.0.dangerous": "라인 2: foo.c 파일에 notComp 변수를 extern으로 선언했습니다. 그러나 다른 소스 파일에서 extern 키워드 없는 notComp 변수 선언을 찾을 수 없습니다.",
  "rule.saqt.q.ccpp.1309.example.0.safe": "라인 4: bar.c 파일에 notComp 변수를 선언합니다.",
  "rule.saqt.q.ccpp.1309.name": "누락된 extern 변수 선언",
  "rule.saqt.q.ccpp.131.description": "포인터에 대해 사용자 정의 타입의 미사용 체커는 변수 또는 함수를 재정의된 자료형이 아닌 포인터 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 변수 또는 함수 선언에서 Typedef로 재정의된 포인터 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 포인터 타입, 멤버 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n포인터 자료형을 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.131.example.0.dangerous": "라인 1: 전역 변수 a의 타입이 재정의된 타입이 아닙니다.",
  "rule.saqt.q.ccpp.131.example.0.safe": "라인 2: 포인터 타입을 재정의된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.131.name": "포인터에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.ccpp.131.option.allowed_pointer_type.description": "허용하는 포인터 타입이름을 설정합니다.",
  "rule.saqt.q.ccpp.131.option.allowed_pointer_type.name": "허용하는 포인터 타입",
  "rule.saqt.q.ccpp.131.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.131.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.ccpp.131.option.scope_target_parameter.description": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.131.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.1310.description": "매크로 연결 시 국제 문자 사용 체커는 매크로의 연결에서 유니코드와 같은 유니버설 문자가 인자로 전달되는 경우를 검출합니다.\n매크로의 연결에서 유니코드와 같은 유니버설 문자를 인자로 전달하지 않도록 합니다.\n즉, 매크로의 연결은 유니코드와 같은 유니버설 문자를 인자로 사용하지 않습니다.\n매크로의 연결에서 유니코드와 같은 유니버설 문자를 인자로 전달하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1310.example.0.dangerous": "라인 1: 매크로 연결에서 유니버설 문자를 인자로 사용했습니다. 따라서 MS Visual Studio 2013에서는 컴파일에 성공하지만, GCC 4.8.1에서는 오류와 함께 컴파일에 실패하게 됩니다.",
  "rule.saqt.q.ccpp.1310.example.0.safe": "라인 1: 매크로 연결에서 유니버설 문자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1310.name": "매크로 연결 시 국제 문자 사용",
  "rule.saqt.q.ccpp.1312.description": "누락된 상수 간 관계 체커는 복수의 연관된 상수에 대한 관계를 식으로 사용하지 않고 각각을 독립적으로 선언하는 경우를 검출합니다.\n서로 연관된 상수에 대한 관계식을 사용하여 해당 상수를 선언해야 의미를 명확히 파악할 수 있습니다.\n서로 연관된 상수의 관계식을 사용하여 해당 상수를 정의합니다.",
  "rule.saqt.q.ccpp.1312.example.0.dangerous": "라인 1: IN_STR_LEN 상수와 OUT_STR_LEN 상수는 서로 관계가 있지만 독립적으로 정의되었습니다.",
  "rule.saqt.q.ccpp.1312.example.0.safe": "라인 1: 두 값 사이에 관계가 있으므로 OUT_STR_LEN 상수를 IN_STR_LEN 상수를 사용한 식으로 정의합니다.",
  "rule.saqt.q.ccpp.1312.name": "누락된 상수 간 관계",
  "rule.saqt.q.ccpp.1314.description": "반복문 내에서 복합 리터럴 주소 사용 체커는 복합 리터럴(Compound Literal)을 해석하는 방식을 제대로 이해하지 못하고 반복문에서 잘못 사용하는 경우를 검출합니다.\n프로그램에서 복합 리터럴을 사용하면 임시 객체가 생성됩니다. 전역 변수를 선언할 때 임시 객체를 활용한 것이 아니면 임시 객체는 복합 리터럴이 포함된 블록이 끝날때까지 지속됩니다. 또한 반복문에서 복합 상수를 사용하는 경우 반복문을 수행할 때마다 새롭게 임시 객체를 생성하지 않고 최초에 생성한 임시 객체를 재사용합니다. 이와 같은 복합 리터럴의 특성을 제대로 이해하지 못한 채 복합 상수를 사용하면 프로그램이 의도하지 않게 동작하거나 오류가 발생할 수 있습니다. 특히 복합 리터럴의 주소를 참조하여 사용하는 경우 해당 블록을 빠져나오는 순간 임시 객체의 지속시간이 끝나고 해당 주소는 무효화되므로 주의해야 합니다.\n복합 리터럴로부터 생성되는 임시 객체는 해당 구문 내에서만 사용되고 폐기된다고 가정하는 것이 안전합니다. 임시 객체를 사용하여 다른 객체를 초기화하면 임시 객체의 주소를 참조하는 대신 임시 객체의 값을 복사하는 방식으로 전달해야 합니다.",
  "rule.saqt.q.ccpp.1314.example.0.dangerous": "라인 9: 임시 객체를 한 번만 생성하므로 ints 배열의 모든 포인터가 동일한 하나의 임시 객체를 가리키게 되며, 해당 객체의 필드 x의 값은 MAX_INTS-1입니다.\n라인 10: for 구문이 종료되면 임시 객체의 지속 시간이 종료되어 해당 주소가 더 이상 유효하지 않습니다. 따라서 ints 배열의 모든 주소 값은 유효하지 않은 값입니다.\n라인 12: 두 번째 for 구문에서 ints 배열의 각 요소를 역참조했습니다. 유효하지 않은 주소를 역참조하는 것은 정의되지 않은 동작입니다. 실제 실행에서는 해당 메모리를 아직 덮어쓰지 않을 가능성이 높으므로 어떤 값이 출력되었을 것입니다. 그러나 기대했던 것처럼 0에서 MAX_INTS-1까지의 값이 출력되는 것이 아니라 MAX_INTS-1 하나의 값이 연속으로 출력될 것입니다.",
  "rule.saqt.q.ccpp.1314.example.0.safe": "라인 9: 반복문 안에서 복합 리터럴의 주소를 참조하는 대신 임시 객체의 값을 복사하도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1314.name": "반복문 내에서 복합 리터럴 주소 사용",
  "rule.saqt.q.ccpp.1315.description": "유일하지 않은 서로에게 보이는 식별자 체커는 범위를 공유하는 식별자가 일정한 수의 앞글자만을 고려했을 때 유일하게 정의되지 않은 경우를 검출합니다.\n코드의 이식성을 보장하기 위해 식별자를 처음 31글자에서 구별해야 합니다.\n식별자가 유일하게 정의되지 않으면 컴파일 오류가 발생하거나 의도하지 않은 타입 혼동이 발생할 수 있습니다. 특히 컴파일러 환경에 따라, 너무 긴 식별자를 사용했을 때 뒷부분을 인식하지 못할 수 있기 때문에 앞부분 31글자 안에서 구별되도록 이름을 지어야 합니다.\n상호 참조 가능한 영역에 있는 모든 식별자를 앞부분 31글자 안에서 구별하도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1315.example.0.dangerous": "라인 1: 앞부분 31글자까지 두 변수의 이름이 같습니다. 따라서 시스템에 따라 같은 식별자로 처리될 수 있습니다.",
  "rule.saqt.q.ccpp.1315.example.0.safe": "라인 1: 두 변수의 식별자가 앞부분 31글자까지 비교하는 경우에도 유일해야 합니다.",
  "rule.saqt.q.ccpp.1315.name": "유일하지 않은 서로에게 보이는 식별자",
  "rule.saqt.q.ccpp.1316.description": "시그널 핸들러 내에서의 비 volatile 변수 사용 체커는 시그널 핸들러에서 volatile로 선언되지 않은 전역 변수를 사용하는 경우를 검출합니다.\nvolatile로 선언되지 않은 변수는 캐싱될 가능성이 있습니다. 시그널 핸들러에서 참조하는 변수를 캐싱하도록 소스 코드를 컴파일하면 프로그램이 의도하지 않게 동작할 수 있습니다.\n시그널 핸들러에서 사용하는 전역 변수를 volatile로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1316.example.0.dangerous": "라인 9: i의 값이 캐싱되도록 컴파일되면 시그널 핸들러가 지정한 i 값이 while 구문의 영역에 전달되지 않으므로 무한 루프에 빠질 가능성이 있습니다.",
  "rule.saqt.q.ccpp.1316.example.0.safe": "라인 2: 시그널 핸들러가 사용하는 전역 변수를 volatile로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1316.name": "시그널 핸들러 내에서의 비 volatile 변수 사용",
  "rule.saqt.q.ccpp.1317.description": "선점된 식별자 사용 체커는 예약어일 수 있는 단어를 식별자로 사용하는 경우를 검출합니다.\n밑줄로 시작하는 이름의 경우 컴파일러에서 내부적으로 사용하는 매크로일 수 있으므로 사용하지 않는 것이 좋습니다. 컴파일러에서 내부적으로 사용하는 이름을 식별자로 사용하면 컴파일러가 오작동할 수 있습니다.\n밑줄로 시작하는 이름을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1317.example.0.dangerous": "라인 1: 밑줄로 시작하는 식별자를 매크로에 사용했습니다.",
  "rule.saqt.q.ccpp.1317.example.0.safe": "라인 1: 밑줄(_)로 시작하는 이름을 매크로에 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1317.name": "선점된 식별자 사용",
  "rule.saqt.q.ccpp.1319.description": "매크로 인자의 부수 효과 체커는 매크로의 인자에 부수 효과가 발생할 수 있는 식을 전달하는 코드를 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n매크로에서 인자를 몇 번 계산하는지 알 수 없기 때문에 인자에 부수 효과가 발생하는 식을 사용하지 않는 것이 좋습니다. 만약 매크로가 인자를 여러 번 계산하도록 정의되어 있다면 매크로를 사용할 때는 인자가 한 번만 계산되는 것처럼 보이지만 실제로는 여러 번 계산되어서 부수 효과 발생이 여러 번 이루어져 예상과 다른 현상이 일어날 수 있습니다.\n매크로의 인자에는 부수 효과가 없는 식을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1319.example.0.dangerous": "라인 3: 매크로의 정의에 따라 이 식은 전처리 단계에서 다음과 같이 변경됩니다. m = (((++n) < 0) ? -(++n) : (++n)); 여기서 매크로 인자였던 ++n 식이 여러 번 수행되므로 구문 수행 후 n의 값은 처음보다 3 큰 값이 되었습니다. 하지만 직관에 어긋나는 현상입니다.",
  "rule.saqt.q.ccpp.1319.example.0.safe": "라인 4: 매크로의 인자에는 부수 효과가 없는 식을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1319.name": "매크로 인자의 부수 효과",
  "rule.saqt.q.ccpp.132.description": "사용자 정의 타입의 미사용 체커는 변수 또는 함수를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 변수 또는 함수 선언에서 Typedef로 재정의된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 타입, 멤버 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n자료형을 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.132.example.0.dangerous": "라인 1: 전역 변수 a의 타입이 재정의된 타입이 아닙니다.",
  "rule.saqt.q.ccpp.132.example.0.safe": "라인 2: 변수 타입을 재정의된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.132.name": "사용자 정의 타입의 미사용",
  "rule.saqt.q.ccpp.132.option.allowed_type.description": "허용하는 재정의 타입을 설정합니다.",
  "rule.saqt.q.ccpp.132.option.allowed_type.name": "허용하는 재정의 타입",
  "rule.saqt.q.ccpp.132.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.132.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.ccpp.132.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.132.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.1320.description": "호환되지 않는 포인터를 통한 변수 접근 체커는 메모리에 저장된 값의 타입과 호환되지 않는 타입의 포인터를 사용하여 메모리에 접근하는 경우를 검출합니다.\n호환되지 않는 타입의 포인터를 사용하여 메모리에 접근하는 것은 정의되지 않은 동작입니다. 컴파일러에 따라 해당 구문의 해석이 다를 수 있습니다. 예를 들어 일반적으로 32비트 부동소수점 타입(float)의 값이 저장된 메모리 영역을 32비트 정수형(int) 포인터로 역참조하면 포인터의 타입 크기와 실제 메모리에 저장된 값의 크기가 동일하므로 특별한 문제가 생기지 않을 것이며, 그저 해당 부동소수점 값의 비트 패턴을 정수로 해석한 값을 얻어낼 수 있을 것이라고 생각하기 쉽습니다. 실제로 대부분의 컴파일러가 그렇게 해석을 해주긴 하지만 이런 동작은 언어의 공식적인 정의에 따르면 정의되지 않은 동작이며 이 구문이 어떻게 실행될지 아무도 보장해주지 않습니다.\n포인터를 통한 메모리 접근은 다음과 같은 방식으로 수행해야 합니다. 우선 실제로 메모리에 저장된 값과 동일한 타입의 포인터를 사용하여 접근할 수 있습니다. 또한 void* 타입 포인터를 사용하여 임의의 메모리 영역을 가리킬 수 있습니다. 물론 이 포인터를 사용하면 역참조할 수 없습니다. 마지막으로 어떤 값이든 임의의 바이트 배열로 해석해줄 수 있는 char* 타입을 사용하여 임의의 메모리 영역을 가리킬 수 있습니다. 기계 수준의 비트 패턴을 사용하여 특정 타입의 값을 어떻게 표현하는지 알고 싶다면 char* 타입의 포인터를 사용하면 됩니다.",
  "rule.saqt.q.ccpp.1320.example.0.dangerous": "라인 4: float 타입의 값이 저장된 메모리 영역에 int* 포인터를 사용하여 접근했습니다. 이것은 정의되지 않은 동작입니다.",
  "rule.saqt.q.ccpp.1320.example.0.safe": "라인 4: 호환되는 타입의 포인터를 사용하여 메모리에 접근해야 합니다.",
  "rule.saqt.q.ccpp.1320.name": "호환되지 않는 포인터를 통한 변수 접근",
  "rule.saqt.q.ccpp.1321.description": "부적절한 정수 형변환 체커는 문자를 큰 정수값으로 변환하기 전에 unsigned 정수형 값을 거치지 않는 경우를 검출합니다.\n문자를 정수로 해석할 때에는 0에서 255까지의 ASCII 코드로 해석해야 하므로 unsigned 값으로 취급해야 합니다. 이런 문자 값을 char 타입에서 signed 더 넓은 정수형으로 바로 캐스팅하면 128 이상의 문자 코드에 대해 잘못된 캐스팅이 일어날 수 있습니다. 128 이상의 문자 코드는 8비트로 표현했을 때 최상위 비트가 1이므로 signed 정수로 취급하면 최상위 비트 확장으로 인해 음수로 해석되기 때문입니다.\n문자 코드가 0에서 255까지의 정수로 해석될 수 있도록 unsigned 정수로 먼저 캐스팅해야 합니다.",
  "rule.saqt.q.ccpp.1321.example.0.dangerous": "라인 8: char를 signed 타입으로 사용하는 컴파일러를 사용한다면, c_str이 가리키는 값을 int 타입인 c 변수에 대입할 때 부호 확장이 일어날 수 있습니다. c_str이 가리키고 있던 값이 255라면 int 타입으로 변환할 때 -1로 변환되어 잘못된 값을 반환하게 됩니다.",
  "rule.saqt.q.ccpp.1321.example.0.safe": "라인 9: *c_str 값을 c 변수에 대입하기 전에 unsigned 타입으로 캐스팅해야 합니다.",
  "rule.saqt.q.ccpp.1321.name": "부적절한 정수 형변환",
  "rule.saqt.q.ccpp.1322.description": "FILE 객체 복사 체커는 표준 라이브러리 FILE 객체를 복사하는 경우를 검출합니다.\nFILE 객체는 관련 라이브러리 함수 호출을 통해서만 다루도록 설계되어 있습니다. 따라서 FILE 객체를 복사해서 사용하면 두 객체가 같은 동작을 할 것이 보장되지 않으며, 객체 내부의 값을 임의로 조작하면 관련 라이브러리가 제대로 작동하지 않을 수 있습니다.\nFILE 객체를 다루려면 설계된 대로 라이브러리 함수를 호출해야 합니다.",
  "rule.saqt.q.ccpp.1322.example.0.dangerous": "라인 2: FILE 객체를 역참조한 후에 복사했습니다.",
  "rule.saqt.q.ccpp.1322.example.0.safe": "라인 2: 파일 객체를 복사하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1322.name": "FILE 객체 복사",
  "rule.saqt.q.ccpp.1323.description": "재정의된 errno 체커는 errno 변수를 개별 소스 파일에서 직접 재정의하는 경우를 검출합니다.\nerrno 변수를 개별 소스 파일에서 직접 선언하는 것은 정의되지 않은 동작을 발생시킵니다.\nerrno 변수를 직접 선언하는 대신 errno.h 등의 표준 헤더에 포함하도록 합니다.",
  "rule.saqt.q.ccpp.1323.example.0.dangerous": "라인 1: errno 변수를 재정의했습니다.",
  "rule.saqt.q.ccpp.1323.example.0.safe": "라인 1: errno 변수를 직접 재정의하는 대신 관련된 표준 헤더를 포함시킵니다.",
  "rule.saqt.q.ccpp.1323.name": "재정의된 errno",
  "rule.saqt.q.ccpp.1324.description": "함수 프로토타입 내 파라미터 이름 체커는 함수의 프로토타입을 선언할 때 매개 변수의 이름을 명시하는 경우를 검출합니다.\n그러면 잘못된 해석으로 인해 헤더에서 선언을 보호하지 못하는 경우 타입 오류가 발생하지 않도록 방지할 수 있습니다.\n함수 프로토타입에서는 매개 변수의 이름을 명시하지 말고 타입만을 포함하도록 합니다.",
  "rule.saqt.q.ccpp.1324.example.0.dangerous": "라인 2: 전처리 구문을 실행하면 프로토타입이 void update_status(int 23); 으로 변경되어 문법적인 오류가 발생하게 됩니다.",
  "rule.saqt.q.ccpp.1324.example.0.safe": "라인 1: 매개 변수의 이름을 명시하지 않습니다.",
  "rule.saqt.q.ccpp.1324.name": "함수 프로토타입 내 파라미터 이름",
  "rule.saqt.q.ccpp.133.description": "멤버 변수에 대해 사용자 정의 타입의 미사용 체커는 멤버를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 구조체의 멤버 변수 선언에서 Typedef로 재정의된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용하는 멤버 타입, 배열 검사 여부, 포인터 검사 여부, 함수 포인터 검사 여부를 설정할 수 있습니다.\n멤버를 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.133.example.0.dangerous": "라인 2: 구조체 st에 있는 멤버 변수 a의 타입이 재정의된 타입이 아닙니다.",
  "rule.saqt.q.ccpp.133.example.0.safe": "라인 3: 구조체의 멤버 변수 타입을 재정의된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.133.name": "멤버 변수에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.ccpp.133.option.allowed_member_type.description": "허용되는 멤버 타입을 설정합니다.",
  "rule.saqt.q.ccpp.133.option.allowed_member_type.name": "허용되는 멤버 타입",
  "rule.saqt.q.ccpp.133.option.check_function_ptr.description": "함수 포인터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.133.option.check_function_ptr.name": "함수 포인터 검사 여부",
  "rule.saqt.q.ccpp.133.option.type_target_array.description": "배열 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.133.option.type_target_array.name": "배열 검사 여부",
  "rule.saqt.q.ccpp.133.option.type_target_pointer.description": "포인터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.133.option.type_target_pointer.name": "포인터 검사 여부",
  "rule.saqt.q.ccpp.1333.description": "지정된 문자 배열의 길이 체커는 문자열 리터럴로 초기화되는 배열 선언에서 배열의 크기를 지정하는 경우를 검출합니다.\n배열을 선언할 때 문자열 리터럴로 초기화하면 자동으로 해당 문자열에 맞는 크기가 배열에 할당됩니다. 직접 배열의 크기를 지정하는 경우 잘못된 크기를 지정하여 문자열을 0으로 끝내지 않거나 문자열을 저장할 공간이 부족할 수 있습니다.\n문자열로 초기화되는 배열의 크기를 명시하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1333.example.0.dangerous": "라인 1: \"abc\" 문자열을 저장하기 위해 필요한 공간은 '\\0'을 포함하여 총 4 문자입니다. 하지만 배열의 크기를 3으로 직접 지정했으므로 '\\0'을 저장할 공간이 부족하여 0으로 끝나지 않는 비정상적인 문자열이 저장되었습니다.",
  "rule.saqt.q.ccpp.1333.example.0.safe": "라인 1: 배열의 크기를 지정하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1333.name": "지정된 문자 배열의 길이",
  "rule.saqt.q.ccpp.134.description": "금지된 배열 타입 사용 체커는 지역 변수의 배열 자료형을 허용되지 않은 배열 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 변수 선언에서 허용된 배열 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 변수 타입, 지역 변수 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n지역 변수를 허용된 배열 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.134.example.0.dangerous": "라인 2: 지역 변수 a를 허용되지 않은 배열 타입 int[]로 선언했습니다.",
  "rule.saqt.q.ccpp.134.example.0.safe": "라인 2: 변수를 허용된 배열 타입으로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.134.name": "금지된 배열 타입 사용",
  "rule.saqt.q.ccpp.134.option.allowed_variable_type.description": "허용되는 변수 타입을 설정합니다.",
  "rule.saqt.q.ccpp.134.option.allowed_variable_type.name": "허용되는 변수 타입",
  "rule.saqt.q.ccpp.134.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.134.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.ccpp.134.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.134.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.135.description": "허용되지 않은 타입 사용 체커는 지역 변수를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 지역 변수 선언에서 허용된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 변수 타입, 지역 변수 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n지역 변수를 허용된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.135.example.0.dangerous": "라인 1: 매개변수 변수 a를 허용되지 않은 타입 short으로 선언했습니다.",
  "rule.saqt.q.ccpp.135.example.0.safe": "라인 1: 변수를 허용된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.135.name": "허용되지 않은 타입 사용",
  "rule.saqt.q.ccpp.135.option.allowed_variable_type.description": "허용되는 변수 타입을 설정합니다.",
  "rule.saqt.q.ccpp.135.option.allowed_variable_type.name": "허용되는 변수 타입",
  "rule.saqt.q.ccpp.135.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.135.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.ccpp.135.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.135.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.1357.description": "너무 많은 실행 경로 체커는 함수에 반복문으로 인한 순환을 제외하고 직선으로 실행 가능한 경로가 지나치게 많은 경우를 검출합니다.\n함수 내에서 순환하지 않는 실행 경로의 수가 지나치게 많으면 테스트 및 관리에 어려움이 커집니다.\n함수 내 직선 실행 경로의 수가 200개 이하가 되도록 함수를 작성합니다.",
  "rule.saqt.q.ccpp.1357.example.0.dangerous": "라인 12: 실행 경로가 너무 많습니다.",
  "rule.saqt.q.ccpp.1357.example.0.safe": "라인 4: 실행 경로의 수를 200개 이하로 유지하도록 합니다.",
  "rule.saqt.q.ccpp.1357.name": "너무 많은 실행 경로",
  "rule.saqt.q.ccpp.136.description": "금지된 복합 타입 사용 체커는 배열, 문자열, 구조체와 같은 복합형 변수(compound variable)를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 허용되는 변수 타입, 포인터 타입 검사 여부, 배열 타입 검사 여부, 재정의 타입 검사 여부, 지역 변수 검사 여부, 인자 검사 여부, 이름이 정의되지 않은 구조체/공용체 무시 여부를 설정할 수 있습니다.\n복합형 변수를 허용된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.136.example.0.dangerous": "라인 7: 지역 변수 st를 허용되지 않은 자료형인 bad로 선언했습니다.",
  "rule.saqt.q.ccpp.136.example.0.safe": "라인 7: 지역 변수 st를 허용된 자료형인 good으로 선언합니다.",
  "rule.saqt.q.ccpp.136.name": "금지된 복합 타입 사용",
  "rule.saqt.q.ccpp.136.option.allowed_variable_type.description": "허용되는 변수 타입을 설정합니다.",
  "rule.saqt.q.ccpp.136.option.allowed_variable_type.name": "허용되는 변수 타입",
  "rule.saqt.q.ccpp.136.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.136.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.136.option.ignore_anonymous.description": "이름이 정의되지 않은 구조체/공용체는 무시합니다.",
  "rule.saqt.q.ccpp.136.option.ignore_anonymous.name": "이름이 정의되지 않은 구조체/공용체 무시 여부",
  "rule.saqt.q.ccpp.136.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.136.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.ccpp.136.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.136.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.136.option.type_target_array.description": "배열 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.136.option.type_target_array.name": "배열 타입 검사 여부",
  "rule.saqt.q.ccpp.136.option.type_target_pointer.description": "포인터 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.136.option.type_target_pointer.name": "포인터 타입 검사 여부",
  "rule.saqt.q.ccpp.136.option.type_target_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.136.option.type_target_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.1360.description": "Boolean 값에 대해 증가 연산자 사용 체커는 bool 형식의 변수에 증가 연산자(`++`)를 사용하는 경우를 검출합니다.\nbool 형식의 변수에 증가 연산자(`++`)를 사용하지 않도록 합니다. 이와 같은 방식은 더 이상 사용되지 않습니다.\nbool형식의 변수에 증가 연산자를 사용하지 않습니다. 직접적인 참, 거짓을 대입하거나 toggle()이나 set(), clear() 같은 사용자 정의 함수를 만들어서 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1360.example.0.dangerous": "라인 2: bool 타입의 변수에 증가 연산자를 사용했습니다.",
  "rule.saqt.q.ccpp.1360.example.0.safe": "라인 2: 직접적으로 true, false를 대입합니다. 혹은 사용자 정의 함수를 만들어 사용할 수도 있습니다.",
  "rule.saqt.q.ccpp.1360.name": "Boolean 값에 대해 증가 연산자 사용",
  "rule.saqt.q.ccpp.1364.description": "정수 타입에서 열거형 타입으로 형변환 체커는 정수형을 열거형으로 캐스팅하는 경우를 검출합니다.\n정수형을 열거형으로 캐스팅하지 않도록 합니다. 정수값이 열거형의 범위에 포함되지 않을시 캐스팅 수행 결과는 명시되지 않았습니다. 이것은 캐스팅 시 오버플로우가 발생할 수도 있으며 개발자는 원하던 값과 다른 결과를 얻게 될것입니다.\n의도하지 않은 동작을 수행할 수 있습니다.\n정수형을 열거형으로 캐스팅하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1364.example.0.dangerous": "라인 4: 열거형 범위를 벗어나는 정수값을 캐스팅하고 있습니다.",
  "rule.saqt.q.ccpp.1364.example.0.safe": "라인 3: 정수값을 캐스팅하여 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1364.name": "정수 타입에서 열거형 타입으로 형변환",
  "rule.saqt.q.ccpp.1368.description": "컨테이너 크기를 0과 비교 체커는 size() 함수의 반환 값을 0과 비교하는 경우를 검출합니다.\n컨테이너의 크기를 0과 비교하는 것은 컨테이너가 요소를 하나라도 가지고 있는지를 판단하는 것이며, size() 함수는 컨테이너의 종류에 따라 선형 시간 복잡도를 가질 수도 있습니다. 반면에 empty() 함수의 경우 상수 시간복잡도를 가지므로 성능의 측면에서 컨테이너가 비어 있는지 확인하기 위해 굳이 size() 함수를 사용할 이유가 없습니다.\n컨테이너가 비어 있는지 확인하려면 empty() 함수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1368.example.0.dangerous": "라인 2: list 컨테이너는 미리 요소의 수를 계산하지 않기 때문에 size() 함수는 선형 시간복잡도를 가집니다.",
  "rule.saqt.q.ccpp.1368.example.0.safe": "라인 2: empty() 함수는 상수 시간복잡도를 가집니다. 이 코드는 size()의 결과를 0과 비교하는것과 동일한 동작을 수행합니다.",
  "rule.saqt.q.ccpp.1368.name": "컨테이너 크기를 0과 비교",
  "rule.saqt.q.ccpp.137.description": "금지된 포인터 타입 사용 체커는 포인터 변수를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 허용되는 변수 타입, 지역 변수 검사 여부, 인자 검수 여부, 재정의 타입 검사 여부를 설정할 수 있습니다.\n포인터 변수를 허용된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.137.example.0.dangerous": "라인 1: 매개변수인 변수 a를 옵션에 허용된 자료형으로 선언하지 않았습니다.",
  "rule.saqt.q.ccpp.137.example.0.safe": "라인 1: 매개변수인 변수 a를 옵션에 허용된 자료형으로 선언합니다.",
  "rule.saqt.q.ccpp.137.name": "금지된 포인터 타입 사용",
  "rule.saqt.q.ccpp.137.option.allowed_variable_type.description": "허용되는 변수 타입을 설정합니다.",
  "rule.saqt.q.ccpp.137.option.allowed_variable_type.name": "허용되는 변수 타입",
  "rule.saqt.q.ccpp.137.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.137.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.137.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.137.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.ccpp.137.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.137.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.1372.description": "식별자 명명 규칙 위반 체커는 식별자 이름이 밑줄(_)로 시작하는 경우를 검출합니다.\n식별자 이름의 첫 시작은 밑줄(_)로 시작하지 말아야 합니다. 보통 밑줄로 시작하는 식별자 이름은 표준 라이브러리에서 사용하는 경우가 많습니다.\n식별자 이름을 밑줄로 시작하지 않도록 작성합니다.",
  "rule.saqt.q.ccpp.1372.example.0.dangerous": "라인 1: 식별자의 이름이 밑줄로 시작했습니다.",
  "rule.saqt.q.ccpp.1372.example.0.safe": "라인 1: 식별자의 이름을 밑줄이 아닌 다른 문자로 시작하십시오.",
  "rule.saqt.q.ccpp.1372.name": "식별자 명명 규칙 위반",
  "rule.saqt.q.ccpp.1378.description": "소스 파일 내 extern 변수 및 함수 체커는 extern 변수와 함수 정의가 인터페이스 파일이 아닌 곳에 선언된 경우를 검출합니다.\n인터페이스 파일 외에 extern 항목이 있으면 해당 항목이 어디에 선언되었는지 파악하기 어렵습니다. 복잡한 프로그램은 개발자가 의도하지 않은 동작을 할 수 있습니다.\nextern 변수와 함수 정의를 인터페이스 파일에서만 표현하도록 합니다.",
  "rule.saqt.q.ccpp.1378.example.0.dangerous": "라인 4: extern 변수 및 함수를 소스 파일에서 정의했습니다.",
  "rule.saqt.q.ccpp.1378.example.0.safe": "라인 4: 헤더 파일에서 extern 변수 및 함수를 정의하도록 합니다.",
  "rule.saqt.q.ccpp.1378.name": "소스 파일 내 extern 변수 및 함수",
  "rule.saqt.q.ccpp.1379.description": "매직 넘버 사용 체커는 코드에 심볼릭 상수가 아닌 매직 넘버나 문자열들을 사용하는 경우를 검출합니다.\n매직 넘버나 문자열을 코드 중간에 사용하는 경우 변경사항이 있을 때마다 모든 코드를 조사하여 해당 매직 넘버와 문자열을 수정해야 합니다. 이는 코드 유지보수를 어렵게 만들 뿐 아니라 개발자가 의도하지 않은 동작을 수행하는 코드가 될 수 있습니다.\n매직 넘버 또는 문자열 대신 상수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1379.example.0.dangerous": "라인 2: buf의 배열 크기를 정할 때 매직 넘버를 사용하고 있습니다.",
  "rule.saqt.q.ccpp.1379.example.0.safe": "라인 3: buf의 배열 크기를 정할 때 심볼릭 상수를 사용했습니다.",
  "rule.saqt.q.ccpp.1379.name": "매직 넘버 사용",
  "rule.saqt.q.ccpp.138.description": "금지된 사용자 정의 타입 사용 체커는 typedef을 통해 재정의된 미지정 자료형을 변수 또는 매개변수 선언에 사용하는 코드를 검출합니다.\n옵션에서 허용되는 변수 타입, 지역 변수 검사 여부, 매개 변수 검수 여부를 설정할 수 있습니다.\ntypedef 을 사용하는 자료형을 재정의할 때 옵션에 지정된 typedef 자료형을 사용해야 합니다.",
  "rule.saqt.q.ccpp.138.example.0.dangerous": "라인 1: 허용되지 않은 재정의 타입 S64를 사용했습니다.",
  "rule.saqt.q.ccpp.138.example.0.safe": "라인 1: 허용되는 재정의 타입 S32를 사용합니다.",
  "rule.saqt.q.ccpp.138.name": "금지된 사용자 정의 타입 사용",
  "rule.saqt.q.ccpp.138.option.allowed_variable_type.description": "허용되는 타입을 설정합니다.",
  "rule.saqt.q.ccpp.138.option.allowed_variable_type.name": "허용되는 타입",
  "rule.saqt.q.ccpp.138.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.138.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.ccpp.138.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.138.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.1380.description": "누락된 void 키워드 체커는 인자가 없는 함수 선언에서 인자 목록에 void 키워드를 명시하지 않은 경우를 검출합니다.\n인자가 없는 함수를 선언할 때 인자 목록에 void 키워드를 명시해야 합니다. void 키워드를 명시하지 않으면 인자가 없는 함수에 인자를 전달하고 호출하더라도 일부 컴파일러에서 오류를 발생시키지 않게 됩니다.\n인자가 없는 함수를 선언할 때 void 키워드를 명시해야 합니다.",
  "rule.saqt.q.ccpp.1380.example.0.dangerous": "라인 1: 함수에 인자가 없음에도 불구하고 void 키워드를 명시하지 않았습니다.",
  "rule.saqt.q.ccpp.1380.example.0.safe": "라인 1: 함수에 인자가 없는 경우 void 키워드를 명시하도록 합니다.",
  "rule.saqt.q.ccpp.1380.name": "누락된 void 키워드",
  "rule.saqt.q.ccpp.139.description": "누락된 배열 인덱스 검사 체커는 매개변수를 배열의 인덱스로 사용할 때 해당 인덱스에 대한 유효성을 검증하지 않은 코드를 검출합니다.\n배열의 인덱스를 사용할 때에는 버퍼 오버런이 발생할 수 있다는 점에 주의해야 합니다. 공격자는 버퍼 오버런을 통해 프로그램의 오작동이나 중단과 같은 동작을 발생시킬 수 있습니다.\n매개변수를 배열의 인덱스로 사용하기 전에 인덱스의 유효성 검증을 수행해야 합니다.",
  "rule.saqt.q.ccpp.139.example.0.dangerous": "라인 3: 매개변수 index를 배열 arr의 인덱스로 사용하기 전에 index에 대한 유효성 검증을 수행하지 않았습니다.",
  "rule.saqt.q.ccpp.139.example.0.safe": "라인 4: 매개변수를 배열의 인덱스로 사용하려면 먼저 조건문을 통해 유효성 검증을 수행하도록 합니다.",
  "rule.saqt.q.ccpp.139.name": "누락된 배열 인덱스 검사",
  "rule.saqt.q.ccpp.1391.description": "부적절한 메모리 재할당 체커는 realloc() 함수의 반환 값을 저장할 변수와 첫 번째 인자가 같은 경우를 검출합니다.\nrealloc() 함수는 메모리 재할당에 실패하면 기존에 할당되어 있이던 메모리를 내버려둔 채 널을 반환합니다. 따라서 realloc() 함수의 첫 번째 인자와 같은 변수에 반환 값을 저장하도록 호출했다가 realloc() 함수가 재할당에 실패한다면 첫 번째 인자 변수에 들어있던 기존의 할당 메모리에 접근할 수 있는 주소 값을 잃어버릴 수도 있습니다. 이로 인해 메모리 누출이 발생할 수 있습니다.\nrealloc() 함수를 호출할 때에는 별도의 포인터 변수에 반환 값을 저장하고 반환 값이 널인지 여부를 먼저 확인해야 합니다. 반환 값이 널이 아니면 재할당에 성공한 것이므로 이 값을 기존의 메모리가 저장되어 있이던 변수에 덮어쓰면 됩니다.",
  "rule.saqt.q.ccpp.1391.example.0.dangerous": "라인 1: realloc() 함수의 반환 값을 첫 번째 인자와 동일한 변수에 저장합니다.",
  "rule.saqt.q.ccpp.1391.example.0.safe": "라인 1: realloc() 함수의 반환 값은 첫 번째 인자와 다른 변수에 저장해야 합니다.",
  "rule.saqt.q.ccpp.1391.name": "부적절한 메모리 재할당",
  "rule.saqt.q.ccpp.1393.description": "상수 값의 수정 체커는 const로 선언된 변수의 값을 수정하는 경우를 검출합니다.\nconst로 선언된 변수에 값을 직접 대입하는 것은 문법적으로 불가능하지만 포인터 연산 등을 사용하여 우회적으로 값을 변경할 수 있습니다. 그러나 이러한 방법으로 인해 변수를 const로 선언하여 값을 변경하지 않으려는 개발자의 의도와 다른 결과가 발생합니다. 또한 참조자 타입, 레퍼런스 부분에 const를 선언하는 경우도 있을 수 있습니다. 이 경우 한정자가 무시되어 값을 수정할 수 있게 됩니다. 참조자 타입 자체에 const를 부여하는 경우는 값을 수정할 수 없으므로 컴파일 과정을 통과했다면 큰 문제는 발생하지 않습니다.\nconst로 선언된 변수의 값은 어떤 식으로든 변경되지 않도록 합니다.",
  "rule.saqt.q.ccpp.1393.example.0.dangerous": "라인 7: const 객체 i의 값을 수정했습니다.\n라인 9: 참조자 타입의 참조 부분에 const를 사용했습니다. const는 무시됩니다.",
  "rule.saqt.q.ccpp.1393.example.0.safe": "라인 3: i의 값을 수정하려면 const로 선언하지 않아야 합니다.\n라인 9: 참조자 타입의 타입 부분에 const를 선언하도록 합니다. 혹은 아예 const로 선언하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1393.name": "상수 값의 수정",
  "rule.saqt.q.ccpp.1394.description": "일치하지 않는 삼항 연산 내 타입 체커는 삼항 연산자에서 조건부로 선택될 수 있는 두 가지 식의 타입이 일치하지 않는 경우를 검출합니다.\n삼항 연산자를 사용하면 프로그램의 실행 흐름에 따라 두 가지 값 중 하나가 임의로 선택될 수 있습니다. 따라서 둘의 타입이 동일해야 삼항 연산의 결과를 일관성 있게 활용할 수 있습니다.\n삼항 연산에서 두 가지 선택지의 정적 타입을 일치시켜야 합니다.",
  "rule.saqt.q.ccpp.1394.example.0.dangerous": "라인 4: 두 가지 선택지의 타입이 int와 float으로 달라졌습니다.",
  "rule.saqt.q.ccpp.1394.example.0.safe": "라인 4: 두 가지 선택지의 타입을 동일하게 맞춰줍니다.",
  "rule.saqt.q.ccpp.1394.name": "일치하지 않는 삼항 연산 내 타입",
  "rule.saqt.q.ccpp.1395.description": "불충분한 할당 메모리 체커는 객체를 저장하기에 충분하지 않은 크기로 메모리를 할당하는 경우를 검출합니다.\n충분하지 않은 크기로 메모리를 할당하고 해당 메모리에 접근하면 버퍼 오버플로우가 발생할 수 있습니다.\n객체를 저장하기에 충분한 크기의 메모리를 할당하도록 합니다.",
  "rule.saqt.q.ccpp.1395.example.0.dangerous": "라인 6: long 타입의 포인터 변수에 int 타입 크기의 배수만큼 메모리가 할당되었습니다. 이것은 실수로 할당했을 가능성이 높으며 해당 메모리를 long 형 값이 len 개 존재하는 배열처럼 취급하면 버퍼 오버플로우가 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.1395.example.0.safe": "라인 6: sizeof(int) 대신 sizeof(long)를 사용하여 의도한 배열을 저장하기에 충분한 크기의 메모리를 할당합니다.",
  "rule.saqt.q.ccpp.1395.name": "불충분한 할당 메모리",
  "rule.saqt.q.ccpp.1396.description": "#pragma 지시자 사용 체커는 컴파일러나 플랫폼 별로 고유한 지시사항을 전달하는 데 사용되는 #pragma의 사용을 검출합니다.\n특정 컴파일러에 종속적인 언어나 전처리 확장을 사용하면 소스 코드의 이식성이 낮아집니다.\n컴파일러에 종속적인 #pragma 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1396.example.0.dangerous": "라인 1: #pragma를 사용했습니다.\n라인 6: #pragma를 사용했습니다.",
  "rule.saqt.q.ccpp.1396.example.0.safe": "라인 1: #pragma를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1396.name": "#pragma 지시자 사용",
  "rule.saqt.q.ccpp.1397.description": "주석 없는 빈 구문 체커는 특정한 방식의 사용만 예외적으로 허용되는 빈 문장이 허용되지 않는 방식으로 사용된 경우를 검출합니다.\n빈 문장은 보통 특별히 있어야 할 필요가 없으므로 일반적으로는 사용해선 안됩니다. 단, 특정한 방식으로 사용하는 것이 예외적으로 허용됩니다. 빈 문장은 한 줄에 단독 사용되어아 하며, 빈 문장 앞에 들여쓰기를 위한 공백은 존재할 수 있습니다. 또한 주석문이 빈 문장 뒤에 존재해야 하고 주석문과 빈 문장 사이에 하나 이상의 공백 문자가 존재해야 합니다.\n빈 문장을 사용하지 않거나 정해진 요건을 만족하도록 수정합니다.",
  "rule.saqt.q.ccpp.1397.example.0.dangerous": "라인 2: 빈 구문 뒤에 주석이 없습니다.",
  "rule.saqt.q.ccpp.1397.example.0.safe": "라인 2: 빈 구문 뒤에 공백과 주석문을 붙여야 합니다.",
  "rule.saqt.q.ccpp.1397.name": "주석 없는 빈 구문",
  "rule.saqt.q.ccpp.1398.description": "표준 라이브러리 내 이름 체커는 표준 라이브러리에서 사용되는 식별자와 동일한 객체명이나 함수명을 사용하는 경우를 검출합니다.\n일반적으로 표준 라이브러리에 정의된 매크로를 #undef하지 않는 것이 좋습니다. 또한 C/C++에서 예약어로 사용되는 매크로 이름이나 표준 라이브러리의 객체 또는 함수의 이름을 재사용하는 것도 혼란을 일으킬 수 있으므로 피해야 합니다.\n객체나 함수를 정의할 때 표준 라이브러리에서 사용하는 이름을 피하도록 합니다.",
  "rule.saqt.q.ccpp.1398.example.0.dangerous": "라인 1: string.h 헤더에 포함되어 있는 표준 라이브러리 함수 strcmp()와 동일한 이름을 사용했습니다.",
  "rule.saqt.q.ccpp.1398.example.0.safe": "라인 1: 표준 라이브러리의 식별자를 재사용하지 않도록 식별자 이름을 변경합니다.",
  "rule.saqt.q.ccpp.1398.name": "표준 라이브러리 내 이름",
  "rule.saqt.q.ccpp.1399.description": "friend 함수 및 클래스 사용 체커는 클래스 선언에서 friend 키워드를 사용하는 경우를 검출합니다.\nfriend 선언을 사용하면 클래스간의 상호 의존도가 높아지고 인터페이스가 복잡해지며 캡슐화 수준을 떨어뜨립니다.\nfriend를 사용한 선언을 하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1399.example.0.dangerous": "라인 7: friend 함수를 선언했습니다.\n라인 8: friend 클래스를 선언했습니다.",
  "rule.saqt.q.ccpp.1399.example.0.safe": "라인 7: friend 함수 및 클래스를 선언하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1399.name": "friend 함수 및 클래스 사용",
  "rule.saqt.q.ccpp.140.description": "부적절한 조건 비교 체커는 if 나 while 문에서 비교 연산을 수행할 때 0 또는 false 값을 사용하지 않는 코드를 검출합니다.\n옵션에서 값을 설정할 수 있습니다.\n조건문에서 비교 연산을 수행할 때 0 또는 true/false 값과 비교해야 합니다.",
  "rule.saqt.q.ccpp.140.example.0.dangerous": "라인 2: value 값의 boolean 비교 연산에서 허용되지 않은 상수 1을 사용했습니다.",
  "rule.saqt.q.ccpp.140.example.0.safe": "라인 2: boolean 비교 연산을 수행할 때 허용된 값을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.140.name": "부적절한 조건 비교",
  "rule.saqt.q.ccpp.140.option.allowed_equality_value.description": "비교 가능한 값을 적습니다.(정규 표현식)",
  "rule.saqt.q.ccpp.140.option.allowed_equality_value.name": "비교 가능한 값",
  "rule.saqt.q.ccpp.1400.description": "누락된 더 큰 정수 타입으로의 형변환 체커는 정수에 대해 비교 또는 사칙연산을 수행하기 전에 적절한 표현 범위를 갖는 타입으로 캐스팅하지 않는 경우를 검출합니다.\n정수의 연산을 수행하기 전에 결과값을 저장하기에 충분한 표현 범위를 갖는 타입으로 캐스팅을 수행하지 않으면 정수 오버플로우로 인해 예상하지 못한 값이 계산될 수 있습니다.\n정수에 대해 사칙 연산을 수행하기 전에 결과값을 저장하기에 충분한 큰 타입으로 캐스팅을 수행합니다. 정수에 대해 비교 연산을 수행하기 전에도 정수 간 표현 범위를 일치시킬 수 있도록 캐스팅을 수행합니다.",
  "rule.saqt.q.ccpp.1400.example.0.dangerous": "라인 6: size_t 타입의 표현 범위가 unsigned long long 타입의 표현 범위보다 작다면 이 비교 연산의 계산 결과는 항상 거짓이 됩니다. 비교 연산의 좌변의 계산 결과 정수 오버플로우가 발생하지 않는다면 결과값이 SIZE_MAX보다 작을 것이고, SIZE_MAX보다 큰 결과가 나오려 할 때도 정수 오버플로우로 인해 SIZE_MAX보다 작은 값으로 계산되기 때문입니다.",
  "rule.saqt.q.ccpp.1400.example.0.safe": "라인 2: 비교나 사칙 연산을 수행하기 전에 올바른 캐스팅을 수행해야 합니다.",
  "rule.saqt.q.ccpp.1400.name": "누락된 더 큰 정수 타입으로의 형변환",
  "rule.saqt.q.ccpp.1401.description": "void 포인터 타입에서 비 void 포인터 타입으로 형변환 체커는 void 포인터를 다른 포인터로 캐스팅하는 경우를 검출합니다.\nC 표준에 의하면 void 포인터를 임의의 다른 포인터로 캐스팅할 수 있습니다. 그러나 void 포인터의 경우 어떤 값이 저장된 메모리 공간이라도 임의로 가리킬 수 있기 때문에 실제로 메모리에 저장된 값의 타입에 따라 잘못된 캐스팅을 수행할 수 있습니다. 예를 들어 int 타입 값이 저장된 메모리 공간을 double 타입의 포인터로 가리키게 되었다면 잘못된 캐스팅입니다.\n되도록이면 void 포인터를 사용하지 않고, 반드시 사용해야 한다면 void 포인터가 가리키는 메모리에 저장된 값의 타입을 정확히 관리해야 합니다.",
  "rule.saqt.q.ccpp.1401.example.0.dangerous": "라인 3: int 포인터 값을 반환해야 하는 함수가 void 포인터 변수를 반환했습니다.\n라인 6: char 포인터 변수가 void 포인터로 암시적 캐스팅되어 인자로 전달되었습니다.",
  "rule.saqt.q.ccpp.1401.example.0.safe": "라인 1: void 포인터형을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1401.name": "void 포인터 타입에서 비 void 포인터 타입으로 형변환",
  "rule.saqt.q.ccpp.1403.description": "누락된 실패 시 문자열 초기화 체커는 함수가 파일을 읽는 데 실패하여 결과값을 저장할 문자열 버퍼를 초기화하지 않는 경우를 검출합니다.\nfgets() 함수나 fgetws() 함수를 호출했으나 작동에 실패했다면 대상 문자열 버퍼를 초기화해야 합니다.\nC 표준에는 fgets() 및 fgetws() 함수가 파일 읽기에 실패했을 때 읽기 결과를 저장하려던 버퍼가 어떤 상태가 되는지에 대해서 정의되어 있지 않습니다. 따라서 해당 함수가 작동에 실패하고 나면 버퍼에 들어있는 값에 대해 어떠한 가정도 할 수 없으며 정상적인 문자열 값이 들어있지 않을 수도 있으므로 버퍼에 들어있는 값을 사용하지 말고 버퍼를 알려진 값으로 초기화해야 합니다.\n파일 읽기 함수의 작동이 성공했는지 실패했는지 확인하고 실패했을 경우엔 대상 버퍼를 초기화할 수 있도록 코드를 작성해야 합니다.",
  "rule.saqt.q.ccpp.1403.example.0.dangerous": "라인 6: buf 배열을 알려진 값으로 초기화하지 않았습니다.",
  "rule.saqt.q.ccpp.1403.example.0.safe": "라인 6: buf 배열이 빈 문자열을 의미하도록 초기화합니다.",
  "rule.saqt.q.ccpp.1403.name": "누락된 실패 시 문자열 초기화",
  "rule.saqt.q.ccpp.1405.description": "누락된 배열 길이 검사 체커는 길이를 제한하지 않고 가변 길이 배열을 선언하는 경우를 검출합니다.\n가변 길이 배열의 길이를 적절한 범위로 제한하지 않으면 스택 메모리를 지나치게 많이 사용하는 문제가 발생할 수 있습니다.\n적절한 길이를 제한하여 가변 길이 배열을 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1405.example.0.dangerous": "라인 2: 배열의 길이를 지정하는 변수의 값을 확인하지 않고 가변 길이 배열을 선언했습니다.",
  "rule.saqt.q.ccpp.1405.example.0.safe": "라인 4: 가변 길이 배열의 길이를 지정하는 변수의 값을 먼저 확인해야 합니다.",
  "rule.saqt.q.ccpp.1405.name": "누락된 배열 길이 검사",
  "rule.saqt.q.ccpp.1406.description": "void 반환 타입 사용 체커는 반환 타입이 void로 선언된 함수의 반환 값을 사용하는 경우를 검출합니다.\n반환 타입이 void인 함수의 반환 값을 사용하는 것은 C 표준에서 정의되지 않은 동작입니다.\n반환 타입이 void인 함수는 수식에 사용하거나 변수에 대입해선 안됩니다. 일반적으로 이런 함수는 단독 호출 구문으로만 사용하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.1406.example.0.dangerous": "라인 7: 반환 타입이 void인 함수 function()의 반환 값을 사용했습니다.",
  "rule.saqt.q.ccpp.1406.example.0.safe": "라인 6: 반환 타입이 void인 함수 function()을 호출하기만 하는 구문으로 변경했습니다.",
  "rule.saqt.q.ccpp.1406.name": "void 반환 타입 사용",
  "rule.saqt.q.ccpp.1407.description": "효과가 없는 구문 체커는 구문 내에 부수 효과가 전혀 없는 구문을 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n부수 효과가 전혀 없는 구문은 삭제해도 프로그램의 전체 실행 결과에 영향을 미치지 않습니다. 의미 없이 연산 능력만을 소모하므로 삭제하는 것이 좋습니다.\n부수 효과가 없는 구문을 삭제하도록 합니다.",
  "rule.saqt.q.ccpp.1407.example.0.dangerous": "라인 5: 해당 구문은 메모리에 아무 영향도 미치지 않습니다.\n라인 6: 해당 구문은 메모리에 아무 영향도 미치지 않습니다.",
  "rule.saqt.q.ccpp.1407.example.0.safe": "라인 4: 아무 영향이 없는 구문을 삭제합니다. 각 구문을 실행하면 메모리 상태에 변화가 발생해야 합니다.",
  "rule.saqt.q.ccpp.1407.name": "효과가 없는 구문",
  "rule.saqt.q.ccpp.1408.description": "타입 정의 내에서 포인터 역참조 연산 사용 체커는 사용자 정의 타입을 사용하여 포인터 역참조 연산을 보이지 않게 숨기는 경우를 검출합니다.\n포인터 역참조 연산식을 작성할 때는 그 부분에서 오류가 발생하기 하기 쉽기 때문에 최대한 겉으로 드러나는 방식으로 작성해야 합니다. 그래야 작성자를 포함하여 코드를 읽는 누구든지 그 지점에서 역참조가 일어난다는 사실을 인지하고 실수가 있는지 여부를 판단할 수 있습니다.\n포인터 역참조 연산은 사용자 정의 타입으로 정의하지 말고 겉으로 드러나게 사용합니다.",
  "rule.saqt.q.ccpp.1408.example.0.dangerous": "라인 1: typedef를 사용한 사용자 정의 타입 선언에 역참조 연산을 포함시켜 포인터 역참조를 숨겼습니다.",
  "rule.saqt.q.ccpp.1408.example.0.safe": "라인 1: 사용자 정의 타입 선언 안에 포인터 역참조를 숨기지 않도록 합니다.",
  "rule.saqt.q.ccpp.1408.name": "타입 정의 내에서 포인터 역참조 연산 사용",
  "rule.saqt.q.ccpp.1409.description": "실수 변환에서 정밀성 손실 체커는 표현이 가능한 범위 차이에 의해 정밀도 손실이 일어날 수도 있는 정수형에서 실수형으로의 캐스팅을 검출합니다.\n정수형 타입의 값을 실수형 타입으로 캐스팅할 때 충분한 크기의 실수형 타입을 사용하지 않으면 일정 범위를 넘어서는 값은 제대로 변환되지 않습니다. 예를 들어 Visual Studio 및 GCC 컴파일러를 사용할 때 2의 24제곱을 넘어가는 값을 float 타입으로 캐스팅하면 낮은 자릿수에서 값 손실이 발생하게 됩니다.\n정수형 값을 실수형으로 캐스팅할 때 해당 정수 값을 충분히 담을 수 있는 실수형 타입을 사용해야 합니다. 정수형 값의 범위를 정확히 알고있지 않다면 double 타입을 사용하는 것이 float 타입을 사용하는 것보다 안전합니다.",
  "rule.saqt.q.ccpp.1409.example.0.dangerous": "라인 2: 2의 24제곱 이하의 값이므로 문제 없이 float 타입으로 캐스팅할 수 있습니다.\n라인 3: 2의 24제곱보다 큰 값을 float 타입으로 변환합니다. 2진수로 표현했을 때 가장 낮은 자리의 값이 손실되므로 이 값을 다시 int 타입으로 변환한 결과는 16777216이 되며 이것은 초기값과 다릅니다.\n라인 4: 2의 24제곱보다 큰 값도 표현할 수 있는 int 타입(4바이트) 값을 float 타입으로 캐스팅했습니다. big 변수에 담긴 값에 따라 정밀도 손실이 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.1409.example.0.safe": "라인 3: 2의 24제곱을 초과하는 상수를 저장할 때에는 충분한 정밀도를 가진 실수형을 사용합니다.\n라인 4: 충분한 정밀도를 가진 실수형을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1409.name": "실수 변환에서 정밀성 손실",
  "rule.saqt.q.ccpp.141.description": "누락된 디버그 모드 검사 체커는 디버깅 함수를 호출하기 전에 디버깅 모드인지를 확인하지 않는 코드를 검출합니다.\n옵션에서 디버깅 함수 목록, 디버깅 함수 사용 확인 함수를 설정할 수 있습니다.\n디버깅 함수를 사용하기 전에 해당 함수가 디버깅 모드인지를 확인하는 함수를 호출해야 합니다.",
  "rule.saqt.q.ccpp.141.example.0.dangerous": "라인 2: debug() 함수를 호출하기 전에 디버그 모드를 확인하지 않았습니다.",
  "rule.saqt.q.ccpp.141.example.0.safe": "라인 2: debug() 함수를 호출하기 전에 조건문에서 디버그 모드를 확인하기 위해 debug_check() 함수를 호출해야 합니다.",
  "rule.saqt.q.ccpp.141.name": "누락된 디버그 모드 검사",
  "rule.saqt.q.ccpp.141.option.check_function.description": "디버깅 함수 사용을 확인하는 함수 목록입니다.",
  "rule.saqt.q.ccpp.141.option.check_function.name": "디버깅 함수 사용 확인 함수 목록",
  "rule.saqt.q.ccpp.141.option.debug_function.description": "디버깅 함수 목록입니다.",
  "rule.saqt.q.ccpp.141.option.debug_function.name": "디버깅 함수 목록",
  "rule.saqt.q.ccpp.1412.description": "인스턴스로 매크로 사용 체커는 매크로로 구현되었을 가능성이 있는 표준 라이브러리 식별자를 객체처럼 다루는 경우를 검출합니다.\n표준 라이브러리 함수나 변수는 실제로 함수나 변수로 선언되어 있을 수도 있지만 매크로로 선언되어 있을 수도 있습니다. 만약 어떤 식별자가 매크로를 사용하여 선언되어 있다면 이 식별자에 대해 참조 연산을 수행하는 등 객체처럼 대하면 프로그램이 의도대로 작동하지 않을 수 있습니다.\n표준 라이브러리 식별자 중 매크로로 선언되어 있을 가능성이 있는 것들은 객체처럼 대하지 말고 표준 라이브러리가 가이드하는 방식으로만 사용해야 합니다.",
  "rule.saqt.q.ccpp.1412.example.0.dangerous": "라인 6: assert() 함수에 대해 참조 연산을 통해 함수 포인터를 얻으려 시도하고 있습니다. 그러나 컴파일러에 따라 assert() 함수는 매크로로 정의되어 있을 수 있으며 이로인해 정의되지 않은 동작이 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.1412.example.0.safe": "라인 9: assert() 함수를 객체처럼 다루지 않도록 합니다. assert() 함수를 함수 포인터 형태로 다른 함수에 전달하려면 aseert() 함수를 사용하는 새로운 함수를 정의한 후 이 함수를 사용합니다.",
  "rule.saqt.q.ccpp.1412.name": "인스턴스로 매크로 사용",
  "rule.saqt.q.ccpp.1417.description": "rename의 잘못된 사용 체커는 rename() 함수를 호출할 때 파일 이름이 중복되는 상황에 대응하지 않는 경우를 검출합니다.\nC 표준에서 rename() 함수의 구체적인 실행 결과는 컴파일러별로 다르게 정의할 수 있도록 열려있습니다. rename() 함수에서 대상으로 지정한 파일이 기존에 이미 존재하는 파일명인 경우에, POSIX 계열 시스템에서는 기존의 파일을 제거하도록 구현되어 있고, Windows에서는 rename() 함수가 동작에 실패하도록 구현되어 있습니다. 이런 차이 때문에 rename() 함수를 단독으로 사용하면 이식성에 문제가 생깁니다.\n의도를 명확히 할 수 있도록 다른 함수를 함께 사용합니다. rename() 함수를 호출하되 이미 존재하는 파일은 보존하는 것이 의도라면 POSIX 환경에서는 rename() 함수를 호출하기 전에 access() 함수를 사용하여 해당 파일이 존재하는지 먼저 검사하는 것이 필요합니다. 기존에 존재하던 파일은 제거하는 것이 의도라면 Windows 환경에서는 rename() 함수를 호출하기 전에 remove() 함수를 사용하여 해당 파일을 먼저 제거하는 것이 필요합니다.",
  "rule.saqt.q.ccpp.1417.example.0.dangerous": "라인 1: POSIX 환경이라면 이미 대상 이름의 파일이 존재할 때 기존 파일을 보존하고 싶더라도 파일을 지워버리게 됩니다. Windows 환경이라면 기존 파일을 제거하고 싶더라도 제거하지 못하고 동작이 실패하게 됩니다.",
  "rule.saqt.q.ccpp.1417.example.0.safe": "라인 2: POSIX 환경에 대응하기 위해 파일이 있는지 먼저 확인합니다.\n라인 9: Windows 환경에 대응하기 위해 remove() 함수를 사용하여 기존에 존재하던 파일을 제거합니다.",
  "rule.saqt.q.ccpp.1417.name": "rename의 잘못된 사용",
  "rule.saqt.q.ccpp.1417.option.is_preserved_existing_file.description": "선택시 기존 목적 파일을 보존, 해제시 기존 목적 파일을 제거하는 방식으로 동작합니다.",
  "rule.saqt.q.ccpp.1417.option.is_preserved_existing_file.name": "기존 목적 파일 보존",
  "rule.saqt.q.ccpp.1419.description": "장치에 대해 연산 수행 체커는 파일을 대상으로만 적용 가능한 연산을 장치에 대해 수행하는 경우를 검출합니다.\n어떤 운영 체제에서는 파일 이름이 특정 디바이스를 가리키는 특수 파일에 접근하는 데에 사용되기도 합니다. 일반적인 파일에 적용하는 연산을 디바이스 파일에 적용하면 시스템이 다운되거나 서비스 거부 공격에 활용될 수 있습니다.\n파일을 열거나 특정 작업을 수행하기 전에 파일이 디바이스를 나타내는 특수 파일인지 검사해야 합니다.",
  "rule.saqt.q.ccpp.1419.example.0.dangerous": "라인 3: 아무 검사 없이 문자열을 인자로 fopen() 함수를 호출했습니다. 문자열이 잠긴 장치나 FIFO 파일명인 경우 fopen() 함수를 호출할 때 프로그램이 멈출 수 있습니다.\n라인 16: GetFileType() 함수를 사용했습니다. 이 함수는 특정한 상황에서 대기 상태를 발생시킬 수 있습니다.",
  "rule.saqt.q.ccpp.1419.example.0.safe": "라인 3: lstat() 함수를 사용하여 파일의 상태를 먼저 점검합니다.\n라인 8: open() 함수를 사용하여 파일 디스크립터를 먼저 얻고 결과에 따라 행동합니다.\n라인 13: fstat() 함수를 사용하여 파일의 상태를 먼저 점검합니다.\n라인 21: 파일 경로가 디바이스를 위해 예약된 식별자인지 검사하는 함수를 만들도록 합니다. MSDN에서는 com1과 같은 디바이스와 관련된 식별자 목록을 제공하고 있습니다.",
  "rule.saqt.q.ccpp.1419.name": "장치에 대해 연산 수행",
  "rule.saqt.q.ccpp.1420.description": "잘못된 오류 타입 체커는 errno 관련 오류 코드를 반환하는 함수의 반환 타입이 errno_t로 선언되지 않은 경우를 검출합니다.\nerrno 관련 오류 코드를 반환하는 함수의 반환 타입을 int로 선언하는 경우가 많습니다. 실제로 많은 경우 표준 라이브러리 헤더에서 errno_t 사용자 정의 타입의 선언부를 찾아가보면 int로 정의되어 있는 경우가 많긴 하지만, 이렇게 함수의 반환 타입을 직접적으로 int로 선언하면 해당 함수가 errno 관련 오류 코드를 반환하는지 다른 의미가 있는 정수를 반환하는지 의미가 명확하지 않게 됩니다.\n오류 코드를 반환하는 함수를 선언할 때에는 반환 타입을 errno_t로 명시합니다.",
  "rule.saqt.q.ccpp.1420.example.0.dangerous": "라인 1: 함수가 반환 타입 int로 선언되었습니다.\n라인 5: 함수가 errno 값을 반환합니다.",
  "rule.saqt.q.ccpp.1420.example.0.safe": "라인 1: 함수의 반환 타입을 errno_t로 변경합니다.",
  "rule.saqt.q.ccpp.1420.name": "잘못된 오류 타입",
  "rule.saqt.q.ccpp.1421.description": "중복된 헤더 파일 이름 체커는 C99 표준에 따라 해석할 때 같은 이름으로 취급될 수 있는 중복 헤더 파일을 검출합니다.\nC99 표준에서는 헤더 파일 이름에 대해 다음과 같이 정의하고 있습니다. '헤더의 이름은 여러 개의 숫자나 문자와 그 다음 점(.) 하나, 그 다음 한 개의 숫자가 아닌 글자로 이루어져야 한다. 컴파일러는 헤더의 이름에서 대소문자를 무시할 수 있고 점 앞쪽의 문자 수를 8개로 제한할 수도 있다.' 이를 지키지 않고 헤더 파일의 이름을 지으면 코드를 다른 플랫폼으로 이식할 때 C99 호환 컴파일러에서 모호한 해석이 일어날 수 있습니다.\n헤더 파일 이름을 지을 때 C99 표준을 준수해야 하며 각 헤더 파일의 이름이 프로젝트 내에서 유일하도록 해야 합니다.",
  "rule.saqt.q.ccpp.1421.example.0.dangerous": "라인 2: 프로젝트에 있는 Pre_test.h 헤더를 바로 위의 pre_test.h 헤더와 같은 이름으로 해석할 수 있습니다.\n라인 4: 처음 8자만을 고려하면 바로 위의 헤더와 같은 이름으로 해석할 수 있습니다.\n라인 5: 헤더 이름의 점 뒤에 확장자로 문자가 아닌 숫자를 사용했습니다.",
  "rule.saqt.q.ccpp.1421.example.0.safe": "라인 2: 다른 헤더와 대소문자 구별을 하지 않더라도 서로 이름이 다르도록 이름을 짓습니다.\n라인 4: 다른 헤더와 앞의 8글자만 비교하더라도 서로 이름이 다르도록 이름을 짓습니다.\n라인 5: 확장자를 숫자가 아닌 문자 한 글자로 사용합니다.",
  "rule.saqt.q.ccpp.1421.name": "중복된 헤더 파일 이름",
  "rule.saqt.q.ccpp.1421.option.allow_long_file_name.description": "체크시 8 글자보다 긴 헤더 파일 이름을 가질 수 있습니다.",
  "rule.saqt.q.ccpp.1421.option.allow_long_file_name.name": "긴 파일 이름 허용",
  "rule.saqt.q.ccpp.1423.description": "부적절한 문자열 토큰 변환 체커는 문자열을 정수로 변환할 때 신뢰성 있는 오류 처리를 제공하는 함수가 사용되지 않은 경우를 검출합니다.\n문자열을 정수로 변환하는 함수 중에는 strtol() 함수 및 이와 유사한 함수들이 존재합니다. 원하는 결과값의 타입에 따라 strtol(), strtoll(), strtoul(), strtoull() 등의 함수 중 하나를 선택하여 사용할 수 있습니다. 이들 함수를 사용하면 변환에 실패했을 때 그 사유를 errno 오류 코드를 통해 확인할 수 있습니다. 반면에 sscanf(), atoi() 등의 함수를 사용하면 문자열을 정수로 해석하는 데에 실패하더라도 그 사실을 정확히 인식하기 어렵거나 실패한 이유를 알 수 없습니다.\n오류 처리를 명확히 할 수 있도록 strtol() 및 이와 유사한 함수를 사용합니다.",
  "rule.saqt.q.ccpp.1423.example.0.dangerous": "라인 5: 문자열 정수 변환을 위해 atoi() 함수를 사용했습니다.\n라인 6: 문자열 정수 변환을 위해 sscanf() 함수를 사용했습니다.",
  "rule.saqt.q.ccpp.1423.example.0.safe": "라인 6: 문자열 정수 변환을 위해 strtol() 함수를 사용합니다.\n라인 7: 문자열 정수 변환을 위해 strtoull() 함수를 사용합니다.",
  "rule.saqt.q.ccpp.1423.name": "부적절한 문자열 토큰 변환",
  "rule.saqt.q.ccpp.1424.description": "누락된 부동 소수점 오류에 대한 예외 처리 체커는 부동 소수점 연산을 수행한 후 오류를 처리하지 않는 경우를 검출합니다.\n부동 소수점 연산 과정에서 발생하는 오류를 무시하는 것은 종종 정의되지 않은 동작을 발생시킵니다.\n부동 소수점 연산을 수행하고나면 fetestexcept() 등의 부동 소수점 연산 오류 처리 함수를 호출하여 오류를 검사해야 합니다.",
  "rule.saqt.q.ccpp.1424.example.0.dangerous": "라인 3: 변수와 값의 타입 간 표현 범위가 서로 맞지 않아 변수에 저장되는 값에 이상이 생깁니다.\n라인 4: 0으로 나누기 오류가 발생합니다.",
  "rule.saqt.q.ccpp.1424.example.0.safe": "라인 1: feclearexcept() 함수로 이전 오류 정보를 정리합니다.\n라인 3: fetestexcept() 함수로 부동 소수점 연산 오류 여부를 검사합니다.\n라인 5: feclearexcept() 함수로 이전 오류 정보를 정리합니다.\n라인 7: fetestexcept() 함수로 부동 소수점 연산 오류 여부를 검사합니다.",
  "rule.saqt.q.ccpp.1424.name": "누락된 부동 소수점 오류에 대한 예외 처리",
  "rule.saqt.q.ccpp.1425.description": "필드에 포인터 연산 수행 체커는 구조체나 클래스의 필드를 참조한 포인터에 대해 덧셈 등의 포인터 연산을 사용하는 경우를 검출합니다.\n구조체나 클래스의 필드를 참조한 포인터에 포인터 연산을 적용하여 다음 필드를 가리키려고 시도하는 것은 위험합니다. 컴파일러에 따라 필드 사이사이에 어떤 패딩을 삽입할지 알 수 없으며 각 필드 멤버들이 연속적으로 정렬되어 있다는 보장이 없으므로 잘못된 위치를 참조할 가능성이 높습니다.\n구조체나 클래스의 각 필드는 직접 참조 연산을 통해서만 가리키도록 합니다.",
  "rule.saqt.q.ccpp.1425.example.0.dangerous": "라인 7: 구조체의 필드를 참조하는 포인터 변수에 대해 포인터 덧셈 연산을 사용했습니다.",
  "rule.saqt.q.ccpp.1425.example.0.safe": "라인 6: 포인터 변수로 구조체의 필드를 참조하지 않도록 합니다. 필요한 경우 직접 필드의 이름을 참조합니다.",
  "rule.saqt.q.ccpp.1425.name": "필드에 포인터 연산 수행",
  "rule.saqt.q.ccpp.1426.description": "부적절한 파일 열기 및 생성 체커는 파일을 열 때 기존 파일의 존재 여부를 알지 못하는 방식으로 여는 경우를 검출합니다.\nfopen() 함수는 이미 존재하는 파일을 열거나 새로운 파일을 생성하기 위한 목적으로 사용됩니다. 하지만 fopen() 함수를 별 생각 없이 사용하면 기존에 존재하던 파일을 열었는지 새로운 파일을 생성했는지 결과만 놓고는 구분하기가 어렵습니다. 이로 인해 프로그램이 의도하지 않은 파일에 잘못 접근하거나 기존 파일에 존재하던 내용을 덮어쓸 가능성이 있습니다.\nfopen() 함수를 호출할 때 적절한 인자를 전달하여 기존에 존재하던 파일을 무시하지 않도록 하거나 open() 함수를 사용합니다.",
  "rule.saqt.q.ccpp.1426.example.0.dangerous": "라인 3: w 모드로 파일을 열었습니다. 파일 열기에 성공하더라도 기존에 존재하던 파일을 열었는지 새로운 파일을 생성했는지 알 수 없습니다.",
  "rule.saqt.q.ccpp.1426.example.0.safe": "라인 3: wx 모드로 파일을 열도록 합니다. 이렇게 파일을 열면 기존에 파일이 존재할 때 함수가 동작에 실패합니다.",
  "rule.saqt.q.ccpp.1426.name": "부적절한 파일 열기 및 생성",
  "rule.saqt.q.ccpp.1427.description": "반한된 포인터를 비 const 변수에 저장 체커는 특정 표준 라이브러리 함수에서 반환된 포인터를 역참조 수정이 가능한 변수에 저장하는 경우를 검출합니다.\n이 체커는 getenv(), asctime(), localeconv(), setlocale(), strerror() 함수의 반환 값이 변수에 저장되는 것을 검사합니다.\n예를 들어 getenv() 등의 함수가 반환하는 포인터는 읽기 전용으로 사용되어야 하고 프로그램에 의해 역참조 수정이 일어나서는 안됩니다.\n만약 한 번 반환된 포인터를 여러 번 사용할 필요가 있다면 상수형 포인터 변수에 저장하여 역참조된 메모리에 있는 값이 수정되지 않게 합니다.",
  "rule.saqt.q.ccpp.1427.example.0.dangerous": "라인 1: getenv() 함수의 반환값을 일반 포인터 변수에 저장했습니다.",
  "rule.saqt.q.ccpp.1427.example.0.safe": "라인 1: getenv() 함수의 반환값을 저장하려는 변수는 상수 포인터 변수여야 합니다.",
  "rule.saqt.q.ccpp.1427.name": "반한된 포인터를 비 const 변수에 저장",
  "rule.saqt.q.ccpp.143.description": "반복문 내에서의 변수 선언 체커는 반복문에서 객체를 선언하는 코드를 검출합니다.\n옵션에서 무시할 객체 타입, 무시할 변수 이름을 설정할 수 있습니다.\n반복문에서 지역 변수를 선언하는 경우 많은 변수가 메모리에 할당되어 성능이 감소할 수 있습니다. 예를 들어, for 또는 while 문과 같은 반복문에서 지역 변수를 선언하면 메모리에 부정적인 영향을 줄 수 있습니다.\n반복문에서 객체를 선언하지 않도록 합니다.",
  "rule.saqt.q.ccpp.143.example.0.dangerous": "라인 3: for 문에서 변수 a를 선언했습니다.",
  "rule.saqt.q.ccpp.143.example.0.safe": "라인 1: for 문과 같은 반복문 밖에서 변수를 선언해야 합니다.",
  "rule.saqt.q.ccpp.143.name": "반복문 내에서의 변수 선언",
  "rule.saqt.q.ccpp.143.option.ignore_type_list.description": "무시할 타입을 설정합니다.",
  "rule.saqt.q.ccpp.143.option.ignore_type_list.name": "무시할 타입",
  "rule.saqt.q.ccpp.143.option.ignore_var_list.description": "무시할 변수를 설정합ㄴ다.",
  "rule.saqt.q.ccpp.143.option.ignore_var_list.name": "무시할 변수",
  "rule.saqt.q.ccpp.1430.description": "컴파일러 최적화 중 코드 삭제 체커는 컴파일러의 최적화에 의해 중요 정보를 정리하는 코드가 삭제되어 중요 정보가 노출될 가능성이 있는 경우를 검출합니다.\n어떠한 컴파일러는 옵션으로 설정된 최적화 수준에 따라서, 프로그램의 동작에 영향을 주지 않는다고 판단하는 코드를 제거할 수 있습니다. 예를 들어 메모리에 쓰기 작업을 수행한 후 해당 메모리 영역에 더 이상 접근하지 않는다면 최적화 과정에서 메모리에 쓰기 작업을 하는 코드가 제거될 수 있습니다. 이로 인해 민감한 데이터를 저장했던 메모리 영역에 다른 갚을 덮어써서 정리하는 코드를 작성했을 때 이 코드가 제거 대상으로 선택될 가능성이 있습니다. 이때 중요 정보가 메모리에서 제때 정리되지 않아서 메모리 덤프 등을 통하여 노출되는 위험이 발생합니다.\n컴파일러 최적화 옵션을 조정하거나 컴파일러가 중요 코드 부분에서는 최적화를 수행하지 않도록 조치를 취해야 합니다.",
  "rule.saqt.q.ccpp.1430.example.0.dangerous": "라인 6: memset() 함수를 사용하여 pwd 배열의 데이터를 정리하고 있으나 최적화 과정에서 해당 구문이 삭제될 수 있습니다.",
  "rule.saqt.q.ccpp.1430.example.0.safe": "라인 6: 중요한 정리 코드가 최적화되지 않도록 컴파일러에게 지시하여 해당 코드를 보호할 수 있습니다.",
  "rule.saqt.q.ccpp.1430.name": "컴파일러 최적화 중 코드 삭제",
  "rule.saqt.q.ccpp.1431.description": "불확정 값에 대해 va_arg 함수 사용 체커는 가변 길이 인자 va_list 객체를 임의로 다른 함수에 전달하여 알 수 없는 값이 된 상태로 va_arg() 함수를 다시 호출하는 경우를 검출합니다.\nva_list 객체를 다른 함수에 넘겨 사용한 후 안전하게 다시 사용하는 고유한 방법이 존재합니다. 이 방법을 무시하고 va_list 객체를 임의로 다른 함수에 전달하고 그 다른 함수에서 va_arg() 함수 및 va_end() 함수를 사용하면 원래의 가변 길이 인자 함수에서 이 인자를 제대로 사용할 수 없게 됩니다.\nva_list 객체를 다른 함수에 넘길 떄에는 객체의 참조를 포인터로 전달합니다. 또한 이 객체를 다른 함수에서도 순회하고자 할 때에는 직접 사용하는 대신 va_copy() 함수를 사용하여 복사한 후에 복사된 객체를 사용하여 순회해야 합니다.",
  "rule.saqt.q.ccpp.1431.example.0.dangerous": "라인 1: va_list 객체를 다른 가변 인자 함수로부터 직접 인자로 전달받았습니다.\n라인 3: 전달받은 va_list 객체를 va_arg() 함수에 사용했습니다. 이제 contains_zsero() 함수를 호출했던 원래의 가변 인자 함수에서는 정상적으로 ap 객체를 사용할 수 없습니다.",
  "rule.saqt.q.ccpp.1431.example.0.safe": "라인 1: 가변 인자 함수의 va_list 객체를 함수 간에 전달할 때에는 포인터를 사용해야 합니다.\n라인 3: 전달받은 va_list 포인터가 가리키는 객체를 va_copy() 함수로 복사해 별도의 va_list 객체를 초기화한 후 이 객체를 사용해 가변 인자를 순회해야 합니다.",
  "rule.saqt.q.ccpp.1431.name": "불확정 값에 대해 va_arg 함수 사용",
  "rule.saqt.q.ccpp.1432.description": "extern 인라인 함수의 제약 조건 위반 체커는 extern inline으로 선언된 함수에서 접근해선 안되는 객체에 접근하는 경우를 검출합니다.\nextern inline으로 선언된 함수에서 static 전역 변수처럼 해당 소스 파일에서만 접근 가능한 객체에 접근하면 안됩니다. 함수가 inline으로 선언되면 컴파일러는 그 함수를 호출하는 식을 만났을 때 실제로 함수를 호출하는 대신 함수의 동작을 그대로 따라하는 코드를 삽입하는 방식으로 호출을 번역하려고 시도합니다. 또한 함수를 extern으로 선언했다는 것은 해당 함수가 서로 다른 소스 파일과 연관되어 사용될 수 있다는 뜻입니다. 따라서 extern inline 함수가 소스 파일 전용 객체에 접근하면 그 함수의 동작을 그대로 따라하는 코드가 외부의 다른 소스 파일에 정의된 함수에 삽입될 수 있으므로 함수 정의가 모순이 됩니다.\nextern inline 함수에서는 static으로 선언된 전역 객체에 접근하지 않아야 합니다. extern inline 함수가 접근해야 하는 전역 객체는 static으로 선언하지 않아야 합니다.",
  "rule.saqt.q.ccpp.1432.example.0.dangerous": "라인 2: func() 함수가 extern inline으로 선언되었습니다.\n라인 3: extern inline 함수가 static 전역 변수에 접근합니다.",
  "rule.saqt.q.ccpp.1432.example.0.safe": "라인 2: extern inline으로 선언된 함수가 사용해야 하는 객체는 static으로 선언하면 안됩니다.",
  "rule.saqt.q.ccpp.1432.name": "extern 인라인 함수의 제약 조건 위반",
  "rule.saqt.q.ccpp.1433.description": "비 표준 문자 체커는 문자열 리터럴에 표준 문자 외의 문자를 사용한 경우를 검출합니다.\n영문자와 숫자, ASCII 코드의 특수기호, 스페이스, 백스페이스, 탭, 개행 문자가 표준 문자로 간주됩니다.\n표준 문자가 아닌 문자를 문자열 리터럴에 포함시키면 이식성에 문제가 생길 수 있습니다.\n문자열 리터럴에는 표준 문자만을 사용합니다.",
  "rule.saqt.q.ccpp.1433.example.0.dangerous": "라인 1: 비표준 문자를 사용하고 있습니다.",
  "rule.saqt.q.ccpp.1433.example.0.safe": "라인 1: 표준 문자만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1433.name": "비 표준 문자",
  "rule.saqt.q.ccpp.1439.description": "사용하지 않는 매개 변수 체커는 함수에서 그 값을 사용하지 않는 매개 변수를 검출합니다.\n함수의 매개 변수는 그 존재만으로도 함수가 호출될 때마다 연산력과 스택 메모리를 소모합니다. 특히 포인터나 정수 등 레지스터에 담을 수 있는 범위를 넘어서는 구조체나 클래스 객체가 매개 변수인 경우에는 함수를 호출할 때마다 객체의 복사가 이루어지므로 리소스 소모가 더욱 커집니다. 따라서 함수 내에서 사용되지 않는 매개 변수를 내버려두면 불필요한 성능 저하가 일어납니다.\n사용하지 않는 매개 변수는 함수 선언에서 삭제합니다.",
  "rule.saqt.q.ccpp.1439.example.0.dangerous": "라인 1: f() 함수에 p2 매개 변수가 존재하지만 사용되지 않습니다.",
  "rule.saqt.q.ccpp.1439.example.0.safe": "라인 1: 사용되지 않는 매개변수를 삭제합니다.",
  "rule.saqt.q.ccpp.1439.name": "사용하지 않는 매개 변수",
  "rule.saqt.q.ccpp.144.description": "do-while 구문 사용 체커는 Do-While 문을 사용하는 코드를 검출합니다.\nDo-While 문 대신 While 문을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.144.example.0.dangerous": "라인 2: do-while 문을 사용했습니다.",
  "rule.saqt.q.ccpp.144.example.0.safe": "라인 2: do-while 문 대신 while 문을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.144.name": "do-while 구문 사용",
  "rule.saqt.q.ccpp.1441.description": "되돌아가는 goto 구문 체커는 함수 안에서 goto 구문보다 먼저 등장하는 레이블로 점프하는 경우를 검출합니다.\ngoto 구문을 복잡한 방식으로 사용하면 함수의 제어 흐름을 이해하기 어려워집니다. goto 구문으로 더 뒤에 있는 레이블로 점프하면 일부 코드를 건너뛰는 효과를 얻을 수 있으며, 제어 흐름 그래프에 새로운 사이클을 만들지 않으므로 이해가 많이 어렵지는 않습니다. 하지만 goto 구문으로 앞에 있는 레이블로 점프하면 제어 흐름 그래프에 조건 없는 사이클을 만들게 되어 함수의 의미를 이해하기 어렵게됩니다.\ngoto 구문의 사용을 자제합니다. 대부분의 상상할 수 있는 계산은 goto 구문 없이 분기문과 반복문만 사용하여 구현해낼 수 있습니다. 분기문과 반복문만으로 구현하면 코드가 지나치게 복잡해져서 어쩔 수 없이 goto 구문을 사용하게 되더라도 역방향으로 점프하는 goto 구문은 사용하면 안됩니다.",
  "rule.saqt.q.ccpp.1441.example.0.dangerous": "라인 7: goto 구문으로 더 먼저 정의된 L1 레이블로 점프합니다. value가 10보다 클 때 무한루프가 발생합니다.",
  "rule.saqt.q.ccpp.1441.example.0.safe": "라인 7: goto 구문으로 나중에 정의된 L2 레이블로 점프합니다. 이렇게 사용하면 제어 흐름 그래프에 사이클을 만들지 않습니다.",
  "rule.saqt.q.ccpp.1441.name": "되돌아가는 goto 구문",
  "rule.saqt.q.ccpp.1442.description": "블록 간 점프 체커는 goto 구문과 대상 레이블이 서로 무관한 블록에 분리되어 있는 경우를 검출합니다.\ngoto 구문을 사용하여 다른 블록의 안으로 뛰어들면 제어 흐름 그래프가 복잡해질 뿐 아니라 블록 안 코드의 무결성이 깨질 수 있습니다. 보통 블록은 논리적으로 한 덩어리의 의미를 갖도록 순차적으로 실행될 것을 가정하고 작성되는데, goto 구문을 사용하여 블록 중간으로 뛰어들면 블록의 앞부분에서 일어났어야 할 일이 일어나지 않은 채 블록 중간 코드가 갑자기 실행될 수도 있기 때문입니다.\ngoto 구문은 같은 블록 안에서 사용되거나 블록을 빠져나가는 용도로만 사용해야 합니다.",
  "rule.saqt.q.ccpp.1442.example.0.dangerous": "라인 5: goto 구문이 가리키는 L1 레이블이 서로 무관한 다른 블록에 존재합니다.",
  "rule.saqt.q.ccpp.1442.example.0.safe": "라인 5: goto 구문은 같은 블록 안의 레이블을 가리켜서 코드를 건너뛰거나, 상위 블록의 레이블을 가리켜서 현재 블록을 빠져나가는 용도로 사용되어야 합니다.",
  "rule.saqt.q.ccpp.1442.name": "블록 간 점프",
  "rule.saqt.q.ccpp.1444.description": "구조체 내 가변 길이 배열 사용 체커는 구조체의 멤버 변수로 가변 길이 배열을 포함시키는 경우를 검출합니다.\n구조체 안에 가변 길이 배열이 포함되어 있으면 해당 구조체로 만들어진 각 객체들의 크기가 균일하지 않게 되고 구조체의 사용이 까다로워집니다.\n구조체의 멤버로 가변 길이 배열을 사용하지 않습니다. 대신 고정 길이 배열을 사용하거나 포인터를 사용하고 별도로 해당 포인터에 배열을 동적할당하도록 합니다.",
  "rule.saqt.q.ccpp.1444.example.0.dangerous": "라인 4: 구조체의 멤버로 가변 길이 배열을 사용했습니다.",
  "rule.saqt.q.ccpp.1444.example.0.safe": "라인 4: 가변 길이 배열 대신 포인터 멤버를 사용하고 별도로 배열을 동적할당하는 식으로 가변 길이 배열 멤버와 비슷한 결과를 얻을 수 있습니다.",
  "rule.saqt.q.ccpp.1444.name": "구조체 내 가변 길이 배열 사용",
  "rule.saqt.q.ccpp.145.description": "부동 소수점 값에 대한 == 연산 체커는 `==` 혹은 `!=` 연산자를 사용하여 부동소수점을 비교하는 코드를 검출합니다.\n부동 소수점을 비교하는 연산은 정확하게 동작하지 않을 수 있습니다.\n`==` 연산자를 사용하는 대신 두 값의 차이가 오차 범위보다 적은지를 확인합니다. 예를 들어, 다음과 같이 비교합니다. #define ERROR = 0.0001; if (fabs((0.1 + 0.2) - 0.3) <= ERROR) { ... }",
  "rule.saqt.q.ccpp.145.example.0.dangerous": "라인 2: float 타입의 두 변수 f, g에 대해 == 연산을 수행했습니다.",
  "rule.saqt.q.ccpp.145.example.0.safe": "라인 3: float 타입의 값과 비교할 경우 == 연산이 아닌 다른 방법을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.145.name": "부동 소수점 값에 대한 == 연산",
  "rule.saqt.q.ccpp.1450.description": "읽기 어려운 주석 체커는 주석문 안에 /*, */, // 와 같은 문자열이 포함된 경우를 검출합니다.\n주석문 안에 /*, */, // 와 같은 문자열이 포함되지 않도록 합니다. 해당 문자열은 주석문을 시작하거나 끝내는 용도로만 사용해야 합니다.",
  "rule.saqt.q.ccpp.1450.example.0.dangerous": "라인 3: 주석문 안에 가독성을 해치는 /* 문자열이 포함되었습니다. 이 부분만 보면 마치 한 줄짜리 주석을 /* */ 문자열을 사용하여 작성한 것 같지만 주석문이 실제로 시작되는 곳은 다른 라인입니다.",
  "rule.saqt.q.ccpp.1450.example.0.safe": "라인 3: 주석문 안에 가독성을 해치는 문자열을 삽입하지 않습니다.",
  "rule.saqt.q.ccpp.1450.name": "읽기 어려운 주석",
  "rule.saqt.q.ccpp.1450.option.check_header.description": "옵션을 사용하는 경우 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.q.ccpp.1450.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.q.ccpp.1450.option.forbidden_string_list.description": "주석 내에 포함 할 수 없는 문자열을 입력합니다.<br />예시) /*,*/,//",
  "rule.saqt.q.ccpp.1450.option.forbidden_string_list.name": "금지 문자열",
  "rule.saqt.q.ccpp.1451.description": "다른 주석 길이 체커는 특정한 형태로 작성된 여러 줄 주석문에서 각 라인의 길이가 다르게 작성된 경우를 검출합니다.\n지정된 형태의 여러 줄 주석문을 작성할 때에는 각 줄의 길이를 통일하여 네모 모양으로 반듯한 블록 주석이 되도록 해야 합니다.",
  "rule.saqt.q.ccpp.1451.example.0.dangerous": "라인 2: 기본 설정에서는 /***...***/ 형태로 작성된 여러줄 주석을 검사 대상으로 합니다. 이런 주석에서는 각 줄의 길이를 일치시켜 보기 좋게 만들어야 하는데, 여기서는 각 줄의 길이가 달라서 주석의 모양이 들쭉날쭉합니다.",
  "rule.saqt.q.ccpp.1451.example.0.safe": "라인 1: 이와 같이 각 주석 줄이 끝나는 지점을 일치시켜 네모 반듯한 주석문을 만들어줍니다.",
  "rule.saqt.q.ccpp.1451.name": "다른 주석 길이",
  "rule.saqt.q.ccpp.1451.option.start_end_comment.description": "시작 및 종료 주석을 설정합니다. 해당 주석으로 묶인 주석이 하나의 블록 주석으로 인식됩니다.",
  "rule.saqt.q.ccpp.1451.option.start_end_comment.name": "시작 및 종료 주석",
  "rule.saqt.q.ccpp.1452.description": "주석 형식 위반 체커는 한 줄 주석 혹은 여러 줄 주석 중 옵션에 지정된 방식이 아닌 것으로 작성된 주석문을 검출합니다.\n프로젝트 전체에서 한 줄 주석 혹은 여러 줄 주석만을 사용하도록 옵션에 지정할 수 있습니다.\n지정된 방식으로만 주석문을 작성합니다.",
  "rule.saqt.q.ccpp.1452.example.0.dangerous": "라인 1: 여러 줄 주석문만 사용하도록 설정했다면 //을 사용한 한 줄 주석문 사용을 검출합니다.",
  "rule.saqt.q.ccpp.1452.example.0.safe": "라인 1: 여러 줄 주석만 사용하도록 설정했다면 모든 주석문을 '/*...*/' 형태로만 작성해야 합니다.",
  "rule.saqt.q.ccpp.1452.name": "주석 형식 위반",
  "rule.saqt.q.ccpp.1452.option.use_single_comment.description": "선택 할 경우 '/*...*/' 으로 묶이는 주석을 검출합니다.",
  "rule.saqt.q.ccpp.1452.option.use_single_comment.name": "'//' 주석만 사용 여부",
  "rule.saqt.q.ccpp.1453.description": "코드 주위 주석 체커는 한 줄 소스 코드의 앞 혹은 중간에 주석이 끼어들어가있는 경우를 검출합니다.\n주석은 한 라인 안에서 소스 코드가 끝난 맨 뒤에 작성하거나 별도의 라인에 작성합니다.",
  "rule.saqt.q.ccpp.1453.example.0.dangerous": "라인 5: counter++ 코드 앞에 주석이 존재하여 가독성을 해치고 있습니다.",
  "rule.saqt.q.ccpp.1453.example.0.safe": "라인 5: 주석을 별도의 라인에 분리하여 작성합니다.",
  "rule.saqt.q.ccpp.1453.name": "코드 주위 주석",
  "rule.saqt.q.ccpp.146.description": "파라미터에 대해 사용자 정의 타입의 미사용 체커는 옵션에 지정된 특정 위치의 매개변수를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 매개변수 선언에서 Typedef로 재정의된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 매개 변수 타입, 검사할 매개 변수 위치를 설정할 수 있습니다.\n옵션에서 특정 위치의 매개변수를 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.ccpp.146.example.0.dangerous": "라인 1: foo() 함수의 첫 번째 인자가 재정의된 타입이 아닙니다.",
  "rule.saqt.q.ccpp.146.example.0.safe": "라인 2: 함수의 특정 위치에 있는 인자를 재정의된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.146.name": "파라미터에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.ccpp.146.option.allowed_param_type.description": "허용되는 파라미터 타입을 설정합니다.",
  "rule.saqt.q.ccpp.146.option.allowed_param_type.name": "허용되는 파라미터 타입",
  "rule.saqt.q.ccpp.146.option.call_param_target.description": "파라미터 검사 위치 설정합니다.",
  "rule.saqt.q.ccpp.146.option.call_param_target.name": "파라미터 검사 위치",
  "rule.saqt.q.ccpp.147.description": "비 상수 값 반환 체커는 함수의 반환 구문에서 옵션에 지정된 상수가 아닌 값을 사용하는 코드를 검출합니다.\n옵션에서 허용되는 상수값을 설정할 수 있습니다.\n함수의 반환 구문에 옵션에 지정된 상수값을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.147.example.0.dangerous": "라인 2: 허용되지 않는 상수 2를 반환했습니다.",
  "rule.saqt.q.ccpp.147.example.0.safe": "라인 2: 허용되는 상수 0 또는 1을 사용합니다.",
  "rule.saqt.q.ccpp.147.name": "비 상수 값 반환",
  "rule.saqt.q.ccpp.147.option.allowed_return_constant.description": "아래 조건에 해당하는 상수형에 대해서 반환을 허용합니다.(정규식)",
  "rule.saqt.q.ccpp.147.option.allowed_return_constant.name": "허용하는 반환 상수",
  "rule.saqt.q.ccpp.147.option.check_constant_only.description": "상수만 검출할지 여부를 체크합니다.",
  "rule.saqt.q.ccpp.147.option.check_constant_only.name": "상수만 검출 여부",
  "rule.saqt.q.ccpp.149.description": "반환 타입에 대해 사용자 정의 타입의 미사용 체커는 옵션에 지정된 재정의 자료형이 아닌 자료형을 함수의 반환 타입으로 사용하는 코드를 검출합니다.\n옵션에서 허용되는 자료형, 매개 변수 검사 여부, 지역범위 검사 여부, 전역범위 검사 여부를 설정할 수 있습니다.\n옵션에 지정된 재정의된 자료형을 함수 반환 타입으로 사용해야 합니다.",
  "rule.saqt.q.ccpp.149.example.0.dangerous": "라인 1: foo() 함수의 반환이 재정의된 타입이 아닙니다.",
  "rule.saqt.q.ccpp.149.example.0.safe": "라인 2: foo() 함수의 반환이 재정의된 타입입니다.",
  "rule.saqt.q.ccpp.149.name": "반환 타입에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.ccpp.149.option.allowed_return_type.description": "허용하는 재정의 타입 이름을 설정합니다.",
  "rule.saqt.q.ccpp.149.option.allowed_return_type.name": "허용하는 재정의 타입",
  "rule.saqt.q.ccpp.149.option.scope_target_global.description": "전역 범위 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.149.option.scope_target_global.name": "전역 범위 검사 여부",
  "rule.saqt.q.ccpp.149.option.scope_target_local.description": "지역 범위 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.149.option.scope_target_local.name": "지역 범위 검사 여부",
  "rule.saqt.q.ccpp.149.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.149.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.150.description": "문자 타입 사용 체커는 char 배열을 선언하는 경우를 제외하고 char 자료형을 선언하는 코드를 검출합니다.\n옵션에서 검출할 자료형 및 검출 범위를 설정할 수 있습니다.\n옵션에서 금지된 자료형을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.150.example.0.dangerous": "라인 2: char * 타입인 a가 선언되어 검출됩니다.",
  "rule.saqt.q.ccpp.150.example.0.safe": "라인 2: char * 타입 대신에 char 배열 타입을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.150.name": "문자 타입 사용",
  "rule.saqt.q.ccpp.150.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.150.option.forbidden_type.description": "사용 금지 타입을 설정합니다.",
  "rule.saqt.q.ccpp.150.option.forbidden_type.name": "사용 금지 타입",
  "rule.saqt.q.ccpp.150.option.ignore_const.description": "상수 무시 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.ignore_const.name": "상수 무시 여부",
  "rule.saqt.q.ccpp.150.option.scope_target_global.description": "전역 변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.scope_target_global.name": "전역 변수 검사 여부",
  "rule.saqt.q.ccpp.150.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.ccpp.150.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.ccpp.150.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.150.option.type_target_array.description": "배열 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.type_target_array.name": "배열 타입 검사 여부",
  "rule.saqt.q.ccpp.150.option.type_target_pointer.description": "포인터 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.type_target_pointer.name": "포인터 타입 검사 여부",
  "rule.saqt.q.ccpp.150.option.type_target_signed.description": "부호있는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.type_target_signed.name": "부호있는 정수 검사 여부",
  "rule.saqt.q.ccpp.150.option.type_target_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.type_target_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.150.option.type_target_unsigned.description": "부호없는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.150.option.type_target_unsigned.name": "부호없는 정수 검사 여부",
  "rule.saqt.q.ccpp.151.description": "중복된 헤더 파일 포함 체커는 하나의 파일에서 중복된 헤더를 선언하는 코드를 검출합니다.\n옵션에서 제외 파일 대상을 지정할 수 있습니다.\n헤더 파일에서 중복된 선언을 하지 않도록 합니다.",
  "rule.saqt.q.ccpp.151.example.0.dangerous": "라인 2: def_win32.h를 중복 선언했습니다.",
  "rule.saqt.q.ccpp.151.example.0.safe": "라인 1: 같은 헤더에서 중복 선언을 하지 않도록 합니다.",
  "rule.saqt.q.ccpp.151.name": "중복된 헤더 파일 포함",
  "rule.saqt.q.ccpp.151.option.file_target_excluded.description": "제외 대상 파일를 설정합니다.",
  "rule.saqt.q.ccpp.151.option.file_target_excluded.name": "제외 대상 파일",
  "rule.saqt.q.ccpp.152.description": "사용되지 않은 정적 변수 체커는 사용하지 않는 정적 변수를 포함하는 코드를 검출합니다.\n사용되지 않는 변수는 논리적인 오류이며 논리적인 오류는 소스 코드의 가독성을 떨어뜨리고 유지보수에 어려움을 줍니다. 따라서 사용되지 않는 변수를 삭제하는 것이 좋습니다.\n사용하지 않는 정적 변수를 선언하지 않도록 합니다.",
  "rule.saqt.q.ccpp.152.example.0.dangerous": "라인 1: 정적 변수 a를 선언한 후에 사용하지 않았습니다.",
  "rule.saqt.q.ccpp.152.example.0.safe": "라인 1: 사용되지 않는 static 변수를 삭제하도록 합니다.",
  "rule.saqt.q.ccpp.152.name": "사용되지 않은 정적 변수",
  "rule.saqt.q.ccpp.153.description": "비트 필드 타입 사용 체커는 멤버 변수를 비트 필드 자료형으로 선언하는 코드를 검출합니다.\n비트 필드의 내부 표현은 구현에 따라 정의되며 이로 인해 문제가 발생할 수 있습니다.\n비트 필드 자료형을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.153.example.0.dangerous": "라인 2: 멤버 변수 a를 비트 필드 자료형으로 선언했습니다.",
  "rule.saqt.q.ccpp.153.example.0.safe": "라인 2: 구조체 등의 멤버 변수를 선언할 때 비트 필드 자료형은 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.153.name": "비트 필드 타입 사용",
  "rule.saqt.q.ccpp.154.description": "실수 타입 사용 체커는 변수를 부동 소수점 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 검출 자료형 및 검출 범위를 설정할 수 있습니다.\n옵션에서 금지된 자료형을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.154.example.0.dangerous": "라인 1: 매개변수 flag를 float 타입으로 선언했습니다.",
  "rule.saqt.q.ccpp.154.example.0.safe": "라인 1: 금지된 타입인 float 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.154.name": "실수 타입 사용",
  "rule.saqt.q.ccpp.154.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.154.option.forbidden_type.description": "사용 금지 타입을 설정합니다.",
  "rule.saqt.q.ccpp.154.option.forbidden_type.name": "사용 금지 타입",
  "rule.saqt.q.ccpp.154.option.ignore_const.description": "상수 무시 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.ignore_const.name": "상수 무시 여부",
  "rule.saqt.q.ccpp.154.option.scope_target_global.description": "전역 변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.scope_target_global.name": "전역 변수 검사 여부",
  "rule.saqt.q.ccpp.154.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.ccpp.154.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.ccpp.154.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.ccpp.154.option.type_target_array.description": "배열 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.type_target_array.name": "배열 타입 검사 여부",
  "rule.saqt.q.ccpp.154.option.type_target_pointer.description": "포인터 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.type_target_pointer.name": "포인터 타입 검사 여부",
  "rule.saqt.q.ccpp.154.option.type_target_signed.description": "부호있는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.type_target_signed.name": "부호있는 정수 검사 여부",
  "rule.saqt.q.ccpp.154.option.type_target_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.type_target_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.ccpp.154.option.type_target_unsigned.description": "부호없는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.ccpp.154.option.type_target_unsigned.name": "부호없는 정수 검사 여부",
  "rule.saqt.q.ccpp.155.description": "extern 혹은 정적 지정자 사용 체커는 옵션에 지정된 범위의 변수나 함수를 선언할 때 static 혹은 extren 키워드를 사용하는 코드를 검출합니다.\n옵션에서 extren 키워드 검사 여부, static 키워드 검사 여부 및 검사 범위를 설정할 수 있습니다.\n옵션에 지정된 범위에서 extern 혹은 static 키워드를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.155.example.0.dangerous": "라인 1: 함수를 static으로 정의했습니다.",
  "rule.saqt.q.ccpp.155.example.0.safe": "라인 1: 금지된 static 대신 일반 함수로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.155.name": "extern 혹은 정적 지정자 사용",
  "rule.saqt.q.ccpp.155.option.check_extern.description": "옵션을 사용하는 경우, extern 변수 혹은 함수를 검사합니다.",
  "rule.saqt.q.ccpp.155.option.check_extern.name": "extern 변수/함수 검사 여부",
  "rule.saqt.q.ccpp.155.option.check_static.description": "옵션을 사용하는 경우, static 변수 혹은 함수를 검사합니다.",
  "rule.saqt.q.ccpp.155.option.check_static.name": "static 변수/함수 검사 여부",
  "rule.saqt.q.ccpp.155.option.scope_target_global.description": "전역 범위에서 검사합니다.",
  "rule.saqt.q.ccpp.155.option.scope_target_global.name": "전역(global) 범위에서 검사",
  "rule.saqt.q.ccpp.155.option.scope_target_local.description": "옵션을 사용하는 경우, 지역 범위에서 검사합니다.",
  "rule.saqt.q.ccpp.155.option.scope_target_local.name": "지역(local) 범위에서만 검사",
  "rule.saqt.q.ccpp.156.description": "금지된 한정자 사용 체커는 옵션에 금지된 한정자를 사용하여 변수를 선언하는 코드를 검출합니다.\n옵션에서 검출할 한정자 및 검출 범위를 설정할 수 있습니다.\n옵션에서 금지된 한정자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.156.example.0.dangerous": "라인 2: 금지된 한정자를 사용했습니다.",
  "rule.saqt.q.ccpp.156.example.0.safe": "라인 2: 금지된 한정자 대신 일반 변수로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.156.name": "금지된 한정자 사용",
  "rule.saqt.q.ccpp.156.option.forbidden_qualifiers.description": "사용하지 말아야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 ,(컴마)를 사용합니다.<br /> 예) const, volatile",
  "rule.saqt.q.ccpp.156.option.forbidden_qualifiers.name": "금지 한정자",
  "rule.saqt.q.ccpp.156.option.scope_target_global.description": "옵션을 사용하는 경우, 전역 변수를 검사합니다.",
  "rule.saqt.q.ccpp.156.option.scope_target_global.name": "전역 변수 분석",
  "rule.saqt.q.ccpp.156.option.scope_target_local.description": "옵션을 사용하는 경우, 지역 변수를 검사합니다.",
  "rule.saqt.q.ccpp.156.option.scope_target_local.name": "지역 변수 분석",
  "rule.saqt.q.ccpp.156.option.scope_target_parameter.description": "옵션을 사용하는 경우, 파라미터를 검사합니다.",
  "rule.saqt.q.ccpp.156.option.scope_target_parameter.name": "파라미터 분석",
  "rule.saqt.q.ccpp.157.description": "너무 많은 함수 체커는 옵션에 허용된 값보다 많은 함수를 정의하는 파일을 검출합니다.\n옵션에서 파일에서 정의 가능한 함수의 최대수를 설정할 수 있습니다.\n옵션에서 허용된 값보다 많은 함수를 정의하지 않도록 합니다.",
  "rule.saqt.q.ccpp.157.example.0.dangerous": "라인 9: 옵션에 허용된 값보다 많은 함수를 정의했습니다.",
  "rule.saqt.q.ccpp.157.example.0.safe": "라인 4: 하나의 파일에서 허용된 개수의 함수를 정의하도록 합니다.",
  "rule.saqt.q.ccpp.157.name": "너무 많은 함수",
  "rule.saqt.q.ccpp.157.option.maximum_func.description": "파일 당 허용 가능한 최대 함수 수를 입력합니다.",
  "rule.saqt.q.ccpp.157.option.maximum_func.name": "파일 당 허용 가능한 최대 함수 수",
  "rule.saqt.q.ccpp.1572.description": "부적절한 파일 입력 및 출력 체커는 하나의 파일에 읽고 쓰기를 번갈아서 수행할 때 중간에 버퍼 비우기나 커서 재조정 등을 하지 않는 경우를 검출합니다.\n파일을 수정 모드로 열면 하나의 파일 객체를 사용하여 파일에 입력과 출력을 모두 할 수 있습니다. 하지만 입력 후에 출력, 혹은 출력 후에 입력을 바로 수행하지 않아야 합니다. 파일 커서가 어디를 가리키고 있을지 제어하기 어렵기 때문에 파일의 무결성이 깨지거나 파일의 끝(EOF)에서 읽기를 시도하게 될 수 있습니다. 또한 쓰기 후 버퍼가 제대로 파일에 반영되지 않은 상태로 읽기를 시도하면 일어날 결과를 예측하기 어렵습니다.\n쓰기 후에는 읽기를 하기 전에 fflush() 등의 함수로 버퍼를 비워줘야 하고, 쓰기와 읽기 사이에 어떤 순서로든 동작을 전환하기 전에 fseek() 등의 함수로 파일 커서 위치를 재조정해야 합니다.",
  "rule.saqt.q.ccpp.1572.example.0.dangerous": "라인 19: fwrite() 함수로 파일에 쓰기를 수행합니다.\n라인 22: 버퍼를 비우지 않은 채 fread() 함수로 파일 읽기를 수행합니다.",
  "rule.saqt.q.ccpp.1572.example.0.safe": "라인 21: 파일 읽기와 쓰기 사이에 fseek() 함수를 호출하여 커서 위치를 재조정합니다. 예상하지 않게 파일의 끝을 만나는 문제를 피할 수 있습니다.",
  "rule.saqt.q.ccpp.1572.name": "부적절한 파일 입력 및 출력",
  "rule.saqt.q.ccpp.158.description": "선언된 함수의 정의 누락 체커는 함수를 선언한 후에 같은 파일에서 해당 함수를 정의하지 않은 코드를 검출합니다.\n옵션에서 extren 함수의 검사 여부를 설정할 수 있습니다.\n함수를 선언한 후에 반드시 정의해야 합니다. 정의하지 않은 함수를 사용할 수 없기 때문에 함수 선언이 불필요한 코드가 되므로 가독성을 떨어뜨리고 유지보수를 어렵게 합니다.\n함수를 선언한 후에 정의하도록 합니다.",
  "rule.saqt.q.ccpp.158.example.0.dangerous": "라인 1: 선언된 함수 foo()를 정의하지 않았습니다.",
  "rule.saqt.q.ccpp.158.example.0.safe": "라인 2: 선언된 함수를 같은 파일에서 정의하도록 합니다.",
  "rule.saqt.q.ccpp.158.name": "선언된 함수의 정의 누락",
  "rule.saqt.q.ccpp.158.option.include_extern.description": "체크박스 체크 시 extern 함수도 검사합니다.",
  "rule.saqt.q.ccpp.158.option.include_extern.name": "extern 함수 검사 여부",
  "rule.saqt.q.ccpp.1587.description": "Boolean 타입에 대해 비트 연산 수행 체커는 참이나 거짓을 나타내는 타입의 값을 대상으로 비트 연산을 사용하는 경우를 이슈로 검출합니다.\n일부 코딩 레퍼런스(MISRA-C 등)에서는 'boolean by enforcement' 라는 개념을 도입하여, Boolean 형이 없는 C90에서도 타입 재정의를 통해 bool이라고 간주하고 이 룰을 적용할 수 있습니다. 해당 체커에서는 대소문자 구분 없이 재정의한 타입의 이름에 `bool`이 들어가면 Boolean으로 간주합니다.\n진리 타입은 비트 표현과 상관 없이 해당 값을 참이나 거짓의 조건을 나타내는 값으로만 사용하려는 의도로 만들어졌습니다. 따라서 내부 구현의 영향을 받는 비트 연산이 아니라 참이나 거짓 값을 다루는 논리 연산 사용하는 것이 좋습니다.\n진리 타입 값에는 비트 연산이 아닌 논리 연산을 사용합니다.",
  "rule.saqt.q.ccpp.1587.example.0.dangerous": "라인 6: bool_t를 boolean 형으로 간주하는 C90 코드에서 두 boolean 간에 비트 연산을 수행했습니다.",
  "rule.saqt.q.ccpp.1587.example.0.safe": "라인 6: boolean 형에 비트 연산을 하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1587.name": "Boolean 타입에 대해 비트 연산 수행",
  "rule.saqt.q.ccpp.159.description": "한 줄에 작성된 여러 개의 다른 타입의 선언 체커는 하나의 라인에서 다른 자료형을 사용하는 복수의 변수를 선언하는 코드를 검출합니다.\n해당 체커는 포인터형이나 기본 자료형 등을 사용하는 여러 개의 변수를 동일한 줄에 선언하는 코드를 검출합니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n하나의 라인에서 다른 자료형을 선언하지 않도록 합니다.",
  "rule.saqt.q.ccpp.159.example.0.dangerous": "라인 1: pCh와 pChNew를 각각 char * 타입과 char 타입으로 선언했습니다.",
  "rule.saqt.q.ccpp.159.example.0.safe": "라인 1: char * 타입인 두 개의 변수를 선언하려면 각각 포인터 타입임을 명시하도록 합니다.",
  "rule.saqt.q.ccpp.159.name": "한 줄에 작성된 여러 개의 다른 타입의 선언",
  "rule.saqt.q.ccpp.160.description": "금지된 헤더 파일 포함 체커는 옵션에 지정된 사용 금지 헤더 파일을 include 하는 코드를 검출합니다.\n옵션에서 사용 금지 헤더 파일을 설정할 수 있습니다.\n옵션에 지정된 사용 금지 헤더 파일을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.160.example.0.dangerous": "라인 1: 금지된 헤더 파일 MIS14_A.h를 포함했습니다.",
  "rule.saqt.q.ccpp.160.example.0.safe": "라인 1: 사용 금지 헤더 파일을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.160.name": "금지된 헤더 파일 포함",
  "rule.saqt.q.ccpp.160.option.forbidden_header.description": "사용 금지 헤더를 설정합니다.",
  "rule.saqt.q.ccpp.160.option.forbidden_header.name": "사용 금지 헤더",
  "rule.saqt.q.ccpp.1600.description": "타입 구조 노출 체커는 헤더 파일에서 구조체 등의 내부 구성이 직접 노출되는 경우를 검출합니다.\n추상 데이터 타입은 C++이나 Java와 같은 객체 지향 언어로 제한되어 사용되는 개념이 아닙니다. C 언어 등을 사용한 프로그램에서도 추상 데이터 타입이 만들어지고 사용되어야 합니다. 어떤 정보를 헤더에 공개적으로 선언하고 어떤 정보를 개별 소스 파일에 숨길지 잘 선택하며 프로그램을 작성하는 것이 좋습니다.\n구조체 등을 정의할 때 헤더 파일에는 프로토타입 선언만 남기고 상세한 구현은 개별 소스 파일에 숨기는 것이 좋습니다.",
  "rule.saqt.q.ccpp.1600.example.0.dangerous": "라인 2: string_mx 구조체의 내부 멤버 구성이 string_m.h 헤더 파일에 작성되었습니다. 이 헤더를 포함하는 모든 소스 파일에 구조체의 내부 구조가 노출됩니다.",
  "rule.saqt.q.ccpp.1600.example.0.safe": "라인 2: 헤더 파일에서는 프로토타입만을 선언하여 구조체를 추상화합니다.",
  "rule.saqt.q.ccpp.1600.name": "타입 구조 노출",
  "rule.saqt.q.ccpp.1601.description": "널 배열 반환 체커는 한 함수 안에서 배열 객체를 반환하는 구문과 널을 반환하는 구문이 동시에 존재하는 경우를 검출합니다.\n빈 배열을 반환하는 대신 널을 반환하도록 함수를 작성하면, 널을 제대로 다루지 못하는 클라이언트 코드에서 이 함수를 사용할 때 취약점이 발생할 수 있습니다. 이로 인해 프로그램이 비정상으로 종료될 수 있습니다.\n배열을 반환하는 함수에서 반환할 배열의 내용이 딱히 없는 상황이라면 널을 반환하는 대신 빈 배열을 반환하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.1601.example.0.dangerous": "라인 31: 빈 배열 대신 널을 반환했습니다.",
  "rule.saqt.q.ccpp.1601.example.0.safe": "라인 31: 널 대신 빈 배열을 반환하십시오.",
  "rule.saqt.q.ccpp.1601.name": "널 배열 반환",
  "rule.saqt.q.ccpp.1602.description": "상위 범위에의 지역 주소 할당 체커는 하위 영역 변수의 주소를 상위 영역의 변수에 할당하는 경우를 검출합니다.\n상위 영역의 변수에 할당된 하위 영역 지역 변수의 주소는 지역 변수가 선언된 함수가 종료된 후에는 더 이상 유효하지 않습니다.\n상위 영역의 변수에 하위 영역의 지역 변수 주소를 할당하지 않습니다.",
  "rule.saqt.q.ccpp.1602.example.0.dangerous": "라인 6: 전역 변수 global_ptr 에 지역 변수 a의 주소를 대입했습니다.",
  "rule.saqt.q.ccpp.1602.example.0.safe": "라인 6: 상위 영역의 변수에 지역 변수의 주소를 대입하면 안됩니다.",
  "rule.saqt.q.ccpp.1602.name": "상위 범위에의 지역 주소 할당",
  "rule.saqt.q.ccpp.1603.description": "잘못된 파일 포함 방법 체커는 헤더를 포함할 때 표준 라이브러리 헤더를 <>로, 다른 라이브러리를 \"\"로 포함하지 않는 경우를 검출합니다.\n헤더를 포함할 때 \"\" 혹은 <>를 선택해 사용하는 것은 해당 헤더 파일을 어디에서 먼저 찾을지 컴파일러에게 알려주는 역할을 합니다. 일반적으로 <>를 사용하면 헤더를 공유 디렉토리의 표준 라이브러리 저장 공간에서 찾고 \"\"를 사용하면 소스 파일이 존재하는 디렉토리나 프로젝트 디렉토리를 우선적으로 확인합니다. 따라서 둘을 구분해 사용하는 것이 좋습니다.\n표준 라이브러리는 <>를, 그 외의 헤더는 \"\"를 사용해 포함합니다.",
  "rule.saqt.q.ccpp.1603.example.0.dangerous": "라인 1: 표준 라이브러리 헤더 stdio.h를 \"\"를 사용하여 포함했습니다.",
  "rule.saqt.q.ccpp.1603.example.0.safe": "라인 1: 표준 라이브러리 헤더는 \"\" 대신 <>를 사용하여 포함해야 합니다.",
  "rule.saqt.q.ccpp.1603.name": "잘못된 파일 포함 방법",
  "rule.saqt.q.ccpp.1603.option.c_library.description": "C 표준 라이브러리 목록을 설정합니다.",
  "rule.saqt.q.ccpp.1603.option.c_library.name": "C 표준 라이브러리",
  "rule.saqt.q.ccpp.1603.option.cpp_library.description": "C++ 표준 라이브러리 목록을 설정합니다.",
  "rule.saqt.q.ccpp.1603.option.cpp_library.name": "C++ 표준 라이브러리",
  "rule.saqt.q.ccpp.1604.description": "첫 번째 케이스 구문 전 실행 가능한 구문 체커는 switch 구문에서 첫 번째 케이스 레이블보다 위에 작성된 실행 가능한 구문을 검출합니다.\nswitch 구문에서 첫 번째 케이스보다 위에 있는 구문은 절대 실행되지 않는 데드 코드입니다.\nswitch 구문 블록의 맨 앞에는 케이스 레이블이 있어야 합니다.",
  "rule.saqt.q.ccpp.1604.example.0.dangerous": "라인 3: 첫 번째 케이스 레이블 이전에 실행 가능한 구문이 있습니다.",
  "rule.saqt.q.ccpp.1604.example.0.safe": "라인 3: 첫 번째 케이스 레이블 이전에는 실행 가능한 구문이 없어야 합니다.",
  "rule.saqt.q.ccpp.1604.name": "첫 번째 케이스 구문 전 실행 가능한 구문",
  "rule.saqt.q.ccpp.161.description": "포함 시 절대 경로 사용 체커는 헤더 파일을 include 할 때 절대 경로를 사용하는 코드를 검출합니다.\n헤더 파일을 include 할 때 절대 경로를 사용하지 말아야 합니다.\n헤더 파일을 절대 경로 형식으로 포함하지 않도록 합니다.",
  "rule.saqt.q.ccpp.161.example.0.dangerous": "라인 1: 헤더 파일을 절대 경로 형식으로 포함했습니다.",
  "rule.saqt.q.ccpp.161.example.0.safe": "라인 1: 헤더 파일을 절대 경로 형식으로 포함하지 않도록 합니다.",
  "rule.saqt.q.ccpp.161.name": "포함 시 절대 경로 사용",
  "rule.saqt.q.ccpp.162.description": "누락된 헤더 파일 체커는 옵션에 지정된 필수 헤더 파일을 사용하지 않은 코드를 검출합니다.\n지정한 헤더 파일을 사용하지 않았을 경우에 검출됩니다.\n옵션에 지정된 필수 헤더 파일을 포함해야 합니다.",
  "rule.saqt.q.ccpp.162.example.0.dangerous": "라인 1: 필수 헤더 파일이 포함되지 않았습니다.",
  "rule.saqt.q.ccpp.162.example.0.safe": "라인 1: 필수 헤더 파일로 지정된 헤더 파일을 포함하도록 합니다.",
  "rule.saqt.q.ccpp.162.name": "누락된 헤더 파일",
  "rule.saqt.q.ccpp.162.option.check_all_missing_only.description": "필수 헤더를 포함하지 않은 경우 검사",
  "rule.saqt.q.ccpp.162.option.check_all_missing_only.name": "필수 헤더를 포함하지 않은 경우 검사",
  "rule.saqt.q.ccpp.162.option.required_header.description": "필수 헤더를 설정합니다.",
  "rule.saqt.q.ccpp.162.option.required_header.name": "필수 헤더",
  "rule.saqt.q.ccpp.163.description": "부적절한 구조체 정렬 체커는 옵션에 지정된 데이터 정렬(data alignment)의 배수가 아닌 구조체 크기를 사용하는 코드를 검출합니다.\n옵션에서 alignment 사용 여부, alignment 크기 및 각 자료형의 크기를 설정할 수 있습니다.\n옵션에 지정된 구조체 크기가 데이터 정렬의 배수여야 합니다.",
  "rule.saqt.q.ccpp.163.example.0.dangerous": "라인 1: 구조체의 크기가 5이므로 데이터 정렬인 4의 배수가 아닙니다.",
  "rule.saqt.q.ccpp.163.example.0.safe": "라인 1: 구조체 크기를 정의할 때 데이터 정렬의 배수가 되도록 합니다.",
  "rule.saqt.q.ccpp.163.name": "부적절한 구조체 정렬",
  "rule.saqt.q.ccpp.163.option.alignment_size.description": "alignment 크기를 설정합니다.",
  "rule.saqt.q.ccpp.163.option.alignment_size.name": "alignment 크기",
  "rule.saqt.q.ccpp.163.option.char_size.description": "char 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.163.option.char_size.name": "char 형 크기",
  "rule.saqt.q.ccpp.163.option.float_size.description": "float 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.163.option.float_size.name": "float 형 크기",
  "rule.saqt.q.ccpp.163.option.int_size.description": "int 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.163.option.int_size.name": "int 형 크기",
  "rule.saqt.q.ccpp.163.option.short_size.description": "short 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.163.option.short_size.name": "short 형 크기",
  "rule.saqt.q.ccpp.163.option.use_alignment.description": "alignment 사용 여부를 설정합니다.",
  "rule.saqt.q.ccpp.163.option.use_alignment.name": "alignment 사용 여부",
  "rule.saqt.q.ccpp.164.description": "패딩된 구조체 체커는 구조체를 정의할 때 패딩 비트를 발생시키는 코드를 검출합니다.\n옵션에서 alignment 사용 여부, alignment 크기 및 각 자료형의 크기를 설정할 수 있습니다.\n구조체를 정의할 때 패딩을 최소한으로 줄여야 합니다.",
  "rule.saqt.q.ccpp.164.example.0.dangerous": "라인 3: 2비트의 short 변수 선언과 4비트의 int 변수 선언을 차례대로 수행하여 a 변수를 선언한 후에 2비트의 패딩이 발생했습니다.",
  "rule.saqt.q.ccpp.164.example.0.safe": "라인 3: short 변수가 연속적으로 선언되므로 패딩 비트가 발생하지 않습니다.",
  "rule.saqt.q.ccpp.164.name": "패딩된 구조체",
  "rule.saqt.q.ccpp.164.option.alignment_size.description": "alignment 크기를 설정합니다.",
  "rule.saqt.q.ccpp.164.option.alignment_size.name": "alignment 크기",
  "rule.saqt.q.ccpp.164.option.char_size.description": "char 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.164.option.char_size.name": "char 형 크기",
  "rule.saqt.q.ccpp.164.option.float_size.description": "float 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.164.option.float_size.name": "float 형 크기",
  "rule.saqt.q.ccpp.164.option.int_size.description": "int 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.164.option.int_size.name": "int 형 크기",
  "rule.saqt.q.ccpp.164.option.short_size.description": "short 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.164.option.short_size.name": "short 형 크기",
  "rule.saqt.q.ccpp.164.option.use_alignment.description": "alignment 사용 여부를 설정합니다.",
  "rule.saqt.q.ccpp.164.option.use_alignment.name": "alignment 사용 여부",
  "rule.saqt.q.ccpp.165.description": "너무 큰 구조체 체커는 옵션에 지정된 최대 구조체 크기를 초과하는 구조체를 정의하는 코드를 검출합니다.\n옵션에서 최대 구조체 크기, alignment 사용 여부, alignment 크기 및 각 자료형의 크기를 설정할 수 있습니다.\n옵션에 지정된 최대 구조체 크기를 초과하지 않도록 구조체를 정의해야 합니다.",
  "rule.saqt.q.ccpp.165.example.0.dangerous": "라인 1: 정의된 구조체의 크기(12)가 지정된 최대 크기(10)를 초과하여 오류가 발생합니다.",
  "rule.saqt.q.ccpp.165.example.0.safe": "라인 1: 구조체를 허용된 최대 크기보다 작게 정의하도록 합니다.",
  "rule.saqt.q.ccpp.165.name": "너무 큰 구조체",
  "rule.saqt.q.ccpp.165.option.alignment_size.description": "alignment 크기를 설정합니다.",
  "rule.saqt.q.ccpp.165.option.alignment_size.name": "alignment 크기",
  "rule.saqt.q.ccpp.165.option.char_size.description": "char 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.165.option.char_size.name": "char 형 크기",
  "rule.saqt.q.ccpp.165.option.float_size.description": "float 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.165.option.float_size.name": "float 형 크기",
  "rule.saqt.q.ccpp.165.option.int_size.description": "int 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.165.option.int_size.name": "int 형 크기",
  "rule.saqt.q.ccpp.165.option.max_size.description": "구조체의 최대 크기를 설정합니다.",
  "rule.saqt.q.ccpp.165.option.max_size.name": "최대 크기 설정",
  "rule.saqt.q.ccpp.165.option.short_size.description": "short 형 크기를 설정합니다.",
  "rule.saqt.q.ccpp.165.option.short_size.name": "short 형 크기",
  "rule.saqt.q.ccpp.165.option.use_alignment.description": "alignment 사용 여부를 설정합니다.",
  "rule.saqt.q.ccpp.165.option.use_alignment.name": "alignment 사용 여부",
  "rule.saqt.q.ccpp.1651.description": "도달할 수 없는 케이스 구문 체커는 switch 구문에서 절대 도달할 일이 없는 케이스 레이블을 검출합니다.\n절대 도달할 수 없는 케이스 레이블이 존재한다면 작성자가 실수를 했을 가능성이 높습니다. 또한 그냥 내버려두면 코드의 가독성을 떨어뜨립니다.\n도달할 수 없는 케이스 레이블을 삭제합니다.",
  "rule.saqt.q.ccpp.1651.example.0.dangerous": "라인 12: unsigned int 값을 조건으로 삼아 분기하는 switch 구문 안에 -1에 해당하는 케이스 레이블이 있습니다. unsigned 값이 -1이 될 수 없으므로 절대 도달할 수 없는 케이스입니다.",
  "rule.saqt.q.ccpp.1651.example.0.safe": "라인 12: 해당 케이스를 제거합니다.",
  "rule.saqt.q.ccpp.1651.name": "도달할 수 없는 케이스 구문",
  "rule.saqt.q.ccpp.1654.description": "일치하지 않는 가변 인자 수 체커는 가변인자를 받는 함수의 변환 지시자와 인자의 개수가 동일하지 않은 경우를 검출합니다.\n이때 변환 지시자란 문자열 포맷 스트링 등에서 인자로 받은 값을 치환하는 `%s`와 같은 코드를 의미합니다.\n가변인자를 받는 함수를 호출할 때 변환 지시자와 인자의 개수가 다를 경우 비정상적인 동작이 발생할 수 있습니다.\n가변인자를 받는 함수를 호출할 때 변환 지시자의 개수와 인자 개수가 동일하도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1654.example.0.dangerous": "라인 3: printf() 함수의 변환 지시자는 3개이지만 인자는 1개만 작성했습니다.",
  "rule.saqt.q.ccpp.1654.example.0.safe": "라인 3: printf() 함수 호출에서 변환 지시자의 개수와 인자의 개수를 일치시키도록 합니다.",
  "rule.saqt.q.ccpp.1654.name": "일치하지 않는 가변 인자 수",
  "rule.saqt.q.ccpp.1654.option.targets.description": "대상 함수와 conversion 지시자가 시작되는 인덱스를 적습니다. 인덱스는 0부터 시작합니다. 형태는 <대상함수 이름>,<숫자> 형태여야 합니다.",
  "rule.saqt.q.ccpp.1654.option.targets.name": "대상 함수",
  "rule.saqt.q.ccpp.166.description": "나머지 연산 사용 체커는 나머지 연산(%)을 사용하는 코드를 검출합니다.\n옵션에서 나머지 연산의 예외 사항 사용 여부를 설정할 수 있습니다. 예외 상황이란 나머지 연산을 수행하기 전에 동일한 피연산자에 먼저 나누기 연산을 수행하는 경우를 가리킵니다.\n나머지 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.166.example.0.dangerous": "라인 4: 나머지 연산을 사용하므로 검출됩니다.",
  "rule.saqt.q.ccpp.166.example.0.safe": "라인 4: 나머지 연산을 수행하기 전에 동일한 피연산자에 나누기 연산을 수행합니다.\n라인 5: 같은 피연산자에서 나누기 연산을 수행한 후에 나머지 연산을 수행하므로 검출되지 않습니다.",
  "rule.saqt.q.ccpp.166.name": "나머지 연산 사용",
  "rule.saqt.q.ccpp.166.option.exclude_follow_by_same_division.description": "바로 이전 표현식이 나머지 연산의 우측 피연산자와 동일한 피연산자로 나누기 연산을 하는 경우는 제외합니다.<br />예시 : v1 = a / b; v2 = a % b;",
  "rule.saqt.q.ccpp.166.option.exclude_follow_by_same_division.name": "나머지 연산의 예외사항",
  "rule.saqt.q.ccpp.167.description": "부호가 있는 값에 대해 나눗셈 체커는 나누기 연산을 수행할 때 분자나 분모에 signed 정수형이 존재하는 코드를 검출합니다.\n나누기 연산에서 분자와 분모는 모두 unsigned 정수형이어야 합니다.",
  "rule.saqt.q.ccpp.167.example.0.dangerous": "라인 4: signed 정수형 i로 나누므로 검출됩니다.",
  "rule.saqt.q.ccpp.167.example.0.safe": "라인 4: 모두 unsigned 정수형 변수로 나누기를 수행합니다.",
  "rule.saqt.q.ccpp.167.name": "부호가 있는 값에 대해 나눗셈",
  "rule.saqt.q.ccpp.168.description": "누락된 반환 값 비교 체커는 if, while 및 for 의 비교문에서 정수형을 반환하는 함수를 피연산자로 호출하는 동시에 비교 연산자를 사용하지 않는 코드를 검출합니다.\n분기문 또는 반복문에서 함수의 반환값을 정수와 비교하지 않거나 정수를 잘못 비교하는 경우 프로그램에 예상하지 못한 동작이 발생할 수 있습니다.\n조건문에서 정수형을 반환하는 함수를 피연산자로 사용하면 비교 연산자를 사용해야 합니다.",
  "rule.saqt.q.ccpp.168.example.0.dangerous": "라인 3: foo() 함수에서 0을 반환했습니다.\n라인 5: foo() 함수에서 1을 반환했습니다.\n라인 7: foo() 함수에서 -1을 반환했습니다.\n라인 8: foo2() 함수에서 foo()의 반환값을 다른 값과 비교하지 않기 때문에 의도하지 않은 동작이 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.168.example.0.safe": "라인 8: 함수의 반환값을 정확한 값과 비교하여 문제를 해결합니다.",
  "rule.saqt.q.ccpp.168.name": "누락된 반환 값 비교",
  "rule.saqt.q.ccpp.169.description": "일치하지 않는 피연산자 타입 체커는 다른 정수 타입의 피연산자에 대입 연산자나 비교 연산자를 사용하는 코드를 검출합니다.\n옵션에서 16진수 상수의 분석 여부를 지정할 수 있습니다.\n서로 다른 정수형을 비교하기 위해서는 캐스팅을 수행해야 합니다. 하지만 캐스팅이 잘못되면 올바르지 않은 값이 나오기 때문에 비교 연산에서 올바른 캐스팅을 수행해야 합니다.\n정수에 대한 비교 연산이나 대입 연산을 수행할 경우 피연산자의 타입이 일치해야 합니다.",
  "rule.saqt.q.ccpp.169.example.0.dangerous": "라인 3: 비교 연산에서 오른쪽 피연산자를 캐스팅하므로 문제가 발생했습니다.",
  "rule.saqt.q.ccpp.169.example.0.safe": "라인 3: 비교 연산에서는 왼쪽 피연산자를 캐스팅해야 합니다.",
  "rule.saqt.q.ccpp.169.name": "일치하지 않는 피연산자 타입",
  "rule.saqt.q.ccpp.169.option.ignore_hexadecimal_const.description": "16진수 상수 무시 여부를 설정합니다.",
  "rule.saqt.q.ccpp.169.option.ignore_hexadecimal_const.name": "16진수 상수 무시 여부",
  "rule.saqt.q.ccpp.1691.description": "상충되는 저장소 클래스 체커는 동일한 함수나 객체가 외부 링크와 정적 링크 두가지를 동시에 가진 경우를 검출합니다.\n함수나 객체가 외부 링크와 정적 링크를 동시에 가지는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n동일한 함수나 객체는 동일한 스토리지 클래스를 가지도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.1691.example.0.dangerous": "라인 1: foo() 함수를 외부 링크로 선언했습니다.\n라인 2: number 변수를 외부 링크로 선언했습니다.\n라인 4: number 변수를 정적으로 정의했습니다. 라인 2에서 선언한 것과 다릅니다.\n라인 5: foo() 함수를 정적 링크로 정의했습니다. 라인 1에서 선언한 것과 다릅니다.",
  "rule.saqt.q.ccpp.1691.example.0.safe": "라인 4: number 변수를 선언과 동일한 스토리지 클래스를 가지도록 정의합니다.\n라인 5: foo() 함수를 선언과 동일한 스토리지 클래스를 가지도록 정의합니다.",
  "rule.saqt.q.ccpp.1691.name": "상충되는 저장소 클래스",
  "rule.saqt.q.ccpp.1692.description": "읽기 전용 파라미터로 사용된 초기화 되지 않은 포인터 체커는 포인터가 가리키는 값을 초기화하지 않고 함수의 읽기 전용 인자로 전달하는 경우를 검출합니다.\n초기화되지 않은 값을 가리키는 포인터를 함수의 읽기 전용 인자로 전달하면 초기화되지 않은 값을 수정하지 못하고 그대로 사용해야 합니다. 이것은 프로그램의 오동작을 발생시키며 개발자가 의도한 상황도 아닐 가능성이 높습니다.\n함수의 읽기 전용 인자로 전달하는 포인터가 가리키는 값은 반드시 적절한 값으로 초기화한 뒤 넘기도록 합니다.",
  "rule.saqt.q.ccpp.1692.example.0.dangerous": "라인 6: y2의 값을 초기화하지 않고 call_uinit_foo() 함수의 읽기 전용 인자로 넘겼습니다.",
  "rule.saqt.q.ccpp.1692.example.0.safe": "라인 7: 함수의 읽기 전용 인자로 넘기는 값은 반드시 초기화한 이후에 넘기도록 합니다.",
  "rule.saqt.q.ccpp.1692.name": "읽기 전용 파라미터로 사용된 초기화 되지 않은 포인터",
  "rule.saqt.q.ccpp.171.description": "일관성 없는 전역 변수 선언 체커는 이미 선언된 전역 변수와 동일한 변수명을 재사용할 때 extern 키워드를 사용하지 않은 코드를 검출합니다.\n여러 파일에서 같은 이름의 전역 변수를 사용하면 같은 메모리 공간을 덮어쓰게 됩니다. 그 결과 프로그램에서 예상하지 못한 동작이 발생할 수 있습니다.\n다른 파일에서 전역 변수로 선언되어 있는 동일한 변수를 재사용하려면 extern 키워드를 사용해야 합니다.",
  "rule.saqt.q.ccpp.171.example.0.dangerous": "라인 2: 전역 변수를 선언한 후에 sum.c 파일의 라인 9에서 같은 이름의 변수를 다른 자료형으로 선언하여 문제가 발생했습니다.",
  "rule.saqt.q.ccpp.171.example.0.safe": "라인 2: 전역 변수를 여러 파일에서 사용하기 위해 자료형을 일치시키고 extern 한정자를 사용하며 헤더를 통해 인터페이스를 구성하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.171.name": "일관성 없는 전역 변수 선언",
  "rule.saqt.q.ccpp.173.description": "일치하지 않는 문자 타입 체커는 str 계열 함수(ex. strncpy)와 wcs 계열 함수(ex. wcsncpy)에 각각 char와 wchar_t 매개 변수 타입을 전달하지 않는 코드를 검출합니다.\n해당 오류는 strncpy() 와 같은 좁은 문자형을 사용하는 함수를 사용할 때 모든 인자의 타입이 char * 가 아닌 경우, 또는 wcsncpy() 와 같은 와이드 문자형을 사용하는 함수를 사용할 때 모든 인자의 타입이 wchar_t * 가 아닌 경우에 발생합니다. 문자열 관련 함수와 와이드 문자열 관련 함수를 옵션에 지정할 수 있습니다.\n좁은 문자열을 wcsncpy() 함수에 사용하거나 와이드 문자열을 strncpy() 함수에 사용하는 것은 정의되지 않은 동작(Undefined Behavior)입니다. 또한 와이드 문자열은 널 와이드 문자로 종료되며 문자열 사이에 널을 포함할 수도 있습니다. 따라서 널 와이드 문자를 strncpy() 함수에 사용하는 경우 잘못된 길이가 계산될 수 있습니다.\nstr 계열 함수와 wcs 계열 함수의 매개 변수 자료형인 char와 wchar_t를 혼동하여 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.173.example.0.dangerous": "라인 2: 문자열 배열을 wchar_t 형으로 선언했습니다.\n라인 4: wchar_t 형 문자열을 복사하기 위해 자료형이 맞지 않는 strncpy() 함수를 사용했으므로 문제가 발생했습니다.\n라인 8: char 타입으로 문자열 배열을 선언했습니다.\n라인 9: 타입이 일치하지 않는 함수를 사용했습니다.",
  "rule.saqt.q.ccpp.173.example.0.safe": "라인 4: wchar_t 자료형이 wcsncpy() 함수를 사용해야 합니다.\n라인 9: char 자료형이 strncpy() 함수를 사용해야 합니다.",
  "rule.saqt.q.ccpp.173.name": "일치하지 않는 문자 타입",
  "rule.saqt.q.ccpp.173.option.str_function.description": "문자열 관련 함수를 설정합니다.",
  "rule.saqt.q.ccpp.173.option.str_function.name": "문자열 관련 함수",
  "rule.saqt.q.ccpp.173.option.wcs_function.description": "와이드 문자열 관련 함수를 설정합니다.",
  "rule.saqt.q.ccpp.173.option.wcs_function.name": "와이드 문자열 관련 함수",
  "rule.saqt.q.ccpp.174.description": "일치하지 않는 재할당 타입 체커는 realloc() 함수에 포함된 첫 번째 매개변수의 구조체 타입과 해당 함수로 할당된 메모리를 가리키는 변수의 구조체 타입이 다른 코드를 검출합니다.\n해당 오류는 realloc() 함수를 사용할 때 해당 함수의 첫 번째 인자 타입이 왼쪽 피연산자의 타입과 다른 경우에 발생합니다.\n구조체 객체에 메모리를 재할당하는 경우 realloc() 함수에 포함된 매개변수 자료형이 왼쪽 피연산자와 다르면 해당 구조체의 멤버에 대해 잘못된 초기화가 수행될 수 있습니다. 따라서 프로그램이 예측하지 않은 흐름으로 실행될 수 있습니다.\nrealloc() 함수를 사용할 때 동일한 자료형을 사용해야 합니다.",
  "rule.saqt.q.ccpp.174.example.0.dangerous": "라인 15: realloc() 함수를 사용하여 Exam1 타입의 구조체 값을 Exam2 로 복사했습니다. 따라서 구조체 멤버에 대한 잘못된 초기화가 수행될 수 있습니다.",
  "rule.saqt.q.ccpp.174.example.0.safe": "라인 13: realloc() 함수를 사용하여 구조체에 메모리를 할당하려면 동일한 형의 구조체를 사용해야 합니다.",
  "rule.saqt.q.ccpp.174.name": "일치하지 않는 재할당 타입",
  "rule.saqt.q.ccpp.180.description": "케이스 구문에서 누락된 break 구문 체커는 break 구문으로 끝나지 않는 case 문을 검출합니다.\nbreak 대신에 return, continue, goto 문을 사용하는 것도 허용됩니다.\nswitch 문에서 break 문이 누락된 경우 프로그래머가 의도하지 않는 케이스를 실행하게 되어 예상하지 않은 동작이나 오류가 발생할 수 있습니다.\ncase 문에는 break, return, continue, goto 문 중 하나가 포함되어야 합니다.",
  "rule.saqt.q.ccpp.180.example.0.dangerous": "라인 6: case 문에서 break 문을 누락했으므로 뒤에 있는 case 문을 실행했습니다. 따라서 변수 a가 2인 경우 case 2와 case 3을 실행합니다.",
  "rule.saqt.q.ccpp.180.example.0.safe": "라인 6: 실행 흐름을 고려하여 case 문에 break 문을 추가합니다.",
  "rule.saqt.q.ccpp.180.name": "케이스 구문에서 누락된 break 구문",
  "rule.saqt.q.ccpp.1835.description": "다차원 배열 사용 체커는 옵션에 설정된 최대 배열 단계수 이상으로 배열을 사용한 경우를 검출합니다.\n옵션에서 최대 제한할 배열 단계 수를 설정할 수 있습니다.\n다차원 배열은 유지보수성과 가독성을 저하시킵니다.\n다차원 배열을 사용하지 마십시오.",
  "rule.saqt.q.ccpp.1835.example.0.dangerous": "라인 1: 2차원 배열을 사용했습니다.",
  "rule.saqt.q.ccpp.1835.example.0.safe": "라인 1: 1차원 배열을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1835.name": "다차원 배열 사용",
  "rule.saqt.q.ccpp.1835.option.threshold.description": "금지할 배열의 차원 단계를 설정합니다. 만약 2로 설정했으면 2차원 이상의 배열을 결함으로 검출합니다.",
  "rule.saqt.q.ccpp.1835.option.threshold.name": "제한할 배열 단계 수",
  "rule.saqt.q.ccpp.1836.description": "블록 중간에 존재하는 선언 체커는 변수가 블록의 초반부에 선언되지 않은 경우를 검출합니다.\n라벨(Label) 문장, 빈(Empty) 문장이 들어간 경우는 예외로 합니다. 옵션에서 프로프레임 지원 여부, 무시할 변수 이름을 설정할 수 있습니다.\n과거의 C 컴파일러는 변수 선언부가 블록 초반에 없으면 컴파일 오류가 발생합니다. 현재 대부분의 C 컴파일러들은 변수 선언부의 위치가 컴파일 성공여부에 영향을 주지 않지만, 코드의 호환성을 위해 변수 선언은 블록 초반에 이뤄지는 것이 좋습니다.\n변수 선언은 블록의 초반에 하도록 합니다.",
  "rule.saqt.q.ccpp.1836.example.0.dangerous": "라인 2: 변수 'x' 가 함수 블록의 초반부에 선언 되었습니다.\n라인 4: 변수 'y'가 if 문 블록의 초반부에 선언 되었습니다.\n라인 6: 변수 'z'가 3번 라인에서 if 문장이 나타난 후 선언 되었습니다.",
  "rule.saqt.q.ccpp.1836.example.0.safe": "라인 3: 변수 'z'를 함수 블록의 초반부에 선언하도록 합니다.",
  "rule.saqt.q.ccpp.1836.name": "블록 중간에 존재하는 선언",
  "rule.saqt.q.ccpp.1836.option.ignore_var_name.description": "무시할 변수 이름을 정규식을 사용하여 설정합니다.",
  "rule.saqt.q.ccpp.1836.option.ignore_var_name.name": "무시할 변수 이름",
  "rule.saqt.q.ccpp.1836.option.support_proframe.description": "선택시 프로프레임 코드 분석을 보다 정확하게 수행합니다.",
  "rule.saqt.q.ccpp.1836.option.support_proframe.name": "프로프레임 지원",
  "rule.saqt.q.ccpp.1837.description": "if 구문 조건 내에서의 함수 사용 체커는 옵션에 지정된 함수 외에 함수를 조건문 내에서 사용한 경우를 검출합니다.\n옵션에서는 조건문 내에 사용 가능한 함수를 설정할 수 있습니다.\n조건문 내에서 함수를 호출하여 사용할 경우 코드 가독성이 떨어집니다.\n조건문 안에서 함수를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1837.example.0.dangerous": "라인 1: 조건문 내에서 함수 호출을 사용 했습니다.",
  "rule.saqt.q.ccpp.1837.example.0.safe": "라인 1: 함수 호출 식을 if 문에서 분리하도록 합니다.",
  "rule.saqt.q.ccpp.1837.name": "if 구문 조건 내에서의 함수 사용",
  "rule.saqt.q.ccpp.1837.option.ignore_function_list.description": "조건문 내에서 사용을 허용하는 함수들을 정규식으로 입력합니다.",
  "rule.saqt.q.ccpp.1837.option.ignore_function_list.name": "허용하는 함수 목록",
  "rule.saqt.q.ccpp.1840.description": "== 및 != 연산자를 사용한 문자열 비교 체커는 문자열을 비교할 때 직접 비교 연산(==, !=)을 사용한 경우를 검출합니다.\n문자열을 비교할 때 직접 비교 연산(==, !=)을 사용하면 안됩니다.\n문자열을 저장하는 변수는 주소 값을 가지고 있습니다. 따라서 주소 값에 대한 비교는 항상 거짓이 나옵니다.\n문자열을 비교하기 위해선 문자열 비교 함수를 사용해야 합니다.",
  "rule.saqt.q.ccpp.1840.example.0.dangerous": "라인 3: 문자열 변수와 문자열 변수를 직접 비교했습니다. 이 경우 값은 언제나 false 가 나옵니다.",
  "rule.saqt.q.ccpp.1840.example.0.safe": "라인 4: C에서는 strcpy 혹은 strncpy를 사용해야 하며, C++에서는 string의 compare()를 사용해야 합니다.",
  "rule.saqt.q.ccpp.1840.name": "== 및 != 연산자를 사용한 문자열 비교",
  "rule.saqt.q.ccpp.185.description": "문자 타입을 정수 타입으로 할당 체커는 정수형을 문자형으로 변환하는 코드를 검출합니다.\nint 타입을 char 타입으로 변환하면 표현할 수 없는 범위의 값이 잘려나갈 위험이 있습니다.\n예를 들어, 4바이트 크기의 int 타입 값을 1바이트 크기의 char 타입 변수에 저장하면 표현할 수 없는 범위의 값이 잘려나가서 char 타입 변수에 정확한 값이 저장되지 않는 경우가 있습니다. 그 결과 오작동이나 버퍼 오버런이 발생할 수 있습니다.\nint 타입을 char 타입으로 변환하면 표현할 수 없는 범위의 값이 잘릴 수 있으므로 변환하지 않도록 합니다.",
  "rule.saqt.q.ccpp.185.example.0.dangerous": "라인 3: 1바이트 크기인 char 타입 변수에 int 타입 변수나 값을 지정할 경우 char 타입 변수에 오버플로우가 발생할 가능성이 있습니다.",
  "rule.saqt.q.ccpp.185.example.0.safe": "라인 2: 정확한 타입인 int 타입으로 수정합니다.",
  "rule.saqt.q.ccpp.185.name": "문자 타입을 정수 타입으로 할당",
  "rule.saqt.q.ccpp.185.option.unsigned_signed_char_as_int.description": "unsigned char, signed char를 int형으로 간주 여부를 결정합니다.",
  "rule.saqt.q.ccpp.185.option.unsigned_signed_char_as_int.name": "unsigned char, signed char를 int형으로 간주",
  "rule.saqt.q.ccpp.187.description": "10진수가 아닌 정수 상수 체커는 정수 상수를 10진수가 아닌 진법(8진수나 16진수)으로 정의하는 코드를 검출합니다.\n정수 상수를 10진수가 아닌 진법(8진수나 16진수)으로 정의하면 시스템에 따라 다른 결과를 표시할 수 있으므로 위험합니다.\n8진수나 16진수의 표현은 비트 연산을 위해 사용됩니다. 하지만 비트의 수를 측정하지 못하면 의도하지 않은 연산이 발생할 수 있습니다. 예를 들어, 16진수로 32비트 변수를 표현했는데 실제 변수의 자료형은 64비트일 때 프로그래머가 의도하지 않은 연산 결과를 얻게 됩니다. 또한 버퍼 오버런이 발생할 수 있습니다.\n정수는 10진법으로 표현되어야 합니다.",
  "rule.saqt.q.ccpp.187.example.0.dangerous": "라인 1: 16진수로 32비트 변수를 정의했습니다.\n라인 3: unsigned long 형이 64비트인 경우 mask에 0x00000000FFFFFFFF의 값이 할당됩니다. 따라서 프로그래머가 의도하지 않은 결과를 얻게 되었습니다.",
  "rule.saqt.q.ccpp.187.example.0.safe": "라인 1: 0xFFFFFFFF 대신 -1을 사용하여 시스템 호환성을 높일 수 있습니다.",
  "rule.saqt.q.ccpp.187.name": "10진수가 아닌 정수 상수",
  "rule.saqt.q.ccpp.1889.description": "지역 변수 주소 접근 체커는 지역 변수의 주소를 함수의 인자를 통해 외부에서 참조하는 경우를 검출합니다.\n해당 오류는 지역 변수의 주소를 함수의 인자에 Call By Reference로 전달할 때 해당 함수가 끝난 후에 외부에서 주소를 참조할 경우 잘못된 값을 읽어옴으로 인해 발생합니다.\n해당 이슈로 인해 일반적으로 의도하지 않은 프로그램 동작이나 프로그램 종료가 발생합니다.\n지역 변수의 주소를 외부 포인터에 대입하지 않도록 합니다.",
  "rule.saqt.q.ccpp.1889.example.0.dangerous": "라인 4: 함수 인자 x의 포인터가 지역 변수 y의 주소를 가리키게 됩니다.",
  "rule.saqt.q.ccpp.1889.example.0.safe": "라인 3: 스택이 아닌 힙 영역에 동적으로 할당되는 주소를 인자를 통해 외부에 전달되는 주소로 사용하도록 합니다.",
  "rule.saqt.q.ccpp.1889.name": "지역 변수 주소 접근",
  "rule.saqt.q.ccpp.189.description": "일치하지 않는 인자 수 체커는 함수를 호출할 때 인자의 수가 정의된 매개 변수의 수와 일치하지 않는 코드를 검출합니다.\n.\n일반적으로 함수에서 정의된 것과 다른 인자 수가 호출되면 GCC 컴파일러에서 오류가 발생합니다. 하지만 인자 수를 확인하도록 지원하지 않는 컴파일러에서는 인자 수가 다른 경우에도 오류를 검출하지 않습니다. 정의된 것과 다른 인자 수를 포함하는 함수를 호출하는 경우 프로그램에서 예상하지 못한 동작이 발생할 수 있습니다.\n함수를 정의할 때 설정된 매개 변수 수와 해당 함수를 호출할 때 전달된 인자 수가 일치해야 합니다.",
  "rule.saqt.q.ccpp.189.example.0.dangerous": "라인 1: foo() 함수에서 매개 변수 수는 1개입니다.\n라인 5: foo() 함수를 호출할 때 전달된 인자 수는 2개입니다.",
  "rule.saqt.q.ccpp.189.example.0.safe": "라인 5: 함수에서 정의된 매개 변수 수와 호출 시 함수의 인자 수를 정확하게 일치시킵니다.",
  "rule.saqt.q.ccpp.189.name": "일치하지 않는 인자 수",
  "rule.saqt.q.ccpp.190.description": "재사용된 토큰화 된 문자열 체커는 strtok() 함수를 호출하는 데 사용된 첫 번째 인자를 재사용하는 경우를 검출합니다.\nstrtok() 함수는 문자열을 단어 단위로 분할해주는 함수입니다. 해당 함수를 호출하면 원본 문자열의 토큰 부분이 널 문자로 대체됩니다.\nstrtok() 함수로 인해 원본 문자열의 일부가 변경되기 때문에 이 문자열을 그대로 사용하는 경우 개발자가 예상하지 못한 결과가 발생할 수 있습니다. 해당 문제는 strtok() 함수의 동작 방식이 직관적이지 않기 때문에 발생합니다.\nstrtok() 함수에 첫 번째 인자로 전달된 변수를 재사용하지 않도록 합니다. 만약 재사용해야 하는 경우 strtok() 함수에서는 원본 문자열을 복사한 값을 사용하도록 합니다.",
  "rule.saqt.q.ccpp.190.example.0.dangerous": "라인 1: 토큰을 분리할 문자열이 입력되었습니다.\n라인 3: \"-\" 구분자에 따라 토큰이 분리되었습니다. 하지만 원본 명령어의 문자열도 변경되었습니다.\n라인 8: 원본과 다른 명령어가 출력되었습니다.",
  "rule.saqt.q.ccpp.190.example.0.safe": "라인 5: 원본 문자열을 재사용할 경우 직접 원본을 사용하는 대신 임시 버퍼 문자열을 strtok() 인자로 사용합니다.",
  "rule.saqt.q.ccpp.190.name": "재사용된 토큰화 된 문자열",
  "rule.saqt.q.ccpp.191.description": "심볼릭 링크 경쟁 조건 체커는 lstat() 함수의 호출 결과에만 의존하여 파일에 접근하는 코드를 검출합니다.\nlstat() 함수는 파일의 경로를 통해 정보를 확인하기 때문에 해당 함수로 확인한 파일의 심볼릭 링크 상태가 정확하지 않을 수 있습니다. 즉, lstat() 함수를 호출하고 open() 함수로 다시 파일을 여는 사이에 파일이 조작될 가능성이 있습니다. 따라서 open() 함수로 파일을 확보하고 다시 fstat() 함수로 해당 파일의 정확한 정보를 가져온 후에 해당 정보에 따라 동작을 결정해야 합니다.\nlstat() 함수에만 의존하여 파일 정보를 확인하지 않도록 합니다. lstat() 함수로 원하는 파일이 맞는지 확인한 후에 open() 함수로 파일을 열고, 다시 fstat() 함수의 결과와 기존 lstat() 함수의 결과가 동일한 경우에만 작업을 진행합니다.",
  "rule.saqt.q.ccpp.191.example.0.dangerous": "라인 6: 파일 정보를 lstat_info 구조체에 저장했습니다.\n라인 9: 파일이 심볼릭 링크가 아니면 파일을 열게 됩니다.\n라인 15: 실제 파일의 상태를 확인하지 않고 파일을 수정하는 경우 TOCTOU 경쟁 조건이 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.191.example.0.safe": "라인 7: 파일 이름으로 lstat()를 호출합니다.\n라인 10: open() 함수로 파일을 엽니다.\n라인 14: fstat() 함수로 파일의 상태를 불러옵니다.\n라인 17: lstat() 함수로 얻은 링크 정보와 fstat() 함수로 얻은 파일 정보가 동일한지 확인한 후에 파일을 수정합니다.",
  "rule.saqt.q.ccpp.191.name": "심볼릭 링크 경쟁 조건",
  "rule.saqt.q.ccpp.1914.description": "함수 포인터에 물리 주소 직접 할당 체커는 함수 포인터에 주소 값을 직접 대입한 경우를 검출합니다.\n함수 포인터에 주소 값을 직접 대입하지 마십시오. 언제나 같은 메모리 주소에 해당 함수가 있다고 보장할 수 없습니다.\n공격자가 악의적 코드가 실행되도록 해당 포인터가 가리키는 주소를 바꿀 수 있습니다.\n함수 포인터에 주소 값을 직접 대입하지 않습니다.",
  "rule.saqt.q.ccpp.1914.example.0.dangerous": "라인 1: 함수 포인터에 직접 하드웨어 주소를 입력하고 있습니다.",
  "rule.saqt.q.ccpp.1914.example.0.safe": "라인 6: 함수 포인터에 하드웨어 주소를 직접 입력하지 않고, 선언된 함수 이름을 사용하여 함수의 주소 값을 대입합니다.",
  "rule.saqt.q.ccpp.1914.name": "함수 포인터에 물리 주소 직접 할당",
  "rule.saqt.q.ccpp.193.description": "비 동기 스레드 종료 체커는 pthread cancel 타입으로 PTHREAD_CANCEL_ASYNCHRONOUS 인자를 사용하는 코드를 검출합니다.\n스레드를 비동기적으로 종료하는 경우 프로그램 충돌, 리소스 누수 또는 예상하지 못한 동작이 발생할 수 있습니다.\npthread cancel 타입으로 PTHREAD_CANCEL_ASYNCHRONOUS를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.193.example.0.dangerous": "라인 5: pthread cancel 타입으로 PTHREAD_CANCEL_ASYNCHRONOUS를 사용했습니다.\n라인 11: 반복문이 실행되면서 여러 스레드가 실행되지만 pthread_setcanceltype() 함수가 실행되기 전까지 스레드는 종료되지 않고 남아 있습니다.",
  "rule.saqt.q.ccpp.193.example.0.safe": "라인 3: 경쟁 조건이 발생하는 경우 PTHREAD_CANCEL_ASYNCHRONOUS 대신에 pthread_mutex_lock과 pthread_mutex_unlock을 사용하여 해당 오류를 해결한 후에 pthread를 종료하도록 합니다.",
  "rule.saqt.q.ccpp.193.name": "비 동기 스레드 종료",
  "rule.saqt.q.ccpp.193.option.pthread_cancel_type.description": "PTHREAD_CALCEL_TYPE 매크로의 실제 값을 입력합니다.",
  "rule.saqt.q.ccpp.193.option.pthread_cancel_type.name": "PTHREAD_CALCEL_TYPE 매크로의 실제 값",
  "rule.saqt.q.ccpp.194.description": "비교 대신 할당 수행 체커는 조건을 계산하기 위해 비교 연산을 사용해야 하는 부분에 할당 연산을 수행하는 코드를 검출합니다.\n보통 `==`와 같은 비교 연산자를 작성하려다 실수로 `=`와 같은 대입 연산자를 사용하는 경우에 이러한 문제가 발생합니다. 실수로 작성한 코드의 경우 의도와 다르게 동작함에도 불구하고 위치를 파악하기가 어렵습니다.\n비교 연산자 대신 대입 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.194.example.0.dangerous": "라인 2: a를 널과 비교하는 대신 할당했기 때문에 문제가 발생했습니다.",
  "rule.saqt.q.ccpp.194.example.0.safe": "라인 2: 조건문에서는 비교 연산자를 사용해야 합니다.",
  "rule.saqt.q.ccpp.194.name": "비교 대신 할당 수행",
  "rule.saqt.q.ccpp.195.description": "할당 대신 비교 수행 체커는 할당 연산을 사용해야 하는 부분에 비교 연산을 수행하는 코드를 검출합니다.\n보통 `=`와 같은 대입 연산자를 작성하려다 실수로 `==`와 같은 비교 연산자를 사용하는 경우에 이러한 문제가 발생합니다.\n실수로 다른 연산자를 사용하는 경우 프로그램이 의도하지 않은 흐름으로 수행될 수 있습니다.\n대입 연산자 대신 비교 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.195.example.0.dangerous": "라인 3: 변수 a에 5를 대입하는 대신 비교 연산을 수행했습니다.",
  "rule.saqt.q.ccpp.195.example.0.safe": "라인 3: 경우에 맞게 올바른 연산자를 사용합니다.",
  "rule.saqt.q.ccpp.195.name": "할당 대신 비교 수행",
  "rule.saqt.q.ccpp.1951.description": "비 가상 순수 함수 체커는 순수 함수가 가상 함수로 선언되지 않은 경우를 검출합니다.\n순수 함수는 반드시 가상 함수로 선언되어야 합니다. 그렇지 않으면 컴파일이 되지 않습니다.\n컴파일 오류가 발생합니다.\n순수 함수를 가상 함수로 선언합니다.",
  "rule.saqt.q.ccpp.1951.example.0.dangerous": "라인 5: 순수 가상 함수를 virtual 로 선언하지 않았습니다. C++ 문법에 맞지 않는 코드입니다.",
  "rule.saqt.q.ccpp.1951.example.0.safe": "라인 5: 순수 함수는 반드시 가상 함수로 선언되어야 합니다.",
  "rule.saqt.q.ccpp.1951.name": "비 가상 순수 함수",
  "rule.saqt.q.ccpp.1952.description": "순수 가상 함수의 잘못된 초기화 체커는 순수 가상 함수를 0으로 초기화하지 않은 경우를 검출합니다.\n순수 가상 함수는 반드시 0으로 초기화되어야 합니다. 그렇지 않으면 컴파일이 되지 않습니다.\n컴파일 오류가 발생합니다.\n순수 가상 함수를 0으로 초기화합니다.",
  "rule.saqt.q.ccpp.1952.example.0.dangerous": "라인 5: 순수 가상 함수로 선언한 것으로 보이나 전혀 C++ 문법에 맞지 않습니다.",
  "rule.saqt.q.ccpp.1952.example.0.safe": "라인 5: 순수 가상 함수를 선언하려면 = 0을 붙여야 합니다.",
  "rule.saqt.q.ccpp.1952.name": "순수 가상 함수의 잘못된 초기화",
  "rule.saqt.q.ccpp.196.description": "일치하지 않는 함수 정의 및 선언 타입 체커는 함수 정의와 선언에서 타입 이름이 일치하지 않는 경우를 검출합니다.\nC/C++의 경우 함수 정의와 선언에서 타입 이름이 다르더라도 호환되는 타입이 있습니다. 하지만 일반적으로 함수 정의와 선언에서 타입 이름이 다른 것은 정의되지 않은 동작(Undefined Behavior)입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n함수는 선언된 대로 정의되어야 합니다.",
  "rule.saqt.q.ccpp.196.example.0.dangerous": "라인 3: 함수에서 정의된 인자형(int)과 선언된 인자형(SINT32)이 다르기 때문에 검출되었습니다.",
  "rule.saqt.q.ccpp.196.example.0.safe": "라인 3: 함수 정의와 선언에서 타입 이름이 일치해야 합니다.",
  "rule.saqt.q.ccpp.196.name": "일치하지 않는 함수 정의 및 선언 타입",
  "rule.saqt.q.ccpp.198.description": "부적절한 memcpy 인자의 값 체커는 포인터나 복합 수식을 인자로 포함하는 sizeof 연산자의 결과를 memcpy()와 같은 옵션에 지정된 함수의 특정 인자로 전달하는 코드를 검출합니다\n옵션에서 검출 대상 함수와 인자의 위치를 지정할 수 있습니다.\nsizeof 연산자에 포인터를 전달하는 경우 포인터 타입의 크기를 얻을 것으로 기대하지만 실제로는 포인터의 크기를 측정하게 됩니다. 또한, sizeof 연산자에 복합 수식을 전달하는 경우 의도하지 않은 결과나 오류가 발생할 수 있습니다. sizeof 연산자의 결과는 컴파일할 때 평가되지만 변수 등이 포함된 복합 수식의 결과는 런타임할 때에야 알 수 있기 때문입니다.\n옵션에 지정된 memcpy()와 같은 함수의 특정 위치의 인자에 sizeof 연산자를 사용하는 경우 해당 연산자의 인자에 포인터나 복합 수식을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.198.example.0.dangerous": "라인 5: sizeof 연산자 인자로 포인터 변수를 사용했습니다.\n라인 6: sizeof 연산자 인자로 연산 수식을 사용했습니다.",
  "rule.saqt.q.ccpp.198.example.0.safe": "라인 5: 변수를 sizeof()의 직접 인자로 사용합니다.\n라인 6: sizeof()가 아닌 수식을 사용합니다.",
  "rule.saqt.q.ccpp.198.name": "부적절한 memcpy 인자의 값",
  "rule.saqt.q.ccpp.198.option.call_param_target_in_function.description": "분석 대상 함수와 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.ccpp.198.option.call_param_target_in_function.name": "분석 대상 함수와 파라미터 인덱스",
  "rule.saqt.q.ccpp.200.description": "쓸모없는 이름 체커는 동일한 이름의 정적 변수와 지역 변수를 사용하는 코드를 검출합니다.\n지역 변수와 정적 변수의 이름이 같은 경우 가독성이 떨어질 뿐만 아니라 지역 변수는 사용되지 않고 정적 변수만 사용되어 프로그램에 혼란을 줄 수 있습니다.\n동일한 이름의 지역 변수와 정적 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.200.example.0.dangerous": "라인 3: 정적 변수와 같은 이름의 지역 변수를 선언하여 오류가 발생했습니다.",
  "rule.saqt.q.ccpp.200.example.0.safe": "라인 3: 정적 변수와 지역 변수의 이름을 다르게 선언합니다.",
  "rule.saqt.q.ccpp.200.name": "쓸모없는 이름",
  "rule.saqt.q.ccpp.201.description": "누락된 반환 타입 체커는 함수의 반환 타입을 정의하지 않는 코드를 검출합니다.\n함수의 반환 타입이 정의되지 않은 경우 GCC와 같은 타입의 컴파일러에서는 해당 함수의 타입을 int로 간주합니다. 그렇지만 명시적으로 함수의 반환 타입을 정의하는 것이 좋습니다.\n함수를 정의할 때 반환 타입을 누락하지 않도록 합니다.",
  "rule.saqt.q.ccpp.201.example.0.dangerous": "라인 1: GCC의 경우 함수의 반환 타입을 int로 간주합니다. 하지만 반환 타입이 float이므로 오류가 발생했습니다.",
  "rule.saqt.q.ccpp.201.example.0.safe": "라인 1: 함수의 반환 타입을 명시적으로 정의해야 합니다.",
  "rule.saqt.q.ccpp.201.name": "누락된 반환 타입",
  "rule.saqt.q.ccpp.2010.description": "빈 while 구문 체커는 본문에 아무런 내용이 없는 while 구문을 검출합니다.\nwhile 구문에 본문이 없으면 아무런 의미가 없는 구문입니다. 특히 반복문의 조건이 참인 경우 무의미한 무한 루프에 빠질 위험이 있습니다.\nwhile 구문의 본문을 비워두지 않도록 합니다.",
  "rule.saqt.q.ccpp.2010.example.0.dangerous": "라인 3: while 구문의 본문이 비어 있습니다.",
  "rule.saqt.q.ccpp.2010.example.0.safe": "라인 4: while 구문의 본문을 비워두지 않도록 합니다.",
  "rule.saqt.q.ccpp.2010.name": "빈 while 구문",
  "rule.saqt.q.ccpp.2011.description": "16진수 이스케이프 시퀀스 사용 체커는 16진수 이스케이프 시퀀스를 사용한 수식을 검출합니다.\n역슬러시 뒤에 영문자 x와 숫자값이 오는 것은 16진수로 취급됩니다.\n16진수 이스케이프 시퀀스를 처리하는 방법은 구현 정의 동작(Implementation Defined Behavior)입니다. 따라서 컴파일러마다 다르게 처리될 수 있습니다. 예를 들어 16진수 이스케이프 시퀀스를 작성할 경우, 뒤에 오는 숫자의 값에 따라 16진수로 표현되기도 하고 16진수 + 남은 10진수 정수로 나뉘어 표현되기도 합니다. 따라서 개발자가 인지하지 못한 채 잘못된 상수를 사용할 위험이 있습니다.\n16진수 이스케이프 시퀀스는 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2011.example.0.dangerous": "라인 3: 16진수 이스케이프 시퀀스를 사용했습니다.",
  "rule.saqt.q.ccpp.2011.example.0.safe": "라인 3: 16진수 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2011.name": "16진수 이스케이프 시퀀스 사용",
  "rule.saqt.q.ccpp.204.description": "매크로 정의 시 후행하는 세미콜론 체커는 매크로를 정의할 때 치환 문자열이 세미콜론으로 끝나는 코드를 검출합니다.\n옵션에서 분석 제외 매크로 이름을 지정할 수 있습니다.\n매크로로 정의한 치환 문자열을 종료할 때 반드시 세미콜론을 사용해야 하는 것은 아닙니다. 매크로를 정의할 때 마지막에 세미콜론을 사용하면 의도하지 않게 프로그램의 흐름을 변경하게 될 수 있습니다. 매크로를 사용하는 프로그램의 흐름에서 세미콜론이 불필요한 경우에는 매크로를 정의할 때 세미콜론을 제거해야 합니다.\n매크로로 정의한 치환 문자열의 끝에 세미콜론을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.204.example.0.dangerous": "라인 1: 정의된 매크로 ADD의 내용이 세미콜론으로 끝납니다.",
  "rule.saqt.q.ccpp.204.example.0.safe": "라인 1: 매크로를 정의할 때 내용이 세미콜론으로 끝나지 않도록 합니다.",
  "rule.saqt.q.ccpp.204.name": "매크로 정의 시 후행하는 세미콜론",
  "rule.saqt.q.ccpp.204.option.exclude_macro.description": "분석에서 제외할 매크로 이름을 입력합니다.",
  "rule.saqt.q.ccpp.204.option.exclude_macro.name": "분석 제외 매크로",
  "rule.saqt.q.ccpp.205.description": "부적절한 매크로 사용 체커는 매크로에 괄호를 잘못 사용한 수식을 포함하거나 매크로를 함수처럼 사용하는 코드를 검출합니다.\n즉, 매크로를 선언할 때 매개 변수나 상수를 괄호로 감싸지 않거나 매크로에서 할당을 사용하거나 함수를 호출하는 경우를 가리킵니다.\n실제 매크로는 함수와 동일하게 작동하지만 의미가 다르기 때문입니다. 예를 들어, 함수처럼 선언된 두 개의 매크로를 연산할 경우 예상하지 못한 동작이 발생합니다. 따라서 매크로를 함수처럼 사용하는 대신 인라인 함수나 정적 함수를 사용하도록 합니다.\n매크로를 선언할 때 인자를 괄호로 감싸고 매크로에서 할당이나 함수 호출을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.205.example.0.dangerous": "라인 1: 매크로를 함수처럼 사용했기 때문에 문제가 발생했습니다.\n라인 1: 매크로에 전체 괄호가 누락되었습니다.\n라인 4: 매크로가 적용되면 수식이 (((24+(a))*(a))*(a)) 와 같이 계산됩니다. 의도하지 않은 연산이기 때문에 문제가 발생했습니다.",
  "rule.saqt.q.ccpp.205.example.0.safe": "라인 1: 매크로 대신 inline 함수를 사용합니다.\n라인 6: 매크로가 적용되는 시점을 고려하여 괄호를 추가합니다.",
  "rule.saqt.q.ccpp.205.name": "부적절한 매크로 사용",
  "rule.saqt.q.ccpp.206.description": "안전한 함수 교체 체커는 금지된 함수 이름으로 매크로를 선언하는 코드를 검출합니다.\n더 이상 사용되지 않는 함수는 다음과 같습니다. asctime(), asctime_s(), atof(), strtod(), atoi(), strtol(), atol(), strtol(), atoll(), strtoll(), ctime(), ctime_s(), gets(), gets_s(), fopen(), fmemopen|open_memstream(), fopen_s(), freopen(), freopen_s(), rewind(), fseek(), setbuf(), vsetbuf(), strtok(), strtok_r(), strtok_s(), vsprintf(), vsnprintf(), strcpy(), strcpy_s(), strcat(), strcat_s().\n매크로를 안전한 함수 이름으로 정의하더라도 매크로에 금지된 함수가 포함되면 매크로는 안전하지 않습니다. 이로 인해 버퍼 오버런 등의 오류가 발생할 수 있습니다. 또한 금지된 함수명을 매크로의 이름으로 사용하는 경우에도 동일한 문제가 발생할 수 있습니다. 금지된 함수명을 구현하기 위해 마찬가지로 보안에 취약한 표준 함수를 사용할 위험이 있기 때문입니다.\n매크로를 금지된 이름으로 선언하지 않도록 합니다.",
  "rule.saqt.q.ccpp.206.example.0.dangerous": "라인 1: vsnprintf()와 vsprintf() 함수는 매크로 이름으로 사용하지 않도록 금지된 함수입니다.",
  "rule.saqt.q.ccpp.206.example.0.safe": "라인 1: 시스템이 지원하지 않는 함수를 사용하지 않도록 ifdef 와 endif 사이에 재정의해야 하며, 금지된 함수 이름을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.206.name": "안전한 함수 교체",
  "rule.saqt.q.ccpp.208.description": "괄호로 묶이지 않은 여러 개의 구문을 포함하는 매크로 체커는 여러 개의 구문으로 작성된 매크로를 do-while 문으로 감싸지 않는 코드를 검출합니다.\n중괄호로 묶여지지 않은 매크로를 사용하는 경우 프로그래머의 의도와 다르게 동작할 수 있습니다. 예를 들어, 중괄호가 없는 if 구문에서 매크로를 사용하는 경우 매크로 자체에 중괄호가 없기 때문에 매크로의 일부만 실행될 수 있습니다.\n여러 개의 구문으로 작성된 매크로를 do-while 문으로 감싸주어야 합니다.",
  "rule.saqt.q.ccpp.208.example.0.dangerous": "라인 6: CAL() 매크로가 두 개의 라인으로 구성되었습니다. 하지만 if 문에서 실행되는 구문은 라인 2(X=X+Y) 뿐입니다.",
  "rule.saqt.q.ccpp.208.example.0.safe": "라인 1: 여러 구문으로 구성된 매크로는 do-while 구문으로 감싸야 합니다.",
  "rule.saqt.q.ccpp.208.name": "괄호로 묶이지 않은 여러 개의 구문을 포함하는 매크로",
  "rule.saqt.q.ccpp.209.description": "중복된 매크로 체커는 매크로를 중복으로 선언한 코드를 검출합니다.\n매크로를 중복으로 선언하지 않게 주의해야 합니다.",
  "rule.saqt.q.ccpp.209.example.0.dangerous": "라인 1: 매크로 SIZE를 선언했습니다.\n라인 4: 동일한 매크로를 중복 선언했습니다.",
  "rule.saqt.q.ccpp.209.example.0.safe": "라인 1: 매크로는 한 번만 선언하도록 합니다.",
  "rule.saqt.q.ccpp.209.name": "중복된 매크로",
  "rule.saqt.q.ccpp.209.option.exclude_macro.description": "분석에서 제외할 매크로 이름을 입력합니다.",
  "rule.saqt.q.ccpp.209.option.exclude_macro.name": "분석 제외 매크로",
  "rule.saqt.q.ccpp.211.description": "올바르지 않은 바이트 순서 체커는 recv()로 받는 데이터를 ntohl()로 변환하여 받지 않거나, send()로 보낼 데이터를 htonl()로 변환하지 않을 경우를 이슈로 검출합니다.\n서로 다른 시스템 구조에서는 다른 바이트 순서(little endian 또는 big endian)를 사용합니다. 데이터 전송을 서로 다른 시스템 사이에 할 경우 바이트 순서를 고려해야 합니다. htonl(),  htons(), ntohl(), ntohs() 들은 네트워크 바이트 순서와 호스트 바이트 순서를 맞춰줍니다. 바이트 순서를 맞추지 않았을 경우 부정확한 결과를 초래할 수 있습니다.\n올바른 바이트 순서를 사용하여 데이터를 전송할 수 있도록 정렬 함수들을 적절히 사용하도록 합니다.",
  "rule.saqt.q.ccpp.211.example.0.dangerous": "라인 3: recv()로 데이터 num을 받았습니다.\n라인 7: ntohl()를 사용하여 데이터 num의 바이트 순서를 변경하지 않고 사용했습니다.",
  "rule.saqt.q.ccpp.211.example.0.safe": "라인 6: recv()로 받은 데이터 num을 ntohl()로 변환하여 사용합니다.",
  "rule.saqt.q.ccpp.211.name": "일치하지 않는 바이트 순서",
  "rule.saqt.q.ccpp.212.description": "이미 잠금된 자원 잠금 체커는 이미 잠궈진 리소스에 다시 잠금을 거는 코드를 검출합니다.\n여러 접속자가 동시에 중요한 리소스를 사용하는 것을 방지하기 위해 잠금을 사용합니다. 하지만 중첩적으로 잠금을 수행하는 경우 같은 수의 잠금을 해제해야 합니다. 잠금을 해제하지 않은 경우 사용자가 중요한 리소스를 사용하지 못하게 되고 사용하기 위해 계속 대기하게 되므로 대기 풀이 가득차서 프로그램의 성능이 감소하게 됩니다. 또한 의도하지 않은 동작이 발생할 수 있습니다.\n리소스의 잠금을 걸기 전에 이미 잠궈진 리소스가 아닌지 확인해야 합니다.",
  "rule.saqt.q.ccpp.212.example.0.dangerous": "라인 8: 뮤텍스에 잠금을 걸었습니다.\n라인 11: 잠금이 해제되지 않은 뮤텍스에 다시 잠금을 걸어 문제가 발생했습니다.",
  "rule.saqt.q.ccpp.212.example.0.safe": "라인 10: 뮤텍스에 잠금을 걸기 전에 항상 잠금 해제를 먼저 실행합니다.",
  "rule.saqt.q.ccpp.212.name": "이미 잠금된 자원 잠금",
  "rule.saqt.q.ccpp.213.description": "이미 잠금 해제된 자원 잠금 해제 체커는 이미 잠금이 해제된 리소스의 잠금을 다시 해제하려고 시도하는 코드를 검출합니다.\n여러 접속자가 동시에 중요한 리소스를 사용하는 것을 방지하기 위해 잠금을 사용합니다. 하지만 중첩적으로 잠금 해제를 수행하는 경우 이미 사용 가능한 리소스를 다시 검사하는 오버헤드가 발생합니다. 그 결과, 프로그램 충돌 또는 예측할 수 없는 동작을 일으킬 수 있습니다.\n리소스가 이미 잠금 해제되어 있다면 다시 잠금 해제하지 않도록 주의합니다.",
  "rule.saqt.q.ccpp.213.example.0.dangerous": "라인 9: if 구문에서 뮤텍스의 잠금을 해제하는 pthread_mutex_unlock()을 사용했습니다.\n라인 11: 다시 잠금을 해제하여 이중 잠금 해제가 발생했습니다.",
  "rule.saqt.q.ccpp.213.example.0.safe": "라인 10: 뮤텍스에 대하여 두 번 이상 잠금을 해제하지 않도록 수정합니다.",
  "rule.saqt.q.ccpp.213.name": "이미 잠금 해제된 자원 잠금 해제",
  "rule.saqt.q.ccpp.219.description": "이미 잠금된 자원 trylock 체커는 pthread_mutex_trylock() 함수를 사용하여 이미 잠금을 수행한 리소스를 다시 호출하는 코드를 검출합니다.\n여러 접속자가 동시에 중요한 리소스를 사용하는 것을 방지하기 위해 잠금을 사용합니다. 하지만 이미 잠궈진 리소스에 잠금 해제를 수행하지 않고 trylock을 수행하는 경우 trylock이 실패하게 됩니다.\npthread_mutex_trylock() 함수로 리소스의 잠금을 걸기 전에 pthread_mutex_unlock() 함수로 리소스의 잠금을 해지해야 합니다.",
  "rule.saqt.q.ccpp.219.example.0.dangerous": "라인 8: 뮤텍스에 대해 잠금을 수행했습니다.\n라인 11: 뮤텍스에 다시 잠금을 걸려고 하지만 이미 잠금 상태이기 때문에 pthread_mutex_trylock() 함수는 EBUSY를 반환합니다.",
  "rule.saqt.q.ccpp.219.example.0.safe": "라인 13: 뮤텍스에 잠금을 걸 수 있는 상태에서 trylock을 수행합니다. pthread_mutex_trylock() 함수가 EBUSY를 반환하지 않는 경우에 리소스를 잠글 수 있도록 수정합니다.",
  "rule.saqt.q.ccpp.219.name": "이미 잠금된 자원 trylock",
  "rule.saqt.q.ccpp.220.description": "부적절한 파일 지시자의 값 체커는 파일/소켓 관련 함수의 인자에 음수를 전달하는 코드를 검출합니다.\n검출 대상 함수는 다음과 같습니다. __fxstat(), _dup(), _dup2(), _fdopen(), _fstat(), _fstat32(), _fstat32i64(), _fstat64(), _fstat64i32(), _fstati64(), _lseek(), _lseeki64(), _read(), _wfdopen(), _write(), accept(), bind(), close(), closesocket(), connect(), dup(), dup2(), fcntl(), fdopen(), fpathconf(), fstat(), fstatfs(), fsync(), ftruncate(), ioctl(), ioctlsocket(), listen(), lseek(), read(), readv(), recv(), recvfrom(), recvmsg(), send(), sendmsg(), unlinkat(), write(), writev()\n파일/소켓 관련 함수의 인자에 음수의 파일 디스크립터(File Descriptor)를 사용하면 프로그램의 동작을 예측할 수 없습니다.\n파일/소켓 관련 함수의 인자는 음수가 아니여야 합니다.",
  "rule.saqt.q.ccpp.220.example.0.dangerous": "라인 4: open() 함수 호출에 실패하는 경우 -1을 반환할 수 있습니다.\n라인 5: write() 함수 호출에서 사용되는 인자 fd가 음수인 경우 프로그램 오류가 발생하게 됩니다.",
  "rule.saqt.q.ccpp.220.example.0.safe": "라인 3: open() 함수의 반환값이 음수가 될 수 있는지 검사하고 사용하도록 합니다.",
  "rule.saqt.q.ccpp.220.name": "부적절한 파일 지시자의 값",
  "rule.saqt.q.ccpp.221.description": "너무 큰 스택 크기 체커는 지정된 크기를 초과하는 버퍼를 스택에 할당하는 코드를 검출합니다.\n일정량의 크기를 초과하는 버퍼를 사용하면 스택 오버플로우가 발생할 수 있습니다.\n65535 바이트를 넘는 버퍼를 스택에 할당하지 않도록 합니다.",
  "rule.saqt.q.ccpp.221.example.0.dangerous": "라인 2: 배열의 크기가 65535 바이트를 초과하므로 해당 오류가 검출되었습니다.",
  "rule.saqt.q.ccpp.221.example.0.safe": "라인 2: 특정 크기를 초과하지 않도록 배열의 크기를 조정합니다.",
  "rule.saqt.q.ccpp.221.name": "너무 큰 스택 크기",
  "rule.saqt.q.ccpp.221.option.max_stack_variable_size.description": "스택 변수의 최대 크기를 적습니다.",
  "rule.saqt.q.ccpp.221.option.max_stack_variable_size.name": "스택 변수의 최대 크기",
  "rule.saqt.q.ccpp.222.description": "효과가 없는 함수 호출 체커는 함수를 호출했으나 프로그램 흐름에 영향을 주지 않는 코드를 검출합니다.\n옵션에서 예외 사항에 포함되는 구조체 이름을 지정할 수 있습니다.\n예를 들어 memset()과 같은 함수에서 길이를 담당하는 인자에 길이가 아닌 다른 값이 입력되면 함수가 원래 기능을 수행하지 못하게 됩니다. 따라서 함수의 정의에 맞는 인자를 사용해야 합니다.\n함수를 호출할 때 정확한 인자의 값을 입력해야 합니다.",
  "rule.saqt.q.ccpp.222.example.0.dangerous": "라인 3: memset() 함수의 인자에서 길이를 결정하는 인자를 '\\0'으로 지정했습니다. 길이를 나타내는 값 '10'과 바뀌었기 때문에 오류로 검출했습니다.",
  "rule.saqt.q.ccpp.222.example.0.safe": "라인 3: 길이를 결정하는 인자값을 정확하게 입력해야 합니다.",
  "rule.saqt.q.ccpp.222.name": "효과가 없는 함수 호출",
  "rule.saqt.q.ccpp.222.option.excluded_structure.description": "예외사항에 포함되는 구조체 이름 목록을 적습니다.",
  "rule.saqt.q.ccpp.222.option.excluded_structure.name": "예외사항에 포함되는 구조체 이름 목록",
  "rule.saqt.q.ccpp.2280.description": "지역 변수 주소를 범위 밖 변수에 대입 체커는 함수 범위를 벗어나는 변수에 지역 변수의 주소를 대입하는 수식을 검출합니다.\n함수 범위를 벗어나는 변수란 전역 변수 등을 의미합니다.\n지역 변수는 함수가 종료될 때 더 이상 유효하지 않습니다. 함수 범위를 벗어나는 변수가 지역 변수를 가지고 있을 경우, 함수가 끝난 경우에도 이 주소를 사용할 가능성이 있습니다. 이와 같은 경우 프로그램이 정상적으로 동작하지 않을 수 있습니다.\n지역 변수를 함수 범위를 벗어나는 변수에 대입하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2280.example.0.dangerous": "라인 1: 포인터 전역 변수를 선언했습니다.\n라인 5: 포인터 전역 변수에 지역 변수의 주소 값을 할당했습니다.",
  "rule.saqt.q.ccpp.2280.example.0.safe": "라인 2: 포인터 지역 변수를 선언합니다.\n라인 4: 포인터 지역 변수에 지역 변수의 주소 값을 할당합니다.",
  "rule.saqt.q.ccpp.2280.name": "지역 변수 주소를 범위 밖 변수에 대입",
  "rule.saqt.q.ccpp.2353.description": "const char 포인터 외의 자료형에 문자열 할당 체커는 문자열을 할당 받은 객체의 타입이 const char 포인터가 아닌 경우를 검출합니다.\n문자열 리터럴을 변경하려고 하면 정의되지 않는 동작이 발생합니다. 예를 들어, 일부 구현에서는 읽기 전용 메모리에 문자열 리터럴을 저장할 수 있습니다. 이 경우에 문자열 리터럴을 수정하려는 시도는 예외 또는 충돌을 발생시킬 수 있습니다.\nconst char 포인터 객체에만 문자열을 할당합니다.",
  "rule.saqt.q.ccpp.2353.example.0.dangerous": "라인 3: 문자열을 char 포인터 변수에 초기화합니다.\n라인 6: 문자열을 char 포인터 변수에 할당합니다.\n라인 18: 문자열 인자로 매개 변수가 char 포인터인 함수를 호출했습니다.\n라인 24: 함수의 반환 타입이 char 포인터이며, 반환 값으로 문자열을 사용했습니다.",
  "rule.saqt.q.ccpp.2353.example.0.safe": "라인 3: 문자열을 const char 포인터 변수에 초기화합니다.\n라인 6: 문자열을 const char 포인터 변수에 할당합니다.\n라인 18: 문자열 인자로 매개 변수가 const char 포인터인 함수를 호출합니다.\n라인 24: 함수의 반환 타입이 const char 포인터이며, 반환 값으로 문자열을 사용합니다.",
  "rule.saqt.q.ccpp.2353.name": "const char 포인터 외의 자료형에 문자열 할당",
  "rule.saqt.q.ccpp.2382.description": "조건 혹은 증감절에 의해 루프 제어 변수값 변동 체커는 루프 제어 변수의 값이 조건절 혹은 증감절에서 변환된 경우를 검출합니다.\n이때 루프 제어 변수란 루프 카운터를 제외하고 for 문의 초기화 절에서 초기화되지 않거나 증감절에서 변화하지 않는 조건절 변수를 의미합니다.\n루프 제어 변수가 증감절이나 조건절에서 변동될 경우 코드의 가독성이 떨어질 뿐만아니라 코드 결과를 예측하기 어려워 집니다.\n루프 제어 변수가 증감절이나 조건절에서 변동되지 않도록 주의합니다.",
  "rule.saqt.q.ccpp.2382.example.0.dangerous": "라인 14: 루프 제어 변수인 bool_a 변수의 값이 변할 수 있습니다.",
  "rule.saqt.q.ccpp.2382.example.0.safe": "라인 14: 조건 혹은 증감절에 의해 루프 제어 변수의 값이 변경되지 않도록 합니다.",
  "rule.saqt.q.ccpp.2382.name": "조건 혹은 증감절에 의해 루프 제어 변수값 변동",
  "rule.saqt.q.ccpp.2383.description": "Boolean 타입이 아닌 루프 제어 변수 체커는 루프 제어 변수가 반복문의 본문에서 값이 변할 경우 그 타입이 Boolean 타입이 아닌 경우를 검출합니다.\n이때 루프 제어 변수란 루프 카운터를 제외하고 for 문의 초기화 절에서 초기화되지 않거나 증감절에서 변화하지 않는 조건절 변수를 의미합니다.\n루프 제어 변수는 일반적으로 반복문을 조기에 종료하는데 사용합니다. 따라서 이러한 루프 제어 변수가 Boolean 타입을 가지고 있으면 좀 더 명확하게 그 의미를 이해할 수 있습니다.\n루프 제어 변수는 Boolean 타입을 가지도록 선언합니다.",
  "rule.saqt.q.ccpp.2383.example.0.dangerous": "라인 10: 반복문 본문에 포함된 u8a 루프 제어 변수에 값을 대입했습니다. 이 변수는 Boolean 타입이 아닙니다.",
  "rule.saqt.q.ccpp.2383.example.0.safe": "라인 10: 반복문 본문에 포함된 u8a 루프 제어 변수를 Boolean 타입으로 변경하여 값을 대입합니다.",
  "rule.saqt.q.ccpp.2383.name": "Boolean 타입이 아닌 루프 제어 변수",
  "rule.saqt.q.ccpp.2384.description": "비정형적인 for 구문에서 continue 구문 사용 체커는 일반적인 방식으로 사용하지 않은 for 구문 내부에서 continue 구문을 사용하여 반복문을 탈출하는 경우를 검출합니다.\n여기서 비정형적인 for 구문이란 다음과 같습니다. 루프 카운터가 여러 개이거나 정수형이 아닙니다. 루프 카운터 외의 다른 루프 제어 변수가 Boolean 타입을 가지지 않습니다.\n일반적이지 않은 for 구문에서 continue를 잘못 사용할 경우 의도하지 않은 제어 흐름이 발생할 수 있습니다. 특히 이러한 경우 중 무한 루프가 발생하게 될 경우 프로세스가 멈춰버릴 수 있습니다.\n비정형적인 for 구문에서는 continue 구문을 사용하지 않습니다. continue 구문 없이 개발자가 의도한 제어 흐름을 가지도록 소스 코드를 수정할 필요가 있습니다.",
  "rule.saqt.q.ccpp.2384.example.0.dangerous": "라인 5: 비정형적인 for 구문에서 continue 구문을 사용했습니다.",
  "rule.saqt.q.ccpp.2384.example.0.safe": "라인 5: 비정형적인 for 구문에서 continue 구문을 사용하지 않습니다.",
  "rule.saqt.q.ccpp.2384.name": "비정형적인 for 구문에서 continue 구문 사용",
  "rule.saqt.q.ccpp.2385.description": "정적 스토리지 클래스를 가지지 않은 내부 링크 함수 체커는 내부 링크를 가지는 함수를 재선언할 때 정적 스토리지 클래스를 지정하지 않은 정의를 검출합니다.\n함수를 정적 스토리지 클래스를 지정하여 선언했으면 이미 내부 링크를 가집니다. 하지만 재선언, 즉, 정의하는 과정에서 이러한 정적 스토리지 클래스를 작성하지 않으면 개발자에게 혼동을 줄 수 있습니다.\n내부 링크를 가지는 함수 선언은 재선언 시에도 정적 스토리지 클래스를 지정하도록 합니다.",
  "rule.saqt.q.ccpp.2385.example.0.dangerous": "라인 1: 함수를 정적 스토리지 클래스를 가지도록 선언했습니다.\n라인 5: 함수 재선언에서 정적 스토리지 클래스 지정이 빠져있습니다.",
  "rule.saqt.q.ccpp.2385.example.0.safe": "라인 5: 함수 재선언 시 정적 스토리지 클래스를 지정합니다.",
  "rule.saqt.q.ccpp.2385.name": "정적 스토리지 클래스를 가지지 않은 내부 링크 함수",
  "rule.saqt.q.ccpp.2386.description": "명시적인 예외 처리에 catch 문 미처리 체커는 코드에서 명시적으로 던져지는 각 예외가 해당 지점으로 이어질 수있는 모든 호출 경로에서 호환 가능한 유형의 핸들러를 가지지 않은 경우를 검출합니다.\n프로그램이 처리되지 않은 예외를 throw하면 구현 정의 방식으로 종료됩니다. 특히, 호출 스택이 종료 전에 unwind되는지 여부는 구현에 따라 정의되므로 모든 자동 객체의 소멸자가 호출되거나 호출되지 않을 수 있습니다.\n명시적으로 작성된 예외 처리는 반드시 catch를 통해서 처리해야 합니다.",
  "rule.saqt.q.ccpp.2386.example.0.dangerous": "라인 11: MISRA_15_3_4___A()를 던집니다.\n라인 15: MISRA_15_3_4___B()를 던집니다. catch에서 처리하지 못하기 때문에 문제가 발생할 수 있습니다.\n라인 18: catch를 통해MISRA_15_3_4___A() 처리합니다.",
  "rule.saqt.q.ccpp.2386.example.0.safe": "라인 22: MISRA_15_3_4___B()를 처리할 수 있는 catch 문을 추가합니다.",
  "rule.saqt.q.ccpp.2386.name": "명시적인 예외 처리에 catch 문 미처리",
  "rule.saqt.q.ccpp.2387.description": "non-const 핸들러를 클래스 데이터로 반환 금지 체커는 멤버 함수가 non-const 핸들러를 클래스 데이터로 반환한 경우를 검출합니다.\n멤버 함수를 사용하여 클래스 인터페이스를 구현함으로써 구현은 객체 상태를 수정하는 방법을 더 많이 제어 할 수 있으며 클라이언트에 영향을 주지 않고 클래스를 유지 관리 할 수 있습니다. 클래스 데이터에 대한 핸들러를 반환하면 클라이언트는 인터페이스를 사용하지 않고 객체의 상태를 수정할 수 있습니다.\n멤버 함수에서 클래스 데이터를 반환하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2387.example.0.dangerous": "라인 6: 클래스의 멤버 함수에서 멤버 변수 a를 반환하고 있습니다.\n라인 10: 클래스에 멤버 변수로 a가 선언되었습니다.",
  "rule.saqt.q.ccpp.2387.example.0.safe": "라인 6: 클래스의 멤버 함수에서 멤버 변수를 반한하는 코드를 제거합니다.",
  "rule.saqt.q.ccpp.2387.name": "non-const 핸들러를 클래스 데이터로 반환 금지",
  "rule.saqt.q.ccpp.2388.description": "재선언 시 토큰 불일치 체커는 객체, 함수 반환 타입 또는 함수 매개 변수에 사용되는 타입이 모든 선언 및 재선언에서 동일한 토큰이 아닌 경우를 검출합니다.\n재선언에 호환 유형이 있지만 동일한 토큰이 아닌 타입이 있는 경우에 재선언이 어떤 선언을 가리키는지 명확하지 않을 수 있습니다.\n재선언 시 선언에 명시된 토큰을 사용해야 합니다.",
  "rule.saqt.q.ccpp.2388.example.0.dangerous": "라인 2: INT 자료형으로 변수를 선언했습니다.\n라인 3: int 자료형으로 변수를 선언했습니다.\n라인 9: 함수의 매개 변수를 signed int 자료형으로 선언했습니다.\n라인 10: 함수의 매개 변수를 int 자료형으로 선언했습니다.",
  "rule.saqt.q.ccpp.2388.example.0.safe": "라인 3: 먼저 선언된 변수와 같은 자료형으로 재선언합니다.\n라인 9: 먼저 선언된 함수의 매개변수와 같은 자료형으로 재선언합니다.",
  "rule.saqt.q.ccpp.2388.name": "재선언 시 토큰 불일치",
  "rule.saqt.q.ccpp.2390.description": "unsigned int 자료형에 접미사 U 사용 체커는 unsigned int 타입의 정수형 리터럴에는 대문자로 접미사 `U`로 명시하지 않은 경우를 이슈로 검출합니다.\nunsigned int 정수형 리터럴에 접미사 U를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.2390.example.0.dangerous": "라인 19: unsigned int 타입의 16진수 0x8000을 함수호출의 인자 값으로 사용하고 있습니다.\n라인 20: unsigned int 타입의 16진수 0x8000을 식에서 사용하고 있습니다.",
  "rule.saqt.q.ccpp.2390.example.0.safe": "라인 19: 0x8000 뒤에 접미사 U를 추가합니다.\n라인 20: 0x8000 뒤에 접미사 U를 추가합니다.",
  "rule.saqt.q.ccpp.2390.name": "unsigned int 자료형에 접미사 U 사용",
  "rule.saqt.q.ccpp.2392.description": "case문 종료 누락 체커는 switch-case 문에서 내용이 있는 case문이 throw 또는 break 문으로 종료되지 않은 경우를 검출합니다.\nswitch-case문의 마지막 case문과 default문은 항상 break 혹은 throw로 종료되어야 합니다.",
  "rule.saqt.q.ccpp.2392.example.0.dangerous": "라인 18: case 문에 break 문이 없습니다.\n라인 21: default 문에 break 문이 없습니다.",
  "rule.saqt.q.ccpp.2392.example.0.safe": "라인 20: case 문에 break 문을 추가합니다.\n라인 22: case 문에 break 문을 추가합니다.",
  "rule.saqt.q.ccpp.2392.name": "case문 종료 누락",
  "rule.saqt.q.ccpp.249.description": "무한 반복 체커는 반복 구문에서 잠재적으로 무한 반복의 가능성이 있는 코드를 검출합니다.\n무한 반복의 가능성을 판단하는 기준은 다음과 같습니다. - 의도적으로 무한 루프를 사용하고 루프를 탈출하기 위한 종료 구문(예: break, return)이 없는 경우입니다. 이 경우에 옵션으로 알람을 울리지 않도록 조정할 수 있습니다. - for 문의 조건부가 비어 있는 경우입니다. for 문에서 루프를 탈출하기 위해 사용되는 코드를 조건부에 작성하는 것이 좋습니다. 이 경우에 옵션에서 알람이 울리지 않도록 조정할 수 있습니다. - for 문의 루프 카운터가 블록 내에서 변경되는 경우입니다. for 문의 루프 카운터는 증감부에서만 변경되는 것이 좋습니다. 이 경우에 옵션에서 알람이 울리지 않도록 조정할 수 있습니다. - 정수형과 같은 기본 타입 루프 카운터를 동등 비교(==, !=)하고, 해당 값이 순차적으로 증감하지 않는 경우입니다. - 정수형과 같은 기본 타입 루프 카운터의 경계값과 증감 방향이 서로 다른 경우입니다. - 루프 카운터의 값이 반복문 안에서 바뀌지 않는 경우입니다.\n무한 반복을 수행하는 경우 프로그램은 종료되지 않고 지속적으로 리소스를 소모합니다. 메모리 할당과 같은 작업을 무한하게 수행하는 경우 프로그램이 강제적으로 종료되고 시스템에 악영향을 미치게 됩니다.\n무한 반복의 가능성이 있는 코드를 작성하지 않도록 합니다.",
  "rule.saqt.q.ccpp.249.example.0.dangerous": "라인 1: i를 10과 동등 비교(!=)하고 있으며 i의 값은 순차적으로 증가하지 않습니다.\n라인 4: ptr의 값이 반복문 안에서 바뀌지 않습니다.\n라인 7: i 값의 최소 경계값이 제한되지만, 값은 증가합니다. 따라서 루프가 한 번도 돌지 않거나 무한히 돌게 됩니다.",
  "rule.saqt.q.ccpp.249.example.0.safe": "라인 1: i를 대소 비교(<, <=, >, >=)하도록 합니다.\n라인 4: ptr의 값을 반복문 안에서 수정하도록 수정합니다.\n라인 7: 경계값과 값의 증감 방향을 정상적으로 수정합니다.",
  "rule.saqt.q.ccpp.249.name": "무한 반복",
  "rule.saqt.q.ccpp.249.option.ignore_assigned_in_for_body.description": "옵션을 사용하는 경우, for 문의 본체 내에서 루프 카운터가 바뀔 때 발생하는 이슈를 무시합니다.",
  "rule.saqt.q.ccpp.249.option.ignore_assigned_in_for_body.name": "for문의 본채 내에서 루프 카운터가 바뀌는 이슈 무시",
  "rule.saqt.q.ccpp.249.option.ignore_empty_condition_in_for.description": "옵션을 사용하는 경우, for 문의 조건부가 비어 있는 이슈를 무시합니다.",
  "rule.saqt.q.ccpp.249.option.ignore_empty_condition_in_for.name": "for문의 조건부가 비어 있는 이슈 무시",
  "rule.saqt.q.ccpp.249.option.ignore_while_true_idiom.description": "옵션을 사용하는 경우, for(;;)나 while(1)와 같은 의도적인 무한 루프에 대한 이슈를 무시합니다.",
  "rule.saqt.q.ccpp.249.option.ignore_while_true_idiom.name": "의도적인 무한루프에 대한 이슈 무시",
  "rule.saqt.q.ccpp.250.description": "소켓의 잘못된 사용 체커는 소켓 관련 함수를 잘못 사용하는 코드를 검출합니다.\n소켓 관련 함수는 호출될 수 있는 적절한 상태가 존재하며, \n소켓 관련 함수에 부적절한 상태가 사용되는 경우 의도하지 않은 결과가 발생할 수 있습니다.\n소켓 관련 함수를 순서에 맞게 사용해야 합니다.",
  "rule.saqt.q.ccpp.250.example.0.dangerous": "라인 2: 소켓 파일 디스크립터인 'server_sockfd'를 0으로 초기화했습니다.\n라인 9: 'server_sockfd'를 socket() 함수를 통해 초기화하지 않고 사용하였으므로 오류로 검출했습니다.",
  "rule.saqt.q.ccpp.250.example.0.safe": "라인 5: 소켓 파일 디스크립터를 사용하여 바인딩하기 위해서는 socket() 함수로 초기화해야 합니다.",
  "rule.saqt.q.ccpp.250.name": "소켓의 잘못된 사용",
  "rule.saqt.q.ccpp.257.description": "금지된 함수 사용 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.\n호출을 금지할 함수는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 함수를 사용하지 않도록 금지해야 하는 경우가 있습니다. 예를 들어, 프로젝트 전체의 일관성을 유지하거나, 다른 방법을 통해 해당 함수를 더 이상 사용하지 않는 경우, 혹은 해당 함수에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 함수를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.saqt.q.ccpp.257.example.0.dangerous": "라인 2: 여기서는 forbidden() 함수가 금지되었다고 가정합니다.",
  "rule.saqt.q.ccpp.257.example.0.safe": "라인 2: 금지된 함수 대신 다른 함수를 사용합니다.",
  "rule.saqt.q.ccpp.257.name": "금지된 함수 사용",
  "rule.saqt.q.ccpp.257.option.forbidden_function.description": "금지할 함수의 이름을 작성합니다.<br />예시) forbidden",
  "rule.saqt.q.ccpp.257.option.forbidden_function.name": "금지할 함수 이름",
  "rule.saqt.q.ccpp.262.description": "반환 값 대신 함수 포인터 비교 체커는 함수 호출을 사용해야 하는 위치에 함수 포인터를 사용하는 코드를 검출합니다.\n함수 이름 뒤에 인자 목록을 작성하지 않으면 해당 이름은 함수 포인터가 됩니다. 함수 포인터와 함수 호출을 혼동하여 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.262.example.0.dangerous": "라인 8: 함수의 반환값을 비교하지 않고 함수 포인터의 값을 비교했습니다.",
  "rule.saqt.q.ccpp.262.example.0.safe": "라인 8: 함수의 반환값을 비교하도록 수정합니다.",
  "rule.saqt.q.ccpp.262.name": "반환 값 대신 함수 포인터 비교",
  "rule.saqt.q.ccpp.2738.description": "포인터 연산을 위한 포인터 크기 조정 금지 체커는 포인터 연산을 위해서 사용자가 임의로 포인터 크기를 조정한 경우를 검출합니다.\n포인터 연산을 사용할 때, 더해지거나 빠지는 값이 알아서 참조하는 객체의 타입에 맞게 크기가 조정됩니다. 포인터 연산을 위해서 사용자가 임의로 크기를 조정하는 것은 크기 조정이 중복으로 발생하기 때문에 유효하지 않습니다.\n포인터 크기를 임의로 조절하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2738.example.0.dangerous": "라인 3: buf 포인터에 sizeof 연산자를 사용하여 포인터 연산을 수행했습니다.",
  "rule.saqt.q.ccpp.2738.example.0.safe": "라인 3: 포인터 연산에 크기가 조정되지 않은 값을 사용합니다.",
  "rule.saqt.q.ccpp.2738.name": "포인터 연산을 위한 포인터 크기 조정 금지",
  "rule.saqt.q.ccpp.274.description": "헤더 파일 내 함수 정의 체커는 헤더 파일에서 함수를 정의한 경우를 검출합니다.\n헤더 파일에서 함수를 정의하지 않습니다.",
  "rule.saqt.q.ccpp.274.example.0.dangerous": "라인 2: 헤더 파일 내에 함수를 정의하여 문제가 발생했습니다.",
  "rule.saqt.q.ccpp.274.example.0.safe": "라인 5: 헤더 파일에 함수를 선언하고, 소스파일에 정의해야 합니다.",
  "rule.saqt.q.ccpp.274.name": "헤더 파일 내 함수 정의",
  "rule.saqt.q.ccpp.2763.description": "tss_create() 함수 사용 후 메모리 해제 확인 체커는 스레드 한정 저장소를 할당 한 후 해제 하지 않은 경우를 검출합니다.\n스레드 한정 저장소를 할당한 후 해제하지 않으면 메모리 누수가 발생할 수 있습니다.\ntss_create() 함수로 스레드 한정 저장소를 할당한 뒤 해제해야 합니다.",
  "rule.saqt.q.ccpp.2763.example.0.dangerous": "라인 11: 메모리가 해제되지 않은 상태에서 반환했습니다.\n라인 21: get_data() 함수를 호출했습니다. 메모리 누수가 발생할 가능성이 있습니다.\n라인 41: add_data() 함수를 통해 get_data() 함수를 호출했습니다. 메모리 누수가 발생할 가능성이 있습니다.",
  "rule.saqt.q.ccpp.2763.example.0.safe": "라인 10: 소멸자 함수를 정의합니다. 함수 내에서 메모리 해제가 됩니다.\n라인 18: tss_create() 함수의 두 번째 인자에서 소멸자를 호출합니다. 할당된 메모리가 해제됩니다.",
  "rule.saqt.q.ccpp.2763.name": "tss_create() 함수 사용 후 메모리 해제 확인",
  "rule.saqt.q.ccpp.2766.description": "표현식에서 원자 변수 두 번 참조 체커는 표현식에서 atomic 변수를 두 번 참조한 경우를 검출합니다.\n하나의 표현식에서 원자 변수가 두 번 나타나는 경우 두 개의 원자 읽기 또는 원자 읽기 및 원자 쓰기가 필요합니다. 다른 스레드가 두 작업 사이의 원자 변수를 수정할 수 있으므로 이러한 한 쌍의 원자 연산은 스레드로부터 안전하지 않습니다. 결과적으로 원자 변수는 동일한 표현식에서 두 번 참조되지 않아야 합니다.\n표현식에서 원자 변수를 두 번 참조하지 않도록 주의합니다.",
  "rule.saqt.q.ccpp.2766.example.0.dangerous": "라인 12: atomic 변수를 여러 번 참조했습니다.",
  "rule.saqt.q.ccpp.2766.example.0.safe": "라인 15: atomic 변수에 올바른 값이 저장되도록 보장하기 위해 atomic_compare_exchange_weak()를 사용합니다.",
  "rule.saqt.q.ccpp.2766.name": "표현식에서 원자 변수 두 번 참조",
  "rule.saqt.q.ccpp.2767.description": "atomic_compare_exchange_weak() 함수 실패 체커는 atomic_compare_exchange_weak() 함수를 반복문에 포함시키지 않은 수식을 검출합니다.\natomic_compare_exchange_weak() 함수는 해당 변수가 정상적으로 값을 들고 있을 때만 변수를 설정합니다. 만약 해당 함수 호출이 반복문 안에 들어가 있지 않은 경우 실패할 위험이 있습니다.\natomic_compare_exchange_weak() 함수를 반복문 내에서 호출하도록 합니다.",
  "rule.saqt.q.ccpp.2767.example.0.dangerous": "라인 19: atomic_compare_exchange_weak() 함수를 반복문 내에서 호출하지 않았습니다.",
  "rule.saqt.q.ccpp.2767.example.0.safe": "라인 27: atomic_compare_exchange_weak() 함수를 반복문 내에서 호출하도록 합니다.",
  "rule.saqt.q.ccpp.2767.name": "atomic_compare_exchange_weak() 함수 실패",
  "rule.saqt.q.ccpp.2768.description": "스토리지 클래스 충돌 체커는 동일한 함수나 객체의 스토리지 클래스가 선언 및 정의에서 서로 일치하지 않고 충돌하는 경우를 검출합니다.\n함수나 객체가 선언 및 정의에서 스토리지 클래스를 다르게 선언하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n함수나 객체의 선언 및 정의에서 스토리지 클래스가 항상 일치하도록 코드를 작성합니다.",
  "rule.saqt.q.ccpp.2768.example.0.dangerous": "라인 8: 라인 2에서 정적 링크로 정의했으나 일반적인 변수로 재정의했습니다. 이전과 스토리지 클래스가 일치하지 않습니다.\n라인 11: 라인 5에서 정적 링크로 선언했으나 일반적인 변수로 정의했습니다. 이전과 스토리지 클래스가 일치하지 않습니다.",
  "rule.saqt.q.ccpp.2768.example.0.safe": "라인 1: 함수나 객체의 스토리지 클래스가 충돌하지 않도록 코드를 잘 작성합니다.",
  "rule.saqt.q.ccpp.2768.name": "스토리지 클래스 충돌",
  "rule.saqt.q.ccpp.2769.description": "사용되지 않은 표준라이브러리 반환 값 체커는 표준라이브러리의 반환 값을 사용하지 않은 수식을 검출합니다.\n표준 라이브러리 함수들이 항상 성공했다고 가정하지 말아야 합니다. 만약 표준 라이브러리 함수가 실패했는데 이것을 성공했다고 가정하고 코드를 작성할 경우 여러 가지 문제가 발생할 수 있습니다.\n표준 라이브러리 반환 값을 항상 점검하고 실패에 대응하도록 합니다.",
  "rule.saqt.q.ccpp.2769.example.0.dangerous": "라인 9: setlocale() 함수의 반환값을 검사하지 않았습니다.",
  "rule.saqt.q.ccpp.2769.example.0.safe": "라인 9: setlocale() 함수의 반환값을 검사하도록 합니다.",
  "rule.saqt.q.ccpp.2769.name": "사용되지 않은 표준라이브러리 반환 값",
  "rule.saqt.q.ccpp.2770.description": "정확하지 않은 가변인자 타입 체커는 va_arg 매크로에 사용하는 인자의 타입이 정확하지 않은 수식을 검출합니다.\nva_arg에 제공한 타입은 정확한 타입을 사용해야 합니다. 예를 들어 va_arg에 제공한 타입이 int보다 작은 크기의 정수형인 경우 정수 승급(Integer Promotion)으로 인해 값이 변경되는 문제가 발생할 수 있습니다.\nva_arg에 제공하는 타입을 정수 승급 문제등이 발생하지 않도록 int 타입을 사용하는 것을 권장합니다.",
  "rule.saqt.q.ccpp.2770.example.0.dangerous": "라인 8: unsigned char 형을 va_arg 매크로에 전달했습니다.",
  "rule.saqt.q.ccpp.2770.example.0.safe": "라인 8: 정수 승급 등의 문제를 방지하기 위해 va_arg 매크로에 전달하는 타입으로 int를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.2770.name": "정확하지 않은 가변인자 타입",
  "rule.saqt.q.ccpp.2771.description": "float 타입에 대해 비교 연산 수행 체커는 float 타입에 대해 메모리 비교 연산을 수행한 경우를 검출합니다.\nfloat 타입을 포함하는 구조체의 동일성 검사를 위해 메모리 검사를 수행하더라도 의도대로 동작하지 않을 가능성이 있습니다. float 타입 오차 등의 이유로 의도하지 않은 결과가 발생합니다.\nfloat 타입에 메모리 비교 연산을 수행하지 않습니다. 대신 memcmp() 등의 함수를 사용합니다.",
  "rule.saqt.q.ccpp.2771.example.0.dangerous": "라인 14: float 타입에 메모리 비교 연산을 수행했습니다.",
  "rule.saqt.q.ccpp.2771.example.0.safe": "라인 14: float 타입에 대해 메모리 비교 연산을 수행하는 대신 memcmp() 등의 함수를 사용합니다.",
  "rule.saqt.q.ccpp.2771.name": "float 타입에 대해 비교 연산 수행",
  "rule.saqt.q.ccpp.2772.description": "부적절한 정수 정밀도 체커는 부적절한 상수 정밀도를 사용한 경우를 검출합니다.\nC의 정수형은 크기와 정밀도로 구성되어 있습니다. 정수의 정밀도를 측정하기 위해 sizeof 등을 사용하면 값이 너무 커져서 잘못된 결과를 얻을 수 있습니다. 따라서 의도하지 않은 동작이 발생할 수 있습니다.\n적절한 정수 정밀도를 사용합니다.",
  "rule.saqt.q.ccpp.2772.example.0.dangerous": "라인 4: 정수 정밀도 측정에 sizeof를 사용했습니다.",
  "rule.saqt.q.ccpp.2772.example.0.safe": "라인 7: 정수 정밀도를 sizeof를 사용하지 않고 측정합니다.",
  "rule.saqt.q.ccpp.2772.name": "부적절한 정수 정밀도",
  "rule.saqt.q.ccpp.2773.description": "다른 스레드의 뮤텍스 조작 체커는 다른 스레드의 뮤텍스를 잠금 해제하거나 파괴한 경우를 검출합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n다른 스레드의 뮤텍스를 잠금 해제하거나 파괴하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2773.example.0.dangerous": "라인 6: 다른 스레드의 뮤텍스를 파괴했습니다.",
  "rule.saqt.q.ccpp.2773.example.0.safe": "라인 8: 다른 스레드가 모두 끝날 때까지 기다린 후에 뮤텍스를 파괴합니다.",
  "rule.saqt.q.ccpp.2773.name": "다른 스레드의 뮤텍스 조작",
  "rule.saqt.q.ccpp.2774.description": "지역 변수를 공유하는 스레드 체커는 POSIX thread 가 지역 변수를 공유한 경우를 검출합니다.\n다른 스레드에서 스레드의 스택 또는 스레드 지역 변수에 접근하면 유효하지 않은 접근이 될 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n스레드 간 데이터를 공유하려면 할당된 메모리를 사용하거나 정적 변수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.2774.example.0.dangerous": "라인 16: 지역 변수 val을 공유했습니다.",
  "rule.saqt.q.ccpp.2774.example.0.safe": "라인 16: 할당된 메모리를 공유합니다.",
  "rule.saqt.q.ccpp.2774.name": "지역 변수를 공유하는 스레드",
  "rule.saqt.q.ccpp.2775.description": "열거형 타입 명명 규칙 위반 체커는 열거형 정의시 대문자와 _ 외에 다른 문자를 사용한 경우를 검출합니다.\n열거형 정의시 대문자와 _만 사용하도록 합니다.",
  "rule.saqt.q.ccpp.2775.example.0.dangerous": "라인 2: 열거형 정의 시 소문자를 사용했습니다.",
  "rule.saqt.q.ccpp.2775.example.0.safe": "라인 2: 열거형 정의 시 대문자를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.2775.name": "열거형 타입 명명 규칙 위반",
  "rule.saqt.q.ccpp.2785.description": "연산자 사이 공백 누락 체커는 연산자 사이에 공백이 누락된 수식을 검출합니다.\n연산자 사이에 공백을 넣도록 합니다.",
  "rule.saqt.q.ccpp.2785.example.0.dangerous": "라인 2: + 연산자와 양측 피연산자 사이에 공백이 없습니다.\n라인 5: + 연산자와 좌측 피연산자 사이에 공백이 없습니다.\n라인 6: + 연산자와 우측 피연산자 사이에 공백이 없습니다.\n라인 7: + 연산자와 일부 피연산자들 사이에 공백이 없습니다.",
  "rule.saqt.q.ccpp.2785.example.0.safe": "라인 1: 모든 연산자와 피연산자 사이에 공백을 넣도록 합니다.",
  "rule.saqt.q.ccpp.2785.name": "연산자 사이 공백 누락",
  "rule.saqt.q.ccpp.2786.description": "switch 구문에서 constexpr 사용 체커는 switch 구문 및 case 구문에서 constexpr을 사용한 수식을 검출합니다.\nconstexpr은 수식을 컴파일 타임에 상수값으로 사용할 수 있게 해주는 모던 C++ 표준에 속한 기능입니다. 다만 C++11이나 그 이상을 지원하는 컴파일러가 아닌 경우 이 기능을 정상적으로 파싱하지 못할 가능성이 높습니다. 따라서 이 규칙에서는 switch 구문에서의 constexpr 사용을 금지합니다.\nswitch 구문에서 constexpr을 사용하지 않도록 합니다. 대신 미리 계산해둔 상수값을 사용합니다.",
  "rule.saqt.q.ccpp.2786.example.0.dangerous": "라인 6: switch 구문에서 constexpr을 반환하는 함수를 사용했습니다. 이 함수의 결과는 컴파일 타임에 계산되나 오래된 컴파일러에서는 컴파일 할 수 없습니다.",
  "rule.saqt.q.ccpp.2786.example.0.safe": "라인 6: switch 구문에서 constexpr을 사용하지 않도록 합니다. 대신 미리 계산된 상수값을 사용합니다.",
  "rule.saqt.q.ccpp.2786.name": "switch 구문에서 constexpr 사용",
  "rule.saqt.q.ccpp.2787.description": "수학 함수 범위 오류 체커는 수학 함수에서 도메인 오류 및 영역 예러가 발생한 경우를 검출합니다.\n도메인 오류는 입력값이 수학 함수에서 정의한 도메인을 벗어날 때 발생합니다. 범위 오류는 함수의 실행 후 얻은 수학적 결과값이 극단적으로 커서 지정된 타입으로 표현되지 못하는 경우 발생합니다.\n두 경우 모두, 함수는 어떤 값을 반환하지만 계산의 결과로 얻은 것은 정확한 값이 아닙니다. 이로 인한 문제가 발생할 수 있습니다.\n수학 함수를 사용하기 전 입력값의 범위를 검사하고, 출력값의 범위를 검사합니다.",
  "rule.saqt.q.ccpp.2787.example.0.dangerous": "라인 3: sqrt() 함수의 인자 값이 음수일 수 있습니다.",
  "rule.saqt.q.ccpp.2787.example.0.safe": "라인 4: 범위 검사를 사용하여 도메인 오류를 예방합니다.",
  "rule.saqt.q.ccpp.2787.name": "수학 함수 범위 오류",
  "rule.saqt.q.ccpp.2788.description": "잠겨 있는 뮤텍스 파괴 체커는 잠긴 상태인 뮤텍스를 파괴하는 수식을 검출합니다.\n뮤텍스는 동시에 액세스 되는 공유 데이터를 보호하는데 사용합니다.\n스레드가 해당 뮤텍스를 기다리는 동안 뮤텍스가 삭제되면, 임계 영역과 공유 데이터가 더 이상 보호되지 않습니다.\n뮤텍스가 잠겨있는 동안에는 뮤텍스를 파괴하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2788.example.0.dangerous": "라인 22: 다른 스레드에서 뮤텍스의 잠금이 해제되기 전에 뮤텍스가 파괴될 수 있습니다.",
  "rule.saqt.q.ccpp.2788.example.0.safe": "라인 33: 스레드를 결합한 후 뮤텍스를 파괴하여 경쟁 조건을 제거합니다.",
  "rule.saqt.q.ccpp.2788.name": "잠겨 있는 뮤텍스 파괴",
  "rule.saqt.q.ccpp.2790.description": "저장 기간이 끝난 공유 객체 체커는 스레드간에 공유하는 객체의 저장 기간이 스레드 유지시간보다 짧은 경우를 검출합니다.\n저장 기간이 짧은 객체는 지역 변수등도 포함될 수 있습니다.\n실행 순서에 따라 하위 스레드에서 상위 스레드의 수명이 지난 지역 변수를 접근할 수 있습니다. 이 경우 잘못된 메모리 액세스가 발생할 수 있습니다. 다른 스레드에서 한 스레드의 지역 변수를 접근하는 것은 구현 정의 동작(Implementation Defined Behavior)입니다.\n저장 기간이 짧은 지역 변수 대신 프로그램이 종료되기 전까지 유지되는 정적 객체를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.2790.example.0.dangerous": "라인 9: 지역 변수를 스레드의 인자로 전달했습니다.",
  "rule.saqt.q.ccpp.2790.example.0.safe": "라인 9: 지역 변수 대신 정적 변수를 전달하도록 합니다.",
  "rule.saqt.q.ccpp.2790.name": "저장 기간이 끝난 공유 객체",
  "rule.saqt.q.ccpp.2791.description": "데드락 발생 체커는 사전에 정의된 순서로 뮤텍스를 잠그지 않아 데드락이 발생하는 경우를 검출합니다.\n종종 뮤텍스를 잠그면 여러 스레드가 서로의 잠금을 유지하므로 프로그램이 교착 상태가 됩니다.\n사전에 정의된 순서로 뮤텍스를 잠그지 않으면 교착 상태(Deadlock)이 발생할 수 있습니다. 이와 같은 교착 상태는 여러 스레드가 진행되지 못하도록 만들어 프로그램 실행이 중지됩니다.\n뮤텍스의 잠금 순서를 데드락이 발생하지 않도록 순서를 잘 지켜 사용하도록 합니다.",
  "rule.saqt.q.ccpp.2791.example.0.dangerous": "라인 24: 뮤텍스를 잠갔습니다.\n라인 29: 뮤텍스의 잠금 순서에 의해 데드락에 취약합니다. 상세한 내용은 CERT의 CON35-C 케이스를 참조하도록 합니다.",
  "rule.saqt.q.ccpp.2791.example.0.safe": "라인 33: 미리 정의 된 순서를 설정하여 순환 대기 조건을 제거합니다.",
  "rule.saqt.q.ccpp.2791.name": "데드락 발생",
  "rule.saqt.q.ccpp.2792.description": "잘못된 조건 변수 사용 체커는 조건 변수를 잘못 사용하여 스레드 안정성과 유효성이 떨어지는 경우를 검출합니다.\n여기서 조건 변수를 잘못 사용한 경우는 스레드 블록을 풀기 위한 cnd_signal() 함수 등을 잘못 사용했을 때를 의미합니다.\n조건 변수를 잘못 사용했을 경우 무기한 차단이 발생할 수 있습니다.\n각 스레드별로 고유한 조건 변수를 사용하도록 합니다. 혹은 cnd_signal() 대신 cnd_broadcast() 함수를 사용하도록 합니다.",
  "rule.saqt.q.ccpp.2792.example.0.dangerous": "라인 17: 특정 시나리오에서 무기한 차단이 발생할 수 있습니다. 상세한 내용은 CERT의 CON38-C 케이스를 참조하도록 합니다.",
  "rule.saqt.q.ccpp.2792.example.0.safe": "라인 2: 각 스레드 별로 고유한 조건 변수를 사용합니다.\n라인 21: 각 스레드 별로 고유한 조건 변수를 사용합니다.",
  "rule.saqt.q.ccpp.2792.name": "잘못된 조건 변수 사용",
  "rule.saqt.q.ccpp.2805.description": "참조 타입에 volatile 한정자 사용 체커는 참조 타입 변수에 금지된 volatile 한정자를 사용하는 코드를 검출합니다.\nvolatile 참조 타입을 사용하면 정의되지 않은 동작이 발생하여 예상치 못한 값이 저장되고 데이터 무결성을 위반할 수 있습니다.\n참조 타입에 volatile 한정자를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2805.example.0.dangerous": "라인 3: 참조 타입 변수 b에 volatile 한정자를 사용했습니다.",
  "rule.saqt.q.ccpp.2805.example.0.safe": "라인 3: volatile 한정자가 있으므로 참조 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.2805.name": "참조 타입에 volatile 한정자 사용",
  "rule.saqt.q.ccpp.2807.description": "배열을 다형성으로 취급 금지 체커는 객체의 동적 포인터 형식과 다른 정적 포인터 형식으로 할당하면 이슈를 검출합니다.\n잘못된 타입의 포인터를 통해 배열을 삭제하면 정의되지 않은 동작(Undefined Behavior)이 발생할 수 있습니다.\n클래스 객체를 배열로 할당할 때는 선언한 클래스 타입 그대로 할당하도록 합니다. 만약 선언한 클래스 타입의 상속 클래스를 할당할 필요가 있을 경우 변수의 클래스 선언 타입을 바꾸도록 합니다.",
  "rule.saqt.q.ccpp.2807.example.0.dangerous": "라인 17: Base형 포인터 변수 b에 Derived형 배열을 할당했습니다.\n라인 18: Base2형 포인터 변수 a에 Derived2형 배열을 할당했습니다.",
  "rule.saqt.q.ccpp.2807.example.0.safe": "라인 17: Base형 포인터 변수 b에 같은 타입인 Base형 배열을 할당합니다.\n라인 18: Base2형 포인터 변수 a에 같은 타입인 Base형 배열을 할당합니다.",
  "rule.saqt.q.ccpp.2807.name": "배열을 다형성으로 취급 금지",
  "rule.saqt.q.ccpp.2808.description": "반복자에서 1보다 큰 값으로 증감 금지 체커는 반복문의 반복자에서 1보다 큰 상수값으로 증감 연산을 수행하는 코드를 검출합니다.\n배열을 가리킬 때 포인터가 마지막 인덱스를 지나치는 주소를 가리키는 표현을 할 수 있습니다. 반복자 형식 역시 마찬가지로 마지막 원소를 지나친 주소를 가리킬 수 있습니다.\n포인터나 임의 접근 반복자에 관해 가산하거나 감산하는 결과 값이 컨테이너 범위를 벗어나게 될 때에는 런타임 오류(Runtime Error)나 정의되지 않은 동작(Undefined Behavior)이 발생할 수 있습니다.\n2이상 가산 또는 감산하는 정수 타입의 표현식을 사용하지 않아야 합니다.",
  "rule.saqt.q.ccpp.2808.example.0.dangerous": "라인 5: for문의 반복자 i가 2씩 증가했습니다.",
  "rule.saqt.q.ccpp.2808.example.0.safe": "라인 5: for문의 반복자 i가 1씩 증가하도록 수정합니다.",
  "rule.saqt.q.ccpp.2808.name": "반복자에서 1보다 큰 값으로 증감 금지",
  "rule.saqt.q.ccpp.2809.description": "뮤텍스 unlock() 함수 예외 처리 없이 호출 금지 체커는 예외 처리 없이 뮤텍스 unlock() 함수를 호출하는 코드를 검출합니다.\n예외가 발생했을 때 뮤텍스가 잠긴 상태로 유지될 수 있습니다. 이 경우 잠긴 뮤텍스로 인해 프로그램이 정상적으로 동작하지 않게 될 수 있습니다.\n뮤텍스가 잠겨 있고 공유 리소스를 사용하는 공간에서 예외가 발생하더라도 뮤텍스의 잠금이 해제될 수 있게 해야 합니다. 예를 들어 예외를 처리하는 catch 구문 등에서 뮤텍스 잠금 해제 함수를 사용하는 방법이 있습니다.",
  "rule.saqt.q.ccpp.2809.example.0.dangerous": "라인 3: mutex lock() 함수를 호출했습니다.\n라인 5: 예외 처리 없이 mutex unlock() 함수를 호출합니다.",
  "rule.saqt.q.ccpp.2809.example.0.safe": "라인 3: mutex lock() 함수를 호출했습니다.\n라인 7: 예외 상황에서도 잠금을 해제할 수 있도록 mutex unlock() 함수를 호출합니다.",
  "rule.saqt.q.ccpp.2809.name": "뮤텍스 unlock() 함수 예외 처리 없이 호출 금지",
  "rule.saqt.q.ccpp.2810.description": "최대 크기 버퍼 사용 체커는 옵션에 지정된 경로 최대 크기보다 작은 크기의 버퍼를 사용하는 코드를 검출합니다.\n외부에서 경로를 받아 처리하는 realpath(), readlink(), PathAppend() 함수를 사용할 때 버퍼의 크기가 경로 최대 크기(MAX_PATH)보다 작은 경우를 검출합니다. 옵션에서 최소 버퍼 크기를 지정할 수 있습니다.\n부적절한 크기의 출력 버퍼를 경로 조작 기능에 전달하면 버퍼 오버플로우가 발생할 수 있습니다.\n버퍼의 크기를 경로 최대 크기(MAX_PATH)보다 크거나 같게 설정하도록 합니다.",
  "rule.saqt.q.ccpp.2810.example.0.dangerous": "라인 3: 배열 temp의 크기가 255 입니다.\n라인 5: PathAppend() 함수의 첫 번째 인자 temp의 크기가 MAX_PATH보다 작으므로 버퍼 오버플로우가 발생할 수 있습니다.\n라인 6: realpath() 함수의 두 번째 인자 temp의 크기가 MAX_PATH보다 작으므로 버퍼 오버플로우가 발생할 수 있습니다.\n라인 7: readlink() 함수의 두 번째 인자 temp의 크기가 MAX_PATH보다 작으므로 버퍼 오버플로우가 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.2810.example.0.safe": "라인 3: 배열 temp의 크기가 256 입니다.\n라인 5: PathAppend() 함수의 첫 번째 인자 temp의 크기가 MAX_PATH와 같습니다.\n라인 6: realpath() 함수의 두 번째 인자 temp의 크기가 MAX_PATH와 같습니다.\n라인 7: readlink() 함수의 두 번째 인자 temp의 크기가 MAX_PATH와 같습니다.",
  "rule.saqt.q.ccpp.2810.name": "최대 크기 버퍼 사용",
  "rule.saqt.q.ccpp.2810.option.min_array_variable_size.description": "인자로 오는 배열의 최소 크기를 입력합니다.",
  "rule.saqt.q.ccpp.2810.option.min_array_variable_size.name": "최소 배열 크기",
  "rule.saqt.q.ccpp.3011.description": "bool 형식에 감소 연산자 사용 체커는 bool 형식의 변수에 감소 연산자(`--`)를 사용하는 경우를 검출합니다.\nbool 형식의 변수에 감소 연산자(`--`)를 사용하지 않도록 합니다. 이와 같은 방식은 더 이상 사용되지 않습니다.\nbool 형식의 변수에 감소 연산자를 사용하지 않습니다. 직접적인 참, 거짓을 대입하거나 toggle()이나 set(), clear() 같은 사용자 정의 함수를 만들어 사용하도록 합니다.",
  "rule.saqt.q.ccpp.3011.example.0.dangerous": "라인 2: bool 타입의 변수에 감소 연산자를 사용했습니다.",
  "rule.saqt.q.ccpp.3011.example.0.safe": "라인 2: 직접적으로 true, false를 대입합니다. 혹은 사용자 정의 함수를 만들어 사용할 수도 있습니다.",
  "rule.saqt.q.ccpp.3011.name": "bool 형식에 감소 연산자 사용",
  "rule.saqt.q.ccpp.345.description": "누락된 지역 변수의 초기화 체커는 초기화가 없는 변수 선언을 검출합니다.\n초기화되지 않은 값을 사용하는 경우 알아차리기 어려운 문제로 인해 런타임 오류가 발생 가능하므로 매우 치명적이라고 할 수 있습니다. 물론 변수의 선언과 동시에 초기화하지 않더라도 사용하기 직전에 초기화하면 문제는 발생하지 않습니다. 다만 복잡한 제어 흐름 속에서 초기화가 누락될 가능성이 있으므로 가장 좋은 방법은 선언과 동시에 초기화하는 것입니다.\n지역 변수 선언 시 반드시 동시에 초기화하도록 합니다.",
  "rule.saqt.q.ccpp.345.example.0.dangerous": "라인 2: 초기화 없이 지역 변수를 선언했습니다.",
  "rule.saqt.q.ccpp.345.example.0.safe": "라인 2: 지역 변수 선언과 동시에 초기화하도록 합니다.",
  "rule.saqt.q.ccpp.345.name": "누락된 지역 변수의 초기화",
  "rule.saqt.q.ccpp.345.option.ignored_variable_name.description": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "rule.saqt.q.ccpp.345.option.ignored_variable_name.name": "검사 대상에서 제외할 변수 이름",
  "rule.saqt.q.ccpp.345.option.skip_array_check.description": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.q.ccpp.345.option.skip_array_check.name": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.q.ccpp.348.description": "헤더 파일에서 누락된 #define 체커는 파일의 시작과 끝에 인클루드 가드가 누락된 헤더를 검출합니다.\n인클루드 가드(Include Guard)는 전역적으로 사용하는 선언 등을 한 번만 수행할 수 있도록 헤더 파일을 전처리 구문으로 감싸는 것을 의미합니다.\n인클루드 가드를 사용하지 않는 경우 중복 선언으로 컴파일 오류가 발생할 수 있습니다.\n헤더 파일을 전처리 구문으로 감싸도록 합니다.",
  "rule.saqt.q.ccpp.348.example.0.dangerous": "라인 2: #define 구문이 없습니다. 불완전한 인클루드 가드이므로 중복된 헤더 파일이 포함될 수 있습니다.",
  "rule.saqt.q.ccpp.348.example.0.safe": "라인 1: 헤더 파일의 시작과 끝에서 인클루드 가드를 사용합니다.",
  "rule.saqt.q.ccpp.348.name": "헤더 파일에서 누락된 #define",
  "rule.saqt.q.ccpp.348.option.ignored_path.description": "검사 대상에서 제외할 경로 이름을 기록합니다.",
  "rule.saqt.q.ccpp.348.option.ignored_path.name": "검사 대상에서 제외할 경로 이름",
  "rule.saqt.q.ccpp.385.description": "문자열 비교로 인한 도달할 수 없는 코드 체커는 문자열 비교로 이루어진 조건문 체인에서 도달할 수 없는 조건문 본문을 검출합니다.\n도달할 수 없는 코드는 프로그램 흐름 상 불필요한 코드로 가독성을 떨어뜨리고 유지보수에 어려움을 줍니다. 또한 프로그램의 최적화를 위해서 해결해야 할 문제입니다.\n문자열 비교로 이루어진 조건문 체인에서 도달할 수 없는 경로가 발생하는 것은 비교 구문이 잘못되었을 가능성이 매우 높습니다. 비교 구문들을 점검하고 도달 불가능한 조건문 본문이 없게 조건을 변경하도록 합니다.",
  "rule.saqt.q.ccpp.385.example.0.dangerous": "라인 1: str + 2 와 문자열 \"CD\"를 길이 2만큼 부분 비교 했습니다.\n라인 4: str 과 문자열 \"ABCDE\"를 길이 5만큼 부분 비교 했습니다. 하지만 이 조건은 라인1에서 항상 만족하므로 절대 도달할 수 없습니다.",
  "rule.saqt.q.ccpp.385.example.0.safe": "라인 4: 도달할 수 있는 비교 구문을 작성하도록 합니다.",
  "rule.saqt.q.ccpp.385.name": "문자열 비교로 인한 도달할 수 없는 코드",
  "rule.saqt.q.ccpp.387.description": "음수에 대해 나머지 연산 체커는 모듈러 연산자의 피연산자로 음수를 사용하는 수식을 검출합니다.\n모듈러 연산에서 음수값을 피연산자로 사용하는 것은 구현 정의 동작(Implementation Defined Behavior)입니다. 즉, 컴파일러에 따라 결과가 달라질 수 있습니다.\n모듈러 연산의 피연산자로써 항상 양수를 사용하도록 합니다. 이러한 조건을 유지하기 위해 피연산자로 사용된 값이 0을 초과하는지를 검사합니다. 혹은 피연산자 타입을 unsigned로 선언하도록 합니다.",
  "rule.saqt.q.ccpp.387.example.0.dangerous": "라인 3: size를 피연산자로 사용하여 모듈러 연산을 수행했습니다. 이 때 size 변수는 음수일 수 있습니다.",
  "rule.saqt.q.ccpp.387.example.0.safe": "라인 1: 모듈러 연산에서 음수를 피연산자로 사용하지 않도록 size의 타입을 unsigned로 변경합니다.",
  "rule.saqt.q.ccpp.387.name": "음수에 대해 나머지 연산",
  "rule.saqt.q.ccpp.388.description": "부호가 없는 타입에 음수 할당 체커는 음수 값이 unsigned 로 변환되어 저장될 수 있는 수식을 검출합니다.\n큰 수를 표현하는 데이터형으로 값이 변환될 때 음수 값이 큰 양수 값으로 변환될 수 있습니다. 특히 음수 값을 unsigned 타입으로 복사하는 경우 잘못된 부호의 확장으로 엄청나게 큰 숫자가 발생할 수 있습니다.\n음수값이 큰 양수값으로 변환되지 않도록 부호 여부가 다른 객체 간 대입 시 조건을 잘 설정해야 합니다.",
  "rule.saqt.q.ccpp.388.example.0.dangerous": "라인 6: s가 256보다 큰지를 비교했습니다.\n라인 7: s를 sz에 대입했습니다. 만약 s가 0보다 작았을 경우 sz의 타입은 unsigned 이므로 이 값이 커다란 양수값으로 변할 가능성이 있습니다.",
  "rule.saqt.q.ccpp.388.example.0.safe": "라인 6: s가 0보다 작은지 비교하는 구문을 추가합니다.",
  "rule.saqt.q.ccpp.388.name": "부호가 없는 타입에 음수 할당",
  "rule.saqt.q.ccpp.42.description": "0으로 나누기 체커는 0으로 나누기를 수행하는 코드를 검출합니다.\n나누기는 0을 제수로 사용하는 것에 대해 정의되어 있지 않으므로 0으로 나누기 연산을 시도하면 CPU 수준에서 예외가 발생할 수 있습니다. 이로 인해 프로그램이 비정상적으로 종료되거나 DoS(Denial of Service)가 발생할 수 있습니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.42.example.0.dangerous": "라인 5: func 함수의 인자로 전달된 i가 10보다 크면 a에 random 함수의 반환값을 할당하게 됩니다.\n라인 8: 라인 4가 실행되지 않으면 값이 0인 a로 cnt를 나누어 오류가 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.42.example.0.safe": "라인 8: 값을 0으로 나누지 않기 위해 제수가 0 이상인지를 검사해야 합니다.",
  "rule.saqt.q.ccpp.42.name": "0으로 나누기",
  "rule.saqt.q.ccpp.43.description": "누락된 0으로 나누기 검사 체커는 나눗셈의 제수인 함수 인자 혹은 반환값을 이전에는 0 확인 후 사용했지만 이번에는 0 확인 없이 사용하는 코드를 검출합니다.\n나누기는 0을 제수로 사용하는 것에 대해 정의되어 있지 않으므로 0으로 나누기 연산을 시도하면 CPU 수준에서 예외가 발생할 수 있습니다. 이로 인해 프로그램이 비정상적으로 종료되거나 DoS(Denial of Service)가 발생할 수 있습니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다. 함수의 인자로 전달되거나 다른 함수에서 반환된 값은 0이 아니라고 확신할 수 없으므로 0인지 확인한 후에 나누기에 사용하는 것이 안전합니다.",
  "rule.saqt.q.ccpp.43.example.0.dangerous": "라인 5: func 함수의 인자로 전달되는 i가 0이 아닌지를 검사했습니다.\n라인 9: 제수로 사용된 i 값이 0일 수 있기 때문에 오류가 발생할 수 있습니다.",
  "rule.saqt.q.ccpp.43.example.0.safe": "라인 7: 정수형을 나눌 때 제수가 0이 될 경우를 고려하여 검사를 수행한 후에 실행합니다.",
  "rule.saqt.q.ccpp.43.name": "누락된 0으로 나누기 검사",
  "rule.saqt.q.ccpp.45.description": "지역 변수 주소 반환 체커는 지역 변수의 주소를 반환하는 코드를 검출합니다.\n지역 변수의 주소를 반환하면 일반적으로 의도하지 않은 동작이 발생하게 됩니다.\n버퍼를 반환할 때는 스택 영역에 할당되는 배열이 아닌 힙 영역에 할당되는 동적 할당 버퍼를 반환해야 합니다.",
  "rule.saqt.q.ccpp.45.example.0.dangerous": "라인 2: arr은 test() 함수의 지역 변수입니다.\n라인 6: 지역 변수 arr의 주소를 반환하여 오류가 발생했습니다.",
  "rule.saqt.q.ccpp.45.example.0.safe": "라인 2: arr를 동적으로 할당합니다.\n라인 6: 힙 메모리 영역에 할당된 버퍼를 반환합니다.",
  "rule.saqt.q.ccpp.45.name": "지역 변수 주소 반환",
  "rule.saqt.q.ccpp.46.description": "스택 메모리 해제 체커는 힙 영역이 아닌 스택 영역에 할당된 메모리를 해제하는 코드를 검출합니다.\n해당 오류는 주로 지역 변수의 주소를 해제하는 경우에 발생합니다.\n스택 영역의 메모리 주소를 해제하려고 하면 프로그램이 비정상적으로 종료될 수 있습니다.\n스택 영역이 아닌 힙 영역에 할당된 메모리를 해제해야 합니다.",
  "rule.saqt.q.ccpp.46.example.0.dangerous": "라인 1: 지역 변수 arr을 선언했습니다.\n라인 2: arr 변수의 회수를 시도하지만, arr이 스택 영역에 할당되었으므로 오류가 발생합니다.",
  "rule.saqt.q.ccpp.46.example.0.safe": "라인 1: arr를 동적 할당합니다.\n라인 2: arr은 힙 영역에 할당되었으므로 정상 해제됩니다.",
  "rule.saqt.q.ccpp.46.name": "스택 메모리 해제",
  "rule.saqt.q.ccpp.48.description": "누락된 반환 구문 체커는 반환 타입이 void가 아닌 함수 중 반환 구문이 포함되지 않는 함수를 검출합니다.\n이로 인해 의도하지 않은 동작이 발생할 수 있습니다.\n반환 타입이 void가 아닌 함수에는 반환 구문이 포함되어야 합니다.",
  "rule.saqt.q.ccpp.48.example.0.dangerous": "라인 1: 함수의 반환 형식이 void가 아닙니다.\n라인 3: 함수 종료 전에 함수의 반환 구문을 작성하지 않았으므로 오류가 발생합니다.",
  "rule.saqt.q.ccpp.48.example.0.safe": "라인 3: 함수의 반환 형식이 void가 아닌 경우에는 함수 종료 전에 반환 구문을 작성합니다.",
  "rule.saqt.q.ccpp.48.name": "누락된 반환 구문",
  "rule.saqt.q.ccpp.52.description": "겹치는 메모리 영역 체커는 함수에 겹치는 메모리 영역을 가리키는 다수의 인자를 전달하는 코드를 검출합니다.\n대상 함수는 다음과 같습니다. memccpy(), memcpy(), strcpy(), strncpy().\nmemccpy(), memcpy(), strcpy(), strncpy() 와 같은 함수는 restrict 포인터가 참조하는 소스 객체에서 대상 객체로 메모리를 복사하는 C 표준 라이브러리 함수입니다. 이 함수에서 다수의 인자가 서로 겹치는 메모리 영역을 사용하면 데이터 무결성을 손상시키거나 메모리 충돌을 발생시킬 수 있습니다.\nrestrict 포인터가 참조하는 소스 객체에서 대상 객체로 메모리를 복사하는 C 표준 라이브러리 함수를 사용할 때 다수의 인자에 겹치는 메모리 영역을 전달 받지 않아야 합니다.",
  "rule.saqt.q.ccpp.52.example.0.dangerous": "라인 3: 문자열 포인터 p를 pt1에 할당했습니다.\n라인 5: pt1과 동일한 메모리 영역을 pt2에 할당했습니다.\n라인 6: pt1의 문자열 중 크기 4인 문자열을 pt2에 복사하려고 시도하지만 같은 메모리 영역을 사용하므로 문제가 발생했습니다.",
  "rule.saqt.q.ccpp.52.example.0.safe": "라인 6: 메모리나 문자열을 복사할 때 memmove() 함수를 사용하면 메모리가 겹치지 않도록 방지할 수 있습니다.",
  "rule.saqt.q.ccpp.52.name": "겹치는 메모리 영역",
  "rule.saqt.q.ccpp.60.description": "비트 폭을 초과하는 시프트 체커는 대상 타입의 비트 크기보다 크게 시프트 연산자(>>, <<)를 적용하는 코드를 검출합니다.\n프로그램을 수행하는 도중 오류가 발생하여 예상하지 못한 결과가 발생할 수 있습니다. 또한 이차적으로 버퍼 오버플로우 또는 언더플로우를 발생시켜 보안 상 위협에 노출될 수 있습니다.\n대상 타입의 크기보다 큰 시프트 연산을 수행하지 않도록 합니다.",
  "rule.saqt.q.ccpp.60.example.0.dangerous": "라인 3: unsigned char 타입의 값을 8비트 만큼 시프트합니다. unsigned char는 8비트 밖에 표현하지 못하기 때문에 표현 한계를 넘어가게 됩니다.",
  "rule.saqt.q.ccpp.60.example.0.safe": "라인 3: 변수형의 범위를 고려하여 시프트함으로써 문제를 해결합니다.",
  "rule.saqt.q.ccpp.60.name": "비트 폭을 초과하는 시프트",
  "rule.saqt.q.ccpp.61.description": "음수 값에 대해 시프트 체커는 음수 값에 시프트 연산자(>>, <<)를 적용하는 코드를 검출합니다.\n프로그램을 수행하는 도중 오류로 인해 예상하지 못한 결과가 발생할 수 있습니다. 또한 이차적으로 버퍼 오버플로우나 언더플로우를 발생시켜 보안 위협에 노출될 수 있습니다.\n음수 값에는 시프트 연산을 수행하지 않아야 합니다.",
  "rule.saqt.q.ccpp.61.example.0.dangerous": "라인 4: int 타입의 변수 a에 음수로 왼쪽 시프트 연산을 수행하여 오류가 발생했습니다.",
  "rule.saqt.q.ccpp.61.example.0.safe": "라인 4: 변수 타입의 범위를 고려하여 양의 정수만큼 시프트함으로써 문제를 해결합니다.",
  "rule.saqt.q.ccpp.61.name": "음수 값에 대해 시프트",
  "rule.saqt.q.ccpp.66.description": "부적절한 길이 인자의 값 체커는 함수에 길이를 정하는 인자의 값이 음수이거나 너무 큰 코드를 검출합니다.\n여기서 말하는 함수는 다음과 같습니다. alloca(), bcopy(), calloc(), malloc(), memccpy(), memcpy(), realloc(), strncpy(). 메모리 할당 함수에서 할당량을 표시하는 인자를 unsigned 정수형으로 전달하지 않는 경우를 검출하거나 외부 입력값을 검사하지 않고 덧셈이나 뺄셈을 통해서 계산하는 코드를 검출합니다.\n인자 값이 음수이거나 자료형의 범위를 벗어나는 경우 캐스트가 발생합니다. 그 결과 시스템은 예상하지 못한 메모리 주소 요청을 받게 됩니다. 이를 사용하여 공격자가 프로그램에 접근하여 흐름을 제어할 수 있게 되어 보안 위협을 받을 수 있습니다.\n함수의 길이를 정하는 인자의 값이 음수가 되거나 자료형의 값을 초과할 정도로 큰 값을 지정하지 않도록 주의해야 합니다.",
  "rule.saqt.q.ccpp.66.example.0.dangerous": "라인 2: n이 음수로 초기화되었습니다.\n라인 3: malloc() 함수의 인자에 음수 값 또는 범위를 벗어난 수를 전달할 수 있는 가능성이 있습니다.",
  "rule.saqt.q.ccpp.66.example.0.safe": "라인 2: 매개변수 n을 검사합니다.\n라인 3: 범위를 고려하여 길이 인자를 설정하도록 합니다. 외부 입력으로 길이를 설정할 때에도 입력 범위를 지정하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.66.name": "부적절한 길이 인자의 값",
  "rule.saqt.q.ccpp.66.option.max_decision_point_number.description": "허용할 메모리 할당의 최대 크기를 설정합니다.",
  "rule.saqt.q.ccpp.66.option.max_decision_point_number.name": "허용 메모리 최대 크기",
  "rule.saqt.q.ccpp.68.description": "쓸모없는 조건 체커는 항상 만족되거나 절대로 만족될 수 없는 조건식을 사용하는 코드를 검출합니다.\n항상 true이거나 false인 조건식은 불필요한 코드입니다. 조건식이 항상 true라면 항상 실행될 것이므로 조건이 필요하지 않고, 항상 false라면 도달할 수 없는 코드가 존재하게 됩니다. 이러한 불필요한 코드는 프로그램의 흐름을 혼란스럽게 하고 불필요한 메모리를 차지하게 만듭니다.\n조건식을 실수로 잘못 작성했다면 수정해야 합니다. 혹은 조건부로 실행되도록 작성한 코드가 실제로는 항상 실행되거나 혹은 절대로 실행되지 않는 코드일 수 있습니다. 이러한 경우 조건문이나 해당 코드 전체를 삭제합니다.",
  "rule.saqt.q.ccpp.68.example.0.dangerous": "라인 8: foo() 함수에서 1을 반환하여 x 변수에 1을 할당했습니다.\n라인 9: foo2() 함수에서 0을 반환하여 y 변수에 0을 할당했습니다.\n라인 10: 여기서 x는 항상 1이고 y는 항상 0이므로 조건식은 항상 true입니다.",
  "rule.saqt.q.ccpp.68.example.0.safe": "라인 10: 코드가 조건부로 실행되지 않으므로 조건문을 삭제하여 항상 실행되는 코드로 수정합니다.",
  "rule.saqt.q.ccpp.68.name": "쓸모없는 조건",
  "rule.saqt.q.ccpp.70.description": "도달할 수 없는 코드 체커는 어떠한 경우에도 도달할 수 없는 코드 블록을 검출합니다.\n구문을 제거하더라도 프로그램 출력에 영향을 미치지 않는 코드는 중복 코드로써 불필요합니다. 해당 코드가 의도적인지 아니면 오류로 인해 발생했는지 여부는 검토자에게 명확하지 않습니다.\n도달할 수 없는 코드는 프로그램 흐름 상 불필요한 코드로 가독성을 떨어뜨리고 유지보수에 어려움을 줍니다. 또한 프로그램의 최적화를 위해서 해결해야 할 문제입니다.\n실행되지 않는 코드를 제거합니다.",
  "rule.saqt.q.ccpp.70.example.0.dangerous": "라인 2: x=1로 설정했습니다.\n라인 3: switch-case 문에서 x=1이기 때문에 break;를 실행하고 종료했습니다.\n라인 6: printf() 함수를 실행하지 않으므로 오류로 검출되었습니다.",
  "rule.saqt.q.ccpp.70.example.0.safe": "라인 5: switch-case 조건에 따라 printf() 함수가 동작하도록 수정합니다.",
  "rule.saqt.q.ccpp.70.name": "도달할 수 없는 코드",
  "rule.saqt.q.ccpp.71.description": "사용되지 않은 값 체커는 변수에 값을 할당한 후에 해당 변수를 실행 경로에서 사용하지 않는 코드를 검출합니다.\n구문을 제거하더라도 프로그램 출력에 영향을 미치지 않는 코드는 중복 코드로써 불필요합니다. 해당 코드가 의도적인지 아니면 오류로 인해 발생했는지 여부는 검토자에게 명확하지 않습니다.\n사용되지 않는 변수는 논리적인 오류이며 이러한 논리적인 오류는 소스 코드의 가독성을 떨어뜨리고 유지보수에 어려움을 줍니다. 따라서 사용되지 않는 변수를 삭제하는 것이 좋습니다.\n사용되지 않는 변수를 제거합니다.",
  "rule.saqt.q.ccpp.71.example.0.dangerous": "라인 2: a를 2로 초기화했습니다.\n라인 4: a의 값이 다시 할당되지만 사용되지 않기 때문에 오류가 발생했습니다.",
  "rule.saqt.q.ccpp.71.example.0.safe": "라인 9: 변수 a를 반환합니다. 사용하지 않던 a를 사용하도록 소스 코드를 수정합니다.",
  "rule.saqt.q.ccpp.71.name": "사용되지 않은 값",
  "rule.saqt.q.ccpp.73.description": "위험한 함수 포인터 형변환 체커는 서명이 충돌하거나 반환 타입이 다른 함수 포인터로 캐스팅되는 코드를 검출합니다.\n가변 인자 함수 포인터를 인자나 반환 타입이 다른 함수 포인터로 캐스팅하는 경우도 포함됩니다.\n함수와 함수 포인터의 서명이 다른 경우 컴파일러는 오류를 검출하지 않습니다. 하지만 이로 인해 프로그래머가 예상하지 못한 오작동이 발생할 수 있습니다.\n함수 포인터의 경우 서명과 타입이 동일하도록 캐스팅해야 합니다.",
  "rule.saqt.q.ccpp.73.example.0.dangerous": "라인 5: int 타입의 함수 포인터 fp_foo2를 선언했습니다.\n라인 7: char 타입의 반환 함수 foo1을 int 타입의 함수 포인터로 캐스팅하므로 오류를 검출했습니다.",
  "rule.saqt.q.ccpp.73.example.0.safe": "라인 5: char 타입의 함수 포인터 fp_foo2를 선언합니다.",
  "rule.saqt.q.ccpp.73.name": "위험한 함수 포인터 형변환",
  "rule.saqt.q.ccpp.7305.description": "소스 코드의 특정 부분을 컴파일하지 않으려면 주석 처리 방식을 사용하지 않는 것이 좋습니다. 시작-끝 주석 (/* … \\*/) 으로 코드 섹션을 비활성화 하는 것은 위험합니다. C 언어는 중첩 주석을 지원하지 않기 때문에, 해당 코드 섹션 안에 이미 주석이 있다면 전체 주석의 효력이 바뀌어 의도치 않게 코드가 컴파일 될 수 있습니다.\n특정 소스 코드를 컴파일에서 제외하고 싶다면, 주석 대신 조건부 컴파일 지시어(#if, #ifdef)를 사용하여 처리해야 합니다.",
  "rule.saqt.q.ccpp.7305.example.0.dangerous": "라인 1: 소스 코드가 주석 처리되어 컴파일에서 제외되었습니다.",
  "rule.saqt.q.ccpp.7305.example.0.safe": "라인 1: 컴파일하지 않을 소스 코드는 조건부 컴파일 지시어를 사용하여 제외해야 합니다.",
  "rule.saqt.q.ccpp.7305.name": "주석 처리된 코드",
  "rule.saqt.q.ccpp.7306.description": "부동 소수점 연산은 오버플로우, 0으로 나누기, 음수의 제곱근과 같이 수학적으로 정의되지 않은 상황에서 NaN(Not a Number)나 무한대(Infinity)와 같은 특별한 값을 생성할 수 있습니다. 이와 같은 값은 런타임 오류를 일으키지 않고 프로그램에 전파되므로, 이를 감지하고 처리하지 않으면 예상치 못한 결과나 심각한 오류를 초래할 수 있습니다.\n\n따라서 이를 방지하기 위해 NaN 이나 무한대가 발생할 가능성이 있는 수학 함수에 부적절한 값을 전달하는 것을 금지합니다. 이러한 패턴은 잘못된 계산 결과를 야기할 수 있습니다.\nNaN 이나 무한대 값이 발생할 수 있는 패턴과 계산식을 피하고, 오류가 발생할 가능성이 없도록 코드를 작성해야 합니다.",
  "rule.saqt.q.ccpp.7306.example.0.dangerous": "라인 1: 1.0 이 넘는 값을 asin 함수에 전달했습니다. 이 값은 NaN 로 계산됩니다.\n라인 2: 음수 값을 pow 함수의 두번째 인자에 전달했습니다. 이 값은 Inf 로 계산됩니다.",
  "rule.saqt.q.ccpp.7306.example.0.safe": "라인 1: NaN 이 발생하지 않도록 asin 함수에 유효한 범위의 값을 전달해야 합니다.\n라인 2: Inf 가 발생하지 않도록 pow 함수에 유효한 범위의 값을 전달해야 합니다.",
  "rule.saqt.q.ccpp.7306.name": "부적절한 부동 소수점 연산",
  "rule.saqt.q.ccpp.7307.description": "프로그램의 안정성과 분석 가능성을 높이기 위해, 동적 스레드 생성을 피하고 스레드의 생성 시점을 제한해야 합니다.  런타임 중 임의의 위치에서 스레드가 생성되면 실행되는 스레드의 수가 불확실해져 프로그램의 동작을 예측하기 어렵습니다.\n\n특히 안전 관련 시스템에서는 이러한 문제를 해결하기 위해 정적 스레드 풀(static thread pool)을 사용하는 것이 일반적입니다. 정적 스레드 풀은 스레드 생성 개수와 시점을 프로그램 시작 단계로 고정하여 프로그램의 동작을 예측 가능하게 만듭니다. 따라서 스레드 생성은 잘 정의된 시점에서만 이루어지도록 강제하는 것이 필요합니다.\n스레드 생성은 main 함수와 같이 프로그램 시작 단계로 명확하게 지정된 함수 내에서만 수행해야 합니다. 다른 스레드의 진입 함수나 임의의 위치에서는 스레드 생성 함수를 호출해서는 안 됩니다.",
  "rule.saqt.q.ccpp.7307.example.0.dangerous": "라인 5: main 함수가 아닌 함수에서 스레드 생성 함수를 호출했습니다.",
  "rule.saqt.q.ccpp.7307.example.0.safe": "라인 5: main 함수에서 스레드 생성 함수를 호출해야 합니다.",
  "rule.saqt.q.ccpp.7307.name": "동적 스레드 생성",
  "rule.saqt.q.ccpp.7308.description": "스레드 간 공유 자원 접근을 보호하는 뮤텍스는 반드시 잠금을 획득한 스레드가 명시적으로 해제해야 합니다. 만약 스레드가 잠금을 해제하지 않은 채 종료되면, 해당 뮤텍스는 영구적으로 잠긴 상태로 남아 다른 스레드들의 실행을 방해할 수 있습니다.\n\n이러한 현상은 마치 메모리 누수와 유사하게 공유 자원 접근 권한을 잃게 하는 뮤텍스 잠금 누수로 이어집니다. 따라서 모든 실행 경로에서 획득한 뮤텍스를 반드시 해제하여 프로그램의 안정성을 높여야 합니다.\n한 함수에서 뮤텍스 잠금이 호출된 후에는 스레드 종료 전 모든 가능한 실행 경로에서 반드시 잠금 해제를 수행해야 합니다. 즉, 잠금과 잠금 해제는 짝을 이루도록 작성하여 잠금을 획득한 스레드만이 잠금 해제를 호출하도록 보장해야 합니다.",
  "rule.saqt.q.ccpp.7308.example.0.dangerous": "라인 3: 뮤텍스를 잠갔습니다.\n라인 8: if 문의 조건이 거짓일 때 뮤텍스의 잠금 해제가 누락되었습니다.",
  "rule.saqt.q.ccpp.7308.example.0.safe": "라인 8: 모든 제어 흐름에서 뮤텍스 잠금 해제가 이루어지도록 해야 합니다.",
  "rule.saqt.q.ccpp.7308.name": "뮤텍스 잠금 누수",
  "rule.saqt.q.ccpp.7309.description": "C언어는 주석 안에 또 다른 주석이 들어가는 중첩 주석을 지원하지 않습니다. 따라서 /* … \\*/ 블록 주석 내부에 또 다른 주석 시작 문자열 (/* 또는 //)이 있으면, 이는 단순한 실수일 가능성이 높습니다. 이러한 실수는 \\*/ 가 누락될 경우 주석의 범위를 잘못 인식시켜 예상치 못한 오류를 초래할 수 있습니다.\n\n이는 의도치 않은 코드 블록이 주석 처리되거나, 프로그램의 의미가 완전히 바뀌는 심각한 오류로 이어질 수 있습니다. 이러한 위험을 방지하기 위해 주석 안에 주석 시작 문자열을 사용하는 것을 금지합니다.\n주석 안에 /* 나 // 와 같은 문자열이 포함되어 있다면, 이는 단순한 실수일 수 있으므로 해당 문자열을 삭제하거나 올바르게 수정해야 합니다. 하지만 코드를 컴파일에서 제외하려 했던 의도였다면 /* … \\*/ 주석 대신 조건부 컴파일 지시어를 사용하여 그 의도를 명확하게 표현하는 것이 올바른 방법입니다.",
  "rule.saqt.q.ccpp.7309.example.0.dangerous": "라인 1: 블럭 주석의 끝이(*/) 누락되었습니다.\n라인 4: 라인1에서 누락된 */로 인해 주석 안의 주석 시작 문자열이 사용되었습니다. 이로 인해 라인 3의 함수가 의도치 않게 주석 처리되었습니다.",
  "rule.saqt.q.ccpp.7309.example.0.safe": "라인 4: 주석 안에 주석 시작 문자열이 없도록 올바르게 블럭 주석을 구성해야 합니다.",
  "rule.saqt.q.ccpp.7309.name": "주석 안의 주석 시작 문자",
  "rule.saqt.q.ccpp.7312.description": "바깥 범위에 선언된 식별자와 안쪽 범위에 선언된 식별자의 이름이 동일하면 범위 가림(Scope hiding) 현상이 발생합니다. 이는 문법적으로 오류는 아니지만, 안쪽 범위에서 바깥 범위의 식별자를 접근하지 못하게 만듭니다. 함수 매개변수, 지역 변수, 중첩된 블록 내에 선언된 식별자가 이러한 범위 가림 현상으로 이름이 충돌할 경우, 개발자에게 혼란을 주고 의도치 않은 논리적 오류를 유발할 수 있습니다.\n\n따라서 코드의 가독성과 유지보수성을 높이고 개발자의 실수를 방지하기 위해, 안쪽 범위의 식별자는 바깥 범위의 식별자와 명확히 구분되어야 합니다.\n안쪽 범위의 식별자를 선언할 때는 그 식별자 이름이 바깥 범위에 이미 존재하는 식별자 이름과 다르도록 작성해야 합니다.",
  "rule.saqt.q.ccpp.7312.example.0.dangerous": "라인 1: 이름이 가려지는 바깥 범위의 식별자입니다.\n라인 3: 안쪽 범위에 라인 1과 동일한 이름의 변수가 선언되어 바깥 범위의 식별자를 가립니다.",
  "rule.saqt.q.ccpp.7312.example.0.safe": "라인 3: 바깥 범위에 선언된 식별자의 이름을 가리지 않도록 다른 이름으로 변수를 선언해야 합니다.",
  "rule.saqt.q.ccpp.7312.name": "바깥 범위의 식별자 가림",
  "rule.saqt.q.ccpp.7314.description": "정수 상수 매크로는 특정 크기와 부호를 가지는 정수 상수를 생성하기 위해 사용하는 매크로입니다. 예를 들어 INT32_C 와 같은 형식이 있습니다. 이러한 매크로가 의도한 대로 동작하기 위해서는 인자가 C 표준에 명시된 특정 형식을 따라야 합니다. 만약 인자의 형식이 잘못되거나 값이 매크로가 지정하는 범위를 초과하면 정의되지 않은 동작(Undefined Behavior)이 발생합니다.\n이러한 문제는 예상치 못한 상수 값 생성, 런타임 오류, 또는 이식성 문제로 이어질 수 있습니다. 따라서 정수 상수 매크로의 인자는 지정된 형식과 값 범위가 엄격하게 준수되어야 합니다.\n정수 상수 매크로를 올바르게 사용하려면 이 매크로의 인자를 접미사 없는 순수 정수 리터럴로 사용하고, 그 값이 매크로 이름이 지정하는 타입의 범위를 벗어나지 않도록 수정해야 합니다. 예를 들어 접미사가 붙은 10UL 이나 부동 소수점 10.0, 단항 연산자가 포함된 -2와 같은 표현식을 피해야 합니다.",
  "rule.saqt.q.ccpp.7314.example.0.dangerous": "라인 1: 정수 상수 매크로의 인자에 불필요한 접미사를 사용했습니다.\n라인 2: 정수 상수 매크로의 인자에 부동 소수점 값을 사용했습니다.\n라인 3: 정수 상수 매크로의 인자에 단항 연산자를 사용했습니다.",
  "rule.saqt.q.ccpp.7314.example.0.safe": "라인 1-3: 정수 상수 매크로의 인자를 올바른 형식으로 사용해야 합니다.",
  "rule.saqt.q.ccpp.7314.name": "정수 상수 매크로 인자 형식 오류",
  "rule.saqt.q.ccpp.7315.description": "소형 정수 상수 매크로(INT8_C, UINT16_C 등)는 C언어의 정수 승격(Integer Promotion) 규칙으로 인해 의도하지 않은 타입으로 확장될 수 있습니다. C표준은 이러한 매크로의 인자가 int 타입으로 승격될 수 있다고 명시하며, 이로 인해 개발자가 기대한 8비트나 16비트 타입이 아닌 int 타입의 상수가 생성되는 경우가 많습니다. 이러한 타입 충돌은 \\_Generic 과 같은 기능을 사용할 때 예상치 못한 동작으로 이어질 수 있습니다. \n\n따라서 소형 정수 상수 매크로를 사용하지 않는 방식으로 코드를 작성하면 정수 승격으로 인한 타입 관련 문제를 피하고, 코드의 동작을 더 명확하고 예측 가능하게 만들 수 있습니다.\n정수 상수 매크로 중 int보다 작은 소형 정수 상수 매크로를 사용하지 않아야 합니다. 이러한 매크로의 사용 대신 명시적인 타입 변환을 사용하거나 일반적인 정수 리터럴을 직접 사용하여 컴파일러가 의도한 타입으로 처리하도록 하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.7315.example.0.dangerous": "라인 1: 금지된 소형 정수 상수 매크로 UINT8_C 를 사용했습니다.\n라인 2: 금지된 소형 정수 상수 매크로 INT16_C 를 사용했습니다.",
  "rule.saqt.q.ccpp.7315.example.0.safe": "라인 1-2: 금지된 소형 정수 상수 매크로 대신 타입 변환이나 일반적인 정수 리터럴을 사용해야 합니다.",
  "rule.saqt.q.ccpp.7315.name": "소형 정수 상수 매크로 사용 금지",
  "rule.saqt.q.ccpp.7316.description": "alignas는 C언어에서 객체가 메모리에 할당될 때 특정 바이트 경계에 맞춰 정렬되도록 명시적으로 지정하는 선언자입니다. 하나의 전역 객체가 여러 파일에서 extern 으로 선언되거나 정의될 경우, 해당 객체의 모든 선언은 동일한 정렬 값을 가져야 합니다. 만약 정렬 선언이 서로 다르다면 링커가 객체의 올바른 위치를 결정하지 못해 정의되지 않은 동작(Undefined Behavior)이 발생합니다.\n\n이러한 정렬 불일치는 링커 오류를 일으키거나, 예상치 못한 메모리 접근 문제로 이어지는 이식성 문제를 유발합니다. 따라서 한 전역 객체의 선언과 정의는 값이 실질적으로 동일하더라도 alignas(4) 와  alignas(int) 처럼 정수와 타입을 혼용해서는 안 됩니다. 또한 typedef 로 재정의된 타입 이름을 섞어 쓰는 것도 금지합니다. 이러한 조건들을 통해 동일한 alignas 값을 명시하여 일관성을 유지해야 합니다.\n동일한 전역 객체를 참조하는 모든 선언 및 정의에서 alignas 선언을 일치시켜야 합니다. 만약 한 곳에서 alignas를 사용했다면 다른 모든 곳에서도 동일한 alignas 값이나 타입을 사용해야 합니다. 예를 들어 한 헤더에서 extern alignas(16) int32_t a; 라고 선언했다면, 이 헤더를 포함하는 모든 소스 파일의 선언 및 정의에서도 alignas(16) 을 명시해야 합니다.",
  "rule.saqt.q.ccpp.7316.example.0.dangerous": "라인 6: 전역 변수의 alignas 정렬 값이 라인2의 이전 선언과 다릅니다.\n라인 7: 전역 변수의 alignas 선언 타입이 라인3의 이전 선언과 다릅니다.",
  "rule.saqt.q.ccpp.7316.example.0.safe": "라인 6: 전역 변수의 alignas 정렬 값을 이전 선언과 동일하게 맞추어야 합니다.\n라인 7: 전역 변수의 alignas 선언 타입을 이전 선언과 동일하게 맞추어야 합니다.",
  "rule.saqt.q.ccpp.7316.name": "객체 정렬 선언 불일치",
  "rule.saqt.q.ccpp.7317.description": "alignas는 C언어에서 객체가 메모리에 할당될 때 특정 바이트 경계에 맞춰 정렬되도록 명시적으로 지정하는 선언자입니다. alignas 는 숫자, 혹은 타입을 인자값으로 전달하여 정렬을 지정할 수 있습니다. 이 때 인자값으로 숫자 0을 전달하는 것도 가능합니다. 다만 alignas(0) 와 같이 이 선언자를 사용하는 것은 명시적인 정렬 지정이 없는 것과 동일하게 취급되므로 불필요한 선언입니다.  이러한 불필요한 지정은 코드의 의도를 모호하게 만듭니다. 객체의 정렬이 중요하다면 alignas(16) 과 같이 0이 아닌 명확한 값을 사용해야 합니다. 반대로 정렬이 중요하지 않다면, alignas(0) 을 사용하는 대신 alignas 선언 자체를 완전히 생략해야 합니다. 이러한 혼동은 유지보수 시 예기치 않은 동작으로 이어질 수 있습니다.\n불필요한 정렬 지정을 해결하기 위해서는 alignas(0) 선언이나 0으로 평가될 수 있는 복잡한 표현식을 제거해야 합니다. 만약 객체에 특정 정렬이 필요하다면, alignas(4) 와 같이 명확하고 0이 아닌 값을 지정하여 코드의 의도를 분명하게 밝혀야 합니다.",
  "rule.saqt.q.ccpp.7317.example.0.dangerous": "라인 1: alignas 가 명시적으로 0을 지정되었습니다.\n라인 2: long 과 int 가 동일한 크기를 가지는 플랫폼에서 alignas 가 0으로 지정되었습니다.",
  "rule.saqt.q.ccpp.7317.example.0.safe": "라인 1-2: 객체의 특정 정렬이 필요할 때 alignas 에 0이 아닌 값을 전달해야 합니다.",
  "rule.saqt.q.ccpp.7317.name": "불필요한 객체 정렬 지정",
  "rule.saqt.q.ccpp.7318.description": "alignas는 C언어에서 객체가 메모리에 할당될 때 특정 바이트 경계에 맞춰 정렬되도록 명시적으로 지정하는 선언자입니다. C 표준에서는 하나의 객체 선언에 여러개의 alignas 지정자가 나타나는 것을 허용합니다. 이 경우 컴파일러는 지정된 값 중 가장 엄격한 정렬 요구사항을 최종적으로 선택합니다.\n\n하지만 이러한 방식은 코드의 의도를 모호하게 만들어 개발자의 혼동을 초래할 수 있습니다. alignas 지정자가 두 개 이상 나열될 경우 어떤 정렬 값이 최종적으로 적용되는지 직관적으로 파악하기 어렵고, 불필요한 중복 선언으로 간주될 수 있습니다.\n하나의 객체 선언에 여러 개로 분산된 alignas 선언을 가장 엄격한 값 하나로 통합해야 합니다. 만약 여러 조건이 있다면, 모든 조건을 고려하여 최종 정렬 값을 계산하는 하나의 표현식으로 작성해야 합니다.",
  "rule.saqt.q.ccpp.7318.example.0.dangerous": "라인 1: alignas 지정자가 하나의 변수 선언에 2개이상 사용되었습니다.",
  "rule.saqt.q.ccpp.7318.example.0.safe": "라인 1: alignas 지정자는 변수 선언당 가장 엄격한 값 하나를 지정하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.7318.name": "객체 정렬 다중 지정",
  "rule.saqt.q.ccpp.7319.description": "원자적 객체는 멀티스레드 환경에서 안전하게 데이터를 공유하기 위해 사용하는 특별한 변수입니다. 이러한 객체는 접근하기 전에 반드시 적절하게 초기화되어야 합니다. 원자적 객체를 초기화되지 않은 상태에서 접근하거나, 표준 라이브러리에서 제공하는 초기화 방법이 아닌 일반적인 할당 연산자를 사용하여 초기화 하는 것은 정의되지 않은 동작(Undefined Behavior)을 유발하여 원자적 객체의 원래 사용 취지인 자원 경합을 방지하는 역할을 제대로 수행할 수 없게 만듭니다.\n모든 원자적 객체를 접근하기 전 올바른 방법으로 초기화 해야 합니다. 여기서 말하는 올바른 방법이란 두 가지 입니다. 첫 번째는 선언과 동시에 초기화 하는 것이고, 두 번째는 표준 라이브러리에서 제공하는 정해진 초기화 함수를 호출하는 것입니다. 일반적인 할당 연산자를 사용한 초기화는 내부 상태 초기화를 보장하지 못하므로 올바른 초기화 방법이라 볼 수 없습니다.",
  "rule.saqt.q.ccpp.7319.example.0.dangerous": "라인 3: 원자적 객체를 초기화 없이 선언했습니다.\n라인 4: 원자적 객체를 올바르게 초기화 하기 전에 사용했습니다.",
  "rule.saqt.q.ccpp.7319.example.0.safe": "라인 6: 원자적 객체를 올바르게 초기화 한 이후 사용해야 합니다.",
  "rule.saqt.q.ccpp.7319.name": "초기화되지 않은 원자적 객체",
  "rule.saqt.q.ccpp.7320.description": "C언어는 수식의 값을 더 좁은 본질적 타입(Essential type)의 객체나 다른 본질적 타입의 객체에 할당하는 행위를 허용합니다. 하지만 이러한 암시적 변환은 값, 부호, 또는 정밀도 손실과 같은 의도치 않은 결과를 초래할 수 있습니다.\n\n따라서 이러한 잠재적 문제를 방지하기 위해서는 본질적 타입 모델을 적용할 필요가 있습니다.  여기서 본질적 타입이란, C 타입의 근본적인 성질(부호, 크기, 실수 여부 등)에 따라 분류된 타입 카테고리를 의미합니다. 예를 들어 부호 없는 정수나 본질적 문자(Essentially char)과 같은 항목이 있습니다. 이 모델을 통해 할당되는 수식의 타입과 할당받는 객체의 타입이 일치하는지 검사합니다.\n\n이때, 실용적인 코딩을 위해서 일부 상황은 예외로 두고 검사에서 제외합니다. 예를 들어 부호 있는 정수 상수 수식의 값이 할당 대상인 본질적 부호 없는 타입에서 표현될 수 있는 경우 입니다. 이것은 컴파일러가 상수 값을 컴파일 시점에 확인하여 안전성을 보장할 수 있습니다.\n만약 할당되는 수식의 타입과 할당받는 객체의 타입이 다르다면, 이를 명시적 캐스팅(Explicit casting) 을 통해 할당되는 수식의 본질적 타입을 할당받는 객체와 일치시켜야 합니다. 이를 통해 개발자가 의도한 타입 변환임을 분명히 밝히고 컴파일러가 암시적 변환에 의존하지 않게 만들 수 있습니다. 또한 기본적으로 다른 본질적 타입 카테고리간의 할당은 피해야 합니다.",
  "rule.saqt.q.ccpp.7320.example.0.dangerous": "라인 1: 부호 없는 정수 타입의 수식을 다른 본질적 타입인 본질적 문자 객체에 할당했습니다.\n라인 3: 32비트 정수 타입 수식을 더 좁은 8비트 정수 타입 객체에 할당했습니다.\n라인 6: 부호 있는 정수 타입 수식을 부호 없는 정수 타입 수식에 할당했습니다.",
  "rule.saqt.q.ccpp.7320.example.0.safe": "라인 1: 우측항의 수식을 본질적 문자에 해당하는 수식을 사용해야 합니다. 혹은 명시적 캐스팅을 사용할 수 있습니다.\n라인 3: 우측항의 정수 상수 값을 충분히 표현할 수 있는 넓이를 가지도록 좌측항의 타입을 변경해야 합니다. 혹은 명시적 캐스팅을 사용할 수 있습니다.\n라인 6: 우측항의 수식을 명시적인 캐스팅을 사용하여 의도한 수식이라고 알려주어야 합니다.",
  "rule.saqt.q.ccpp.7320.name": "부적절한 암시적 타입 변환에 의한 할당",
  "rule.saqt.q.ccpp.7321.description": "C 언어는 일반적인 산술 변환이 수행되는 연산자의 두 피연산자가 서로 다른 본질적 타입 카테고리를 가지는 것을 허용합니다. 하지만 이러한 암시적 변환은 값, 부호 또는 정밀도 손실과 같은 의도치 않은 결과를 초래할 수 있습니다.\n\n따라서 이러한 잠재적 문제를 방지하기 위해서는 이항 연산자의 두 피연산자가 동일한 본질적 타입 카테고리에 속하는지 검사할 필요가 있습니다. 여기서 본질적 타입이란, C 타입의 근본적인 성질(부호, 크기, 실수 여부 등)에 따라 분류된 타입 카테고리를 의미합니다. 예를 들어 부호 없는 정수나 본질적 문자(Essentially Character)와 같은 항목이 있습니다. 이 모델을 통해 산술 연산의 피연산자들이 본질적으로 동일한 타입 카테고리에 속하는지를 검사합니다.\n\n이때, 실용적인 코딩을 위해서 일부 상황은 예외로 두고 검사에서 제외합니다. 예를 들어 char 타입과 정수 타입이 + 또는 - 연산에 사용되는 경우입니다. 이것은 컴파일러가 해당 식의 의도를 파악하고 안전하게 변환할 수 있기 때문입니다.\n만약 연산자의 두 피연산자가 서로 다른 본질적 타입 카테고리라면, 이를 명시적 캐스팅(Explicit casting)을 통해 양쪽의 본질적 타입을 일치시켜야 합니다. 이를 통해 개발자가 의도한 타입 변환임을 분명히 밝히고 컴파일러의 암시적 변환에 의존하지 않게 만들 수 있습니다. 또한 char 와 정수 간의 + 또는 0 연산과 같이 연산과 같이 규칙 문서에서 예외로 명시한 경우를 제외하고는 다른 본질적 타입 카테고리 간의 연산은 피해야 합니다.",
  "rule.saqt.q.ccpp.7321.example.0.dangerous": "라인 5: / 연산의 피연산자로 서로 다른 본질적 타입을 가진 피연산자를 사용했습니다.\n라인 6: * 연산의 피연산자로 서로 부호가 다른 피연산자를 사용했습니다.",
  "rule.saqt.q.ccpp.7321.example.0.safe": "라인 5: 피연산자들의 타입을 명시적인 캐스팅을 사용하여 일치시켜야 합니다.\n라인 6: 피연산자 타입을 변경하여 부호를 일치시켜야 합니다. 혹은 라인 5처럼 명시적 캐스팅을 사용할 수 있습니다.",
  "rule.saqt.q.ccpp.7321.name": "부적절한 암시적 타입 변환에 의한 연산",
  "rule.saqt.q.ccpp.7322.description": "C언어에서 함수 매개변수로 특정 크기의 배열을 선언하는 것은 실제로는 포인터로 취급되는 특성이 있습니다. 이로 인해 컴파일러는 인자로 전달된 배열의 실제 크기를 알지 못하며, 개발자가 의도한 크기보다 작은 배열이 전달되어도 오류를 발생시키지 않습니다. \n\n개발자가 함수 매개변수의 배열을 특정 크기로 명시한 것은  해당 인자에 이 크기보다 더 큰 유효한 메모리 공간이 저장되기를 기대하는 것일 수 있습니다. 따라서 이러한 상황은 함수 내부에서 메모리 경계를 벗어나는 버퍼 오버플로우(Buffer overflow)와 같은 문제를 유발하여 프로그램의 예기치 않은 동작이나 보안 취약점으로 이어질 수 있습니다.\n함수 호출시 전달되는 배열 인자가 함수 원형에 명시된 크기 이상의 원소를 가지고 있는지 확인해야 합니다. 만약 인자의 크기가 더 작다면, 함수 원형에 맞는 크기의 배열을 사용하도록 수정하거나, 함수 매개변수에 명시적인 배열 크기를 작성하지 않고 별도의 인자로 함께 전달하도록 함수를 재정의 해야 합니다.",
  "rule.saqt.q.ccpp.7322.example.0.dangerous": "라인 6: 함수 매개변수에 명시된 배열 크기보다 작은 크기를 가지는 배열을 인자로 전달했습니다.",
  "rule.saqt.q.ccpp.7322.example.0.safe": "라인 6: 최소 함수 매개변수에 명시된 배열 크기보다 같거나 큰 배열을 인자로 전달해야 합니다.",
  "rule.saqt.q.ccpp.7322.name": "함수 매개변수 배열 오버플로우",
  "rule.saqt.q.ccpp.7323.description": "반환 값이 있는 함수는 일반적으로 호출 결과에 대한 중요한 정보를 전달합니다. 하지만 이러한 함수의 반환 값을 사용하지 않고 호출만 하는 것은 잠재적인 버그를 숨길 수 있습니다. 예를 들어 메모리 할당 함수가 실패했을 때 반환하는 널 포인터를 무시하면 이후 코드에서 널 포인터 역참조와 같은 심각한 문제가 발생할 수 있습니다. 이 규칙은 이러한 위험을 방지하고, 코드의 의도를 명확하게 하기 위해 반환 값을 사용하도록 강제합니다.\n반환 값이 있는 함수를 호출했을 경우 항상 반환 값을 사용해야 합니다. 만약 반환 값을 의도적으로 사용하지 않으려는 경우, void로 명시적으로 캐스팅하여 의도를 분명히 밝혀야 합니다.",
  "rule.saqt.q.ccpp.7323.example.0.dangerous": "라인 6: 반환 값이 있는 함수의 반환 값이 사용되지 않았습니다.",
  "rule.saqt.q.ccpp.7323.example.0.safe": "라인 6: void 캐스팅을 통해 명시적으로 사용하지 않겠다는 의도를 표현하거나, 라인5와 같이 반환 값을 명시적으로 사용해야 합니다.",
  "rule.saqt.q.ccpp.7323.name": "함수 반환 값 미사용",
  "rule.saqt.q.ccpp.7325.description": "_Noreturn 함수 지정자는 해당 함수가 호출자에게 절대 제어를 반환하지 않음을 나타냅니다. C 표준에 따르면 반환되지 않는 함수는 반환 값을 가질 수 없으므로 반드시 void 반환 타입을 가져야 합니다. 만약 _Noreturn 함수가 void 가 아닌 다른 반환 타입을 가지도록 선언하면 이는 정의되지 않은 동작(Undefined behavior)을 유발할 수 있습니다.\n_Noreturn 으로 선언된 모든 함수는 반드시 void 반환 타입을 사용하도록 수정해야 합니다. 이는 함수 선언과 정의 모두에 적용됩니다.",
  "rule.saqt.q.ccpp.7325.example.0.dangerous": "라인 1: _Noreturn 으로 선언한 함수의 반환 타입을 void 로 선언하지 않았습니다.",
  "rule.saqt.q.ccpp.7325.example.0.safe": "라인 1: _Noreturn 으로 선언한 함수의 반환 타입은 반드시 void 로 선언해야 합니다.",
  "rule.saqt.q.ccpp.7325.name": "_Noreturn 으로 선언한 함수에서 잘못된 반환 타입 사용",
  "rule.saqt.q.ccpp.7327.description": "#if, #ifdef, #ifndef 와 같은 조건부 컴파일 지시자는 반드시 시작된 동일한 파일 내에서 #endif와 같은 조건부 컴파일 종료 지시자로 종료되어야 합니다. 여러 파일에 걸쳐 조건부 컴파일 블록을 분산시키면 코드의 가독성이 떨어지고, 유지보수 시 예기치 않은 오류가 발생할 가능성이 높아집니다.\n#if, #ifdef, #ifndef 지시자가 시작된 파일과 조건부 컴파일 종료 지시자가 있는 파일이 다른 경우, 조건부 컴파일 블록 전체를 하나의 파일로 옮겨야 합니다. 필요하다면 새로운 헤더 파일을 만들어 #include 하여 사용해야 합니다.",
  "rule.saqt.q.ccpp.7327.example.0.dangerous": "라인 2: #if 지시자가 시작하였으나 현재 파일에서 대응하는 조건부 컴파일 종료 지시자가 없습니다.",
  "rule.saqt.q.ccpp.7327.example.0.safe": "라인 4: 한 파일 내에서 라인2와 대응하는 올바른 조건부 컴파일 종료 지시자를 작성해야 합니다.",
  "rule.saqt.q.ccpp.7327.name": "조건부 컴파일 지시자 파일 내 불일치",
  "rule.saqt.q.ccpp.7328.description": "memcmp 함수는 메모리 블록의 특정 바이트 수만큼을 비교하는 함수이므로 널 종료 문자열을 비교하는 데 사용해서는 안 됩니다. memcmp는 널 종료 문자인 \\0를 일반 바이트로 취급하여, \\0 이후의 바이트까지도 비교 범위에 포함시킵니다.\n만약 memcmp의 비교 대상 문자열의 실제 길이가 memcmp의 세 번째 인자보다 짧다면, 널 종료 문자 뒤에 남아 있는 메모리 영역의 내용에 따라 비교 결과가 달라질 수 있습니다. 이는 논리적으로 동일한 문자열임에도 불구하고 memcmp는 다른 것으로 판단하게 만들어 예기치 않은 동작을 유발합니다.\n널 종료 문자열을 비교할 때는 memcmp 대신 strcmp 나 strncmp 함수를 사용해야 합니다. 만약 memcmp를 만드시 사용해야 한다면 세번째 인자에 strlen() 함수로 얻은 문자열의 실제 길이를 사용해야 합니다.",
  "rule.saqt.q.ccpp.7328.example.0.dangerous": "라인 3: strcpy를 사용하여 buffer에 널 종료 문자열을 저장했습니다.\n라인 4: memcmp의 두 번째 인자에 널 종료 문자열을 사용했습니다.",
  "rule.saqt.q.ccpp.7328.example.0.safe": "라인 4: 널 종료 문자열을 비교하려면 memcmp 대신 strcmp와 같은 함수를 사용해야 합니다.",
  "rule.saqt.q.ccpp.7328.name": "memcmp를 이용한 널 종료 문자열 비교",
  "rule.saqt.q.ccpp.7329.description": "C11 표준 스레드 라이브러리의 mtx_timedlock() 함수는 타임아웃 기능을 지원하는 뮤텍스 객체에만 사용해야 합니다. 이 함수는 반드시 mtx_timed 또는 mtx_timed | mtx_recursive 속성으로 초기화된 뮤텍스 객체에 호출되어야 합니다. 만약 타임아웃을 지원하지 않는 뮤텍스 객체에 이 함수를 사용하면, 정의되지 않은 동작(Undefined behavior)이 발생합니다.\nmtx_timedlock() 함수를 호출하는 뮤텍스 객체는 mtx_timed 또는 mtx_timed | mtx_recursive 속성을 사용하여 초기화해야 합니다.",
  "rule.saqt.q.ccpp.7329.example.0.dangerous": "라인 4: 뮤텍스를 타임아웃 기능이 지원되지 않는 형태로 초기화 했습니다.\n라인 11: mtx_timedlock() 에 타임아웃 기능을 지원하지 않은 뮤텍스를 전달했습니다.",
  "rule.saqt.q.ccpp.7329.example.0.safe": "라인 4: 뮤텍스를 타임아웃 기능이 지원되는 형태로 초기화 했습니다.\n라인 11: mtx_timedlock() 에 타임아웃을 지원하는 뮤텍스를 전달해야 합니다.",
  "rule.saqt.q.ccpp.7329.name": "타임아웃 뮤텍스 미지원 객체 사용",
  "rule.saqt.q.ccpp.7330.description": "thrd_t, mtx_t, cnd_t, tss_t와 같은 C11 표준 스레드 라이브러리의 객체들은 오직 정해진 표준 라이브러리 함수를 통해서만 접근해야 합니다. 이러한 객체들은 스레드, 뮤텍스, 조건 변수와 같은 고유한 자원을 나타내며, 이러한 자원을 직접적인 조작하는 것은 정의되지 않은 동작(Undefined behavior) 을 초래합니다. 예를 들어, 뮤텍스를 직접 복사하거나 스레드 식별자를 == 연산자로 비교하는 것은 허용되지 않습니다. \n\n따라서 이러한 객체들의 내부 구조를 보호하여 스레드 관련 코드를 안전하게 유지해야 할 필요가 있습니다.\n스레드 관련 객체를 접근할 때는 항상 해당 겍체에 맞는 표준 라이브러리 함수를 사용해야 합니다.",
  "rule.saqt.q.ccpp.7330.example.0.dangerous": "라인 5: 스레드 관련 객체를 == 연산자를 통해 비교했습니다.",
  "rule.saqt.q.ccpp.7330.example.0.safe": "라인 5: 스레드 관련 객체는 올바른 표준 라이브러리 함수를 통해서만 이루어져야 합니다.",
  "rule.saqt.q.ccpp.7330.name": "스레드 관련 객체에 대한 부적절한 접근",
  "rule.saqt.q.ccpp.7331.description": "뮤텍스와 조건 변수와 같은 스레드 동기화 객체는 사용되기 전에 반드시 mtx_init() 또는 cnd_init() 함수를 통해 초기화되어야 합니다. 초기화되지 않은 동기화 객체를 사용하는 것은 정의되지 않은 동작(Undefined behavior)을 유발하며, 이는 경쟁 조건과 같은 심각한 문제를 초래할 수 있습니다.\n\n따라서 스레드가 생성되어 동기화 객체에 접근하기 전에 모든 관련 객체를 명시적으로 초기화하는 것이 중요합니다.\n스레드가 접근할 수 있는 모든 전역, 또는 공유 스레드 동기화 객체는 해당 스레드가 생성되기 전에 초기화 해야 합니다. 이를 위한 가장 안전한 방법은 main() 함수와 같은 프로그램의 시작점에서 thrd_create() 와 같은 함수를 호출하기 전에 모든 뮤텍스와 조건 변수를 초기화 하는 것입니다.",
  "rule.saqt.q.ccpp.7331.example.0.dangerous": "라인 6: main 함수가 아닌 곳에서 스레드 동기화 객체를 초기화 했습니다.\n라인 12: 스레드 생성 함수가 호출된 이후 스레드 동기화 객체를 초기화 했습니다.",
  "rule.saqt.q.ccpp.7331.example.0.safe": "라인 10-11: main 함수에서 스레드 생성 함수가 호출되기 전 모든 스레드 동기화 객체를 초기화해야 합니다.",
  "rule.saqt.q.ccpp.7331.name": "스레드 동기화 객체의 부적절한 초기화 위치",
  "rule.saqt.q.ccpp.7332.description": "하나의 조건 변수는 단 하나의 뮤텍스 객체하고만 연관되어야 합니다. 만약 동일한 조건 변수가 여러 스레드에서 각기 다른 뮤텍스와 함께 사용될 경우, cnd_signal()이나 cnd_broadcast() 함수를 호출했을 때 어떤 뮤텍스가 잠금 해제될지 예측할 수 없는 정의되지 않은 동작(Undefined behavior)이 발생합니다. 이는 프로그램의 동작을 비결정적으로 만들어 디버깅을 매우 어렵게 만듭니다.\n각 조건 변수는 반드시 하나의 뮤텍스하고만 결합하여 사용해야 합니다. 만약 여러 개의 뮤텍스에 대한 상태 변화를 기다려야 한다면, 각각의 뮤텍스에 대해 별도의 조건 변수를 생성하고 사용해야 합니다.",
  "rule.saqt.q.ccpp.7332.example.0.dangerous": "라인 7: 조건 변수 Cnd가 뮤텍스 Ra와 결합되었습니다.\n라인 14: 조건 변수 Cnd가 뮤텍스 Rb와 결합하면서 2개 이상의 뮤텍스에 함께 사용되었습니다.",
  "rule.saqt.q.ccpp.7332.example.0.safe": "라인 8, 15: 각각의 뮤텍스에 서로 다른 조건 변수를 연결해야 합니다.",
  "rule.saqt.q.ccpp.7332.name": "조건 변수와 뮤텍스 다중 연결",
  "rule.saqt.q.ccpp.7333.description": "스레드별 저장소 객체는 스레드에 의해 접근되기 전에 반드시 tss_create() 함수를 통해 생성되어야 합니다. 스레드가 생성된 이후에 스레드별 저장소 객체를 생성하면, 이미 실행을 시작한 스레드가 초기화되지 않은 객체에 접근하여 정의되지 않은 동작(Undefined behavior)을 유발할 수 있습니다. \n\n따라서 프로그램의 시작점에서 모든 스레드별 저장소 포인터를 미리 생성해야 합니다.\n스레드별 저장소 객체는 해당 스레드가 생성되기 전에 tss_create() 함수를 통해 명시적으로 생성해야 합니다. 이를 위한 가장 안전한 방법은 main() 함수와 같은 프로그램의 시작점에서 thrd_create() 와 같은 함수를 호출하기 전에  모든 스레드별 저장소 객체를 생성하는 것입니다.",
  "rule.saqt.q.ccpp.7333.example.0.dangerous": "라인 6: main 함수가 아닌 곳에서 스레드별 저장소 객체를 생성했습니다.\n라인 12: 스레드 생성 함수가 호출된 이후 스레드별 저장소 객체를 생성했습니다.",
  "rule.saqt.q.ccpp.7333.example.0.safe": "라인 10-11: main 함수에서 스레드 생성 함수가 호출되기 전 모든 스레드별 저장소 객체를 생성해야 합니다.",
  "rule.saqt.q.ccpp.7333.name": "스레드별 저장소의 부적절한 초기화 위치",
  "rule.saqt.q.ccpp.7334.description": "제네릭 선택 표현식은 _Generic 키워드를 사용하며, C11 표준에서 매크로의 인자 타입을 컴파일 타임에 질의하는 목적으로 설계되었습니다. 이러한 제네릭 선택 표현식은 반드시 함수형 매크로 내부에서만 사용해야 합니다. _Generic을 직접 사용하면 컴파일러가 이미 타입을 알고 있는 지역 변수에 대해 불필요한 질의를 수행하는 것이므로 코드의 의도를 모호하게 만들어 불필요한 혼동을 초래할 수 있습니다.\n_Generic 키워드는 반드시 함수형 매크로의 본문 내부에 포함시켜 매크로의 인자 타입을 질의하도록 만들어야 합니다. 이는 _Generic의 설계 의도에 맞게 사용함으로써 코드의 명확성과 재활용성을 높이는 방법입니다.",
  "rule.saqt.q.ccpp.7334.example.0.dangerous": "라인 2: _Generic 키워드가 소스 코드에서 직접 사용되었습니다.",
  "rule.saqt.q.ccpp.7334.example.0.safe": "라인 1: _Generic 키워드를 함수명 매크로 본문에 배치해 설계 의도에 맞게 사용해야 합니다.",
  "rule.saqt.q.ccpp.7334.name": "_Generic 직접 사용",
  "rule.saqt.q.ccpp.7351.description": "공용체의 멤버로 비트 필드(bit field)는 선언될 수 없습니다. 비트 필드가 메모리 내에서 정확히 어떤 비트 위치를 차지할지는 구현 의존적(implementation-defined)입니다. 따라서 하나의 공용체에 비트 필드와 다른 멤버를 함께 선언하면, 비트 필드가 다른 멤버와 어떻게 중첩될지 예측할 수 없습니다. 이는 한 타입의 메모리 영역을 다른 타입으로 해석하여 접근하는 기법인 타입 펀닝(type-punning)시 비결정적인 동작을 유발합니다.\n만약 타입 펀닝을 의도하지 않았다면, 공용체와 비트 필드를 사용해도 메모리 공간을 절약할 수 없으므로 무의미합니다.\n공용체의 멤버로 비트 필드를 직접적으로 선언하지 않도록 합니다. 만약 비트 필드와 다른 멤버를 함께 사용해야 한다면 비트 필드를 공용체 내부에서 사용할 구조체의 멤버로 선언하여 모호성을 제거해야 합니다.",
  "rule.saqt.q.ccpp.7351.example.0.dangerous": "라인 2: 공용체의 멤버를 비트 필드로 선언했습니다.",
  "rule.saqt.q.ccpp.7351.example.0.safe": "라인 3: 공용체의 멤버를 직접적으로 비트 필드로 선언하지 않고, 공용체에서 사용하는 구조체 타입의 멤버로 선언해야 합니다.",
  "rule.saqt.q.ccpp.7351.name": "공용체 내의 비트 필드 선언",
  "rule.saqt.q.ccpp.7352.description": "정수 상수의 타입은 값의 크기, 진법, 그리고 컴파일러가 지원하는 정수 타입의 크기에 따라 달라질 수 있어 혼란을 야기합니다. 특히 접미사(U, u)가 없는 16진수 상수는 컴파일러 환경에 따라 부호 있는 타입이 될 수도, 부호 없는 타입이 될 수도 있습니다. 이는 코드의 이식성과 신뢰성을 해칠 수 있습니다. 따라서 부호 없는 타입으로 표현되는 모든 정수 상수에는 반드시 U 접미사를 명시하여 개발자의 의도를 명확히 해야 합니다.\n다만 정수 상수는 운영체제 환경에 따라 부호 여부나 표시 가능한 값의 범위가 변경될 수 있습니다. 따라서 10진수가 32비트 부호 있는 정수값을 넘었는데 U접미사가 없거나, 16진수가 16비트 부호 있는 정수 값을 넘었는데 U 접미사가 없는 두가지 경우를 검출합니다.\n부호 없는 타입으로 해석될 수 있는 모든 정수 상수에 U 접미사를 추가해야 합니다. 이때 U의 대소문자 여부는 상관 없습니다.",
  "rule.saqt.q.ccpp.7352.example.0.dangerous": "라인 2: 환경에 따라 16비트 부호 없는 타입으로 간주되는 16진수 정수 상수에 U 접미사가 누락되었습니다.",
  "rule.saqt.q.ccpp.7352.example.0.safe": "라인 2: 16비트 부호 없는 타입으로 간주되는 16진수 정수 상수에는 U 접미사를 붙어야 합니다.",
  "rule.saqt.q.ccpp.7352.name": "부호 없는 정수 상수 접미사 누락",
  "rule.saqt.q.ccpp.7373.description": "C언어에서는 명시적 형변환을 통해 표현식의 값을 다른 타입으로 변환할 수 있습니다. 하지만 이러한 변환은 원본 값의 본질적 타입(Essential type) 범주와 다른 범주로 변환될 때 오해의 소지가 있는 동작을 유발할 수 있습니다. 예를 들어 부동 소수점 값을 정수 타입으로 변환하거나, 정수 값을 열거형 또는 부울 타입으로 변환하는 경우 개발자의 의도와 다르게 계산이 이루어지거나 예상치 못한 결과로 이어질 수 있습니다. \n\n따라서 코드의 명확성과 예측 가능성을 높이고 의도치 않은 데이터 손실을 방지하기 위해 이러한 변환을 제한해야 합니다.\n문제가 될 수 있는 본질적 타입 범주 간의 명시적 형변환은 피해야 합니다. 특히 불리언 타입을 다른 어떤 타입으로도 상호간에 변환하지 않아야 하며, 모든 타입의 값을 열거형 타입으로 변환해서는 안 됩니다. 또한 본질적 실수 타입을 본질적 문자 타입으로 변환하는 것을 피해야 합니다.",
  "rule.saqt.q.ccpp.7373.example.0.dangerous": "라인 4: 부호 있는 정수를 본질적 불리언 타입으로 변환했습니다.\n라인 5: 실수를 본질적 문자 타입으로 변환했습니다.\n라인 6: 부호 있는 정수를 본질적 열거형 타입으로 변환했습니다.",
  "rule.saqt.q.ccpp.7373.example.0.safe": "라인 3: 부호 있는 정수를 본질적 불리언 타입으로 변환할때는 허용된 숫자인 0 이나 1만 사용해야 합니다.\n라인 4: 부호 없는 정수와 부호 있는 정수처럼 허용된 변환을 사용해야 합니다.\n라인 5: 모든 본질적 타입은 열거형 타입으로의 변환이 불가능하므로 해당 열거형 타입에 맞는 값만 사용해야 합니다.",
  "rule.saqt.q.ccpp.7373.name": "부적절한 본질적 타입 변환",
  "rule.saqt.q.ccpp.7374.description": "함수 포인터는 C언어에서 함수의 메모리 주소를 가리키는 포인터입니다. 만약 함수 포인터와 다른 타입, 혹은 함수 시그니처가 다른 함수 포인터로의 변환은 C 표준에서 정의되지 않은 동작(Undefined behavior)을 유발하여 예기치 않은 프로그램 충돌이나 오작동으로 이어질 수 있습니다.\n함수 포인터의 변환과 관련하여 잠재적인 오류를 방지하기 위해 다음 사항을 준수해야 합니다. 함수 포인터는 오직 동일한 타입의 함수 포인터로만 대입해야 합니다. 다른 함수 포인터 타입으로 변환하는 것은 함수 시그니처가 같더라도 잘못된 대입일 수 있으므로 피하도록 합니다. 또한, 객체 포인터나 정수 등 다른 타입의 값을 함수 포인터로 변환할 수 없습니다. 유일한 예외는 널 포인터 값을 함수 포인터에 대입하는 것입니다.",
  "rule.saqt.q.ccpp.7374.example.0.dangerous": "라인 7: int 타입 객체 포인터를 명시적으로 함수 포인터로 변환했습니다.\n라인 8: 함수 식별자를 함수 시그니처가 호환되지 않는 함수 포인터로 변환했습니다.",
  "rule.saqt.q.ccpp.7374.example.0.safe": "라인 6: 오직 널 포인터 상수만 함수 포인터로 변환하는 것이 허용됩니다.\n라인 7: 함수 식별자는 함수 시그니처가 동일한 함수 포인터에 대해서만 대입해야 합니다.",
  "rule.saqt.q.ccpp.7374.name": "부적절한 함수 포인터 변환",
  "rule.saqt.q.ccpp.7389.description": "C 언어에서 const, volatile, restrict, _Atomic과 같은 한정자는 변수나 반환 타입의 속성을 지정합니다. 하지만 C 표준은 이러한 한정자를 함수 타입 자체에 직접 적용하는 것을 허용하지 않습니다.\n예를 들어 typedef를 사용하여 함수 타입을 정의한 후, 그 타입에 다시 한정자를 붙이면 정의되지 않은 동작(Undefined behavior)을 발생시킵니다. 이는 함수의 반환 타입을 한정하는 경우나 함수 포인터 자체를 한정하는 경우와는 다른 문제이므로 명확한 구분이 필요합니다.\n함수 타입에 직접 한정자를 적용해서는 안 됩니다. 만약 반환 타입이나 함수 포인터를 한정하고 싶다면 typedef를 정의할 때 한정자를 올바른 위치에 명시해야 합니다.",
  "rule.saqt.q.ccpp.7389.example.0.dangerous": "라인 2: 함수 타입에 const 한정자를 직접 적용했습니다.",
  "rule.saqt.q.ccpp.7389.example.0.safe": "라인 2-3: const 한정자를 함수 타입에 직접 적용하는 대신, 용도에 따라 함수를 가리키는 포인터에 적용하거나 함수 반환 타입에 적용해야 합니다.",
  "rule.saqt.q.ccpp.7389.name": "함수 타입에 한정자 사용 금지",
  "rule.saqt.q.ccpp.7390.description": "C언어에서 함수가 값을 반환하거나 특정 연산이 임시 결과를 생성하면, 그 결과는 임시 수명(Temporary lifetime)을 가진 임시 객체(Temporary object)가 됩니다. 예를 들어 구조체나 공용체가 배열을 멤버로 포함할 경우 이 임시 객체의 배열 멤버는 임시 수명을 가집니다.\n\n이러한 임시 객체의 배열에 대해 배열-포인터 변환이 발생하면, 그 결과로 생성된 포인터는 임시 객체의 수명이 끝나는 시점에 더 이상 유효하지 않은 댕글링 포인터(Dangling pointer)가 됩니다. 이 댕글링 포인터로 메모리에 접근하거나 값을 수정하려는 시도는 정의되지 않은 동작(Undefined behavior)을 유발하여 예측 불가능한 결과를 초래합니다.\n임시 객체인 구조체나 공용체의 배열 멤버에 대해 포인터 변환이 일어나도록 사용해서는 안 됩니다. 이러한 문제를 방지하기 위해 임시 객체를 이름 있는 지역 변수에 할당한 후 안전하게 접근하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.7390.example.0.dangerous": "라인 9: getS1() 함수가 반환한 임시 객체의 배열에 대한 포인터 변환이 발생하여 댕글링 포인터가 대입됩니다.\n라인 10: getS1() 함수가 반환한 임시 객체의 배열 멤버를 수정 가능한 lvalue로 사용했습니다.",
  "rule.saqt.q.ccpp.7390.example.0.safe": "라인 9: getS1() 함수가 반환하는 임시 객체를 지역 변수에 대입하여 정상 수명을 부여해야 합니다.\n라인 10-11: temp는 더이상 임시 객체가 아니므로, temp.array는 안전하게 사용할 수 있습니다.",
  "rule.saqt.q.ccpp.7390.name": "임시 객체 배열의 포인터 변환 금지",
  "rule.saqt.q.ccpp.7413.description": "프로그램의 안정성과 예측 가능성을 보장하기 위해 스레드의 수명 주기 처리는 단 한 번만 수행되어야 합니다. \n\n여기서 이야기 하는 수명 주기 처리란, 생성된 스레드를 스레드 관리 API를 통해 종료를 대기(Join)시키거나, 시스템 자원 해제를 위해 분리(Detach)하는 것을 의미합니다.\n\n스레드가 이미 종료되었거나 분리되어 더 이상 유효하지 않은 상태가 되면, 해당 스레드에 대해 재차 종료를 시도하거나 분리 명령을 내리는 행위는 시스템 자원 관리의 혼란을 야기하고 정의되지 않은 동작(Undefined behavior)을 초래합니다. 이는 프로그램의 충돌이나 메모리 손상으로 이어질 수 있습니다.\n모든 스레드는 생성 후 단 한 번만 해당 스레드를 종료하거나 분리하는 함수를 호출하여 수명 주기를 완료해야 합니다.\n\n스레드 객체의 유효성 여부를 명확히 추적하고, 한 번 사용된 스레드 객체에 대해서는 이후의 관련 함수 호출을 제어 로직으로 방지하는 것이 좋습니다.",
  "rule.saqt.q.ccpp.7413.example.0.dangerous": "라인 8: 스레드 객체를 종료 대기 시켰습니다.\n라인 9: 이미 종료 대기시킨 스레드 객체를 다시 한번 처리했습니다.",
  "rule.saqt.q.ccpp.7413.example.0.safe": "라인 9, 11: 제어 흐름 내에서 스레드 객체의 수명 주기 처리가 논리적으로 단 한번만 실행되도록 해야 합니다.",
  "rule.saqt.q.ccpp.7413.name": "이미 처리된 스레드 중복 처리",
  "rule.saqt.q.ccpp.7414.description": "C11 표준의 스레드 라이브러리에서 사용되는 스레드, 뮤텍스, 조건 변수, 스레드별 저장소와 같은 스레드 및 동기화 객체는 자동 저장 기간이나 스레드 저장 기간을 가져서는 안 됩니다.\n\n만약 이러한 객체들이 자동 및 스레드 저장 기간을 가지게 된다면 함수 호출이 끝날 때 소멸되거나 스레드가 종료될 때 소멸됩니다.\n\n이때 해당 객체를 참조하는 다른 스레드가 객체의 수명 외부에서 접근할 경우 정의되지 않은 동작(Undefined behavior)이 발생할 수 있습니다.\n스레드 및 동기화 객체는 정적 저장 기간 또는 동적 저장 기간을 가져야 합니다.\n\n즉, 함수 내의 지역 변수로 선언하지 말고 전역 변수나 정적 변수로 선언하거나 동적 할당 함수를 사용하여 힙 메모리 영역에 할당해야 합니다.",
  "rule.saqt.q.ccpp.7414.example.0.dangerous": "라인 4: 동기화 생성 함수에 전달된 동기화 객체가 지역 변수로 선언되어 자동 저장 기간을 가집니다.\n라인 7: 스레드 생성 함수에 전달된 스레드 객체가 지역 변수로 선언되어 자동 저장 기간을 가집니다.",
  "rule.saqt.q.ccpp.7414.example.0.safe": "라인 1, 7: 스레드 및 동기화 객체는 정적 저장 기간이나 동적 저장 기간을 가져야 합니다.",
  "rule.saqt.q.ccpp.7414.name": "부적절한 스레드 및 동기화 객체 저장 기간",
  "rule.saqt.q.ccpp.7426.description": "문자열 내에서 사용되는 8진수 이스케이프 시퀀스, 16진수 이스케이프 시퀀스, 또는 유니버설 문자 이름 반드시 명확하게 종료되어야 합니다.\n\n이것은 이스케이프 시퀀스 뒤에 오는 문자가 시퀀스의 일부로 오인되거나 의도와 다르게 문자열이 해석될 때 올바른 문자열을 출력하지 못할 수 있기 때문입니다.\n\n예를 들어 `\\x1g` 는 특정한 16진수 이스케이프 값을 표시하려고 의도했을 수 있지만, 실제로 존재하지 않는 값이므로 `\\x1` 과 `g`라는 두 개의 문자로 해석됩니다.\n\n이때 유효한 이스케이프 시퀀스 길이는 다음과 같습니다.\n8진수 이스케이프 시퀀스는 `\\` 뒤 1~3자리 숫자, 16진수 이스케이프 시퀀스는 `\\x` 뒤 1~4자리 숫자 및 16진수 표시 문자로 구성해야 합니다. 유니버설 문자 이름은 `\\u`일 때 4자리, `\\U`일 때 8자리 숫자 및 16진수 표시 문자로 구성해야 합니다.\n\n이와 같이 시퀀스 뒤에 다른 문자가 오면 잘못된 문자를 입력한 것일 수 있으므로 코드의 명확성을 높이기 위해 이러한 모호성을 제거하고 올바른 이스케이프 시퀀스를 작성해야 합니다.\n8진수 이스케이프 시퀀스, 16진수 이스케이프 시퀀스, 또는 유니버설 문자 이름은 다음에 포는 문자가 시퀀스의 일부로 오인될 수 없도록 명확하게 종료해야 합니다.\n\n종료하는 방법은 다음과 같습니다. 첫째, 문자열 리터럴을 종료하여 이스케이프 시퀀스를 끝냅니다. 둘째, 인접한 문자열 리터럴을 사용하여 이스케이프 시퀀스 다음에 오는 문자를 분리합니다. 셋째, 이스케이프 시퀀스 바로 다음에 또 다른 이스케이프 시퀀스를 배치하여 선행 시퀀스를 종료합니다.",
  "rule.saqt.q.ccpp.7426.example.0.dangerous": "라인 1-3: 문자열 내의 이스케이프 시퀀스가 명확하게 종료되지 않았습니다.",
  "rule.saqt.q.ccpp.7426.example.0.safe": "라인 1: 오타 등을 주의하여 올바른 이스케이프 시퀀스를 구성한 뒤 문자열 리터럴로 종료해야 합니다.\n라인 2: 인접한 문자열 리터럴을 사용하여 시퀀스를 명확히 종료하여 새로운 문자를 분리해야 합니다.\n라인 3: 다른 이스케이프 시퀀스를 배치하여 선행 시퀀스를 명확하게 종료해야 합니다.",
  "rule.saqt.q.ccpp.7426.name": "문자열 내 이스케이프 시퀀스 미종료",
  "rule.saqt.q.ccpp.7427.description": "long long 타입으로 결정되는 정수 상수는 접미사로 단일 L 접미사를 사용하지 말아야 합니다. 이것은 부호 있는 정수와 부호 없는 정수 상수 모두에 적용됩니다.\n\nL 단독 접미사는 long 과 long long 타입 중 어느 타입을 의도한 것인지 모호하게 만들 수 있습니다. 특히 long 타입의 범위를 초과하는 큰 값을 사용할 때 단일 L를 사용하면, 상수가 long long 타입임을 명시적으로 나타내지 못해 코드의 의도를 불분명하게 만듭니다.\n정수 상수의 값이 현재 환경에서 long long 타입으로 결정되는 경우 LL 접미사를 사용해야 합니다. 이때 접미사의 대소문자 여부는 중요하지 않습니다.",
  "rule.saqt.q.ccpp.7427.example.0.dangerous": "라인 1-2: 정수 상수 값의 크기는 long long 타입의 범위를 가지지만 L 단독 접미사를 사용했습니다.",
  "rule.saqt.q.ccpp.7427.example.0.safe": "라인 1: 정수 상수 값의 크기에 맞춰 long long 타입을 명시하기 위해 LL 접미사를 사용해야 합니다.\n라인 2: 혹은 L 접미사를 제거하여 C++의 기본 타입 결정 규칙에 따라 타입이 자동으로 결정되도록 해야 합니다.",
  "rule.saqt.q.ccpp.7427.name": "long long 정수 상수에 L 단독 접미사 사용",
  "rule.saqt.q.ccpp.7432.description": "const 및 constexpr로 선언되지 않은 모든 지역 변수는 static 키워드를 사용한 정적 저장 기간을 가지는 것은 위험할 수 있습니다.\n\n정적 저장 기간을 가지는 변경 가능한 지역 변수는 해당 함수가 호출될 대마다 이전 호출의 상태를 유지하는 숨겨진 시간적 결합(Temporal coupling)을 생성합니다. 이는 코드를 이해하고 테스트하기 어렵게 만들 뿐만 아니라, 동시성 프로그램에서 데이터 경합을 유발하여 정의되지 않은 동작(Undefined behavior)를 초래할 수 있습니다.\n정적 저장 기간을 가진 변경 가능한 지역 변수는 사용하지 말아야 합니다. 해당 변수가 유지해야 할 상태는 함수의 매개변수나 반환 값을 통해 명시적으로 전달하는 것이 좋습니다.\n\n단 값이 변경되지 않는 경우, const나 constexpr과 정적 저장 기간을 병행하여 사용하는 것은 허용됩니다.",
  "rule.saqt.q.ccpp.7432.example.0.dangerous": "라인 2-3: 변경 가능한 지역 변수에 static 키워드가 사용되어 정적 저장 기간을 가집니다.",
  "rule.saqt.q.ccpp.7432.example.0.safe": "라인 2-3: 지역 변수의 정적 저장 기간을 제거하거나, const나 constexpr을 사용하여 변경이 불가능 한 형태로 선언해야 합니다.",
  "rule.saqt.q.ccpp.7432.name": "정적 저장 기간 지역 변수 사용",
  "rule.saqt.q.ccpp.7435.description": "const 및 constexpr로 선언되지 않은 모든 전역 변수와 클래스의 정적 필드 사용은 위험할 수 있습니다.\n\n이때, 여기에서 이야기 하는 전역 변수는 전역 범위에 선언된 변수와 익명 네임스페이스에 선언된 변수를 모두 포함합니다. 또한 클래스의 정적 필드는 실제 사용하기 위해서는 전역 범위에서 초기화가 필요하기 때문에 전역 변수로 간주합니다.\n\n전역 변수는 프로그램 내 어느 곳에서든 접근하고 수정될 수 있어 함수 간의 통제 불가능한 상호작용을 초래하며, 이는 동시성 프로그램에서 데이터 경합으로 인한 정의되지 않은 동작(Undefined behavior)의 위험을 높입니다. \n\n이와 더불어 const로 선언했더라도 동적 초기화를 사용한다면 별개의 위험이 존재합니다. 이것은 정적 초기화 순서 문제(Static initialization order fiasco)로, 한 전역 변수가 초기화 될 때 아직 초기화되지 않은 다른 전역 변수에 접근하여 문제가 발생할 수 있습니다.\nconst 및 constexpr로 선언되지 않은 모든 전역 변수와 클래스의 정적 필드를 사용하지 않아야 합니다. 전역 상태가 필요한 경우를 최소화 해야 하며, 부득이하게 사용해야 할 시 가급적 상수로 한정하도록 합니다. \n\n전역 변수를 const 로 선언하되 동적 초기화를 사용한 경우도 마찬가지로 사용하지 않아야 합니다. 이 경우 초기화가 컴파일 타임에 이뤄질 수 있도록 정적 초기화를 사용해야 합니다.",
  "rule.saqt.q.ccpp.7435.example.0.dangerous": "라인 2: 전역 변수의 선언이 const 나 constexpr 없이 이루어졌습니다.\n라인 5: 전역 변수를 const 로 선언했으나 동적 초기화를 통해 초기화 했습니다.\n라인 13: 전역 변수로 간주할 수 있는 클래스 정적 필드가 const 나 constexpr 없이 이루어졌습니다.",
  "rule.saqt.q.ccpp.7435.example.0.safe": "라인 1: 전역 변수 선언시 const나 constexpr을 사용하여 선언해야 합니다.\n라인 5: 전역 변수 선언시 컴파일 타임에 초기화가 이루어질 수 있도록 해야 합니다.\n라인 10: 전역 변수로 간주할 수 있는 클래스 정적 필드 선언시 const나 constexpr을 사용하여 선언해야 합니다.",
  "rule.saqt.q.ccpp.7435.name": "통제 불가능한 전역 변수 사용",
  "rule.saqt.q.ccpp.7471.description": "asm 선언은 C++ 소스 코드 내에 어셈블리 명령어를 직접 삽입하기 위해 사용되는 기능입니다. \n\n하지만 이 선언 내부의 문자열이 어떻게 해석되고 실행되는지는 전적으로 컴파일러와 플랫폼의 구현(Implementation defined)에 따라 달라집니다. 이는 코드의 이식성을 심각하게 저해하며, 특정 하드웨어 아키텍처나 컴파일러에 강하게 종속적인 코드를 만듭니다. \n\n또한 이러한 코드는 컴파일러의 최적화를 방해하거나 예상치 못한 동작을 유발할 가능성이 높습니다.\nasm 선언을 코드에서 제거해야 합니다. 하드웨어 제어나 특정 명령어 사용이 필요한 경우, 대부분의 현대적인 컴파일러가 제공하는 어셈블리 기능을 구현한 내장 함수를 사용하거나 C++ 표준 라이브러리의 기능을 활용해야 합니다.",
  "rule.saqt.q.ccpp.7471.example.0.dangerous": "라인 5: asm 선언을 사용하여 어셈블리 코드를 직접 작성했습니다.",
  "rule.saqt.q.ccpp.7471.example.0.safe": "라인 5: 어셈블리 코드는 사용하지 않아야 하며, 꼭 필요한 경우 각각의 컴파일러가 제공하는 어셈블리 기능을 구현한 내장 함수를 사용해야 합니다.",
  "rule.saqt.q.ccpp.7471.name": "asm 선언을 통한 어셈블리 코드 직접 사용",
  "rule.saqt.q.ccpp.7480.description": "#undef 지시자는 오직 현재 파일 내에서 앞서 정의된 매크로를 해제하는 데에만 사용되어야 합니다. \n\n만약 현재 파일 내에서 정의된 적이 없는 매크로를 해제하려고 시도한다면, 이는 외부 헤더 파일에서 정의된 매크로를 임의로 해제하려 하거나, 존재하지 않는 매크로를 해제하려는 시도입니다. 외부 매크로를 해제하는 것은 전체 시스템의 일관성을 해치고, 표준 라이브러리의 동작을 망가뜨릴 위험이 있으므로 금지됩니다.\n#undef를 사용하려면 반드시 동일한 파일의 상단에 해당 매크로에 대한 #define 정의가 존재해야 합니다. \n\n외부 헤더의 매크로 충돌을 피하기 위한 목적이라면 #undef를 사용하는 대신, 현재 파일의 매크로 이름을 변경하여 충돌을 피하거나 네임스페이스 등을 활용해야 합니다. 이외에는 불필요한 매크로 해제를 사용하지 않는 것이 좋습니다.",
  "rule.saqt.q.ccpp.7480.example.0.dangerous": "라인 3: 현재 파일 내에 정의된 적이 없는 매크로를 #undef로 해제했습니다.",
  "rule.saqt.q.ccpp.7480.example.0.safe": "라인 10: #undef 사용 시 현재 파일에서 정의한 매크로만 해제해야 합니다. 불필요한 매크로 해제는 하지 않는 것이 좋습니다.",
  "rule.saqt.q.ccpp.7480.name": "현재 파일에 정의되지 않은 매크로 해제",
  "rule.saqt.q.ccpp.7481.description": "매크로 정의에서 매개변수가 일반 토큰과 전처리 연산자(#, ##)의 피연산자로 동시에 사용되는 경우를 혼합 사용 매크로(Mixed-use macro)라고 합니다. \n\n이러한 매크로를 호출할 때, 인자로 또 다른 매크로를 전달하면 안 됩니다. 이 경우 연산자가 적용된 부분은 확장이 억제되고, 일반 토큰 부분은 확장되어 서로 다른 값을 가리키는 확장 불일치 현상이 발생하기 때문입니다.\n혼합 사용 매크로를 호출할 때는 인자로 매크로가 아닌 확정된 값이나 변수명을 전달해야 합니다. \n만약 매크로를 인자로 전달해야 한다면, 해당 혼합 사용 매크로를 직접 호출하지 말고 인자를 먼저 확장하는 헬퍼 매크로를 거쳐서 호출하도록 코드를 수정해야 합니다.",
  "rule.saqt.q.ccpp.7481.example.0.dangerous": "라인 1: 혼합 사용 매크로를 정의했습니다.\n라인 2: 일반 매크로를 정의했습니다.\n라인 8: 혼합 사용 매크로의 인자로 또 다른 매크로가 전달되어 확장 불일치 위험이 있습니다.",
  "rule.saqt.q.ccpp.7481.example.0.safe": "라인 9: 혼합 사용 매크로의 인자로 일반 매크로를 직접적으로 전달하지 않아야 합니다.\n라인 10: 혹은 헬퍼 매크로를 구성하여 혼합 사용 매크로를 직접 사용하지 않도록 매크로를 구성하는 방안을 사용할 수 있습니다.",
  "rule.saqt.q.ccpp.7481.name": "혼합 사용 매크로에 매크로 인자 전달",
  "rule.saqt.q.ccpp.7486.description": "errno는 C++ 표준 라이브러리 함수들이 에러 발생 시 0이 아닌 값을 설정하여 상태를 알리는 전역 변수입니다. errno는 전역 변수이므로 개발자가 직접 이 값을 변경할 수도 있지만, 이 경우 라이브러리 함수의 에러 출력과 값이 충돌하거나 덮어써지는 등 상태 관리에 문제가 발생할 수 있습니다.\n\n따라서 사용자 코드에서 에러를 보고하기 위해 임의의 값을 대입하는 것은 사용하지 않는 것이 좋습니다.\n사용자 코드에서 에러를 전달해야 한다면 전역 변수인 errno를 사용하는 대신, C++에서 제공하는 예외 처리나 std::optional과 같은 더 안전한 에러 처리 메커니즘을 이용해야 합니다. \n\n단, 예외적으로 에러 초기화를 위해 errno 정수 0을 대입하는 것은 허용됩니다.",
  "rule.saqt.q.ccpp.7486.example.0.dangerous": "라인 8, 10: errno에 정수 0 이외의 값을 대입했습니다.\n라인 13: errno에 정수 0이외의 값을 대입했습니다. success가 가리키는 값은 0이지만 정수가 아닌 변수입니다.",
  "rule.saqt.q.ccpp.7486.example.0.safe": "라인 8, 10: errno에 사용자가 값을 직접 대입하는 것은 에러 초기화를 위해 0을 대입하는 경우에만 사용해야 합니다.",
  "rule.saqt.q.ccpp.7486.name": "errno에 0 이외의 값 할당",
  "rule.saqt.q.ccpp.80.description": "일반 주석 형식 위반 체커는 일반 주석에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n코드에 작성된 일반 주석을 사전에 정의된 일반 주석 형식에 따라 확인합니다.\n사전에 정의된 형식에 맞게 일반 주석을 작성하여 ////으로 선언된 주석을 //으로 변경해야 합니다.",
  "rule.saqt.q.ccpp.80.example.0.dangerous": "라인 2: 주석을 표현할 때 ////을 사용했습니다.",
  "rule.saqt.q.ccpp.80.example.0.safe": "라인 2: 주석을 표현할 때 //을 사용하여 주석 형식을 맞춥니다.",
  "rule.saqt.q.ccpp.80.name": "일반 주석 형식 위반",
  "rule.saqt.q.ccpp.80.option.GeneralComment.description": "일반 주석 형식을 정의합니다.",
  "rule.saqt.q.ccpp.80.option.GeneralComment.name": "일반 주석 형식",
  "rule.saqt.q.ccpp.82.description": "레이블 구문 사용 체커는 레이블 구문을 사용하는 코드를 검출합니다.\ngoto 문을 사용하면 프로그램에서 예상하지 못한 동작이 발생할 수 있습니다. 레이블 구문은 주로 goto 문과 쌍으로 사용합니다.\n레이블 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.82.example.0.dangerous": "라인 2: label을 사용했습니다.",
  "rule.saqt.q.ccpp.82.example.0.safe": "라인 2: label을 지웁니다.",
  "rule.saqt.q.ccpp.82.name": "레이블 구문 사용",
  "rule.saqt.q.ccpp.98.description": "반복문 내에서 금지된 함수 사용 체커는 반복문에서 사용하지 않도록 옵션에 지정된 함수를 사용하는 코드를 검출합니다.\n옵션에서는 특정 반복문에서 호출을 금지하는 함수를 설정할 수 있습니다.\n반복문 안에서 메모리를 생성하면 메모리 시작점을 잃어버려서 메모리 누수가 발생하고 성능 및 처리 속도가 감소할 수 있습니다.\n반복문 안에서 옵션에 지정된 호출 금지 함수를 사용하지 않도록 합니다.",
  "rule.saqt.q.ccpp.98.example.0.dangerous": "라인 4: for 문에서 malloc() 함수를 호출했습니다.",
  "rule.saqt.q.ccpp.98.example.0.safe": "라인 3: 반복문 밖에서 malloc() 함수를 사용합니다. 반복문 안에서 메모리를 생성하면 메모리 시작점을 잃어버려서 메모리 누수가 발생하고 성능이 감소할 수 있습니다. 반복문에서 기존 리소스를 재활용하도록 변경합니다.",
  "rule.saqt.q.ccpp.98.name": "반복문 내에서 금지된 함수 사용",
  "rule.saqt.q.ccpp.98.option.target_functions.description": "금지 함수를 설정합니다.",
  "rule.saqt.q.ccpp.98.option.target_functions.name": "금지 함수",
  "rule.saqt.q.cpp.100.description": "금지된 인자 사용 체커는 옵션에 지정된 함수를 호출할 때 사용이 금지된 인자를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 금지 인자 이름을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 사용 금지 인자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.100.example.0.dangerous": "라인 5: 분석 대상인 Func() 함수를 정의했습니다.\n라인 6: 분석 대상인 memcpy_API01() 함수를 호출했습니다. API01_COUNTER 인자를 사용하므로 검출됩니다.",
  "rule.saqt.q.cpp.100.example.0.safe": "라인 5: 분석 대상인 Func() 함수를 정의했습니다.\n라인 6: 분석 대상인 memcpy_API01() 함수를 호출했습니다. API01_COUNTER 인자 대신 \"test\"가 인자를 사용하므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.100.name": "금지된 인자 사용",
  "rule.saqt.q.cpp.100.option.call_param_should_not_be_name.description": "반드시 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.cpp.100.option.call_param_should_not_be_name.name": "사용하지 말아야 할 인자",
  "rule.saqt.q.cpp.100.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.100.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.100.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.100.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.100.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.saqt.q.cpp.100.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.cpp.100.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.100.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.cpp.101.description": "부적절한 문자열 인자의 값 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 문자열이 아닌 값을 전달하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 문자열 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수에 포함된 특정 위치의 인자에 문자열을 입력해야 합니다.",
  "rule.saqt.q.cpp.101.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: 분석 대상인 memcpy_API02() 함수를 호출했습니다. 두 번째 인자가 문자열이 아닌 변수 y입니다.",
  "rule.saqt.q.cpp.101.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: 분석 대상인 memcpy_API02() 함수를 호출했습니다. 두 번째 인자가 문자열이므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.101.name": "부적절한 문자열 인자의 값",
  "rule.saqt.q.cpp.101.option.call_param_should_be_string.description": "문자열이 위치해야 할 함수와 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.cpp.101.option.call_param_should_be_string.name": "문자열이 위치해야 할 함수와 파라미터 인덱스",
  "rule.saqt.q.cpp.101.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.cpp.101.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.cpp.101.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.101.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.cpp.101.option.function_target.description": "대상이 되는 함수를 설정합니다.",
  "rule.saqt.q.cpp.101.option.function_target.name": "대상이 되는 함수",
  "rule.saqt.q.cpp.101.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.101.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.cpp.102.description": "명시되지 않은 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 옵션에 명시되어 있는 인자를 사용하지 않은 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 인자 위치와 인자 이름을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수의 특정 위치의 인자에 지정된 인자를 사용해야 합니다.",
  "rule.saqt.q.cpp.102.example.0.dangerous": "라인 4: 분석 대상인 Func() 함수를 정의했습니다.\n라인 5: memcpy_API03() 함수를 호출했습니다. 두 번째 인자가 옵션에 명시된 인자가 아니므로 검출됩니다.",
  "rule.saqt.q.cpp.102.example.0.safe": "라인 4: 분석 대상인 Func() 함수를 정의했습니다.\n라인 5: memcpy_API03() 함수를 호출했습니다. 두 번째 인자가 옵션에 명시된 인자이므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.102.name": "명시되지 않은 인자 사용",
  "rule.saqt.q.cpp.102.option.call_param_should_be_name.description": "반드시 사용해야 될 파라미터 이름과 인덱스를 설정합니다.",
  "rule.saqt.q.cpp.102.option.call_param_should_be_name.name": "반드시 사용해야 될 파라미터 이름과 인덱스",
  "rule.saqt.q.cpp.102.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.cpp.102.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.cpp.102.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.102.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.cpp.102.option.function_target.description": "대상이 되는 함수를 설정합니다.",
  "rule.saqt.q.cpp.102.option.function_target.name": "대상이 되는 함수",
  "rule.saqt.q.cpp.102.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.102.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.cpp.103.description": "부적절한 가변 인자 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치를 정수 상수로 정의하지 않거나, 해당 값만큼 추가적인 인자가 존재하지 않는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 상수 인자 위치, 다음 인자의 수를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 위치에 정수 상수 인자를 사용하고, 해당 값만큼 추가적인 개수의 인자가 존재해야 합니다.",
  "rule.saqt.q.cpp.103.example.0.dangerous": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: Fun_API04_call() 함수를 호출했습니다. 첫 번째 상수 인자 1 뒤에 두 개의 인자가 있습니다.",
  "rule.saqt.q.cpp.103.example.0.safe": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: Fun_API04_call() 함수를 호출했습니다. 첫 번째 상수 인자 1 뒤에 한 개의 인자가 있으므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.103.name": "부적절한 가변 인자",
  "rule.saqt.q.cpp.103.option.call_param_should_be_deciaml.description": "숫자를 사용해야 하는 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.cpp.103.option.call_param_should_be_deciaml.name": "숫자를 사용해야 하는 파라미터 인덱스",
  "rule.saqt.q.cpp.103.option.call_param_value_equal_next_param_count.description": "해당 인덱스에 있는 파라미터의 숫자 만큼 다음 인자가 와야합니다.",
  "rule.saqt.q.cpp.103.option.call_param_value_equal_next_param_count.name": "가변 인자 갯수 표현 파라미터 인덱스",
  "rule.saqt.q.cpp.103.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.103.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.103.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.103.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.103.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.saqt.q.cpp.103.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.cpp.103.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.103.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.cpp.1035.description": "암시적 실수 업캐스팅 체커는 실수형 복합 수식절이 암시적으로 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1035.example.0.dangerous": "라인 4: 실수형 타입인 복합 수식절에서 암시적으로 더 큰 타입의 실수형으로 캐스팅되었습니다.",
  "rule.saqt.q.cpp.1035.example.0.safe": "라인 4: 실수형 타입인 복합 수식절을 더 큰 타입의 실수형으로 캐스팅할 경우에는 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1035.name": "암시적 실수 업캐스팅",
  "rule.saqt.q.cpp.1036.description": "캡슐화되지 않은 어셈블리 언어 체커는 따로 함수로 분리되지 않고 사용하는 어셈블리어 코드를 검출합니다.\n인라인 어셈블리어의 사용은 코드의 이식성을 저해할 수 있으므로 가급적 피해야 합니다.\n만약 꼭 필요할 경우 어셈블리어 부분은 특정 함수로 캡슐화하도록 합니다.",
  "rule.saqt.q.cpp.1036.example.0.dangerous": "라인 3: 인라인 어셈블리어 부분이 추상화 되지 않았습니다.",
  "rule.saqt.q.cpp.1036.example.0.safe": "라인 1: 인라인 어셈블리어 부분을 함수로 캡슐화 하도록 합니다.",
  "rule.saqt.q.cpp.1036.name": "캡슐화되지 않은 어셈블리 언어",
  "rule.saqt.q.cpp.1036.option.allow_asm_macro.description": "체크시 asm 매크로를 허용합니다.",
  "rule.saqt.q.cpp.1036.option.allow_asm_macro.name": "asm 매크로 허용",
  "rule.saqt.q.cpp.1039.description": "너무 긴 식별자 체커는 대상이 되는 식별자의 길이가 31자를 넘어서는 경우를 검출합니다.\n대상 식별자는 태그, 변수 이름, 타입, 필드, 매크로입니다.\nISO 표준에서는 코드의 이식성을 보장하기 위해 식별자를 처음 31자에서 구별하도록 명시하고 있습니다. 즉, 31자를 넘어서는 식별자를 다른 환경에서 컴파일하는 경우 이식성에 문제가 발생할 수 있습니다.\n식별자를 31자 이하로 명명하도록 합니다.",
  "rule.saqt.q.cpp.1039.example.0.dangerous": "라인 1: 구조체 태그 이름이 31자를 초과했습니다.\n라인 3: 구조체 필드 이름이 31자를 초과했습니다.\n라인 7 : typedef 이름이 31자를 초과했습니다.\n라인 11: 지역 변수 이름이 31자를 초과했습니다.",
  "rule.saqt.q.cpp.1039.example.0.safe": "라인 1: 구조체 태그 이름을 31자 이하로 수정합니다.\n라인 3: 구조체 필드 이름을 31자 이하로 수정합니다.\n라인 7: typedef 이름을 31자 이하로 수정합니다.\n라인 11: 지역 변수 이름을 31자 이하로 수정합니다.",
  "rule.saqt.q.cpp.1039.name": "너무 긴 식별자",
  "rule.saqt.q.cpp.1044.description": "네임스페이스 안에서 중복된 이름 체커는 어떠한 이름 공간에 속한 식별자가 다른 이름 공간에 속한 식별자와 이름이 같은 경우를 검출합니다.\n이름 공간이 다를 경우 실제로 두 공간에 존재하는 이름이 겹치거나 가려지는 현상이 발생하지는 않습니다. 하지만 이 체커는 그것과 관계 없이 이름 공간이 다른 경우에도 식별자의 이름이 같은 경우를 검출합니다. 다만 검출 규칙 중에서 구조체와 공용체의 필드 이름은 예외로 하도록 합니다.\n구조체와 공용체의 필드를 제외하고, 서로 다른 이름 공간에 속했더라도 동일한 식별자 이름을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1044.example.0.dangerous": "라인 2: sourceTest란 이름으로 구조체를 선언했습니다.\n라인 8: sourceTest란 이름으로 구조체를 선언했습니다. 이 이름은 라인 2에서 이미 사용한 이름입니다.",
  "rule.saqt.q.cpp.1044.example.0.safe": "라인 8: 다른 이름 공간에 있는 식별자더라도 동일한 식별자를 다시 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1044.name": "네임스페이스 안에서 중복된 이름",
  "rule.saqt.q.cpp.1046.description": "부적절한 타입으로 할당 체커는 변수에 값을 대입할 경우 서로 타입이 다른 수식을 검출합니다.\n구체적으로 기본 타입에 대해 대입 관련 연산을 수행하는 경우 다음과 같은 조건을 검출합니다.\n연산자 양쪽 항의 부호가 다르고 대입되는 값이 변경될 수 있는 경우 \n좌측항이 정수형 타입이고 우측항이 실수형 타입인 경우\n좌측항의 기본 타입보다 우측항의 기본 타입의 범위가 넓은 경우 (단, 정수 상수의 경우 컴파일러에 의한 타입 판단 문제로 인해 검출 대상에서 제외함)\nboolean 타입에 true 혹은 false를 제외한 정수를 대입한 경우\n값을 대입하는 변수와 값의 타입이 서로 다른 경우 의도했던 값과 다른 값이 들어갈 수 있습니다. 이러한 문제는 알아채기 힘든 오류를 발생시킵니다.\n대입하는 변수와 값의 타입을 동일하게 유지하도록 합니다. 대입하려는 변수의 타입을 변경하거나 값의 접미사를 변수에 맞게 조정하도록 합니다.",
  "rule.saqt.q.cpp.1046.example.0.dangerous": "라인 5: 연산자 양쪽 항의 부호가 다르고 대입되는 값이 변경될 수 있습니다.\n라인 6: 좌측항이 정수형 타입이고 우측항이 실수형 타입입니다.\n라인 7: 좌측항의 기본 타입보다 우측항의 기본 타입의 범위가 넓습니다.\n라인 8: boolean 타입에 true 혹은 false를 제외한 정수를 대입했습니다.",
  "rule.saqt.q.cpp.1046.example.0.safe": "라인 5: 해당 값을 반드시 대입해야 하는 경우 명시적인 캐스팅을 사용합니다.\n라인 6: 정수형 타입에는 정수형 값을 대입하도록 합니다.\n라인 7: 좌측항의 기본 타입보다 우측항의 기본 타입의 범위를 좁게 만들도록 합니다.\n라인 8: boolean 타입에 true 혹은 false를 대입하도록 합니다.",
  "rule.saqt.q.cpp.1046.name": "부적절한 타입으로 할당",
  "rule.saqt.q.cpp.1047.description": "대체된 문자 타입 변수 체커는 부호 표시가 없는 일반 char 타입의 변수에 숫자를 대입하거나 비교하는 수식을 검출합니다.\nplain char 타입은 컴파일러에 따라 unsigned char 혹은 signed char와 동등한 타입으로 동작합니다. 단, 컴파일러에 따라 달라질 수 있습니다. 즉, plain char 타입에 숫자를 사용하면 컴파일러에 따라 값이 변경될 수 있습니다. 따라서 plain char 타입에는 문자를 사용하고, unsigned char나 signed char에는 숫자를 사용하는 것이 좋습니다.\nplain char 타입에는 숫자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1047.example.0.dangerous": "라인 1: 매개 변수 foo를 plain char 타입으로 정의했습니다.\n라인 10: 문자 대신 정수 상수 111을 사용했습니다. 이 값을 plain char 타입인 foo 변수와 비교했습니다.",
  "rule.saqt.q.cpp.1047.example.0.safe": "라인 3: switch 구문의 조건부에서 검사하는 변수 타입이 plain char인 경우 case 문에는 일반 문자만 사용합니다.",
  "rule.saqt.q.cpp.1047.name": "대체된 문자 타입 변수",
  "rule.saqt.q.cpp.1048.description": "연산의 피연산자로 사용된 문자 값 체커는 부호 표시가 없는 일반 char 타입의 변수에 산술 연산을 사용하는 수식을 검출합니다.\nplain char 타입은 컴파일러에 따라 unsigned char 혹은 signed char와 동등한 타입으로 동작합니다. 단, 컴파일러에 따라 달라질 수 있습니다. 즉, plain char 타입에 숫자를 사용하면 컴파일러에 따라 값이 변경될 수 있습니다. 따라서 plain char 타입에는 문자를 사용하고, unsigned char나 signed char에는 숫자를 사용하는 것이 좋습니다.\nplaint char 타입에는 산술 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1048.example.0.dangerous": "라인 2: foo 변수를 plain char 타입으로 정의했습니다.\n라인 3: foo 변수를 산술연산의 피연산자로 사용했습니다.",
  "rule.saqt.q.cpp.1048.example.0.safe": "라인 3: plain char 타입의 변수는 산술 연산의 피연산자로 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1048.name": "연산의 피연산자로 사용된 문자 값",
  "rule.saqt.q.cpp.1049.description": "누락된 명시적 형변환 체커는 값을 대입할 경우 서로 타입이 다르고 암시적인 캐스팅이 발생하는 수식을 검출합니다.\n이 때 좌측항의 타입이 우측항의 타입보다 큰 경우는 예외로 합니다. 즉, 대입의 결과로 값이 변경될 가능성이 있는 경우만 검출합니다.\n대입 연산자의 양쪽 수식의 타입이 서로 다른 경우 의도했던 값과 다른 값이 들어갈 수 있습니다. 이러한 문제는 알아채기 힘든 오류를 발생시킵니다.\n대입 연산 시 양쪽 피연산자의 타입이 같아지도록 명시적인 캐스팅을 사용합니다. 이러한 캐스팅 사용은 설령 값이 변경되더라도 의도한 구현이라는 점을 명시할 수 있습니다.",
  "rule.saqt.q.cpp.1049.example.0.dangerous": "라인 1: uint32_t 타입인 u32a 매개 변수를 선언했습니다.\n라인 2: uint16_t 타입인 u16a 변수를 u32a로 초기화했습니다. 이 과정에서 암시적 캐스팅이 발생하며, 좌측항의 타입 크기가 우측항의 타입크기보다 작습니다.",
  "rule.saqt.q.cpp.1049.example.0.safe": "라인 2: 우측항의 값을 명시적으로 캐스팅한 후 대입합니다.",
  "rule.saqt.q.cpp.1049.name": "누락된 명시적 형변환",
  "rule.saqt.q.cpp.105.description": "사용되지 않은 래퍼 함수 체커는 옵션에 지정된 특정 함수를 허용된 함수의 인자가 아닌 값으로 사용하는 코드를 검출합니다.\n옵션에서 호출 대상 함수, 인자로 사용돼야 하는 함수를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 특정 함수의 인자로만 사용해야 합니다.",
  "rule.saqt.q.cpp.105.example.0.dangerous": "라인 4: API06_NEED_WRAPPER() 함수를 API06_WRAPPER() 함수의 인자로 사용하지 않았습니다.",
  "rule.saqt.q.cpp.105.example.0.safe": "라인 4: API06_NEED_WRAPPER() 함수를 API06_WRAPPER() 함수의 인자로 사용합니다.",
  "rule.saqt.q.cpp.105.name": "사용되지 않은 래퍼 함수",
  "rule.saqt.q.cpp.105.option.call_should_be_used_parameter.description": "반드시 사용해야 할 파라미터 이름과 인덱스를 설정합니다.",
  "rule.saqt.q.cpp.105.option.call_should_be_used_parameter.name": "반드시 사용해야 할 파라미터 이름과 인덱스",
  "rule.saqt.q.cpp.105.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.105.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.1050.description": "대체된 부호가 있는 문자 타입 변수 체커는 unsigned char 혹은 signed char 타입의 변수에 문자를 대입하거나 비교하는 수식을 검출합니다.\nplain char 타입은 컴파일러에 따라 unsigned char 혹은 signed char와 동등한 타입으로 동작합니다. 단, 컴파일러에 따라 달라질 수 있습니다. 즉, plain char 타입에 숫자를 사용하면 컴파일러에 따라 값이 변경될 수 있습니다. 따라서 plain char 타입에는 문자를 사용하고, unsigned char나 signed char에는 숫자를 사용하는 것이 좋습니다.\nsigned char 타입에 문자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1050.example.0.dangerous": "라인 1: 매개 변수 ch를 unsigned char 타입으로 정의했습니다.\n라인 4: 숫자 대신 문자 'a'를 사용했습니다. 이 값을 unsigned char 타입인 ch 변수와 비교했습니다.",
  "rule.saqt.q.cpp.1050.example.0.safe": "라인 3: switch 구문의 조건부에서 검사하는 변수 타입이 signed char 인 경우 case 문에는 숫자만 사용합니다.",
  "rule.saqt.q.cpp.1050.name": "대체된 부호가 있는 문자 타입 변수",
  "rule.saqt.q.cpp.1051.description": "기본 타입의 직접 사용 체커는 기본 숫자 타입을 typedef로 선언하지 않고 사용한 구문을 검출합니다.\n기본 숫자 타입을 그대로 사용하지 않도록 합니다. 명확한 스토리지 크기를 명시하는 typedef 선언을 한 뒤 사용하도록 합니다.",
  "rule.saqt.q.cpp.1051.example.0.dangerous": "라인 2: 기본 타입인 int를 그대로 사용하여 변수를 선언했습니다.",
  "rule.saqt.q.cpp.1051.example.0.safe": "라인 1: 기본 타입을 명확한 스토리지 크기를 명시하여 typedef로 선언합니다.",
  "rule.saqt.q.cpp.1051.name": "기본 타입의 직접 사용",
  "rule.saqt.q.cpp.1053.description": "부적절한 비트 필드 타입 체커는 unsigned int나 signed int 타입이 아닌 타입으로 비트 필드를 선언한 경우를 검출합니다.\nunsigned int와 signed int를 제외한 다른 숫자 타입은 이식성 문제로 인해 비트 필드의 타입으로 사용하기에는 적합하지 않습니다. 또한 부호 표시가 없는 일반적인 int는 컴파일러마다 다르게 정의되기 때문에 명시적으로 signed int 타입을 사용하는 것이 좋습니다.\n비트 필드를 선언할 경우에는 반드시 unsigned int 나 signed int 타입을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1053.example.0.dangerous": "라인 3: long 타입을 비트 필드의 타입으로 사용했습니다.\n라인 4: short 타입을 비트 필드의 타입으로 사용했습니다.",
  "rule.saqt.q.cpp.1053.example.0.safe": "라인 1: 모든 비트 필드의 타입은 unsigned int 혹은 signed int 타입만 사용합니다.",
  "rule.saqt.q.cpp.1053.name": "부적절한 비트 필드 타입",
  "rule.saqt.q.cpp.1054.description": "너무 작은 부호가 있는 정수 타입 체커는 비트 필드의 타입이 signed 타입이며 비트 필드의 크기가 1비트인 선언을 검출합니다.\nC99 표준에서 signed 타입의 비트 필드를 1비트 선언한 것은 값 비트 없이 부호 비트만 선언한 것으로 간주됩니다. 값 비트가 0일 경우 의미있는 값을 지정할 수 없습니다.\nsigned 타입의 비트 필드는 최소 2비트 이상으로 선언하도록 합니다. 만약 반드시 1비트만 사용해야 할 경우 unsigned 타입으로 비트 필드를 선언합니다.",
  "rule.saqt.q.cpp.1054.example.0.dangerous": "라인 2: signed 타입인 비트 필드의 크기가 1비트입니다.",
  "rule.saqt.q.cpp.1054.example.0.safe": "라인 2: signed 타입인 비트 필드의 크기를 적어도 2비트 이상이 되도록 합니다.",
  "rule.saqt.q.cpp.1054.name": "너무 작은 부호가 있는 정수 타입",
  "rule.saqt.q.cpp.1055.description": "8진수 사용 체커는 8진수를 사용하는 수식을 검출합니다.\n숫자 0으로 시작하는 상수는 8진수로 간주됩니다.\n일반적으로 8진수로 표현된 상수는 사용자의 의도가 아니라 값의 위치를 맞추기 위해 잘못 사용되었을 가능성이 높습니다. 따라서 개발자가 인지하지 못한 채 잘못된 상수를 사용할 위험이 있습니다.\n8진수로 된 값을 상수로 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1055.example.0.dangerous": "라인 3: 10진수로 표현된 상수 2719를 대입했습니다.\n라인 4: 10진수로 표현된 상수 4435를 대입했습니다.\n라인 5: 가독성을 위해 앞에 2개의 숫자 0을 붙여서 상수 0042를 사용했습니다. 하지만 해당 값은 8진수이며, 실제로 대입되는 값은 34입니다.",
  "rule.saqt.q.cpp.1055.example.0.safe": "라인 5: 10진수로 표현된 상수를 입력하도록 합니다.",
  "rule.saqt.q.cpp.1055.name": "8진수 사용",
  "rule.saqt.q.cpp.1056.description": "의심스러운 8진수 이스케이프 시퀀스 체커는 8진수 이스케이프 시퀀스를 사용하는 수식을 검출합니다.\n역슬래쉬 뒤에 0~7 사이의 3자리 숫자가 있는 경우 8진수로 취급합니다.\n8진수 이스케이프 시퀀스를 처리하는 방법은 구현 정의 동작입니다. 따라서 컴파일러마다 다르게 처리될 수 있습니다. 예를 들어 8진수 이스케이프 시퀀스의 뒤에 오는 숫자의 값에 따라 8진수로 표현되기도 하고 8진수+남은 10진수 정수로 나뉘어 표현되기도 합니다. 따라서 개발자가 인지하지 못한 채 잘못된 상수를 사용할 위험이 있습니다.\n8진수 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1056.example.0.dangerous": "라인 3: 8진수 이스케이프 시퀀스를 사용했습니다.",
  "rule.saqt.q.cpp.1056.example.0.safe": "라인 3: 8진수 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1056.name": "의심스러운 8진수 이스케이프 시퀀스",
  "rule.saqt.q.cpp.1057.description": "함수 내 함수 선언 체커는 함수가 파일 영역에서 선언되지 않고 함수 내부에서 선언된 경우를 검출합니다.\n함수 내부에서 함수를 선언하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n함수는 반드시 파일 영역에서 선언하도록 합니다.",
  "rule.saqt.q.cpp.1057.example.0.dangerous": "라인 4: foo() 함수 내부에서 bar() 함수를 선언했습니다.",
  "rule.saqt.q.cpp.1057.example.0.safe": "라인 1: 반드시 파일 영역에서 함수를 선언하도록 합니다.",
  "rule.saqt.q.cpp.1057.name": "함수 내 함수 선언",
  "rule.saqt.q.cpp.1058.description": "불필요한 전역 변수 체커는 한 개의 함수에서만 전역 변수를 사용하는 경우를 검출합니다.\n특정한 한 개의 함수에서만 사용하는 전역 변수를 전역으로 선언할 필요성이 없기 때문입니다. 따라서 변수는 최소 블록 범위에서 정의하여 다른 곳에서 실수로 동일한 변수를 사용할 가능성을 줄여야 합니다.\n전역 변수가 한 개의 함수에서만 사용되는 경우 해당 함수의 지역 변수로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1058.example.0.dangerous": "라인 3: 전역 변수 g_c를 선언했습니다.\n라인 17: 전역 변수 g_c를 사용했습니다. 이 변수는 main() 함수에서만 사용하고 있습니다.",
  "rule.saqt.q.cpp.1058.example.0.safe": "라인 16: 전역 변수 g_c를 main() 함수의 지역 변수로 수정합니다.",
  "rule.saqt.q.cpp.1058.name": "불필요한 전역 변수",
  "rule.saqt.q.cpp.1059.description": "중복된 외부 객체 혹은 함수 체커는 여러 헤더 파일에서 선언된 extern 객체 및 함수를 검출합니다.\n어떤 식별자가 다른 번역 단위에서 여러번 정의되거나 반대로 정의가 전혀 존재하지 않는 것은 링크 오류 등 여러 가지 문제가 발생할 수 있습니다.\nextern 객체나 함수의 하나의 헤더 파일에서 한 번만 선언하도록 합니다.",
  "rule.saqt.q.cpp.1059.example.0.dangerous": "라인 2: foo.h 헤더 파일에서 calc() 함수를 extern으로 선언했습니다.\n라인 4: bar.h 헤더 파일에서 calc() 함수를 extern으로 선언했습니다.",
  "rule.saqt.q.cpp.1059.example.0.safe": "라인 4: bar.h 헤더 파일에서 extern으로 선언한 함수의 이름을 다른 것으로 변경합니다.",
  "rule.saqt.q.cpp.1059.name": "중복된 외부 객체 혹은 함수",
  "rule.saqt.q.cpp.106.description": "함수 호출 후 인자 사용 규칙 위반 체커는 특정 함수를 호출한 후에 특정 인자를 사용하는 코드를 검출합니다.\n옵션에서 호출 대상 함수, 사용하면 안되는 인자를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출한 후에는 인자로 사용하지 않도록 금지한 값, 문자열, 매개변수 등을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.106.example.0.dangerous": "라인 6: API07_FUNC() 함수를 호출했습니다.\n라인 7: output() 함수의 인자로 API07_TARGET_NAME 을 사용했습니다.",
  "rule.saqt.q.cpp.106.example.0.safe": "라인 6: API07_FUNC() 함수를 호출했습니다.\n라인 7: output() 함수의 인자로 \"test\"를 사용하므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.106.name": "함수 호출 후 인자 사용 규칙 위반",
  "rule.saqt.q.cpp.106.option.call_param_should_not_be_name.description": "반드시 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.cpp.106.option.call_param_should_not_be_name.name": "사용하지 말아야 할 인자",
  "rule.saqt.q.cpp.106.option.function_target_begin_call_function.description": "설정한 함수가 호출되는 이후 분석을 수행합니다.",
  "rule.saqt.q.cpp.106.option.function_target_begin_call_function.name": "분석을 시작할 특정 함수 호출",
  "rule.saqt.q.cpp.1060.description": "외부 참조 없이 비 정적 객체 혹은 함수 사용 체커는 외부에서 접근할 필요가 없으며 파일 범위에 extern으로 선언되어 있는 객체 및 함수를검출합니다.\n외부에서 접근할 필요가 없는 전역 객체는 정적으로 선언하여 단일 번역 단위 안쪽으로 숨기는 것이 좋습니다. 이와 같은 조치로 다른 파일의 전역 객체 및 함수와의 불필요한 충돌을 막을 수 있습니다.\n하나의 파일에서만 사용하는 파일 범위 객체나 함수는 정적으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1060.example.0.dangerous": "라인 2: wrong 변수를 extern으로 선언했습니다. 해당 변수는 foo.c 파일에서만 사용했습니다.",
  "rule.saqt.q.cpp.1060.example.0.safe": "라인 2: wrong 변수를 정적으로 선언합니다. static 키워드는 생략할 수 있습니다.",
  "rule.saqt.q.cpp.1060.name": "외부 참조 없이 비 정적 객체 혹은 함수 사용",
  "rule.saqt.q.cpp.1061.description": "누락된 배열 초기화 중괄호 체커는 구조체와 배열을 초기화할 때 내부 구조와 다른 형태로 중괄호 초기화를 사용한 경우를 검출합니다.\n구조체나 배열을 초기화할 때는 한 쌍의 중괄호로 묶어서 초기화해야 합니다. 이때 중첩 구조를 나타내기 위해서는 추가적으로 중괄호를 사용하여 복잡한 타입의 요소가 정상적으로 초기화되도록 내부 구조와 초기화 방식을 맞추어야 합니다. 초기화 방법과 내부 구조가 다를 경우 컴파일러에 따라 초기화되는 값이 다를 수 있습니다.\n구조체나 배열을 0으로 초기화하는 경우를 제외하고 내부 구조에 맞춰 중괄호로 초기화하도록 합니다.",
  "rule.saqt.q.cpp.1061.example.0.dangerous": "라인 12: foo2를 중괄호로 초기화했습니다. 다만 첫 번째와 두 번째 원소를 묶어야 할 중괄호가 생략되었습니다.",
  "rule.saqt.q.cpp.1061.example.0.safe": "라인 12: 구조체 및 배열의 내부 구조에 맞춰 중괄호로 초기화하도록 합니다.",
  "rule.saqt.q.cpp.1061.name": "누락된 배열 초기화 중괄호",
  "rule.saqt.q.cpp.1062.description": "불충분한 초기화 값 체커는 명시된 구조체나 배열의 크기보다 중괄호 초기화 데이터가 부족한 정의를 검출합니다.\n중괄호 초기화의 요소가 구조체 및 배열의 크기보다 적은 경우 기본적으로 0으로 초기화됩니다. 단, 이러한 값이 개발자가 의도한 결과인지는 알 수 없습니다. 따라서 원래의 의도와 다른 결과가 발생할 수 있습니다.\n구조체나 배열의 크기와 중괄호 초기화의 항목 수를 동일하게 맞추도록 합니다.",
  "rule.saqt.q.cpp.1062.example.0.dangerous": "라인 2: 크기가 3인 배열을 중괄호 초기화로 초기화했습니다. 여기서 초기화 요소는 2개입니다.",
  "rule.saqt.q.cpp.1062.example.0.safe": "라인 2: 배열의 크기와 중괄호 초기화 요소의 수를 동일하게 맞추도록 합니다.",
  "rule.saqt.q.cpp.1062.name": "불충분한 초기화 값",
  "rule.saqt.q.cpp.1064.description": "부분적으로 초기화 된 열거형 리스트 체커는 열거형 목록의 요소 중 일부에만 값을 대입하여 선언한 경우를 검출합니다.\n열거형 목록에 값을 대입하지 않을 경우 각 요소의 값은 0부터 시작하여 1씩 증가합니다. 만약 특정 요소에 값을 대입하는 경우 해당 요소는 대입된 값을 가집니다. 해당 요소 이후의 값은 이전 요소에 대입된 값에서 1씩 증가합니다. 만약 열거형 목록의 일부 요소에만 대입하는 경우 실제 열거형 목록의 각 요소가 가지는 값이 무엇인지 식별하기 어려울 수 있습니다. 또한 열거형 목록의 요소 중 일부가 동일한 값을 가지게 될 수도 있습니다. 따라서 개발자의 의도와 달리 정상적인 동작이 실행되지 않게 됩니다.\n열거형 목록의 요소에 값을 대입하지 않거나 모두 대입하도록 합니다.",
  "rule.saqt.q.cpp.1064.example.0.dangerous": "라인 3: 열거형 목록의 melon 요소에 432 값을 대입했습니다.\n라인 4: 열거형 목록의 orange 요소에 2를 대입했습니다.\n라인 5: 열거형 목록의 strawberry 값이 컴파일러에 의해 3으로 초기화되었습니다. 이 값은 melon과 동일합니다.",
  "rule.saqt.q.cpp.1064.example.0.safe": "라인 2: 열거형 목록의 요소를 초기화하지 않도록 합니다.",
  "rule.saqt.q.cpp.1064.name": "부분적으로 초기화 된 열거형 리스트",
  "rule.saqt.q.cpp.1064.option.allow_enum_assign.description": "열거형에 다른 열거형 대입을 허용합니다.",
  "rule.saqt.q.cpp.1064.option.allow_enum_assign.name": "열거형 대입 허용",
  "rule.saqt.q.cpp.1065.description": "암시적 정수 형변환 체커는 함수의 인자로 전달되는 정수형 값이 암시적으로 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1065.example.0.dangerous": "라인 6: use_int32() 함수를 호출할 때 foo 인자 값이 암시적으로 int32_t 타입으로 캐스팅되었습니다.",
  "rule.saqt.q.cpp.1065.example.0.safe": "라인 6: foo 인자를 명시적으로 캐스팅합니다.",
  "rule.saqt.q.cpp.1065.name": "암시적 정수 형변환",
  "rule.saqt.q.cpp.1066.description": "암시적 정수 업캐스팅 체커는 정수형 복합 수식절이 암시적으로 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1066.example.0.dangerous": "라인 5: 정수형의 복합 수식절이 암시적으로 더 큰 타입의 정수형으로 캐스팅되었습니다.",
  "rule.saqt.q.cpp.1066.example.0.safe": "라인 4: 정수형 타입인 복합 수식절을 더 큰 타입의 정수형으로 캐스팅할 경우에는 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1066.name": "암시적 정수 업캐스팅",
  "rule.saqt.q.cpp.1067.description": "암시적 정수 다운캐스팅 체커는 정수형 복합 수식절이 암시적으로 더 작은 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1067.example.0.dangerous": "라인 5: 정수형의 복합 수식절이 암시적으로 더 작은 타입의 정수형으로 캐스팅되었습니다.",
  "rule.saqt.q.cpp.1067.example.0.safe": "라인 5: 정수형 타입인 복합 수식절을 더 작은 타입의 정수형으로 변경할 경우에는 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1067.name": "암시적 정수 다운캐스팅",
  "rule.saqt.q.cpp.1068.description": "일치하지 않는 정의 및 선언의 반환 타입 체커는 함수 선언 반환 타입과 실제 반환하는 값의 타입이 다른 수식을 검출합니다.\n반환 타입과 실제 반환하는 값의 타입이 다른 경우는 개발자가 의도하지 않은 결과일 수 있습니다. 이 경우 암시적 캐스팅이 발생하며 이로 인해 결과값이 바뀔 수 있습니다.\n반환하는 값의 타입을 반환 타입에 맞추어 캐스팅하거나 반환하는 값 자체를 반환 타입에 맞추어 조정하도록 합니다.",
  "rule.saqt.q.cpp.1068.example.0.dangerous": "라인 2: 실수형 값을 반환했습니다. 하지만 foo() 함수의 반환 타입은 int32_t 이므로 서로 일치하지 않습니다.\n라인 7: double 타입 값을 반환했습니다. 하지만 bar() 함수의 반환 타입은 float 타입 이므로 서로 일치하지 않습니다.",
  "rule.saqt.q.cpp.1068.example.0.safe": "라인 2: 함수 반환 타입인 int32_t형과 일치하도록 정수형 값을 반환합니다.\n라인 7: 함수 반환 타입인 float 타입과 일치하도록 상수값에 접미사F를 붙여 float 타입임을 표현합니다.",
  "rule.saqt.q.cpp.1068.name": "일치하지 않는 정의 및 선언의 반환 타입",
  "rule.saqt.q.cpp.1068.option.strict_suffix.description": "float이 32비트, double이 64비트인 플랫폼에서 float형을 리턴하는 함수는 반드시 접미사 F를 붙여야 합니다.",
  "rule.saqt.q.cpp.1068.option.strict_suffix.name": "접미사 'F' 추가 여부",
  "rule.saqt.q.cpp.1069.description": "금지된 매크로 사용 체커는 정해진 사용 방법을 벗어나도록 매크로를 선언한 경우를 검출합니다.\n여기서 매크로의 정해진 사용 방법이란 중괄호 초기자, 상수, 문자열, 괄호 수식, 타입 한정자, 저장 클래스 지시자, do-while(0) 구조를 의미합니다.\n매크로를 정해진 사용 방법대로 사용하면 유용합니다. 하지만 매크로를 사용하는 경우 사용자가 보는 코드와 실제 코드가 달라지게 됩니다. 따라서 무분별하게 매크로를 사용하면 다양한 문제가 발생할 수 있습니다.\n정해진 사용 방법 이외의 방법으로 매크로를 선언하거나 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1069.example.0.dangerous": "라인 1: #define 매크로를 사용하여 타입을 정의했습니다.",
  "rule.saqt.q.cpp.1069.example.0.safe": "라인 1: typedef를 사용하여 타입을 정의하도록 합니다.",
  "rule.saqt.q.cpp.1069.name": "금지된 매크로 사용",
  "rule.saqt.q.cpp.1070.description": "암시적 실수 형변환 체커는 함수의 인자로 전달되는 실수형 값이 암시적으로 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1070.example.0.dangerous": "라인 6: use_f64() 함수를 호출할 때 f32a 인자 값이 암시적으로 float64_t 타입으로 캐스팅되었습니다.",
  "rule.saqt.q.cpp.1070.example.0.safe": "라인 5: f32a 인자를 명시적으로 캐스팅합니다.",
  "rule.saqt.q.cpp.1070.name": "암시적 실수 형변환",
  "rule.saqt.q.cpp.1071.description": "암시적 실수 다운캐스팅 체커는 실수형 복합 수식절이 암시적으로 더 작은 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n동일한 타입이지만 더 크거나 작은 타입으로 암시적으로 캐스팅하는 것은 개발자가 의도하지 않은 결과일 수 있습니다. 명시적 캐스팅은 이러한 변환을 개발자가 인지하고 있다는 의미이지만 암시적 캐스팅은 개발자가 인지하지 못한 것일 가능성이 있기 때문입니다. 이 경우 캐스팅된 값이 원래 값과 다르게 변경될 수 있습니다.\n타입을 캐스팅할 경우에는 반드시 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1071.example.0.dangerous": "라인 5: 실수형의 복합 수식절이 암시적으로 더 작은 타입의 실수형으로 캐스팅되었습니다.",
  "rule.saqt.q.cpp.1071.example.0.safe": "라인 5: 실수형 타입인 복합 수식절을 더 작은 타입의 실수형으로 변경할 경우에는 명시적으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1071.name": "암시적 실수 다운캐스팅",
  "rule.saqt.q.cpp.1072.description": "더 큰 타입으로 정수 형변환 체커는 정수형 복합 수식절이 더 큰 타입의 정수형으로 캐스팅되는 수식을 검출합니다.\n복합 수식절의 결과를 캐스팅하는 것은 프로세서에 따라 값의 변화를 예상하기 힘듭니다. 이러한 문제로 인해 연산 결과를 캐스팅하면서 잘못된 영역의 값을 처리할 수 있습니다.\n정수형 타입들로 복합 수식절을 사용할 때 모두 같은 크기의 정수형 타입을 사용하도록 합니다. 만약 어떤 값을 다른 타입으로 변경할 필요가 있을 경우 먼저 복합 수식절의 계산 결과를 저장한 후, 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1072.example.0.dangerous": "라인 2: uint16_t 타입의 복합 수식절 결과를 명시적으로 더 큰 정수형 타입인 uint32_t 타입으로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1072.example.0.safe": "라인 2: 복합 수식절의 결과를 동일한 타입을 가진 객체에 저장합니다.\n라인 3: 만약 더 큰 정수형 타입으로 변환이 필요한 경우 단항 수식을 캐스팅하여 저장합니다.",
  "rule.saqt.q.cpp.1072.name": "더 큰 타입으로 정수 형변환",
  "rule.saqt.q.cpp.1073.description": "부호가 있는 데이터와 없는 데이터 간 변환 체커는 signed 정수형과 unsigned 정수형간에 캐스팅이 일어나는 복합 수식절을 검출합니다.\n복합 수식절의 결과를 캐스팅하는 것은 프로세서에 따라 값의 변화를 예상하기 힘듭니다. 이러한 문제로 인해 연산 결과를 캐스팅하면서 잘못된 영역의 값을 처리할 수 있습니다.\n복합 수식절의 타입들은 모두 동일한 부호를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1073.example.0.dangerous": "라인 2: signed 정수형 복합 수식절을 unsigned 정수형으로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1073.example.0.safe": "라인 2: 복합 수식절의 부호와 계산 결과를 담을 변수의 부호를 동일하게 유지합니다.",
  "rule.saqt.q.cpp.1073.name": "부호가 있는 데이터와 없는 데이터 간 변환",
  "rule.saqt.q.cpp.1074.description": "더 큰 타입으로 실수 형변환 체커는 실수형 복합 수식절이 더 큰 타입의 실수형으로 캐스팅되는 수식을 검출합니다.\n복합 수식절의 결과를 캐스팅하는 것은 프로세서에 따라 값의 변화를 예상하기 힘듭니다. 이러한 문제로 인해 연산 결과를 캐스팅하면서 잘못된 영역의 값을 처리할 수 있습니다.\n실수형 타입들로 복합 수식절을 사용할 때 모두 같은 크기의 실수형 타입을 사용하도록 합니다. 만약 어떤 값을 다른 타입으로 변경할 필요가 있을 경우 먼저 복합 수식절의 계산 결과를 저장한 다음 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1074.example.0.dangerous": "라인 2: float32_t 타입의 복합 수식절 결과를 명시적으로 더 큰 실수형 타입인 float64_t 타입으로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1074.example.0.safe": "라인 2: 복합 수식절의 결과를 동일한 타입을 가진 객채에 저장합니다.\n라인 3: 만약 더 큰 실수형 타입으로 변환이 필요한 경우 단항 수식을 캐스팅하여 저장합니다.",
  "rule.saqt.q.cpp.1074.name": "더 큰 타입으로 실수 형변환",
  "rule.saqt.q.cpp.1075.description": "누락된 비트 연산 결과에 대한 형변환 체커는 비트 연산에서 unsigned char 혹은 unsigned short 타입의 피연산자를 즉시 피연산자 타입으로 캐스팅하지 않은 수식을 검출합니다.\n비트 연산은 ~, <<, >> 등을 가리킵니다.\n피연산자가 unsigned char나 unsigned short인 비트 연산의 결과에서 정수 승격(Integral Promotion)이 발생할 수 있습니다. 따라서 최종 결과의 타입으로 바로 캐스팅하지 않으면 예상하지 않은 값이 나올 수 있습니다.\nunsigned char나 unsigned short 타입의 변수에 비트 연산을 수행한 후, 바로 원래 타입으로 캐스팅하도록 합니다.",
  "rule.saqt.q.cpp.1075.example.0.dangerous": "라인 4: port 변수에 비트 연산을 수행했습니다. 하지만 즉시 타입을 캐스팅하지 않았습니다.",
  "rule.saqt.q.cpp.1075.example.0.safe": "라인 4: port 변수에 비트 연산을 수행한 후, 즉시 원래 타입인 unsigned short 타입으로 캐스팅합니다.",
  "rule.saqt.q.cpp.1075.name": "누락된 비트 연산 결과에 대한 형변환",
  "rule.saqt.q.cpp.1076.description": "포인터 타입에서 정수 타입으로 형변환 체커는 포인터형을 정수형으로 캐스팅하는 수식을 검출합니다.\n포인터를 정수로 캐스팅하는 경우에 필요한 정수의 크기를 지정하는 것은 구현 정의 동작(Implementation Defined Behavior)입니다. 따라서 컴파일러에 따라 동작이 달라질 수 있습니다. 메모리 매핑 레지스터나 하드웨어의 특정 기능을 지정하는 것 이외에는 사용하지 않도록 합니다.\n포인터형을 정수형으로 변환하지 않도록 합니다.",
  "rule.saqt.q.cpp.1076.example.0.dangerous": "라인 4: 포인터형을 정수형으로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1076.example.0.safe": "라인 4: 포인터형을 정수형으로 변환하지 않도록 합니다.",
  "rule.saqt.q.cpp.1076.name": "포인터 타입에서 정수 타입으로 형변환",
  "rule.saqt.q.cpp.1077.description": "정수 타입에서 포인터 타입으로 형변환 체커는 정수형을 포인터형으로 캐스팅하는 수식을 검출합니다.\n일반적으로 정수 값이나 void 형 포인터를 특정 타입에 대한 포인터로 캐스팅하는 경우 정의되지 않은 동작이 발생할 수 있습니다. 따라서 이렇게 캐스팅하지 않도록 합니다.\n정수형을 포인터형으로 변환하지 않도록 합니다.",
  "rule.saqt.q.cpp.1077.example.0.dangerous": "라인 2: 정수형을 포인터형으로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1077.example.0.safe": "라인 2: 정수형을 포인터형으로 캐스팅하지 않도록 합니다.",
  "rule.saqt.q.cpp.1077.name": "정수 타입에서 포인터 타입으로 형변환",
  "rule.saqt.q.cpp.1078.description": "포인터 타입으로 형변환 체커는 일반형이나 포인터형을 다른 포인터형으로 캐스팅하는 수식을 검출합니다.\n일반적으로 일반형이나 포인터형을 다른 포인터형으로 캐스팅하면 다양한 문제를 일으킬 수 있습니다. 따라서 이렇게 캐스팅하지 않도록 합니다.\n일반형이나 포인터형을 다른 포인터형으로 변환하지 않도록 합니다.",
  "rule.saqt.q.cpp.1078.example.0.dangerous": "라인 5: long* 타입에서 short* 타입으로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1078.example.0.safe": "라인 5: 객체를 다른 포인터로 캐스팅하지 않도록 합니다.",
  "rule.saqt.q.cpp.1078.name": "포인터 타입으로 형변환",
  "rule.saqt.q.cpp.108.description": "인자로 금지된 문자열 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 문자열을 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 문자열 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 특정 위치의 인자로 문자열을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.108.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: memcpy_API09() 함수의 두 번째 인자가 문자열이므로 검출됩니다.",
  "rule.saqt.q.cpp.108.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: memcpy_API09() 함수의 두 번째 인자가 정수형이므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.108.name": "인자로 금지된 문자열 사용",
  "rule.saqt.q.cpp.108.option.call_param_should_not_be_string.description": "문자열을 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.cpp.108.option.call_param_should_not_be_string.name": "문자열을 사용하지 말아야 할 인자",
  "rule.saqt.q.cpp.108.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.108.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.108.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.108.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.108.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.saqt.q.cpp.108.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.cpp.108.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.108.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.cpp.1081.description": "모호한 수식 우선순위 체커는 복합 수식에서 우선순위가 다른 연산자를 괄호 없이 사용하는 경우를 검출합니다.\nC/C++에서는 연산자 우선순위가 다소 복잡하므로 개발자가 실수하는 경우가 있을 수 있습니다. 즉, 연산자가 우선순위에 따라 동작하더라도 개발자가 의도한 순서라고는 확신할 수 없습니다. 따라서 원래 의도와 다른 결과가 나올 수 있습니다.\n복합 수식에서 우선순위가 다른 연산자가 있다면 괄호를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1081.example.0.dangerous": "라인 3: 연산자 우선순위에 의존하여 수식을 작성했습니다.",
  "rule.saqt.q.cpp.1081.example.0.safe": "라인 3: a*b 연산에 괄호를 사용합니다. 연산자 우선순위에 의해 올바른 값이 계산되더라도 괄호를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1081.name": "모호한 수식 우선순위",
  "rule.saqt.q.cpp.1082.description": "수식의 부수 효과 체커는 수식 내부에서 부수 효과가 일어나는 수식을 검출합니다.\n부수 효과(Side Effect)란 수식의 결과로 인해 메모리의 값이 변경되는 것을 가리킵니다. 일반적인 대입 연산의 경우 수식이 아니라 수식으로 구성된 문장이기 때문에 부수 효과에 해당되지 않습니다. 단, 대입 연산의 우측항이나 조건문의 조건부에서 부수 효과가 발생하는 경우 이 규칙의 검출 대상입니다.\n수식에서 부수 효과가 발생하는 경우 연산 순서에 따라 결과가 달라질 수 있습니다. 일반적인 연산자의 경우 연산 순서가 정해져 있으므로 문제가 발생하지 않을 수 있습니다. 하지만 연산순서가 정의되지 않은 연산자도 있습니다. 예를 들어 함수의 인자를 평가하는 순서는 정의되지 않은 동작입니다. 해당 인자에 부수 효과가 존재한다면 컴파일러에 따라 결과가 달라질 수 있습니다.\n수식 내부에서 부수 효과가 일어나지 않도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1082.example.0.dangerous": "라인 5: 수식에서 x 변수에 부수 효과가 발생했습니다. x는 같은 수식 내에서 arr 배열의 인덱스로도 사용되고 있으므로 컴파일러의 연산 순서에 따라 결과가 달라질 수 있습니다.",
  "rule.saqt.q.cpp.1082.example.0.safe": "라인 5: x 변수에 대한 ++ 연산을 다른 수식으로 분리합니다.\n라인 6: 수식에서 부수 효과가 발생하지 않도록 합니다.",
  "rule.saqt.q.cpp.1082.name": "수식의 부수 효과",
  "rule.saqt.q.cpp.1083.description": "함수 호출의 부수 효과 체커는 함수를 호출할 때 부수 효과가 발생하는 수식이 있는 경우를 검출합니다.\n부수 효과(Side Effect)란 수식의 결과로 인해 메모리의 값이 변경되는 것을 가리킵니다.\n수식에서 부수 효과가 발생하는 경우 연산 순서에 따라 결과가 달라질 수 있습니다. 일반적인 연산자의 경우 연산 순서가 정해져 있으므로 문제가 발생하지 않을 수 있습니다. 하지만 연산순서가 정의되지 않은 연산자도 있습니다. 예를 들어 함수의 인자를 평가하는 순서는 정의되지 않은 동작입니다. 해당 인자에 부수 효과가 존재한다면 컴파일러에 따라 결과가 달라질 수 있습니다.\n함수를 호출할 때 부수 효과가 발생하지 않도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1083.example.0.dangerous": "라인 5: func() 함수를 호출할 때 부수 효과가 발생했습니다. 따라서 전체 수식에서 총 3번의 부수 효과가 발생하므로 컴파일러의 연산 순서에 따라 결과가 달라질 수 있습니다.",
  "rule.saqt.q.cpp.1083.example.0.safe": "라인 5: 함수를 호출할 때 부수 효과를 일으키지 않도록 합니다.\n라인 6: 함수를 호출할 때 부수 효과를 일으키지 않도록 합니다.",
  "rule.saqt.q.cpp.1083.name": "함수 호출의 부수 효과",
  "rule.saqt.q.cpp.1084.description": "파라미터의 부수 효과 체커는 함수를 호출할 때 인자에 부수 효과가 발생하는 수식이 있는 경우를 검출합니다.\n부수 효과(Side Effect)란 수식의 결과로 인해 메모리의 값이 변경되는 것을 가리킵니다.\n수식에서 부수 효과가 발생하는 경우 연산 순서에 따라 결과가 달라질 수 있습니다. 일반적인 연산자의 경우 연산 순서가 정해져 있으므로 문제가 발생하지 않을 수 있습니다. 하지만 연산순서가 정의되지 않은 연산자도 있습니다. 예를 들어 함수의 인자를 평가하는 순서는 정의되지 않은 동작입니다. 해당 인자에 부수 효과가 존재한다면 컴파일러에 따라 결과가 달라질 수 있습니다.\n함수를 호출할 때 인자에서 부수 효과가 발생하지 않도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1084.example.0.dangerous": "라인 4: someFunc() 함수를 호출할 때 사용하는 첫 번째 인자인 foo 변수에서 부수 효과가 발생했습니다. 컴파일러에 따라 인자의 연산 순서가 달라질 수 있습니다.",
  "rule.saqt.q.cpp.1084.example.0.safe": "라인 4: 함수를 호출할 때 인자에서 부수 효과를 일으키지 않도록 합니다.",
  "rule.saqt.q.cpp.1084.name": "파라미터의 부수 효과",
  "rule.saqt.q.cpp.1085.description": "피연산자에 사용된 할당 체커는 수식 내에서 대입 연산을 사용한 경우를 검출합니다.\n구체적으로는 다음의 경우를 의미합니다. 하나의 수식 문장 내에서 이미 대입 연산을 사용하고 있는 항의 우측 수식 항에 대입 연산이 있습니다. 조건 수식이 들어가는 곳에 대입 연산이 있습니다.\n이와 같은 문제들은 부수 효과를 일으키거나 잘못 사용된 결과일 수 있습니다. 특히 반복문이나 조건문의 조건부에서 대입 연산을 사용한 것은 비교 연산을 잘못 사용한 경우가 많으며, 이로 인해 수식의 평가 결과가 항상 참이 되어 다른 문제로 이어지게 됩니다.\n수식 내에서 대입 연산을 사용하지 않도록 합니다. 이것은 수식 문장에서 대입 연산이 있는 경우는 제외합니다. 대입 연산의 우측항에 대입 연산이 있거나 문장으로 끝나지 않는 조건부와 같은 수식에 대입 연산이 있는 경우에 해당합니다.",
  "rule.saqt.q.cpp.1085.example.0.dangerous": "라인 3: 대입 연산의 우측항에서 또다시 대입 연산을 사용했습니다. a 변수의 타입이 bool 이므로 비교 연산을 잘못 사용한 것일 수 있습니다.\n라인 4: y 변수의 초기화 수식에서 대입 연산을 사용했습니다.",
  "rule.saqt.q.cpp.1085.example.0.safe": "라인 3: 비교 연산을 사용합니다.\n라인 4: x 변수에 5를 대입하는 연산을 분리합니다.\n라인 5: y 변수의 초기화 수식에 x를 대입합니다.",
  "rule.saqt.q.cpp.1085.name": "피연산자에 사용된 할당",
  "rule.saqt.q.cpp.1086.description": "복합 수식 내에서 volatile 타입 변수 사용 체커는 복합 수식절에서 volatile 한정자를 가진 변수를 피연산자로 두 번 이상 사용하는 수식을 검출합니다.\nvolatile 형으로 표현된 휘발성 객체는 프로그램 외부에서 수정될 수 있습니다. 해당 변수는 수식을 평가할 때 서로 다른 값을 가질 수 있습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n복합 수식절에서는 volatile 한정자를 가진 변수를 최대 한 번만 사용하도록 합니다.",
  "rule.saqt.q.cpp.1086.example.0.dangerous": "라인 4: volatile 한정자를 가진 v 변수를 하나의 수식에서 두 번 사용했습니다.",
  "rule.saqt.q.cpp.1086.example.0.safe": "라인 4: volatile 한정자를 가진 v 변수를 bar에 저장합니다. volatile 변수를 하나의 수식에서 한 번만 사용합니다.",
  "rule.saqt.q.cpp.1086.name": "복합 수식 내에서 volatile 타입 변수 사용",
  "rule.saqt.q.cpp.1087.description": "크기 검사의 부수 효과 체커는 sizeof 피연산자에 부수 효과가 발생하는 수식을 검출합니다.\n추가적으로, sizeof 외에 유사한 이슈가 있는 decltype 과 같은 연산자에서도 동일한 방식으로 검출을 수행합니다.\nsizeof 연산자는 피연산자를 연산하지 않습니다. 따라서 부수 효과가 있는 수식이 존재하는 경우 예측하지 못한 결과가 발생할 수 있습니다.\nsizeof 피연산자에 부수 효과가 발생하는 수식을 작성하지 않도록 합니다.",
  "rule.saqt.q.cpp.1087.example.0.dangerous": "라인 4: sizeof 피연산자에 부수 효과가 발생했습니다.",
  "rule.saqt.q.cpp.1087.example.0.safe": "라인 4: y++ 연산을 다른 수식으로 분리합니다.\n라인 5: sizeof 피연산자에 부수 효과가 있는 수식을 작성하지 않습니다.",
  "rule.saqt.q.cpp.1087.name": "크기 검사의 부수 효과",
  "rule.saqt.q.cpp.1088.description": "잘못된 호출 순서로 인한 함수 호출의 부수 효과 체커는 논리 연산자의 우측항에서 함수를 호출하는 수식을 검출합니다.\n&&, || 와 같은 논리 연산자의 우측항에서 함수를 호출하면 부수 효과가 발생할 수 있습니다. 이로 인해 논리 연산자의 좌측항에 대한 평가 결과가 달라질 수 있습니다. 따라서 원래 의도했던 것과 다른 결과가 발생할 수 있습니다.\n논리 연산자의 우측항에서 함수를 호출하지 않도록 합니다.",
  "rule.saqt.q.cpp.1088.example.0.dangerous": "라인 7: 논리 연산자의 우측항에서 test1() 함수를 호출했습니다. bar 값이 변경되는 부수 효과가 발생할 수 있습니다.",
  "rule.saqt.q.cpp.1088.example.0.safe": "라인 7: 함수를 호출하는 수식을 분리합니다.\n라인 8: 논리 연산자의 우측항에서 부수 효과가 발생할 수 있는 함수를 호출하지 않습니다.",
  "rule.saqt.q.cpp.1088.name": "잘못된 호출 순서로 인한 함수 호출의 부수 효과",
  "rule.saqt.q.cpp.1089.description": "논리 연산의 부수 효과 체커는 논리 연산자의 우측항에서 부수 효과를 발생시키는 연산자를 사용하는 수식을 검출합니다.\nC/C++에서는 논리 연산자의 좌측항의 결과에 따라 우측항이 단락 평가(Short Circuit Evaluation)를 수행하게 됩니다. 예를 들어 좌측항의 연산 결과에 따라 우측항의 연산을 수행하지 않는 경우가 있습니다. 따라서 개발자는 우측항에서 부수 효과가 발생할 것을 기대하고 코드를 작성했으나 의도한 것과 다르게 부수 효과가 발생하지 않을 수 있습니다.\n논리 연산자의 우측항에서 부수 효과가 발생시키는 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1089.example.0.dangerous": "라인 4: 논리 연산자의 우측항에서 부수 효과가 발생했습니다.",
  "rule.saqt.q.cpp.1089.example.0.safe": "라인 5: 논리 연산자의 우측항을 분리합니다.\n라인 6: 부수 효과가 발생하는 수식을 분리합니다. 그러면 논리 연산자의 우측항에서 부수 효과가 발생하는 수식을 사용하지 않게 됩니다.",
  "rule.saqt.q.cpp.1089.name": "논리 연산의 부수 효과",
  "rule.saqt.q.cpp.109.description": "명시된 함수 인자 미사용 체커는 옵션에 지정된 함수에서 특정 인자 위치에 지정된 자료형 함수가 아닌 값을 인자로 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 함수 인자 위치와 함수 이름을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 지정된 함수를 사용해야 합니다.",
  "rule.saqt.q.cpp.109.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: PFM_ERR_API10() 함수를 호출했습니다. 두 번째 인자가 옵션에 명시된 함수가 아니므로 검출됩니다.",
  "rule.saqt.q.cpp.109.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: PFM_ERR_API10() 함수를 호출했습니다. 두 번째 인자가 옵션에 명시된 함수인 PfmNumber_API10()이므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.109.name": "명시된 함수 인자 미사용",
  "rule.saqt.q.cpp.109.option.call_param_should_be_call.description": "필수 호출 파라미터를 설정합니다.",
  "rule.saqt.q.cpp.109.option.call_param_should_be_call.name": "필수 호출 파라미터 설정",
  "rule.saqt.q.cpp.109.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.109.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.109.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.109.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.109.option.function_target.description": "분석 대상이 되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.109.option.function_target.name": "분석 대상이 되는 함수",
  "rule.saqt.q.cpp.109.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.109.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.cpp.1090.description": "이미 열려진 파일 열기 체커는 이미 열려 있는 파일을 다시 열려고 하면 이슈를 검출합니다.\n이미 열린 파일을 다시 열 경우 파일을 다루는 과정에서 문제가 발생할 수 있습니다.\n이미 열려 있는 파일을 다시 열지 않도록 주의해야 합니다.",
  "rule.saqt.q.cpp.1090.example.0.dangerous": "라인 3: 이미 열려있는 파일을 다시 열었습니다.",
  "rule.saqt.q.cpp.1090.example.0.safe": "라인 2: 같은 파일은 동시에 한번 만 열도록 합니다.",
  "rule.saqt.q.cpp.1090.name": "이미 열려진 파일 열기",
  "rule.saqt.q.cpp.1093.description": "부적절한 배열 해제 체커는 delete 구문으로 배열을 해제할 때 인덱스를 명시한 수식을 검출합니다.\ndelete 구문으로 배열을 해제할 때 인덱스를 명시하는 것은 비표준적인 방법입니다. 중요한 오류가 발생하는 문제는 아니지만 표준에 따른 코딩 방법을 준수하는 것이 좋습니다.\ndelete 구문으로 배열을 해제할 때 인덱스를 명시하지 않도록 합니다.",
  "rule.saqt.q.cpp.1093.example.0.dangerous": "라인 3: arr 배열을 delete 구문으로 해제하면서 인덱스를 명시했습니다.",
  "rule.saqt.q.cpp.1093.example.0.safe": "라인 3: 인덱스를 명시하지 않고 배열을 해제합니다.",
  "rule.saqt.q.cpp.1093.name": "부적절한 배열 해제",
  "rule.saqt.q.cpp.1094.description": "void 파라미터 타입 사용 체커는 void 타입을 매개 변수의 타입으로 사용한 함수 선언을 검출합니다.\nvoid 타입을 매개 변수의 타입으로 사용하는 것은 비표준적인 방법입니다. 중요한 오류가 발생하는 문제는 아니지만 표준에 따른 코딩 방법을 준수하는 것이 좋습니다.\n매개 변수의 타입으로 void 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1094.example.0.dangerous": "라인 1: 매개 변수 a를 void 타입으로 선언했습니다.",
  "rule.saqt.q.cpp.1094.example.0.safe": "라인 1: 매개 변수의 타입으로 void 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1094.name": "void 파라미터 타입 사용",
  "rule.saqt.q.cpp.1097.description": "논리 연산 내에서의 volatile 변수 접근 체커는 논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하는 수식을 검출합니다.\n논리 연산자에서는 좌측항에서 우측항으로 연산을 수행합니다. 하지만 우측항에 volatile 한정자를 가진 변수가 존재하고 해당 변수가 좌측항의 값에 의존하여 변경되는 경우 의도하지 않은 프로그램 동작이 발생할 수 있습니다.\n논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1097.example.0.dangerous": "라인 3: 논리 연산자의 우측항에서 volatile 한정자를 가진 var 변수를 사용했습니다.",
  "rule.saqt.q.cpp.1097.example.0.safe": "라인 3: 논리 연산자의 우측항에서 volatile 한정자를 가진 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1097.name": "논리 연산 내에서의 volatile 변수 접근",
  "rule.saqt.q.cpp.1099.description": "부호가 있는 값에 대해 비트 연산 체커는 signed 정수형 객체를 비트 연산자의 피연산자로 사용하는 수식을 검출합니다.\nsigned 정수형 변수를 비트 연산에 사용하는 경우 부호 비트로 인해 원래 의도했던 값과 다른 결과가 발생할 수 있습니다.\nsigned 대신 unsigned 정수형 객체를 비트 연산자의 피연산자로 사용하도록 합니다.",
  "rule.saqt.q.cpp.1099.example.0.dangerous": "라인 4: 비트 연산에 signed int 타입의 x 변수를 사용했습니다.",
  "rule.saqt.q.cpp.1099.example.0.safe": "라인 4: unsigned 정수형 객체를 비트 연산자의 피연산자로 사용하도록 합니다.",
  "rule.saqt.q.cpp.1099.name": "부호가 있는 값에 대해 비트 연산",
  "rule.saqt.q.cpp.1100.description": "부호가 있는 값에 대해 시프트 체커는 signed 정수형 객체를 시프트 연산자의 피연산자로 사용하는 수식을 검출합니다.\nsigned 정수형 변수를 시프트 연산에 사용하는 경우 부호 비트로 인해 원래 의도했던 값과 다른 결과가 발생할 수 있습니다.\n시프트 연산자의 피연산자에 unsigned 정수형 객체를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1100.example.0.dangerous": "라인 4: 시프트 연산에 signed int 타입의 x 변수를 사용했습니다.",
  "rule.saqt.q.cpp.1100.example.0.safe": "라인 4: 시프트 연산의 피연산자는 unsigned 정수형이어야 합니다.",
  "rule.saqt.q.cpp.1100.name": "부호가 있는 값에 대해 시프트",
  "rule.saqt.q.cpp.1101.description": "부호가 없는 값에 대해 부정 연산 체커는 unsigned 정수형 변수에 단항 마이너스 연산자를 사용하는 수식을 검출합니다.\nunsigned 정수형 변수는 음수를 표현할 수 없습니다. 따라서 기본적으로 단항 마이너스 연산자를 unsigned 정수형 변수에 적용할 수 없습니다. 그러나 암시적 캐스팅으로 인해 일부 컴파일러에서는 해당 수식에서 예상하지 못한 결과가 발생할 수 있습니다.\nunsigned 정수형 변수에 단항 마이너스 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1101.example.0.dangerous": "라인 3: unsigned int 타입 x 변수에 단항 마이너스 연산자를 사용했습니다.",
  "rule.saqt.q.cpp.1101.example.0.safe": "라인 3: x 변수의 타입을 int 타입으로 변경합니다.",
  "rule.saqt.q.cpp.1101.name": "부호가 없는 값에 대해 부정 연산",
  "rule.saqt.q.cpp.1102.description": ", 연산자 사용 체커는 콤마 연산을 사용한 수식을 검출합니다.\n이때 기본적으로 콤마가 들어가는 함수 호출의 인자 값 등은 제외합니다.\n콤마 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1102.example.0.dangerous": "라인 4: 콤마 연산자를 사용했습니다.",
  "rule.saqt.q.cpp.1102.example.0.safe": "라인 4: 콤마 연산자를 사용하지 않고 수식을 분리합니다.\n라인 5: 콤마 연산자를 사용하지 않고 수식을 분리합니다.",
  "rule.saqt.q.cpp.1102.name": ", 연산자 사용",
  "rule.saqt.q.cpp.1103.description": "부동 소수점 값에 대해 비트 표현 사용 체커는 실수형으로 선언한 값을 비트 단위로 접근하는 캐스팅이나 선언 등을 검출합니다.\n실수형 값을 비트 단위로 접근하는 것은 위험한 방법입니다. 이것은 실수형 값의 메모리 체계(Memory Format)가 컴파일러마다 상이하여 이로 인해 의도했던 것과 달라질 수 있기 때문입니다.\n실수형 값을 비트 단위로 접근하지 않습니다. 구체적으로는 실수형 값을 비트 단위로 접근 가능한 다른 타입으로 캐스팅하거나 공용체에서 정수형과 같이 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1103.example.0.dangerous": "라인 3: float 타입 변수를 unsigned int 참조 타입으로 캐스팅했습니다. 이 경우 이 값을 비트 단위로 참조할 수 있게 됩니다.\n라인 6: 공용체에 float 타입과 unsigned int 타입을 동시에 사용했습니다. 이 경우 실수형 값을 대입하고 정수형 타입을 사용하여 비트 단위로 참조할 수 있게 됩니다.",
  "rule.saqt.q.cpp.1103.example.0.safe": "라인 3: float 타입 변수를 참조로 대입하지 않고 값으로 대입하여 사용합니다.\n라인 6: 실수형 데이터 타입과 정수형 데이터 타입을 동시에 공용체의 필드로 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1103.name": "부동 소수점 값에 대해 비트 표현 사용",
  "rule.saqt.q.cpp.1104.description": "암시적 비교 수식 체커는 조건문 등에서 Boolean 값을 암시적으로 비교한 경우를 검출합니다.\n구체적으로는 단순 변수를 0이나 널 값과 비교하기 위해 비교 구문 없이 사용하는 경우를 의미합니다.\nBoolean 값을 암시적으로 비교하는 코딩 스타일에 익숙해질 경우, 값이 항상 1과 0이 아닌 비교 구문에 대해서는 잘못 처리될 수 있습니다. 예를 들어 문자열을 비교하는 함수의 경우 일반적인 조건식과 다르게 0이 참이며, 거짓은 양수나 음수가 됩니다. 따라서 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n조건문 등에서 수식이 Boolean 값으로 끝나야 하는 경우 항상 명시적인 비교 구문을 작성하도록 합니다.",
  "rule.saqt.q.cpp.1104.example.0.dangerous": "라인 2: if 구문 내의 조건식이 Boolean 표현이 아닙니다.",
  "rule.saqt.q.cpp.1104.example.0.safe": "라인 2: if 구문내의 조건식을 Boolean 표현식이 되도록 비교 연산을 사용합니다.",
  "rule.saqt.q.cpp.1104.name": "암시적 비교 수식",
  "rule.saqt.q.cpp.1105.description": "반복문 인덱스로 실수 타입 사용 체커는 실수형 변수를 루프 카운터로 사용하는 경우를 검출합니다.\n실수는 사칙연산 과정에서 결과에 미세한 오차가 누적되어 생각했던 것과 다른 값이 될 수 있으므로 루프 카운터로 사용하기에 적합하지 않습니다. 코드를 작성할 때 의도하지 않은 횟수로 반복될 수 있습니다.\n루프 카운터에 실수형이 아닌 정수형 변수만을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1105.example.0.dangerous": "라인 2: 실수형 변수를 루프 카운터로 사용했습니다.",
  "rule.saqt.q.cpp.1105.example.0.safe": "라인 2: 실수형 변수를 루프 카운터로 사용하지 않도록 합니다.\n라인 3: 만약 실수형 변수를 반복적으로 처리해야 하는 경우 따로 처리하도록 합니다.",
  "rule.saqt.q.cpp.1105.name": "반복문 인덱스로 실수 타입 사용",
  "rule.saqt.q.cpp.1106.description": "누락된 반복문 인덱스 변경 체커는 증감부에서 루프 카운터에 대한 증감 연산이 누락된 for 구문을 검출합니다.\nfor 구문의 증감부에서 루프 카운터의 증감 연산이 없을 경우 잘못된 반복문일 수 있습니다. 이 경우 보통 다른 곳에서 루프 카운터를 증감시키지만 사소한 변경이나 실수로 인해 무한 루프에 빠질 위험이 있습니다.\nfor 구문의 증감부에서는 항상 루프 카운터의 증감 연산을 수행하도록 합니다.",
  "rule.saqt.q.cpp.1106.example.0.dangerous": "라인 3: for 구문의 증감부에서 루프 카운터 i 변수를 증가시키거나 감소시키지 않았습니다.",
  "rule.saqt.q.cpp.1106.example.0.safe": "라인 3: for 구문의 증감부에서 루프 카운터의 i 변수에 증감 연산자를 사용합니다.",
  "rule.saqt.q.cpp.1106.name": "누락된 반복문 인덱스 변경",
  "rule.saqt.q.cpp.1107.description": "누락된 반복문 조건 체커는 평가부에서 루프 카운터에 대한 비교 연산이 누락된 for 구문을 검출합니다.\nfor 구문의 평가부에서 루프 카운터의 비교 연산이 없을 경우 잘못된 반복문일 수 있습니다. 이 경우 보통 다른 곳에서 루프 카운터를 비교하지만 사소한 변경이나 실수로 인해 무한 루프에 빠질 위험이 있습니다.\nfor 구문의 평가부에서는 항상 루프 카운터의 비교 연산을 수행하도록 합니다.",
  "rule.saqt.q.cpp.1107.example.0.dangerous": "라인 1: 평가부에서 루프 카운터 i 변수를 평가하지 않았습니다.\n라인 7: 평가부에서 루프 카운터에 대한 비교 연산이 없습니다.",
  "rule.saqt.q.cpp.1107.example.0.safe": "라인 1: 평가부에서 루프 카운터 i 변수에 대한 비교 연산을 수행합니다.\n라인 7: 평가부에서 루프 카운터 i 변수에 대한 비교 연산을 추가합니다.",
  "rule.saqt.q.cpp.1107.name": "누락된 반복문 조건",
  "rule.saqt.q.cpp.1108.description": "반복문 내에서 반복문 인덱스를 제외한 변수 변경 체커는 증감부에서 루프 카운터가 아닌 변수에 대해 증감 연산을 한 for 구문을 검출합니다.\nfor 구문의 증감부에서 루프 카운터가 아닌 변수를 증감 연산 하는 것은 잘못된 반복문일 수 있습니다. 이 경우 원래 증감 하려던 루프 카운터 대신 다른 변수를 잘못 사용했을 가능성이 있으며 무한 루프에 빠질 위험이 있습니다. 혹은 이러한 사용이 의도했던 것이라면 가독성 측면에서 좋지 않습니다.\nfor 구문의 증감부에서는 항상 루프 카운터만 증감 연산을 수행하도록 합니다.",
  "rule.saqt.q.cpp.1108.example.0.dangerous": "라인 3: 루프 카운터 i 변수 외에 var 변수의 값도 증가시켰습니다.",
  "rule.saqt.q.cpp.1108.example.0.safe": "라인 3: 루프 카운터 외에 다른 변수의 값을 증감시키지 않도록 합니다.",
  "rule.saqt.q.cpp.1108.name": "반복문 내에서 반복문 인덱스를 제외한 변수 변경",
  "rule.saqt.q.cpp.1109.description": "반복문 내에서의 여러 개의 초기화 체커는 초기화 영역에서 루프 카운터가 아닌 변수를 초기화한 for 구문을 검출합니다.\nfor 구문의 초기화 영역에서 루프 카운터가 아닌 변수를 초기화하는 것은 잘못된 반복문일 수 있습니다. 이 경우 원래 초기화하려던 루프 카운터 대신 다른 변수를 잘못 사용했을 가능성이 있으며 무한 루프에 빠질 위험이 있습니다. 혹은 이렇나 사용이 의도했던 것이라면 가독성 측면에서 좋지 않습니다.\nfor 구문의 초기와 영역에서는 항상 루프 카운터만 초기화하도록 합니다.",
  "rule.saqt.q.cpp.1109.example.0.dangerous": "라인 4: 루프 카운터 i 변수 외에 var 변수도 초기화했습니다.",
  "rule.saqt.q.cpp.1109.example.0.safe": "라인 3: 루프 카운터 외에 다른 변수의 값을 초기화시키지 않도록 합니다.",
  "rule.saqt.q.cpp.1109.name": "반복문 내에서의 여러 개의 초기화",
  "rule.saqt.q.cpp.111.description": "명시된 인자 미사용 체커는 옵션에 지정된 특정 함수에서 지정된 함수를 해당 함수의 인자로 사용하지 않은 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 호출 대상 함수, 호출 대상 함수의 비교 대상이 되는 인자 위치, 호출 대상 함수의 인자로 사용되는 함수 위치, 인자로 사용되는 함수 이름, 인자로 사용된 함수에서 비교 대상이 되는 인자 위치, 비교 모드 설정을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수의 인자와 사용된 함수의 인자가 동일하게 맞춰져야 합니다.",
  "rule.saqt.q.cpp.111.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: memcpy_API12() 함수를 호출했습니다. 세 번째 인자로 사용된 strlen_API12() 함수 인자와 memcpy_API12() 함수의 첫 번째 인자가 일치하지 않으므로 검출됩니다.",
  "rule.saqt.q.cpp.111.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: memcpy_API12() 함수를 호출했습니다. 세 번째 인자로 사용된 strlen_API12() 함수 인자와 memcpy_API12() 함수의 첫 번째 인자가 일치합니다.",
  "rule.saqt.q.cpp.111.name": "명시된 인자 미사용",
  "rule.saqt.q.cpp.111.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.111.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.111.option.call_target_call_param.description": "함수 호출이어야 하는 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.cpp.111.option.call_target_call_param.name": "함수 호출이어야 하는 파라미터 인덱스",
  "rule.saqt.q.cpp.111.option.call_target_compare_param.description": "호출 대상 함수의 비교대상이 되는 파라미터를 설정합니다.",
  "rule.saqt.q.cpp.111.option.call_target_compare_param.name": "호출 대상 함수의 비교대상이 되는 파라미터",
  "rule.saqt.q.cpp.111.option.call_target_param_call.description": "파라미터로 호출할 함수 이름을 설정합니다.",
  "rule.saqt.q.cpp.111.option.call_target_param_call.name": "파라미터로 호출할 함수 이름",
  "rule.saqt.q.cpp.111.option.call_target_param_compare_mode.description": "decimal : 상수 숫자.string : 상수 문자열.variable: 변수",
  "rule.saqt.q.cpp.111.option.call_target_param_compare_mode.name": "비교 모드를 설정합니다.",
  "rule.saqt.q.cpp.111.option.call_target_param_compare_param.description": "파라미터로 호출된 함수에서 비교대상이 되는 파라미터를 설정합니다.",
  "rule.saqt.q.cpp.111.option.call_target_param_compare_param.name": "파라미터로 호출된 함수에서 비교대상이 되는 파라미터",
  "rule.saqt.q.cpp.111.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.saqt.q.cpp.111.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.111.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.saqt.q.cpp.111.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.cpp.111.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.111.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.saqt.q.cpp.1110.description": "반복문 내에서 변경된 반복문 인덱스 체커는 for 구문의 증감부가 아닌 본문에서 루프 카운터를 변경하는 수식을 검출합니다.\nfor 구문의 본문에서 루프 카운터를 증감 연산 하는 것은 잘못된 반복문일 수 있습니다. 이 경우 제어 흐름을 잘못 설계할 경우 무한 루프에 빠질 위험이 있습니다. 혹은 이러한 사용이 의도했던 것이라면 가독성 측면에서 좋지 않습니다.\nfor 구문의 본문에서는 루프 카운터의 증감 연산을 수행하지 않도록 합니다. 루프 카운터는 오로지 증감부에서 변경되어야 합니다.",
  "rule.saqt.q.cpp.1110.example.0.dangerous": "라인 4: for 구문 본문에서 루프 카운터 a 변수를 변경했습니다.\n라인 5: for 구문 본문에서 루프 카운터 a 변수를 변경했습니다.",
  "rule.saqt.q.cpp.1110.example.0.safe": "라인 3: 루프 카운터는 for 구문의 증감부에서만 변경하도록 합니다.",
  "rule.saqt.q.cpp.1110.name": "반복문 내에서 변경된 반복문 인덱스",
  "rule.saqt.q.cpp.1113.description": "switch 구문 조건 내 불린 수식 체커는 조건부에 일반 변수가 아니라 Boolean 값이 나오는 switch 구문을 검출합니다.\nBoolean 값은 true나 false로 결정되는 값입니다. 이 경우 굳이 switch 구문을 사용할 필요가 없습니다.\nswitch 구문의 조건부에 Boolean 값이 오지 않도록 합니다. 만약 Boolean 값이 와야 하는 경우 switch 구문 대신 if 구문을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1113.example.0.dangerous": "라인 2: switch 구문의 조건부에 Boolean 값이 왔습니다.",
  "rule.saqt.q.cpp.1113.example.0.safe": "라인 2: switch 구문의 조건부에는 Boolean 값이 오지 않도록 합니다.",
  "rule.saqt.q.cpp.1113.name": "switch 구문 조건 내 불린 수식",
  "rule.saqt.q.cpp.1114.description": "빈 switch 구문 체커는 switch 구문 내부에서 case 절이나 default 절이 하나도 없는 경우를 검출합니다.\nswitch 구문이 반드시 최소 한 개의 case 절을 가지도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1114.example.0.dangerous": "라인 2: switch 구문에 case 절이 다만 한 개도 없습니다.",
  "rule.saqt.q.cpp.1114.example.0.safe": "라인 2: switch 구문이 최소 1개의 case 절을 가지도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1114.name": "빈 switch 구문",
  "rule.saqt.q.cpp.1115.description": "함수의 가변 인자 체커는 함수를 선언할 때 가변 인자를 사용하는 코드를 검출합니다.\n몇몇 함수에서는 가변 인자가 유용하게 쓰이는 경우가 있습니다. 하지만 컴파일러가 가변 인자에 대한 타입 검사를 수행하지 않기 때문에 이로 인해 프로그램이 오동작할 가능성이 있습니다. 특히 안정성이 중요한 프로그램을 개발하는 경우 가변 인자를 사용하면 상당한 위험이 따를 수 있습니다. 따라서 가변 인자를 사용하지 않는 것이 좋습니다.\n함수를 선언할 때 가변 인자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1115.example.0.dangerous": "라인 2: 함수를 선언할 때 가변 인자를 사용했습니다.",
  "rule.saqt.q.cpp.1115.example.0.safe": "라인 2: 함수를 선언할 때 가변 인자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1115.name": "함수의 가변 인자",
  "rule.saqt.q.cpp.1116.description": "부적절한 읽기 전용 파라미터 선언 체커는 매개 변수로 사용할 클래스 타입을 const 참조형으로 선언하지 않은 경우를 검출합니다.\n클래스 타입을 제외한 기본 타입은 값으로 전달합니다.\n클래스 타입 매개 변수를 const 참조형으로 전달하고 기본 타입을 값으로 전달하는 방법이 해당 타입의 보편적인 크기와 사용성을 고려했을 때 가장 이상적이기 때문입니다. 만약 클래스 타입을 값으로 전달한다면 불필요한 복사 연산 비용을 지불해야 하며, 포인터로 전달한다면 클래스 타입 객체가 널 포인터일 수 있습니다. 따라서 잘못 접근하는 경우 런타임 오류가 발생합니다.\n클래스 타입 매개 변수를 const 참조형으로 전달하도록 합니다.",
  "rule.saqt.q.cpp.1116.example.0.dangerous": "라인 4: 클래스 타입 매개 변수를 값으로 대입했습니다.",
  "rule.saqt.q.cpp.1116.example.0.safe": "라인 4: 클래스 타입을 const 참조형으로 전달하도록 합니다.",
  "rule.saqt.q.cpp.1116.name": "부적절한 읽기 전용 파라미터 선언",
  "rule.saqt.q.cpp.1117.description": "함수 식별자의 직접 사용 체커는 함수 식별자를 올바르지 않은 방법으로 사용한 경우를 검출합니다.\n여기서 올바른 방법이란 함수 식별자를 & 연산자의 피연산자로 사용하거나, 인자 목록을 포함하는 괄호와 함께 사용하는 것입니다. 즉 함수 포인터의 주소 값을 사용하거나 함수 호출의 방법으로 사용하는 것을 의미합니다.\n올바르지 않은 함수 식별자 사용의 경우 대부분 함수 호출을 잘못 사용했을 가능성이 높습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n함수 식별자는 함수 포인터의 주소 값으로 사용하거나 함수 호출로만 사용하도록 합니다.",
  "rule.saqt.q.cpp.1117.example.0.dangerous": "라인 3: foo() 함수를 일반 변수처럼 사용했습니다.\n라인 13: MISRA2008_8_4_4___f1() 함수를 & 연산자 없이 사용했습니다.\n라인 17: MISRA2008_8_4_4___f1() 함수를 & 연산자 없이 사용했습니다.",
  "rule.saqt.q.cpp.1117.example.0.safe": "라인 3: foo() 함수를 함수 호출 형태로 사용합니다.\n라인 13: MISRA2008_8_4_4___f1() 함수를 & 연산자의 피연산자로 사용합니다. 이 수식의 결과는 함수 포인터를 접근하게 됩니다.\n라인 17: MISRA2008_8_4_4___f1() 함수를 & 연산자의 피연산자로 사용합니다. 이 수식의 결과는 함수 포인터를 접근하게 됩니다.",
  "rule.saqt.q.cpp.1117.name": "함수 식별자의 직접 사용",
  "rule.saqt.q.cpp.1118.description": "일반 포인터에 대해 산술 연산 체커는 배열이 아닌 일반 포인터 타입 객체에 포인터 연산을 사용한 수식을 검출합니다.\n배열이 아닌 포인터 타입 객체에 포인터 연산을 수행하는 것은 유효한 주소를 가리킨다는 보장이 없습니다. 따라서 유효하지 않은 메모리 영역을 접근할 위험이 커지게 됩니다.\n포인터 연산은 배열 타입 객체나 배열 타입 객체를 가리키는 포인터에만 사용하도록 합니다.",
  "rule.saqt.q.cpp.1118.example.0.dangerous": "라인 2: 배열이 아닌 일반 포인터 타입 객체에 대해 포인터 연산을 수행했습니다.",
  "rule.saqt.q.cpp.1118.example.0.safe": "라인 3: 배열을 가리키는 포인터에 대해서만 포인터 연산을 수행합니다.",
  "rule.saqt.q.cpp.1118.name": "일반 포인터에 대해 산술 연산",
  "rule.saqt.q.cpp.1119.description": "다른 객체 포인터의 감소 연산 체커는 같은 배열 요소가 아닌 객체 간에 포인터 감소 연산을 수행하는 수식을 검출합니다.\n다른 배열 요소 간에 포인터 감소 연산을 수행하면 결과를 예측할 수 없습니다. 포인터의 주소 값은 런타임 때마다 달라지며, 같은 배열 요소가 아닌 경우 이러한 감소 연산을 수행하는 것은 매번 결과가 달라질 수밖에 없습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n서로 다른 배열 요소 간에 포인터 감소 연산을 수행하지 않도록 합니다.",
  "rule.saqt.q.cpp.1119.example.0.dangerous": "라인 7: p1 변수와 p2 변수를 포인터 감소 연산으로 계산했습니다. 여기서 두 포인터가 다른 배열을 가리켰습니다.",
  "rule.saqt.q.cpp.1119.example.0.safe": "라인 7: 같은 배열을 가리키는 포인터 간에 감소 연산을 수행하도록 합니다.",
  "rule.saqt.q.cpp.1119.name": "다른 객체 포인터의 감소 연산",
  "rule.saqt.q.cpp.112.description": "인자로 리터럴 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 위치의 인자에 리터럴 혹은 문자열로 전달하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 숫자를 사용하지 말아야 할 인자 위치, 문자열을 사용하지 말아야 할 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 숫자 혹은 문자열을 입력하지 않도록 합니다.",
  "rule.saqt.q.cpp.112.example.0.dangerous": "라인 3: 옵션에서 분석 대상 함수에 memset_API13() 을 입력했다고 가정합니다. 첫 번째 인자에 문자열이 있으므로 검출됩니다.",
  "rule.saqt.q.cpp.112.example.0.safe": "라인 3: 옵션에서 분석 대상 함수에 memset_API13() 을 입력했다고 가정합니다. 첫 번째 인자에 문자가 있으므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.112.name": "인자로 리터럴 사용",
  "rule.saqt.q.cpp.112.option.call_param_should_not_be_deciaml.description": "숫자를 사용하지 말아야 할 호출 파라미터를 설정합니다.",
  "rule.saqt.q.cpp.112.option.call_param_should_not_be_deciaml.name": "숫자를 사용하지 말아야 할 호출 파라미터",
  "rule.saqt.q.cpp.112.option.call_param_should_not_be_string.description": "문자열을 사용하지 말아야 할 호출 파라미터를 설정합니다.",
  "rule.saqt.q.cpp.112.option.call_param_should_not_be_string.name": "문자열을 사용하지 말아야 할 호출 파라미터",
  "rule.saqt.q.cpp.112.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.cpp.112.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.cpp.112.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.112.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.1120.description": "다른 객체 포인터 간 비교 체커는 같은 배열 요소가 아닌 객체 간에 비교 연산을 수행하는 수식을 검출합니다.\n비교 연산은 <, <=, >, >=, == 연산 등을 의미합니다.\n다른 배열 요소 간에 비교 연산을 수행하면 결과를 예측할 수 없습니다. 포인터의 주소 값은 런타임 때마다 달라지며, 같은 배열 요소가 아닌 경우 이러한 비교 연산을 수행하는 것은 매번 결과가 달라질 수밖에 없습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n서로 다른 배열 요소 간에 비교 연산을 수행하지 않도록 합니다.",
  "rule.saqt.q.cpp.1120.example.0.dangerous": "라인 6: p1 변수와 p2 변수를 비교 연산으로 계산했습니다. 여기서 두 포인터가 다른 배열을 가리켰습니다.",
  "rule.saqt.q.cpp.1120.example.0.safe": "라인 6: 같은 배열을 가리키는 포인터 간에 비교 연산을 수행하도록 합니다.",
  "rule.saqt.q.cpp.1120.name": "다른 객체 포인터 간 비교",
  "rule.saqt.q.cpp.1121.description": "포인터 타입 변수에 대한 배열 접근 체커는 배열이 안니 일반 포인터 타입 객체에 배열 접근 연산을 사용한 수식을 검출합니다.\n배열이 아닌 포인터 타입 객체에 배열 접근 연산을 수행하는 것은 유효한 주소를 가리킨다는 보장이 없습니다. 따라서 유효하지 않은 메모리 영역을 접근할 위험이 커지게 됩니다.\n배열 접근 연산은 배열 타입 객체나 배열 타입 객체를 가리키는 포인터에만 사용하도록 합니다.",
  "rule.saqt.q.cpp.1121.example.0.dangerous": "라인 3: 포인터 타입 param 변수에 배열 접근 연산자를 사용했습니다.\n라인 4: 포인터 타입 param 변수에 배열 접근 연산자를 사용했습니다.",
  "rule.saqt.q.cpp.1121.example.0.safe": "라인 3: 배열 타입에만 배열 접근 연산자를 사용합니다.",
  "rule.saqt.q.cpp.1121.name": "포인터 타입 변수에 대한 배열 접근",
  "rule.saqt.q.cpp.1121.option.ignore_parameter.description": "파라미터로 변수는 분석대상에서 제외합니다.",
  "rule.saqt.q.cpp.1121.option.ignore_parameter.name": "파라미터 변수를 무시합니다.",
  "rule.saqt.q.cpp.1123.description": "겹치는 메모리 영역의 객체 간 대입 연산 체커는 수식을 평가하면서 서로 메모리 영역이 겹치는 부분 간에 대입이 발생하는 수식을 검출합니다.\n구체적으로는 문자열 관련 함수를 사용하면서 원본 객체와 목적 객체의 메모리가 겹치는 부분이 있는 경우를 검출합니다.\n메모리 저장 영역이 겹치는 객체 간에 대입 연산을 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n서로 메모리 영역이 겹치는 객체 간에는 대입이 일어나는 함수를 호출하지 않도록 합니다.",
  "rule.saqt.q.cpp.1123.example.0.dangerous": "라인 3: char 타입 배열인 str 변수에 str 변수를 복사했습니다.",
  "rule.saqt.q.cpp.1123.example.0.safe": "라인 4: 원본 객체와 목적 객체의 메모리 영역이 겹치지 않아야 합니다.",
  "rule.saqt.q.cpp.1123.name": "겹치는 메모리 영역의 객체 간 대입 연산",
  "rule.saqt.q.cpp.1124.description": "중복 저장소에 할당 체커는 수식을 평가하면서 서로 메모리 영역이 겹치는 공용체 필드 간에 대입이 발생하는 수식을 검출합니다.\n메모리 저장 영역이 겹치는 객체 간에 대입 연산을 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n같은 공용체 객체의 필드 간에는 대입 연산을 수행하지 않도록 합니다.",
  "rule.saqt.q.cpp.1124.example.0.dangerous": "라인 7: 공용체 객체 ut1의 a 필드에 b 필드를 대입했습니다. 둘은 같은 메모리 영역에 있습니다.",
  "rule.saqt.q.cpp.1124.example.0.safe": "라인 7 : 같은 공용체 객체의 필드 간에 대입 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1124.name": "중복 저장소에 할당",
  "rule.saqt.q.cpp.1125.description": "금지된 표준 라이브러리 함수 사용 체커는 표준 라이브러리 함수 중 일부 금지된 함수를 호출한 수식을 검출합니다.\n금지된 함수는 stdlib.h 에 정의된 abort(), exit(), getenv(), system() 함수입니다.\nC의 표준 라이브러리 중 stdlib.h에 속한 일부 함수는 결함이 많고 오류가 발생하기 쉽습니다. 이 라이브러리를 대체할 다른 라이브러리를 사용하는 것이 좋습니다.\n금지된 표준 라이브러리를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1125.example.0.dangerous": "라인 3: 금지된 exit() 함수를 사용했습니다.",
  "rule.saqt.q.cpp.1125.example.0.safe": "라인 2: 금지된 함수를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1125.name": "금지된 표준 라이브러리 함수 사용",
  "rule.saqt.q.cpp.1125.option.check_misra_2004.description": "\"abort\", \"exit\", \"getenv\", \"system\" 함수가 분석에 포함됩니다.",
  "rule.saqt.q.cpp.1125.option.check_misra_2004.name": "검출 대상 함수 이름",
  "rule.saqt.q.cpp.1125.option.check_misra_2012.description": "\"qsort\", \"bsearch\" 함수가 분석에 포함됩니다.",
  "rule.saqt.q.cpp.1125.option.check_misra_2012.name": "검출 대상 함수 이름",
  "rule.saqt.q.cpp.1126.description": "금지된 시간 함수 사용 체커는 시간 라이브러리 헤더를 포함한 전처리 구문을 검출합니다.\n이 규칙은 다른 금지된 함수와 관련된 규칙과 다르게 헤더 파일 포함 자체를 금지하고 있습니다. 금지된 시간 라이브러리는 time.h입니다.\n시간 라이브러리 중 일부 함수는 명시되지 않은 동작(Unspecified Behavior)입니다. 컴파일러는 이것에 대하여 구현 방법을 제공하지만 문서로 명세해두지는 않습니다. 경우에 따라 의도한 것과 다른 동작이 있을 수 있습니다.\n금지된 시간 라이브러리를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1126.example.0.dangerous": "라인 2: time.h 헤더 파일을 포함했습니다.",
  "rule.saqt.q.cpp.1126.example.0.safe": "라인 2: time.h 헤더 파일을 포함하지 않도록 합니다.",
  "rule.saqt.q.cpp.1126.name": "금지된 시간 함수 사용",
  "rule.saqt.q.cpp.1127.description": "switch 구문 밖에서의 break 구문 사용 체커는 switch 구문을 제외한 다른 문장에서 break 구문을 사용한 경우를 검출합니다.\nbreak 구문은 switch 구문 외에도 반복문에서 제어 흐름을 정해진 방법 외에 탈출할 때 사용합니다. 이 경우 제어 흐름이 복잡해지고 가독성이 떨어지는 문제가 발생할 수 있습니다.\nbreak 구문은 switch 구문에서만 사용하도록 합니다. 꼭 break 구문이 필요한 경우, 조건식을 변경하여 break 구문이 없어도 제어 흐름을 벗어날 수 있도록 코드를 수정합니다.",
  "rule.saqt.q.cpp.1127.example.0.dangerous": "라인 4: while 구문 내에서 while 구문을 탈출하기 위해 break 구문을 사용했습니다.",
  "rule.saqt.q.cpp.1127.example.0.safe": "라인 2: while 구문 내에서 break 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1127.name": "switch 구문 밖에서의 break 구문 사용",
  "rule.saqt.q.cpp.1128.description": "비 const 함수 포인터 체커는 함수 포인터 선언 시 const를 붙이지 않은 경우를 검출합니다.\n함수 포인터가 const 가 아닐 경우 필요에 따라 해당 함수 포인터가 가리키는 함수를 변경할 수 있습니다. 이 경우 프로그램의 흐름을 추적하기 어려워지고 예측할 수 없는 결과가 발생하기도 합니다.\n함수 포인터는 반드시 const를 붙여 선언하도록 합니다.",
  "rule.saqt.q.cpp.1128.example.0.dangerous": "라인 6: 함수 포인터인 fp1 변수를 const 없이 선언했습니다.",
  "rule.saqt.q.cpp.1128.example.0.safe": "라인 6: 함수 포인터는 const 로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1128.name": "비 const 함수 포인터",
  "rule.saqt.q.cpp.113.description": "인자로 변수 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 변수를 전달하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 변수를 사용하지 말아야 할 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.113.example.0.dangerous": "라인 3: memcpy_API14() 함수를 호출했습니다. 함수의 첫 번째 인자가 변수이므로 검출됩니다.",
  "rule.saqt.q.cpp.113.example.0.safe": "라인 3: memcpy_API14() 함수를 호출했습니다. 함수의 첫 번째 인자가 문자열이므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.113.name": "인자로 변수 사용",
  "rule.saqt.q.cpp.113.option.call_param_should_not_be_variable.description": "특정 변수를 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.cpp.113.option.call_param_should_not_be_variable.name": "파리미터로 사용하지 말아야 할 변수",
  "rule.saqt.q.cpp.113.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.113.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.113.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.113.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.1130.description": "구조체 및 공용체 내 익명 필드 체커는 구조체나 공용체에서 이름이 없는 필드를 선언한 경우를 검출합니다.\n이름이 없는 구조체 혹은 공용체 필드는 접근할 방법이 없습니다. 이러한 선언은 특별한 목적이 있지 않는 이상 사용하지 않는 것이 좋습니다.\n구조체나 공용체에서 필드를 선언할 때 항상 이름을 가지도록 합니다.",
  "rule.saqt.q.cpp.1130.example.0.dangerous": "라인 4: 이름 없는 비트 필드를 선언했습니다.\n라인 6: 이름 없는 구조체 타입 필드를 선언했습니다.",
  "rule.saqt.q.cpp.1130.example.0.safe": "라인 1: 모든 필드들이 이름을 가지도록 구조체를 선언합니다.",
  "rule.saqt.q.cpp.1130.name": "구조체 및 공용체 내 익명 필드",
  "rule.saqt.q.cpp.1131.description": "포인터 타입 재정의 체커는 함수 포인터를 제외하고 포인터형을 typedef로 선언한 경우를 검출합니다.\n포인터형을 typedef로 선언할 때 const 한정자를 붙이면 적용되는 방법이 달라집니다. 따라서 const 한정자를 사용하였음에도 객체를 수정할 수 있게 되는 문제 등이 발생할 수 있습니다.\n포인터형을 typedef로 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.1131.example.0.dangerous": "라인 5: 포인터형을 typedef로 선언했습니다.\n라인 7: const 한정자를 붙였으나 매개 변수의 값을 수정할 수 있게 됩니다.",
  "rule.saqt.q.cpp.1131.example.0.safe": "라인 7: typedef로 선언하지 않은 포인터형에 const 한정자를 붙였으므로 정상적으로 매개 변수의 값을 수정할 수 없습니다.",
  "rule.saqt.q.cpp.1131.name": "포인터 타입 재정의",
  "rule.saqt.q.cpp.1133.description": "소문자 long 접미사 체커는 long 타입 상수에서 소문자 L을 접미사로 사용하는 수식을 검출합니다.\nlong 타입 상수에서 소문자 L을 접미사로 사용하면 숫자 1과 혼동될 수 있습니다.\nlong 타입 상수의 접미사로 항상 대문자 L을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1133.example.0.dangerous": "라인 1: long 타입 상수 111의 접미사로 소문자 L을 사용했습니다.",
  "rule.saqt.q.cpp.1133.example.0.safe": "라인 1: long 타입 상수의 접미사로 대문자 L을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1133.name": "소문자 long 접미사",
  "rule.saqt.q.cpp.1134.description": "부적절한 가변형 배열 멤버 선언 체커는 올바르지 않은 문법으로 가변형 배열을 선언한 경우를 검출합니다.\n가변형 배열(Variable Array Length)이란 배열의 크기를 컴파일 타임에 명시하지 않는 배열로써 런타임에서 배열 크기를 지정할 수 있습니다. 여기서 올바르지 않은 문법이란 가변형 배열을 표현할 때 [1]과 같이 배열의 크기를 1로 명시하는 것을 가리킵니다.\nC99에서 가변형 배열을 선언할 때 크기를 1로 명시하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n가변형 배열을 사용하는 경우 크기를 명시하지 않도록 합니다.",
  "rule.saqt.q.cpp.1134.example.0.dangerous": "라인 4: 구조체에서 가변형 배열을 선언했습니다. 동시에 배열 크기를 1로 명시했습니다.",
  "rule.saqt.q.cpp.1134.example.0.safe": "라인 4: 가변형 배열을 사용하려면 배열 크기를 명시하지 않고 선언합니다.",
  "rule.saqt.q.cpp.1134.name": "부적절한 가변형 배열 멤버 선언",
  "rule.saqt.q.cpp.1135.description": "memcmp의 인자로 구조체 사용 체커는 memcmp()의 피연산자로 구조체 객체를 사용하는 수식을 검출합니다.\n구조체를 선언하면 필드와 필드 사이에 패딩 비트(Padding bit)가 발생할 수 있습니다. 패딩 비트에는 기본적으로 값이 지정되지 않으므로 바이트 단위의 비교를 수행하면 잘못된 결과가 발생할 수 있습니다.\n구조체 객체를 비교할 경우에는 memcmp() 함수를 사용하지 않고 필드를 직접 비교하도록 합니다.",
  "rule.saqt.q.cpp.1135.example.0.dangerous": "라인 8: memcmp() 함수의 인자로 구조체를 사용했습니다.",
  "rule.saqt.q.cpp.1135.example.0.safe": "라인 8: memcmp() 함수의 인자로 구조체를 사용하지 않도록 합니다. 대신 구조체의 필드를 비교합니다.",
  "rule.saqt.q.cpp.1135.name": "memcmp의 인자로 구조체 사용",
  "rule.saqt.q.cpp.1136.description": "가정된 상수 값 체커는 이미 명명된 상수를 매크로로 가정하여 사용하는 수식을 검출합니다. BUFSIZE와 같은 알려진 상수 값을 수식으로 표현하지 않도록 합니다.\n대표적으로 stdio.h 헤더 파일에 정의되는 BUFSIZE와 같은 명명된 상수가 있습니다. 해당 상수의 값은 기본적으로 512입니다.\n값이 다른 경우 예상하지 못한 문제가 발생할 수 있습니다.\n명명된 상수인 경우 가정하지 않고 그대로 사용하도록 합니다.",
  "rule.saqt.q.cpp.1136.example.0.dangerous": "라인 3: BUFSIZE가 512라 가정하고 2를 9번 시프트 연산한 값을 사용했습니다.",
  "rule.saqt.q.cpp.1136.example.0.safe": "라인 3: 명명된 상수를 사용합니다.",
  "rule.saqt.q.cpp.1136.name": "가정된 상수 값",
  "rule.saqt.q.cpp.1137.description": "부적절한 연산자 결합 체커는 다수의 비교 연산자를 괄호 없이 논리 연산자의 바로 뒤에 사용하는 수식을 검출합니다.\n비교 연산자를 이어서 사용하는 것은 올바른 방법이 아닐 가능성이 높습니다. 다수의 비교 연산자가 이어져 있는 경우 첫 번째 비교 연산의 결과인 Boolean 값을 다음 비교 연산의 피연산자로 사용하게 됩니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n다수의 비교 연산자를 이어서 사용하는 경우 괄호를 사용하여 논리 연산자와 분리하도록 합니다.",
  "rule.saqt.q.cpp.1137.example.0.dangerous": "라인 5: < 연산자를 여러 번 사용했습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n라인 8: == 연산자를 여러 번 사용했습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.",
  "rule.saqt.q.cpp.1137.example.0.safe": "라인 5: 괄호를 사용하여 < 연산자와 논리 연산자를 분리합니다.\n라인 8: 괄호를 사용하여 == 연산자와 논리 연산자를 분리합니다.",
  "rule.saqt.q.cpp.1137.name": "부적절한 연산자 결합",
  "rule.saqt.q.cpp.1138.description": "구문과 같은 라인에 위치한 세미콜론 체커는 if, for, while 구문과 같은 줄에 세미콜론이 위치하는 수식을 검출합니다.\nif, for, while 구문과 같은 줄에 세미콜론이 위치하는 경우 잘못 사용했을 가능성이 있습니다. 일반적으로 해당 구문은 조건식이나 반복 조건을 검사한 후에 본문으로 이어집니다. 하지만 세미콜론이 있다면 본문으로 이어지지 않고 그대로 끝나게 됩니다. 따라서 개발자가 의도하지 않은 결과일 가능성이 높습니다. 만약 정상적으로 본문 후에 세미콜론이 있다고 하더라도 가독성을 위해서나 실수를 방지하기 위해 조건식과 본문을 분리해주는 것이 좋습니다.\nif, for, while 구문과 같은 줄에서 세미콜론을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1138.example.0.dangerous": "라인 1: 세미콜론을 if 구문과 같은 라인에 작성했습니다. 세미콜론 뒤의 본문은 if 구문의 조건식과 관계없이 실행됩니다.",
  "rule.saqt.q.cpp.1138.example.0.safe": "라인 1: 세미콜론을 if 구문과 같은 라인에 작성하지 않습니다.",
  "rule.saqt.q.cpp.1138.name": "구문과 같은 라인에 위치한 세미콜론",
  "rule.saqt.q.cpp.1139.description": "비 volatile 참조를 통한 volatile 객체 접근 체커는 volatile 한정자를 가지지 않은 변수로 volatile 변수를 참조하는 수식을 검출합니다.\nvolatile 한정자를 가지지 않은 일반 변수로 volatile 변수를 참조하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\nvolatile 변수로만 volatile 변수를 참조할 수 있습니다.",
  "rule.saqt.q.cpp.1139.example.0.dangerous": "라인 7: volatile이 아닌 ip 변수의 주소 값을 volatile인 ipp 변수에 대입했습니다. 따라서 volatile이 아닌 변수로 volatile 변수에 접근하게 됩니다.\n라인 8: volatile이 아닌 ip 변수의 주소 값을 volatile인 ipp 변수에 대입했습니다. 따라서 volatile이 아닌 변수로 volatile 변수에 접근하게 됩니다.",
  "rule.saqt.q.cpp.1139.example.0.safe": "라인 6: volatile 변수에서만 volatile 변수를 참조하도록 합니다.",
  "rule.saqt.q.cpp.1139.name": "비 volatile 참조를 통한 volatile 객체 접근",
  "rule.saqt.q.cpp.114.description": "변수가 아닌 인자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 변수가 아닌 값을 전달하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 변수를 사용해야 할 인자 위치를 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 변수를 사용해야 합니다.",
  "rule.saqt.q.cpp.114.example.0.dangerous": "라인 3: memcpy_API15() 함수를 호출했습니다. 함수의 첫 번째 인자가 문자열이므로 검출됩니다.",
  "rule.saqt.q.cpp.114.example.0.safe": "라인 3: memcpy_API15() 함수를 호출했습니다. 함수의 첫 번째 인자가 변수이므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.114.name": "변수가 아닌 인자 사용",
  "rule.saqt.q.cpp.114.option.call_param_should_be_variable.description": "반드시 사용해야 하는 변수와 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.cpp.114.option.call_param_should_be_variable.name": "반드시 사용해야 하는 변수와 파라미터 인덱스",
  "rule.saqt.q.cpp.114.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.114.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.114.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.saqt.q.cpp.114.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.1140.description": "임시 객체 수정 체커는 수식의 결과로 인해 생성된 임시 객체를 변경하는 경우를 검출합니다.\n임시 객체를 수정하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n임시 객체를 수정하지 않도록 합니다. 필요한 경우 일반적인 변수에 값을 받아 수정합니다.",
  "rule.saqt.q.cpp.1140.example.0.dangerous": "라인 8: get_x() 함수의 반환값으로 생성된 임시 객체의 값을 수정했습니다.",
  "rule.saqt.q.cpp.1140.example.0.safe": "라인 8: get_x() 함수의 반환값을 변수에 저장한 후 해당 변수를 수정합니다.",
  "rule.saqt.q.cpp.1140.name": "임시 객체 수정",
  "rule.saqt.q.cpp.1141.description": "누락된 입력 함수에 대한 오류 처리 체커는 문자 데이터를 변환하기 위한 입력 함수에서 발생한 오류를 처리하지 않는 경우를 검출합니다.\n여기서 입력 함수란 scanf() 함수 등을 가리킵니다.\n혹은, 문자 데이터를 숫자로 변환하기 위해 입력 함수를 사용할 수도 있습니다. 하지만 개발자가 의도한 값만 들어온다고 보장할 수 없습니다. 따라서 가능한 입력을 모두 처리하지 않으면 비정상적인 동작이 일어날 수 있습니다.\n문자 데이터를 변환하기 위해 입력 함수를 사용하는 경우 해당 입력에서 발생하는 오류를 처리하도록 합니다. 예를 들어, errno 값 등을 검사해야 합니다.",
  "rule.saqt.q.cpp.1141.example.0.dangerous": "라인 2: scanf() 함수를 사용하여 입력 받은 문자 데이터를 숫자로 변환했습니다. 하지만 오류에 대한 대응이 누락되었습니다.",
  "rule.saqt.q.cpp.1141.example.0.safe": "라인 6: scanf() 함수가 실패한 경우에는 errno 검사를 수행합니다.",
  "rule.saqt.q.cpp.1141.name": "누락된 입력 함수에 대한 오류 처리",
  "rule.saqt.q.cpp.1142.description": "단일 식 내 시프트 및 산술 연산 체커는 동일한 변수를 비트 연산자와 산술 연산자의 피연산자로 사용하는 수식을 검출합니다.\n정수형의 기본 유형에 따라 비트 연산의 결과가 달라질 수 있습니다. 이것은 구현 정의 동작(Implementation Defined Behavior)입니다. 따라서 컴파일러마다 비트 연산의 결과가 달라질 수 있으며, 산술 연산의 결과도 영향을 받게 됩니다. 뿐만 아니라 변수를 사용하는 방법으로 인해 가독성을 떨어트리게 됩니다.\n동일한 변수에 대해 비트 연산과 산술 연산을 모두 수행하지 않도록 합니다.",
  "rule.saqt.q.cpp.1142.example.0.dangerous": "라인 2: x 변수에 대해 비트 연산을 수행한 후에 다시 산술 연산을 수행했습니다.",
  "rule.saqt.q.cpp.1142.example.0.safe": "라인 2: 동일한 변수에 대해 비트 연산과 산술 연산을 모두 수행하지 않도록 합니다.",
  "rule.saqt.q.cpp.1142.name": "단일 식 내 시프트 및 산술 연산",
  "rule.saqt.q.cpp.1143.description": "가정된 부호가 있는 정수 표현법 체커는 특정한 signed 정수의 표현을 가정하는 경우를 검출합니다.\n컴파일러마다 정수의 부호 표시가 다릅니다. 따라서 특정한 signed 정수의 표현을 가정한다면 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n특정한 signed 정수의 표현을 가정하지 않도록 합니다. 예를 들어 signed 정수를 1의 보수로 표현한다고 가정하여 홀수 짝수를 판단하기 위해 0x1 비트 연산을 수행하는 경우가 있습니다.",
  "rule.saqt.q.cpp.1143.example.0.dangerous": "라인 3: value 변수에 0x1 비트 연산을 수행했습니다. 여기서는 컴파일러가 signed 정수를 1의 보수로 표현한다고 가정했기 때문입니다.",
  "rule.saqt.q.cpp.1143.example.0.safe": "라인 3: signed 정수의 표현을 컴파일러에 의존하지 않고 코드를 작성합니다.",
  "rule.saqt.q.cpp.1143.name": "가정된 부호가 있는 정수 표현법",
  "rule.saqt.q.cpp.1145.description": "누락된 부동 소수점 반환 값 형변환 체커는 실수형을 반환하는 함수에서 값을 실수형으로 캐스팅하지 않고 반환하는 구문을 검출합니다.\n수식의 결과를 실수형으로 캐스팅하지 않고 반환하는 경우 정밀도에 문제가 발생할 수 있습니다. 따라서 컴파일하는 환경에 따라 미묘한 값의 차이가 발생하게 되며 이것은 개발자가 의도하지 않은 결과일 수 있습니다.\n실수형을 반환하는 함수에서는 반환값을 명시적으로 실수형으로 캐스팅한 후에 반환하도록 합니다.",
  "rule.saqt.q.cpp.1145.example.0.dangerous": "라인 2: 명시적인 캐스팅 없이 반환값을 반환했습니다. 이 함수의 반환 타입은 실수형입니다.",
  "rule.saqt.q.cpp.1145.example.0.safe": "라인 2: 반환 타입이 실수형인 함수에서는 반드시 반환값을 명시적으로 캐스팅한 후에 반환하도록 합니다.",
  "rule.saqt.q.cpp.1145.name": "누락된 부동 소수점 반환 값 형변환",
  "rule.saqt.q.cpp.1146.description": "비 const 문자열 포인터 체커는 문자열 상수를 가리키는 포인터가 const로 선언되지 않은 경우를 검출합니다.\n문자열 상수를 수정하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n문자열 상수를 const로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1146.example.0.dangerous": "라인 1: 문자열 상수를 가리키는 포인터를 const로 지정하지 않았습니다.",
  "rule.saqt.q.cpp.1146.example.0.safe": "라인 1: 문자열 상수를 가리키는 포인터를 const로 지정합니다.",
  "rule.saqt.q.cpp.1146.name": "비 const 문자열 포인터",
  "rule.saqt.q.cpp.1147.description": "다른 종류의 문자열 연결 체커는 와이드 문자열 상수와 일반 문자열 상수를 연결하는 수식을 검출합니다.\n와이드 문자열과 일반 문자열을 연결하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n와이드 문자열과 일반 문자열을 연결하여 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1147.example.0.dangerous": "라인 1: 와이드 문자열과 일반 문자열을 연결했습니다.",
  "rule.saqt.q.cpp.1147.example.0.safe": "라인 1: 와이드 문자열은 와이드 문자열과 연결하고, 일반 문자열은 일반 문자열과 연결하도록 합니다.",
  "rule.saqt.q.cpp.1147.name": "다른 종류의 문자열 연결",
  "rule.saqt.q.cpp.1148.description": "문자열 리터럴의 수정 체커는 문자열 리터럴의 내용을 수정하는 수식을 검출합니다.\n문자열 리터럴을 수정하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n문자열 리터럴을 선언한 후에는 수정하지 않도록 합니다. 만약 문자열을 수정해야 한다면 문자열 리터럴 대신 배열 등으로 선언하여 사용합니다.",
  "rule.saqt.q.cpp.1148.example.0.dangerous": "라인 2: 문자열 리터럴을 수정했습니다.",
  "rule.saqt.q.cpp.1148.example.0.safe": "라인 1: 만약 문자열을 수정해야 한다면 리터럴 대신 배열로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1148.name": "문자열 리터럴의 수정",
  "rule.saqt.q.cpp.1149.description": "누락된 메모리 할당 후 형변환 체커는 메모리 할당 값을 할당된 타입으로 캐스팅하지 않고 사용하는 경우를 검출합니다.\n메모리 할당 함수는 malloc() 함수 등을 의미합니다.\n메모리 할당 값을 캐스팅 없이 사용하는 것은 정의되지 않은 동작입니다. 또한 컴파일러에 따라 결과가 달라질 수 있습니다.\n메모리 할당 값을 캐스팅한 후에 사용하도록 합니다.",
  "rule.saqt.q.cpp.1149.example.0.dangerous": "라인 14: malloc() 함수를 호출한 후에 메모리 할당 값을 할당한 타입으로 캐스팅하지 않았습니다.",
  "rule.saqt.q.cpp.1149.example.0.safe": "라인 14: malloc() 함수를 호출한 후에 메모리 할당 값을 즉시 할당한 타입으로 캐스팅합니다.",
  "rule.saqt.q.cpp.1149.name": "누락된 메모리 할당 후 형변환",
  "rule.saqt.q.cpp.115.description": "하드코드된 데이터 체커는 옵션에 지정된 변수 중 하나를 하드코딩하는 코드를 검출합니다.\n분석 대상 수식, 분석 제외 대상 수식, 정수형 하드코딩 검사 여부, 부동소수형 하드코딩 검사 여부, 문자 하드코딩 검사 여부, 문자열 하드코딩 검사 여부, 상수 하드코딩 검사 여부, 비상수 하드코딩 검사 여부, 조건문 하드코딩 검사 여부, 대입문 하드코딩 검사 여부, 호출 하드코딩 검사 여부, 반환 구문 하드코딩 검사 여부를 옵션에 지정할 수 있습니다.\n하드코딩은 외부에 정보를 노출시키는 요소입니다. 비밀번호, 경로 등 보안에 중요한 요소를 하드코드로 작성하는 경우 보안에 중대한 취약점이 발생할 수 있습니다.\n지정된 옵션에 따라 소스 코드를 하드코드로 작성하지 않도록 합니다.",
  "rule.saqt.q.cpp.115.example.0.dangerous": "라인 3: 금지된 하드코드 문자열을 사용했습니다.",
  "rule.saqt.q.cpp.115.example.0.safe": "라인 3: 하드코드 대신에 get_value() 함수의 반환값을 반환합니다.",
  "rule.saqt.q.cpp.115.name": "하드코드된 데이터",
  "rule.saqt.q.cpp.115.option.excluded_expr.description": "분석 제외 수식의 정규 표현식을 입력합니다.",
  "rule.saqt.q.cpp.115.option.excluded_expr.name": "분석 제외 수식",
  "rule.saqt.q.cpp.115.option.hard_coding_target_assignment.description": "대입문의 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_assignment.name": "대입문 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_call.description": "호출의 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_call.name": "호출 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_character.description": "문자 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_character.name": "문자 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_conditional.description": "조건문의 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_conditional.name": "조건문 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_const.description": "상수 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_const.name": "상수 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_float.description": "부동소수점형 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_float.name": "부동소수점형 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_integer.description": "정수 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_integer.name": "정수형 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_non_const.description": "비상수형 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_non_const.name": "비상수형 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_return.description": "반환 구문의 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_return.name": "반환 구문 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.hard_coding_target_string.description": "문자열 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.115.option.hard_coding_target_string.name": "문자열 하드코딩 검사 여부",
  "rule.saqt.q.cpp.115.option.target_expr.description": "분석 대상 수식의 정규 표현식을 입력합니다.",
  "rule.saqt.q.cpp.115.option.target_expr.name": "분석 대상 수식",
  "rule.saqt.q.cpp.1150.description": "가변 길이 멤버 배열과 정적 할당 및 복사 체커는 가변 배열 필드를 가진 구조체를 동적으로 생성하지 않는 경우를 검출합니다.\n동적으로 할당하지 않은 가변 배열 필드는 실제 값을 가지고 있지 않으며 필드 객체도 스택에 위치합니다. 이 값을 일반적인 배열과 같이 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n가변 배열을 가진 구조체를 동적으로 생성하여 사용하도록 합니다. 가변 배열 필드는 필요한 크기에 따라 할당되는 메모리 크기도 다르게 생성되어야 합니다.",
  "rule.saqt.q.cpp.1150.example.0.dangerous": "라인 7: 가변 배열 필드를 가진 구조체를 동적으로 생성하지 않았습니다.\n라인 12: 가변 배열 필드에 접근했습니다.",
  "rule.saqt.q.cpp.1150.example.0.safe": "라인 7: 가변 배열 필드를 가진 구조체를 포인터로 선언합니다.\n라인 10: 구조체를 필요한 크기만큼 동적 할당하여 대입합니다.\n라인 18: 동적 할당을 수행한 후에 가변 배열 필드에 접근합니다.",
  "rule.saqt.q.cpp.1150.name": "가변 길이 멤버 배열과 정적 할당 및 복사",
  "rule.saqt.q.cpp.1153.description": "안전하지 않은 시스템 간 바이너리 데이터 전송 체커는 다른 시스템으로 잘못된 이진 데이터를 전송하는 경우를 검출합니다.\n다른 시스템 간에 데이터 무결성을 보장하지 않는 fread(), fwrite() 함수 등을 사용하면 이진 데이터 전송에 문제가 발생할 수 있습니다.\n다른 시스템 간에 이식성이 낮은 함수를 사용하는 것은 위험합니다. 배열이나 구조체와 같은 데이터 타입뿐만 아니라 정수와 같은 스칼라 데이터 타입도 변경 없이 전달된다고 보장할 수 없습니다. 여기에는 구조체의 패딩이나 부동 소수점 모델, 바이트당 비트 수, 엔디안 및 이진 데이터 형식 등과 같은 복합적인 문제가 얽혀 있습니다.\n다른 시스템으로 데이터를 전송할 때 텍스트 표현이나 데이터의 무결성을 보장하는 특수한 라이브러리를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1153.example.0.dangerous": "라인 9: myData 구조체 객체를 파일에서 읽어들였습니다. 이러한 구조체 데이터는 다른 시스템에서 다르게 표현될 수 있습니다.",
  "rule.saqt.q.cpp.1153.example.0.safe": "라인 11: 일반 문자열 버퍼로 데이터를 읽어들입니다.\n라인 14: 문자열 데이터를 구조체 필드에 저장합니다.\n라인 15: 일반 문자열 버퍼로 데이터를 읽어들입니다.\n라인 18: 문자열 데이터를 strtol() 함수로 변환하여 구조체 숫자 필드에 저장합니다.",
  "rule.saqt.q.cpp.1153.name": "안전하지 않은 시스템 간 바이너리 데이터 전송",
  "rule.saqt.q.cpp.1154.description": "잘못된 파일 열기 모드 체커는 잘못된 모드 매개 변수를 전달하여 fopen() 함수를 호출하는 경우를 검출합니다.\n잘못 지정된 모드 매개 변수가 어떻게 처리되는지 예측할 수 없습니다. 따라서 개발자가 의도하지 않은 동작이 발생할 수 있습니다.\nfopen() 함수를 사용하여 파일을 열 때 항상 유효한 모드를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1154.example.0.dangerous": "라인 1: 'c'는 유효하지 않은 모드입니다.",
  "rule.saqt.q.cpp.1154.example.0.safe": "라인 1: 유효한 모드를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1154.name": "잘못된 파일 열기 모드",
  "rule.saqt.q.cpp.1155.description": "여러 번 ungetc 함수 사용 체커는 ungetc() 함수를 여러 번 호출하는 경우를 검출합니다.\n해당 체커에서는 ungetc()와 ungetwc() 함수를 검사합니다.\nungetc() 함수는 하나의 스트림에서 지정한 문자를 읽어들입니다. 하지만 파일 위치와 관련된 함수를 성공적으로 호출하면 스트림에 읽어들인 문자를 버리는 문제가 발생합니다. 따라서 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n한 개 이상의 문자를 읽어들여야 한다면 ungetc() 함수 대신 fgetpos()와 fsetpost() 함수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1155.example.0.dangerous": "라인 12: 하나의 스트림에서 여러 개의 문자를 읽어들이고 있습니다.",
  "rule.saqt.q.cpp.1155.example.0.safe": "라인 10: ungetc() 함수로 한 개 이상의 문자를 읽어들이는 대신 데이터 읽기 전후에 fgetpos() 함수와 fsetpos() 함수를 사용합니다.",
  "rule.saqt.q.cpp.1155.name": "여러 번 ungetc 함수 사용",
  "rule.saqt.q.cpp.1156.description": "부적절한 fsetpot 인자의 값 체커는 fsetpos() 함수의 인자에 fgetpos()의 반환값 이외의 값을 전달하는 경우를 검출합니다.\nfsetpos() 함수의 인자에 fgetpos() 함수에서 반환된 값이 아닌 만약 그 외에 다른 값을 사용하는 것은 정의되지 않은 동작입니다. fsetpos() 함수를 잘못 사용하면 파일 위치 지시자가 파일의 의도하지 않은 곳을 가리키게 만들 수 있습니다.\nfsetpos() 함수의 인자에 항상 fgetpos()의 반환값을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1156.example.0.dangerous": "라인 8: fgetpos() 함수로부터 얻지 않은 오프셋 값을 fsetpos() 함수의 인자로 사용했습니다.",
  "rule.saqt.q.cpp.1156.example.0.safe": "라인 6: fgetpos() 함수를 호출한 후에 반환값을 저장합니다.\n라인 9: fsetpos() 함수의 인자에 fgetpos() 함수의 반환값을 전달합니다.",
  "rule.saqt.q.cpp.1156.name": "부적절한 fsetpot 인자의 값",
  "rule.saqt.q.cpp.1159.description": "파일 스트림 오류 확인을 위한 errno 사용 체커는 파일 스트림 오류를 확인하기 위해 errno 지시자를 사용하는 경우를 검출합니다.\n라이브러리 함수를 여러 번 호출한 후에 errno 지시자를 확인하면 잘못된 오류 리포팅을 확인하게 되고 잘못된 프로그램 동작으로 이어질 수 있습니다.\n파일 스트림 오류를 확인하는 경우 errno 지시자가 아닌 ferror() 함수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1159.example.0.dangerous": "라인 5: 표준에 속한 printf() 함수가 여러 번 사용되었습니다.\n라인 6: errno 지시자가 가리키는 오류는 라인 5의 printf() 함수 호출 결과입니다.",
  "rule.saqt.q.cpp.1159.example.0.safe": "라인 5: 표준 함수를 여러 번 호출하는 경우 errno 지시자 대신 ferror() 함수를 사용하여 오류를 처리하도록 합니다.",
  "rule.saqt.q.cpp.1159.name": "파일 스트림 오류 확인을 위한 errno 사용",
  "rule.saqt.q.cpp.116.description": "포인터 파라미터에 누락된 필요 한정자 체커는 옵션에 지정된 특정 함수의 매개변수 자료형으로 포인터를 선언할 때 지정된 한정자를 사용하지 않은 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 포인터형 매개 변수 위치, 포인터형 매개 변수에 있어야 하는 한정자를 설정할 수 있습니다.\n포인터 타입의 매개변수에 한정자를 지정하지 않으면 의도하지 않게 값이 변경될 수 있습니다.\n옵션에 지정된 함수의 포인터형 매개변수에 명시된 한정자를 사용해야 합니다.",
  "rule.saqt.q.cpp.116.example.0.dangerous": "라인 1: char 포인터를 매개변수로 사용하므로 검출됩니다.",
  "rule.saqt.q.cpp.116.example.0.safe": "라인 1: const형 char 포인터를 매개변수로 사용하므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.116.name": "포인터 파라미터에 누락된 필요 한정자",
  "rule.saqt.q.cpp.116.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.116.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.cpp.116.option.function_target.description": "분석 대상이 되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.116.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.cpp.116.option.function_target_excluded.description": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.116.option.function_target_excluded.name": "분석 대상에서 제외되는 함수",
  "rule.saqt.q.cpp.116.option.parameter_should_have_qualifiers.description": "반드시 사용해야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 ,(컴마)를 사용합니다.<br /> 예) const, volatile",
  "rule.saqt.q.cpp.116.option.parameter_should_have_qualifiers.name": "필수 한정자",
  "rule.saqt.q.cpp.116.option.parameter_target_type_is_pointer.description": "타입이 포인터인 파라미터 인덱스를 설정합니다. \n예시) 포맷 [param index]:[data]\nparam index - 전체 index 지정 : 0\n특정 index (복수)지정 : 1,2",
  "rule.saqt.q.cpp.116.option.parameter_target_type_is_pointer.name": "포인터형 파라미터",
  "rule.saqt.q.cpp.1161.description": "부적절한 종료 방법 체커는 fopen() 함수를 사용한 후에 적절하지 않은 종료 함수를 호출하는 경우를 검출합니다.\n여기서 적절한 종료란 exit() 함수를 호출하는 것입니다. 그 외에 다른 종료 방법으로는 abort(), _Exit() 함수 등이 있습니다.\nabort(), _Exit() 함수를 호출하면 임시 파일을 제거하는 것은 구현 정의 동작(Implementation Defined Behavior)입니다. 즉, fopen() 함수를 호출하여 열린 파일이 제대로 처리된다고 보장할 수 없습니다.\nfopen() 함수를 호출하면 종료하기 위해 exit() 함수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1161.example.0.dangerous": "라인 9: 파일 스트림이 열린 상태에서 abort() 함수를 호출했습니다. 따라서 파일이 제대로 닫히지 않을 수 있습니다.",
  "rule.saqt.q.cpp.1161.example.0.safe": "라인 9: abort() 함수 대신 exit() 함수를 사용합니다. 그러면 정상적으로 파일이 처리됩니다.",
  "rule.saqt.q.cpp.1161.name": "부적절한 종료 방법",
  "rule.saqt.q.cpp.1164.description": "초기화되지 않은 errno 체커는 errno를 통해 오류 상황을 알리는 함수를 호출하기 전에 errno를 0으로 초기화하지 않는 경우를 검출합니다.\nerrno 함수를 통해 오류 상황을 알리는 함수는 경우에 따라 errno 값을 설정하지 않는 경우가 있습니다. 따라서 다른 함수 호출에서 반환된 errno 값을 처리해야 하는 문제가 발생할 수 있습니다.\nerrno를 통해 오류 상황을 알리는 함수를 호출하기 전에 errno 값을 0으로 초기화하도록 합니다.",
  "rule.saqt.q.cpp.1164.example.0.dangerous": "라인 5: strtoul() 함수는 오류 발생 시 errno 값을 설정합니다. 하지만 오류가 발생하지 않아도 이전의 값에 의해 errno는 0이 아닐 수 있습니다.\n라인 6: strtoul() 함수 이전에 호출된 다른 함수에 의해 errno 값이 설정되어 있을 수 있습니다. 만약 이 경우 잘못된 오류 제어 흐름에 들어가게 됩니다.",
  "rule.saqt.q.cpp.1164.example.0.safe": "라인 5: strtoul() 함수 호출전에 errno 값을 0으로 설정합니다.",
  "rule.saqt.q.cpp.1164.name": "초기화되지 않은 errno",
  "rule.saqt.q.cpp.1165.description": "time_t 타입 변수의 직접 사용 체커는 time_t 타입의 변수를 직접 조작하는 수식을 검출합니다.\ntime_t의 타입은 기본적으로 정수형입니다. 해당 값을 직접 조작하면 time_t 타입 변수를 산술 연산으로 계산하게 됩니다. 하지만 시간을 산술 타입으로 인코딩하는 것은 정의되지 않은 동작입니다. 즉, 인코딩 방식이 지정되어 있지 않기 때문에 이 타입에 대해 직접 산술 연산을 수행하는 것은 안전하지 않습니다.\n따라서 산술 연산으로 time_t 타입의 변수를 직접 조작하지 않도록 합니다. 대신 적절한 시간 관련 함수를 사용하는 것이 좋습니다.",
  "rule.saqt.q.cpp.1165.example.0.dangerous": "라인 6: start 변수와 seconds_to_work 변수를 더한 값을 time() 함수 호출 결과와 비교했습니다. 하지만 인코딩이 정의되어 있지 않으므로 seconds_to_work 변수의 값이 초를 더하는 것이라고 보장할 수 없습니다.",
  "rule.saqt.q.cpp.1165.example.0.safe": "라인 7: difftime() 함수를 사용하여 시간 차이를 구하도록 합니다.",
  "rule.saqt.q.cpp.1165.name": "time_t 타입 변수의 직접 사용",
  "rule.saqt.q.cpp.1166.description": "부적절한 assert 구문 체커는 부적절한 진단 테스트에서 assert를 사용하는 수식을 검출합니다.\n여기서 부적절한 진단 테스트란 검사한 이후에도 런타임 오류나 서비스 거부 공격이 발생할 수 있는 경우를 가리킵니다.\nassert는 릴리즈 모드에서 아무런 동작도 수행하지 않습니다. 따라서 부적절한 진단 테스트가 실행되는 경우 실제 제품에서는 런타임 오류나 서비스 거부 공격에 노출될 수 있습니다.\n프로그램에 치명적인 오류가 발생할 수 있는 검사를 assert로 수행하지 않도록 합니다. 대신 조건문을 사용하고 오류를 처리하여 해당 검사를 수행하는 것이 좋습니다.",
  "rule.saqt.q.cpp.1166.example.0.dangerous": "라인 6: assert를 사용하여 메모리 할당이 성공했는지 검사했습니다. 하지만 assert는 릴리즈 모드에서 실행되지 않습니다. 따라서 경우에 따라 런타임 오류나 서비스 거부 공격에 노출될 수 있습니다.",
  "rule.saqt.q.cpp.1166.example.0.safe": "라인 8: 메모리 할당의 성공 여부는 assert가 아니라 일반적인 조건문을 사용하여 검사하고 처리하도록 합니다.",
  "rule.saqt.q.cpp.1166.name": "부적절한 assert 구문",
  "rule.saqt.q.cpp.1167.description": "너무 복잡한 switch 구문 체커는 switch 구문 내에서 for 구문이나 if 구문의 본문이 case 구문과 중첩되어 있는 경우를 검출합니다.\n본문이 있는 다른 구문과 switch 구문을 중첩하는 경우 제어 흐름이 복잡해집니다. 만약 개발자가 이러한 동작을 의도했더라도 가독성을 떨어뜨린다는 점에서 해당 코드를 수정하는 것이 좋습니다.\n본문이 있는 다른 구문과 switch 구문을 중첩하지 않도록 합니다.",
  "rule.saqt.q.cpp.1167.example.0.dangerous": "라인 3: 중첩된 구문으로 인해 변수 i 값이 1, 2, 3일 때 변수 j 값은 각각 12, 12, 11, 그 밖의 경우에는 0이 되었습니다.\n라인 4: 1 값에 대한 case 구문을 작성했습니다.\n라인 5: 반복문의 시작점을 작성했습니다.\n라인 6: 반복문의 본문과 2 값에 대한 case 구문이 중첩되었습니다.",
  "rule.saqt.q.cpp.1167.example.0.safe": "라인 3: 본문이 있는 다른 구문과 switch 구문을 중첩시키지 않도록 합니다.",
  "rule.saqt.q.cpp.1167.name": "너무 복잡한 switch 구문",
  "rule.saqt.q.cpp.117.description": "포인터 파라미터에 금지된 한정자 사용 체커는 옵션에 지정된 특정 함수의 매개변수 자료형으로 포인터를 선언할 때 지정된 한정자를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 포인터형 매개 변수 위치, 포인터형 매개 변수에 없어야 하는 한정자를 설정할 수 있습니다.\n한정자를 사용하지 않은 함수를 검출하여 API의 잘못된 사용을 방지합니다.\n옵션에 지정된 함수의 포인터형 매개변수에 지정된 한정자를 사용하지 않아야 합니다.",
  "rule.saqt.q.cpp.117.example.0.dangerous": "라인 1: const형 char 포인터를 매개변수로 사용하므로 검출됩니다.",
  "rule.saqt.q.cpp.117.example.0.safe": "라인 1: char 포인터를 매개변수로 사용하므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.117.name": "포인터 파라미터에 금지된 한정자 사용",
  "rule.saqt.q.cpp.117.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.117.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.cpp.117.option.function_target.description": "분석 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.117.option.function_target.name": "분석 대상 함수",
  "rule.saqt.q.cpp.117.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.117.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.cpp.117.option.parameter_should_not_have_qualifiers.description": "사용하지 말아야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 ,(컴마)를 사용합니다.<br /> 예) const, volatile",
  "rule.saqt.q.cpp.117.option.parameter_should_not_have_qualifiers.name": "금지 한정자",
  "rule.saqt.q.cpp.117.option.parameter_target_type_is_pointer.description": "타입이 포인터인 파라미터 인덱스를 설정합니다. \n예시) 포맷 [param index]:[data]\nparam index - 전체 index 지정 : 0\n특정 index (복수)지정 : 1,2",
  "rule.saqt.q.cpp.117.option.parameter_target_type_is_pointer.name": "포인터형 파라미터",
  "rule.saqt.q.cpp.1174.description": "POSIX 잠금 중 차단 체커는 POSIX 잠금이 걸린 상태에서 블록이 발생할 수 있는 연산을 수행하는 수식을 검출합니다.\nPOSIX 잠금이 걸린 상태에서 블록이 발생할 수 있는 연산을 수행하면 시스템 성능을 저하시키거나 데드락을 발생시킬 수 있습니다.\nPOSIX 잠금이 걸린 상태에서는 블록이 발생할 수 있는 어떠한 연산도 수행하지 않도록 합니다.",
  "rule.saqt.q.cpp.1174.example.0.dangerous": "라인 7: 뮤텍스를 잠갔습니다.\n라인 10: recv() 함수의 경우 소켓을 통해 데이터를 전달받을 때까지 블록됩니다. 이로 인해 다른 스레드도 잠금이 걸린 상태로 블록됩니다.\n라인 13: 뮤텍스를 해제했습니다. 하지만 라인 10에서 블록된 함수를 호출했습니다.",
  "rule.saqt.q.cpp.1174.example.0.safe": "라인 6: recv() 함수에 잠금이 걸리기 전에 해당 함수를 호출합니다. POSIX 잠금이 걸린 상태에서는 블록이 발생할 수 있는 어떠한 연산도 수행하지 않도록 합니다.",
  "rule.saqt.q.cpp.1174.name": "POSIX 잠금 중 차단",
  "rule.saqt.q.cpp.1178.description": "누락된 switch 구문 중괄호 체커는 switch 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\nswitch 구문의 본문은 항상 중괄호로 감싸줍니다.",
  "rule.saqt.q.cpp.1178.example.0.dangerous": "라인 2: switch 구문의 본문을 중괄호로 감싸지 않았습니다.",
  "rule.saqt.q.cpp.1178.example.0.safe": "라인 2: switch 구문의 본문을 중괄호로 감싸도록 합니다.",
  "rule.saqt.q.cpp.1178.name": "누락된 switch 구문 중괄호",
  "rule.saqt.q.cpp.1179.description": "누락된 if-else 구문 중괄호 체커는 if-elseif-else 구문에서 중괄호를 사용하지 않은 코드를 검출합니다.\nif 구문 및 elseif, else 구문의 본문을 중괄호로 감싸야 합니다.",
  "rule.saqt.q.cpp.1179.example.0.dangerous": "라인 7: else 구문의 본문을 중괄호로 감싸지 않았습니다.",
  "rule.saqt.q.cpp.1179.example.0.safe": "라인 7: else 구문의 본문을 중괄호로 감싸도록 합니다.",
  "rule.saqt.q.cpp.1179.name": "누락된 if-else 구문 중괄호",
  "rule.saqt.q.cpp.118.description": "유효하지 않은 오류 코드 사용 체커는 옵션에 지정된 함수를 호출할 때 특정 인자 위치에 지정된 문자열을 포함하지 않는 값을 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 대상 제외 함수, 검사 대상 호출 함수, 문자열이 위치해야 할 함수 및 매개변수 위치를 설정할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 지정된 문자열을 사용해야 합니다.",
  "rule.saqt.q.cpp.118.example.0.dangerous": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 3: SET_ERR_API19() 함수를 호출했습니다. 첫 번째 인자의 문자열이 ERR00으로 시작되지 않으므로 검출됩니다.",
  "rule.saqt.q.cpp.118.example.0.safe": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 3: SET_ERR_API19() 함수를 호출했습니다. 첫 번째 인자의 문자열이 ERR00으로 시작되므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.118.name": "유효하지 않은 오류 코드 사용",
  "rule.saqt.q.cpp.118.option.call_param_should_be_string.description": "문자열이 위치해야 할 함수와 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.cpp.118.option.call_param_should_be_string.name": "문자열이 위치해야 할 함수와 파라미터 인덱스",
  "rule.saqt.q.cpp.118.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.cpp.118.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.cpp.118.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.118.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.cpp.118.option.function_target.description": "대상이 되는 함수를 설정합니다.",
  "rule.saqt.q.cpp.118.option.function_target.name": "대상이 되는 함수",
  "rule.saqt.q.cpp.118.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.118.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.cpp.1183.description": "불완전한 구조체 및 공용체 타입 체커는 구조체 및 공용체가 완전한 타입이 아닌 경우를 검출합니다.\n여기서 완전하지 않은 타입이란 구조체 및 공용체가 아직 정의되지 않은 타입을 필드로 사용하여 불명확한 상태인 타입을 의미합니다.\n일반적으로 이런 타입 선언은 컴파일 단계에서 오류가 발생합니다. 다만 몇몇 오래되거나 표준을 지키지 않은 컴파일러의 경우 이러한 타입 선언을 허용할 수도 있습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n구조체 및 공용체는 완전한 타입으로 선언합니다.",
  "rule.saqt.q.cpp.1183.example.0.dangerous": "라인 6: B 구조체는 정의되지 않았습니다.",
  "rule.saqt.q.cpp.1183.example.0.safe": "라인 4: B 구조체를 정의합니다.\n라인 7: 구조체 및 공용체는 완전한 타입이 되도록 합니다.",
  "rule.saqt.q.cpp.1183.name": "불완전한 구조체 및 공용체 타입",
  "rule.saqt.q.cpp.1184.description": "공용체 사용 체커는 공용체를 선언한 경우를 검출합니다.\n공용체를 사용하는 것은 공용체의 특성 상 잠재적으로 잘못된 포인터 참조가 일어날 가능성이 높습니다. 일반적으로는 어떤 값을 가리키는 타입이 여러 종류일 경우, 메모리 사용량을 줄이기 위해 공용체를 사용할 수 있습니다. 다만 이 규칙은 그러한 메모리 사용량이 주는 잇점 대신 잘못된 포인터 참조로 인한 프로그램 오류를 방지하기 위해 공용체 사용을 금지합니다.\n공용체를 사용하지 않도록 합니다. 다소의 퍼포먼스를 희생하더라도 구조체를 사용합니다.",
  "rule.saqt.q.cpp.1184.example.0.dangerous": "라인 1: 공용체를 선언했습니다.",
  "rule.saqt.q.cpp.1184.example.0.safe": "라인 1: 공용체 대신 구조체를 사용합니다.",
  "rule.saqt.q.cpp.1184.name": "공용체 사용",
  "rule.saqt.q.cpp.1186.description": "포함 구문 내 비 표준 문자 체커는 include 전처리 구문으로 포함시키는 파일의 이름에 비표준 문자가 있는 경우를 검출합니다.\ninclude 전처리 구문의 파일 이름에 비표준 문자를 사용하는 것은 컴파일 환경에 따라 정상적으로 파일을 읽어들이지 못할 수 있습니다.\ninclude 전처리 구문으로 포함시킬 파일 이름은 표준 문자로만 구성하도록 합니다.",
  "rule.saqt.q.cpp.1186.example.0.dangerous": "라인 1: include 전처리 구문의 파일 이름에서 비표준 문자를 사용했습니다.",
  "rule.saqt.q.cpp.1186.example.0.safe": "라인 1: include 전처리 구문의 파일 이름은 표준 문자만 사용하도록 합니다.",
  "rule.saqt.q.cpp.1186.name": "포함 구문 내 비 표준 문자",
  "rule.saqt.q.cpp.1187.description": "포함 파일 이름 형식 위반 체커는 include 전처리 구문 뒤에 오는 파일 이름이 지정된 형식을 벗어난 경우를 검출합니다.\n여기서 지정된 형식이란 \"파일 이름\" 이나 <파일 이름>을 의미합니다.\n일부 표준을 지키지 않는 컴파일러는 지정된 형식 외에도 include 전처리 구문으로 파일을 포함시키는 것을허용하기도 합니다. 다만 지정된 형식을 벗어난 소스 코드는 표준을 지키는 컴파일러에서 컴파일 할 경우 오류가 발생합니다.\ninclude 전처리 구문으로 파일을 포함시키는 경우 항상 지정된 형식을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1187.example.0.dangerous": "라인 1: include 전처리 구문 사용 방식이 지정된 형식을 벗어났습니다.\n라인 2: include 전처리 구문 사용 방식이 지정된 형식을 벗어났습니다.",
  "rule.saqt.q.cpp.1187.example.0.safe": "라인 1: include 전처리 구문으로 포함시킬 파일 이름은 항상 \"\" 나 <> 로 감싸도록 합니다.",
  "rule.saqt.q.cpp.1187.name": "포함 파일 이름 형식 위반",
  "rule.saqt.q.cpp.1188.description": "블록 내에서 정의 혹은 해제된 매크로 체커는 함수 본문과 같은 블록 내에서 define 이나 undef 전처리 구문을 사용한 경우를 검출합니다.\ndefine 이나 undef와 같은 전처리 구문은 항상 블록 범위 바깥에서 사용하도록 합니다.",
  "rule.saqt.q.cpp.1188.example.0.dangerous": "라인 3: 함수 블록에서 define 전처리 구문을 사용했습니다.\n라인 5: 함수 블록에서 undef 전처리 구문을 사용했습니다.",
  "rule.saqt.q.cpp.1188.example.0.safe": "라인 1: define이나 undef 전처리 구문은 파일 블록 바깥에서 사용하도록 합니다.",
  "rule.saqt.q.cpp.1188.name": "블록 내에서 정의 혹은 해제된 매크로",
  "rule.saqt.q.cpp.1189.description": "#undef 지시자 사용 체커는 undef 전처리 구문을 사용한 경우를 검출합니다.\nundef 전처리 구문을 사용한 헤더 파일을 include 하는 경우, 이전에 define 전처리 구문으로 정의한 매크로 변수의 값이 달라져 헤더 파일이 비정상적으로 포함될 수 있습니다. 이 경우 원인을 파악하기 힘든 오류가 발생할 수 있습니다.\nundef 전처리 구문은 최대한 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1189.example.0.dangerous": "라인 1: undef 전처리 구문을 사용했습니다.",
  "rule.saqt.q.cpp.1189.example.0.safe": "라인 1: undef 전처리 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1189.name": "#undef 지시자 사용",
  "rule.saqt.q.cpp.119.description": "오류 발생 시 누락된 초기화 함수 호출 체커는 옵션에 지정된 오류 값을 반환하기 전에 초기화 함수를 호출하지 않는 코드를 검출합니다.\n옵션에서 조건문에 비교할 값, 반환할 오류 값, 초기화 함수를 설정할 수 있습니다.\n옵션에 지정된 조건문 비교 오류 값 실행안에서 오류 값이 반환되기 전에 반드시 명시된 초기화 함수가 호출되어야 합니다.",
  "rule.saqt.q.cpp.119.example.0.dangerous": "라인 6: 조건문에 RC_NRM을 사용합니다.\n라인 7: RC_ERR을 반환했습니다. 초기화 함수가 호출되지 않으므로 검출됩니다.",
  "rule.saqt.q.cpp.119.example.0.safe": "라인 6: 조건문에 RC_NRM을 사용합니다.\n라인 7: RC_ERR가 반환되기 전에 초기화 함수 pfmInitError()가 호출되므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.119.name": "오류 발생 시 누락된 초기화 함수 호출",
  "rule.saqt.q.cpp.119.option.cond_error.description": "조건문에서 비교할 에러 값을 설정합니다.",
  "rule.saqt.q.cpp.119.option.cond_error.name": "조건문에서 비교할 에러 값",
  "rule.saqt.q.cpp.119.option.init_function.description": "초기화 할 함수를 설정합니다.",
  "rule.saqt.q.cpp.119.option.init_function.name": "초기화 함수",
  "rule.saqt.q.cpp.119.option.return_error.description": "리턴할 에러 값을 설정합니다.",
  "rule.saqt.q.cpp.119.option.return_error.name": "리턴 에러값",
  "rule.saqt.q.cpp.1190.description": "함수 같은 매크로 체커는 매크로 함수를 정의하여 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 함수를 사용하면 타입 안정성을 보장할 수 없습니다. 또한 연산 순서에 충분히 주의하지 않는 경우 종종 예상하지 못한 결과가 발생하게 됩니다.\n매크로 함수를 사용하지 않도록 합니다. 성능의 문제로 인해 일반 함수를 사용하지 않는 경우 대신 인라인 함수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1190.example.0.dangerous": "라인 1: 매크로 함수를 선언했습니다.",
  "rule.saqt.q.cpp.1190.example.0.safe": "라인 1: 매크로 함수 대신 동일한 동작을 수행하는 인라인 함수를 선언하여 사용합니다.",
  "rule.saqt.q.cpp.1190.name": "함수 같은 매크로",
  "rule.saqt.q.cpp.1191.description": "일치하지 않는 매크로 인자 수 체커는 매크로 함수 사용 시 모든 인자들을 포함하지 않고 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 함수에서 선언한 매개 변수 개수와 실제로 전달한 인자 개수가 다른건 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n매크로 함수에서 선언한 매개 변수 개수와 매크로 함수에 전달하는 인자 개수가 일치하도록 매크로 함수를 사용합니다.",
  "rule.saqt.q.cpp.1191.example.0.dangerous": "라인 1: 매개 변수가 2개인 MY_MACRO를 선언했습니다.\n라인 4: MY_MACRO 매크로를 사용했습니다. 하지만 전달 인자의 개수가 1개입니다.",
  "rule.saqt.q.cpp.1191.example.0.safe": "라인 4: 라인 1에서 정의한 매크로의 매개 변수 개수에 맞게 인자 2개를 전달합니다.",
  "rule.saqt.q.cpp.1191.name": "일치하지 않는 매크로 인자 수",
  "rule.saqt.q.cpp.1192.description": "매크로 내 전처리 구문 체커는 전처리 구문을 매크로 함수의 인자로 사용하는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n매크로 인자에 전처리 구문을 포함하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n매크로 함수의 인자에 다른 전처리 구문이 포함되지 않도록 합니다.",
  "rule.saqt.q.cpp.1192.example.0.dangerous": "라인 3: 여러 라인에 걸쳐 매크로 함수를 사용했습니다.\n라인 4: 매크로 함수의 인자 사이에 전처리 구문을 사용했습니다.",
  "rule.saqt.q.cpp.1192.example.0.safe": "라인 4: 매크로 함수의 인자 사이에 전처리 구문을 포함하지 않도록 합니다.",
  "rule.saqt.q.cpp.1192.name": "매크로 내 전처리 구문",
  "rule.saqt.q.cpp.1193.description": "누락된 매크로 인자 주위 괄호 체커는 # 연산 및 ## 연산을 제외하고 함수형 매크로의 인자를 괄호로 감싸지 않고 선언되는 경우를 검출합니다.\n매크로 함수란 define 전처리 구문을 마치 함수처럼 정의한 매크로를 의미합니다.\n그렇지 않으면 매크로 인자로 전달된 수식에 따라 연산 순서가 달라지는 문제가 발생할 수 있습니다. 따라서 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n매크로 함수를 선언할 때 인자를 괄호로 감싸도록 합니다.",
  "rule.saqt.q.cpp.1193.example.0.dangerous": "라인 1: 매크로 함수의 인자를 괄호로 감싸지 않았습니다.\n라인 2: 매크로 함수의 인자를 괄호로 감싸지 않았습니다.",
  "rule.saqt.q.cpp.1193.example.0.safe": "라인 1: 매크로 함수의 인자를 각각 괄호로 감싸도록 합니다.",
  "rule.saqt.q.cpp.1193.name": "누락된 매크로 인자 주위 괄호",
  "rule.saqt.q.cpp.1194.description": "정의되지 않은 식별자 체커는 앞서 정의되지 않은 매크로 식별자를 ifdef, ifndef, defined 전처리 구문에 사용한 경우를 검출합니다.\nifdef, ifndef, defined 전처리 구문에서 사용하는 매크로 식별자는 미리 정의되어 있지 않은 경우 0으로 간주됩니다. 이것은 개발자가 의도한 동작이 아닐 수 있습니다.\n모든 매크로 식별자는 사용하기전에 미리 정의하도록 합니다.",
  "rule.saqt.q.cpp.1194.example.0.dangerous": "라인 1: if 전처리 구문에서 매크로 식별자 FLAG를 비교했습니다. 이 매크로 식별자를 정의되어 있지 않은 매크로이며 따라서 값은 0입니다.",
  "rule.saqt.q.cpp.1194.example.0.safe": "라인 1: if 전처리 구문에서 사용하기 전에 명시적으로 FLAG 매크로 식별자를 정의합니다.",
  "rule.saqt.q.cpp.1194.name": "정의되지 않은 식별자",
  "rule.saqt.q.cpp.1195.description": "여러 개의 # 혹은 ## 연산 체커는 # 연산이나 ## 연산을 두 번 이상 사용하여 하나의 매크로를 정의하는 코드를 검출합니다.\n# 연산 및 ## 연산과 관련된 계산 순서는 명시되지 않은 동작(Unspecified Defined Behavior)입니다. 컴파일러는 이것에 대하여 구현 방법을 제공하지만 문서로 명세해두지는 않습니다. 경우에 따라 의도한 것과 다른 동작이 있을 수 있습니다.\n하나의 매크로를 정의할 때는 # 연산이나 ## 연산은 최대 한 번만 사용하도록 합니다.",
  "rule.saqt.q.cpp.1195.example.0.dangerous": "라인 1: 매크로 정의에서 # 연산이나 ## 연산을 두 번 이상 사용했습니다.\n라인 2: 매크로 정의에서 # 연산이나 ## 연산을 두 번 이상 사용했습니다.\n라인 3: 매크로 정의에서 # 연산이나 ## 연산을 두 번 이상 사용했습니다.",
  "rule.saqt.q.cpp.1195.example.0.safe": "라인 1: 매크로를 정의하는 경우 # 연산이나 ## 연산을 한 번만 사용하도록 합니다.\n라인 2: 매크로를 정의하는 경우 # 연산이나 ## 연산을 한 번만 사용하도록 합니다.\n라인 3: 매크로를 정의하는 경우 # 연산이나 ## 연산을 한 번만 사용하도록 합니다.",
  "rule.saqt.q.cpp.1195.name": "여러 개의 # 혹은 ## 연산",
  "rule.saqt.q.cpp.1196.description": "# 혹은 ## 연산자 사용 체커는 # 연산이나 ## 연산을 사용하여 매크로를 정의하는 경우를 검출합니다.\n매크로의 문자열 치환 방식을 잘 이해하지 못하고 # 연산이나 ## 연산을 사용하면 부정확한 소스 코드를 작성하게 됩니다. 따라서 개발자가 예상하지 못한 결과가 발생할 수 있습니다.\n매크로를 정의하는 경우 # 연산이나 ## 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1196.example.0.dangerous": "라인 1: 매크로 정의에서 # 연산이나 ## 연산을 사용했습니다.",
  "rule.saqt.q.cpp.1196.example.0.safe": "라인 1: 매크로를 정의하는 경우 # 연산이나 ## 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1196.name": "# 혹은 ## 연산자 사용",
  "rule.saqt.q.cpp.1197.description": "비 표준 전처리 구문 형식 체커는 defined 전처리 구문의 사용 방식이 지정된 형식을 벗어난 경우를 검출합니다.\n여기서 지정된 형식이란 defined (식별자) 혹은 defined 식별자 이 두 가지 표준 형태를 의미합니다.\n지정된 형식이 아닌 다른 방법으로 defined 전처리 구문을 정의하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\ndefined 전처리 구문을 정의할 경우에는 반드시 지정된 형식으로 정의하도록 합니다.",
  "rule.saqt.q.cpp.1197.example.0.dangerous": "라인 1: TEXT4 식별자 뒤에 15라는 추가적인 식별자가 있습니다.\n라인 4: 식별자를 작성하는 부분에 수식이 있습니다.\n라인 7: defined 전처리 구문을 매크로로 지정했습니다.",
  "rule.saqt.q.cpp.1197.example.0.safe": "라인 1: 지정한 형식대로 defined 전처리 구문을 구성합니다.",
  "rule.saqt.q.cpp.1197.name": "비 표준 전처리 구문 형식",
  "rule.saqt.q.cpp.1198.description": "전처리 구문 뒤 추가 문자 체커는 정상적인 전처리 구문 형식 뒤에 공백을 제외한 불필요한 문자가 오는 경우를 검출합니다.\n전처리 구문 뒤에 공백을 제외한 불필요한 문자는 기본적으로 제외됩니다. 하지만 모든 컴파일러가 이와 같이 ISO에서 정한 표준을 지키는 것은 아닙니다. 경우에 따라 개발자가 의도하지 못한 동작이 발생할 수 있습니다.\n전처리 구문 뒤에는 공백을 제외한 불필요한 문자가 오지 않도록 합니다.",
  "rule.saqt.q.cpp.1198.example.0.dangerous": "라인 1: 전처리 구문 뒤에 공백이 아닌 문자가 들어갔습니다.\n라인 2: 전처리 구문 뒤에 공백이 아닌 문자가 들어갔습니다.",
  "rule.saqt.q.cpp.1198.example.0.safe": "라인 1: 전처리 구문 뒤에 공백을 제외한 문자를 작성하지 않도록 합니다.\n라인 2: 전처리 구문 뒤에 공백을 제외한 문자를 작성하지 않도록 합니다.",
  "rule.saqt.q.cpp.1198.name": "전처리 구문 뒤 추가 문자",
  "rule.saqt.q.cpp.1199.description": "전처리 구문에 후행하는 세미콜론 체커는 정상적인 전처리 구문 형식 뒤에 세미콜론이 오는 경우를 검출합니다.\n전처리 구문 뒤에 공백을 제외한 불필요한 문자는 기본적으로 제외됩니다. 하지만 모든 컴파일러가 이와 같이 ISO에서 정한 표준을 지키는 것은 아닙니다. 경우에 따라 개발자가 의도하지 못한 동작이 발생할 수 있습니다.\n전처리 구문 뒤에는 세미콜론이 오지 않도록 합니다.",
  "rule.saqt.q.cpp.1199.example.0.dangerous": "라인 1: 전처리 구문 뒤에 세미콜론이 들어갔습니다.\n라인 2: 전처리 구문 뒤에 세미콜론이 들어갔습니다.",
  "rule.saqt.q.cpp.1199.example.0.safe": "라인 1: 전처리 구문 뒤에 세미콜론을 작성하지 않도록 합니다.\n라인 2: 전처리 구문 뒤에 세미콜론을 작성하지 않도록 합니다.",
  "rule.saqt.q.cpp.1199.name": "전처리 구문에 후행하는 세미콜론",
  "rule.saqt.q.cpp.120.description": "오류 발생 시 부적절한 반환 값 체커는 옵션에 지정된 특정 함수를 호출한 후에 반환문을 사용하지 않은 코드를 검출합니다.\n옵션으로 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 검사 대상 호출 함수를 설정할 수 있습니다.\n옵션에 지정된 함수를 호출한 후에 명시적으로 반환문을 사용해야 합니다.",
  "rule.saqt.q.cpp.120.example.0.dangerous": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 3: SET_ERR_API21() 함수가 호출된 후에 Func()의 return 문이 없으므로 검출됩니다.",
  "rule.saqt.q.cpp.120.example.0.safe": "라인 2: 분석 대상인 Func() 함수를 정의했습니다.\n라인 3: SET_ERR_API21() 함수를 호출합니다. 이후에 return 문이 있으므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.120.name": "오류 발생 시 부적절한 반환 값",
  "rule.saqt.q.cpp.120.option.call_target.description": "검사할 함수 호출을 설정합니다.",
  "rule.saqt.q.cpp.120.option.call_target.name": "검사 대상 함수 호출",
  "rule.saqt.q.cpp.120.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.120.option.file_target_excluded.name": "대상에서 제외되는 파일",
  "rule.saqt.q.cpp.120.option.function_target.description": "대상이 되는 함수를 설정합니다.",
  "rule.saqt.q.cpp.120.option.function_target.name": "대상이 되는 함수",
  "rule.saqt.q.cpp.120.option.function_target_excluded.description": "대상에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.120.option.function_target_excluded.name": "대상에서 제외되는 함수",
  "rule.saqt.q.cpp.1200.description": "동적 메모리 할당 체커는 동적 할당을 사용한 수식을 검출합니다.\n동적 할당을 사용하는 것은 C/C++ 언어에서 매우 일반적인 사용 방법입니다. 하지만 종종 임베디드 환경에서는 매우 제한된 메모리 상에서 프로그램이 동작해야 하는 경우가 있습니다. 이 경우 동적 할당을 사용하는 것은 위험할 수 있습니다. 이러한 경향은 자동차나 항공, 원자력 발전소 등 기계가 지속적으로 안정적인 동작을 필요로 하는 경우 특히 심해집니다.\n동적 할당을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1200.example.0.dangerous": "라인 2: malloc() 함수를 호출하는 동적 할당을 사용했습니다.",
  "rule.saqt.q.cpp.1200.example.0.safe": "라인 1: 지역 변수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1200.name": "동적 메모리 할당",
  "rule.saqt.q.cpp.1201.description": "errno 사용 체커는 errno 지시자를 사용하는 코드를 검출합니다.\nerrno 지시자가 이론적으로는 유용해 보이지만 실제로는 ISO/IEC14882 : 2003 [1]에서 잘못 정의된 기능입니다. 0이 아닌 값은 오류가 발생했다는 사실을 표시할 수도 있고 표시하지 않을 수도 있습니다. 따라서 errno 지시자를 사용하는 경우 오류가 발생했는지를 확인하기가 어렵습니다.\nerrno 지시자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1201.example.0.dangerous": "라인 5: errno 지시자를 사용하여 오류를 확인했습니다.",
  "rule.saqt.q.cpp.1201.example.0.safe": "라인 5: 반환 값이나 매개 변수 입력값을 체크하는 것이 좋습니다.",
  "rule.saqt.q.cpp.1201.name": "errno 사용",
  "rule.saqt.q.cpp.1202.description": "offsetof 매크로 사용 체커는 offsetof 매크로를 사용하는 경우를 검출합니다.\n표준 라이브러리 \"stddef.h\" 에 있는 offsetof 매크로를 사용하면 안됩니다. offsetof 매크로를 표준 레이아웃이 아닌 클래스에 사용하면 정의되지 않은 동작이 발생할 수 있으므로 offsetof 매크로를 사용하지 않는 것이 좋습니다. 표준 레이아웃 타입은 C와 같은 레이아웃을 가진 타입을 의미하며, 아래 특성을 만족합니다. 1. 가상 함수나 가상 기저 클래스를 갖지 않는다. 2. 비정적 데이터 멤버가 동일한 접근 제어를 가진다. 3. 모든 비정적 데이터 멤버가 표준 레이아웃이다. 4. 모든 기저 클래스가 표준 레이아웃이다. 5. 첫 번째 비정적 멤버로 기저 클래스와 동일한 타입의 데이터를 갖지 않는다. 6. 레퍼런스 멤버를 갖지 않는다. 7. 한 개 이상의 기저 클래스 혹은 파생 및 기저 클래스 둘 다에서 비정적 데이터를 갖지 않는다. 표준 레이아웃 타입인지 확인하려면 <type_traits>의 std::is_standard_layout을 사용하도록 합니다.\noffsetof 메크로를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1202.example.0.dangerous": "라인 10: offsetof 매크로를 사용했습니다.",
  "rule.saqt.q.cpp.1202.example.0.safe": "라인 10: offsetof 매크로를 사용하지 않도록 합니다. 필요한 경우 별도 함수를 만들어 사용합니다.",
  "rule.saqt.q.cpp.1202.name": "offsetof 매크로 사용",
  "rule.saqt.q.cpp.1203.description": "setjmp 함수 사용 체커는 setjmp 매크로를 사용하는 수식을 검출합니다.\nsetjmp 매크로를 사용하면 제어 흐름을 추적하기가 어려울 수 있습니다.\nsetjmp 매크로를 사용하지 않도록 합니다. 가능하면 점프 구문이 필요하지 않도록 제어 흐름을 구성하는 것이 바람직합니다.",
  "rule.saqt.q.cpp.1203.example.0.dangerous": "라인 3: setjmp 매크로를 사용했습니다.",
  "rule.saqt.q.cpp.1203.example.0.safe": "라인 1: setjmp 매크로를 사용하지 않도록 합니다. 되도록이면 점프 구문이 필요하지 않도록 제어 흐름을 구성합니다.",
  "rule.saqt.q.cpp.1203.name": "setjmp 함수 사용",
  "rule.saqt.q.cpp.1204.description": "longjmp 함수 사용 체커는 longjmp() 함수를 사용하는 수식을 검출합니다.\nlongjmp() 함수를 사용하면 제어 흐름을 추적하기가 어려울 수 있습니다.\nlongjmp() 함수를 사용하지 않도록 합니다. 가능하면 점프 구문이 필요하지 않도록 제어 흐름을 구성하는 것이 바람직합니다.",
  "rule.saqt.q.cpp.1204.example.0.dangerous": "라인 12: longjmp() 함수를 사용했습니다.",
  "rule.saqt.q.cpp.1204.example.0.safe": "라인 1: longjmp() 함수를 사용하지 않도록 합니다. 되도록이면 점프 구문이 필요하지 않도록 제어 흐름을 구성합니다.",
  "rule.saqt.q.cpp.1204.name": "longjmp 함수 사용",
  "rule.saqt.q.cpp.1205.description": "시그널 핸들링 사용 체커는 signal.h의 시그널 핸들링 기능을 사용하는 경우를 검출합니다.\nsignal.h의 시그널 핸들링 기능을 사용하면 안됩니다. 시그널 핸들링은 플랫폼마다 다르고, 정의되지 않은 동작을 발생시킬 수 있습니다.\nsignal.h의 시그널 핸들링 기능을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1205.example.0.dangerous": "라인 1: signal.h 헤더 파일을 include 했습니다.",
  "rule.saqt.q.cpp.1205.example.0.safe": "라인 1: signal.h의 시그널 핸들링 기능을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1205.name": "시그널 핸들링 사용",
  "rule.saqt.q.cpp.1206.description": "stdio.h 사용 체커는 stdio.h를 사용하는 경우를 검출합니다.\n양산 코드에는 C의 표준 라이브러리의 stdio.h를 사용하지 말아야 합니다. C의 표준 라이브러리 stdio.h 는 결함이 많고 오류 발생이 쉽습니다. 해당 라이브러리를 대체할 다른 라이브러리를 사용하십시오.\nstdio 헤더를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1206.example.0.dangerous": "라인 1: stdio.h를 include 했습니다.",
  "rule.saqt.q.cpp.1206.example.0.safe": "라인 1: stdio.h를 include 하지 말아야 합니다.",
  "rule.saqt.q.cpp.1206.name": "stdio.h 사용",
  "rule.saqt.q.cpp.1207.description": "와이드 문자열 사용 체커는 와이드 문자열을 사용하는 경우를 검출합니다.\n와이드 문자열을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1207.example.0.dangerous": "라인 1: \"Fred\"를 와이드 문자열로 사용했습니다.",
  "rule.saqt.q.cpp.1207.example.0.safe": "라인 1: 와이드 문자열을 사용하지 말아야 합니다.",
  "rule.saqt.q.cpp.1207.name": "와이드 문자열 사용",
  "rule.saqt.q.cpp.1209.description": "void 반환 타입 함수 내에서 반환 체커는 반환 타입이 void인 함수가 반환문에서 값을 반환하는 경우를 검출합니다.\nvoid 반환 타입 함수가 반환 수식을 가지면 일부 컴파일러에서 컴파일 오류가 발생하며, 오류가 발생하지 않더라도 불필요한 계산을 수행하므로 전체 프로그램의 성능을 저하시킵니다.\nvoid 반환 타입 함수에 반환 수식을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1209.example.0.dangerous": "라인 4: void를 반환하는 함수가 x+1 수식을 반환하고 있습니다.",
  "rule.saqt.q.cpp.1209.example.0.safe": "라인 4: void 형을 반환하는 함수는 return 뒤에 수식 및 값이 없어야 합니다.",
  "rule.saqt.q.cpp.1209.name": "void 반환 타입 함수 내에서 반환",
  "rule.saqt.q.cpp.1210.description": "포인터 연산 사용 체커는 포인터 연산을 하는 경우를 검출합니다.\n잘못된 포인터 연산은 런타임 오류와 같은 문제를 발생시킬 수 있습니다.\n포인터 연산을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1210.example.0.dangerous": "라인 4: 포인터에 직접적으로 연산을 수행했습니다.",
  "rule.saqt.q.cpp.1210.example.0.safe": "라인 4: 포인터 연산을 하지 말아야 합니다.",
  "rule.saqt.q.cpp.1210.name": "포인터 연산 사용",
  "rule.saqt.q.cpp.1211.description": "setlocale 함수 사용 체커는 locale.h 라이브러리의 setlocale() 함수를 호출하는 경우를 검출합니다.\nsetlocale을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1211.example.0.dangerous": "라인 3: 표준함수locale.h의 setlocale() 함수를 사용했습니다.",
  "rule.saqt.q.cpp.1211.example.0.safe": "라인 3: setlocale() 함수를 사용하지 말아야 합니다.",
  "rule.saqt.q.cpp.1211.name": "setlocale 함수 사용",
  "rule.saqt.q.cpp.1213.description": "시그널 핸들러의 공유 객체 접근 체커는 시그널 핸들러가 공유 객체에 접근하는 경우를 검출합니다.\n시그널 핸들러가 공유 객체에 접근하면 경쟁 조건이 발생할 수 있습니다. 이식성을 보장하기 위해서 시그널 핸들러가 volatile sig_atomic_t 타입의 변수를 전달 받거나, 설정하거나, 반환해야 합니다. 혹은 Lock-Free Atomic Access 방식으로 문제를 해결해야 합니다. 자세한 사항은 CERT 페이지를 참조하면 확인할 수 있습니다.\n시그널 핸들러에서는 공유 객체에 접근하지 않도록 합니다.",
  "rule.saqt.q.cpp.1213.example.0.dangerous": "라인 4: SIGINT 시그널이 전달되었다고 알려주기 위해 err_msg를 업데이트했습니다. 하지만 SIGINT 시그널이 할당 작업 전에 생성되면 정의되지 않은 동작이 발생합니다.",
  "rule.saqt.q.cpp.1213.example.0.safe": "라인 2: 이식성을 보장하기 위해서 시그널 핸들러가 volatile sig_atomic_t 타입의 변수를 전달 받거나, 설정하거나, 반환해야 합니다. 혹은 Lock-Free Atomic Access 방식으로 문제를 해결해야 합니다. 자세한 사항은 CERT 페이지를 참조하면 확인할 수 있습니다.",
  "rule.saqt.q.cpp.1213.name": "시그널 핸들러의 공유 객체 접근",
  "rule.saqt.q.cpp.1215.description": "시그널 핸들러 반환 체커는 프로그램이 종료되어야 하는 치명적인 오류 시그널 핸들러에서 암시적 혹은 명시적으로 값을 반환하는 경우를 검출합니다.\nSIGSEGV, SIGILL, SIGFPE와 같은 치명적인 오류 시그널 핸들러의 경우 값을 반환하는 대신 abort(), quick_exit(), _Exit() 등 특정한 함수를 호출하여 프로그램을 종료해야 합니다.\n세그멘테이션 오류(SIGSEGV), 잘못된 명령(SIGILL), 산술 연산 오류(SIGFPE)와 같은 치명적인 오류 상황에서 발생하는 시그널을 임의로 무시해서는 안됩니다. 해당 시그널 핸들러를 적절하게 처리하고 프로그램을 종료시켜야 합니다.\n치명적 오류 시그널 핸들러 함수에서는 값을 반환하는 대신 abort(), quick_exit(), _Exit()와 같은 함수를 호출하여 프로그램을 종료해야 합니다.",
  "rule.saqt.q.cpp.1215.example.0.dangerous": "라인 7: 시그널 핸들러 함수에 특정한 프로그램 종료 코드가 없으므로 실행을 마치면 암시적으로 값을 반환하게 됩니다.\n라인 15: denom 값이 0이면 SIGFPE 시그널이 발생하게 됩니다. 따라서 무한 루프에 빠질 수 있습니다.",
  "rule.saqt.q.cpp.1215.example.0.safe": "라인 6: abort(), quick_exit(), _Exit()를 사용하여 SIGFPE, SIGILL, SIGSEGV 핸들러를 종료해야 합니다. 혹은 기본 핸들러가 프로그램을 종료해주므로 기본 핸들러를 사용하도록 내버려두어도 됩니다.",
  "rule.saqt.q.cpp.1215.name": "시그널 핸들러 반환",
  "rule.saqt.q.cpp.1216.description": "사용되지 않은 런타임 지정 핸들러 체커는 경계 검사 함수를 호출하기 전에 런타임 지정 핸들러를 등록하지 않은 경우를 검출합니다.\nC11 표준에 의하면 경계 검사를 수행하는 라이브러리 함수에서는 전달받은 인자가 제약 조건을 만족하는지를 확인하고, 만족하지 않는 경우 시그널을 발생시키도록 규정되어 있습니다. 따라서 해당 라이브러리 함수를 사용할 때 제약 조건에 어긋나는 인자가 전달되면 프로그램이 사실을 인지하고 대응할 수 있도록 시그널 핸들러를 등록하는 것이 좋습니다.\nset_constraint_handler_s() 함수를 사용하여 핸들러를 등록합니다.",
  "rule.saqt.q.cpp.1216.example.0.dangerous": "라인 3: strcpy_s()가 호출되었으나 이전에 런타임 지정 핸들러가 명시적으로 등록되지 않았습니다.",
  "rule.saqt.q.cpp.1216.example.0.safe": "라인 7: 런타임 핸들러를 명시적으로 지정해야 합니다.",
  "rule.saqt.q.cpp.1216.name": "사용되지 않은 런타임 지정 핸들러",
  "rule.saqt.q.cpp.1218.description": "멀티스레드 프로그램 내에서 signal 함수 사용 체커는 다중 스레드 프로그램에서 signal() 함수를 호출하는 경우를 검출합니다.\nsignal() 함수로 인해 다중 스레드 환경에서 정의되지 않은 동작이 발생할 수 있습니다.\n다중 스레드 프로그램에서 signal() 함수를 호출하지 않도록 합니다.",
  "rule.saqt.q.cpp.1218.example.0.dangerous": "라인 13: 자식 스레드에서 반복문을 탈출하기 위해 signal() 함수를 사용했습니다.",
  "rule.saqt.q.cpp.1218.example.0.safe": "라인 16: 자식 스레드가 반복문을 탈출하기 위해 signal() 함수를 사용하는 대신 atomic_flag 타입의 객체를 사용합니다.",
  "rule.saqt.q.cpp.1218.name": "멀티스레드 프로그램 내에서 signal 함수 사용",
  "rule.saqt.q.cpp.1219.description": "오버로딩된 논리 연산자 체커는 콤마 및 논리 연산자를 오버로딩한 클래스를 검출합니다.\nC++ 클래스는 연산자의 오버로딩이 가능하며, operator,(), operator&&(), operator||()와 같이 콤마 및 논리 연산자의 오버로딩도 가능합니다.\n논리 연산자들이 클래스에서 오버로딩된 경우 단축 평가가 동작하지 않습니다. 또한 (`,`) 연산자의 경우 기본적으로 왼쪽에서 오른쪽으로 식을 평가해 나갑니다. 만약 클래스에서 오버로딩된 경우, 왼쪽 표현식을 오른쪽 표현식보다 먼저 평가한다고 보장할 수 없습니다. 이 경우 컴파일러마다 다르게 동작합니다.\n오버로딩을 할 경우 표현식 순서가 달라지는 연산자는 오버로딩하지 않도록 합니다.",
  "rule.saqt.q.cpp.1219.example.0.dangerous": "라인 2: operator&&() 메소드를 오버로딩하고 있습니다.",
  "rule.saqt.q.cpp.1219.example.0.safe": "라인 2: operator&&() 메소드를 오버로딩하지 않도록 합니다.",
  "rule.saqt.q.cpp.1219.name": "오버로딩된 논리 연산자",
  "rule.saqt.q.cpp.1219.option.is_checked_ampersand.description": "체크시 '&&' 연산자를 오버로딩 했는지 검사합니다.",
  "rule.saqt.q.cpp.1219.option.is_checked_ampersand.name": "'&&' 연산자 검사",
  "rule.saqt.q.cpp.122.description": "오류 발생 시 누락된 로깅 체커는 옵션에 지정된 오류 코드를 반환하기 전에 오류 로그 함수를 호출하지 않는 코드를 검출합니다.\n옵션에서 오류 코드, 오류 로그 함수를 설정할 수 있습니다.\n오류가 발생할 때 오류 로그를 기록하지 않는다면 유지보수에 어려움이 있기 때문에 항상 오류 메시지를 기록하도록 프로그램을 작성해야 합니다.\n옵션에 지정된 오류 코드를 반환하기 전에 오류 로그 함수를 호출해야 합니다.",
  "rule.saqt.q.cpp.122.example.0.dangerous": "라인 7: 오류 코드가 반환됩니다. 오류 로그 함수가 호출되지 않으므로 검출됩니다.",
  "rule.saqt.q.cpp.122.example.0.safe": "라인 7: 오류 코드가 반환되기 전에 오류 로그 함수를 호출합니다.\n라인 8: 오류 코드가 반환됩니다.",
  "rule.saqt.q.cpp.122.name": "오류 발생 시 누락된 로깅",
  "rule.saqt.q.cpp.122.option.error_expr.description": "에러 표현식을 설정합니다.",
  "rule.saqt.q.cpp.122.option.error_expr.name": "에러 표현식",
  "rule.saqt.q.cpp.122.option.log_function.description": "로그 함수를 설정합니다.",
  "rule.saqt.q.cpp.122.option.log_function.name": "로그 함수",
  "rule.saqt.q.cpp.1220.description": "C 스타일 형변환 사용 체커는 소스 코드에서 C 스타일 캐스팅을 사용한 수식을 검출합니다.\nC 스타일 캐스팅을 사용하면 가독성이 떨어지고 타입 검사 기능이 취약해집니다.\nC++에 새롭게 추가된 캐스팅(static_cast, const_cast, dynamic_cast, reinterpret_cast)을 사용합니다. C++ 캐스팅은 C캐스팅보다 가독성이 좋으며, 더 강력한 타입 검사를 지원합니다. static_cast는 보편적으로 허용하는 캐스팅이 필요할 때 사용하며, 컴파일 타임에 캐스팅 타입 오류를 잡아줍니다. const_cast는 수식의 한정자(const, volatile 등)을 추가하거나 제거할 때 사용합니다. dynamic_cast는 캐스팅을 수행하는 사용자 정의 타입들을 안전하게 다운캐스팅해야 할 때 사용합니다. 이 캐스팅은 캐스팅하려는 타입과 수식이 서로 상속 관계가 아닐 경우 널 포인터 혹은 예외를 발생시킵니다. reinterpret_cast는 포인터를 다른 포인터 형식으로 캐스팅할 때 사용합니다.",
  "rule.saqt.q.cpp.1220.example.0.dangerous": "라인 11: C 스타일 캐스팅을 사용했습니다.",
  "rule.saqt.q.cpp.1220.example.0.safe": "라인 11: C++ 스타일의 캐스팅을 사용합니다. 만약 pd가 기본 클래스의 상속 클래스가 아닌 경우 dynamic_cast는 널 포인터를 반환합니다.",
  "rule.saqt.q.cpp.1220.name": "C 스타일 형변환 사용",
  "rule.saqt.q.cpp.1221.description": "복사 초기화 사용 체커는 복사 초기화 방식으로 정의한 클래스 형식의 변수를 검출합니다.\n클래스 형식의 변수에 선언과 동시에 대입으로 인자 값을 전달하면 복사 생성자를 호출합니다. 이 방식이 복사 초기화 방식입니다.\n복사 초기화 방식은 임시 객체가 생성되어 불필요한 오버헤드가 발생할 수 있습니다. 이러한 오버헤드는 만약 생성자에서 복잡한 계산을 하는 경우 더욱 커지게 됩니다.\n복사 초기화 방식 대신 직접 초기화 방식을 사용하여 클래스 형식의 변수를 정의하는 것이 좋습니다. 이 경우 생성자가 한 번만 호출됩니다.",
  "rule.saqt.q.cpp.1221.example.0.dangerous": "라인 1: 임시 객체가 생성되어 오버헤드가 발생합니다.\n라인 2: 임시 객체가 생성되어 오버헤드가 발생 합니다.",
  "rule.saqt.q.cpp.1221.example.0.safe": "라인 1: 직접 초기화 방식을 사용합니다.",
  "rule.saqt.q.cpp.1221.name": "복사 초기화 사용",
  "rule.saqt.q.cpp.1222.description": "복잡한 클래스에서 누락된 특별 함수 체커는 특수한 메소드의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.\n특정 클래스란 멤버 변수로 포인터가 있거나 소멸자가 복잡한 클래스입니다.\n이러한 클래스는 특수 멤버 함수를 정의하지 않으면 객체 간에 정상적인 복사가 이루어지지 않을 수 있습니다. 자동적으로 만들어지는 복사 생성자 및 복사 대입 연산자는 얕은 복사를 수행합니다. 만약 클래스의 필드값 중 포인터가 있을 경우 데이터는 복사되지 않고 포인터 주소만 복사가 이루어집니다.\n직접 특수한 메소드(복사 생성자, 복사 대입 연산자)를 선언하고 정의해야 합니다.",
  "rule.saqt.q.cpp.1222.example.0.dangerous": "라인 6: 멤버 변수로 포인터가 있으나, 복사 생성자 및 복사 대입 연산자가 명시적으로 선언되지 않았습니다. 특수 메소드는 컴파일러가 자동으로 생성합니다.",
  "rule.saqt.q.cpp.1222.example.0.safe": "라인 4: 복사 생성자를 명시적으로 정의합니다.\n라인 5: 복사 대입 연산자를 명시적으로 정의합니다.",
  "rule.saqt.q.cpp.1222.name": "복잡한 클래스에서 누락된 특별 함수",
  "rule.saqt.q.cpp.1223.description": "동적 할당을 사용한 클래스에서 누락된 특별 함수 체커는 특수한 메소드의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.\n특정 클래스란 클래스 생성자에서 동적 할당으로 필드값을 초기화한 클래스입니다.\n이러한 클래스는 특수 멤버 함수를 정의하지 않으면 객체 간에 정상적인 복사가 이루어지지 않을 수 있습니다. 자동적으로 만들어지는 복사 생성자 및 복사 대입 연산자는 얕은 복사를 수행합니다. 만약 클래스의 필드값 중 동적 할당한 포인터가 있을 경우 데이터는 복사되지 않고 포인터 주소만 복사가 이루어집니다.\n직접 특수한 메소드(복사 생성자, 복사 대입 연산자)를 선언하고 정의해야 합니다.",
  "rule.saqt.q.cpp.1223.example.0.dangerous": "라인 4: 생성자에서 new를 사용했으나, 복사 생성자 및 복사 대입 연산자를 명시적으로 선언하지 않았습니다.",
  "rule.saqt.q.cpp.1223.example.0.safe": "라인 6: 복사 생성자를 명시적으로 정의합니다.\n라인 7: 복사 대입 연산자를 명시적으로 정의합니다.",
  "rule.saqt.q.cpp.1223.name": "동적 할당을 사용한 클래스에서 누락된 특별 함수",
  "rule.saqt.q.cpp.1224.description": "복잡한 클래스에서 누락된 명시적 소멸자 체커는 소멸자의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.\n특정 클래스란 멤버 변수로 포인터가 있는 클래스입니다.\n이러한 클래스는 멤버 변수를 내부에서 메모리 할당했을 경우, 객체 소멸 시 메모리 누수가 발생할 수 있습니다. 만약 메모리를 해제하는 메소드를 정의한다고 해도 의도하지 않은 상황에서 객체가 소멸할 경우 대응할 수 없습니다.\n직접 소멸자를 선언하고 정의해야 합니다.",
  "rule.saqt.q.cpp.1224.example.0.dangerous": "라인 6: 멤버 변수로 포인터가 있으나, 명시적으로 소멸자를 선언하지 않았습니다.",
  "rule.saqt.q.cpp.1224.example.0.safe": "라인 4: 명시적으로 소멸자를 선언 혹은 정의합니다.",
  "rule.saqt.q.cpp.1224.name": "복잡한 클래스에서 누락된 명시적 소멸자",
  "rule.saqt.q.cpp.1225.description": "동적 할당을 사용한 클래스에서 누락된 명시적 소멸자 체커는 소멸자의 선언 혹은 정의를 누락한 특정 클래스를 검출합니다.\n특정 클래스란 클래스 생성자에서 동적 할당으로 필드값을 초기화한 클래스입니다.\n이러한 클래스는 멤버 변수를 생성자에서 메모리 할당했을 경우, 객체 소멸 시 메모리 누수가 발생할 수 있습니다. 만약 메모리를 해제하는 메소드를 정의한다고 해도 의도하지 않은 상황에서 객체가 소멸할 경우 대응할 수 없습니다.\n직접 소멸자를 선언하고 정의해야 합니다.",
  "rule.saqt.q.cpp.1225.example.0.dangerous": "라인 4: 생성자에서 new를 사용했으나, 명시적으로 소멸자를 선언하지 않았습니다.",
  "rule.saqt.q.cpp.1225.example.0.safe": "라인 6: 명시적으로 소멸자를 선언 혹은 정의합니다.",
  "rule.saqt.q.cpp.1225.name": "동적 할당을 사용한 클래스에서 누락된 명시적 소멸자",
  "rule.saqt.q.cpp.1226.description": "너무 복잡한 인라인 함수 체커는 인라인으로 선언된 복잡한 함수를 검출합니다.\n이때 복잡한 함수는 내부에서 반복문이 사용되었거나 재귀호출이 이루어진 함수를 가리킵니다.\ninline 키워드는 컴파일러에게 주는 힌트일 뿐이며 실제 인라인 여부는 컴파일러에 의해 결정됩니다. 또한 인라인은 성능 향상을 목적으로 사용하지만, 경우에 따라 오히려 성능이 감소할 수 있습니다. 복잡한 함수는 inline 키워드가 붙어있더라도 컴파일러가 실제 인라인으로 처리할 가능성은 낮습니다.\n복잡한 함수는 inline 키워드를 사용하지 않습니다. 간단한 함수에 꼭 필요한 경우에만 inline 키워드를 사용합니다.",
  "rule.saqt.q.cpp.1226.example.0.dangerous": "라인 7: 인라인 함수 내에서 반복문을 사용했습니다.",
  "rule.saqt.q.cpp.1226.example.0.safe": "라인 1: 간단한 함수만 인라인으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1226.name": "너무 복잡한 인라인 함수",
  "rule.saqt.q.cpp.1227.description": "비 가상 인라인 함수 체커는 인라인으로 선언된 일부 클래스 메소드를 검출합니다.\n이때 검출하는 특수 메소드는 가상 메소드와 생성자, 소멸자입니다.\ninline 키워드는 컴파일러에게 주는 힌트일 뿐이며 실제 인라인 여부는 컴파일러에 의해 결정됩니다. 또한 인라인은 성능 향상을 목적으로 사용하지만, 경우에 따라 오히려 성능이 감소할 수 있습니다. 가상 함수는 런타임에서 호출할 함수를 결정하기 때문에 인라인 될 수 없습니다. 생성자와 소멸자는 암시적으로 다른 생성자와 소멸자들을 호출 할 수 있기 때문에 인라인 될 수 없습니다.\n가상 함수와 생성자, 소멸자는 inline 키워드를 사용하지 않습니다. 간단하고 비가상인 메소드에만 inline 키워드를 사용합니다.",
  "rule.saqt.q.cpp.1227.example.0.dangerous": "라인 3: 가상 함수는 인라인 될 수 없습니다. 클래스 정의부에서 메소드를 구현하는 것은 인라인 하는 것을 나타냅니다.",
  "rule.saqt.q.cpp.1227.example.0.safe": "라인 3: 다음과 같이 일반 함수로 선언합니다. 혹은, 가상 함수를 인라인으로 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.1227.name": "비 가상 인라인 함수",
  "rule.saqt.q.cpp.1228.description": "너무 긴 인라인 함수 체커는 인라인으로 선언된 커다란 함수를 검출합니다.\n이때 커다란 함수는 특정 라인 수나 문장의 수를 초과한 함수를 가리킵니다. 이 수치는 옵션으로 설정할 수 있습니다.\ninline 키워드는 컴파일러에게 주는 힌트일 뿐이며 실제 인라인 여부는 컴파일러에 의해 결정됩니다. 또한 인라인은 성능 향상을 목적으로 사용하지만, 경우에 따라 오히려 성능이 감소할 수 있습니다.\n커다란 함수는 inline 키워드를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1228.example.0.dangerous": "라인 1: 함수의 라인 수가 옵션에서 지정한 15라인을 넘어섰습니다.",
  "rule.saqt.q.cpp.1228.example.0.safe": "라인 1: 함수의 라인수를 옵션에서 지정한 수 이하로 줄이거나 옵션을 수정합니다.",
  "rule.saqt.q.cpp.1228.name": "너무 긴 인라인 함수",
  "rule.saqt.q.cpp.1228.option.line_of_code.description": "최대 코드 라인수를 입력합니다.",
  "rule.saqt.q.cpp.1228.option.line_of_code.name": "최대 코드 라인수",
  "rule.saqt.q.cpp.1228.option.statements_count.description": "최대 문장 수를 입력합니다.",
  "rule.saqt.q.cpp.1228.option.statements_count.name": "최대 문장 수",
  "rule.saqt.q.cpp.1229.description": "인라인 멤버 함수 사용 체커는 인라인으로 선언된 클래스 메소드를 검출합니다.\n이 검출 조건은 클래스 선언부에서 메소드를 선언과 동시에 정의하는 케이스와 클래스 바깥에서 메소드를 정의하는 케이스 모두 적용됩니다.\ninline 키워드는 컴파일러에게 주는 힌트일 뿐이며 실제 인라인 여부는 컴파일러에 의해 결정됩니다. 또한 인라인은 성능 향상을 목적으로 사용하지만, 경우에 따라 오히려 성능이 감소할 수 있습니다. 클래스 선언부에서 멤버 함수를 구현할 경우 이는 inline 키워드의 여부와 관계 없이 인라인으로 처리될 수 있습니다. 즉, 메소드 정의 시 inline 키워드를 붙이는 것은 아무런 영향을 주지 못할 가능성이 높습니다.\n클래스 메소드 정의 시 inline 키워드를 사용하지 않습니다. 인라인으로 처리되길 원하는 메소드는 클래스 선언부에서 메소드 선언과 동시에 정의합니다.",
  "rule.saqt.q.cpp.1229.example.0.dangerous": "라인 3: inline 키워드를 사용하여 선언과 동시에 메소드를 정의했습니다.\n라인 4: inline 키워드를 사용하여 메소드를 선언했습니다.\n라인 6: inline 키워드를 사용하여 클래스 바깥에서 메소드를 정의했습니다.",
  "rule.saqt.q.cpp.1229.example.0.safe": "라인 3: 인라인으로 동작하길 원하는 메소드는 선언과 동시에 메소드를 정의하도록 합니다.",
  "rule.saqt.q.cpp.1229.name": "인라인 멤버 함수 사용",
  "rule.saqt.q.cpp.123.description": "하드코드된 인자 체커는 옵션에 지정된 함수를 호출할 때 특정 인자 위치에 하드코딩된 값을 사용하는 코드를 검출합니다.\n옵션에서 검출 대상 함수, 변수 및 하드코드 검사 인자 위치, 포함 및 제외 표현식, 인자의 자료형을 설정할 수 있습니다.\n하드코딩은 외부에 정보를 노출시키는 요소입니다. 비밀번호, 경로 등 보안에 중요한 요소를 하드코드로 작성하는 경우 보안에 중대한 취약점이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 하드코딩된 인자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.123.example.0.dangerous": "라인 3: strcpy() 함수를 호출할 때 두 번째 인자에 하드코딩된 값을 사용했습니다.",
  "rule.saqt.q.cpp.123.example.0.safe": "라인 3: strcpy() 함수를 호출할 때 두 번째 인자에 하드코딩된 값을 사용하지 않습니다.",
  "rule.saqt.q.cpp.123.name": "하드코드된 인자",
  "rule.saqt.q.cpp.123.option.excluded_expr.description": "제외할 표현식을 설정합니다.",
  "rule.saqt.q.cpp.123.option.excluded_expr.name": "제외 표현",
  "rule.saqt.q.cpp.123.option.param_target_character.description": "옵션을 사용하는 경우, char 인자를 검사합니다.",
  "rule.saqt.q.cpp.123.option.param_target_character.name": "char형 인자 검사",
  "rule.saqt.q.cpp.123.option.param_target_float.description": "옵션을 사용하는 경우, 부동 소수점값 인자를 검사합니다.",
  "rule.saqt.q.cpp.123.option.param_target_float.name": "부동 소수점 인자 검사",
  "rule.saqt.q.cpp.123.option.param_target_integer.description": "옵션을 사용하는 경우, 정수값 인자를 검사합니다.",
  "rule.saqt.q.cpp.123.option.param_target_integer.name": "정수 인자 검사",
  "rule.saqt.q.cpp.123.option.param_target_string.description": "옵션을 사용하는 경우, 문자열값 인자를 검사합니다.",
  "rule.saqt.q.cpp.123.option.param_target_string.name": "문자열 인자 검사",
  "rule.saqt.q.cpp.123.option.target_expr.description": "하드코드 표현식을 설정합니다.",
  "rule.saqt.q.cpp.123.option.target_expr.name": "하드코드 표현",
  "rule.saqt.q.cpp.123.option.target_func.description": "검사할 함수 호출을 설정합니다. (클래스::메서드|하드코딩 파라미터 인덱스)",
  "rule.saqt.q.cpp.123.option.target_func.name": "검사 대상 함수 호출",
  "rule.saqt.q.cpp.1231.description": "기본 타입에 대한 변환 연산자 체커는 클래스 내부에서 선언된 기본 타입의 변환 연산자를 검출합니다.\n변환 연산자란 클래스 객체를 특정 타입으로 변환할 때 사용하는 특수한 메소드입니다.\n변환 연산자는 프로그래머가 알지 못하는 곳에서 암시적으로 사용될 수 있습니다. 이로 인하여 찾기 힘든 문제가 발생할 수 있습니다.\n기본 타입의 변환 연산자를 선언하지 않도록 합니다. 기본 타입을 반환하는 일반적인 메소드를 선언하고 사용하는 것을 권장합니다.",
  "rule.saqt.q.cpp.1231.example.0.dangerous": "라인 3: 기본 타입 중 double에 대한 변환 연산자를 선언했습니다.",
  "rule.saqt.q.cpp.1231.example.0.safe": "라인 3: 기본 타입에 대한 변환 연산자를 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.1231.name": "기본 타입에 대한 변환 연산자",
  "rule.saqt.q.cpp.1232.description": "클래스 타입에 대한 변환 연산자 체커는 클래스 내부에서 선언된 다른 클래스 타입의 변환 연산자를 검출합니다.\n변환 연산자란 클래스 객체를 특정 타입으로 변환할 때 사용하는 특수한 메소드입니다.\n변환 연산자는 프로그래머가 알지 못하는 곳에서 암시적으로 사용될 수 있습니다. 이로 인하여 찾기 힘든 문제가 발생할 수 있습니다.\n다른 클래스 타입의 변환 연산자를 선언하지 않도록 합니다. 다른 클래스 타입을 반환하는 일반적인 메소드를 선언하고 사용하는 것을 권장합니다.",
  "rule.saqt.q.cpp.1232.example.0.dangerous": "라인 4: D클래스에서 C클래스 타입을 인자로 받는 생성자를 선언합니다.\n라인 9: D클래스 타입의 변환 연산자를 선언합니다.\n라인 13: 라인4의 생성자와 라인9의 변환 연산자 중에서 어떤 것을 사용할 지 모호성이 발생합니다.",
  "rule.saqt.q.cpp.1232.example.0.safe": "라인 7: 클래스 C에서 클래스 D를 위한 변환 연산자를 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.1232.name": "클래스 타입에 대한 변환 연산자",
  "rule.saqt.q.cpp.1233.description": "누락된 출력 연산자 체커는 ostream을 위한 출력 연산자를 제공하지 않은 클래스를 검출합니다.\n출력 연산자란 operator<<() 메소드를 의미합니다. 구체적으로 이 체커는 ostream의 참조형을 반환하고 friend 선언이 되어 있는 operator<<() 메소드가 정의되어 있는 지를 검사하며, 이 조건을 충족하지 못한 클래스를 검출합니다.\n클래스에서 출력 연산자가 구현되어 있을 경우 코드의 디버깅 및 테스팅에 유용합니다.\n모든 클래스에서 출력 연산자를 정의합니다.",
  "rule.saqt.q.cpp.1233.example.0.dangerous": "라인 1: Test 클래스에서 ostream을 위한 operator<<() 메소드를 제공하지 않았습니다.",
  "rule.saqt.q.cpp.1233.example.0.safe": "라인 4: ostream을 위한 operator<<() 메소드를 제공하도록 합니다.",
  "rule.saqt.q.cpp.1233.name": "누락된 출력 연산자",
  "rule.saqt.q.cpp.1234.description": "비 표준 인터페이스 체커는 최소한의 표준 인터페이스를 제공하지 않는 클래스를 검출합니다.\n최소한의 표준 인터페이스란 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 의미합니다. 구체적으로 이 체커는 위 4개의 메소드가 클래스에서 구현되어 있는지를 검사하며, 이 조건을 충족하지 못한 클래스를 검출합니다.\n컴파일러는 이와 같은 것들을 명시적으로 선언하지 않을 경우 자동적으로 해당 메소드들을 생성하여 제공합니다. 이렇게 자동으로 생성된 메소드들은 얕은 복사 문제 등을 일으킬 수 있습니다.\n모든 클래스에서 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 명시적으로 정의합니다.",
  "rule.saqt.q.cpp.1234.example.0.dangerous": "라인 1: Test 클래스에서 생성자 외의 나머지 함수들을 제공하지 않았습니다.",
  "rule.saqt.q.cpp.1234.example.0.safe": "라인 3: 빠져있던 복사 생성자를 제공하도록 합니다.\n라인 4: 빠져있던 복사 대입 연산자를 제공하도록 합니다.\n라인 5: 빠져있던 소멸자를 제공하도록 합니다.",
  "rule.saqt.q.cpp.1234.name": "비 표준 인터페이스",
  "rule.saqt.q.cpp.1235.description": "누락된 explicit 키워드 체커는 explicit 선언이 빠져있는 인자가 1개인 생성자를 검출합니다.\n인자가 1개인 생성자란 기본값을 가지고 있는 인자로 인해 인자가 1개인 생성자처럼 사용할 수 있는 모든 생성자를 의미합니다.\n인자가 1개인 생성자는 암시적인 타입 변환 시 사용될 수 있습니다. 이로 인해 개발자가 모르는 사이에 잘못된 변환이 일어날 수 있습니다. explicit 키워드를 사용하여 생성자를 선언할 경우 암시적으로 생성자가 호출되지는 않습니다.\n인자가 1개인 생성자는 반드시 explicit 키워드를 사용하여 선언합니다.",
  "rule.saqt.q.cpp.1235.example.0.dangerous": "라인 5: 인자가 1개인 생성자를 선언했습니다.\n라인 6: 기본 인자로 인해 인자가 1개인 생성자처럼 사용할 수 있는 생성자를 선언했습니다.\n라인 7: 기본 인자로 인해 인자가 1개인 생성자처럼 사용할 수 있는 생성자를 선언했습니다.",
  "rule.saqt.q.cpp.1235.example.0.safe": "라인 5: explicit 키워드를 사용하여 선언합니다.\n라인 6: explicit 키워드를 사용하여 선언합니다.\n라인 7: explicit 키워드를 사용하여 선언합니다.",
  "rule.saqt.q.cpp.1235.name": "누락된 explicit 키워드",
  "rule.saqt.q.cpp.1236.description": "비 public 파생 체커는 public 외의 방법으로 상속을 한 클래스를 검출합니다.\n클래스 간 상속 시 public 상속을 사용하는 것은 직관적으로 public 접근 권한을 가진 부모 클래스들의 가시성을 유지할 수 있습니다.\n클래스를 상속할 때는 항상 public 키워드로 상속합니다.",
  "rule.saqt.q.cpp.1236.example.0.dangerous": "라인 5: 클래스를 priviate 키워드로 상속했습니다.",
  "rule.saqt.q.cpp.1236.example.0.safe": "라인 5: 클래스를 public 키워드로 상속합니다.",
  "rule.saqt.q.cpp.1236.name": "비 public 파생",
  "rule.saqt.q.cpp.1237.description": "베이스 클래스의 비 가상 소멸자 체커는 소멸자를 가상으로 선언하지 않은 부모 클래스를 검출합니다.\n소멸자를 가상으로 선언하지 않으면 객체 소멸 시 슬라이스 현상(Slicing Problem)이 발생할 수 있습니다. 예를 들어 자식 클래스 객체를 부모 클래스의 포인터로 가지고 있다고 가정합니다. 이때 이 포인터로 소멸자를 호출할 경우, 부모 클래스의 소멸자만 호출되고 자식 클래스의 소멸자는 호출되지 않습니다. 이로 인해 자식 클래스의 필드 등은 제대로 소멸이 이루어지지 않습니다.\n부모 클래스의 소멸자를 가상으로 선언합니다.",
  "rule.saqt.q.cpp.1237.example.0.dangerous": "라인 12: 부모 클래스의 소멸자만 호출이 되고 자식 클래스의 소멸자는 호출되지 않습니다.",
  "rule.saqt.q.cpp.1237.example.0.safe": "라인 2: 부모 클래스의 소멸자를 가상으로 선언합니다.",
  "rule.saqt.q.cpp.1237.name": "베이스 클래스의 비 가상 소멸자",
  "rule.saqt.q.cpp.1238.description": "위험한 다운캐스팅 체커는 부모 클래스의 포인터를 자식 클래스로 다운캐스팅 한 수식을 검출합니다.\n다운 캐스팅이란 부모 클래스의 포인터를 자식 클래스로 캐스팅하는 것을 의미 합니다. 부모 클래스의 포인터로 자식 클래스의 객체를 담고 있을 때, 자식 클래스의 메소드를 호출하고 싶은 경우 다운 캐스팅을 사용하는 경우가 있습니다.\n상속 계층 구조를 만드는 가장 일반적인 이유는 부모 클래스에 대한 포인터가 전달되거나 저장될 때, 자식 클래스에서의 동작이 부모 클래스와 다른 메소드를 호출하는 것입니다. 이것은 가상 함수의 사용으로 달성할 수 있습니다. 또한 다운캐스팅을 사용하는 것보다 더 나은 방법입니다.\n다운캐스팅으로 자식 클래스의 함수를 호출하는 대신 가상 함수를 구현하여 사용합니다.",
  "rule.saqt.q.cpp.1238.example.0.dangerous": "라인 10: 부모 클래스의 포인터를 자식 클래스로 다운캐스팅하고 있습니다.",
  "rule.saqt.q.cpp.1238.example.0.safe": "라인 10: 상속의 원래 목적에 맞게 잘 설계된 가상 함수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1238.name": "위험한 다운캐스팅",
  "rule.saqt.q.cpp.1239.description": "가상 클래스로의 형변환 체커는 자식 클래스를 가상 부모 클래스로 캐스팅하는 수식을 검출합니다.\n자식 클래스는 부모 클래스를 상속할 때 virtual 키워드를 붙여 상속할 수 있습니다. 이 때 상속한 부모 클래스는 가상 부모 클래스가 됩니다.\n가상 부모 클래스로 캐스팅한 포인터는 후 다시 자식 클래스로 캐스팅할 수 없습니다.\n자식 클래스를 가상 부모 클래스로 캐스팅하는 것은 하지 않도록 합니다.",
  "rule.saqt.q.cpp.1239.example.0.dangerous": "라인 9: 가상 부모 클래스로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1239.example.0.safe": "라인 4: 부모 클래스 상속 시 가상 상속을 사용하지 않습니다. 만약 가상 상속이 필요할 경우, 캐스팅을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1239.name": "가상 클래스로의 형변환",
  "rule.saqt.q.cpp.124.description": "하드코드된 초기화 값 체커는 옵션에 지정된 변수를 초기화할 때 하드코딩된 값을 사용하는 코드를 검출합니다.\n옵션에서 분석 대상 수식, 분석 대상의 자료형, 분석 제외 대상 수식을 설정할 수 있습니다.\n하드코딩은 외부에 정보를 노출시키는 요소입니다. 비밀번호, 경로 등 보안에 중요한 요소를 하드코드로 작성하는 경우 보안에 중대한 취약점이 발생할 수 있습니다.\n옵션에 지정된 변수를 초기화할 때 하드코딩된 값을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.124.example.0.dangerous": "라인 2: str 변수를 초기화할 때 하드코딩된 값을 사용했습니다.",
  "rule.saqt.q.cpp.124.example.0.safe": "라인 2: str 변수를 초기화할 때 하드코딩된 값을 사용하지 않습니다.",
  "rule.saqt.q.cpp.124.name": "하드코드된 초기화 값",
  "rule.saqt.q.cpp.124.option.excluded_expr.description": "분석 제외 수식의 정규 표현식을 입력합니다.",
  "rule.saqt.q.cpp.124.option.excluded_expr.name": "분석 제외 수식",
  "rule.saqt.q.cpp.124.option.init_target_character.description": "문자형 초기화 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.124.option.init_target_character.name": "문자형 초기화 하드코딩 검사 여부",
  "rule.saqt.q.cpp.124.option.init_target_float.description": "부동소수점형 초기화 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.124.option.init_target_float.name": "부동소수점형 초기화 하드코딩 검사 여부",
  "rule.saqt.q.cpp.124.option.init_target_integer.description": "정수형 초기화 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.124.option.init_target_integer.name": "정수형 초기화 하드코딩 검사 여부",
  "rule.saqt.q.cpp.124.option.init_target_string.description": "문자열 초기화 하드코딩을 검사합니다.",
  "rule.saqt.q.cpp.124.option.init_target_string.name": "문자열 초기화 하드코딩 검사 여부",
  "rule.saqt.q.cpp.124.option.target_expr.description": "분석 대상 수식의 정규 표현식을 입력합니다.",
  "rule.saqt.q.cpp.124.option.target_expr.name": "분석 대상 수식",
  "rule.saqt.q.cpp.1240.description": "누락된 오버로딩된 함수의 오버라이딩 체커는 부모 클래스에서 오버로딩 된 가상 함수들을 1개라도 오버라이딩하는 것을 누락한 자식 클래스를 검출합니다.\n오버로딩은 동일한 함수명을 가졌으나 인자의 타입이나 개수가 다른 함수를 의미합니다. 오버라이딩은 부모 클래스에서 가상으로 선언한 메소드를 자식 클래스에서 다른 동작을 하는 메소드로 재정의하는 것을 의미합니다.\n오버로딩된 가상 함수들 중 일부만을 오버라이딩한다면 자식 클래스에서 나머지 오버로딩된 가상 함수들은 가려지게 되어 사용할 수 없습니다. 이로 인해 인자 값이 암시적으로 캐스팅되어 자식 클래스의 다른 오버로딩 함수를 호출하는 문제가 발생합니다. 이것은 대부분의 경우 프로그래머의 의도와 다르게 동작합니다.\n오버로딩 가상 함수들을 모두 오버라이딩합니다. 일반적인 가상 함수들은 동작에 따라 오버라이딩이 필요 없는 경우가 있습니다. 하지만 오버로딩 함수들은 만약 1개라도 오버라이딩했을 경우 반드시 모든 오버로딩 함수들을 오버라이딩하도록 합니다.",
  "rule.saqt.q.cpp.1240.example.0.dangerous": "라인 6: 부모 클래스의 function(double x) 메소드 오버라이딩이 누락되었습니다.\n라인 10: 프로그래머의 의도는 부모 클래스의 function(double x)를 호출하는 것이지만, 오버로딩된 함수가 모두 오버라이드되기 않았기 때문에 이름이 가려지게 되어 자식 클래스의 function(short x)를 호출했습니다.",
  "rule.saqt.q.cpp.1240.example.0.safe": "라인 6: 오버로딩된 가상 함수를 모두 오버라이드합니다.\n라인 11: 자식 클래스의 function(double x) 메소드를 호출합니다.",
  "rule.saqt.q.cpp.1240.name": "누락된 오버로딩된 함수의 오버라이딩",
  "rule.saqt.q.cpp.1241.description": "너무 많은 파라미터 체커는 일정 이상으로 라인 수가 많거나 매개 변수가 여러 개인 함수를 검출합니다.\n함수의 매개 변수가 너무 여러 개거나 코드가 지나치게 길면 함수의 동작을 이해하기 어려워지고 코드의 유지보수도 어려워집니다.\n지정된 수 이내의 매개 변수를 사용하고 지정된 길이 이내로 함수를 작성합니다. 너무 긴 함수는 적당한 길이의 짧은 함수 여러 개로 쪼개거나 리팩토링을 통해 길이를 줄여야 합니다.",
  "rule.saqt.q.cpp.1241.example.0.dangerous": "라인 1: 기본 옵션에 따르면 함수의 매개 변수는 최대 6개까지 사용할 수 있습니다. 이 함수의 매개 변수는 7개로 선언되었습니다.",
  "rule.saqt.q.cpp.1241.example.0.safe": "라인 1: 지정된 최댓값 이내의 매개 변수만 사용합니다.",
  "rule.saqt.q.cpp.1241.name": "너무 많은 파라미터",
  "rule.saqt.q.cpp.1241.option.max_loc_count.description": "최대 라인 수를 입력합니다.",
  "rule.saqt.q.cpp.1241.option.max_loc_count.name": "최대 라인 수",
  "rule.saqt.q.cpp.1241.option.max_param_count.description": "최대 파라미터 수를 입력합니다.",
  "rule.saqt.q.cpp.1241.option.max_param_count.name": "최대 파라미터 수",
  "rule.saqt.q.cpp.1242.description": "여러 번 변경된 반복문 인덱스 체커는 반복문 내에서 반복 제어 변수를 두 번 이상 변경하는 경우를 검출합니다.\n반복 제어 변수를 반복문 안의 여러 군데에서 변경하면 반복문의 동작을 이해하기가 어려워집니다.\n반복 제어 변수는 반복문의 다만 한 군데에서만 변경하도록 합니다.",
  "rule.saqt.q.cpp.1242.example.0.dangerous": "라인 2: 반복 제어 변수 i가 for 구문의 다음 단계 계산식에서 변경됩니다.\n라인 4: 반복 제어 변수 i가 for 구문의 본체 내부에서 한 번 더 변경됩니다.",
  "rule.saqt.q.cpp.1242.example.0.safe": "라인 2: 반복 제어 변수 i를 한 군데에서만 변경되도록 수정했습니다.",
  "rule.saqt.q.cpp.1242.name": "여러 번 변경된 반복문 인덱스",
  "rule.saqt.q.cpp.1243.description": "변할 수 있는 반복문 조건 체커는 for 구문의 반복 횟수에 관한 조건을 계산할 때 상수가 아닌 복잡한 식을 사용한 경우를 검출합니다.\nfor 구문의 반복 종료 조건식은 한 번의 반복이 끝날때마다 매번 새로 계산됩니다. 따라서 이 조건식에 상수가 아닌 복잡한 식을 사용하면 식을 계산하는 데 걸리는 시간에 비례하여 반복문 실행의 성능이 떨어질 수 있습니다.\n반복문의 반복 횟수를 제어하는 식은 최대한 미리 계산해둔 상수 변수를 사용합니다.",
  "rule.saqt.q.cpp.1243.example.0.dangerous": "라인 2: 반복 조건식 부분에서 value.getSize() 수식을 사용했습니다. 만약 getSize() 함수가 계산에 오래 걸리는 함수라면 반복문의 성능이 떨어지게 됩니다.",
  "rule.saqt.q.cpp.1243.example.0.safe": "라인 1: 반복 횟수를 제어하는 값을 반복문 실행 전에 미리 계산해둡니다.",
  "rule.saqt.q.cpp.1243.name": "변할 수 있는 반복문 조건",
  "rule.saqt.q.cpp.1243.option.allow_divide.description": "옵션을 사용하는 경우, for 문의 루프 종결 식에서 `/` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.cpp.1243.option.allow_divide.name": "/ 연산자 허용",
  "rule.saqt.q.cpp.1243.option.allow_minus.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `-` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.cpp.1243.option.allow_minus.name": "- 연산자 허용",
  "rule.saqt.q.cpp.1243.option.allow_multiply.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `*` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.cpp.1243.option.allow_multiply.name": "* 연산자 허용",
  "rule.saqt.q.cpp.1243.option.allow_plus.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `+` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.cpp.1243.option.allow_plus.name": "+ 연산자 허용",
  "rule.saqt.q.cpp.1243.option.allow_remainder.description": "옵션을 사용하는 경우 for 문의 루프 종결 식에서 `%` 연산자를 사용하도록 허용합니다.",
  "rule.saqt.q.cpp.1243.option.allow_remainder.name": "% 연산자 허용",
  "rule.saqt.q.cpp.1244.description": "여러 개의 진입 및 탈출 지점 체커는 switch 구문을 제외한 복합 구문에 진입 및 탈출 지점이 각기 한 개를 초과하는 경우를 검출합니다.\n예외 처리에 의한 탈출은 제외합니다.\n진입 및 탈출 지점을 1개로 제한하면 복합 구문의 제어 그래프가 단순해지고 코드 전체의 복잡도를 줄일 수 있습니다.\n복합 구문의 진입 및 탈출 지점을 1개로 줄입니다.",
  "rule.saqt.q.cpp.1244.example.0.dangerous": "라인 4: break 구문에 의해 for 구문의 탈출 지점이 2개가 되었습니다.\n라인 8: 레이블 및 goto 구문으로 인해 while 구문의 진입 지점이 2개가 되었습니다.",
  "rule.saqt.q.cpp.1244.example.0.safe": "라인 2: 복합 구문의 진입 및 탈출 지점을 각기 하나로 유지하도록 합니다.",
  "rule.saqt.q.cpp.1244.name": "여러 개의 진입 및 탈출 지점",
  "rule.saqt.q.cpp.1245.description": "부적절한 switch 구문 체커는 모든 경우에 대한 명시적인 케이스문을 추가하지 않고 일부 경우를 작성하지 않은 경우를 검출합니다.\n모든 경우에 대한 명시적인 케이스문을 추가하여야 합니다. 모든 경우를 고려할 경우 예상하지 못한 값으로 인한 위험을 줄일 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n모든 경우를 명시적으로 작성해야 합니다.",
  "rule.saqt.q.cpp.1245.example.0.dangerous": "라인 5: 연속적이지 않은 숫자의 case 문이 작성되었습니다.",
  "rule.saqt.q.cpp.1245.example.0.safe": "라인 11: switch 문에 default 문을 추가하도록 합니다.",
  "rule.saqt.q.cpp.1245.name": "부적절한 switch 구문",
  "rule.saqt.q.cpp.1246.description": "for 구문 내에서의 부적절한 변수 선언 체커는 루프 제어 변수를 for 문에서 선언하지 않고 기존 변수를 사용한 경우를 검출합니다.\n루프 제어 변수는 기존의 변수를 사용하는 대신 for 문장에서 선언하도록 합니다. 이와 같은 방법을 사용하는 가장 큰 장점은 자동적으로 루프 제어 변수의 범위가 루프 범위 안으로 한정된다는 점입니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n루프 제어 변수를 for 문에서 선언하도록 합니다.",
  "rule.saqt.q.cpp.1246.example.0.dangerous": "라인 2: 루프 제어변수를 for 문 외부에서 선언된 idx를 사용했습니다.",
  "rule.saqt.q.cpp.1246.example.0.safe": "라인 2: 루프 제어변수를 for 문에서 선언한 i로 사용합니다.",
  "rule.saqt.q.cpp.1246.name": "for 구문 내에서의 부적절한 변수 선언",
  "rule.saqt.q.cpp.1247.description": "누락된 정수 상수 접미사 체커는 상수값에 대문자 접미사를 명시하지 않은 경우를 검출합니다.\nlong 상수에 접미사 L을, unsigned int 상수에 접미사 U를, unsigned long 상수에 접미사 UL을 사용하도록 합니다. 각각의 상수값에는 대문자로 접미사를 명시하는 것이 좋습니다.\n정수형 상수값에는 각 상수값에 맞는 접미사를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1247.example.0.dangerous": "라인 2: 접미사 U를 붙이지 않았습니다.\n접미사 UL을 붙이지 않았습니다.\n접미사 L을 붙이지 않았습니다.",
  "rule.saqt.q.cpp.1247.example.0.safe": "라인 2: 각각 접미사 U, UL, L을 붙이도록 합니다.",
  "rule.saqt.q.cpp.1247.name": "누락된 정수 상수 접미사",
  "rule.saqt.q.cpp.1247.option.ignore_one.description": "상수값 1에 대해서 검사하지 않도록 합니다.",
  "rule.saqt.q.cpp.1247.option.ignore_one.name": "상수값 1 무시",
  "rule.saqt.q.cpp.1247.option.ignore_zero.description": "상수값 0에 대해서 검사하지 않도록 합니다.",
  "rule.saqt.q.cpp.1247.option.ignore_zero.name": "상수값 0 무시",
  "rule.saqt.q.cpp.1248.description": "누락된 부동 소수점 상수 접미사 체커는 float 상수에 접미사 F을, long double 상수에 접미사 L을 사용하지 않은 경우를 검출합니다.\nfloat 상수에 접미사 F을, long double 상수에 접미사 L을 사용하도록 합니다. 각각의 상수값에는 대문자로 접미사를 명시하는 것이 좋습니다.\nfloat 타입 상수값에는 각 상수값에 맞는 접미사를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1248.example.0.dangerous": "라인 2: 접미사 F를 붙이지 않았습니다.\n접미사 L을 붙이지 않았습니다.",
  "rule.saqt.q.cpp.1248.example.0.safe": "라인 2: 각각 접미사 F, L을 붙이도록 합니다.",
  "rule.saqt.q.cpp.1248.name": "누락된 부동 소수점 상수 접미사",
  "rule.saqt.q.cpp.1249.description": "비 const 전역 및 정적 변수 체커는 전역 변수나 정적 변수가 const로 선언되어 있지 않은 경우를 검출합니다.\n전역 변수나 정적 변수는 const로 선언하는 것이 좋습니다. 상수가 아닌 전역 변수나 정적 변수를 사용하는 함수는 재진입하는데 문제가 있으며 이것은 재귀 및 멀티 스레딩에서 문제가 발생합니다. 또한, 전역 변수는 자주 유지보수와 관련하여 문제가 발생할 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n전역 변수나 정적 변수는 const로 선언합니다.",
  "rule.saqt.q.cpp.1249.example.0.dangerous": "라인 1: 전역 변수를 사용했습니다.",
  "rule.saqt.q.cpp.1249.example.0.safe": "라인 1: 각각의 변수를 const로 선언합니다. 만약 값이 수정될 수 있는 정적 변수나 전역 변수가 필요한 경우 싱글톤 패턴(Singleton Pattern) 등을 고려합니다.",
  "rule.saqt.q.cpp.1249.name": "비 const 전역 및 정적 변수",
  "rule.saqt.q.cpp.125.description": "인자로 금지된 숫자 사용 체커는 옵션에 지정된 특정 함수를 호출할 때 특정 인자 위치에 숫자를 사용하는 코드를 검출합니다.\n옵션에서 분석 대상 함수, 사용 금지된 숫자 위치와 값을 설정할 수 있습니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n옵션에 지정된 함수를 호출할 때 특정 위치의 인자에 숫자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.125.example.0.dangerous": "라인 3: LB_call_WA() 함수의 세 번째 인자가 숫자이므로 검출됩니다.",
  "rule.saqt.q.cpp.125.example.0.safe": "라인 3: LB_call_WA() 함수의 세 번째 인자가 숫자 대신 strlen() 함수를 사용합니다.",
  "rule.saqt.q.cpp.125.name": "인자로 금지된 숫자 사용",
  "rule.saqt.q.cpp.125.option.call_param_should_not_be_deciaml.description": "숫자를 사용하지 말아야하는 functin parameter name/숫자/문자열/call",
  "rule.saqt.q.cpp.125.option.call_param_should_not_be_deciaml.name": "숫자를 사용하지 말아야 할 인자",
  "rule.saqt.q.cpp.125.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.saqt.q.cpp.125.option.call_target.name": "호출 대상 함수",
  "rule.saqt.q.cpp.1250.description": "부동 소수점 타입에서 정수 타입으로 형변환 체커는 표준 라이브러리를 사용하지 않고 실수형 타입을 정수형 타입으로 캐스팅하는 경우를 검출합니다.\n표준 라이브러리를 사용하지 않고 실수형 타입을 정수형 타입으로 캐스팅하지 않도록 합니다. 산술 정밀도가 혼합된 식을 계산하는 것은 정의되지 않은 동작입니다. 단, 다음과 같은 변환 함수의 경우 개발자의 의도를 명확히 할 수 있으며 안전하다고 판단합니다. 관련 함수는 ceil(), floor(), round() 이며 각각 소수점 이하를 올림, 버림, 반올림합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n실수형을 정수형으로 변환하는 경우 표준 라이브러리를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1250.example.0.dangerous": "라인 3: 실수형 변수를 정수형 변수로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1250.example.0.safe": "라인 6: 실수형 타입을 정수형 타입으로 캐스팅하지 않거나, 예시와 같이 특정 변환 함수를 사용합니다. 여기서 floor()의 경우 소수점 이하를 버립니다.",
  "rule.saqt.q.cpp.1250.name": "부동 소수점 타입에서 정수 타입으로 형변환",
  "rule.saqt.q.cpp.1251.description": "암시적 인자 형변환 체커는 함수를 호출할 때 인자값을 암시적으로 변환해야 하는 경우를 검출합니다.\n함수를 호출할 때 인자값을 암시적으로 변환해야 하는 코드를 작성하지 않도록 합니다. 사용자 정의 타입을 암시적으로 변환하면 임시 객체를 생성하고 소멸시킵니다. 이것은 매우 비효율적이며, 종종 예상하지 않은 부작용을 만들어 냅니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n함수를 호출할 때 인자값을 암시적으로 변환해야 하는 코드를 작성하지 않도록 합니다.",
  "rule.saqt.q.cpp.1251.example.0.dangerous": "라인 6: std:string 타입을 암시적으로 변환하게 됩니다.",
  "rule.saqt.q.cpp.1251.example.0.safe": "라인 7: 암시적으로 변환하지 않도록 합니다.",
  "rule.saqt.q.cpp.1251.name": "암시적 인자 형변환",
  "rule.saqt.q.cpp.1251.option.allow_primitive_type.description": "선택할 경우 기본 타입의 암시적 변환을 허용합니다.",
  "rule.saqt.q.cpp.1251.option.allow_primitive_type.name": "기본 타입의 암시적 변환 허용",
  "rule.saqt.q.cpp.1251.option.allow_string_conversion.description": "옵션을 사용하는 경우 문자열을 string 객체와 같은 문자열 클래스로 암시적으로 변환하도록 허용합니다.",
  "rule.saqt.q.cpp.1251.option.allow_string_conversion.name": "문자열의 암시적 변환 허용",
  "rule.saqt.q.cpp.1251.option.allow_wrapping_class.description": "옵션을 사용하는 경우, 구조체를 래핑한 클래스의 암시적 변환을 허용합니다. MFC와 같은 몇몇 라이브러리들이 이에 해당됩니다.",
  "rule.saqt.q.cpp.1251.option.allow_wrapping_class.name": "구조체를 래핑한 클래스의 암시적 변환 허용",
  "rule.saqt.q.cpp.1255.description": "전역 변수 사용 체커는 전역 변수를 사용한 경우를 검출합니다.\n전역 변수는 클래스나 이름이 없는 네임스페이스, 함수 밖에서 선언된 것이며 외부 링크를 가집니다. 이것은 어떤 객체도 직접적으로 해당 변수에 접근하고 수정할 수 있게 되며, 이러 인해 문제가 발생할 수 있습니다. 만약 전역적으로 사용할 필요가 있는 데이터가 있는 경우 싱글턴 패턴(Singleton Pattern)의 사용을 고려합니다.\n전역 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1255.example.0.dangerous": "라인 1: 전역 변수를 사용했습니다.",
  "rule.saqt.q.cpp.1255.example.0.safe": "라인 1: 전역 데이터를 관리하는 싱글톤 클래스를 사용합니다.",
  "rule.saqt.q.cpp.1255.name": "전역 변수 사용",
  "rule.saqt.q.cpp.1256.description": "using 지시자 사용 체커는 명시적인 네임스페이스 한정자를 쓰거나, using 선언을 사용하지 않고 using 지시자를 사용한 경우를 검출합니다.\nusing 지시문은 이름 조회 중에 검색된 범위 집합에 추가 범위를 추가합니다. 이러한 범위의 모든 식별자가 표시되므로 컴파일러에서 찾은 식별자가 개발자의 예상과 다를 가능성이 커집니다. using-declarations 또는 fully qualified names는 명시적으로 지정된 이름으로 간주되는 이름 집합으로 제한하므로 더 안전한 옵션입니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nusing 지시자 대신 명시적인 네임스페이스 한정자를 사용하거나 using 선언을 사용합니다.",
  "rule.saqt.q.cpp.1256.example.0.dangerous": "라인 3: using 지시자를 사용했습니다.",
  "rule.saqt.q.cpp.1256.example.0.safe": "라인 3: using 선언을 사용합니다.",
  "rule.saqt.q.cpp.1256.name": "using 지시자 사용",
  "rule.saqt.q.cpp.1257.description": "포함 구문 전 using 구문 체커는 using 지시자가 메인 소스 파일에서, 모든 #include 이후에 있지 않은 경우를 검출합니다.\nusing 지시자는 메인 소스 파일에서, 모든 #include 이후에 있어야 합니다. 예를 들어 #include 사이에 using 지시자를 사용하게 될 경우, 포함한 헤더 파일 사이에서 이름 충돌의 가능성이 생기게 됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nusing 지시자를 메인 소스 파일의 모든 #include 이후에 작성합니다.",
  "rule.saqt.q.cpp.1257.example.0.dangerous": "라인 3: #include 사이에서 using 지시자를 사용했습니다.",
  "rule.saqt.q.cpp.1257.example.0.safe": "라인 4: 메인 소스 파일에서, 모든 헤더 파일의 포함이 끝난 후using 지시자를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1257.name": "포함 구문 전 using 구문",
  "rule.saqt.q.cpp.1258.description": "네임스페이스 안에서 정적 객체 선언 체커는 이름을 가진 네임스페이스에서 정적으로 선언한 객체를 검출합니다.\n네임스페이스 안에서 객체 선언를 선언할 때 정적 키워드를 사용하는 것은 C++ 표준에서 제외되었습니다.\n이름이 없는 네임스페이스를 사용하여 정적 객체를 선언합니다.",
  "rule.saqt.q.cpp.1258.example.0.dangerous": "라인 2: 이름이 있는 네임스페이스에서 정적 객체를 선언했습니다.",
  "rule.saqt.q.cpp.1258.example.0.safe": "라인 2: 이름이 없는 네임스페이스에서 정적 객체를 선언합니다.",
  "rule.saqt.q.cpp.1258.name": "네임스페이스 안에서 정적 객체 선언",
  "rule.saqt.q.cpp.1259.description": "extern 사용 체커는 extern 키워드를 사용한 경우를 검출합니다.\nextern 키워드의 사용을 제한합니다. 암시적으로 이미 외부 링크를 가질 때, extern 키워드를 사용하지 않습니다.\nextern 키워드를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1259.example.0.dangerous": "라인 1: 이미 extern인 함수에서 extern 키워드를 사용했습니다.",
  "rule.saqt.q.cpp.1259.example.0.safe": "라인 1: extern을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1259.name": "extern 사용",
  "rule.saqt.q.cpp.126.description": "헤더 파일 내 정적 지정자 사용 체커는 헤더 파일에서 함수 또는 변수 속성으로 정적 한정자를 사용하는 코드를 검출합니다.\n옵션에서 정적 함수 사용 가능 여부, 정적 변수 사용 가능 여부를 설정할 수 있습니다.\n헤더 파일에 정적 함수나 정적 변수가 포함되면 헤더 파일 안에서 정의가 이루어질 것입니다. 이 경우에 해당 함수나 변수를 사용하려면 추적하기가 어렵고, 충돌의 가능성이 있으므로 오류를 발생시키는 원인이 될 수 있습니다.\n헤더 파일에서 정적 한정자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.126.example.0.dangerous": "라인 2: 변수 a를 static으로 선언했습니다.",
  "rule.saqt.q.cpp.126.example.0.safe": "라인 2: 헤더 파일에서 static 변수나 함수를 선언하지 않습니다.",
  "rule.saqt.q.cpp.126.name": "헤더 파일 내 정적 지정자 사용",
  "rule.saqt.q.cpp.126.option.ignore_function.description": "헤더 파일에서 정적 함수 사용을 허용합니다.",
  "rule.saqt.q.cpp.126.option.ignore_function.name": "정적 함수 사용 가능 여부",
  "rule.saqt.q.cpp.126.option.ignore_variable.description": "헤더 파일에서 정적 변수 사용을 허용합니다.",
  "rule.saqt.q.cpp.126.option.ignore_variable.name": "정적 변수 사용 가능 여부",
  "rule.saqt.q.cpp.1260.description": "auto 키워드 사용 체커는 auto 키워드를 사용한 경우를 검출합니다.\nauto 키워드를 사용하지 않도록 합니다. auto 키워드는 변수 선언에 사용할 경우 스택에 메모리를 할당한다는 의미입니다. 또한 아무것도 표시하지 않은 변수는 auto와 같은 의미를 가집니다. auto나 register 키워드를 사용하여 프로그래머가 메모리 할당을 조정하는 것보다 현대적인 컴파일러에게 맡겨두는 것이 더 났습니다. 이와 별개로, C++11 표준에서 auto 키워드는 자동으로 변수의 타입을 추론하는데 사용됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nauto 키워드를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1260.example.0.dangerous": "라인 1: auto 키워드를 사용했습니다.",
  "rule.saqt.q.cpp.1260.example.0.safe": "라인 1: auto 키워드를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1260.name": "auto 키워드 사용",
  "rule.saqt.q.cpp.1261.description": "register 키워드 사용 체커는 register 키워드를 사용한 경우를 검출합니다.\nregister 키워드를 사용하지 않도록 합니다. register 키워드는 가능할 경우, 변수를 프로세서의 레지스터에 적재시키도록 하는 힌트입니다. auto나 register 키워드를 사용하여 프로그래머가 메모리 할당을 조정하는 것보다 현대적인 컴파일러에게 맡겨두는 것이 더 낫습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nregister 키워드를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1261.example.0.dangerous": "라인 1: register 키워드를 사용했습니다.",
  "rule.saqt.q.cpp.1261.example.0.safe": "라인 1: register 키워드를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1261.name": "register 키워드 사용",
  "rule.saqt.q.cpp.1268.description": "누락된 const 한정자 체커는 포인터 매개변수를 선언할 때 const를 사용할 수 있는 곳에 const를 사용하지 않은 경우를 검출합니다.\n포인터 타입 매개변수를 선언할 때 가능하면 const를 사용하도록 합니다. const를 사용함으로써 포인터 파라미터의 값이 변경되지 않도록 보장하므로 함수 인터페이스를 더 견고하게 만들 수 있습니다.\n포인터 타입 매개변수를 선언할 때 내부에서 값을 변경하지 않는다면 const로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1268.example.0.dangerous": "라인 1: 변수 'p'를 const로 선언할 수 있음에도 const로 선언하지 않았습니다.",
  "rule.saqt.q.cpp.1268.example.0.safe": "라인 3: 변수 'p'를 const로 선언합니다.",
  "rule.saqt.q.cpp.1268.name": "누락된 const 한정자",
  "rule.saqt.q.cpp.1271.description": "대입 연산 결과 사용 체커는 대입 연산자의 결과값을 다른 식의 일부로 사용하는 경우를 검출합니다.\n항상 대입 연산자의 결과를 직접적으로 사용하지 않도록 합니다. 할당 연산자는 자주 비교 연산자와 혼동됩니다. 예를들어 조건식에서 대입 연산을 사용한 후 비교 연산을 수행하는 것은 혼란을 주게 됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n대입 연산자의 결과를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1271.example.0.dangerous": "라인 1: i를 j에 대입하는 연산을 수행한 후 그 결과를 1과 비교하는데 사용했습니다.",
  "rule.saqt.q.cpp.1271.example.0.safe": "라인 1: 대입연산자의 결과를 직접적으로 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1271.name": "대입 연산 결과 사용",
  "rule.saqt.q.cpp.1271.option.check_return.description": "리턴문에서 대입연산을 사용했을 경우를 검출합니다.",
  "rule.saqt.q.cpp.1271.option.check_return.name": "리턴문 검사",
  "rule.saqt.q.cpp.1273.description": "혼합된 부호가 있는 데이터 및 부호가 없는 데이터 체커는 수식에서 부호를 혼용하는 경우를 검출합니다.\n수식에서 부호를 혼용하지 않도록 합니다. 부호를 혼용하면 잘못된 계산으로 인한 문제가 발생할 수 있습니다.\n부호를 혼용하면 잘못된 계산으로 인한 문제가 발생할 수 있습니다.\n수식에서 부호를 혼용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1273.example.0.dangerous": "라인 3: 부호를 혼용했습니다. 실제 x의 값은 의도된 바와 다르게 계산됩니다.",
  "rule.saqt.q.cpp.1273.example.0.safe": "라인 3: 수식에서 부호를 혼용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1273.name": "혼합된 부호가 있는 데이터 및 부호가 없는 데이터",
  "rule.saqt.q.cpp.1273.option.allow_constant.description": "옵션을 사용하는 경우, 상수의 접미사와 관계 없이 unsigned 및 signed 타입의 변수에 대해 연산할 수 있도록 허용합니다.",
  "rule.saqt.q.cpp.1273.option.allow_constant.name": "상수를 모든 타입에 대해 연산할 수 있도록 허용",
  "rule.saqt.q.cpp.1273.option.ignore_assign.description": "옵션을 사용하는 경우, 대입 연산자의 좌측항을 검사하지 않습니다.",
  "rule.saqt.q.cpp.1273.option.ignore_assign.name": "대입 연산자를 검출 대상에서 제외합니다.",
  "rule.saqt.q.cpp.1274.description": "혼합된 산술 정밀도 체커는 수식에서 산술 정밀도를 혼용하는 경우를 검출합니다.\n산술 정밀도를 혼용하기 위해 명시적인 캐스팅을 수행하고 항상 주의를 기울여야 합니다.\n산술 정밀도를 혼용하면 잘못된 계산으로 인한 문제가 발생할 수 있습니다.\n수식에서 산술 정밀도를 혼용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1274.example.0.dangerous": "라인 2: 산술 정밀도를 혼용했습니다.",
  "rule.saqt.q.cpp.1274.example.0.safe": "라인 2: 산술 정밀도를 혼용하지 않거나, 명시적인 캐스팅을 수행하여 의도된 바를 명확히 하도록 합니다.",
  "rule.saqt.q.cpp.1274.name": "혼합된 산술 정밀도",
  "rule.saqt.q.cpp.1276.description": "값으로 전달 체커는 클래스 타입의 인자가 값이나 포인터로 되어 있는 함수 선언을 검출합니다.\n함수 선언에서 클래스 타입의 인자는 원본, 포인터, 참조가 올 수 있습니다. 첫 번째는 클래스 객체를 복사하여 값으로 전달합니다. 두 번째는 클래스 객체의 주소 값을 전달합니다. 세 번째는 클래스 객체의 주소 값을 전달하되, 함수 내부에서 사용할 때는 복사하여 전달했을 때와 동일한 방법으로 사용할 수 있습니다.\n클래스 타입 객체를 참조 이외의 방법으로 함수 인자로 전달 하는 경우 다음과 같은 문제가 있습니다. 객체를 값으로 전달하는 경우, 복사 생성자가 호출되어 오버헤드가 발생합니다. 객체를 포인터로 전달하는 경우, 널 포인터 전달에 의해 런타임 오류가 발생할 수 있습니다. 따라서 클래스 타입은 참조 값으로 전달하는 것이 가장 좋습니다. 하지만 만약 전달하는 객체가 빈 객체일 수 있습니다. 이 경우 함수 선언에서 클래스 타입의 인자를 포인터로 선언합니다.\n함수 선언 시 인자 타입이 클래스인 경우에는 참조로 선언합니다. 이렇게 선언하면 후 함수 호출 시에 클래스 타입 객체를 참조로 전달할 수 있습니다.",
  "rule.saqt.q.cpp.1276.example.0.dangerous": "라인 4: 클래스 타입 인자를 포인터형으로 선언했습니다.",
  "rule.saqt.q.cpp.1276.example.0.safe": "라인 4: 클래스 타입 인자를 참조형으로 선언합니다.",
  "rule.saqt.q.cpp.1276.name": "값으로 전달",
  "rule.saqt.q.cpp.1277.description": "오버로딩된 숫자 및 포인터 타입 체커는 오버로딩 함수들의 인자 타입이 포인터와 숫자같이 서로 모호한 함수를 검출합니다.\n이와 같이 오버로딩된 함수에 숫자 인자 값을 전달할 경우 모호함이 발생하게 됩니다. 포인터와 숫자의 경우 값이 0인 경우 어떤 함수가 호출될 지 알 수 없습니다.\n오버로딩 함수들의 인자 타입이 서로 모호한 경우 서로를 구분할 수 있도록 다른 이름을 지어주거나 인자 개수를 다르게 합니다.",
  "rule.saqt.q.cpp.1277.example.0.dangerous": "라인 1: function(int v) 함수를 선언했습니다.\n라인 4: function(void* pv) 함수를 선언했습니다. function() 함수는 오버로딩 되었으며, 두 함수는 첫 번째 인자 타입으로 인해 모호함이 발생 했습니다.",
  "rule.saqt.q.cpp.1277.example.0.safe": "라인 4: 인자 개수를 다르게 하여 모호함을 제거합니다.",
  "rule.saqt.q.cpp.1277.name": "오버로딩된 숫자 및 포인터 타입",
  "rule.saqt.q.cpp.1278.description": "오버로딩된 함수에 대해 기본 인자 사용 체커는 오버로딩으로 정의된 함수에 기본 인자 값이 사용된 경우를 검출합니다.\n오버로딩된 함수들에서 기본 인자 값을 사용하지 않도록 합니다. 만약 오버로딩된 함수에서 기본 인자 값을 사용할 경우 함수 호출 시 모호성이 발생할 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n오버로딩된 함수에서 기본 인자 값을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1278.example.0.dangerous": "라인 6: 함수 호출 시 모호성이 발생합니다.",
  "rule.saqt.q.cpp.1278.example.0.safe": "라인 2: 기본 인자 값을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1278.name": "오버로딩된 함수에 대해 기본 인자 사용",
  "rule.saqt.q.cpp.128.description": "배열에 대해 사용자 정의 타입의 미사용 체커는 변수 또는 함수를 재정의된 자료형이 아닌 배열 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 배열 선언에서 Typedef로 재정의된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 배열 타입, 멤버 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n배열 자료형을 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.128.example.0.dangerous": "라인 1: 선언된 전역 배열 변수 a의 타입이 기본 배열 타입입니다.",
  "rule.saqt.q.cpp.128.example.0.safe": "라인 2: 배열 타입을 재정의된 타입으로 선언합니다.",
  "rule.saqt.q.cpp.128.name": "배열에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.cpp.128.option.allowed_array_type.description": "허용되는 배열 타입을 설정합니다.",
  "rule.saqt.q.cpp.128.option.allowed_array_type.name": "허용되는 배열 타입",
  "rule.saqt.q.cpp.128.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.128.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.cpp.128.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.128.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.1280.description": "해제 후 초기화 되지 않은 포인터 체커는 메모리 해제 후 포인터를 0으로 설정하지 않는 경우를 검출합니다.\n메모리 해제 후 항상 포인터를 0으로 설정합니다. 이후 해당 변수를 다시 사용할 때, 유효하지 않은 메모리를 참조하는 실수를 방지할 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n메모리 해제 후 항상 포인터를 0으로 설정합니다.",
  "rule.saqt.q.cpp.1280.example.0.dangerous": "라인 4: delete후 해당 변수를 0으로 세팅하지 않았습니다.",
  "rule.saqt.q.cpp.1280.example.0.safe": "라인 5: delete 한 포인터 변수를 0으로 셋팅 합니다.",
  "rule.saqt.q.cpp.1280.name": "해제 후 초기화 되지 않은 포인터",
  "rule.saqt.q.cpp.1284.description": "매크로 내 주석 체커는 매크로 정의 중간에 주석이 포함된 경우를 검출합니다.\n컴파일러가 매크로를 다루는 방법에 따라서 문제가 발생할 수 있습니다.\n매크로에 주석을 포함하지 않도록 합니다.",
  "rule.saqt.q.cpp.1284.example.0.dangerous": "라인 1: 매크로에서 주석을 사용했습니다.",
  "rule.saqt.q.cpp.1284.example.0.safe": "라인 1: 매크로에서 주석을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1284.name": "매크로 내 주석",
  "rule.saqt.q.cpp.1285.description": "소스 코드 마지막의 비어있지 않은 줄 체커는 소스 코드가 포함된 모든 파일의 마지막 줄이 빈 줄이 아닌 경우를 검출합니다.\n표준에 의하면 소스 파일의 마지막 줄은 항상 빈 줄이어야 합니다.\n소스 코드가 포함된 모든 파일의 마지막 줄은 빈 줄로 작성합니다.",
  "rule.saqt.q.cpp.1285.example.0.dangerous": "라인 3: 마지막 줄이 빈 줄이 아닙니다.",
  "rule.saqt.q.cpp.1285.example.0.safe": "라인 4: 마지막 줄을 빈 줄로 합니다.",
  "rule.saqt.q.cpp.1285.name": "소스 코드 마지막의 비어있지 않은 줄",
  "rule.saqt.q.cpp.1287.description": "포함 파일 이름에 사용된 대문자 체커는 #include 지시자에서 파일 이름에 대문자가 포함된 경우를 검출합니다.\n이 규칙은 대소 문자를 구분하는 파일 시스템과 구분하지 않은 파일 시스템 간의 호환성을 위한 규칙입니다.\n#include 지시자에서 파일 이름에 대문자를 포함하지 않도록 합니다.",
  "rule.saqt.q.cpp.1287.example.0.dangerous": "라인 1: 대문자와 소문자를 혼합된 파일 이름을 참조했습니다.",
  "rule.saqt.q.cpp.1287.example.0.safe": "라인 1: 파일 이름을 소문자로만 한 뒤 참조하도록 합니다.",
  "rule.saqt.q.cpp.1287.name": "포함 파일 이름에 사용된 대문자",
  "rule.saqt.q.cpp.1289.description": "부적절한 상수 정의 체커는 상수 정의에 const 객체나 열거형 대신 매크로를 사용한 경우를 검출합니다.\n상수 정의에 매크로를 사용하는 것보다 const 객체나 열거형을 사용하는 것이 컴파일 과정에서 타입 시스템의 도움을 받기에 더 수월합니다.\n상수 정의에는 const 객체나 열거형을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1289.example.0.dangerous": "라인 1: #define으로 상수를 정의했습니다.",
  "rule.saqt.q.cpp.1289.example.0.safe": "라인 1: 상수 객체나 열거형을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1289.name": "부적절한 상수 정의",
  "rule.saqt.q.cpp.129.description": "배열 타입 사용 체커는 옵션에 지정된 변수를 배열 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 배열 변수 검사 범위를 지정할 수 있습니다.\n변수를 배열 자료형으로 선언하지 않습니다.",
  "rule.saqt.q.cpp.129.example.0.dangerous": "라인 1: 인자로 배열 변수를 선언했습니다.",
  "rule.saqt.q.cpp.129.example.0.safe": "라인 1: 배열을 사용하지 않도록 금지된 특정 유형의 변수에 배열 타입을 사용하지 않습니다.",
  "rule.saqt.q.cpp.129.name": "배열 타입 사용",
  "rule.saqt.q.cpp.129.option.expand_typedef.description": "옵션을 사용하는 경우, 타입을 재정의한 변수를 검사합니다.",
  "rule.saqt.q.cpp.129.option.expand_typedef.name": "타입 재정의(typedef) 변수를 검사합니다.",
  "rule.saqt.q.cpp.129.option.scope_target_global.description": "옵션을 사용하는 경우, 전역 범위를 검사합니다.",
  "rule.saqt.q.cpp.129.option.scope_target_global.name": "전역 범위 검사 여부",
  "rule.saqt.q.cpp.129.option.scope_target_local.description": "옵션을 사용하는 경우, 지역 범위를 검사합니다.",
  "rule.saqt.q.cpp.129.option.scope_target_local.name": "지역 범위 검사 여부",
  "rule.saqt.q.cpp.129.option.scope_target_parameter.description": "옵션을 사용하는 경우, 인자를 검사합니다.",
  "rule.saqt.q.cpp.129.option.scope_target_parameter.name": "인자 검사 여부",
  "rule.saqt.q.cpp.129.option.variable_target_const.description": "옵션을 사용하는 경우, 상수를 검사합니다.",
  "rule.saqt.q.cpp.129.option.variable_target_const.name": "상수 검사 여부",
  "rule.saqt.q.cpp.129.option.variable_target_non_const.description": "옵션을 사용하는 경우, 비상수를 검사합니다.",
  "rule.saqt.q.cpp.129.option.variable_target_non_const.name": "비상수 검사 여부",
  "rule.saqt.q.cpp.129.option.variable_target_signed.description": "옵션을 사용하는 경우, 부호있는 정수를 검사합니다.",
  "rule.saqt.q.cpp.129.option.variable_target_signed.name": "부호있는 정수 검사 여부",
  "rule.saqt.q.cpp.129.option.variable_target_unsigned.description": "옵션을 사용하는 경우, 부호없는 정수를 검사합니다.",
  "rule.saqt.q.cpp.129.option.variable_target_unsigned.name": "부호없는 정수 검사 여부",
  "rule.saqt.q.cpp.1290.description": "이중자 사용 체커는 이중자(digraph)를 사용하는 경우를 검출합니다.\n이중자(digraph)를 사용하지 않도록 합니다. 이중자의 사용은 코드의 가독성을 떨어트릴 수 있습니다.\n이중자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1290.example.0.dangerous": "라인 1: 이중자를 사용했습니다.",
  "rule.saqt.q.cpp.1290.example.0.safe": "라인 1: 이중자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1290.name": "이중자 사용",
  "rule.saqt.q.cpp.1291.description": "비 표준 헤더 파일 사용 체커는 오래된 표준 헤더 파일을 포함한 줄을 검출합니다.\nISO C++은 표준 라이브러리 구성 요소의 구현을 정의하고 있습니다. 이 내용은 특정 공급 업체나 C라이브러리 버전 대신 진보한 라이브러리들을 사용하는 것을 권장합니다.\n오래된 .h 로 이루어진 헤더 파일 대신 표준 C++ 라이브러리 헤더를 사용합니다. 예를 들면 iostream.h 대신 iostream을 사용하는 것입니다.",
  "rule.saqt.q.cpp.1291.example.0.dangerous": "라인 1: 오래된 stdio.h 헤더 파일을 포함했습니다.\n라인 2: 오래된 iostream.h 헤더 파일을 포함했습니다.",
  "rule.saqt.q.cpp.1291.example.0.safe": "라인 1: 표준 C++ 라이브러리인 cstdio 헤더를 포함합니다.\n라인 2: 표준 C++ 라이브러리인 iostream 헤더를 포함합니다.",
  "rule.saqt.q.cpp.1291.name": "비 표준 헤더 파일 사용",
  "rule.saqt.q.cpp.1292.description": "비효율적인 컨테이너 내 객체 복사 체커는 복사 생성자와 복사 대입 연산자가 누락된 컨테이너 객체 타입을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다. 또한 컨테이너는 변수 선언 시 컨테이너에 넣을 타입을 지정할 수 있습니다. 만약 컨테이너에 넣을 타입이 클래스이고, 명시적인 복사 생성자와 복사 대입 연산자를 정의하지 않은 경우 이 클래스 타입을 검출합니다.\nSTL 컨테이너는 복사 연산을 매우 자주 사용하며, 따라서 복사 연산을 효율적으로 구현하는 것은 중요합니다. 클래스 선언 시 복사에 사용되는 연산은 암시적으로 정의되나 이 부분이 제대로 구현되어 있지 않을 수 있습니다.\n컨테이너에 담는 객체의 클래스 타입은 명시적으로 복사 생성자와 복사 대입 연산자를 정의합니다.",
  "rule.saqt.q.cpp.1292.example.0.dangerous": "라인 1: 명시적인 복사 생성자 및 복사 대입 연산자를 정의하지 않았습니다.\n라인 6: push_back 함수 호출 시 넣는 객체에 대한 복사 생성자가 호출됩니다.\n라인 7: insert 함수 호출 시 저장된 객체들에서 복사 대입 연산자가 호출됩니다.",
  "rule.saqt.q.cpp.1292.example.0.safe": "라인 3: 명시적인 복사 생성자를 정의합니다.\n라인 4: 명시적인 복사 대입 연산자를 정의합니다.",
  "rule.saqt.q.cpp.1292.name": "비효율적인 컨테이너 내 객체 복사",
  "rule.saqt.q.cpp.1293.description": "복사 생성자 사용 체커는 컨테이너에 담는 타입이 오버헤드가 큰 클래스 타입인 객체의 선언을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다.\n컨테이너들은 종류에 따라 내부 데이터를 옮기는 작업을 수행합니다. 이 작업은 컨테이너에 담는 클래스 타입의 복사 연산을 여러번 호출합니다. 이 때 클래스 타입의 복사 생성자가 오버헤드가 클 경우 성능상에 문제가 발생할 수 있습니다.\n컨테이너에 담는 타입은 포인터나 스마트 포인터를 사용하도록 합니다. 포인터는 주소 값 크기만큼의 메모리만 차지하며 값을 복사하는 연산이 포함되어 있습니다. 이러한 이유로 큰 오버헤드 없이 컨테이너에 객체를 삽입하거나 정렬하는 동작이 효율적으로 이루어집니다.",
  "rule.saqt.q.cpp.1293.example.0.dangerous": "라인 7: 오버헤드가 큰 복사 생성자가 호출됩니다.",
  "rule.saqt.q.cpp.1293.example.0.safe": "라인 7: 포인터를 사용하기 때문에 복사 생성자가 호출되지 않습니다.",
  "rule.saqt.q.cpp.1293.name": "복사 생성자 사용",
  "rule.saqt.q.cpp.1294.description": "동적 배열 할당 체커는 동적으로 할당한 배열 타입의 변수 선언을 검출합니다.\n이것은 일반적인 객체의 동적 할당은 해당 하지 않습니다. 오로지 배열 타입의 동적 할당을 수행했을 때 검출합니다.\nC 스타일의 배열은 기능적으로 많은 제한을 가지고 있습니다. 예를 들어 만약 데이터가 늘어나 배열의 크기를 늘려야 할 경우 새로운 크기로 배열을 동적 할당 해야 하며, 이전의 배열을 지우는 작업과 데이터를 복사하는 작업을 수행해야 합니다. 또한 동적 할당을 사용하는 것은 잠재적으로 메모리와 관련된 문제가 일어날 수 있습니다.\n동적 할당한 배열을 사용하는 대신 벡터나 문자열을 사용하도록 합니다. 벡터와 문자열은 자동적으로 저장소와 관련된 요구사항을 관리해주며, 프로그래머는 직접 동적할당 메모리를 관리할 필요가 없습니다. 이것은 잠재적으로 메모리와 관련된 버그 및 비효율성 문제가 일어나지 않도록 할 수 있습니다.",
  "rule.saqt.q.cpp.1294.example.0.dangerous": "라인 1: int[] 타입의 동적 할당한 배열을 선언했습니다.\n라인 2: 동적 할당한 char[] 타입의 배열을 선언했습니다.",
  "rule.saqt.q.cpp.1294.example.0.safe": "라인 1: 동적 할당한 배열 대신 벡터를 사용합니다.\n라인 2: 동적 할당한 배열 대신 문자열을 사용합니다.",
  "rule.saqt.q.cpp.1294.name": "동적 배열 할당",
  "rule.saqt.q.cpp.1295.description": "불필요한 재할당 체커는 컨테이너의 불필요한 재할당이 발생하는 수식을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다.\n벡터와 같은 STL의 컨테이너들은 요소가 삽입될 때 필요에 따라 메모리 공간을 늘립니다. 다만 메모리 공간을 늘리는 것과 이전의 삽입 요소를 이동하는 일들은 많은 오버헤드가 발생할 수 있습니다. 만약 사전에 필요한 공간을 알 수 있다면 미리 저장공간을 확보하는 것이 좋습니다.\n컨테이너를 미리 할당하는 것이 가능할 경우 불필요한 재할당이 없도록 합니다. 벡터의 경우 reserve() 메소드를 사용하면 미리 컨테이너 내부의 메모리 공간을 늘릴 수 있습니다.",
  "rule.saqt.q.cpp.1295.example.0.dangerous": "라인 3: 반복문 내에서 push_back 함수를 사용했습니다. 이때 메모리 공간이 부족할 때마다 메모리가 늘어나게 됩니다.",
  "rule.saqt.q.cpp.1295.example.0.safe": "라인 2: reserve() 메소드로 미리 메모리 공간을 확보해둡니다.",
  "rule.saqt.q.cpp.1295.name": "불필요한 재할당",
  "rule.saqt.q.cpp.1296.description": "부적절한 C 스타일 함수로의 벡터 전달 체커는 C 스타일을 사용하는 함수의 배열 인자에 올바른 방식으로 전달하지 않은 벡터 객체를 검출합니다.\nC 스타일 함수란 인자로 받는 타입에 배열이 있는 함수를 의미합니다. STL 컨테이너 중 벡터는 연속된 메모리 공간에 데이터를 저장하도록 표준에 명시되어 있습니다. 따라서 기본적으로는 C 스타일의 배열과 호환 가능합니다. 다만 이와 같은 C 스타일 함수의 배열 인자에 벡터 객체를 전달하려면 올바른 방식을 따라야 합니다.\n잘못된 방식으로 벡터 객체를 전달할 경우 정상적으로 데이터가 전달되지 않습니다.\nC 스타일 함수에 벡터 타입을 전달할 경우 `&v[0]`을 사용하도록 합니다. `&v[0]`을 사용하여 첫 번째 요소의 주소 값을 넘기는 것으로 기존 C 스타일 배열을 인자로 요구하는 함수에서 사용할 수 있습니다.",
  "rule.saqt.q.cpp.1296.example.0.dangerous": "라인 3: front() 함수는 값에 의한 전달을 수행하므로 원하는 동작이 이루어지지 않습니다.",
  "rule.saqt.q.cpp.1296.example.0.safe": "라인 4: &vec[0]을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1296.name": "부적절한 C 스타일 함수로의 벡터 전달",
  "rule.saqt.q.cpp.1297.description": "키 수정 체커는 set이나 multiset 컨테이너 객체의 키를 수정하는 수식을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 여기서 언급하는 set과 multiset 컨테이너는 데이터를 삽입시 자동으로 정렬하는 특징이 있습니다.\nset이나 multiset의 요소들은 키값을 기준으로 정렬되어 있으며, 해당값을 수정하게 되는 경우 매우 찾기 힘든 버그가 발생하게 됩니다.\nset이나 multiset의 키를 수정하지 않습니다. set과 multiset에 한 번 넣은 데이터는 직접 수정하지 말고 오로지 삽입과 삭제만으로 관리하도록 합니다.",
  "rule.saqt.q.cpp.1297.example.0.dangerous": "라인 6: set의 key값을 수정했습니다. strSet 컨테이너의 값은 A,B,C로 정렬되어 있으나 직접적인 수정으로 인해 값이 D, B,C로 되며, 정렬되지 않은 set으로 인해 문제가 발생하게 됩니다.",
  "rule.saqt.q.cpp.1297.example.0.safe": "라인 6: erase() 메소드로 불필요한 데이터를 삭제합니다.\n라인 7: insert() 메소드로 새로운 데이터를 삽입합니다.",
  "rule.saqt.q.cpp.1297.name": "키 수정",
  "rule.saqt.q.cpp.1298.description": "혼합된 반복자 타입 체커는 반복자 타입을 혼합해서 사용한 선언을 검출합니다.\n반복자는 C++의 컨테이너에 속한 각각의 요소들을 순회할 때 사용하는 특별한 객체입니다. 반복자의 종류에는 iterator, const_iterator, reverse_iterator, const_reverse_iterator가 있습니다.\niterator와 다른 반복자를 혼합해서 사용하는 것은 호환성 문제나 몇몇 메소드의 사용상에 제약이 발생합니다. 구체적으로는 컴파일러 추론에 의한 암시적 변환 과정에서 const_iterator나 const_reverse_iterator는 iterator, reverse_iterator로 변환이 불가능합니다. 또한 몇몇 insert() 메소드와 erase() 메소드는 iterator만 사용가능합니다.\n반복자는 일반적인 iterator만을 사용하는 것을 권장합니다.",
  "rule.saqt.q.cpp.1298.example.0.dangerous": "라인 4: const_iterator를 사용했습니다.\n라인 6: 특정 컴파일러의 STL에서 컴파일 오류가 날 수 있습니다.",
  "rule.saqt.q.cpp.1298.example.0.safe": "라인 3: const_iterator_를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1298.name": "혼합된 반복자 타입",
  "rule.saqt.q.cpp.1299.description": "비 순수 조건자 함수 체커는 반환 결과가 인자에 의존하지 않는 조건자 선언을 검출합니다.\n조건자는 STL에 속한 알고리즘 함수들의 술어부에 쓰이는 특별한 클래스 타입입니다. 일반적으로 클래스의 선언과 함께 operator()() 메소드를 구현한 형태로 이루어져 있습니다.\n조건자의 결과는 인자에만 의존해야 합니다. 이것은 STL 알고리즘에서 사용하는 조건자 함수(Predicate Function)는 순수 함수(Pure-Function)여야 한다는 것을 의미합니다. 조건자 함수는 평가 순서에 의존하면 안되며, 이전 호출이나 외부 상태 요소에 관계 없이 동일한 결과를 반환하도록 작성되어야 합니다.\n조건자 반환 결과가 인자에만 의존하도록 구현합니다.",
  "rule.saqt.q.cpp.1299.example.0.dangerous": "라인 5: 조건자가 외부 상태 요소의 영향을 받아 결과를 반환합니다.",
  "rule.saqt.q.cpp.1299.example.0.safe": "라인 5: 조건자의 반환 결과가 오로지 인자에만 의존하도록 작성합니다.",
  "rule.saqt.q.cpp.1299.name": "비 순수 조건자 함수",
  "rule.saqt.q.cpp.130.description": "금지된 타입 사용 체커는 옵션에 지정된 자료형으로 변수를 선언하는 코드를 검출합니다.\n옵션에서 사용이 금지된 자료형의 검사 범위 및 한정자를 지정할 수 있습니다.\n옵션에 지정된 자료형을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.130.example.0.dangerous": "라인 1: foo() 함수의 첫 번째 인자가 금지된 long 타입입니다.",
  "rule.saqt.q.cpp.130.example.0.safe": "라인 1: 금지된 타입 대신 대체할 수 있는 다른 타입을 사용하도록 합니다. long 타입은 int, int32, int64 등 크기를 알기 쉬운 타입으로 대체하는 것이 안전합니다.",
  "rule.saqt.q.cpp.130.name": "금지된 타입 사용",
  "rule.saqt.q.cpp.130.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.130.option.forbidden_type.description": "사용 금지 타입을 설정합니다.",
  "rule.saqt.q.cpp.130.option.forbidden_type.name": "사용 금지 타입",
  "rule.saqt.q.cpp.130.option.ignore_const.description": "상수 무시 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.ignore_const.name": "상수 무시 여부",
  "rule.saqt.q.cpp.130.option.scope_target_global.description": "전역 변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.scope_target_global.name": "전역 변수 검사 여부",
  "rule.saqt.q.cpp.130.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.cpp.130.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.cpp.130.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.130.option.type_target_array.description": "배열 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.type_target_array.name": "배열 타입 검사 여부",
  "rule.saqt.q.cpp.130.option.type_target_pointer.description": "포인터 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.type_target_pointer.name": "포인터 타입 검사 여부",
  "rule.saqt.q.cpp.130.option.type_target_signed.description": "부호있는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.type_target_signed.name": "부호있는 정수 검사 여부",
  "rule.saqt.q.cpp.130.option.type_target_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.type_target_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.130.option.type_target_unsigned.description": "부호없는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.130.option.type_target_unsigned.name": "부호없는 정수 검사 여부",
  "rule.saqt.q.cpp.1300.description": "STL 알고리즘 사용 체커는 동일한 이름의 컨테이너 메소드 대신 STL 알고리즘을 사용한 수식을 검출합니다.\n종종 동일한 이름을 가진 STL 알고리즘과 컨테이너의 메소드가 존재합니다. 이 함수들은 서로 이름은 같지만 세부적인 구현과 성능에서 차이가 있을 수 있습니다.\n멤버 함수의 경우 컨테이너의 구현에 맞춰 더 효율적이고 빠르게 구현되어 있습니다. 예를 들어 find() 함수의 경우 STL 알고리즘은 O(n)만큼의 시간복잡도를 가지지만, 정렬된 컨테이너들은 O(logN) 만큼의 시간복잡도를 가집니다.\n동일한 이름의 STL 알고리즘 대신 컨테이너의 메소드를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1300.example.0.dangerous": "라인 3: STL 알고리즘의 find() 함수를 사용했습니다. 이 함수는 시간복잡도 O(n)을 가집니다.",
  "rule.saqt.q.cpp.1300.example.0.safe": "라인 3: set의 멤버인 find() 메소드를 사용했습니다. set은 정렬된 연관 컨테이너 이므로 시간복잡도 O(logN)을 가집니다.",
  "rule.saqt.q.cpp.1300.name": "STL 알고리즘 사용",
  "rule.saqt.q.cpp.1301.description": "auto_ptr 사용 체커는 몇가지 상황을 충족 했을 경우 auto_ptr로 선언한 변수를 검출합니다.\nauto_ptr은 C++ 표준에 속한 스마트 포인터의 한 종류입니다. 이 체커는 구체적으로 다음 상황을 검출 합니다. auto_ptr을 배열 타입에 사용했습니다. 동적 할당되지 않은 객체를 auto_ptr로 감쌌습니다. auto_ptr 객체를 값에 의한 전달로 사용했습니다. auto_ptr 객체를 다른 auto_ptr 객체로 대입했습니다.\nauto_ptr은 비 직관적이고 잘못된 사용으로 이어질 수 있는 소멸 복사를 수행합니다. 따라서 각종 메모리 관련 문제가 발생할 가능성이 매우 높습니다. 현재 C++ 최신 표준에서는 auto_ptr의 사용 자체를 금지하고 있습니다.\nauto_ptr을 꼭 사용할 경우에는 충분히 주의하여 사용하도록 합니다. 개발 환경이 C++11 이상을 지원하는 컴파일러의 경우 auto_ptr 자체를 사용하지 않는 것이 좋습니다.",
  "rule.saqt.q.cpp.1301.example.0.dangerous": "라인 1: 매개 변수 선언 부분에서 값에 의한 전달을 사용했습니다.\n라인 4: 함수 인자로 전달하는 과정에서 스마트 포인터를 복사합니다. 이후 내부 객체를 가리키는 포인터가 널 포인터가 됩니다.\n라인 6: 널 포인터 역참조 문제가 발생합니다.",
  "rule.saqt.q.cpp.1301.example.0.safe": "라인 1: 참조에 의한 전달을 사용합니다.",
  "rule.saqt.q.cpp.1301.name": "auto_ptr 사용",
  "rule.saqt.q.cpp.1303.description": "클래스 선언에서 인라인 멤버 함수 정의 체커는 클래스 선언 내부에서 정의된 인라인 메소드를 검출합니다.\n컴파일러는 클래스 내부에서 정의된 메소드는 기본적으로 인라인 메소드로 인식합니다. 개발자가 인라인 메소드를 정의하고 싶을 경우 다음과 같은 3가지 방법이 있습니다. 클래스 내부에서 inline 키워드를 사용하여 메소드를 선언 및 정의합니다. 클래스 내부에서 메소드를 선언 및 정의합니다. 클래스 외부에서 inline 키워드를 사용하여 메소드를 정의합니다. 이 체커는 이중에서 클래스 내부에서 선언된 명시적인 인라인 메소드와 암시적인 인라인 메소드를 검출합니다.\n헤더 파일에서의 클래스 선언은 해당 클래스의 세부 사항을 최대한 적게 외부에 표시해야 합니다. 메소드의 정의를 클래스 선언부에 작성할 경우 구체적인 구현 내용이 외부에 드러나는 문제가 발생합니다.\n인라인 메소드의 정의는 클래스 선언 다음에 나타내거나, 헤더 파일을 포함시킨 별도의 구현파일에 두도록 합니다.",
  "rule.saqt.q.cpp.1303.example.0.dangerous": "라인 5: 클래스 선언부에서 멤버 함수를 inline 키워드로 선언한 후 구현했습니다.\n라인 6: 클래스 선언부에서 멤버 함수를 정의했습니다.",
  "rule.saqt.q.cpp.1303.example.0.safe": "라인 12: 메소드 정의 시 inline 키워드를 사용하여 인라인 메소드를 정의합니다.\n라인 15: 메소드 정의 시 inline 키워드를 사용하여 인라인 메소드를 정의합니다.",
  "rule.saqt.q.cpp.1303.name": "클래스 선언에서 인라인 멤버 함수 정의",
  "rule.saqt.q.cpp.1304.description": "누락된 메모리 할당에 대한 예외 처리 체커는 동적 할당을 사용하였으나 동적 할당 핸들러의 정의되어 있지 않는 프로그램을 검출합니다.\n동적 할당 핸들러란 C++ 로 개발한 프로그램에서 동적 할당이 실패했을 때 마지막으로 호출해주는 함수입니다.\n동적 할당이 실패했을 때 발생하는 오류를 적절하게 처리하지 않으면 프로그램이 비정상적으로 종료됩니다. 또한 사용자는 아무런 해결 방안을 얻을 수 없게 됩니다.\n동적할당을 사용하는 모든 C++ 프로그램은 set_new_handler() 함수를 사용하여 메모리 할당이 실패했을 때 불리는 핸들러를 설정해야 합니다. 핸들러 함수를 정의하고 set_new_handler() 함수에 정의한 핸들러의 함수 포인터를 전달합니다.",
  "rule.saqt.q.cpp.1304.example.0.dangerous": "라인 2: 동적 메모리 할당이 실패했다고 가정했습니다.\n라인 3: 메모리 할당에 실패하여 p가 널 포인터인 경우 use() 함수 호출에서 문제가 발생할 수 있습니다.",
  "rule.saqt.q.cpp.1304.example.0.safe": "라인 5: 메모리 할당이 실패했을 경우를 대비하여 핸들러를 설정하도록 합니다.",
  "rule.saqt.q.cpp.1304.name": "누락된 메모리 할당에 대한 예외 처리",
  "rule.saqt.q.cpp.1305.description": "너무 높은 역참조 수준 체커는 한 문장 안에서 역참조가 2단계를 초과하여 중첩 사용된 경우를 검출합니다.\n한 번에 수행하는 역참조의 단계가 너무 깊으면 코드의 가독성이 떨어지며 실수를 할 가능성도 높아집니다.\n두 단계를 초과하는 역참조를 수행하려면 임시 변수에 중간 결과를 저장하는 등의 방법으로 역참조 중첩을 분리해야 합니다.",
  "rule.saqt.q.cpp.1305.example.0.dangerous": "라인 2: 3단계의 역참조가 이루어졌습니다.",
  "rule.saqt.q.cpp.1305.example.0.safe": "라인 2: 역참조는 2단계 이하로 사용하도록 합니다.",
  "rule.saqt.q.cpp.1305.name": "너무 높은 역참조 수준",
  "rule.saqt.q.cpp.1306.description": "매크로 내에서 포인터 역참조 연산 사용 체커는 매크로 정의를 사용하여 포인터 역참조 연산을 보이지 않게 숨기는 경우를 검출합니다.\n포인터 역참조 연산식을 작성할 때는 그 부분에서 오류가 발생하기 하기 쉽기 때문에 최대한 겉으로 드러나는 방식으로 작성해야 합니다. 그래야 작성자를 포함하여 코드를 읽는 누구든지 그 지점에서 역참조가 일어난다는 사실을 인지하고 실수가 있는지 여부를 판단할 수 있습니다.\n포인터 역참조 연산은 매크로로 정의하지 말고 겉으로 드러나게 사용합니다.",
  "rule.saqt.q.cpp.1306.example.0.dangerous": "라인 1: 포인터 역참조 연산을 매크로 내부에 숨기고 있습니다.",
  "rule.saqt.q.cpp.1306.example.0.safe": "라인 1: 매크로 내에서 역참조 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1306.name": "매크로 내에서 포인터 역참조 연산 사용",
  "rule.saqt.q.cpp.1308.description": "파일 간 중복된 함수 혹은 변수 이름 체커는 다른 파일에서 같은 함수 이름 혹은 변수 이름을 재사용하는 경우를 검출합니다.\n다른 파일에서 전역적으로 같은 이름을 중복해서 사용하는 경우 개별 파일을 컴파일할 때에는 문제가 없지만 그 결과를 서로 링크할 때 해석이 모호해질 수 있습니다.\n다른 파일에서는 다른 함수 이름과 변수 이름을 사용하도록 수정합니다.",
  "rule.saqt.q.cpp.1308.example.0.dangerous": "라인 2: 8_9a.c 파일에 func() 함수 정의가 존재합니다.\n라인 6: 8_9b.c 파일에도 func() 함수 정의가 존재합니다.",
  "rule.saqt.q.cpp.1308.example.0.safe": "라인 6: 다른 파일에서 전역적으로 같은 이름이 존재하지 않도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1308.name": "파일 간 중복된 함수 혹은 변수 이름",
  "rule.saqt.q.cpp.1309.description": "누락된 extern 변수 선언 체커는 다른 소스 파일 어디에서도 선언을 찾을 수 없는 변수가 extern으로 선언된 경우를 검출합니다.\nextern으로 전역 변수를 선언하는 것은 다른 소스 파일에 해당 변수가 구체적으로 정의되어 있을 것을 가정하고 해당 전역 변수를 끌어다 쓰겠다는 의미입니다. 그러나 그 변수가 같은 프로젝트 내의 다른 소스 파일에서 제대로 선언되어 있지 않다면 작성자가 어디선가 실수를 했을 가능성이 높습니다.\n이 소스 파일에서 extern 키워드 없이 변수를 직접 선언하거나 변수를 소유할 다른 소스 파일에 변수를 제대로 선언해줍니다.",
  "rule.saqt.q.cpp.1309.example.0.dangerous": "라인 2: foo.c 파일에 notComp 변수를 extern으로 선언했습니다. 그러나 다른 소스 파일에서 extern 키워드 없는 notComp 변수 선언을 찾을 수 없습니다.",
  "rule.saqt.q.cpp.1309.example.0.safe": "라인 4: bar.c 파일에 notComp 변수를 선언합니다.",
  "rule.saqt.q.cpp.1309.name": "누락된 extern 변수 선언",
  "rule.saqt.q.cpp.131.description": "포인터에 대해 사용자 정의 타입의 미사용 체커는 변수 또는 함수를 재정의된 자료형이 아닌 포인터 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 변수 또는 함수 선언에서 Typedef로 재정의된 포인터 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 포인터 타입, 멤버 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n포인터 자료형을 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.131.example.0.dangerous": "라인 1: 전역 변수 a의 타입이 재정의된 타입이 아닙니다.",
  "rule.saqt.q.cpp.131.example.0.safe": "라인 2: 포인터 타입을 재정의된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.131.name": "포인터에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.cpp.131.option.allowed_pointer_type.description": "허용하는 포인터 타입이름을 설정합니다.",
  "rule.saqt.q.cpp.131.option.allowed_pointer_type.name": "허용하는 포인터 타입",
  "rule.saqt.q.cpp.131.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.131.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.cpp.131.option.scope_target_parameter.description": "파라미터 검사 여부",
  "rule.saqt.q.cpp.131.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.1310.description": "매크로 연결 시 국제 문자 사용 체커는 매크로의 연결에서 유니코드와 같은 유니버설 문자가 인자로 전달되는 경우를 검출합니다.\n매크로의 연결에서 유니코드와 같은 유니버설 문자를 인자로 전달하지 않도록 합니다.\n즉, 매크로의 연결은 유니코드와 같은 유니버설 문자를 인자로 사용하지 않습니다.\n매크로의 연결에서 유니코드와 같은 유니버설 문자를 인자로 전달하지 않도록 합니다.",
  "rule.saqt.q.cpp.1310.example.0.dangerous": "라인 1: 매크로 연결에서 유니버설 문자를 인자로 사용했습니다. 따라서 MS Visual Studio 2013에서는 컴파일에 성공하지만, GCC 4.8.1에서는 오류와 함께 컴파일에 실패하게 됩니다.",
  "rule.saqt.q.cpp.1310.example.0.safe": "라인 1: 매크로 연결에서 유니버설 문자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1310.name": "매크로 연결 시 국제 문자 사용",
  "rule.saqt.q.cpp.1312.description": "누락된 상수 간 관계 체커는 복수의 연관된 상수에 대한 관계를 식으로 사용하지 않고 각각을 독립적으로 선언하는 경우를 검출합니다.\n서로 연관된 상수에 대한 관계식을 사용하여 해당 상수를 선언해야 의미를 명확히 파악할 수 있습니다.\n서로 연관된 상수의 관계식을 사용하여 해당 상수를 정의합니다.",
  "rule.saqt.q.cpp.1312.example.0.dangerous": "라인 1: IN_STR_LEN 상수와 OUT_STR_LEN 상수는 서로 관계가 있지만 독립적으로 정의되었습니다.",
  "rule.saqt.q.cpp.1312.example.0.safe": "라인 1: 두 값 사이에 관계가 있으므로 OUT_STR_LEN 상수를 IN_STR_LEN 상수를 사용한 식으로 정의합니다.",
  "rule.saqt.q.cpp.1312.name": "누락된 상수 간 관계",
  "rule.saqt.q.cpp.1314.description": "반복문 내에서 복합 리터럴 주소 사용 체커는 복합 리터럴(Compound Literal)을 해석하는 방식을 제대로 이해하지 못하고 반복문에서 잘못 사용하는 경우를 검출합니다.\n프로그램에서 복합 리터럴을 사용하면 임시 객체가 생성됩니다. 전역 변수를 선언할 때 임시 객체를 활용한 것이 아니면 임시 객체는 복합 리터럴이 포함된 블록이 끝날때까지 지속됩니다. 또한 반복문에서 복합 상수를 사용하는 경우 반복문을 수행할 때마다 새롭게 임시 객체를 생성하지 않고 최초에 생성한 임시 객체를 재사용합니다. 이와 같은 복합 리터럴의 특성을 제대로 이해하지 못한 채 복합 상수를 사용하면 프로그램이 의도하지 않게 동작하거나 오류가 발생할 수 있습니다. 특히 복합 리터럴의 주소를 참조하여 사용하는 경우 해당 블록을 빠져나오는 순간 임시 객체의 지속시간이 끝나고 해당 주소는 무효화되므로 주의해야 합니다.\n복합 리터럴로부터 생성되는 임시 객체는 해당 구문 내에서만 사용되고 폐기된다고 가정하는 것이 안전합니다. 임시 객체를 사용하여 다른 객체를 초기화하면 임시 객체의 주소를 참조하는 대신 임시 객체의 값을 복사하는 방식으로 전달해야 합니다.",
  "rule.saqt.q.cpp.1314.example.0.dangerous": "라인 9: 임시 객체를 한 번만 생성하므로 ints 배열의 모든 포인터가 동일한 하나의 임시 객체를 가리키게 되며, 해당 객체의 필드 x의 값은 MAX_INTS-1입니다.\n라인 10: for 구문이 종료되면 임시 객체의 지속 시간이 종료되어 해당 주소가 더 이상 유효하지 않습니다. 따라서 ints 배열의 모든 주소 값은 유효하지 않은 값입니다.\n라인 12: 두 번째 for 구문에서 ints 배열의 각 요소를 역참조했습니다. 유효하지 않은 주소를 역참조하는 것은 정의되지 않은 동작입니다. 실제 실행에서는 해당 메모리를 아직 덮어쓰지 않을 가능성이 높으므로 어떤 값이 출력되었을 것입니다. 그러나 기대했던 것처럼 0에서 MAX_INTS-1까지의 값이 출력되는 것이 아니라 MAX_INTS-1 하나의 값이 연속으로 출력될 것입니다.",
  "rule.saqt.q.cpp.1314.example.0.safe": "라인 9: 반복문 안에서 복합 리터럴의 주소를 참조하는 대신 임시 객체의 값을 복사하도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1314.name": "반복문 내에서 복합 리터럴 주소 사용",
  "rule.saqt.q.cpp.1315.description": "유일하지 않은 서로에게 보이는 식별자 체커는 범위를 공유하는 식별자가 일정한 수의 앞글자만을 고려했을 때 유일하게 정의되지 않은 경우를 검출합니다.\n코드의 이식성을 보장하기 위해 식별자를 처음 31글자에서 구별해야 합니다.\n식별자가 유일하게 정의되지 않으면 컴파일 오류가 발생하거나 의도하지 않은 타입 혼동이 발생할 수 있습니다. 특히 컴파일러 환경에 따라, 너무 긴 식별자를 사용했을 때 뒷부분을 인식하지 못할 수 있기 때문에 앞부분 31글자 안에서 구별되도록 이름을 지어야 합니다.\n상호 참조 가능한 영역에 있는 모든 식별자를 앞부분 31글자 안에서 구별하도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1315.example.0.dangerous": "라인 1: 앞부분 31글자까지 두 변수의 이름이 같습니다. 따라서 시스템에 따라 같은 식별자로 처리될 수 있습니다.",
  "rule.saqt.q.cpp.1315.example.0.safe": "라인 1: 두 변수의 식별자가 앞부분 31글자까지 비교하는 경우에도 유일해야 합니다.",
  "rule.saqt.q.cpp.1315.name": "유일하지 않은 서로에게 보이는 식별자",
  "rule.saqt.q.cpp.1316.description": "시그널 핸들러 내에서의 비 volatile 변수 사용 체커는 시그널 핸들러에서 volatile로 선언되지 않은 전역 변수를 사용하는 경우를 검출합니다.\nvolatile로 선언되지 않은 변수는 캐싱될 가능성이 있습니다. 시그널 핸들러에서 참조하는 변수를 캐싱하도록 소스 코드를 컴파일하면 프로그램이 의도하지 않게 동작할 수 있습니다.\n시그널 핸들러에서 사용하는 전역 변수를 volatile로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1316.example.0.dangerous": "라인 9: i의 값이 캐싱되도록 컴파일되면 시그널 핸들러가 지정한 i 값이 while 구문의 영역에 전달되지 않으므로 무한 루프에 빠질 가능성이 있습니다.",
  "rule.saqt.q.cpp.1316.example.0.safe": "라인 2: 시그널 핸들러가 사용하는 전역 변수를 volatile로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1316.name": "시그널 핸들러 내에서의 비 volatile 변수 사용",
  "rule.saqt.q.cpp.1317.description": "선점된 식별자 사용 체커는 예약어일 수 있는 단어를 식별자로 사용하는 경우를 검출합니다.\n밑줄로 시작하는 이름의 경우 컴파일러에서 내부적으로 사용하는 매크로일 수 있으므로 사용하지 않는 것이 좋습니다. 컴파일러에서 내부적으로 사용하는 이름을 식별자로 사용하면 컴파일러가 오작동할 수 있습니다.\n밑줄로 시작하는 이름을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1317.example.0.dangerous": "라인 1: 밑줄로 시작하는 식별자를 매크로에 사용했습니다.",
  "rule.saqt.q.cpp.1317.example.0.safe": "라인 1: 밑줄(_)로 시작하는 이름을 매크로에 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1317.name": "선점된 식별자 사용",
  "rule.saqt.q.cpp.1319.description": "매크로 인자의 부수 효과 체커는 매크로의 인자에 부수 효과가 발생할 수 있는 식을 전달하는 코드를 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n매크로에서 인자를 몇 번 계산하는지 알 수 없기 때문에 인자에 부수 효과가 발생하는 식을 사용하지 않는 것이 좋습니다. 만약 매크로가 인자를 여러 번 계산하도록 정의되어 있다면 매크로를 사용할 때는 인자가 한 번만 계산되는 것처럼 보이지만 실제로는 여러 번 계산되어서 부수 효과 발생이 여러 번 이루어져 예상과 다른 현상이 일어날 수 있습니다.\n매크로의 인자에는 부수 효과가 없는 식을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1319.example.0.dangerous": "라인 3: 매크로의 정의에 따라 이 식은 전처리 단계에서 다음과 같이 변경됩니다. m = (((++n) < 0) ? -(++n) : (++n)); 여기서 매크로 인자였던 ++n 식이 여러 번 수행되므로 구문 수행 후 n의 값은 처음보다 3 큰 값이 되었습니다. 하지만 직관에 어긋나는 현상입니다.",
  "rule.saqt.q.cpp.1319.example.0.safe": "라인 4: 매크로의 인자에는 부수 효과가 없는 식을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1319.name": "매크로 인자의 부수 효과",
  "rule.saqt.q.cpp.132.description": "사용자 정의 타입의 미사용 체커는 변수 또는 함수를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 변수 또는 함수 선언에서 Typedef로 재정의된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 타입, 멤버 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n자료형을 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.132.example.0.dangerous": "라인 1: 전역 변수 a의 타입이 재정의된 타입이 아닙니다.",
  "rule.saqt.q.cpp.132.example.0.safe": "라인 2: 변수 타입을 재정의된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.132.name": "사용자 정의 타입의 미사용",
  "rule.saqt.q.cpp.132.option.allowed_type.description": "허용하는 재정의 타입을 설정합니다.",
  "rule.saqt.q.cpp.132.option.allowed_type.name": "허용하는 재정의 타입",
  "rule.saqt.q.cpp.132.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.132.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.cpp.132.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.132.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.1320.description": "호환되지 않는 포인터를 통한 변수 접근 체커는 메모리에 저장된 값의 타입과 호환되지 않는 타입의 포인터를 사용하여 메모리에 접근하는 경우를 검출합니다.\n호환되지 않는 타입의 포인터를 사용하여 메모리에 접근하는 것은 정의되지 않은 동작입니다. 컴파일러에 따라 해당 구문의 해석이 다를 수 있습니다. 예를 들어 일반적으로 32비트 부동소수점 타입(float)의 값이 저장된 메모리 영역을 32비트 정수형(int) 포인터로 역참조하면 포인터의 타입 크기와 실제 메모리에 저장된 값의 크기가 동일하므로 특별한 문제가 생기지 않을 것이며, 그저 해당 부동소수점 값의 비트 패턴을 정수로 해석한 값을 얻어낼 수 있을 것이라고 생각하기 쉽습니다. 실제로 대부분의 컴파일러가 그렇게 해석을 해주긴 하지만 이런 동작은 언어의 공식적인 정의에 따르면 정의되지 않은 동작이며 이 구문이 어떻게 실행될지 아무도 보장해주지 않습니다.\n포인터를 통한 메모리 접근은 다음과 같은 방식으로 수행해야 합니다. 우선 실제로 메모리에 저장된 값과 동일한 타입의 포인터를 사용하여 접근할 수 있습니다. 또한 void* 타입 포인터를 사용하여 임의의 메모리 영역을 가리킬 수 있습니다. 물론 이 포인터를 사용하면 역참조할 수 없습니다. 마지막으로 어떤 값이든 임의의 바이트 배열로 해석해줄 수 있는 char* 타입을 사용하여 임의의 메모리 영역을 가리킬 수 있습니다. 기계 수준의 비트 패턴을 사용하여 특정 타입의 값을 어떻게 표현하는지 알고 싶다면 char* 타입의 포인터를 사용하면 됩니다.",
  "rule.saqt.q.cpp.1320.example.0.dangerous": "라인 4: float 타입의 값이 저장된 메모리 영역에 int* 포인터를 사용하여 접근했습니다. 이것은 정의되지 않은 동작입니다.",
  "rule.saqt.q.cpp.1320.example.0.safe": "라인 4: 호환되는 타입의 포인터를 사용하여 메모리에 접근해야 합니다.",
  "rule.saqt.q.cpp.1320.name": "호환되지 않는 포인터를 통한 변수 접근",
  "rule.saqt.q.cpp.1321.description": "부적절한 정수 형변환 체커는 문자를 큰 정수값으로 변환하기 전에 unsigned 정수형 값을 거치지 않는 경우를 검출합니다.\n문자를 정수로 해석할 때에는 0에서 255까지의 ASCII 코드로 해석해야 하므로 unsigned 값으로 취급해야 합니다. 이런 문자 값을 char 타입에서 signed 더 넓은 정수형으로 바로 캐스팅하면 128 이상의 문자 코드에 대해 잘못된 캐스팅이 일어날 수 있습니다. 128 이상의 문자 코드는 8비트로 표현했을 때 최상위 비트가 1이므로 signed 정수로 취급하면 최상위 비트 확장으로 인해 음수로 해석되기 때문입니다.\n문자 코드가 0에서 255까지의 정수로 해석될 수 있도록 unsigned 정수로 먼저 캐스팅해야 합니다.",
  "rule.saqt.q.cpp.1321.example.0.dangerous": "라인 8: char를 signed 타입으로 사용하는 컴파일러를 사용한다면, c_str이 가리키는 값을 int 타입인 c 변수에 대입할 때 부호 확장이 일어날 수 있습니다. c_str이 가리키고 있던 값이 255라면 int 타입으로 변환할 때 -1로 변환되어 잘못된 값을 반환하게 됩니다.",
  "rule.saqt.q.cpp.1321.example.0.safe": "라인 9: *c_str 값을 c 변수에 대입하기 전에 unsigned 타입으로 캐스팅해야 합니다.",
  "rule.saqt.q.cpp.1321.name": "부적절한 정수 형변환",
  "rule.saqt.q.cpp.1322.description": "FILE 객체 복사 체커는 표준 라이브러리 FILE 객체를 복사하는 경우를 검출합니다.\nFILE 객체는 관련 라이브러리 함수 호출을 통해서만 다루도록 설계되어 있습니다. 따라서 FILE 객체를 복사해서 사용하면 두 객체가 같은 동작을 할 것이 보장되지 않으며, 객체 내부의 값을 임의로 조작하면 관련 라이브러리가 제대로 작동하지 않을 수 있습니다.\nFILE 객체를 다루려면 설계된 대로 라이브러리 함수를 호출해야 합니다.",
  "rule.saqt.q.cpp.1322.example.0.dangerous": "라인 2: FILE 객체를 역참조한 후에 복사했습니다.",
  "rule.saqt.q.cpp.1322.example.0.safe": "라인 2: 파일 객체를 복사하지 않도록 합니다.",
  "rule.saqt.q.cpp.1322.name": "FILE 객체 복사",
  "rule.saqt.q.cpp.1323.description": "재정의된 errno 체커는 errno 변수를 개별 소스 파일에서 직접 재정의하는 경우를 검출합니다.\nerrno 변수를 개별 소스 파일에서 직접 선언하는 것은 정의되지 않은 동작을 발생시킵니다.\nerrno 변수를 직접 선언하는 대신 errno.h 등의 표준 헤더에 포함하도록 합니다.",
  "rule.saqt.q.cpp.1323.example.0.dangerous": "라인 1: errno 변수를 재정의했습니다.",
  "rule.saqt.q.cpp.1323.example.0.safe": "라인 1: errno 변수를 직접 재정의하는 대신 관련된 표준 헤더를 포함시킵니다.",
  "rule.saqt.q.cpp.1323.name": "재정의된 errno",
  "rule.saqt.q.cpp.1324.description": "함수 프로토타입 내 파라미터 이름 체커는 함수의 프로토타입을 선언할 때 매개 변수의 이름을 명시하는 경우를 검출합니다.\n그러면 잘못된 해석으로 인해 헤더에서 선언을 보호하지 못하는 경우 타입 오류가 발생하지 않도록 방지할 수 있습니다.\n함수 프로토타입에서는 매개 변수의 이름을 명시하지 말고 타입만을 포함하도록 합니다.",
  "rule.saqt.q.cpp.1324.example.0.dangerous": "라인 2: 전처리 구문을 실행하면 프로토타입이 void update_status(int 23); 으로 변경되어 문법적인 오류가 발생하게 됩니다.",
  "rule.saqt.q.cpp.1324.example.0.safe": "라인 1: 매개 변수의 이름을 명시하지 않습니다.",
  "rule.saqt.q.cpp.1324.name": "함수 프로토타입 내 파라미터 이름",
  "rule.saqt.q.cpp.1325.description": "생성자 및 소멸자 내에서 가상 함수 호출 체커는 가상 함수를 호출한 생성자나 소멸자를 검출합니다.\n객체의 생성과 소멸 중에 최종 타입은 완전히 구성된 객체의 타입과 다를 수 있습니다. 생성자나 소멸자에서 프로그램이 실행 중일 때 호출할 함수를 결정하는 기능을 사용하면 개발자의 예상과 다른 동작이 발생할 수 있습니다.\n생성자와 소멸자에서 반드시 가상 함수를 호출하지 않도록 합니다.",
  "rule.saqt.q.cpp.1325.example.0.dangerous": "라인 14: 생성자에서 가상 함수를 호출했습니다. 여기서는 자식 클래스의 가상 함수가 호출되지 않고, 기반 클래스의 가상 함수가 호출됩니다.",
  "rule.saqt.q.cpp.1325.example.0.safe": "라인 14: 생성자에서 가상 함수를 호출하지 않도록 합니다.",
  "rule.saqt.q.cpp.1325.name": "생성자 및 소멸자 내에서 가상 함수 호출",
  "rule.saqt.q.cpp.1326.description": "하나만 오버로딩된 new 및 delete 체커는 new와 delete 연산자 오버로딩 중에서 어느 한쪽이 빠져 있는 클래스를 검출합니다.\n메모리 연산자를 오버로딩한다는 것은 이 연산자들이 기본적으로 동작하는 방식과 다른 방식을 원한다는 뜻입니다. 그러나 메모리 연산자는 할당과 해제 쌍으로 이루어져 있습니다. 만약 한쪽이 빠졌을 경우 변경된 방식으로 인해 메모리 관련 연산이 정상적으로 동작하지 않을 수 있습니다.\nnew와 delete 연산자를 같은 영역에서 오버로딩합니다.",
  "rule.saqt.q.cpp.1326.example.0.dangerous": "라인 5: delete 연산자를 같은 영역에서 오버로딩하지 않았습니다.",
  "rule.saqt.q.cpp.1326.example.0.safe": "라인 5: delete 연산자를 같은 영역에서 오버로딩합니다.",
  "rule.saqt.q.cpp.1326.name": "하나만 오버로딩된 new 및 delete",
  "rule.saqt.q.cpp.1327.description": "오버로딩된 후위 연산자에서의 비 const 값 반환 체커는 반환 값에 상수 한정자가 없는 후위 증감 연산자 오버로딩을 검출합니다.\n후위 증감 연산자는 ++와 --연산자가 객체의 뒤에 오는 연산자들입니다. 컴파일러는 증감 연산자 오버로딩 선언 시 인자 타입에 int를 넣어주면 후위 증감 연산자의 오버로딩으로 인식합니다. 즉 이 체커는 구체적으로 반환 타입에 const가 없는 operator++(int), operator--(int) 선언을 검출합니다.\n후위 증감 연산자의 반환 타입이 const가 아닌 경우 일반적인 사용 방법을 벗어나는 함수 호출이 가능합니다. 예를 들어 후위 증감 연산자를 연속으로 붙여 사용하는 i++++ 과 같은 호출도 허용하게 됩니다.\n후위 증감 연산자는 상수 지시자를 붙여 객체를 반환해야 합니다.",
  "rule.saqt.q.cpp.1327.example.0.dangerous": "라인 4: 후위 ++연산자를 오버로딩하였지만 const 형태의 객체를 반환하지 않습니다.",
  "rule.saqt.q.cpp.1327.example.0.safe": "라인 4: 후위 ++연산자를 오버로딩할 때는 const 타입 객체를 반환해야 합니다.",
  "rule.saqt.q.cpp.1327.name": "오버로딩된 후위 연산자에서의 비 const 값 반환",
  "rule.saqt.q.cpp.1328.description": "정적 객체 초기화 중 재귀 호출 체커는 정적 변수를 초기화할 때 재귀 함수 호출이 들어있는 수식을 검출합니다.\n정적 변수 초기화는 처음으로 해당 함수가 호출될 때 이루어 집니다. 만약 정적 변수를 초기화할 때, 초기화 구문에서 재귀 함수가 포함되어 있다면 정적 변수를 초기화하는 시점이 매우 모호해 집니다. 재귀 함수에서 정적 변수의 초기화를 포함하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n정적 변수를 초기화할 때 재귀 함수 호출을 사용하지 않습니다.",
  "rule.saqt.q.cpp.1328.example.0.dangerous": "라인 6: 정적 변수를 초기화하는 도중에 함수를 재귀적으로 호출했습니다.",
  "rule.saqt.q.cpp.1328.example.0.safe": "라인 7: 먼저 정적 변수를 선언한 뒤 재귀 함수의 결과를 대입하도록 합니다.",
  "rule.saqt.q.cpp.1328.name": "정적 객체 초기화 중 재귀 호출",
  "rule.saqt.q.cpp.133.description": "멤버 변수에 대해 사용자 정의 타입의 미사용 체커는 멤버를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 구조체의 멤버 변수 선언에서 Typedef로 재정의된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용하는 멤버 타입, 배열 검사 여부, 포인터 검사 여부, 함수 포인터 검사 여부를 설정할 수 있습니다.\n멤버를 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.133.example.0.dangerous": "라인 2: 구조체 st에 있는 멤버 변수 a의 타입이 재정의된 타입이 아닙니다.",
  "rule.saqt.q.cpp.133.example.0.safe": "라인 3: 구조체의 멤버 변수 타입을 재정의된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.133.name": "멤버 변수에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.cpp.133.option.allowed_member_type.description": "허용되는 멤버 타입을 설정합니다.",
  "rule.saqt.q.cpp.133.option.allowed_member_type.name": "허용되는 멤버 타입",
  "rule.saqt.q.cpp.133.option.check_function_ptr.description": "함수 포인터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.133.option.check_function_ptr.name": "함수 포인터 검사 여부",
  "rule.saqt.q.cpp.133.option.type_target_array.description": "배열 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.133.option.type_target_array.name": "배열 검사 여부",
  "rule.saqt.q.cpp.133.option.type_target_pointer.description": "포인터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.133.option.type_target_pointer.name": "포인터 검사 여부",
  "rule.saqt.q.cpp.1330.description": "불완전 클래스 포인터 삭제 혹은 형변환 체커는 불완전한 클래스를 캐스팅하거나 삭제하는 수식을 검출합니다.\n불완전한 클래스란 전방 선언(Forward Declaration)된 클래스를 의미합니다.\n불완전한 클래스를 조작하는 것은 정상적인 동작을 기대할 수 없습니다. 일반적으로는 컴파일 오류가 발생할 수 있으며, 컴파일이 된다고 하더라도 제대로 된 동작이 이루어지지 않을 가능성이 높습니다.\n불완전한 클래스 포인터를 캐스팅하거나 삭제하지 않도록 합니다.",
  "rule.saqt.q.cpp.1330.example.0.dangerous": "라인 1: Body 클래스를 전방 선언했습니다.\n라인 5: 불완전한 클래스 객체를 삭제했습니다.",
  "rule.saqt.q.cpp.1330.example.0.safe": "라인 5: 위쪽 라인에서 Body 클래스를 정의한 후 삭제하도록 합니다.",
  "rule.saqt.q.cpp.1330.name": "불완전 클래스 포인터 삭제 혹은 형변환",
  "rule.saqt.q.cpp.1331.description": "부동 소수점이 아닌 값에 대한 부동 소수점 연산 체커는 부동 소수점을 연산 하기 전에 정수를 부동 소수점으로 캐스팅하지 않은 수식을 검출합니다.\n부동 소수점 연산 과정에서 정수가 수식에 포함되어 있을 수 있습니다. 만약 부동 소수점 연산을 하기 전에 정수를 미리 부동 소수점으로 캐스팅하지 않으면 값이 오버플로우가 발생할 가능성이 있습니다. 이 경우 정상적인 계산 결과가 나오지 않습니다.\n부동 소수점 연산 전에 정수를 부동 소수점으로 캐스팅합니다.",
  "rule.saqt.q.cpp.1331.example.0.dangerous": "라인 6: 오버플로우 때문에 f의 값이 음수가 될 수 있습니다.",
  "rule.saqt.q.cpp.1331.example.0.safe": "라인 6: 정수를 먼저 부동소수점으로 캐스팅합니다.",
  "rule.saqt.q.cpp.1331.name": "부동 소수점이 아닌 값에 대한 부동 소수점 연산",
  "rule.saqt.q.cpp.1332.description": "비 정적 필드를 포함하는 조건자 함수 체커는 비정적 필드 값을 수정하는 조건자 메소드 선언을 검출합니다.\n조건자(Predicate)는 STL에 속한 알고리즘 함수들의 술어부에 쓰이는 특별한 클래스 타입입니다. 일반적으로 클래스의 선언과 함께 operator()() 메소드를 구현한 형태로 이루어져 있습니다.\n조건자는 컴파일러 구현에 따라 표준 알고리즘에서 몇번 호출될 지 알 수 없습니다. 예를 들어 어떤 조건자가 세번 호출될때마다 true 값을 반환하고, 이 상태를 필드에 저장했다고 가정합니다. 이 조건자를 STL 알고리즘 함수에 전달할 경우 조건자를 그대로 사용하는 컴파일러와 복사본을 만들어 사용하는 컴파일러 간에 결과가 달라집니다.\n기본적으로 필드 값을 사용하지 않는 것을 권장합니다. 혹은 다른 이유로 사용해야 할 경우, 조건자 메소드를 const로 선언하여 상태값을 변경하지 않는다는 것을 보장하도록 합니다.",
  "rule.saqt.q.cpp.1332.example.0.dangerous": "라인 4: 조건자를 const 없이 선언했습니다.\n라인 5: timesCalled 필드 값을 수정했습니다.",
  "rule.saqt.q.cpp.1332.example.0.safe": "라인 4: 조건자를 const로 선언합니다.\n라인 5: timesCalled 필드 값을 수정하였으나, const 선언으로 인해 컴파일 오류가 발생합니다.",
  "rule.saqt.q.cpp.1332.name": "비 정적 필드를 포함하는 조건자 함수",
  "rule.saqt.q.cpp.1333.description": "지정된 문자 배열의 길이 체커는 문자열 리터럴로 초기화되는 배열 선언에서 배열의 크기를 지정하는 경우를 검출합니다.\n배열을 선언할 때 문자열 리터럴로 초기화하면 자동으로 해당 문자열에 맞는 크기가 배열에 할당됩니다. 직접 배열의 크기를 지정하는 경우 잘못된 크기를 지정하여 문자열을 0으로 끝내지 않거나 문자열을 저장할 공간이 부족할 수 있습니다.\n문자열로 초기화되는 배열의 크기를 명시하지 않도록 합니다.",
  "rule.saqt.q.cpp.1333.example.0.dangerous": "라인 1: \"abc\" 문자열을 저장하기 위해 필요한 공간은 '\\0'을 포함하여 총 4 문자입니다. 하지만 배열의 크기를 3으로 직접 지정했으므로 '\\0'을 저장할 공간이 부족하여 0으로 끝나지 않는 비정상적인 문자열이 저장되었습니다.",
  "rule.saqt.q.cpp.1333.example.0.safe": "라인 1: 배열의 크기를 지정하지 않도록 합니다.",
  "rule.saqt.q.cpp.1333.name": "지정된 문자 배열의 길이",
  "rule.saqt.q.cpp.1334.description": "복사 할당 연산 시 누락된 동일성 검사 체커는 인자로 넘어온 객체가 자기 자신과 같은지 비교하는 로직이 빠져 있는 복사 대입 연산자 선언을 검출합니다.\n단, 이러한 비교를 수행하는 로직은 다양하게 작성할 수 있습니다. 이 체커에서는 `this == param`과 같은 한정된 패턴만 검출합니다.\n자기 자신과 동일한 포인터인 경우 객체를 삭제하고 다시 만들기보단 그대로 객체를 반환하는 편이 효율적입니다. 또한 동일한 메모리 공간을 복사하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n복사 대입 연산자를 정의할 때 인자로 넘어온 객체가 자기 자신과 같은지 비교하는 수식을 추가합니다.",
  "rule.saqt.q.cpp.1334.example.0.dangerous": "라인 15: 복사 대입 연산자에서 인자로 받은 객체와 자기 자신이 같은지 비교하지 않고 바로 사용했습니다.",
  "rule.saqt.q.cpp.1334.example.0.safe": "라인 2: 복사 대입 연산자에서 인자로 받은 객체와 자기 자신이 같은지 비교 후 사용합니다.",
  "rule.saqt.q.cpp.1334.name": "복사 할당 연산 시 누락된 동일성 검사",
  "rule.saqt.q.cpp.1335.description": "정렬되지 않은 포인터 사용 체커는 정렬 문제가 있는 주소 값을 placement new로 사용한 수식을 검출합니다.\nplacemnt new는 동적 할당을 하지 않고 특정 메모리 영역을 대상으로 객체를 생성하는 방식입니다.\nplacement new으로 버퍼를 잘못 지정할 경우 정렬 제한을 만족하지 못하게 됩니다. 이 경우 특정 환경에서 버스 오류 등이 발생할 수 있습니다.\nplacement new를 사용할 경우 잘 정렬된 메모리 주소 값을 버퍼로 사용해야 합니다.",
  "rule.saqt.q.cpp.1335.example.0.dangerous": "라인 9: 정렬되지 않은 주소 값을 가지는 s.B를 버퍼로 지정했습니다.\n라인 11: 정의되지 않은 동작이 발생했습니다.",
  "rule.saqt.q.cpp.1335.example.0.safe": "라인 4: 버퍼로 사용할 타입을 union으로 지정합니다.\n라인 7: 버퍼로 사용할 타입과 같은 union 필드를 선언합니다.",
  "rule.saqt.q.cpp.1335.name": "정렬되지 않은 포인터 사용",
  "rule.saqt.q.cpp.1336.description": "소멸자 내에서의 예외 생성 체커는 예외를 외부로 던지는 소멸자를 검출합니다.\n소멸자에서 예외가 발생할 경우 프로그램의 종료로 이어질 수 있습니다. 예를 들어 예외 처리 매커니즘이 진행되는 동안에 소멸자가 호출된 경우 다시 예외가 발생하면 종료 함수가 호출되면서 프로그램은 종료합니다.\n소멸자에서 예외를 던지지 않도록 합니다.",
  "rule.saqt.q.cpp.1336.example.0.dangerous": "라인 4: 소멸자 내에서 예외를 던졌습니다.",
  "rule.saqt.q.cpp.1336.example.0.safe": "라인 1: 소멸자 내에서 예외를 함수 외부로 전파하지 않도록 합니다.",
  "rule.saqt.q.cpp.1336.name": "소멸자 내에서의 예외 생성",
  "rule.saqt.q.cpp.1336.option.misra2008.description": "misra2008 스펙이 좀더 넓게 허용됩니다. catch블록이 try와 같은 블록에 있을때 알람을 발생하지 않습니다.",
  "rule.saqt.q.cpp.1336.option.misra2008.name": "misra2008 15-5-1 스펙으로 동작합니다.",
  "rule.saqt.q.cpp.1337.description": "생성자의 핸들러 내에서의 필드 접근 체커는 catch 절에서 내부 필드를 접근하는 function-try-block 으로 이루어진 생성자와 소멸자를 검출합니다.\nfunction-try-block 이란 메소드의 본문을 대체할 수 있는 구문 형식 중 하나입니다. 함수 본문 대신 try와 catch 문으로 대체할 수 있습니다.\n생성자 및 소멸자 내의 핸들러는 클래스 멤버에 접근하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n생성자 혹은 소멸자가 function-try-block 구문으로 이루어져 있을 경우, catch 절에서 필드를 접근하지 않도록 합니다.",
  "rule.saqt.q.cpp.1337.example.0.dangerous": "라인 8: 생성자의 핸들러에서 필드를 접근했습니다.",
  "rule.saqt.q.cpp.1337.example.0.safe": "라인 8: 필드 대신 생성자의 인자를 사용하여 예외 처리를 수행하도록 합니다.",
  "rule.saqt.q.cpp.1337.name": "생성자의 핸들러 내에서의 필드 접근",
  "rule.saqt.q.cpp.1338.description": "잘못된 예외 처리 순서 체커는 catch 블록의 인자 타입이 자식에서 부모 순으로 정렬되어 있지 않은 catch 문을 검출합니다.\ntry-catch 구문에서 catch블록을 검사하는 순서는 더 위쪽에 있는 catch 블록입니다. 만약 catch에서 받는 인자 타입들이 상속 관계에 있는 경우, 이 타입이 자식에서 부모 순으로 정렬되어 있지 않으면 도달할 수 없는 catch 블록이 생깁니다. 자식 클래스 객체도 부모 타입의 catch 절에서 처리할 수 있기 때문입니다.\ncatch 블록의 인자 타입을 자식에서 부모 순으로 정렬합니다.",
  "rule.saqt.q.cpp.1338.example.0.dangerous": "라인 9: 클래스 D의 부모 클래스인 B 때문에 catch (B &b) 구문이 실행되어 catch (D &d) 쪽으로 도달하지 않았습니다.",
  "rule.saqt.q.cpp.1338.example.0.safe": "라인 7: 자식 클래스의 catch 절이 먼저 오도록 합니다.",
  "rule.saqt.q.cpp.1338.name": "잘못된 예외 처리 순서",
  "rule.saqt.q.cpp.1339.description": "해제 중 예외 생성 체커는 메모리 해제 연산자 내부에서 예외를 던지는 수식을 검출합니다.\n메모리 해제 연산자란 delete와 같은 메모리 해제 연산자를 오버로딩한 것을 의미 합니다.\n메모리 해제 연산자에서 예외가 발생할 경우 프로그램의 종료로 이어질 수 있습니다. 예를 들어 예외 처리 매커니즘이 진행되는 동안에 메모리 해제 연산자가 호출된 경우 다시 예외가 발생하면 종료 함수가 호출되면서 프로그램은 종료합니다.\n메모리 해제 연산자 내에서는 예외를 던지지 않도록 합니다.",
  "rule.saqt.q.cpp.1339.example.0.dangerous": "라인 8: 메모리 해제 함수에서 예외를 던졌습니다.",
  "rule.saqt.q.cpp.1339.example.0.safe": "라인 6: 메모리 해제 함수에서는 예외를 던지지 않도록 합니다.",
  "rule.saqt.q.cpp.1339.name": "해제 중 예외 생성",
  "rule.saqt.q.cpp.134.description": "금지된 배열 타입 사용 체커는 지역 변수의 배열 자료형을 허용되지 않은 배열 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 변수 선언에서 허용된 배열 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 변수 타입, 지역 변수 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n지역 변수를 허용된 배열 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.134.example.0.dangerous": "라인 2: 지역 변수 a를 허용되지 않은 배열 타입 int[]로 선언했습니다.",
  "rule.saqt.q.cpp.134.example.0.safe": "라인 2: 변수를 허용된 배열 타입으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.134.name": "금지된 배열 타입 사용",
  "rule.saqt.q.cpp.134.option.allowed_variable_type.description": "허용되는 변수 타입을 설정합니다.",
  "rule.saqt.q.cpp.134.option.allowed_variable_type.name": "허용되는 변수 타입",
  "rule.saqt.q.cpp.134.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.134.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.cpp.134.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.134.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.1341.description": "비 가상 소멸자 체커는 가상 함수를 포함하고 있으며 소멸자를 가상으로 선언하지 않은 클래스를 검출합니다.\n소멸자를 가상으로 선언하지 않으면 객체 소멸 시 슬라이스 현상(Slicing Problem)이 발생할 수 있습니다. 예를 들어 자식 클래스 객체를 부모 클래스의 포인터로 가지고 있다고 가정합니다. 이때 이 포인터로 소멸자를 호출할 경우, 부모 클래스의 소멸자만 호출되고 자식 클래스의 소멸자는 호출되지 않습니다. 이로 인해 자식 클래스의 필드 등은 제대로 소멸이 이루어지지 않습니다. 가상 함수를 가지고 있는 클래스는 잠재적으로 상속이 이루어질 가능성이 있는 클래스 이므로 소멸자 역시 가상이어야 합니다.\n가상 함수를 포함한 클래스의 소멸자를 가상으로 선언합니다.",
  "rule.saqt.q.cpp.1341.example.0.dangerous": "라인 6: 클래스의 소멸자를 가상으로 선언하지 않았습니다.\n라인 9: 가상 함수를 포함하고 있습니다.",
  "rule.saqt.q.cpp.1341.example.0.safe": "라인 6: 클래스의 소멸자를 가상으로 선언합니다.",
  "rule.saqt.q.cpp.1341.name": "비 가상 소멸자",
  "rule.saqt.q.cpp.1343.description": "복사 할당 연산 시 예외 생성 체커는 예외를 던지는 swap 로직을 구현한 복사 대입 연산자 선언을 검출합니다.\n복사 대입 연산자에서 예외가 발생할 경우 프로그램의 종료로 이어질 수 있습니다. 예를 들어 예외 처리 매커니즘이 진행되는 동안에 복사 대입 연산자가 호출된 경우 다시 예외가 발생하면 종료 함수가 호출되면서 프로그램은 종료합니다.\n복사 대입 연산자의 swap 로직에서 예외를 발생시키지 않도록 합니다.",
  "rule.saqt.q.cpp.1343.example.0.dangerous": "라인 5: Swap() 메소드가 예외를 던질 수 있습니다.",
  "rule.saqt.q.cpp.1343.example.0.safe": "라인 5: 복사 대입 연산자에서 예외를 발생시키는 함수를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1343.name": "복사 할당 연산 시 예외 생성",
  "rule.saqt.q.cpp.1344.description": "누락된 생성자 내 초기화 체커는 생성 과정에서 포함해야 할 초기화 대상 중 누락된 것이 있는 생성자를 검출합니다.\n구체적으로는 다음의 항목들을 만족해야 합니다. 모든 생성자들은 각각의 가상 부모 클래스 생성자, 비가상 부모 클래스 생성자, 비정적 데이터 멤버의 초기값이나 생성자 호출을 제공해야 합니다. 초기화는 멤버 초기화 리스트를 사용하여 수행되어야 합니다. 초기화 순서는 먼저 가장 상위의 베이스 클래스를 왼쪽으로 하여 파생된 클래스 순으로 생성자를 호출합니다. 이후 비정적 데이터 멤버를 선언한 순서대로 나열하도록 합니다.\n초기화 목록 중 누락된 항목이 있을 경우 그 값은 예측할 수 없으며 프로그램의 오동작을 일으킵니다. 또한 멤버 초기화를 사용하면 대입 연산을 사용한 초기화보다 오버헤드를 줄일 수 있습니다.\n검출 조건에서 명시한 내용대로 초기화를 수행합니다.",
  "rule.saqt.q.cpp.1344.example.0.dangerous": "라인 7: 초기화가 필요한 항목에 초기화를 제공하지 않았습니다.",
  "rule.saqt.q.cpp.1344.example.0.safe": "라인 7: 멤버 초기화 리스트를 사용하여 초기화가 필요한 항목들을 순서에 맞게 초기화했습니다.",
  "rule.saqt.q.cpp.1344.name": "누락된 생성자 내 초기화",
  "rule.saqt.q.cpp.1345.description": "잘못된 생성자 내에서의 초기화 순서 체커는 초기화 해야 할 필드들의 순서가 올바르지 않은 초기화 리스트 목록을 검출합니다.\n초기화 리스트의 필드 순서가 달라지는 경우 초기화되지 않은 값이 들어갈 수 있습니다. 이 경우 초기화되지 않은 필드 값은 예측할 수 없으며 프로그램의 오동작을 일으킵니다.\n초기화 리스트의 필드들은 반드시 선언한 순서대로 초기화를 수행합니다.",
  "rule.saqt.q.cpp.1345.example.0.dangerous": "라인 5: DependsOnSomeVal의 값은 SomeVal이 초기화되기 전 값을 사용하여, 결과적으로 초기화되지 않습니다.",
  "rule.saqt.q.cpp.1345.example.0.safe": "라인 5: 필드가 선언된 순서대로 초기화하도록 합니다.",
  "rule.saqt.q.cpp.1345.name": "잘못된 생성자 내에서의 초기화 순서",
  "rule.saqt.q.cpp.1346.description": "추상 클래스의 public 생성자 체커는 public 접근 권한을 가진 추상 클래스의 생성자를 검출합니다.\n순수 가상 함수로 이루어진 추상 클래스는 일반적으로 객체를 생성할 수 없어야 하며, 오로지 해당 클래스의 상속 클래스에서만 접근하여야 합니다. 따라서 생성자는 public 접근 권한을 가지지 않아야 합니다.\n추상 클래스의 생성자 접근 권한을 protected로 설정합니다.",
  "rule.saqt.q.cpp.1346.example.0.dangerous": "라인 3: 추상 클래스의 생성자를 public 접근 권한으로 선언했습니다.",
  "rule.saqt.q.cpp.1346.example.0.safe": "라인 3: 추상 클래스의 생성자 접근 권한을 protected로 선언합니다.",
  "rule.saqt.q.cpp.1346.name": "추상 클래스의 public 생성자",
  "rule.saqt.q.cpp.1347.description": "오버로딩된 비 가상 함수 체커는 부모 클래스에서 선언된 비가상 함수를 사용할 수 없는 자식 클래스 선언을 검출합니다.\n부모 클래스에서 비가상으로 선언한 함수는 이 클래스를 상속하더라도 함수의 동작이 바뀌지 않길 원하는 함수입니다. 만약 자식 클래스에서 이러한 함수의 동작을 바꿔버릴 경우 예상하지 않은 동작이 발생할 수 있습니다.\n부모 클래스의 비가상 함수를 숨기지 않도록 합니다. 다른 동작이 필요한 경우 이름을 바꾸도록 합니다.",
  "rule.saqt.q.cpp.1347.example.0.dangerous": "라인 7: 부모 클래스의 비가상 함수를 가렸습니다.",
  "rule.saqt.q.cpp.1347.example.0.safe": "라인 5: 부모 클래스의 비가상 함수를 가리지 않도록 합니다.",
  "rule.saqt.q.cpp.1347.name": "오버로딩된 비 가상 함수",
  "rule.saqt.q.cpp.1348.description": "일치하지 않는 기본값 체커는 부모 클래스의 가상 함수와 기본 인자 값이 다른 자식 클래스의 가상 함수 선언을 검출합니다.\n기본 인자 값(Default Arguments)은 함수 선언 시 특정 인자의 기본값을 지정해주는 것을 의미합니다. 부모 클래스에서 가상 함수를 선언할 때 기본 인자 값을 설정할 수 있습니다. 이때 이 클래스를 상속한 자식 클래스가 가상 함수를 오버라이딩할 경우, 기본 인자 값을 다르게 설정하는 경우가 있습니다.\n기본 인자 값을 다르게 주었을 경우 의도했던 바와 다르게 동작할 수 있습니다. 기본 인자 값을 사용하는 함수 호출에서 부모 클래스와 자식 클래스의 동작이 달라지는건 일반적으로 의도한 상황이 아닙니다.\n반드시 자식 클래스와 부모 클래스 가상 함수의 기본 인자 값은 동일하게 설정하도록 합니다.",
  "rule.saqt.q.cpp.1348.example.0.dangerous": "라인 3: 기본 인자값을 10으로 설정했습니다.\n라인 10: 오버라이딩한 메소드의 기본 인자 값이 다릅니다.",
  "rule.saqt.q.cpp.1348.example.0.safe": "라인 10: 동일한 기본 인자 값을 사용합니다.",
  "rule.saqt.q.cpp.1348.name": "일치하지 않는 기본값",
  "rule.saqt.q.cpp.1349.description": "비 protected 복사 생성자 체커는 public 접근 권한을 가진 추상 클래스의 복사 대입 연산자를 검출합니다.\n순수 가상 함수로 이루어진 추상 클래스는 일반적으로 객체를 생성할 수 없어야 하며, 오로지 해당 클래스의 상속 클래스에서만 접근하여야 합니다. 따라서 복사 대입 연산자는 public 접근 권한을 가지지 않아야 합니다. 이 조치는 자식 클래스의 복사 대입 연산자로만 호출할 수 있도록 강제하는 제약도 추가할 수 있습니다.\n추상 클래스의 복사 대입 연산자 접근 권한을 protected로 설정합니다.",
  "rule.saqt.q.cpp.1349.example.0.dangerous": "라인 4: 추상 클래스의 복사 대입 연산자를 public으로 선언했습니다.\n라인 18: 기본 클래스의 복사 대입 연산자를 사용했습니다. Derived 클래스의 값을 복사하지 않습니다.",
  "rule.saqt.q.cpp.1349.example.0.safe": "라인 5: 복사 대입 연산자를 protected로 선언합니다.\n라인 19: 컴파일 단계에서 오류를 발생시켜 줍니다.",
  "rule.saqt.q.cpp.1349.name": "비 protected 복사 생성자",
  "rule.saqt.q.cpp.135.description": "허용되지 않은 타입 사용 체커는 지역 변수를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 지역 변수 선언에서 허용된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 변수 타입, 지역 변수 검사 여부, 인자 검사 여부를 설정할 수 있습니다.\n지역 변수를 허용된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.135.example.0.dangerous": "라인 1: 매개변수 변수 a를 허용되지 않은 타입 short으로 선언했습니다.",
  "rule.saqt.q.cpp.135.example.0.safe": "라인 1: 변수를 허용된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.135.name": "허용되지 않은 타입 사용",
  "rule.saqt.q.cpp.135.option.allowed_variable_type.description": "허용되는 변수 타입을 설정합니다.",
  "rule.saqt.q.cpp.135.option.allowed_variable_type.name": "허용되는 변수 타입",
  "rule.saqt.q.cpp.135.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.135.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.cpp.135.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.135.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.1350.description": "암시적 가상 함수 체커는 자식 클래스에서 virtual 키워드 없이 오버라이딩한 메소드를 검출합니다.\n부모 클래스의 가상 함수는 virtual로 선언되어 있습니다. 자식 클래스에서 이 가상 함수를 오버라이딩하겠다고 결정하였을 때, 오버라이딩 메소드를 선언하는 과정에서 virtual 키워드가 누락될 수 있습니다.\nvirtual 키워드가 사라질 경우 첫 번째 자식 클래스를 상속하는 두 번째 자식 클래스에서 해당 메소드가 가상인지 아닌지 알 수 없습니다.\n자식 클래스에서 다형성을 가진 메소드는 항상 명시적으로 가상 함수임을 선언하도록 합니다.",
  "rule.saqt.q.cpp.1350.example.0.dangerous": "라인 9: f() 메소드를 virtual로 선언하지 않았습니다.\n라인 10: operator+() 메소드를 virtual로 선언하지 않았습니다.\n라인 11: 소멸자를 virtual로 선언하지 않았습니다.",
  "rule.saqt.q.cpp.1350.example.0.safe": "라인 9: f() 메소드를 명시적으로 virtual로 선언합니다.\n라인 10: operator+() 메소드를 명시적으로 virtual로 선언합니다.\n라인 11: 소멸자를 명시적으로 virtual로 선언합니다.",
  "rule.saqt.q.cpp.1350.name": "암시적 가상 함수",
  "rule.saqt.q.cpp.1352.description": "const 멤버 함수에서의 비 const 핸들 반환 체커는 const로 선언되어 있으나 반환 타입이 비상수 핸들인 메소드를 검출합니다.\n여기에서 핸들이란 복사된 객체가 아닌 포인터나 참조형으로 되어 있는 클래스 내부 데이터를 의미합니다.\nconst 메소드에서 비 상수 핸들을 반환할 경우 이 값은 외부에서 조작할 수 있게 됩니다. 따라서 캡슐화를 위반하는 결과로 이어지며 원하지 않은 결과가 발생할 수 있습니다.\nconst 메소드에서 클래스 내부 데이터를 조작할 수 있는 비 상수 핸들을 반환하지 않도록 합니다.",
  "rule.saqt.q.cpp.1352.example.0.dangerous": "라인 4: pValue 핸들을 비 상수 타입으로 반환했습니다.\n라인 12: 클래스의 private 데이터가 변경되었습니다.",
  "rule.saqt.q.cpp.1352.example.0.safe": "라인 3: 반환 타입을 상수로 변경합니다.\n라인 13: 컴파일 단계에서 오류가 발생합니다.",
  "rule.saqt.q.cpp.1352.name": "const 멤버 함수에서의 비 const 핸들 반환",
  "rule.saqt.q.cpp.1353.description": "비 추상 베이스 클래스 체커는 자식 클래스에서 public으로 상속한 비 추상 클래스를 검출합니다.\n객체지향 관점에서 부모 클래스는 추상 클래스 인 것이 좋습니다. 이것은 부모 클래스란 자식 클래스들의 공통점을 가지고 추상화하여 정의하는 것이 일반적이기 때문입니다.\n부모 클래스를 public으로 상속받을 경우 부모 클래스를 추상 클래스로 만들도록 합니다.",
  "rule.saqt.q.cpp.1353.example.0.dangerous": "라인 2: 부모 클래스를 일반 클래스로 선언했습니다.\n라인 5: 자식 클래스에서 부모 클래스를 상속 받았으나, 부모 클래스는 추상 클래스가 아닙니다.",
  "rule.saqt.q.cpp.1353.example.0.safe": "라인 2: 부모 클래스를 추상 클래스로 만듭니다.",
  "rule.saqt.q.cpp.1353.name": "비 추상 베이스 클래스",
  "rule.saqt.q.cpp.1354.description": "너무 많은 베이스 클래스 체커는 순수 추상 클래스가 아닌 부모 클래스를 2개 이상 상속한 자식 클래스 선언을 검출합니다.\n다이아몬드 문제란 자식 클래스에서 2개 이상의 부모 클래스를 상속하고, 이 부모 클래스들도 최상위 부모 클래스 1개를 상속했을 때 최상위 부모 메소드를 호출하면 모호성이 발생할 수 있는 문제입니다.\nC++에서는 다중상속을 허용합니다. 하지만 추상 클래스가 아닌 부모 클래스를 여러 개 상속할 경우 다이아몬드 상속 등 문제가 발생할 수 있습니다. 이 경우 최상위 부모 클래스의 메소드를 호출하면 컴파일 오류가 발생합니다.\n이 문제를 해결 하는 방법은 다음과 같은 방법들이 있습니다. 자식 클래스에서 추상 클래스가 아닌 부모 클래스를 1개만 상속하도록 합니다. 자식 클래스에서 부모 클래스를 상속할 때 가상 상속을 사용합니다. 부모 클래스를 추상 클래스로 만듭니다.",
  "rule.saqt.q.cpp.1354.example.0.dangerous": "라인 10: Derived1, Derived2 모두 기본 클래스를 상속했습니다. 다이아몬드 문제가 발생합니다.",
  "rule.saqt.q.cpp.1354.example.0.safe": "라인 10: 추상 클래스가 아닌 부모 클래스는 하나만 상속합니다.",
  "rule.saqt.q.cpp.1354.name": "너무 많은 베이스 클래스",
  "rule.saqt.q.cpp.1355.description": "멤버 이진 연산자 체커는 산술 연산을 오버로딩한 메소드 정의를 검출합니다.\nC++에서는 산술 연산도 오버로딩을 지원합니다. 이러한 오버로딩은 클래스의 메소드로 오버로딩하는 방법과 일반 함수로 오버로딩 두가지가 존재합니다.\n메소드로 구현한 이항 연산자는 혼합형 수치 연산 등을 수행하는데 있어 해당 객체가 우측 피연산자 인 경우 잘 동작하지 않습니다. 이항 연산자 오버로딩의 좌측항은 해당 메소드의 주체가 되는 객체가 옵니다. 이 때 산술 연산의 경우 좌측항에 오는 값이 클래스 타입이 아닌 일반 정수가 실수 값이 올 수가 있습니다. 이와 같은 상황에서는 메소드로 산술 연산을 오버로딩하는 것이 불가능합니다.\n만약 산술 연산을 사용할 필요가 있는 클래스인 경우 이항 연산자를 메소드로 구현하지 않습니다. 대신 좌측 피연산자의 암시적 변환을 허용하는 일반적인 이항 연산자 함수를 구현해야 합니다. 이 방법을 사용할 경우 정수나 실수 값이 산술 연산을 필요로 하는 클래스 타입으로 암시적으로 캐스팅됩니다. 암시적으로 캐스팅된 결과는 일반 이항 연산자 함수에서 위치의 제약 없이 사용할 수 있습니다.",
  "rule.saqt.q.cpp.1355.example.0.dangerous": "라인 4: +연산을 메소드로 구현했습니다.\n라인 8: complex 클래스의 operator+() 메소드가 호출됩니다. 실질적으로 a.operator+(2) 메소드의 호출입니다.\n라인 9: 정수2와 complex 클래스의 일반적인 덧셈 연산은 수행할 수 없습니다. 컴파일 오류입니다.",
  "rule.saqt.q.cpp.1355.example.0.safe": "라인 5: +연산을 일반 함수로 구현합니다.\n라인 9: 정상적으로 컴파일 됩니다. 정수 2의 경우 complex의 생성자를 explicit으로 선언하지 않았기 때문에 암시적 캐스팅이 가능합니다.",
  "rule.saqt.q.cpp.1355.name": "멤버 이진 연산자",
  "rule.saqt.q.cpp.1356.description": "부적절한 [] 연산자 오버로딩 체커는 배열 연산자 오버로딩을 상수와 비상수 버전 모두를 제공하지 않은 클래스를 검출합니다.\n클래스에서 배열 연산자 오버로딩의 비상수 버전만을 제공하고 상수 버전을 제공하지 않을 경우 때대로 의도하지 않은 방식으로 사용될 수 있습니다. 예를 들어 배열 연산자 오버로딩이 비상수 버전만 존재할 경우, const로 선언한 객체의 내부 필드값을 수정하는 문제가 발생할 수 있습니다.\n클래스에서 배열 연산자를 오버로딩할 경우 상수 버전과 비상수 버전 모드 정의하도록 합니다.",
  "rule.saqt.q.cpp.1356.example.0.dangerous": "라인 8: 객체를 const로 선언했습니다.\n라인 9: 상수 객체에 대입 연산이 수행되어 필드 값을 변경했습니다.",
  "rule.saqt.q.cpp.1356.example.0.safe": "라인 3: 상수 버전 배열 연산자를 제공합니다.\n라인 10: const 제약이 잘 지켜져 컴파일러가 오류를 발생시킵니다.",
  "rule.saqt.q.cpp.1356.name": "부적절한 [] 연산자 오버로딩",
  "rule.saqt.q.cpp.1357.description": "너무 많은 실행 경로 체커는 함수에 반복문으로 인한 순환을 제외하고 직선으로 실행 가능한 경로가 지나치게 많은 경우를 검출합니다.\n함수 내에서 순환하지 않는 실행 경로의 수가 지나치게 많으면 테스트 및 관리에 어려움이 커집니다.\n함수 내 직선 실행 경로의 수가 200개 이하가 되도록 함수를 작성합니다.",
  "rule.saqt.q.cpp.1357.example.0.dangerous": "라인 12: 실행 경로가 너무 많습니다.",
  "rule.saqt.q.cpp.1357.example.0.safe": "라인 4: 실행 경로의 수를 200개 이하로 유지하도록 합니다.",
  "rule.saqt.q.cpp.1357.name": "너무 많은 실행 경로",
  "rule.saqt.q.cpp.1358.description": "비 클래스 타입 객체 예외 생성 체커는 허용되지 않은 타입을 예외로 던지는 수식을 검출합니다.\n여기서 허용하는 타입이란 오로지 클래스 타입만이며, 나머지는 전부 허용되지 않는 타입입니다.\n클래스 타입은 부수적으로 오류의 원인이 되는 정보를 가질수 있고, 클래스 타입 자체가 오류의 종류를 설명하기도 합니다.\n예외로 던지는 타입은 반드시 std::exception 클래스와 상속 관계에 있는 클래스 타입으로 합니다.",
  "rule.saqt.q.cpp.1358.example.0.dangerous": "라인 4: 정수형 값을 예외로 던졌습니다.",
  "rule.saqt.q.cpp.1358.example.0.safe": "라인 6: std::exception 클래스와 상속 관계에 있는 클래스 객체를 예외로 던집니다.",
  "rule.saqt.q.cpp.1358.name": "비 클래스 타입 객체 예외 생성",
  "rule.saqt.q.cpp.1359.description": "참조에 의한 예외 처리 체커는 던진 예외를 참조형이 아닌 타입으로 받는 catch 구문을 검출합니다.\n예외를 받는 방법으로는 포인터를 통해 받는 방법, 값으로 받는 방법, 참조형으로 받는 방법이 있습니다.\n포인터로 예외를 받는 것은 지역 변수로 선언된 예외 객체의 포인터 반환 문제, delete 문제등이 발생할 수 있습니다. 값으로 예외를 받는 것은 예외 객체의 복사 문제, 자식 클래스를 부모 클래스로 받으면서 발생하는 슬라이스 문제등이 발생할 수 있습니다.\ncatch 구문에서 항상 참조형으로 예외를 받도록 합니다.",
  "rule.saqt.q.cpp.1359.example.0.dangerous": "라인 3: 예외 객체를 주소 값으로 던졌습니다.\n라인 9: 포인터로 예외를 받았습니다. 하지만 지역 변수로 선언된 객체이므로 이 시점에서는 이미 유효하지 않은 포인터입니다.",
  "rule.saqt.q.cpp.1359.example.0.safe": "라인 6: 예외 객체를 생성하여 던집니다.\n라인 12: 참조형으로 예외를 받습니다.",
  "rule.saqt.q.cpp.1359.name": "참조에 의한 예외 처리",
  "rule.saqt.q.cpp.136.description": "금지된 복합 타입 사용 체커는 배열, 문자열, 구조체와 같은 복합형 변수(compound variable)를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 허용되는 변수 타입, 포인터 타입 검사 여부, 배열 타입 검사 여부, 재정의 타입 검사 여부, 지역 변수 검사 여부, 인자 검사 여부, 이름이 정의되지 않은 구조체/공용체 무시 여부를 설정할 수 있습니다.\n복합형 변수를 허용된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.136.example.0.dangerous": "라인 7: 지역 변수 st를 허용되지 않은 자료형인 bad로 선언했습니다.",
  "rule.saqt.q.cpp.136.example.0.safe": "라인 7: 지역 변수 st를 허용된 자료형인 good으로 선언합니다.",
  "rule.saqt.q.cpp.136.name": "금지된 복합 타입 사용",
  "rule.saqt.q.cpp.136.option.allowed_variable_type.description": "허용되는 변수 타입을 설정합니다.",
  "rule.saqt.q.cpp.136.option.allowed_variable_type.name": "허용되는 변수 타입",
  "rule.saqt.q.cpp.136.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.136.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.136.option.ignore_anonymous.description": "이름이 정의되지 않은 구조체/공용체는 무시합니다.",
  "rule.saqt.q.cpp.136.option.ignore_anonymous.name": "이름이 정의되지 않은 구조체/공용체 무시 여부",
  "rule.saqt.q.cpp.136.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.136.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.cpp.136.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.136.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.136.option.type_target_array.description": "배열 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.136.option.type_target_array.name": "배열 타입 검사 여부",
  "rule.saqt.q.cpp.136.option.type_target_pointer.description": "포인터 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.136.option.type_target_pointer.name": "포인터 타입 검사 여부",
  "rule.saqt.q.cpp.136.option.type_target_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.136.option.type_target_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.1360.description": "불린 값에 대해 증가 연산자 사용 체커는 bool 형식의 변수에 증가 연산자('++')를 사용하는 경우를 검출합니다.\nbool 형식의 변수에 증가 연산자('++')를 사용하지 않도록 합니다. 이와 같은 방식은 더 이상 사용되지 않습니다.\nbool형식의 변수에 증가 연산자를 사용하지 않습니다. 직접적인 참, 거짓을 대입하거나 toggle()이나 set(), clear() 같은 사용자 정의 함수를 만들어 사용하도록 합니다.",
  "rule.saqt.q.cpp.1360.example.0.dangerous": "라인 2: bool 타입의 변수에 증가 연산자를 사용했습니다.",
  "rule.saqt.q.cpp.1360.example.0.safe": "라인 2: 직접적으로 true, false를 대입합니다. 혹은 사용자 정의 함수를 만들어 사용할 수도 있습니다.",
  "rule.saqt.q.cpp.1360.name": "불린 값에 대해 증가 연산자 사용",
  "rule.saqt.q.cpp.1364.description": "정수 타입에서 열거형 타입으로 형변환 체커는 정수형을 열거형으로 캐스팅하는 경우를 검출합니다.\n정수형을 열거형으로 캐스팅하지 않도록 합니다. 정수값이 열거형의 범위에 포함되지 않을시 캐스팅 수행 결과는 명시되지 않았습니다. 이것은 캐스팅 시 오버플로우가 발생할 수도 있으며 개발자는 원하던 값과 다른 결과를 얻게 될것입니다.\n의도하지 않은 동작을 수행할 수 있습니다.\n정수형을 열거형으로 캐스팅하지 않도록 합니다.",
  "rule.saqt.q.cpp.1364.example.0.dangerous": "라인 4: 열거형 범위를 벗어나는 정수값을 캐스팅하고 있습니다.",
  "rule.saqt.q.cpp.1364.example.0.safe": "라인 3: 정수값을 캐스팅하여 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1364.name": "정수 타입에서 열거형 타입으로 형변환",
  "rule.saqt.q.cpp.1365.description": "암시적 클래스 템플릿 변환 체커는 서로 연관성이 없는 클래스 템플릿 간에 암시적 캐스팅이 발생하는 수식을 검출합니다.\n적절한 변환 연산자를 제공하면 서로 연관이 없는 클래스 템플릿 간에도 암시적 캐스팅이 가능한 경우가 있습니다.\n템플릿 인스턴스화된 클래스 템플릿은 서로 별개의 타입입니다. 스마트 포인터와 같은 템플릿 클래스에서 널 비교를 위해 암시적 변환 연산자를 제공하는 경우가 있습니다. 이 변환 연산자로 서로 다른 타입 간의 비교가 가능해지며, 이것은 원하는 동작이 아닐 수 있습니다.\n서로 연관성이 없는 클래스 템플릿간에 암시적 캐스팅이 이루어지지 않도록 관련된 변환 연산자를 제거합니다.",
  "rule.saqt.q.cpp.1365.example.0.dangerous": "라인 5: void*타입의 암시적 캐스팅 연산자를 구현했습니다.\n라인 10: 서로 다른 포인터 타입 간에 비교가 이루어졌습니다. 컴파일러는 오류를 내지 않습니다.",
  "rule.saqt.q.cpp.1365.example.0.safe": "라인 1: 클래스에서 암시적 캐스팅 연산자를 제거합니다.\n라인 9: 서로 다른 타입 간의 비교이므로 컴파일 오류가 발생합니다.",
  "rule.saqt.q.cpp.1365.name": "암시적 클래스 템플릿 변환",
  "rule.saqt.q.cpp.1366.description": "상충되는 클래스 템플릿 내 메소드 체커는 템플릿 인스턴스화 과정에서 충돌이 발생할 수 있는 메소드 선언을 검출합니다.\n템플릿 클래스가 템플릿 인스턴스화 과정에서 충돌이 발생할 경우 정상적으로 컴파일이 이루어지지 않습니다.\n클래스 템플릿에서 잠재적으로 충돌할 수 있는 메소드를 정의하지 않도록 합니다. 혹은 템플릿 메소드를 정의하는 과정에서 함수명을 다르게 하거나 템플릿 특수화를 사용하도록 합니다. 이 방법들을 통해 문제를 우회할 수 있습니다.",
  "rule.saqt.q.cpp.1366.example.0.dangerous": "라인 4: 템플릿 타입을 인자로 사용하는 function() 메소드를 선언했습니다.\n라인 5: int 타입을 인자로 사용하는 일반 function() 선언했습니다.\n라인 8: int 타입으로 템플릿 객체를 생성했습니다. 이 선언은 컴파일 오류가 발생합니다.",
  "rule.saqt.q.cpp.1366.example.0.safe": "라인 4: 템플릿 타입을 인자로 사용하는 메소드 선언과 충돌하는 메소드를 제거합니다.",
  "rule.saqt.q.cpp.1366.name": "상충되는 클래스 템플릿 내 메소드",
  "rule.saqt.q.cpp.1367.description": "베이스 클래스 객체 컨테이너 내 파생 클래스 객체 체커는 부모 클래스 객체를 저장하는 컨테이너에 자식 클래스 객체를 저장하는 수식을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다.\n자식 클래스를 컨테이너에 저장하는 것은 슬라이스 문제(Slice Problem)가 발생할 수 있습니다. 컨테이너는 내부적으로 많은 복사 연산을 사용합니다. 이 경우 자식 클래스에 속한 필드값들이 제대로 복사되지 않을 수 있습니다.\n부모 클래스 객체를 저장하는 컨테이너에 자식 클래스 객체를 저장하지 않도록 합니다. 만약 이러한 동작이 필요하다면 객체를 값이 아닌 포인터로 저장하도록 합니다.",
  "rule.saqt.q.cpp.1367.example.0.dangerous": "라인 10: 부모 클래스 객체를 저장하는 컨테이너에 자식 클래스 객체를 넣었습니다.",
  "rule.saqt.q.cpp.1367.example.0.safe": "라인 10: 객체를 값이 아닌 포인터로 저장합니다.",
  "rule.saqt.q.cpp.1367.name": "베이스 클래스 객체 컨테이너 내 파생 클래스 객체",
  "rule.saqt.q.cpp.1368.description": "컨테이너 크기를 0과 비교 체커는 size() 함수의 반환 값을 0과 비교하는 경우를 검출합니다.\n컨테이너의 크기를 0과 비교하는 것은 컨테이너가 요소를 하나라도 가지고 있는지를 판단하는 것이며, size() 함수는 컨테이너의 종류에 따라 선형 시간 복잡도를 가질 수도 있습니다. 반면에 empty() 함수의 경우 상수 시간복잡도를 가지므로 성능의 측면에서 컨테이너가 비어 있는지 확인하기 위해 굳이 size() 함수를 사용할 이유가 없습니다.\n컨테이너가 비어 있는지 확인하려면 empty() 함수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1368.example.0.dangerous": "라인 2: list 컨테이너는 미리 요소의 수를 계산하지 않기 때문에 size() 함수는 선형 시간복잡도를 가집니다.",
  "rule.saqt.q.cpp.1368.example.0.safe": "라인 2: empty() 함수는 상수 시간복잡도를 가집니다. 이 코드는 size()의 결과를 0과 비교하는것과 동일한 동작을 수행합니다.",
  "rule.saqt.q.cpp.1368.name": "컨테이너 크기를 0과 비교",
  "rule.saqt.q.cpp.1369.description": "public 베이스 클래스로 STL 컨테이너 사용 체커는 STL 컨테이너를 부모 클래스로 상속한 클래스를 검출합니다.\nSTL 컨테이너를 베이스 클래스로 상속하지 않도록 합니다.\n모든 STL 컨테이너는 베이스 클래스로 상속하는 것을 상정하지 않고 만들어졌습니다. 예를 들어 STL 컨테이너의 소멸자는 가상이 아닙니다. 만약 STL 컨테이너를 상속할 경우 소멸자에서 슬라이스 문제(Slice Problem)가 발생할 수 있습니다. 이 경우 자식 클래스에서 속한 필드값들의 처리가 제대로 이루어지지 않을 수 있습니다.\n클래스를 선언할 때 STL 컨테이너를 상속하지 않습니다. STL 컨테이너가 필요한 경우 상속이 아닌 필드를 선언하여 사용하도록 합니다.",
  "rule.saqt.q.cpp.1369.example.0.dangerous": "라인 1: STL 컨테이너인 벡터를 상속했습니다.",
  "rule.saqt.q.cpp.1369.example.0.safe": "라인 1: 벡터를 상속하지 않습니다.",
  "rule.saqt.q.cpp.1369.name": "public 베이스 클래스로 STL 컨테이너 사용",
  "rule.saqt.q.cpp.137.description": "금지된 포인터 타입 사용 체커는 포인터 변수를 허용되지 않은 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 허용되는 변수 타입, 지역 변수 검사 여부, 인자 검수 여부, 재정의 타입 검사 여부를 설정할 수 있습니다.\n포인터 변수를 허용된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.137.example.0.dangerous": "라인 1: 매개변수인 변수 a를 옵션에 허용된 자료형으로 선언하지 않았습니다.",
  "rule.saqt.q.cpp.137.example.0.safe": "라인 1: 매개변수인 변수 a를 옵션에 허용된 자료형으로 선언합니다.",
  "rule.saqt.q.cpp.137.name": "금지된 포인터 타입 사용",
  "rule.saqt.q.cpp.137.option.allowed_variable_type.description": "허용되는 변수 타입을 설정합니다.",
  "rule.saqt.q.cpp.137.option.allowed_variable_type.name": "허용되는 변수 타입",
  "rule.saqt.q.cpp.137.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.137.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.137.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.137.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.cpp.137.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.137.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.1370.description": "auto_ptr 컨테이너 생성 체커는 컨테이너에 auto_ptr 타입을 담는 변수 선언을 검출합니다.\n컨테이너란 여러 가지 데이터 타입을 담아둘 수 있는 C++ 표준 라이브러리에 속한 타입을 의미합니다. 대표적으로 벡터가 있습니다.\nauto_ptr의 구현 특성 상 값을 복사하게 될 경우 원래의 값을 잃어버리게 됩니다. 컨테이너는 내부적으로 많은 복사 연산을 사용합니다. 따라서 컨테이너에 auto_ptr 타입을 담는 것은 비정상적인 동작이 일어날 가능성이 무척 높습니다.\n컨테이너에 auto_ptr 타입을 담지 않도록 합니다. 만약 컨테이너에 스마트 포인터를 담을 필요가 있는 경우 참조 카운팅(Reference Counting) 기능이 있는 스마트 포인터를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1370.example.0.dangerous": "라인 1: 컨테이너에 auto_ptr을 담는 vec 변수를 선언했습니다.\n라인 3: obj1가 초기화되고 난 후 vec[0]은 내부적으로 널 포인터를 가집니다.",
  "rule.saqt.q.cpp.1370.example.0.safe": "라인 1: 참조 카운팅 기능을 지원하는 스마트 포인터인 shared_ptr을 사용합니다.",
  "rule.saqt.q.cpp.1370.name": "auto_ptr 컨테이너 생성",
  "rule.saqt.q.cpp.1371.description": "Boolean 타입 벡터 사용 체커는 벡터에 bool 타입을 담는 변수 선언을 검출합니다.\n벡터에 bool 타입을 담는 것은 표준에 명시된 컨테이너의 요구사항을 준수하지 않습니다. 이러한 사용 방법은 STL 알고리즘에서 정상적으로 동작하지 않을 가능성이 높습니다.\n반드시 벡터에 bool 타입을 담지 않습니다. 만약 bool 타입의 집합이 필요한 경우에는 비트셋을 사용합니다.",
  "rule.saqt.q.cpp.1371.example.0.dangerous": "라인 1: 벡터에 bool 타입을 담는 변수를 선언했습니다.",
  "rule.saqt.q.cpp.1371.example.0.safe": "라인 1: 벡터 대신 비트셋을 사용합니다.",
  "rule.saqt.q.cpp.1371.name": "Boolean 타입 벡터 사용",
  "rule.saqt.q.cpp.1372.description": "식별자 명명 규칙 위반 체커는 식별자 이름이 밑줄(_)로 시작하는 경우를 검출합니다.\n식별자 이름의 첫 시작은 밑줄(_)로 시작하지 말아야 합니다. 보통 밑줄로 시작하는 식별자 이름은 표준 라이브러리에서 사용하는 경우가 많습니다.\n식별자 이름을 밑줄로 시작하지 않도록 작성합니다.",
  "rule.saqt.q.cpp.1372.example.0.dangerous": "라인 1: 식별자의 이름이 밑줄로 시작했습니다.",
  "rule.saqt.q.cpp.1372.example.0.safe": "라인 1: 식별자의 이름을 밑줄이 아닌 다른 문자로 시작하십시오.",
  "rule.saqt.q.cpp.1372.name": "식별자 명명 규칙 위반",
  "rule.saqt.q.cpp.1378.description": "소스 파일 내 extern 변수 및 함수 체커는 extern 변수와 함수 정의가 인터페이스 파일이 아닌 곳에 선언된 경우를 검출합니다.\n인터페이스 파일 외에 extern 항목이 있으면 해당 항목이 어디에 선언되었는지 파악하기 어렵습니다. 복잡한 프로그램은 개발자가 의도하지 않은 동작을 할 수 있습니다.\nextern 변수와 함수 정의를 인터페이스 파일에서만 표현하도록 합니다.",
  "rule.saqt.q.cpp.1378.example.0.dangerous": "라인 4: extern 변수 및 함수를 소스 파일에서 정의했습니다.",
  "rule.saqt.q.cpp.1378.example.0.safe": "라인 4: 헤더 파일에서 extern 변수 및 함수를 정의하도록 합니다.",
  "rule.saqt.q.cpp.1378.name": "소스 파일 내 extern 변수 및 함수",
  "rule.saqt.q.cpp.1379.description": "매직 넘버 사용 체커는 코드에 심볼릭 상수가 아닌 매직 넘버나 문자열들을 사용하는 경우를 검출합니다.\n매직 넘버나 문자열을 코드 중간에 사용하는 경우 변경사항이 있을 때마다 모든 코드를 조사하여 해당 매직 넘버와 문자열을 수정해야 합니다. 이는 코드 유지보수를 어렵게 만들 뿐 아니라 개발자가 의도하지 않은 동작을 수행하는 코드가 될 수 있습니다.\n매직 넘버 또는 문자열 대신 상수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.1379.example.0.dangerous": "라인 2: buf의 배열 크기를 정할 때 매직 넘버를 사용하고 있습니다.",
  "rule.saqt.q.cpp.1379.example.0.safe": "라인 3: buf의 배열 크기를 정할 때 심볼릭 상수를 사용했습니다.",
  "rule.saqt.q.cpp.1379.name": "매직 넘버 사용",
  "rule.saqt.q.cpp.138.description": "금지된 사용자 정의 타입 사용 체커는 typedef을 통해 재정의된 미지정 자료형을 변수 또는 매개변수 선언에 사용하는 코드를 검출합니다.\n옵션에서 허용되는 변수 타입, 지역 변수 검사 여부, 매개 변수 검수 여부를 설정할 수 있습니다.\ntypedef 을 사용하는 자료형을 재정의할 때 옵션에 지정된 typedef 자료형을 사용해야 합니다.",
  "rule.saqt.q.cpp.138.example.0.dangerous": "라인 1: 허용되지 않은 재정의 타입 S64를 사용했습니다.",
  "rule.saqt.q.cpp.138.example.0.safe": "라인 1: 허용되는 재정의 타입 S32를 사용합니다.",
  "rule.saqt.q.cpp.138.name": "금지된 사용자 정의 타입 사용",
  "rule.saqt.q.cpp.138.option.allowed_variable_type.description": "허용되는 타입을 설정합니다.",
  "rule.saqt.q.cpp.138.option.allowed_variable_type.name": "허용되는 타입",
  "rule.saqt.q.cpp.138.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.138.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.cpp.138.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.138.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.1380.description": "누락된 void 키워드 체커는 인자가 없는 함수 선언에서 인자 목록에 void 키워드를 명시하지 않은 경우를 검출합니다.\n인자가 없는 함수를 선언할 때 인자 목록에 void 키워드를 명시해야 합니다. void 키워드를 명시하지 않으면 인자가 없는 함수에 인자를 전달하고 호출하더라도 일부 컴파일러에서 오류를 발생시키지 않게 됩니다.\n인자가 없는 함수를 선언할 때 void 키워드를 명시해야 합니다.",
  "rule.saqt.q.cpp.1380.example.0.dangerous": "라인 1: 함수에 인자가 없음에도 불구하고 void 키워드를 명시하지 않았습니다.",
  "rule.saqt.q.cpp.1380.example.0.safe": "라인 1: 함수에 인자가 없는 경우 void 키워드를 명시하도록 합니다.",
  "rule.saqt.q.cpp.1380.name": "누락된 void 키워드",
  "rule.saqt.q.cpp.1382.description": "public 클래스 멤버 변수 체커는 클래스 선언에서 public 접근 한정자를 가지는 필드를 검출합니다.\n클래스 필드의 접근 한정자를 public으로 정의하는 것은 객체지향의 캡슐화를 위반하는 것입니다. 적절한 메소드를 거치지 않고 내부 데이터를 바꿀 수 있다는 것은 잠재적으로 문제가 발생할 가능성이 있습니다.\n클래스 필드는 항상 private 접근 한정자를 부여합니다.",
  "rule.saqt.q.cpp.1382.example.0.dangerous": "라인 4: public으로 m_lowerLimit 필드를 선언했습니다.\n라인 5: public으로 m_upperLimit 필드를 선언했습니다.",
  "rule.saqt.q.cpp.1382.example.0.safe": "라인 4: private으로 m_lowerLimit필드를 선언합니다.\n라인 5: private으로 m_uppderLimit필드를 선언합니다.",
  "rule.saqt.q.cpp.1382.name": "public 클래스 멤버 변수",
  "rule.saqt.q.cpp.1382.option.check_protected.description": "protected 로 선언한 멤버 변수도 검출합니다.",
  "rule.saqt.q.cpp.1382.option.check_protected.name": "protected 멤버 변수 검출 여부",
  "rule.saqt.q.cpp.1383.description": "정의되지 않은 생성자 체커는 다만 1개의 명시적인 생성자도 정의하지 않은 클래스 선언을 검출합니다.\n생성자를 정의하지 않을 경우 컴파일러는 이 클래스의 생성자를 암시적으로 작성합니다. 하지만 이렇게 암시적으로 작성된 생성자는 일반 타입 필드는 초기화하지 않으면, 특수한 방법으로 초기화가 필요한 객체들의 초기화도 불가능합니다.\n항상 클래스 선언 시 명시적인 생성자를 정의하도록 합니다.",
  "rule.saqt.q.cpp.1383.example.0.dangerous": "라인 1: 클래스 CPolygon에서 생성자를 정의하지 않았습니다.\n라인 3: m_numberOfSides 필드는 초기화할 수 없습니다.",
  "rule.saqt.q.cpp.1383.example.0.safe": "라인 8: 클래스 생성자를 정의합니다.",
  "rule.saqt.q.cpp.1383.name": "정의되지 않은 생성자",
  "rule.saqt.q.cpp.1384.description": "정의되지 않은 소멸자 체커는 명시적인 소멸자를 정의하지 않은 클래스 선언을 검출합니다.\n소멸자를 정의하지 않을 경우 컴파일러는 이 클래스의 소멸자를 암시적으로 작성합니다. 하지만 이렇게 암시적으로 작성된 소멸자는 특수한 방법으로 해제가 필요한 객체들을 처리할 수 없습니다. 예를 들어 생성자에서 동적 할당으로 초기화한 필드는 소멸자에서 처리해주지 않을 경우 메모리 누수가 발생합니다.\n항상 클래스 선언 시 명시적인 소멸자를 정의하도록 합니다.",
  "rule.saqt.q.cpp.1384.example.0.dangerous": "라인 1: 클래스 선언에서 소멸자를 정의하지 않았습니다.\n라인 10: 생성자에서 m_name은 동적 할당으로 초기화하지만 소멸자의 부재로 메모리 누수가 발생하게 됩니다.",
  "rule.saqt.q.cpp.1384.example.0.safe": "라인 10: 소멸자를 정의하여 동적 할당으로 초기화된 m_name을 정상적으로 해제합니다.",
  "rule.saqt.q.cpp.1384.name": "정의되지 않은 소멸자",
  "rule.saqt.q.cpp.1386.description": "정의되지 않은 복사 생성자 체커는 명시적인 복사 생성자를 정의하지 않은 클래스 선언을 검출합니다.\n복사 생성자를 정의하지 않을 경우 컴파일러는 이 클래스의 복사 생성자를 암시적으로 작성합니다. 하지만 이렇게 암시적으로 작성된 소멸자는 특수한 방법으로 복사가 필요한 객체들을 처리할 수 없습니다. 이 문제는 주로 얕은 복사(Shallow Copy)와 관계되어 있습니다. 예를 들어 클래스 객체를 값으로 전달했을 때, 같은 포인터로 가리키고 있는 필드가 사용할 수 없게 되는 문제들이 발생할 수 있습니다.\n항상 클래스 선언 시 명시적인 복사 생성자를 정의하도록 합니다.",
  "rule.saqt.q.cpp.1386.example.0.dangerous": "라인 1: 클래스 선언에서 복사 생성자를 정의하지 않았습니다. m_name은 얕은 복사 문제가 발생합니다.\n라인 6: 값으로 전달된 임시 객체가 삭제될 경우 m_name의 값이 소멸합니다. 이후 이 함수를 호출하기전 CName 객체의 m_name값도 더 이상 유효하지 않습니다.",
  "rule.saqt.q.cpp.1386.example.0.safe": "라인 8: 복사 생성자를 정의하여 얕은 복사 문제를 해결합니다.",
  "rule.saqt.q.cpp.1386.name": "정의되지 않은 복사 생성자",
  "rule.saqt.q.cpp.1387.description": "정의되지 않은 할당 연산자 체커는 명시적인 복사 대입 연산자를 정의하지 않은 클래스 선언을 검출합니다.\n복사 대입 연산자를 정의하지 않을 경우 컴파일러는 이 클래스의 복사 대입 연산자를 암시적으로 작성합니다. 하지만 이렇게 암시적으로 작성된 복사 대입 연산자는 특수한 방법으로 복사가 필요한 객체들을 처리할 수 없습니다. 이 문제는 주로 얕은 복사(Shallow Copy)와 관계되어 있습니다. 예를 들어 클래스 객체를 값으로 전달했을 때, 같은 포인터로 가리키고 있는 필드가 사용할 수 없게 되는 문제들이 발생할 수 있습니다.\n항상 클래스 선언 시 명시적인 복사 대입 연산자를 정의하도록 합니다.",
  "rule.saqt.q.cpp.1387.example.0.dangerous": "라인 1: 클래스 선언에서 복사 대입 연산자를 정의하지 않았습니다. m_name은 얕은 복사 문제가 발생합니다.\n라인 12: 함수 종료 시점에서 copy 오브젝트가 삭제될 경우 m_name 포인터도 소멸합니다. 이는 name.m_name도 마찬가지입니다.",
  "rule.saqt.q.cpp.1387.example.0.safe": "라인 8: 복사 대입 연산자를 정의하여 얕은 복사 문제를 해결합니다.",
  "rule.saqt.q.cpp.1387.name": "정의되지 않은 할당 연산자",
  "rule.saqt.q.cpp.1388.description": "부적절하게 오버로딩된 할당 연산자 체커는 반환 타입이 참조형이 아닌 복사 대입 연산자의 오버로딩을 검출합니다.\n복사 대입 연산자를 오버로딩하는 것은 항상 반환 값을 참조형으로 선언해야 합니다. 반환 값을 참조형으로 선언해야 연속적인 대입이 가능합니다.\n클래스에서 복사 대입 연산자를 오버로딩할 경우 항상 반환 타입을 참조형으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1388.example.0.dangerous": "라인 1: 복사 대입 연산자를 오버로딩한 것이 반환 타입이 참조형이 아닙니다.",
  "rule.saqt.q.cpp.1388.example.0.safe": "라인 1: 복사 대입 연산자의 반환 타입을 참조형으로 선언하여 오버로딩합니다.",
  "rule.saqt.q.cpp.1388.name": "부적절하게 오버로딩된 할당 연산자",
  "rule.saqt.q.cpp.1389.description": "비 멤버 비대칭 연산자 체커는 메소드로 선언하는 방법을 사용하지 않은 비대칭 연산자 선언을 검출합니다.\n다른 방식으로 비대칭 연산자를 선언하는 방법은 friend로 선언하는 방법과 일반 함수로 선언하는 방법이 있습니다.\n메소드는 기본적으로 비대칭 연산입니다. 비대칭 함수는 인자로 받은 다른 타입이 좌측항에 오는 경우가 없으므로 메소드로 처리하는 것이 가장 이상적입니다. 예를 들어 비대칭 연산자 중 -> 연산자는 항상 자기 자신 객체에 적용하는 연산자입니다. 이 경우 일반 메소드로 처리하는 것이 가장 좋습니다.\n비대칭 연산자를 오버로딩할 경우 항상 일반 메소드로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1389.example.0.dangerous": "라인 4: ->연산자 오버로딩을 friend로 선언했습니다.\n라인 6: ->연산자 오버로딩을 일반 함수로 선언했습니다.",
  "rule.saqt.q.cpp.1389.example.0.safe": "라인 4: ->연산자 오버로딩을 메소드로 선언합니다.",
  "rule.saqt.q.cpp.1389.name": "비 멤버 비대칭 연산자",
  "rule.saqt.q.cpp.139.description": "누락된 배열 인덱스 검사 체커는 매개변수를 배열의 인덱스로 사용할 때 해당 인덱스에 대한 유효성을 검증하지 않은 코드를 검출합니다.\n배열의 인덱스를 사용할 때에는 버퍼 오버런이 발생할 수 있다는 점에 주의해야 합니다. 공격자는 버퍼 오버런을 통해 프로그램의 오작동이나 중단과 같은 동작을 발생시킬 수 있습니다.\n매개변수를 배열의 인덱스로 사용하기 전에 인덱스의 유효성 검증을 수행해야 합니다.",
  "rule.saqt.q.cpp.139.example.0.dangerous": "라인 3: 매개변수 index를 배열 arr의 인덱스로 사용하기 전에 index에 대한 유효성 검증을 수행하지 않았습니다.",
  "rule.saqt.q.cpp.139.example.0.safe": "라인 4: 매개변수를 배열의 인덱스로 사용하려면 먼저 조건문을 통해 유효성 검증을 수행하도록 합니다.",
  "rule.saqt.q.cpp.139.name": "누락된 배열 인덱스 검사",
  "rule.saqt.q.cpp.1390.description": "비 friend 대칭 연산자 체커는 friend 키워드가 없는 대칭 연산자 선언을 검출합니다.\n단 이 검출 조건은 대입 연산자를 제외합니다.\n대칭 연산자는 다른 타입이 좌측항에 오는 경우가 있습니다. 이 경우 메소드를 friend로 선언하여 다른 타입이 좌측항에 오더라도 오버로딩한 연산자에 접근할 수 있도록 해야 합니다.\n대입 연산자를 제외한 대칭 연산자를 오버로딩할 경우 항상 friend 키워드를 붙인 메소드로 선언하도록 합니다.",
  "rule.saqt.q.cpp.1390.example.0.dangerous": "라인 2: +연산자 오버로딩을 friend로 선언하지 않았습니다.",
  "rule.saqt.q.cpp.1390.example.0.safe": "라인 2: +연산자 오버로딩을 friend로 선언합니다.",
  "rule.saqt.q.cpp.1390.name": "비 friend 대칭 연산자",
  "rule.saqt.q.cpp.1391.description": "부적절한 메모리 재할당 체커는 realloc() 함수의 반환 값을 저장할 변수와 첫 번째 인자가 같은 경우를 검출합니다.\nrealloc() 함수는 메모리 재할당에 실패하면 기존에 할당되어 있이던 메모리를 내버려둔 채 널을 반환합니다. 따라서 realloc() 함수의 첫 번째 인자와 같은 변수에 반환 값을 저장하도록 호출했다가 realloc() 함수가 재할당에 실패한다면 첫 번째 인자 변수에 들어있던 기존의 할당 메모리에 접근할 수 있는 주소 값을 잃어버릴 수도 있습니다. 이로 인해 메모리 누출이 발생할 수 있습니다.\nrealloc() 함수를 호출할 때에는 별도의 포인터 변수에 반환 값을 저장하고 반환 값이 널인지 여부를 먼저 확인해야 합니다. 반환 값이 널이 아니면 재할당에 성공한 것이므로 이 값을 기존의 메모리가 저장되어 있이던 변수에 덮어쓰면 됩니다.",
  "rule.saqt.q.cpp.1391.example.0.dangerous": "라인 1: realloc() 함수의 반환 값을 첫 번째 인자와 동일한 변수에 저장합니다.",
  "rule.saqt.q.cpp.1391.example.0.safe": "라인 1: realloc() 함수의 반환 값은 첫 번째 인자와 다른 변수에 저장해야 합니다.",
  "rule.saqt.q.cpp.1391.name": "부적절한 메모리 재할당",
  "rule.saqt.q.cpp.1393.description": "상수 값의 수정 체커는 const로 선언된 변수의 값을 수정하는 경우를 검출합니다.\nconst로 선언된 변수에 값을 직접 대입하는 것은 문법적으로 불가능하지만 포인터 연산 등을 사용하여 우회적으로 값을 변경할 수 있습니다. 그러나 이러한 방법으로 인해 변수를 const로 선언하여 값을 변경하지 않으려는 개발자의 의도와 다른 결과가 발생합니다. 또한 참조자 타입, 레퍼런스 부분에 const를 선언하는 경우도 있을 수 있습니다. 이 경우 한정자가 무시되어 값을 수정할 수 있게 됩니다. 참조자 타입 자체에 const를 부여하는 경우는 값을 수정할 수 없으므로 컴파일 과정을 통과했다면 큰 문제는 발생하지 않습니다.\nconst로 선언된 변수의 값은 어떤 식으로든 변경되지 않도록 합니다.",
  "rule.saqt.q.cpp.1393.example.0.dangerous": "라인 7: const 객체 i의 값을 수정했습니다.\n라인 9: 참조자 타입의 참조 부분에 const를 사용했습니다. const는 무시됩니다.",
  "rule.saqt.q.cpp.1393.example.0.safe": "라인 3: i의 값을 수정하려면 const로 선언하지 않아야 합니다.\n라인 9: 참조자 타입의 타입 부분에 const를 선언하도록 합니다. 혹은 아예 const로 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.1393.name": "상수 값의 수정",
  "rule.saqt.q.cpp.1394.description": "일치하지 않는 삼항 연산 내 타입 체커는 삼항 연산자에서 조건부로 선택될 수 있는 두 가지 식의 타입이 일치하지 않는 경우를 검출합니다.\n삼항 연산자를 사용하면 프로그램의 실행 흐름에 따라 두 가지 값 중 하나가 임의로 선택될 수 있습니다. 따라서 둘의 타입이 동일해야 삼항 연산의 결과를 일관성 있게 활용할 수 있습니다.\n삼항 연산에서 두 가지 선택지의 정적 타입을 일치시켜야 합니다.",
  "rule.saqt.q.cpp.1394.example.0.dangerous": "라인 4: 두 가지 선택지의 타입이 int와 float으로 달라졌습니다.",
  "rule.saqt.q.cpp.1394.example.0.safe": "라인 4: 두 가지 선택지의 타입을 동일하게 맞춰줍니다.",
  "rule.saqt.q.cpp.1394.name": "일치하지 않는 삼항 연산 내 타입",
  "rule.saqt.q.cpp.1395.description": "불충분한 할당 메모리 체커는 객체를 저장하기에 충분하지 않은 크기로 메모리를 할당하는 경우를 검출합니다.\n충분하지 않은 크기로 메모리를 할당하고 해당 메모리에 접근하면 버퍼 오버플로우가 발생할 수 있습니다.\n객체를 저장하기에 충분한 크기의 메모리를 할당하도록 합니다.",
  "rule.saqt.q.cpp.1395.example.0.dangerous": "라인 6: long 타입의 포인터 변수에 int 타입 크기의 배수만큼 메모리가 할당되었습니다. 이것은 실수로 할당했을 가능성이 높으며 해당 메모리를 long 형 값이 len 개 존재하는 배열처럼 취급하면 버퍼 오버플로우가 발생할 수 있습니다.",
  "rule.saqt.q.cpp.1395.example.0.safe": "라인 6: sizeof(int) 대신 sizeof(long)를 사용하여 의도한 배열을 저장하기에 충분한 크기의 메모리를 할당합니다.",
  "rule.saqt.q.cpp.1395.name": "불충분한 할당 메모리",
  "rule.saqt.q.cpp.1396.description": "#pragma 지시자 사용 체커는 컴파일러나 플랫폼 별로 고유한 지시사항을 전달하는 데 사용되는 #pragma의 사용을 검출합니다.\n특정 컴파일러에 종속적인 언어나 전처리 확장을 사용하면 소스 코드의 이식성이 낮아집니다.\n컴파일러에 종속적인 #pragma 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1396.example.0.dangerous": "라인 1: #pragma를 사용했습니다.\n라인 6: #pragma를 사용했습니다.",
  "rule.saqt.q.cpp.1396.example.0.safe": "라인 1: #pragma를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1396.name": "#pragma 지시자 사용",
  "rule.saqt.q.cpp.1397.description": "주석 없는 빈 구문 체커는 특정한 방식의 사용만 예외적으로 허용되는 빈 문장이 허용되지 않는 방식으로 사용된 경우를 검출합니다.\n빈 문장은 보통 특별히 있어야 할 필요가 없으므로 일반적으로는 사용해선 안됩니다. 단, 특정한 방식으로 사용하는 것이 예외적으로 허용됩니다. 빈 문장은 한 줄에 단독 사용되어아 하며, 빈 문장 앞에 들여쓰기를 위한 공백은 존재할 수 있습니다. 또한 주석문이 빈 문장 뒤에 존재해야 하고 주석문과 빈 문장 사이에 하나 이상의 공백 문자가 존재해야 합니다.\n빈 문장을 사용하지 않거나 정해진 요건을 만족하도록 수정합니다.",
  "rule.saqt.q.cpp.1397.example.0.dangerous": "라인 2: 빈 구문 뒤에 주석이 없습니다.",
  "rule.saqt.q.cpp.1397.example.0.safe": "라인 2: 빈 구문 뒤에 공백과 주석문을 붙여야 합니다.",
  "rule.saqt.q.cpp.1397.name": "주석 없는 빈 구문",
  "rule.saqt.q.cpp.1398.description": "표준 라이브러리 내 이름 체커는 표준 라이브러리에서 사용되는 식별자와 동일한 객체명이나 함수명을 사용하는 경우를 검출합니다.\n일반적으로 표준 라이브러리에 정의된 매크로를 #undef하지 않는 것이 좋습니다. 또한 C/C++에서 예약어로 사용되는 매크로 이름이나 표준 라이브러리의 객체 또는 함수의 이름을 재사용하는 것도 혼란을 일으킬 수 있으므로 피해야 합니다.\n객체나 함수를 정의할 때 표준 라이브러리에서 사용하는 이름을 피하도록 합니다.",
  "rule.saqt.q.cpp.1398.example.0.dangerous": "라인 1: string.h 헤더에 포함되어 있는 표준 라이브러리 함수 strcmp()와 동일한 이름을 사용했습니다.",
  "rule.saqt.q.cpp.1398.example.0.safe": "라인 1: 표준 라이브러리의 식별자를 재사용하지 않도록 식별자 이름을 변경합니다.",
  "rule.saqt.q.cpp.1398.name": "표준 라이브러리 내 이름",
  "rule.saqt.q.cpp.1399.description": "friend 함수 및 클래스 사용 체커는 클래스 선언에서 friend 키워드를 사용하는 경우를 검출합니다.\nfriend 선언을 사용하면 클래스간의 상호 의존도가 높아지고 인터페이스가 복잡해지며 캡슐화 수준을 떨어뜨립니다.\nfriend를 사용한 선언을 하지 않도록 합니다.",
  "rule.saqt.q.cpp.1399.example.0.dangerous": "라인 7: friend 함수를 선언했습니다.\n라인 8: friend 클래스를 선언했습니다.",
  "rule.saqt.q.cpp.1399.example.0.safe": "라인 7: friend 함수 및 클래스를 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.1399.name": "friend 함수 및 클래스 사용",
  "rule.saqt.q.cpp.140.description": "부적절한 조건 비교 체커는 if 나 while 문에서 비교 연산을 수행할 때 0 또는 false 값을 사용하지 않는 코드를 검출합니다.\n옵션에서 값을 설정할 수 있습니다.\n조건문에서 비교 연산을 수행할 때 0 또는 true/false 값과 비교해야 합니다.",
  "rule.saqt.q.cpp.140.example.0.dangerous": "라인 2: value 값의 boolean 비교 연산에서 허용되지 않은 상수 1을 사용했습니다.",
  "rule.saqt.q.cpp.140.example.0.safe": "라인 2: boolean 비교 연산을 수행할 때 허용된 값을 사용하도록 합니다.",
  "rule.saqt.q.cpp.140.name": "부적절한 조건 비교",
  "rule.saqt.q.cpp.140.option.allowed_equality_value.description": "비교 가능한 값을 적습니다.(정규 표현식)",
  "rule.saqt.q.cpp.140.option.allowed_equality_value.name": "비교 가능한 값",
  "rule.saqt.q.cpp.1400.description": "누락된 더 큰 정수 타입으로의 형변환 체커는 정수에 대해 비교 또는 사칙연산을 수행하기 전에 적절한 표현 범위를 갖는 타입으로 캐스팅하지 않는 경우를 검출합니다.\n정수의 연산을 수행하기 전에 결과값을 저장하기에 충분한 표현 범위를 갖는 타입으로 캐스팅을 수행하지 않으면 정수 오버플로우로 인해 예상하지 못한 값이 계산될 수 있습니다.\n정수에 대해 사칙 연산을 수행하기 전에 결과값을 저장하기에 충분한 큰 타입으로 캐스팅을 수행합니다. 정수에 대해 비교 연산을 수행하기 전에도 정수 간 표현 범위를 일치시킬 수 있도록 캐스팅을 수행합니다.",
  "rule.saqt.q.cpp.1400.example.0.dangerous": "라인 6: size_t 타입의 표현 범위가 unsigned long long 타입의 표현 범위보다 작다면 이 비교 연산의 계산 결과는 항상 거짓이 됩니다. 비교 연산의 좌변의 계산 결과 정수 오버플로우가 발생하지 않는다면 결과값이 SIZE_MAX보다 작을 것이고, SIZE_MAX보다 큰 결과가 나오려 할 때도 정수 오버플로우로 인해 SIZE_MAX보다 작은 값으로 계산되기 때문입니다.",
  "rule.saqt.q.cpp.1400.example.0.safe": "라인 2: 비교나 사칙 연산을 수행하기 전에 올바른 캐스팅을 수행해야 합니다.",
  "rule.saqt.q.cpp.1400.name": "누락된 더 큰 정수 타입으로의 형변환",
  "rule.saqt.q.cpp.1401.description": "void 포인터 타입에서 비 void 포인터 타입으로 형변환 체커는 void 포인터를 다른 포인터로 캐스팅하는 경우를 검출합니다.\nC 표준에 의하면 void 포인터를 임의의 다른 포인터로 캐스팅할 수 있습니다. 그러나 void 포인터의 경우 어떤 값이 저장된 메모리 공간이라도 임의로 가리킬 수 있기 때문에 실제로 메모리에 저장된 값의 타입에 따라 잘못된 캐스팅을 수행할 수 있습니다. 예를 들어 int 타입 값이 저장된 메모리 공간을 double 타입의 포인터로 가리키게 되었다면 잘못된 캐스팅입니다.\n되도록이면 void 포인터를 사용하지 않고, 반드시 사용해야 한다면 void 포인터가 가리키는 메모리에 저장된 값의 타입을 정확히 관리해야 합니다.",
  "rule.saqt.q.cpp.1401.example.0.dangerous": "라인 3: int 포인터 값을 반환해야 하는 함수가 void 포인터 변수를 반환했습니다.\n라인 6: char 포인터 변수가 void 포인터로 암시적 캐스팅되어 인자로 전달되었습니다.",
  "rule.saqt.q.cpp.1401.example.0.safe": "라인 1: void 포인터형을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1401.name": "void 포인터 타입에서 비 void 포인터 타입으로 형변환",
  "rule.saqt.q.cpp.1403.description": "누락된 실패 시 문자열 초기화 체커는 함수가 파일을 읽는 데 실패하여 결과값을 저장할 문자열 버퍼를 초기화하지 않는 경우를 검출합니다.\nfgets() 함수나 fgetws() 함수를 호출했으나 작동에 실패했다면 대상 문자열 버퍼를 초기화해야 합니다.\nC 표준에는 fgets() 및 fgetws() 함수가 파일 읽기에 실패했을 때 읽기 결과를 저장하려던 버퍼가 어떤 상태가 되는지에 대해서 정의되어 있지 않습니다. 따라서 해당 함수가 작동에 실패하고 나면 버퍼에 들어있는 값에 대해 어떠한 가정도 할 수 없으며 정상적인 문자열 값이 들어있지 않을 수도 있으므로 버퍼에 들어있는 값을 사용하지 말고 버퍼를 알려진 값으로 초기화해야 합니다.\n파일 읽기 함수의 작동이 성공했는지 실패했는지 확인하고 실패했을 경우엔 대상 버퍼를 초기화할 수 있도록 코드를 작성해야 합니다.",
  "rule.saqt.q.cpp.1403.example.0.dangerous": "라인 6: buf 배열을 알려진 값으로 초기화하지 않았습니다.",
  "rule.saqt.q.cpp.1403.example.0.safe": "라인 6: buf 배열이 빈 문자열을 의미하도록 초기화합니다.",
  "rule.saqt.q.cpp.1403.name": "누락된 실패 시 문자열 초기화",
  "rule.saqt.q.cpp.1405.description": "누락된 배열 길이 검사 체커는 길이를 제한하지 않고 가변 길이 배열을 선언하는 경우를 검출합니다.\n가변 길이 배열의 길이를 적절한 범위로 제한하지 않으면 스택 메모리를 지나치게 많이 사용하는 문제가 발생할 수 있습니다.\n적절한 길이를 제한하여 가변 길이 배열을 선언하도록 합니다.",
  "rule.saqt.q.cpp.1405.example.0.dangerous": "라인 2: 배열의 길이를 지정하는 변수의 값을 확인하지 않고 가변 길이 배열을 선언했습니다.",
  "rule.saqt.q.cpp.1405.example.0.safe": "라인 4: 가변 길이 배열의 길이를 지정하는 변수의 값을 먼저 확인해야 합니다.",
  "rule.saqt.q.cpp.1405.name": "누락된 배열 길이 검사",
  "rule.saqt.q.cpp.1406.description": "void 반환 타입 사용 체커는 반환 타입이 void로 선언된 함수의 반환 값을 사용하는 경우를 검출합니다.\n반환 타입이 void인 함수의 반환 값을 사용하는 것은 C 표준에서 정의되지 않은 동작입니다.\n반환 타입이 void인 함수는 수식에 사용하거나 변수에 대입해선 안됩니다. 일반적으로 이런 함수는 단독 호출 구문으로만 사용하는 것이 좋습니다.",
  "rule.saqt.q.cpp.1406.example.0.dangerous": "라인 7: 반환 타입이 void인 함수 function()의 반환 값을 사용했습니다.",
  "rule.saqt.q.cpp.1406.example.0.safe": "라인 6: 반환 타입이 void인 함수 function()을 호출하기만 하는 구문으로 변경했습니다.",
  "rule.saqt.q.cpp.1406.name": "void 반환 타입 사용",
  "rule.saqt.q.cpp.1407.description": "효과가 없는 구문 체커는 구문 내에 부수 효과가 전혀 없는 구문을 검출합니다.\n여기서 부수 효과(Side Effect)란 값의 계산 과정에서 부가적(Side)으로 프로그램의 메모리 상태가 변화하여 다른 값의 계산에 영향을 미치는 것을 의미합니다.\n부수 효과가 전혀 없는 구문은 삭제해도 프로그램의 전체 실행 결과에 영향을 미치지 않습니다. 의미 없이 연산 능력만을 소모하므로 삭제하는 것이 좋습니다.\n부수 효과가 없는 구문을 삭제하도록 합니다.",
  "rule.saqt.q.cpp.1407.example.0.dangerous": "라인 5: 해당 구문은 메모리에 아무 영향도 미치지 않습니다.\n라인 6: 해당 구문은 메모리에 아무 영향도 미치지 않습니다.",
  "rule.saqt.q.cpp.1407.example.0.safe": "라인 4: 아무 영향이 없는 구문을 삭제합니다. 각 구문을 실행하면 메모리 상태에 변화가 발생해야 합니다.",
  "rule.saqt.q.cpp.1407.name": "효과가 없는 구문",
  "rule.saqt.q.cpp.1408.description": "타입 정의 내에서 포인터 역참조 연산 사용 체커는 사용자 정의 타입을 사용하여 포인터 역참조 연산을 보이지 않게 숨기는 경우를 검출합니다.\n포인터 역참조 연산식을 작성할 때는 그 부분에서 오류가 발생하기 하기 쉽기 때문에 최대한 겉으로 드러나는 방식으로 작성해야 합니다. 그래야 작성자를 포함하여 코드를 읽는 누구든지 그 지점에서 역참조가 일어난다는 사실을 인지하고 실수가 있는지 여부를 판단할 수 있습니다.\n포인터 역참조 연산은 사용자 정의 타입으로 정의하지 말고 겉으로 드러나게 사용합니다.",
  "rule.saqt.q.cpp.1408.example.0.dangerous": "라인 1: typedef를 사용한 사용자 정의 타입 선언에 역참조 연산을 포함시켜 포인터 역참조를 숨겼습니다.",
  "rule.saqt.q.cpp.1408.example.0.safe": "라인 1: 사용자 정의 타입 선언 안에 포인터 역참조를 숨기지 않도록 합니다.",
  "rule.saqt.q.cpp.1408.name": "타입 정의 내에서 포인터 역참조 연산 사용",
  "rule.saqt.q.cpp.1409.description": "실수 변환에서 정밀성 손실 체커는 표현이 가능한 범위 차이에 의해 정밀도 손실이 일어날 수도 있는 정수형에서 실수형으로의 캐스팅을 검출합니다.\n정수형 타입의 값을 실수형 타입으로 캐스팅할 때 충분한 크기의 실수형 타입을 사용하지 않으면 일정 범위를 넘어서는 값은 제대로 변환되지 않습니다. 예를 들어 Visual Studio 및 GCC 컴파일러를 사용할 때 2의 24제곱을 넘어가는 값을 float 타입으로 캐스팅하면 낮은 자릿수에서 값 손실이 발생하게 됩니다.\n정수형 값을 실수형으로 캐스팅할 때 해당 정수 값을 충분히 담을 수 있는 실수형 타입을 사용해야 합니다. 정수형 값의 범위를 정확히 알고있지 않다면 double 타입을 사용하는 것이 float 타입을 사용하는 것보다 안전합니다.",
  "rule.saqt.q.cpp.1409.example.0.dangerous": "라인 2: 2의 24제곱 이하의 값이므로 문제 없이 float 타입으로 캐스팅할 수 있습니다.\n라인 3: 2의 24제곱보다 큰 값을 float 타입으로 변환합니다. 2진수로 표현했을 때 가장 낮은 자리의 값이 손실되므로 이 값을 다시 int 타입으로 변환한 결과는 16777216이 되며 이것은 초기값과 다릅니다.\n라인 4: 2의 24제곱보다 큰 값도 표현할 수 있는 int 타입(4바이트) 값을 float 타입으로 캐스팅했습니다. big 변수에 담긴 값에 따라 정밀도 손실이 발생할 수 있습니다.",
  "rule.saqt.q.cpp.1409.example.0.safe": "라인 3: 2의 24제곱을 초과하는 상수를 저장할 때에는 충분한 정밀도를 가진 실수형을 사용합니다.\n라인 4: 충분한 정밀도를 가진 실수형을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1409.name": "실수 변환에서 정밀성 손실",
  "rule.saqt.q.cpp.141.description": "누락된 디버그 모드 검사 체커는 디버깅 함수를 호출하기 전에 디버깅 모드인지를 확인하지 않는 코드를 검출합니다.\n옵션에서 디버깅 함수 목록, 디버깅 함수 사용 확인 함수를 설정할 수 있습니다.\n디버깅 함수를 사용하기 전에 해당 함수가 디버깅 모드인지를 확인하는 함수를 호출해야 합니다.",
  "rule.saqt.q.cpp.141.example.0.dangerous": "라인 2: debug() 함수를 호출하기 전에 디버그 모드를 확인하지 않았습니다.",
  "rule.saqt.q.cpp.141.example.0.safe": "라인 2: debug() 함수를 호출하기 전에 조건문에서 디버그 모드를 확인하기 위해 debug_check() 함수를 호출해야 합니다.",
  "rule.saqt.q.cpp.141.name": "누락된 디버그 모드 검사",
  "rule.saqt.q.cpp.141.option.check_function.description": "디버깅 함수 사용을 확인하는 함수 목록입니다.",
  "rule.saqt.q.cpp.141.option.check_function.name": "디버깅 함수 사용 확인 함수 목록",
  "rule.saqt.q.cpp.141.option.debug_function.description": "디버깅 함수 목록입니다.",
  "rule.saqt.q.cpp.141.option.debug_function.name": "디버깅 함수 목록",
  "rule.saqt.q.cpp.1412.description": "인스턴스로 매크로 사용 체커는 매크로로 구현되었을 가능성이 있는 표준 라이브러리 식별자를 객체처럼 다루는 경우를 검출합니다.\n표준 라이브러리 함수나 변수는 실제로 함수나 변수로 선언되어 있을 수도 있지만 매크로로 선언되어 있을 수도 있습니다. 만약 어떤 식별자가 매크로를 사용하여 선언되어 있다면 이 식별자에 대해 참조 연산을 수행하는 등 객체처럼 대하면 프로그램이 의도대로 작동하지 않을 수 있습니다.\n표준 라이브러리 식별자 중 매크로로 선언되어 있을 가능성이 있는 것들은 객체처럼 대하지 말고 표준 라이브러리가 가이드하는 방식으로만 사용해야 합니다.",
  "rule.saqt.q.cpp.1412.example.0.dangerous": "라인 6: assert() 함수에 대해 참조 연산을 통해 함수 포인터를 얻으려 시도하고 있습니다. 그러나 컴파일러에 따라 assert() 함수는 매크로로 정의되어 있을 수 있으며 이로인해 정의되지 않은 동작이 발생할 수 있습니다.",
  "rule.saqt.q.cpp.1412.example.0.safe": "라인 9: assert() 함수를 객체처럼 다루지 않도록 합니다. assert() 함수를 함수 포인터 형태로 다른 함수에 전달하려면 aseert() 함수를 사용하는 새로운 함수를 정의한 후 이 함수를 사용합니다.",
  "rule.saqt.q.cpp.1412.name": "인스턴스로 매크로 사용",
  "rule.saqt.q.cpp.1413.description": "누락된 클래스 멤버 할당 체커는 클래스가 포함하고 있는 필드 중 하나라도 대입을 누락한 복사 대입 연산자를 검출합니다.\n클래스 객체 간 대입 연산이 일어날 때 누락된 필드가 있으면 이 필드의 값은 복사되지 않습니다. 따라서 프로그램은 정상적으로 복사되지 않은 값으로 인해 불완전한 동작이 발생할 수 있습니다.\n복사 대입 연산자에서 모든 필드를 빠짐없이 대입하도록 합니다. 이 때 함수를 사용한 값의 복사도 대입과 동등한 것으로 취급합니다.",
  "rule.saqt.q.cpp.1413.example.0.dangerous": "라인 3: value2에 대한 복사가 이루어지지 않았습니다.\n라인 4: 정상적으로 value1 값을 대입합니다.\n라인 5: 정상적으로 value3 값을 대입합니다.",
  "rule.saqt.q.cpp.1413.example.0.safe": "라인 4: 정상적으로 value1 값을 대입합니다.\n라인 5: 정상적으로 value2 값을 대입합니다.\n라인 6: 정상적으로 value3 값을 대입합니다.",
  "rule.saqt.q.cpp.1413.name": "누락된 클래스 멤버 할당",
  "rule.saqt.q.cpp.1414.description": "누락된 베이스 클래스 멤버 할당 체커는 클래스가 상속하고 있는 부모 클래스의 대입 연산 호출을 누락한 복사 대입 연산자를 검출합니다.\n클래스 객체 간 대입 연산이 일어날 때 누락된 필드가 있으면 이 필드의 값은 복사되지 않습니다. 따라서 프로그램은 정상적으로 복사되지 않은 값으로 인해 불완전한 동작이 발생할 수 있습니다. 부모 클래스 필드의 경우에도 마찬가지로 이 값을 대입하기 위해서는 부모 클래스의 복사 대입 연산자를 호출할 필요가 있습니다.\n복사 대입 연산자에서 상속하고 있는 부모 클래스의 대입 연산을 호출합니다.",
  "rule.saqt.q.cpp.1414.example.0.dangerous": "라인 6: 기본 클래스의 복사 대입 연산자를 호출하지 않았습니다. 기본 클래스 필드에 대한 복사가 이루어지지 않습니다.",
  "rule.saqt.q.cpp.1414.example.0.safe": "라인 7: 기본 클래스의 복사 대입 연산자를 호출합니다.",
  "rule.saqt.q.cpp.1414.name": "누락된 베이스 클래스 멤버 할당",
  "rule.saqt.q.cpp.1417.description": "rename의 잘못된 사용 체커는 rename() 함수를 호출할 때 파일 이름이 중복되는 상황에 대응하지 않는 경우를 검출합니다.\nC 표준에서 rename() 함수의 구체적인 실행 결과는 컴파일러별로 다르게 정의할 수 있도록 열려있습니다. rename() 함수에서 대상으로 지정한 파일이 기존에 이미 존재하는 파일명인 경우에, POSIX 계열 시스템에서는 기존의 파일을 제거하도록 구현되어 있고, Windows에서는 rename() 함수가 동작에 실패하도록 구현되어 있습니다. 이런 차이 때문에 rename() 함수를 단독으로 사용하면 이식성에 문제가 생깁니다.\n의도를 명확히 할 수 있도록 다른 함수를 함께 사용합니다. rename() 함수를 호출하되 이미 존재하는 파일은 보존하는 것이 의도라면 POSIX 환경에서는 rename() 함수를 호출하기 전에 access() 함수를 사용하여 해당 파일이 존재하는지 먼저 검사하는 것이 필요합니다. 기존에 존재하던 파일은 제거하는 것이 의도라면 Windows 환경에서는 rename() 함수를 호출하기 전에 remove() 함수를 사용하여 해당 파일을 먼저 제거하는 것이 필요합니다.",
  "rule.saqt.q.cpp.1417.example.0.dangerous": "라인 1: POSIX 환경이라면 이미 대상 이름의 파일이 존재할 때 기존 파일을 보존하고 싶더라도 파일을 지워버리게 됩니다. Windows 환경이라면 기존 파일을 제거하고 싶더라도 제거하지 못하고 동작이 실패하게 됩니다.",
  "rule.saqt.q.cpp.1417.example.0.safe": "라인 2: POSIX 환경에 대응하기 위해 파일이 있는지 먼저 확인합니다.\n라인 9: Windows 환경에 대응하기 위해 remove() 함수를 사용하여 기존에 존재하던 파일을 제거합니다.",
  "rule.saqt.q.cpp.1417.name": "rename의 잘못된 사용",
  "rule.saqt.q.cpp.1417.option.is_preserved_existing_file.description": "옵션을 사용하는 경우, 기존 목적 파일을 보존하는 방식으로 동작하고, 해제할 경우 기존 목적 파일을 제거하는 방식으로 동작합니다.",
  "rule.saqt.q.cpp.1417.option.is_preserved_existing_file.name": "기존 목적 파일 보존",
  "rule.saqt.q.cpp.1419.description": "장치에 대해 연산 수행 체커는 파일을 대상으로만 적용 가능한 연산을 장치에 대해 수행하는 경우를 검출합니다.\n어떤 운영 체제에서는 파일 이름이 특정 디바이스를 가리키는 특수 파일에 접근하는 데에 사용되기도 합니다. 일반적인 파일에 적용하는 연산을 디바이스 파일에 적용하면 시스템이 다운되거나 서비스 거부 공격에 활용될 수 있습니다.\n파일을 열거나 특정 작업을 수행하기 전에 파일이 디바이스를 나타내는 특수 파일인지 검사해야 합니다.",
  "rule.saqt.q.cpp.1419.example.0.dangerous": "라인 3: 아무 검사 없이 문자열을 인자로 fopen() 함수를 호출했습니다. 문자열이 잠긴 장치나 FIFO 파일명인 경우 fopen() 함수를 호출할 때 프로그램이 멈출 수 있습니다.\n라인 16: GetFileType() 함수를 사용했습니다. 이 함수는 특정한 상황에서 대기 상태를 발생시킬 수 있습니다.",
  "rule.saqt.q.cpp.1419.example.0.safe": "라인 3: lstat() 함수를 사용하여 파일의 상태를 먼저 점검합니다.\n라인 8: open() 함수를 사용하여 파일 디스크립터를 먼저 얻고 결과에 따라 행동합니다.\n라인 13: fstat() 함수를 사용하여 파일의 상태를 먼저 점검합니다.\n라인 21: 파일 경로가 디바이스를 위해 예약된 식별자인지 검사하는 함수를 만들도록 합니다. MSDN에서는 com1과 같은 디바이스와 관련된 식별자 목록을 제공하고 있습니다.",
  "rule.saqt.q.cpp.1419.name": "장치에 대해 연산 수행",
  "rule.saqt.q.cpp.1420.description": "잘못된 오류 타입 체커는 errno 관련 오류 코드를 반환하는 함수의 반환 타입이 errno_t로 선언되지 않은 경우를 검출합니다.\nerrno 관련 오류 코드를 반환하는 함수의 반환 타입을 int로 선언하는 경우가 많습니다. 실제로 많은 경우 표준 라이브러리 헤더에서 errno_t 사용자 정의 타입의 선언부를 찾아가보면 int로 정의되어 있는 경우가 많긴 하지만, 이렇게 함수의 반환 타입을 직접적으로 int로 선언하면 해당 함수가 errno 관련 오류 코드를 반환하는지 다른 의미가 있는 정수를 반환하는지 의미가 명확하지 않게 됩니다.\n오류 코드를 반환하는 함수를 선언할 때에는 반환 타입을 errno_t로 명시합니다.",
  "rule.saqt.q.cpp.1420.example.0.dangerous": "라인 1: 함수가 반환 타입 int로 선언되었습니다.\n라인 5: 함수가 errno 값을 반환합니다.",
  "rule.saqt.q.cpp.1420.example.0.safe": "라인 1: 함수의 반환 타입을 errno_t로 변경합니다.",
  "rule.saqt.q.cpp.1420.name": "잘못된 오류 타입",
  "rule.saqt.q.cpp.1421.description": "중복된 헤더 파일 이름 체커는 C99 표준에 따라 해석할 때 같은 이름으로 취급될 수 있는 중복 헤더 파일을 검출합니다.\nC99 표준에서는 헤더 파일 이름에 대해 다음과 같이 정의하고 있습니다. '헤더의 이름은 여러 개의 숫자나 문자와 그 다음 점(.) 하나, 그 다음 한 개의 숫자가 아닌 글자로 이루어져야 한다. 컴파일러는 헤더의 이름에서 대소문자를 무시할 수 있고 점 앞쪽의 문자 수를 8개로 제한할 수도 있다.' 이를 지키지 않고 헤더 파일의 이름을 지으면 코드를 다른 플랫폼으로 이식할 때 C99 호환 컴파일러에서 모호한 해석이 일어날 수 있습니다.\n헤더 파일 이름을 지을 때 C99 표준을 준수해야 하며 각 헤더 파일의 이름이 프로젝트 내에서 유일하도록 해야 합니다.",
  "rule.saqt.q.cpp.1421.example.0.dangerous": "라인 2: 프로젝트에 있는 Pre_test.h 헤더를 바로 위의 pre_test.h 헤더와 같은 이름으로 해석할 수 있습니다.\n라인 4: 처음 8자만을 고려하면 바로 위의 헤더와 같은 이름으로 해석할 수 있습니다.\n라인 5: 헤더 이름의 점 뒤에 확장자로 문자가 아닌 숫자를 사용했습니다.",
  "rule.saqt.q.cpp.1421.example.0.safe": "라인 2: 다른 헤더와 대소문자 구별을 하지 않더라도 서로 이름이 다르도록 이름을 짓습니다.\n라인 4: 다른 헤더와 앞의 8글자만 비교하더라도 서로 이름이 다르도록 이름을 짓습니다.\n라인 5: 확장자를 숫자가 아닌 문자 한 글자로 사용합니다.",
  "rule.saqt.q.cpp.1421.name": "중복된 헤더 파일 이름",
  "rule.saqt.q.cpp.1421.option.allow_long_file_name.description": "체크시 8 글자보다 긴 헤더 파일 이름을 가질 수 있습니다.",
  "rule.saqt.q.cpp.1421.option.allow_long_file_name.name": "긴 파일 이름 허용",
  "rule.saqt.q.cpp.1423.description": "부적절한 문자열 토큰 변환 체커는 문자열을 정수로 변환할 때 신뢰성 있는 오류 처리를 제공하는 함수가 사용되지 않은 경우를 검출합니다.\n문자열을 정수로 변환하는 함수 중에는 strtol() 함수 및 이와 유사한 함수들이 존재합니다. 원하는 결과값의 타입에 따라 strtol(), strtoll(), strtoul(), strtoull() 등의 함수 중 하나를 선택하여 사용할 수 있습니다. 이들 함수를 사용하면 변환에 실패했을 때 그 사유를 errno 오류 코드를 통해 확인할 수 있습니다. 반면에 sscanf(), atoi() 등의 함수를 사용하면 문자열을 정수로 해석하는 데에 실패하더라도 그 사실을 정확히 인식하기 어렵거나 실패한 이유를 알 수 없습니다.\n오류 처리를 명확히 할 수 있도록 strtol() 및 이와 유사한 함수를 사용합니다.",
  "rule.saqt.q.cpp.1423.example.0.dangerous": "라인 5: 문자열 정수 변환을 위해 atoi() 함수를 사용했습니다.\n라인 6: 문자열 정수 변환을 위해 sscanf() 함수를 사용했습니다.",
  "rule.saqt.q.cpp.1423.example.0.safe": "라인 6: 문자열 정수 변환을 위해 strtol() 함수를 사용합니다.\n라인 7: 문자열 정수 변환을 위해 strtoull() 함수를 사용합니다.",
  "rule.saqt.q.cpp.1423.name": "부적절한 문자열 토큰 변환",
  "rule.saqt.q.cpp.1424.description": "누락된 부동 소수점 오류에 대한 예외 처리 체커는 부동 소수점 연산을 수행한 후 오류를 처리하지 않는 경우를 검출합니다.\n부동 소수점 연산 과정에서 발생하는 오류를 무시하는 것은 종종 정의되지 않은 동작을 발생시킵니다.\n부동 소수점 연산을 수행하고나면 fetestexcept() 등의 부동 소수점 연산 오류 처리 함수를 호출하여 오류를 검사해야 합니다.",
  "rule.saqt.q.cpp.1424.example.0.dangerous": "라인 3: 변수와 값의 타입 간 표현 범위가 서로 맞지 않아 변수에 저장되는 값에 이상이 생깁니다.\n라인 4: 0으로 나누기 오류가 발생합니다.",
  "rule.saqt.q.cpp.1424.example.0.safe": "라인 1: feclearexcept() 함수로 이전 오류 정보를 정리합니다.\n라인 3: fetestexcept() 함수로 부동 소수점 연산 오류 여부를 검사합니다.\n라인 5: feclearexcept() 함수로 이전 오류 정보를 정리합니다.\n라인 7: fetestexcept() 함수로 부동 소수점 연산 오류 여부를 검사합니다.",
  "rule.saqt.q.cpp.1424.name": "누락된 부동 소수점 오류에 대한 예외 처리",
  "rule.saqt.q.cpp.1425.description": "필드에 포인터 연산 수행 체커는 구조체나 클래스의 필드를 참조한 포인터에 대해 덧셈 등의 포인터 연산을 사용하는 경우를 검출합니다.\n구조체나 클래스의 필드를 참조한 포인터에 포인터 연산을 적용하여 다음 필드를 가리키려고 시도하는 것은 위험합니다. 컴파일러에 따라 필드 사이사이에 어떤 패딩을 삽입할지 알 수 없으며 각 필드 멤버들이 연속적으로 정렬되어 있다는 보장이 없으므로 잘못된 위치를 참조할 가능성이 높습니다.\n구조체나 클래스의 각 필드는 직접 참조 연산을 통해서만 가리키도록 합니다.",
  "rule.saqt.q.cpp.1425.example.0.dangerous": "라인 7: 구조체의 필드를 참조하는 포인터 변수에 대해 포인터 덧셈 연산을 사용했습니다.",
  "rule.saqt.q.cpp.1425.example.0.safe": "라인 6: 포인터 변수로 구조체의 필드를 참조하지 않도록 합니다. 필요한 경우 직접 필드의 이름을 참조합니다.",
  "rule.saqt.q.cpp.1425.name": "필드에 포인터 연산 수행",
  "rule.saqt.q.cpp.1426.description": "부적절한 파일 열기 및 생성 체커는 파일을 열 때 기존 파일의 존재 여부를 알지 못하는 방식으로 여는 경우를 검출합니다.\nfopen() 함수는 이미 존재하는 파일을 열거나 새로운 파일을 생성하기 위한 목적으로 사용됩니다. 하지만 fopen() 함수를 별 생각 없이 사용하면 기존에 존재하던 파일을 열었는지 새로운 파일을 생성했는지 결과만 놓고는 구분하기가 어렵습니다. 이로 인해 프로그램이 의도하지 않은 파일에 잘못 접근하거나 기존 파일에 존재하던 내용을 덮어쓸 가능성이 있습니다.\nfopen() 함수를 호출할 때 적절한 인자를 전달하여 기존에 존재하던 파일을 무시하지 않도록 하거나 open() 함수를 사용합니다.",
  "rule.saqt.q.cpp.1426.example.0.dangerous": "라인 3: w 모드로 파일을 열었습니다. 파일 열기에 성공하더라도 기존에 존재하던 파일을 열었는지 새로운 파일을 생성했는지 알 수 없습니다.",
  "rule.saqt.q.cpp.1426.example.0.safe": "라인 3: wx 모드로 파일을 열도록 합니다. 이렇게 파일을 열면 기존에 파일이 존재할 때 함수가 동작에 실패합니다.",
  "rule.saqt.q.cpp.1426.name": "부적절한 파일 열기 및 생성",
  "rule.saqt.q.cpp.1427.description": "반한된 포인터를 비 const 변수에 저장 체커는 특정 표준 라이브러리 함수에서 반환된 포인터를 역참조 수정이 가능한 변수에 저장하는 경우를 검출합니다.\n이 체커는 getenv(), asctime(), localeconv(), setlocale(), strerror() 함수의 반환 값이 변수에 저장되는 것을 검사합니다.\n예를 들어 getenv() 등의 함수가 반환하는 포인터는 읽기 전용으로 사용되어야 하고 프로그램에 의해 역참조 수정이 일어나서는 안됩니다.\n만약 한 번 반환된 포인터를 여러 번 사용할 필요가 있다면 상수형 포인터 변수에 저장하여 역참조된 메모리에 있는 값이 수정되지 않게 합니다.",
  "rule.saqt.q.cpp.1427.example.0.dangerous": "라인 1: getenv() 함수의 반환값을 일반 포인터 변수에 저장했습니다.",
  "rule.saqt.q.cpp.1427.example.0.safe": "라인 1: getenv() 함수의 반환값을 저장하려는 변수는 상수 포인터 변수여야 합니다.",
  "rule.saqt.q.cpp.1427.name": "반한된 포인터를 비 const 변수에 저장",
  "rule.saqt.q.cpp.143.description": "반복문 내에서의 변수 선언 체커는 반복문에서 객체를 선언하는 코드를 검출합니다.\n옵션에서 무시할 객체 타입, 무시할 변수 이름을 설정할 수 있습니다.\n반복문에서 지역 변수를 선언하는 경우 많은 변수가 메모리에 할당되어 성능이 감소할 수 있습니다. 예를 들어, for 또는 while 문과 같은 반복문에서 지역 변수를 선언하면 메모리에 부정적인 영향을 줄 수 있습니다.\n반복문에서 객체를 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.143.example.0.dangerous": "라인 3: for 문에서 변수 a를 선언했습니다.",
  "rule.saqt.q.cpp.143.example.0.safe": "라인 1: for 문과 같은 반복문 밖에서 변수를 선언해야 합니다.",
  "rule.saqt.q.cpp.143.name": "반복문 내에서의 변수 선언",
  "rule.saqt.q.cpp.143.option.ignore_type_list.description": "무시할 타입을 설정합니다.",
  "rule.saqt.q.cpp.143.option.ignore_type_list.name": "무시할 타입",
  "rule.saqt.q.cpp.143.option.ignore_var_list.description": "무시할 변수를 설정합ㄴ다.",
  "rule.saqt.q.cpp.143.option.ignore_var_list.name": "무시할 변수",
  "rule.saqt.q.cpp.1430.description": "컴파일러 최적화 중 코드 삭제 체커는 컴파일러의 최적화에 의해 중요 정보를 정리하는 코드가 삭제되어 중요 정보가 노출될 가능성이 있는 경우를 검출합니다.\n어떠한 컴파일러는 옵션으로 설정된 최적화 수준에 따라서, 프로그램의 동작에 영향을 주지 않는다고 판단하는 코드를 제거할 수 있습니다. 예를 들어 메모리에 쓰기 작업을 수행한 후 해당 메모리 영역에 더 이상 접근하지 않는다면 최적화 과정에서 메모리에 쓰기 작업을 하는 코드가 제거될 수 있습니다. 이로 인해 민감한 데이터를 저장했던 메모리 영역에 다른 갚을 덮어써서 정리하는 코드를 작성했을 때 이 코드가 제거 대상으로 선택될 가능성이 있습니다. 이때 중요 정보가 메모리에서 제때 정리되지 않아서 메모리 덤프 등을 통하여 노출되는 위험이 발생합니다.\n컴파일러 최적화 옵션을 조정하거나 컴파일러가 중요 코드 부분에서는 최적화를 수행하지 않도록 조치를 취해야 합니다.",
  "rule.saqt.q.cpp.1430.example.0.dangerous": "라인 6: memset() 함수를 사용하여 pwd 배열의 데이터를 정리하고 있으나 최적화 과정에서 해당 구문이 삭제될 수 있습니다.",
  "rule.saqt.q.cpp.1430.example.0.safe": "라인 6: 중요한 정리 코드가 최적화되지 않도록 컴파일러에게 지시하여 해당 코드를 보호할 수 있습니다.",
  "rule.saqt.q.cpp.1430.name": "컴파일러 최적화 중 코드 삭제",
  "rule.saqt.q.cpp.1431.description": "불확정 값에 대해 va_arg 함수 사용 체커는 가변 길이 인자 va_list 객체를 임의로 다른 함수에 전달하여 알 수 없는 값이 된 상태로 va_arg() 함수를 다시 호출하는 경우를 검출합니다.\nva_list 객체를 다른 함수에 넘겨 사용한 후 안전하게 다시 사용하는 고유한 방법이 존재합니다. 이 방법을 무시하고 va_list 객체를 임의로 다른 함수에 전달하고 그 다른 함수에서 va_arg() 함수 및 va_end() 함수를 사용하면 원래의 가변 길이 인자 함수에서 이 인자를 제대로 사용할 수 없게 됩니다.\nva_list 객체를 다른 함수에 넘길 떄에는 객체의 참조를 포인터로 전달합니다. 또한 이 객체를 다른 함수에서도 순회하고자 할 때에는 직접 사용하는 대신 va_copy() 함수를 사용하여 복사한 후에 복사된 객체를 사용하여 순회해야 합니다.",
  "rule.saqt.q.cpp.1431.example.0.dangerous": "라인 1: va_list 객체를 다른 가변 인자 함수로부터 직접 인자로 전달받았습니다.\n라인 3: 전달받은 va_list 객체를 va_arg() 함수에 사용했습니다. 이제 contains_zsero() 함수를 호출했던 원래의 가변 인자 함수에서는 정상적으로 ap 객체를 사용할 수 없습니다.",
  "rule.saqt.q.cpp.1431.example.0.safe": "라인 1: 가변 인자 함수의 va_list 객체를 함수 간에 전달할 때에는 포인터를 사용해야 합니다.\n라인 3: 전달받은 va_list 포인터가 가리키는 객체를 va_copy() 함수로 복사해 별도의 va_list 객체를 초기화한 후 이 객체를 사용해 가변 인자를 순회해야 합니다.",
  "rule.saqt.q.cpp.1431.name": "불확정 값에 대해 va_arg 함수 사용",
  "rule.saqt.q.cpp.1432.description": "extern 인라인 함수의 제약 조건 위반 체커는 extern inline으로 선언된 함수에서 접근해선 안되는 객체에 접근하는 경우를 검출합니다.\nextern inline으로 선언된 함수에서 static 전역 변수처럼 해당 소스 파일에서만 접근 가능한 객체에 접근하면 안됩니다. 함수가 inline으로 선언되면 컴파일러는 그 함수를 호출하는 식을 만났을 때 실제로 함수를 호출하는 대신 함수의 동작을 그대로 따라하는 코드를 삽입하는 방식으로 호출을 번역하려고 시도합니다. 또한 함수를 extern으로 선언했다는 것은 해당 함수가 서로 다른 소스 파일과 연관되어 사용될 수 있다는 뜻입니다. 따라서 extern inline 함수가 소스 파일 전용 객체에 접근하면 그 함수의 동작을 그대로 따라하는 코드가 외부의 다른 소스 파일에 정의된 함수에 삽입될 수 있으므로 함수 정의가 모순이 됩니다.\nextern inline 함수에서는 static으로 선언된 전역 객체에 접근하지 않아야 합니다. extern inline 함수가 접근해야 하는 전역 객체는 static으로 선언하지 않아야 합니다.",
  "rule.saqt.q.cpp.1432.example.0.dangerous": "라인 2: func() 함수가 extern inline으로 선언되었습니다.\n라인 3: extern inline 함수가 static 전역 변수에 접근합니다.",
  "rule.saqt.q.cpp.1432.example.0.safe": "라인 2: extern inline으로 선언된 함수가 사용해야 하는 객체는 static으로 선언하면 안됩니다.",
  "rule.saqt.q.cpp.1432.name": "extern 인라인 함수의 제약 조건 위반",
  "rule.saqt.q.cpp.1433.description": "비 표준 문자 체커는 문자열 리터럴에 표준 문자 외의 문자를 사용한 경우를 검출합니다.\n영문자와 숫자, ASCII 코드의 특수기호, 스페이스, 백스페이스, 탭, 개행 문자가 표준 문자로 간주됩니다.\n표준 문자가 아닌 문자를 문자열 리터럴에 포함시키면 이식성에 문제가 생길 수 있습니다.\n문자열 리터럴에는 표준 문자만을 사용합니다.",
  "rule.saqt.q.cpp.1433.example.0.dangerous": "라인 1: 비표준 문자를 사용하고 있습니다.",
  "rule.saqt.q.cpp.1433.example.0.safe": "라인 1: 표준 문자만 사용하도록 합니다.",
  "rule.saqt.q.cpp.1433.name": "비 표준 문자",
  "rule.saqt.q.cpp.1439.description": "사용하지 않는 매개 변수 체커는 함수에서 그 값을 사용하지 않는 매개 변수를 검출합니다.\n함수의 매개 변수는 그 존재만으로도 함수가 호출될 때마다 연산력과 스택 메모리를 소모합니다. 특히 포인터나 정수 등 레지스터에 담을 수 있는 범위를 넘어서는 구조체나 클래스 객체가 매개 변수인 경우에는 함수를 호출할 때마다 객체의 복사가 이루어지므로 리소스 소모가 더욱 커집니다. 따라서 함수 내에서 사용되지 않는 매개 변수를 내버려두면 불필요한 성능 저하가 일어납니다.\n사용하지 않는 매개 변수는 함수 선언에서 삭제합니다.",
  "rule.saqt.q.cpp.1439.example.0.dangerous": "라인 1: f() 함수에 p2 매개 변수가 존재하지만 사용되지 않습니다.",
  "rule.saqt.q.cpp.1439.example.0.safe": "라인 1: 사용되지 않는 매개변수를 삭제합니다.",
  "rule.saqt.q.cpp.1439.name": "사용하지 않는 매개 변수",
  "rule.saqt.q.cpp.144.description": "do-while 구문 사용 체커는 Do-While 문을 사용하는 코드를 검출합니다.\nDo-While 문 대신 While 문을 사용하도록 합니다.",
  "rule.saqt.q.cpp.144.example.0.dangerous": "라인 2: do-while 문을 사용했습니다.",
  "rule.saqt.q.cpp.144.example.0.safe": "라인 2: do-while 문 대신 while 문을 사용하도록 합니다.",
  "rule.saqt.q.cpp.144.name": "do-while 구문 사용",
  "rule.saqt.q.cpp.1441.description": "되돌아가는 goto 구문 체커는 함수 안에서 goto 구문보다 먼저 등장하는 레이블로 점프하는 경우를 검출합니다.\ngoto 구문을 복잡한 방식으로 사용하면 함수의 제어 흐름을 이해하기 어려워집니다. goto 구문으로 더 뒤에 있는 레이블로 점프하면 일부 코드를 건너뛰는 효과를 얻을 수 있으며, 제어 흐름 그래프에 새로운 사이클을 만들지 않으므로 이해가 많이 어렵지는 않습니다. 하지만 goto 구문으로 앞에 있는 레이블로 점프하면 제어 흐름 그래프에 조건 없는 사이클을 만들게 되어 함수의 의미를 이해하기 어렵게됩니다.\ngoto 구문의 사용을 자제합니다. 대부분의 상상할 수 있는 계산은 goto 구문 없이 분기문과 반복문만 사용하여 구현해낼 수 있습니다. 분기문과 반복문만으로 구현하면 코드가 지나치게 복잡해져서 어쩔 수 없이 goto 구문을 사용하게 되더라도 역방향으로 점프하는 goto 구문은 사용하면 안됩니다.",
  "rule.saqt.q.cpp.1441.example.0.dangerous": "라인 7: goto 구문으로 더 먼저 정의된 L1 레이블로 점프합니다. value가 10보다 클 때 무한루프가 발생합니다.",
  "rule.saqt.q.cpp.1441.example.0.safe": "라인 7: goto 구문으로 나중에 정의된 L2 레이블로 점프합니다. 이렇게 사용하면 제어 흐름 그래프에 사이클을 만들지 않습니다.",
  "rule.saqt.q.cpp.1441.name": "되돌아가는 goto 구문",
  "rule.saqt.q.cpp.1442.description": "블록 간 점프 체커는 goto 구문과 대상 레이블이 서로 무관한 블록에 분리되어 있는 경우를 검출합니다.\ngoto 구문을 사용하여 다른 블록의 안으로 뛰어들면 제어 흐름 그래프가 복잡해질 뿐 아니라 블록 안 코드의 무결성이 깨질 수 있습니다. 보통 블록은 논리적으로 한 덩어리의 의미를 갖도록 순차적으로 실행될 것을 가정하고 작성되는데, goto 구문을 사용하여 블록 중간으로 뛰어들면 블록의 앞부분에서 일어났어야 할 일이 일어나지 않은 채 블록 중간 코드가 갑자기 실행될 수도 있기 때문입니다.\ngoto 구문은 같은 블록 안에서 사용되거나 블록을 빠져나가는 용도로만 사용해야 합니다.",
  "rule.saqt.q.cpp.1442.example.0.dangerous": "라인 5: goto 구문이 가리키는 L1 레이블이 서로 무관한 다른 블록에 존재합니다.",
  "rule.saqt.q.cpp.1442.example.0.safe": "라인 5: goto 구문은 같은 블록 안의 레이블을 가리켜서 코드를 건너뛰거나, 상위 블록의 레이블을 가리켜서 현재 블록을 빠져나가는 용도로 사용되어야 합니다.",
  "rule.saqt.q.cpp.1442.name": "블록 간 점프",
  "rule.saqt.q.cpp.1444.description": "구조체 내 가변 길이 배열 사용 체커는 구조체의 멤버 변수로 가변 길이 배열을 포함시키는 경우를 검출합니다.\n구조체 안에 가변 길이 배열이 포함되어 있으면 해당 구조체로 만들어진 각 객체들의 크기가 균일하지 않게 되고 구조체의 사용이 까다로워집니다.\n구조체의 멤버로 가변 길이 배열을 사용하지 않습니다. 대신 고정 길이 배열을 사용하거나 포인터를 사용하고 별도로 해당 포인터에 배열을 동적할당하도록 합니다.",
  "rule.saqt.q.cpp.1444.example.0.dangerous": "라인 4: 구조체의 멤버로 가변 길이 배열을 사용했습니다.",
  "rule.saqt.q.cpp.1444.example.0.safe": "라인 4: 가변 길이 배열 대신 포인터 멤버를 사용하고 별도로 배열을 동적할당하는 식으로 가변 길이 배열 멤버와 비슷한 결과를 얻을 수 있습니다.",
  "rule.saqt.q.cpp.1444.name": "구조체 내 가변 길이 배열 사용",
  "rule.saqt.q.cpp.145.description": "부동 소수점 값에 대한 == 연산 체커는 '==' 혹은 '!=' 연산자를 사용하여 부동소수점을 비교하는 코드를 검출합니다.\n부동 소수점을 비교하는 연산은 정확하게 동작하지 않을 수 있습니다.\n'==' 연산자를 사용하는 대신 두 값의 차이가 오차 범위보다 적은지를 확인합니다. 예를 들어, 다음과 같이 비교합니다. #define ERROR = 0.0001; if (fabs((0.1 + 0.2) - 0.3) <= ERROR) { ... }",
  "rule.saqt.q.cpp.145.example.0.dangerous": "라인 2: float 타입의 두 변수 f, g에 대해 == 연산을 수행했습니다.",
  "rule.saqt.q.cpp.145.example.0.safe": "라인 3: float 타입의 값과 비교할 경우 == 연산이 아닌 다른 방법을 사용하도록 합니다.",
  "rule.saqt.q.cpp.145.name": "부동 소수점 값에 대한 == 연산",
  "rule.saqt.q.cpp.1450.description": "읽기 어려운 주석 체커는 주석문 안에 /*, */, // 와 같은 문자열이 포함된 경우를 검출합니다.\n주석문 안에 /*, */, // 와 같은 문자열이 포함되지 않도록 합니다. 해당 문자열은 주석문을 시작하거나 끝내는 용도로만 사용해야 합니다.",
  "rule.saqt.q.cpp.1450.example.0.dangerous": "라인 3: 주석문 안에 가독성을 해치는 /* 문자열이 포함되었습니다. 이 부분만 보면 마치 한 줄짜리 주석을 /* */ 문자열을 사용하여 작성한 것 같지만 주석문이 실제로 시작되는 곳은 다른 라인입니다.",
  "rule.saqt.q.cpp.1450.example.0.safe": "라인 3: 주석문 안에 가독성을 해치는 문자열을 삽입하지 않습니다.",
  "rule.saqt.q.cpp.1450.name": "읽기 어려운 주석",
  "rule.saqt.q.cpp.1450.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.saqt.q.cpp.1450.option.check_header.name": "헤더 파일 분석 여부",
  "rule.saqt.q.cpp.1450.option.forbidden_string_list.description": "주석 내에 포함 할 수 없는 문자열을 입력합니다.<br />예시) /*,*/,//",
  "rule.saqt.q.cpp.1450.option.forbidden_string_list.name": "금지 문자열",
  "rule.saqt.q.cpp.1451.description": "다른 주석 길이 체커는 특정한 형태로 작성된 여러 줄 주석문에서 각 라인의 길이가 다르게 작성된 경우를 검출합니다.\n지정된 형태의 여러 줄 주석문을 작성할 때에는 각 줄의 길이를 통일하여 네모 모양으로 반듯한 블록 주석이 되도록 해야 합니다.",
  "rule.saqt.q.cpp.1451.example.0.dangerous": "라인 2: 기본 설정에서는 /***...***/ 형태로 작성된 여러줄 주석을 검사 대상으로 합니다. 이런 주석에서는 각 줄의 길이를 일치시켜 보기 좋게 만들어야 하는데, 여기서는 각 줄의 길이가 달라서 주석의 모양이 들쭉날쭉합니다.",
  "rule.saqt.q.cpp.1451.example.0.safe": "라인 1: 이와 같이 각 주석 줄이 끝나는 지점을 일치시켜 네모 반듯한 주석문을 만들어줍니다.",
  "rule.saqt.q.cpp.1451.name": "다른 주석 길이",
  "rule.saqt.q.cpp.1451.option.start_end_comment.description": "시작 및 종료 주석을 설정합니다. 해당 주석으로 묶인 주석이 하나의 블록 주석으로 인식됩니다.",
  "rule.saqt.q.cpp.1451.option.start_end_comment.name": "시작 및 종료 주석",
  "rule.saqt.q.cpp.1452.description": "주석 형식 위반 체커는 한 줄 주석 혹은 여러 줄 주석 중 옵션에 지정된 방식이 아닌 것으로 작성된 주석문을 검출합니다.\n프로젝트 전체에서 한 줄 주석 혹은 여러 줄 주석만을 사용하도록 옵션에 지정할 수 있습니다.\n지정된 방식으로만 주석문을 작성합니다.",
  "rule.saqt.q.cpp.1452.example.0.dangerous": "라인 1: 여러 줄 주석문만 사용하도록 설정했다면 //을 사용한 한 줄 주석문 사용을 검출합니다.",
  "rule.saqt.q.cpp.1452.example.0.safe": "라인 1: 여러 줄 주석만 사용하도록 설정했다면 모든 주석문을 '/*...*/' 형태로만 작성해야 합니다.",
  "rule.saqt.q.cpp.1452.name": "주석 형식 위반",
  "rule.saqt.q.cpp.1452.option.use_single_comment.description": "선택 할 경우 '/*...*/' 으로 묶이는 주석을 검출합니다.",
  "rule.saqt.q.cpp.1452.option.use_single_comment.name": "'//' 주석만 사용 여부",
  "rule.saqt.q.cpp.1453.description": "코드 주위 주석 체커는 한 줄 소스 코드의 앞 혹은 중간에 주석이 끼어들어가있는 경우를 검출합니다.\n주석은 한 라인 안에서 소스 코드가 끝난 맨 뒤에 작성하거나 별도의 라인에 작성합니다.",
  "rule.saqt.q.cpp.1453.example.0.dangerous": "라인 5: counter++ 코드 앞에 주석이 존재하여 가독성을 해치고 있습니다.",
  "rule.saqt.q.cpp.1453.example.0.safe": "라인 5: 주석을 별도의 라인에 분리하여 작성합니다.",
  "rule.saqt.q.cpp.1453.name": "코드 주위 주석",
  "rule.saqt.q.cpp.146.description": "파라미터에 대해 사용자 정의 타입의 미사용 체커는 옵션에 지정된 특정 위치의 매개변수를 재정의된 자료형이 아닌 자료형으로 선언하는 코드를 검출합니다.\n해당 체커는 매개변수 선언에서 Typedef로 재정의된 자료형을 사용하지 않은 코드를 검출합니다. 옵션에서 허용되는 매개 변수 타입, 검사할 매개 변수 위치를 설정할 수 있습니다.\n옵션에서 특정 위치의 매개변수를 재정의된 자료형으로 선언해야 합니다.",
  "rule.saqt.q.cpp.146.example.0.dangerous": "라인 1: foo() 함수의 첫 번째 인자가 재정의된 타입이 아닙니다.",
  "rule.saqt.q.cpp.146.example.0.safe": "라인 2: 함수의 특정 위치에 있는 인자를 재정의된 타입으로 선언하도록 합니다.",
  "rule.saqt.q.cpp.146.name": "파라미터에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.cpp.146.option.allowed_param_type.description": "허용되는 파라미터 타입을 설정합니다.",
  "rule.saqt.q.cpp.146.option.allowed_param_type.name": "허용되는 파라미터 타입",
  "rule.saqt.q.cpp.146.option.call_param_target.description": "파라미터 검사 위치 설정합니다.",
  "rule.saqt.q.cpp.146.option.call_param_target.name": "파라미터 검사 위치",
  "rule.saqt.q.cpp.147.description": "비 상수 값 반환 체커는 함수의 반환 구문에서 옵션에 지정된 상수가 아닌 값을 사용하는 코드를 검출합니다.\n옵션에서 허용되는 상수값을 설정할 수 있습니다.\n함수의 반환 구문에 옵션에 지정된 상수값을 사용하도록 합니다.",
  "rule.saqt.q.cpp.147.example.0.dangerous": "라인 2: 허용되지 않는 상수 2를 반환했습니다.",
  "rule.saqt.q.cpp.147.example.0.safe": "라인 2: 허용되는 상수 0 또는 1을 사용합니다.",
  "rule.saqt.q.cpp.147.name": "비 상수 값 반환",
  "rule.saqt.q.cpp.147.option.allowed_return_constant.description": "아래 조건에 해당하는 상수형에 대해서 반환을 허용합니다.(정규식)",
  "rule.saqt.q.cpp.147.option.allowed_return_constant.name": "허용하는 반환 상수",
  "rule.saqt.q.cpp.147.option.check_constant_only.description": "상수만 검출할지 여부를 체크합니다.",
  "rule.saqt.q.cpp.147.option.check_constant_only.name": "상수만 검출 여부",
  "rule.saqt.q.cpp.149.description": "반환 타입에 대해 사용자 정의 타입의 미사용 체커는 옵션에 지정된 재정의 자료형이 아닌 자료형을 함수의 반환 타입으로 사용하는 코드를 검출합니다.\n옵션에서 허용되는 자료형, 매개 변수 검사 여부, 지역범위 검사 여부, 전역범위 검사 여부를 설정할 수 있습니다.\n옵션에 지정된 재정의된 자료형을 함수 반환 타입으로 사용해야 합니다.",
  "rule.saqt.q.cpp.149.example.0.dangerous": "라인 1: foo() 함수의 반환이 재정의된 타입이 아닙니다.",
  "rule.saqt.q.cpp.149.example.0.safe": "라인 2: foo() 함수의 반환이 재정의된 타입입니다.",
  "rule.saqt.q.cpp.149.name": "반환 타입에 대해 사용자 정의 타입의 미사용",
  "rule.saqt.q.cpp.149.option.allowed_return_type.description": "허용하는 재정의 타입 이름을 설정합니다.",
  "rule.saqt.q.cpp.149.option.allowed_return_type.name": "허용하는 재정의 타입",
  "rule.saqt.q.cpp.149.option.scope_target_global.description": "전역 범위 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.149.option.scope_target_global.name": "전역 범위 검사 여부",
  "rule.saqt.q.cpp.149.option.scope_target_local.description": "지역 범위 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.149.option.scope_target_local.name": "지역 범위 검사 여부",
  "rule.saqt.q.cpp.149.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.149.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.150.description": "문자 타입 사용 체커는 char 배열을 선언하는 경우를 제외하고 char 자료형을 선언하는 코드를 검출합니다.\n옵션에서 검출할 자료형 및 검출 범위를 설정할 수 있습니다.\n옵션에서 금지된 자료형을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.150.example.0.dangerous": "라인 2: char * 타입인 a가 선언되어 검출됩니다.",
  "rule.saqt.q.cpp.150.example.0.safe": "라인 2: char * 타입 대신에 char 배열 타입을 사용하도록 합니다.",
  "rule.saqt.q.cpp.150.name": "문자 타입 사용",
  "rule.saqt.q.cpp.150.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.150.option.forbidden_type.description": "사용 금지 타입을 설정합니다.",
  "rule.saqt.q.cpp.150.option.forbidden_type.name": "사용 금지 타입",
  "rule.saqt.q.cpp.150.option.ignore_const.description": "상수 무시 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.ignore_const.name": "상수 무시 여부",
  "rule.saqt.q.cpp.150.option.scope_target_global.description": "전역 변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.scope_target_global.name": "전역 변수 검사 여부",
  "rule.saqt.q.cpp.150.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.cpp.150.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.cpp.150.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.150.option.type_target_array.description": "배열 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.type_target_array.name": "배열 타입 검사 여부",
  "rule.saqt.q.cpp.150.option.type_target_pointer.description": "포인터 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.type_target_pointer.name": "포인터 타입 검사 여부",
  "rule.saqt.q.cpp.150.option.type_target_signed.description": "부호있는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.type_target_signed.name": "부호있는 정수 검사 여부",
  "rule.saqt.q.cpp.150.option.type_target_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.type_target_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.150.option.type_target_unsigned.description": "부호없는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.150.option.type_target_unsigned.name": "부호없는 정수 검사 여부",
  "rule.saqt.q.cpp.151.description": "중복된 헤더 파일 포함 체커는 하나의 파일에서 중복된 헤더를 선언하는 코드를 검출합니다.\n옵션에서 제외 파일 대상을 지정할 수 있습니다.\n헤더 파일에서 중복된 선언을 하지 않도록 합니다.",
  "rule.saqt.q.cpp.151.example.0.dangerous": "라인 2: def_win32.h를 중복 선언했습니다.",
  "rule.saqt.q.cpp.151.example.0.safe": "라인 1: 같은 헤더에서 중복 선언을 하지 않도록 합니다.",
  "rule.saqt.q.cpp.151.name": "중복된 헤더 파일 포함",
  "rule.saqt.q.cpp.151.option.file_target_excluded.description": "제외 대상 파일를 설정합니다.",
  "rule.saqt.q.cpp.151.option.file_target_excluded.name": "제외 대상 파일",
  "rule.saqt.q.cpp.152.description": "사용되지 않은 정적 변수 체커는 사용하지 않는 정적 변수를 포함하는 코드를 검출합니다.\n사용되지 않는 변수는 논리적인 오류이며 논리적인 오류는 소스 코드의 가독성을 떨어뜨리고 유지보수에 어려움을 줍니다. 따라서 사용되지 않는 변수를 삭제하는 것이 좋습니다.\n사용하지 않는 정적 변수를 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.152.example.0.dangerous": "라인 1: 정적 변수 a를 선언한 후에 사용하지 않았습니다.",
  "rule.saqt.q.cpp.152.example.0.safe": "라인 1: 사용되지 않는 static 변수를 삭제하도록 합니다.",
  "rule.saqt.q.cpp.152.name": "사용되지 않은 정적 변수",
  "rule.saqt.q.cpp.153.description": "비트 필드 타입 사용 체커는 멤버 변수를 비트 필드 자료형으로 선언하는 코드를 검출합니다.\n비트 필드의 내부 표현은 구현에 따라 정의되며 이로 인해 문제가 발생할 수 있습니다.\n비트 필드 자료형을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.153.example.0.dangerous": "라인 2: 멤버 변수 a를 비트 필드 자료형으로 선언했습니다.",
  "rule.saqt.q.cpp.153.example.0.safe": "라인 2: 구조체 등의 멤버 변수를 선언할 때 비트 필드 자료형은 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.153.name": "비트 필드 타입 사용",
  "rule.saqt.q.cpp.154.description": "실수 타입 사용 체커는 변수를 부동 소수점 자료형으로 선언하는 코드를 검출합니다.\n옵션에서 검출 자료형 및 검출 범위를 설정할 수 있습니다.\n옵션에서 금지된 자료형을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.154.example.0.dangerous": "라인 1: 매개변수 flag를 float 타입으로 선언했습니다.",
  "rule.saqt.q.cpp.154.example.0.safe": "라인 1: 금지된 타입인 float 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.154.name": "실수 타입 사용",
  "rule.saqt.q.cpp.154.option.expand_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.expand_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.154.option.forbidden_type.description": "사용 금지 타입을 설정합니다.",
  "rule.saqt.q.cpp.154.option.forbidden_type.name": "사용 금지 타입",
  "rule.saqt.q.cpp.154.option.ignore_const.description": "상수 무시 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.ignore_const.name": "상수 무시 여부",
  "rule.saqt.q.cpp.154.option.scope_target_global.description": "전역 변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.scope_target_global.name": "전역 변수 검사 여부",
  "rule.saqt.q.cpp.154.option.scope_target_local.description": "지역변수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.scope_target_local.name": "지역변수 검사 여부",
  "rule.saqt.q.cpp.154.option.scope_target_member.description": "멤버 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.scope_target_member.name": "멤버 검사 여부",
  "rule.saqt.q.cpp.154.option.scope_target_parameter.description": "파라미터 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.scope_target_parameter.name": "파라미터 검사 여부",
  "rule.saqt.q.cpp.154.option.type_target_array.description": "배열 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.type_target_array.name": "배열 타입 검사 여부",
  "rule.saqt.q.cpp.154.option.type_target_pointer.description": "포인터 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.type_target_pointer.name": "포인터 타입 검사 여부",
  "rule.saqt.q.cpp.154.option.type_target_signed.description": "부호있는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.type_target_signed.name": "부호있는 정수 검사 여부",
  "rule.saqt.q.cpp.154.option.type_target_typedef.description": "재정의 타입 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.type_target_typedef.name": "재정의 타입 검사 여부",
  "rule.saqt.q.cpp.154.option.type_target_unsigned.description": "부호없는 정수 검사 여부를 설정합니다.",
  "rule.saqt.q.cpp.154.option.type_target_unsigned.name": "부호없는 정수 검사 여부",
  "rule.saqt.q.cpp.155.description": "extern 혹은 정적 지정자 사용 체커는 옵션에 지정된 범위의 변수나 함수를 선언할 때 static 혹은 extren 키워드를 사용하는 코드를 검출합니다.\n옵션에서 extren 키워드 검사 여부, static 키워드 검사 여부 및 검사 범위를 설정할 수 있습니다.\n옵션에 지정된 범위에서 extern 혹은 static 키워드를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.155.example.0.dangerous": "라인 1: 함수를 static으로 정의했습니다.",
  "rule.saqt.q.cpp.155.example.0.safe": "라인 1: 금지된 static 대신 일반 함수로 선언하도록 합니다.",
  "rule.saqt.q.cpp.155.name": "extern 혹은 정적 지정자 사용",
  "rule.saqt.q.cpp.155.option.check_extern.description": "옵션을 사용하는 경우, extern 변수 혹은 함수를 검사합니다.",
  "rule.saqt.q.cpp.155.option.check_extern.name": "extern 변수/함수 검사 여부",
  "rule.saqt.q.cpp.155.option.check_static.description": "옵션을 사용하는 경우, static 변수 혹은 함수를 검사합니다.",
  "rule.saqt.q.cpp.155.option.check_static.name": "static 변수/함수 검사 여부",
  "rule.saqt.q.cpp.155.option.scope_target_global.description": "전역 범위에서 검사합니다.",
  "rule.saqt.q.cpp.155.option.scope_target_global.name": "전역(global) 범위에서 검사",
  "rule.saqt.q.cpp.155.option.scope_target_local.description": "옵션을 사용하는 경우, 지역 범위에서 검사합니다.",
  "rule.saqt.q.cpp.155.option.scope_target_local.name": "지역(local) 범위에서만 검사",
  "rule.saqt.q.cpp.156.description": "금지된 한정자 사용 체커는 옵션에 금지된 한정자를 사용하여 변수를 선언하는 코드를 검출합니다.\n옵션에서 검출할 한정자 및 검출 범위를 설정할 수 있습니다.\n옵션에서 금지된 한정자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.156.example.0.dangerous": "라인 2: 금지된 한정자를 사용했습니다.",
  "rule.saqt.q.cpp.156.example.0.safe": "라인 2: 금지된 한정자 대신 일반 변수로 선언하도록 합니다.",
  "rule.saqt.q.cpp.156.name": "금지된 한정자 사용",
  "rule.saqt.q.cpp.156.option.forbidden_qualifiers.description": "사용하지 말아야 할 한정자를 설정합니다. 여러 한정자를 설정할 경우 ,(컴마)를 사용합니다.<br /> 예) const, volatile",
  "rule.saqt.q.cpp.156.option.forbidden_qualifiers.name": "금지 한정자",
  "rule.saqt.q.cpp.156.option.scope_target_global.description": "옵션을 사용하는 경우, 전역 변수를 검사합니다.",
  "rule.saqt.q.cpp.156.option.scope_target_global.name": "전역 변수 분석",
  "rule.saqt.q.cpp.156.option.scope_target_local.description": "옵션을 사용하는 경우, 지역 변수를 검사합니다.",
  "rule.saqt.q.cpp.156.option.scope_target_local.name": "지역 변수 분석",
  "rule.saqt.q.cpp.156.option.scope_target_parameter.description": "옵션을 사용하는 경우, 파라미터를 검사합니다.",
  "rule.saqt.q.cpp.156.option.scope_target_parameter.name": "파라미터 분석",
  "rule.saqt.q.cpp.157.description": "너무 많은 함수 체커는 옵션에 허용된 값보다 많은 함수를 정의하는 파일을 검출합니다.\n옵션에서 파일에서 정의 가능한 함수의 최대수를 설정할 수 있습니다.\n옵션에서 허용된 값보다 많은 함수를 정의하지 않도록 합니다.",
  "rule.saqt.q.cpp.157.example.0.dangerous": "라인 9: 옵션에 허용된 값보다 많은 함수를 정의했습니다.",
  "rule.saqt.q.cpp.157.example.0.safe": "라인 4: 하나의 파일에서 허용된 개수의 함수를 정의하도록 합니다.",
  "rule.saqt.q.cpp.157.name": "너무 많은 함수",
  "rule.saqt.q.cpp.157.option.maximum_func.description": "파일 당 허용 가능한 최대 함수 수를 입력합니다.",
  "rule.saqt.q.cpp.157.option.maximum_func.name": "파일 당 허용 가능한 최대 함수 수",
  "rule.saqt.q.cpp.1572.description": "부적절한 파일 입력 및 출력 체커는 하나의 파일에 읽고 쓰기를 번갈아서 수행할 때 중간에 버퍼 비우기나 커서 재조정 등을 하지 않는 경우를 검출합니다.\n파일을 수정 모드로 열면 하나의 파일 객체를 사용하여 파일에 입력과 출력을 모두 할 수 있습니다. 하지만 입력 후에 출력, 혹은 출력 후에 입력을 바로 수행하지 않아야 합니다. 파일 커서가 어디를 가리키고 있을지 제어하기 어렵기 때문에 파일의 무결성이 깨지거나 파일의 끝(EOF)에서 읽기를 시도하게 될 수 있습니다. 또한 쓰기 후 버퍼가 제대로 파일에 반영되지 않은 상태로 읽기를 시도하면 일어날 결과를 예측하기 어렵습니다.\n쓰기 후에는 읽기를 하기 전에 fflush() 등의 함수로 버퍼를 비워줘야 하고, 쓰기와 읽기 사이에 어떤 순서로든 동작을 전환하기 전에 fseek() 등의 함수로 파일 커서 위치를 재조정해야 합니다.",
  "rule.saqt.q.cpp.1572.example.0.dangerous": "라인 19: fwrite() 함수로 파일에 쓰기를 수행합니다.\n라인 22: 버퍼를 비우지 않은 채 fread() 함수로 파일 읽기를 수행합니다.",
  "rule.saqt.q.cpp.1572.example.0.safe": "라인 21: 파일 읽기와 쓰기 사이에 fseek() 함수를 호출하여 커서 위치를 재조정합니다. 예상하지 않게 파일의 끝을 만나는 문제를 피할 수 있습니다.",
  "rule.saqt.q.cpp.1572.name": "부적절한 파일 입력 및 출력",
  "rule.saqt.q.cpp.158.description": "선언된 함수의 정의 누락 체커는 함수를 선언한 후에 같은 파일에서 해당 함수를 정의하지 않은 코드를 검출합니다.\n옵션에서 extren 함수의 검사 여부를 설정할 수 있습니다.\n함수를 선언한 후에 반드시 정의해야 합니다. 정의하지 않은 함수를 사용할 수 없기 때문에 함수 선언이 불필요한 코드가 되므로 가독성을 떨어뜨리고 유지보수를 어렵게 합니다.\n함수를 선언한 후에 정의하도록 합니다.",
  "rule.saqt.q.cpp.158.example.0.dangerous": "라인 1: 선언된 함수 foo()를 정의하지 않았습니다.",
  "rule.saqt.q.cpp.158.example.0.safe": "라인 2: 선언된 함수를 같은 파일에서 정의하도록 합니다.",
  "rule.saqt.q.cpp.158.name": "선언된 함수의 정의 누락",
  "rule.saqt.q.cpp.158.option.include_extern.description": "체크박스 체크 시 extern 함수도 검사합니다.",
  "rule.saqt.q.cpp.158.option.include_extern.name": "extern 함수 검사 여부",
  "rule.saqt.q.cpp.1587.description": "Boolean 타입에 대해 비트 연산 수행 체커는 참이나 거짓을 나타내는 타입의 값을 대상으로 비트 연산을 사용하는 경우를 검출합니다.\n일부 코딩 레퍼런스(MISRA-C 등)에서는 'boolean by enforcement'라는 개념을 도입하여, Boolean 형이 없는 C90에서도 타입 재정의를 통해 bool이라고 간주하고 이 룰을 적용할 수 있습니다. 해당 체커에서는 대소문자 구분 없이 재정의한 타입의 이름에 `bool`이 들어가면 Boolean으로 간주합니다.\n진리 타입은 비트 표현과 상관 없이 해당 값을 참이나 거짓의 조건을 나타내는 값으로만 사용하려는 의도로 만들어졌습니다. 따라서 내부 구현의 영향을 받는 비트 연산이 아니라 참이나 거짓 값을 다루는 논리 연산 사용하는 것이 좋습니다.\n진리 타입 값에는 비트 연산이 아닌 논리 연산을 사용합니다.",
  "rule.saqt.q.cpp.1587.example.0.dangerous": "라인 6: bool_t를 boolean 형으로 간주하는 C90 코드에서 두 boolean 간에 비트 연산을 수행했습니다.",
  "rule.saqt.q.cpp.1587.example.0.safe": "라인 6: boolean 형에 비트 연산을 하지 않도록 합니다.",
  "rule.saqt.q.cpp.1587.name": "Boolean 타입에 대해 비트 연산 수행",
  "rule.saqt.q.cpp.159.description": "한 줄에 작성된 여러 개의 다른 타입의 선언 체커는 하나의 라인에서 다른 자료형을 사용하는 복수의 변수를 선언하는 코드를 검출합니다.\n해당 체커는 포인터형이나 기본 자료형 등을 사용하는 여러 개의 변수를 동일한 줄에 선언하는 코드를 검출합니다.\n함수의 인자를 검사하여 인자의 잘못된 사용을 방지하고 API를 준수하도록 합니다. 잘못된 인자를 사용함으로써 프로그램이 예상하지 못한 동작이 발생할 수 있습니다.\n하나의 라인에서 다른 자료형을 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.159.example.0.dangerous": "라인 1: pCh와 pChNew를 각각 char * 타입과 char 타입으로 선언했습니다.",
  "rule.saqt.q.cpp.159.example.0.safe": "라인 1: char * 타입인 두 개의 변수를 선언하려면 각각 포인터 타입임을 명시하도록 합니다.",
  "rule.saqt.q.cpp.159.name": "한 줄에 작성된 여러 개의 다른 타입의 선언",
  "rule.saqt.q.cpp.160.description": "금지된 헤더 파일 포함 체커는 옵션에 지정된 사용 금지 헤더 파일을 include 하는 코드를 검출합니다.\n옵션에서 사용 금지 헤더 파일을 설정할 수 있습니다.\n옵션에 지정된 사용 금지 헤더 파일을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.160.example.0.dangerous": "라인 1: 금지된 헤더 파일 MIS14_A.h를 포함했습니다.",
  "rule.saqt.q.cpp.160.example.0.safe": "라인 1: 사용 금지 헤더 파일을 사용하지 않습니다.",
  "rule.saqt.q.cpp.160.name": "금지된 헤더 파일 포함",
  "rule.saqt.q.cpp.160.option.forbidden_header.description": "사용 금지 헤더를 설정합니다.",
  "rule.saqt.q.cpp.160.option.forbidden_header.name": "사용 금지 헤더",
  "rule.saqt.q.cpp.1600.description": "타입 구조 노출 체커는 헤더 파일에서 구조체 등의 내부 구성이 직접 노출되는 경우를 검출합니다.\n추상 데이터 타입은 C++이나 Java와 같은 객체 지향 언어로 제한되어 사용되는 개념이 아닙니다. C 언어 등을 사용한 프로그램에서도 추상 데이터 타입이 만들어지고 사용되어야 합니다. 어떤 정보를 헤더에 공개적으로 선언하고 어떤 정보를 개별 소스 파일에 숨길지 잘 선택하며 프로그램을 작성하는 것이 좋습니다.\n구조체 등을 정의할 때 헤더 파일에는 프로토타입 선언만 남기고 상세한 구현은 개별 소스 파일에 숨기는 것이 좋습니다.",
  "rule.saqt.q.cpp.1600.example.0.dangerous": "라인 2: string_mx 구조체의 내부 멤버 구성이 string_m.h 헤더 파일에 작성되었습니다. 이 헤더를 포함하는 모든 소스 파일에 구조체의 내부 구조가 노출됩니다.",
  "rule.saqt.q.cpp.1600.example.0.safe": "라인 2: 헤더 파일에서는 프로토타입만을 선언하여 구조체를 추상화합니다.",
  "rule.saqt.q.cpp.1600.name": "타입 구조 노출",
  "rule.saqt.q.cpp.1601.description": "널 배열 반환 체커는 한 함수 안에서 배열 객체를 반환하는 구문과 널을 반환하는 구문이 동시에 존재하는 경우를 검출합니다.\n빈 배열을 반환하는 대신 널을 반환하도록 함수를 작성하면, 널을 제대로 다루지 못하는 클라이언트 코드에서 이 함수를 사용할 때 취약점이 발생할 수 있습니다. 이로 인해 프로그램이 비정상으로 종료될 수 있습니다.\n배열을 반환하는 함수에서 반환할 배열의 내용이 딱히 없는 상황이라면 널을 반환하는 대신 빈 배열을 반환하는 것이 좋습니다.",
  "rule.saqt.q.cpp.1601.example.0.dangerous": "라인 31: 빈 배열 대신 널을 반환했습니다.",
  "rule.saqt.q.cpp.1601.example.0.safe": "라인 31: 널 대신 빈 배열을 반환하십시오.",
  "rule.saqt.q.cpp.1601.name": "널 배열 반환",
  "rule.saqt.q.cpp.1602.description": "상위 범위에의 지역 주소 할당 체커는 하위 영역 변수의 주소를 상위 영역의 변수에 할당하는 경우를 검출합니다.\n상위 영역의 변수에 할당된 하위 영역 지역 변수의 주소는 지역 변수가 선언된 함수가 종료된 후에는 더 이상 유효하지 않습니다.\n상위 영역의 변수에 하위 영역의 지역 변수 주소를 할당하지 않습니다.",
  "rule.saqt.q.cpp.1602.example.0.dangerous": "라인 6: 전역 변수 global_ptr 에 지역 변수 a의 주소를 대입했습니다.",
  "rule.saqt.q.cpp.1602.example.0.safe": "라인 6: 상위 영역의 변수에 지역 변수의 주소를 대입하면 안됩니다.",
  "rule.saqt.q.cpp.1602.name": "상위 범위에의 지역 주소 할당",
  "rule.saqt.q.cpp.1603.description": "잘못된 파일 포함 방법 체커는 헤더를 포함할 때 표준 라이브러리 헤더를 <>로, 다른 라이브러리를 \"\"로 포함하지 않는 경우를 검출합니다.\n헤더를 포함할 때 \"\" 혹은 <>를 선택해 사용하는 것은 해당 헤더 파일을 어디에서 먼저 찾을지 컴파일러에게 알려주는 역할을 합니다. 일반적으로 <>를 사용하면 헤더를 공유 디렉토리의 표준 라이브러리 저장 공간에서 찾고 \"\"를 사용하면 소스 파일이 존재하는 디렉토리나 프로젝트 디렉토리를 우선적으로 확인합니다. 따라서 둘을 구분해 사용하는 것이 좋습니다.\n표준 라이브러리는 <>를, 그 외의 헤더는 \"\"를 사용해 포함합니다.",
  "rule.saqt.q.cpp.1603.example.0.dangerous": "라인 1: 표준 라이브러리 헤더 stdio.h를 \"\"를 사용하여 포함했습니다.",
  "rule.saqt.q.cpp.1603.example.0.safe": "라인 1: 표준 라이브러리 헤더는 \"\" 대신 <>를 사용하여 포함해야 합니다.",
  "rule.saqt.q.cpp.1603.name": "잘못된 파일 포함 방법",
  "rule.saqt.q.cpp.1603.option.c_library.description": "C 표준 라이브러리 목록을 설정합니다.",
  "rule.saqt.q.cpp.1603.option.c_library.name": "C 표준 라이브러리",
  "rule.saqt.q.cpp.1603.option.cpp_library.description": "C++ 표준 라이브러리 목록을 설정합니다.",
  "rule.saqt.q.cpp.1603.option.cpp_library.name": "C++ 표준 라이브러리",
  "rule.saqt.q.cpp.1604.description": "첫 번째 케이스 구문 전 실행 가능한 구문 체커는 switch 구문에서 첫 번째 케이스 레이블보다 위에 작성된 실행 가능한 구문을 검출합니다.\nswitch 구문에서 첫 번째 케이스보다 위에 있는 구문은 절대 실행되지 않는 데드 코드입니다.\nswitch 구문 블록의 맨 앞에는 케이스 레이블이 있어야 합니다.",
  "rule.saqt.q.cpp.1604.example.0.dangerous": "라인 3: 첫 번째 케이스 레이블 이전에 실행 가능한 구문이 있습니다.",
  "rule.saqt.q.cpp.1604.example.0.safe": "라인 3: 첫 번째 케이스 레이블 이전에는 실행 가능한 구문이 없어야 합니다.",
  "rule.saqt.q.cpp.1604.name": "첫 번째 케이스 구문 전 실행 가능한 구문",
  "rule.saqt.q.cpp.161.description": "포함 시 절대 경로 사용 체커는 헤더 파일을 include 할 때 절대 경로를 사용하는 코드를 검출합니다.\n헤더 파일을 include 할 때 절대 경로를 사용하지 말아야 합니다.\n헤더 파일을 절대 경로 형식으로 포함하지 않도록 합니다.",
  "rule.saqt.q.cpp.161.example.0.dangerous": "라인 1: 헤더 파일을 절대 경로 형식으로 포함했습니다.",
  "rule.saqt.q.cpp.161.example.0.safe": "라인 1: 헤더 파일을 절대 경로 형식으로 포함하지 않도록 합니다.",
  "rule.saqt.q.cpp.161.name": "포함 시 절대 경로 사용",
  "rule.saqt.q.cpp.162.description": "누락된 헤더 파일 체커는 옵션에 지정된 필수 헤더 파일을 사용하지 않은 코드를 검출합니다.\n지정한 헤더 파일을 사용하지 않았을 경우에 검출됩니다.\n옵션에 지정된 필수 헤더 파일을 포함해야 합니다.",
  "rule.saqt.q.cpp.162.example.0.dangerous": "라인 1: 필수 헤더 파일이 포함되지 않았습니다.",
  "rule.saqt.q.cpp.162.example.0.safe": "라인 1: 필수 헤더 파일로 지정된 헤더 파일을 포함하도록 합니다.",
  "rule.saqt.q.cpp.162.name": "누락된 헤더 파일",
  "rule.saqt.q.cpp.162.option.check_all_missing_only.description": "필수 헤더를 포함하지 않은 경우 검사",
  "rule.saqt.q.cpp.162.option.check_all_missing_only.name": "필수 헤더를 포함하지 않은 경우 검사",
  "rule.saqt.q.cpp.162.option.required_header.description": "필수 헤더를 설정합니다.",
  "rule.saqt.q.cpp.162.option.required_header.name": "필수 헤더",
  "rule.saqt.q.cpp.163.description": "부적절한 구조체 정렬 체커는 옵션에 지정된 데이터 정렬(data alignment)의 배수가 아닌 구조체 크기를 사용하는 코드를 검출합니다.\n옵션에서 alignment 사용 여부, alignment 크기 및 각 자료형의 크기를 설정할 수 있습니다.\n옵션에 지정된 구조체 크기가 데이터 정렬의 배수여야 합니다.",
  "rule.saqt.q.cpp.163.example.0.dangerous": "라인 1: 구조체의 크기가 5이므로 데이터 정렬인 4의 배수가 아닙니다.",
  "rule.saqt.q.cpp.163.example.0.safe": "라인 1: 구조체 크기를 정의할 때 데이터 정렬의 배수가 되도록 합니다.",
  "rule.saqt.q.cpp.163.name": "부적절한 구조체 정렬",
  "rule.saqt.q.cpp.163.option.alignment_size.description": "alignment 크기를 설정합니다.",
  "rule.saqt.q.cpp.163.option.alignment_size.name": "alignment 크기",
  "rule.saqt.q.cpp.163.option.char_size.description": "char 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.163.option.char_size.name": "char 형 크기",
  "rule.saqt.q.cpp.163.option.float_size.description": "float 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.163.option.float_size.name": "float 형 크기",
  "rule.saqt.q.cpp.163.option.int_size.description": "int 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.163.option.int_size.name": "int 형 크기",
  "rule.saqt.q.cpp.163.option.short_size.description": "short 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.163.option.short_size.name": "short 형 크기",
  "rule.saqt.q.cpp.163.option.use_alignment.description": "alignment 사용 여부를 설정합니다.",
  "rule.saqt.q.cpp.163.option.use_alignment.name": "alignment 사용 여부",
  "rule.saqt.q.cpp.164.description": "패딩된 구조체 체커는 구조체를 정의할 때 패딩 비트를 발생시키는 코드를 검출합니다.\n옵션에서 alignment 사용 여부, alignment 크기 및 각 자료형의 크기를 설정할 수 있습니다.\n구조체를 정의할 때 패딩을 최소한으로 줄여야 합니다.",
  "rule.saqt.q.cpp.164.example.0.dangerous": "라인 3: 2비트의 short 변수 선언과 4비트의 int 변수 선언을 차례대로 수행하여 a 변수를 선언한 후에 2비트의 패딩이 발생했습니다.",
  "rule.saqt.q.cpp.164.example.0.safe": "라인 3: short 변수가 연속적으로 선언되므로 패딩 비트가 발생하지 않습니다.",
  "rule.saqt.q.cpp.164.name": "패딩된 구조체",
  "rule.saqt.q.cpp.164.option.alignment_size.description": "alignment 크기를 설정합니다.",
  "rule.saqt.q.cpp.164.option.alignment_size.name": "alignment 크기",
  "rule.saqt.q.cpp.164.option.char_size.description": "char 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.164.option.char_size.name": "char 형 크기",
  "rule.saqt.q.cpp.164.option.float_size.description": "float 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.164.option.float_size.name": "float 형 크기",
  "rule.saqt.q.cpp.164.option.int_size.description": "int 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.164.option.int_size.name": "int 형 크기",
  "rule.saqt.q.cpp.164.option.short_size.description": "short 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.164.option.short_size.name": "short 형 크기",
  "rule.saqt.q.cpp.164.option.use_alignment.description": "alignment 사용 여부를 설정합니다.",
  "rule.saqt.q.cpp.164.option.use_alignment.name": "alignment 사용 여부",
  "rule.saqt.q.cpp.165.description": "너무 큰 구조체 체커는 옵션에 지정된 최대 구조체 크기를 초과하는 구조체를 정의하는 코드를 검출합니다.\n옵션에서 최대 구조체 크기, alignment 사용 여부, alignment 크기 및 각 자료형의 크기를 설정할 수 있습니다.\n옵션에 지정된 최대 구조체 크기를 초과하지 않도록 구조체를 정의해야 합니다.",
  "rule.saqt.q.cpp.165.example.0.dangerous": "라인 1: 정의된 구조체의 크기(12)가 지정된 최대 크기(10)를 초과하여 오류가 발생합니다.",
  "rule.saqt.q.cpp.165.example.0.safe": "라인 1: 구조체를 허용된 최대 크기보다 작게 정의하도록 합니다.",
  "rule.saqt.q.cpp.165.name": "너무 큰 구조체",
  "rule.saqt.q.cpp.165.option.alignment_size.description": "alignment 크기를 설정합니다.",
  "rule.saqt.q.cpp.165.option.alignment_size.name": "alignment 크기",
  "rule.saqt.q.cpp.165.option.char_size.description": "char 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.165.option.char_size.name": "char 형 크기",
  "rule.saqt.q.cpp.165.option.float_size.description": "float 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.165.option.float_size.name": "float 형 크기",
  "rule.saqt.q.cpp.165.option.int_size.description": "int 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.165.option.int_size.name": "int 형 크기",
  "rule.saqt.q.cpp.165.option.max_size.description": "구조체의 최대 크기를 설정합니다.",
  "rule.saqt.q.cpp.165.option.max_size.name": "최대 크기 설정",
  "rule.saqt.q.cpp.165.option.short_size.description": "short 형 크기를 설정합니다.",
  "rule.saqt.q.cpp.165.option.short_size.name": "short 형 크기",
  "rule.saqt.q.cpp.165.option.use_alignment.description": "alignment 사용 여부를 설정합니다.",
  "rule.saqt.q.cpp.165.option.use_alignment.name": "alignment 사용 여부",
  "rule.saqt.q.cpp.1651.description": "도달할 수 없는 케이스 구문 체커는 switch 구문에서 절대 도달할 일이 없는 케이스 레이블을 검출합니다.\n절대 도달할 수 없는 케이스 레이블이 존재한다면 작성자가 실수를 했을 가능성이 높습니다. 또한 그냥 내버려두면 코드의 가독성을 떨어뜨립니다.\n도달할 수 없는 케이스 레이블을 삭제합니다.",
  "rule.saqt.q.cpp.1651.example.0.dangerous": "라인 12: unsigned int 값을 조건으로 삼아 분기하는 switch 구문 안에 -1에 해당하는 케이스 레이블이 있습니다. unsigned 값이 -1이 될 수 없으므로 절대 도달할 수 없는 케이스입니다.",
  "rule.saqt.q.cpp.1651.example.0.safe": "라인 12: 해당 케이스를 제거합니다.",
  "rule.saqt.q.cpp.1651.name": "도달할 수 없는 케이스 구문",
  "rule.saqt.q.cpp.1654.description": "일치하지 않는 가변 인자 수 체커는 가변인자를 받는 함수의 변환 지시자와 인자의 개수가 동일하지 않은 경우를 검출합니다.\n이때 변환 지시자란 문자열 포맷 스트링 등에서 인자로 받은 값을 치환하는 '%s' 와 같은 코드를 의미합니다.\n가변인자를 받는 함수를 호출할 때 변환 지시자와 인자의 개수가 다를 경우 비정상적인 동작이 발생할 수 있습니다.\n가변인자를 받는 함수를 호출할 때 변환 지시자의 개수와 인자 개수가 동일하도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1654.example.0.dangerous": "라인 3: printf() 함수의 변환 지시자는 3개이지만 인자는 1개만 작성했습니다.",
  "rule.saqt.q.cpp.1654.example.0.safe": "라인 3: printf() 함수 호출에서 변환 지시자의 개수와 인자의 개수를 일치시키도록 합니다.",
  "rule.saqt.q.cpp.1654.name": "일치하지 않는 가변 인자 수",
  "rule.saqt.q.cpp.1654.option.targets.description": "대상 함수와 conversion 지시자가 시작되는 인덱스를 적습니다. 인덱스는 0부터 시작합니다. 형태는 <대상함수 이름>,<숫자> 형태여야 합니다.",
  "rule.saqt.q.cpp.1654.option.targets.name": "대상 함수",
  "rule.saqt.q.cpp.1655.description": "한정자 없이 가상 함수 호출 체커는 생성자 내부에서 한정자를 표시하지 않은 가상 함수을 호출한 수식을 검출합니다.\n생성자나 소멸자 내에서 가상 함수는 한정자 없이 호출하면 안됩니다. 부모 클래스의 생성자에서 자식 클래스의 객체는 인스턴스가 유효한 상태가 아닙니다.\n생성자에서 가상 함수 호출 시 부모 클래스의 한정자를 붙여 일반 함수처럼 사용합니다. 혹은 가상 함수 자체를 생성자에서 사용하지 않는 방법이 있습니다. 일반적으로는 이쪽을 더 권장합니다.",
  "rule.saqt.q.cpp.1655.example.0.dangerous": "라인 22: Base의 생성자에서 가상 함수인 func() 메소드를 한정자 없이 호출했습니다.",
  "rule.saqt.q.cpp.1655.example.0.safe": "라인 2: Base의 생성자에서 Base:: 한정자를 붙여 가상 함수인 func() 메소드를 호출합니다.",
  "rule.saqt.q.cpp.1655.name": "한정자 없이 가상 함수 호출",
  "rule.saqt.q.cpp.1656.description": "생성자 및 소멸자 내에서 동적 타입 사용 체커는 메소드 내부 구현에서 동적 타입 정보를 필요로 하는 명령어를 사용한 생성자나 소멸자를 검출합니다.\nRTTI(RunTime Type Information) 이란 실행시간에 얻을 수 있는 객체들의 정보를 의미합니다. C++의 몇몇 명령어들은 RTTI 정보를 필요로 합니다. 대표적으로 typeid나 dynamic_cast, 가상 함수 호출 등이 있습니다.\n객체의 생성과 소멸 과정중에 타입은 완전히 생성된 객체의 타입과 다를 수 있습니다. 따라서 생성자와 소멸자에서 RTTI 사용은 의도하지 않은 문제가 발생할 수 있습니다.\n생성자와 소멸자에서 동적 타입 정보를 필요로 하는 명령어를 사용하지 않습니다.",
  "rule.saqt.q.cpp.1656.example.0.dangerous": "라인 9: 동적 타입에 대한 정보를 필요로 하는 typeid를 사용했습니다.\n라인 12: 동적 타입에 대한 정보를 필요로 하는 dynamic_cast를 사용했습니다.",
  "rule.saqt.q.cpp.1656.example.0.safe": "라인 9: 생성자 및 소멸자 내에서 동적 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1656.name": "생성자 및 소멸자 내에서 동적 타입 사용",
  "rule.saqt.q.cpp.1658.description": "소멸자 내에서 처리되지 않은 예외 체커는 소멸자 내부에서 처리할 수 없는 예외가 발생하는 수식을 검출합니다.\n소멸자는 일반적으로 이미 예외가 발생한 상황에서 객체를 해제하는 과정에서 호출할 수 있습니다. 예외 처리 과정에서 새로운 예외가 발생하여 외부로 전파되면 프로그램이 강제로 종료될 수 있습니다.\n소멸자에서 처리할 수 없는 예외를 발생시키는 수식을 사용하지 않습니다. 또는 발생하는 모든 예외를 처리할 수 있도록 적절한 예외 처리 구문을 추가합니다.",
  "rule.saqt.q.cpp.1658.example.0.dangerous": "라인 2: zoo() 함수에서 int 타입 예외를 던집니다.\n라인 10: 소멸자에서 처리 불가능한 예외가 발생했습니다.\n라인 12: 소멸자에서 float 타입에 대한 예외를 처리했습니다. 하지만 int 타입에 대한 예외는 처리하지 못합니다.",
  "rule.saqt.q.cpp.1658.example.0.safe": "라인 15: int 타입이나 혹은 모든 타입의 예외를 처리할 수 있는 catch절을 추가합니다.",
  "rule.saqt.q.cpp.1658.name": "소멸자 내에서 처리되지 않은 예외",
  "rule.saqt.q.cpp.1659.description": "사용되지 않은 예외 처리 체커는 함수 내에서 절대로 사용될 일이 없는 예외 처리 구문을 검출합니다.\n사용하지 않은 예외 처리 구문은 불필요합니다. 잠재적으로 사용할 가능성이 있는 예외 처리 구문인 경우는 남길 수 있으나 그 이외의 경우는 굳이 남겨둘 필요가 없는 구문입니다.\n사용하지 않은 예외 처리 구문을 삭제합니다.",
  "rule.saqt.q.cpp.1659.example.0.dangerous": "라인 8: int 타입에 대한 예외 처리 구문은 사용되지 않았습니다.",
  "rule.saqt.q.cpp.1659.example.0.safe": "라인 8: 사용하지 않은 예외 처리 구문을 삭제합니다.",
  "rule.saqt.q.cpp.1659.name": "사용되지 않은 예외 처리",
  "rule.saqt.q.cpp.166.description": "나머지 연산 사용 체커는 나머지 연산(%)을 사용하는 코드를 검출합니다.\n옵션에서 나머지 연산의 예외 사항 사용 여부를 설정할 수 있습니다. 예외 상황이란 나머지 연산을 수행하기 전에 동일한 피연산자에 먼저 나누기 연산을 수행하는 경우를 가리킵니다.\n나머지 연산을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.166.example.0.dangerous": "라인 4: 나머지 연산을 사용하므로 검출됩니다.",
  "rule.saqt.q.cpp.166.example.0.safe": "라인 4: 나머지 연산을 수행하기 전에 동일한 피연산자에 나누기 연산을 수행합니다.\n라인 5: 같은 피연산자에서 나누기 연산을 수행한 후에 나머지 연산을 수행하므로 검출되지 않습니다.",
  "rule.saqt.q.cpp.166.name": "나머지 연산 사용",
  "rule.saqt.q.cpp.166.option.exclude_follow_by_same_division.description": "바로 이전 표현식이 나머지 연산의 우측 피연산자와 동일한 피연산자로 나누기 연산을 하는 경우는 제외합니다.<br />예시 : v1 = a / b; v2 = a % b;",
  "rule.saqt.q.cpp.166.option.exclude_follow_by_same_division.name": "나머지 연산의 예외사항",
  "rule.saqt.q.cpp.1660.description": "파라미터 주소 반환 체커는 함수 매개변수의 주소값을 반환하는 수식을 검출합니다.\n반환 타입이 참조형인 함수는 인자 값을 그대로 반환할 경우 값이 아닌 매개 변수의 주소 값을 반환하게 됩니다.\n함수를 벗어나면 매개 변수의 주소 값은 더 이상 유효한 값이 아닙니다. 이 주소 값을 반환할 경우 더 이상 그 결과는 유효하지 않으며, 프로그램이 오동작할 가능성이 높습니다.\n함수의 반환 타입을 참조형에서 값을 반환하도록 수정합니다. 또는 매개 변수를 값이 아닌 참조형으로 변경합니다.",
  "rule.saqt.q.cpp.1660.example.0.dangerous": "라인 6: 매개 변수 a를 반환했습니다. foo() 함수의 반환 타입은 참조형이므로 매개 변수의 주소 값을 반환합니다.",
  "rule.saqt.q.cpp.1660.example.0.safe": "라인 6: 함수 선언에서 반환 타입을 참조형에서 값으로 변경합니다.",
  "rule.saqt.q.cpp.1660.name": "파라미터 주소 반환",
  "rule.saqt.q.cpp.1661.description": "가상 베이스 클래스 포인터에 대해 정적 형변환 체커는 가상으로 상속한 부모 클래스를 잘못된 방법으로 캐스팅한 수식을 검출합니다.\n여기서 잘못된 방법이란 가상으로 상속한 부모 클래스의 포인터를 dynamic_cast 이외의 방법으로 자식 클래스 포인터로 캐스팅하는 것을 의미합니다. dynamic_cast는 캐스팅을 수행하는 사용자 정의 타입들을 안전하게 다운캐스팅해야 할 때 사용합니다.\n가상 부모 클래스를 자식 클래스로 캐스팅할 때 dynamic_cast 이외의 다른 방법을 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n가상으로 상속한 부모 클래스의 포인터를 다운캐스팅 할 때는 반드시 dynamic_cast를 사용합니다.",
  "rule.saqt.q.cpp.1661.example.0.dangerous": "라인 16: foo() 함수에서 가상 부모 클래스 포인터를 reinterpret_cast를 사용하여 자식 클래스로 캐스팅했습니다.",
  "rule.saqt.q.cpp.1661.example.0.safe": "라인 16: dynamic_cast를 사용하여 캐스팅합니다.",
  "rule.saqt.q.cpp.1661.name": "가상 베이스 클래스 포인터에 대해 정적 형변환",
  "rule.saqt.q.cpp.1662.description": "main 함수 내에서 처리되지 않은 예외 체커는 메인 함수 내부에서 처리할 수 없는 예외가 발생하는 수식을 검출합니다.\n메인 함수는 프로그램의 첫 시작이자 마지막입니다. 마지막까지 처리되지 않은 예외는 구현에 정의된 방식(Implementation Defined Behavior)으로 처리되어 결과를 알 수 없습니다.\n메인 함수에서 처리할 수 없는 예외를 발생시키는 수식을 사용하지 않습니다. 또는 발생하는 모든 예외를 처리할 수 있도록 적절한 예외 처리 구문을 추가합니다.",
  "rule.saqt.q.cpp.1662.example.0.dangerous": "라인 3: int 타입 예외를 던졌습니다. 이 예외를 처리할 방법이 없습니다.",
  "rule.saqt.q.cpp.1662.example.0.safe": "라인 5: 메인 함수에서 발생하는 모든 예외를 처리할 수 있는 구문을 추가합니다.",
  "rule.saqt.q.cpp.1662.name": "main 함수 내에서 처리되지 않은 예외",
  "rule.saqt.q.cpp.167.description": "부호가 있는 값에 대해 나눗셈 체커는 나누기 연산을 수행할 때 분자나 분모에 signed 정수형이 존재하는 코드를 검출합니다.\n나누기 연산에서 분자와 분모는 모두 unsigned 정수형이어야 합니다.",
  "rule.saqt.q.cpp.167.example.0.dangerous": "라인 4: signed 정수형 i로 나누므로 검출됩니다.",
  "rule.saqt.q.cpp.167.example.0.safe": "라인 4: 모두 unsigned 정수형 변수로 나누기를 수행합니다.",
  "rule.saqt.q.cpp.167.name": "부호가 있는 값에 대해 나눗셈",
  "rule.saqt.q.cpp.168.description": "누락된 반환 값 비교 체커는 if, while 및 for 의 비교문에서 정수형을 반환하는 함수를 피연산자로 호출하는 동시에 비교 연산자를 사용하지 않는 코드를 검출합니다.\n분기문 또는 반복문에서 함수의 반환값을 정수와 비교하지 않거나 정수를 잘못 비교하는 경우 프로그램에 예상하지 못한 동작이 발생할 수 있습니다.\n조건문에서 정수형을 반환하는 함수를 피연산자로 사용하면 비교 연산자를 사용해야 합니다.",
  "rule.saqt.q.cpp.168.example.0.dangerous": "라인 3: foo() 함수에서 0을 반환했습니다.\n라인 5: foo() 함수에서 1을 반환했습니다.\n라인 7: foo() 함수에서 -1을 반환했습니다.\n라인 8: foo2() 함수에서 foo()의 반환값을 다른 값과 비교하지 않기 때문에 의도하지 않은 동작이 발생할 수 있습니다.",
  "rule.saqt.q.cpp.168.example.0.safe": "라인 8: 함수의 반환값을 정확한 값과 비교하여 문제를 해결합니다.",
  "rule.saqt.q.cpp.168.name": "누락된 반환 값 비교",
  "rule.saqt.q.cpp.169.description": "일치하지 않는 피연산자 타입 체커는 다른 정수 타입의 피연산자에 대입 연산자나 비교 연산자를 사용하는 코드를 검출합니다.\n옵션에서 16진수 상수의 분석 여부를 지정할 수 있습니다.\n서로 다른 정수형을 비교하기 위해서는 캐스팅을 수행해야 합니다. 하지만 캐스팅이 잘못되면 올바르지 않은 값이 나오기 때문에 비교 연산에서 올바른 캐스팅을 수행해야 합니다.\n정수에 대한 비교 연산이나 대입 연산을 수행할 경우 피연산자의 타입이 일치해야 합니다.",
  "rule.saqt.q.cpp.169.example.0.dangerous": "라인 3: 비교 연산에서 오른쪽 피연산자를 캐스팅하므로 문제가 발생했습니다.",
  "rule.saqt.q.cpp.169.example.0.safe": "라인 3: 비교 연산에서는 왼쪽 피연산자를 캐스팅해야 합니다.",
  "rule.saqt.q.cpp.169.name": "일치하지 않는 피연산자 타입",
  "rule.saqt.q.cpp.169.option.ignore_hexadecimal_const.description": "16진수 상수 무시 여부를 설정합니다.",
  "rule.saqt.q.cpp.169.option.ignore_hexadecimal_const.name": "16진수 상수 무시 여부",
  "rule.saqt.q.cpp.1691.description": "상충되는 저장소 클래스 체커는 동일한 함수나 객체가 외부 링크와 정적 링크 두가지를 동시에 가진 경우를 검출합니다.\n함수나 객체가 외부 링크와 정적 링크를 동시에 가지는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n동일한 함수나 객체는 동일한 스토리지 클래스를 가지도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.1691.example.0.dangerous": "라인 1: foo() 함수를 외부 링크로 선언했습니다.\n라인 2: number 변수를 외부 링크로 선언했습니다.\n라인 4: number 변수를 정적으로 정의했습니다. 라인 2에서 선언한 것과 다릅니다.\n라인 5: foo() 함수를 정적 링크로 정의했습니다. 라인 1에서 선언한 것과 다릅니다.",
  "rule.saqt.q.cpp.1691.example.0.safe": "라인 4: number 변수를 선언과 동일한 스토리지 클래스를 가지도록 정의합니다.\n라인 5: foo() 함수를 선언과 동일한 스토리지 클래스를 가지도록 정의합니다.",
  "rule.saqt.q.cpp.1691.name": "상충되는 저장소 클래스",
  "rule.saqt.q.cpp.1692.description": "읽기 전용 파라미터로 사용된 초기화 되지 않은 포인터 체커는 포인터가 가리키는 값을 초기화하지 않고 함수의 읽기 전용 인자로 전달하는 경우를 검출합니다.\n초기화되지 않은 값을 가리키는 포인터를 함수의 읽기 전용 인자로 전달하면 초기화되지 않은 값을 수정하지 못하고 그대로 사용해야 합니다. 이것은 프로그램의 오동작을 발생시키며 개발자가 의도한 상황도 아닐 가능성이 높습니다.\n함수의 읽기 전용 인자로 전달하는 포인터가 가리키는 값은 반드시 적절한 값으로 초기화한 뒤 넘기도록 합니다.",
  "rule.saqt.q.cpp.1692.example.0.dangerous": "라인 6: y2의 값을 초기화하지 않고 call_uinit_foo() 함수의 읽기 전용 인자로 넘겼습니다.",
  "rule.saqt.q.cpp.1692.example.0.safe": "라인 7: 함수의 읽기 전용 인자로 넘기는 값은 반드시 초기화한 이후에 넘기도록 합니다.",
  "rule.saqt.q.cpp.1692.name": "읽기 전용 파라미터로 사용된 초기화 되지 않은 포인터",
  "rule.saqt.q.cpp.171.description": "일관성 없는 전역 변수 선언 체커는 이미 선언된 전역 변수와 동일한 변수명을 재사용할 때 extern 키워드를 사용하지 않은 코드를 검출합니다.\n여러 파일에서 같은 이름의 전역 변수를 사용하면 같은 메모리 공간을 덮어쓰게 됩니다. 그 결과 프로그램에서 예상하지 못한 동작이 발생할 수 있습니다.\n다른 파일에서 전역 변수로 선언되어 있는 동일한 변수를 재사용하려면 extern 키워드를 사용해야 합니다.",
  "rule.saqt.q.cpp.171.example.0.dangerous": "라인 2: 전역 변수를 선언한 후에 sum.c 파일의 라인 9에서 같은 이름의 변수를 다른 자료형으로 선언하여 문제가 발생했습니다.",
  "rule.saqt.q.cpp.171.example.0.safe": "라인 2: 전역 변수를 여러 파일에서 사용하기 위해 자료형을 일치시키고 extern 한정자를 사용하며 헤더를 통해 인터페이스를 구성하는 것이 좋습니다.",
  "rule.saqt.q.cpp.171.name": "일관성 없는 전역 변수 선언",
  "rule.saqt.q.cpp.173.description": "일치하지 않는 문자 타입 체커는 str 계열 함수(ex. strncpy)와 wcs 계열 함수(ex. wcsncpy)에 각각 char와 wchar_t 매개 변수 타입을 전달하지 않는 코드를 검출합니다.\n해당 오류는 strncpy() 와 같은 좁은 문자형을 사용하는 함수를 사용할 때 모든 인자의 타입이 char * 가 아닌 경우, 또는 wcsncpy() 와 같은 와이드 문자형을 사용하는 함수를 사용할 때 모든 인자의 타입이 wchar_t * 가 아닌 경우에 발생합니다. 문자열 관련 함수와 와이드 문자열 관련 함수를 옵션에 지정할 수 있습니다.\n좁은 문자열을 wcsncpy() 함수에 사용하거나 와이드 문자열을 strncpy() 함수에 사용하는 것은 정의되지 않은 동작(Undefined Behavior)입니다. 또한 와이드 문자열은 널 와이드 문자로 종료되며 문자열 사이에 널을 포함할 수도 있습니다. 따라서 널 와이드 문자를 strncpy() 함수에 사용하는 경우 잘못된 길이가 계산될 수 있습니다.\nstr 계열 함수와 wcs 계열 함수의 매개 변수 자료형인 char와 wchar_t를 혼동하여 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.173.example.0.dangerous": "라인 2: 문자열 배열을 wchar_t 형으로 선언했습니다.\n라인 4: wchar_t 형 문자열을 복사하기 위해 자료형이 맞지 않는 strncpy() 함수를 사용했으므로 문제가 발생했습니다.\n라인 8: char 타입으로 문자열 배열을 선언했습니다.\n라인 9: 타입이 일치하지 않는 함수를 사용했습니다.",
  "rule.saqt.q.cpp.173.example.0.safe": "라인 4: wchar_t 자료형이 wcsncpy() 함수를 사용해야 합니다.\n라인 9: char 자료형이 strncpy() 함수를 사용해야 합니다.",
  "rule.saqt.q.cpp.173.name": "일치하지 않는 문자 타입",
  "rule.saqt.q.cpp.173.option.str_function.description": "문자열 관련 함수를 설정합니다.",
  "rule.saqt.q.cpp.173.option.str_function.name": "문자열 관련 함수",
  "rule.saqt.q.cpp.173.option.wcs_function.description": "와이드 문자열 관련 함수를 설정합니다.",
  "rule.saqt.q.cpp.173.option.wcs_function.name": "와이드 문자열 관련 함수",
  "rule.saqt.q.cpp.174.description": "일치하지 않는 재할당 타입 체커는 realloc() 함수에 포함된 첫 번째 매개변수의 구조체 타입과 해당 함수로 할당된 메모리를 가리키는 변수의 구조체 타입이 다른 코드를 검출합니다.\n해당 오류는 realloc() 함수를 사용할 때 해당 함수의 첫 번째 인자 타입이 왼쪽 피연산자의 타입과 다른 경우에 발생합니다.\n구조체 객체에 메모리를 재할당하는 경우 realloc() 함수에 포함된 매개변수 자료형이 왼쪽 피연산자와 다르면 해당 구조체의 멤버에 대해 잘못된 초기화가 수행될 수 있습니다. 따라서 프로그램이 예측하지 않은 흐름으로 실행될 수 있습니다.\nrealloc() 함수를 사용할 때 동일한 자료형을 사용해야 합니다.",
  "rule.saqt.q.cpp.174.example.0.dangerous": "라인 15: realloc() 함수를 사용하여 Exam1 타입의 구조체 값을 Exam2 로 복사했습니다. 따라서 구조체 멤버에 대한 잘못된 초기화가 수행될 수 있습니다.",
  "rule.saqt.q.cpp.174.example.0.safe": "라인 13: realloc() 함수를 사용하여 구조체에 메모리를 할당하려면 동일한 형의 구조체를 사용해야 합니다.",
  "rule.saqt.q.cpp.174.name": "일치하지 않는 재할당 타입",
  "rule.saqt.q.cpp.180.description": "케이스 구문에서 누락된 break 구문 체커는 break 구문으로 끝나지 않는 case 문을 검출합니다.\nbreak 대신에 return, continue, goto 문을 사용하는 것도 허용됩니다.\nswitch 문에서 break 문이 누락된 경우 프로그래머가 의도하지 않는 케이스를 실행하게 되어 예상하지 않은 동작이나 오류가 발생할 수 있습니다.\ncase 문에는 break, return, continue, goto 문 중 하나가 포함되어야 합니다.",
  "rule.saqt.q.cpp.180.example.0.dangerous": "라인 6: case 문에서 break 문을 누락했으므로 뒤에 있는 case 문을 실행했습니다. 따라서 변수 a가 2인 경우 case 2와 case 3을 실행합니다.",
  "rule.saqt.q.cpp.180.example.0.safe": "라인 6: 실행 흐름을 고려하여 case 문에 break 문을 추가합니다.",
  "rule.saqt.q.cpp.180.name": "케이스 구문에서 누락된 break 구문",
  "rule.saqt.q.cpp.1835.description": "다차원 배열 사용 체커는 옵션에 설정된 최대 배열 단계수 이상으로 배열을 사용한 경우를 검출합니다.\n옵션에서 최대 제한할 배열 단계 수를 설정할 수 있습니다.\n다차원 배열은 유지보수성과 가독성을 저하시킵니다.\n다차원 배열을 사용하지 마십시오.",
  "rule.saqt.q.cpp.1835.example.0.dangerous": "라인 1: 2차원 배열을 사용했습니다.",
  "rule.saqt.q.cpp.1835.example.0.safe": "라인 1: 1차원 배열을 사용하도록 합니다.",
  "rule.saqt.q.cpp.1835.name": "다차원 배열 사용",
  "rule.saqt.q.cpp.1835.option.threshold.description": "금지할 배열의 차원 단계를 설정합니다. 만약 2로 설정했으면 2차원 이상의 배열을 결함으로 검출합니다.",
  "rule.saqt.q.cpp.1835.option.threshold.name": "제한할 배열 단계 수",
  "rule.saqt.q.cpp.1836.description": "블록 중간에 존재하는 선언 체커는 변수가 블록의 초반부에 선언되지 않은 경우를 검출합니다.\n라벨(Label) 문장, 빈(Empty) 문장이 들어간 경우는 예외로 합니다. 옵션에서 프로프레임 지원 여부, 무시할 변수 이름을 설정할 수 있습니다.\n과거의 C 컴파일러는 변수 선언부가 블록 초반에 없으면 컴파일 오류가 발생합니다. 현재 대부분의 C 컴파일러들은 변수 선언부의 위치가 컴파일 성공여부에 영향을 주지 않지만, 코드의 호환성을 위해 변수 선언은 블록 초반에 이뤄지는 것이 좋습니다.\n변수 선언은 블록의 초반에 하도록 합니다.",
  "rule.saqt.q.cpp.1836.example.0.dangerous": "라인 2: 변수 'x' 가 함수 블록의 초반부에 선언 되었습니다.\n라인 4: 변수 'y'가 if 문 블록의 초반부에 선언 되었습니다.\n라인 6: 변수 'z'가 3번 라인에서 if 문장이 나타난 후 선언 되었습니다.",
  "rule.saqt.q.cpp.1836.example.0.safe": "라인 3: 변수 'z'를 함수 블록의 초반부에 선언하도록 합니다.",
  "rule.saqt.q.cpp.1836.name": "블록 중간에 존재하는 선언",
  "rule.saqt.q.cpp.1836.option.ignore_var_name.description": "무시할 변수 이름을 정규식을 사용하여 설정합니다.",
  "rule.saqt.q.cpp.1836.option.ignore_var_name.name": "무시할 변수 이름",
  "rule.saqt.q.cpp.1836.option.support_proframe.description": "옵션을 사용하는 경우, 프로프레임 코드 분석을 보다 정확하게 수행합니다.",
  "rule.saqt.q.cpp.1836.option.support_proframe.name": "프로프레임 지원",
  "rule.saqt.q.cpp.1837.description": "if 구문 조건 내에서의 함수 사용 체커는 옵션에 지정된 함수 외에 함수를 조건문 내에서 사용한 경우를 검출합니다.\n옵션에서는 조건문 내에 사용 가능한 함수를 설정할 수 있습니다.\n조건문 내에서 함수를 호출하여 사용할 경우 코드 가독성이 떨어집니다.\n조건문 안에서 함수를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1837.example.0.dangerous": "라인 1: 조건문 내에서 함수 호출을 사용 했습니다.",
  "rule.saqt.q.cpp.1837.example.0.safe": "라인 1: 함수 호출 식을 if 문에서 분리하도록 합니다.",
  "rule.saqt.q.cpp.1837.name": "if 구문 조건 내에서의 함수 사용",
  "rule.saqt.q.cpp.1837.option.ignore_function_list.description": "조건문 내에서 사용을 허용하는 함수들을 정규식으로 입력합니다.",
  "rule.saqt.q.cpp.1837.option.ignore_function_list.name": "허용하는 함수 목록",
  "rule.saqt.q.cpp.1840.description": "== 및 != 연산자를 사용한 문자열 비교 체커는 문자열을 비교할 때 직접 비교 연산(==, !=)을 사용한 경우를 검출합니다.\n문자열을 비교할 때 직접 비교 연산(==, !=)을 사용하면 안됩니다.\n문자열을 저장하는 변수는 주소 값을 가지고 있습니다. 따라서 주소 값에 대한 비교는 항상 거짓이 나옵니다.\n문자열을 비교하기 위해선 문자열 비교 함수를 사용해야 합니다.",
  "rule.saqt.q.cpp.1840.example.0.dangerous": "라인 3: 문자열 변수와 문자열 변수를 직접 비교했습니다. 이 경우 값은 언제나 false 가 나옵니다.",
  "rule.saqt.q.cpp.1840.example.0.safe": "라인 4: C에서는 strcpy 혹은 strncpy를 사용해야 하며, C++에서는 string의 compare()를 사용해야 합니다.",
  "rule.saqt.q.cpp.1840.name": "== 및 != 연산자를 사용한 문자열 비교",
  "rule.saqt.q.cpp.185.description": "문자 타입을 정수 타입으로 할당 체커는 정수형을 문자형으로 변환하는 코드를 검출합니다.\nint 타입을 char 타입으로 변환하면 표현할 수 없는 범위의 값이 잘려나갈 위험이 있습니다.\n예를 들어, 4바이트 크기의 int 타입 값을 1바이트 크기의 char 타입 변수에 저장하면 표현할 수 없는 범위의 값이 잘려나가서 char 타입 변수에 정확한 값이 저장되지 않는 경우가 있습니다. 그 결과 오작동이나 버퍼 오버런이 발생할 수 있습니다.\nint 타입을 char 타입으로 변환하면 표현할 수 없는 범위의 값이 잘릴 수 있으므로 변환하지 않도록 합니다.",
  "rule.saqt.q.cpp.185.example.0.dangerous": "라인 3: 1바이트 크기인 char 타입 변수에 int 타입 변수나 값을 지정할 경우 char 타입 변수에 오버플로우가 발생할 가능성이 있습니다.",
  "rule.saqt.q.cpp.185.example.0.safe": "라인 2: 정확한 타입인 int 타입으로 수정합니다.",
  "rule.saqt.q.cpp.185.name": "문자 타입을 정수 타입으로 할당",
  "rule.saqt.q.cpp.185.option.unsigned_signed_char_as_int.description": "unsigned char, signed char를 int형으로 간주 여부를 결정합니다.",
  "rule.saqt.q.cpp.185.option.unsigned_signed_char_as_int.name": "unsigned char, signed char를 int형으로 간주",
  "rule.saqt.q.cpp.187.description": "10진수가 아닌 정수 상수 체커는 정수 상수를 10진수가 아닌 진법(8진수나 16진수)으로 정의하는 코드를 검출합니다.\n정수 상수를 10진수가 아닌 진법(8진수나 16진수)으로 정의하면 시스템에 따라 다른 결과를 표시할 수 있으므로 위험합니다.\n8진수나 16진수의 표현은 비트 연산을 위해 사용됩니다. 하지만 비트의 수를 측정하지 못하면 의도하지 않은 연산이 발생할 수 있습니다. 예를 들어, 16진수로 32비트 변수를 표현했는데 실제 변수의 자료형은 64비트일 때 프로그래머가 의도하지 않은 연산 결과를 얻게 됩니다. 또한 버퍼 오버런이 발생할 수 있습니다.\n정수는 10진법으로 표현되어야 합니다.",
  "rule.saqt.q.cpp.187.example.0.dangerous": "라인 1: 16진수로 32비트 변수를 정의했습니다.\n라인 3: unsigned long 형이 64비트인 경우 mask에 0x00000000FFFFFFFF의 값이 할당됩니다. 따라서 프로그래머가 의도하지 않은 결과를 얻게 되었습니다.",
  "rule.saqt.q.cpp.187.example.0.safe": "라인 1: 0xFFFFFFFF 대신 -1을 사용하여 시스템 호환성을 높일 수 있습니다.",
  "rule.saqt.q.cpp.187.name": "10진수가 아닌 정수 상수",
  "rule.saqt.q.cpp.1883.description": "무효화된 반복자 체커는 무효화된 반복자를 사용한 수식을 검출합니다.\n반복자는 특정 컨테이너의 메소드에서 사용한 뒤 종종 무효화됩니다. 이렇게 무효화된 반복자를 접근할 경우 런타임 오류가 발생할 수 있습니다.\n무효화된 반복자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.1883.example.0.dangerous": "라인 5: push_back() 함수로 데이터를 삽입 합니다. 반복자'I'는 무효화 될 수 있습니다.\n라인 6: 반복자 'I'를 역참조 합니다.",
  "rule.saqt.q.cpp.1883.example.0.safe": "라인 6: 무효화된 반복자를 사용하지 말고 새로운 반복자를 얻어옵니다.",
  "rule.saqt.q.cpp.1883.name": "무효화된 반복자",
  "rule.saqt.q.cpp.1889.description": "지역 변수 주소 접근 체커는 지역 변수의 주소를 함수의 인자를 통해 외부에서 참조하는 경우를 검출합니다.\n해당 오류는 지역 변수의 주소를 함수의 인자에 Call By Reference로 전달할 때 해당 함수가 끝난 후에 외부에서 주소를 참조할 경우 잘못된 값을 읽어옴으로 인해 발생합니다.\n해당 이슈로 인해 일반적으로 의도하지 않은 프로그램 동작이나 프로그램 종료가 발생합니다.\n지역 변수의 주소를 외부 포인터에 대입하지 않도록 합니다.",
  "rule.saqt.q.cpp.1889.example.0.dangerous": "라인 4: 함수 인자 x의 포인터가 지역 변수 y의 주소를 가리키게 됩니다.",
  "rule.saqt.q.cpp.1889.example.0.safe": "라인 3: 스택이 아닌 힙 영역에 동적으로 할당되는 주소를 인자를 통해 외부에 전달되는 주소로 사용하도록 합니다.",
  "rule.saqt.q.cpp.1889.name": "지역 변수 주소 접근",
  "rule.saqt.q.cpp.189.description": "일치하지 않는 인자 수 체커는 함수를 호출할 때 인자의 수가 정의된 매개 변수의 수와 일치하지 않는 코드를 검출합니다.\n.\n일반적으로 함수에서 정의된 것과 다른 인자 수가 호출되면 GCC 컴파일러에서 오류가 발생합니다. 하지만 인자 수를 확인하도록 지원하지 않는 컴파일러에서는 인자 수가 다른 경우에도 오류를 검출하지 않습니다. 정의된 것과 다른 인자 수를 포함하는 함수를 호출하는 경우 프로그램에서 예상하지 못한 동작이 발생할 수 있습니다.\n함수를 정의할 때 설정된 매개 변수 수와 해당 함수를 호출할 때 전달된 인자 수가 일치해야 합니다.",
  "rule.saqt.q.cpp.189.example.0.dangerous": "라인 1: foo() 함수에서 매개 변수 수는 1개입니다.\n라인 5: foo() 함수를 호출할 때 전달된 인자 수는 2개입니다.",
  "rule.saqt.q.cpp.189.example.0.safe": "라인 5: 함수에서 정의된 매개 변수 수와 호출 시 함수의 인자 수를 정확하게 일치시킵니다.",
  "rule.saqt.q.cpp.189.name": "일치하지 않는 인자 수",
  "rule.saqt.q.cpp.190.description": "재사용된 토큰화 된 문자열 체커는 strtok() 함수를 호출하는 데 사용된 첫 번째 인자를 재사용하는 경우를 검출합니다.\nstrtok() 함수는 문자열을 단어 단위로 분할해주는 함수입니다. 해당 함수를 호출하면 원본 문자열의 토큰 부분이 널 문자로 대체됩니다.\nstrtok() 함수로 인해 원본 문자열의 일부가 변경되기 때문에 이 문자열을 그대로 사용하는 경우 개발자가 예상하지 못한 결과가 발생할 수 있습니다. 해당 문제는 strtok() 함수의 동작 방식이 직관적이지 않기 때문에 발생합니다.\nstrtok() 함수에 첫 번째 인자로 전달된 변수를 재사용하지 않도록 합니다. 만약 재사용해야 하는 경우 strtok() 함수에서는 원본 문자열을 복사한 값을 사용하도록 합니다.",
  "rule.saqt.q.cpp.190.example.0.dangerous": "라인 1: 토큰을 분리할 문자열이 입력되었습니다.\n라인 3: \"-\" 구분자에 따라 토큰이 분리되었습니다. 하지만 원본 명령어의 문자열도 변경되었습니다.\n라인 8: 원본과 다른 명령어가 출력되었습니다.",
  "rule.saqt.q.cpp.190.example.0.safe": "라인 5: 원본 문자열을 재사용할 경우 직접 원본을 사용하는 대신 임시 버퍼 문자열을 strtok() 인자로 사용합니다.",
  "rule.saqt.q.cpp.190.name": "재사용된 토큰화 된 문자열",
  "rule.saqt.q.cpp.191.description": "심볼릭 링크 경쟁 조건 체커는 lstat() 함수의 호출 결과에만 의존하여 파일에 접근하는 코드를 검출합니다.\nlstat() 함수는 파일의 경로를 통해 정보를 확인하기 때문에 해당 함수로 확인한 파일의 심볼릭 링크 상태가 정확하지 않을 수 있습니다. 즉, lstat() 함수를 호출하고 open() 함수로 다시 파일을 여는 사이에 파일이 조작될 가능성이 있습니다. 따라서 open() 함수로 파일을 확보하고 다시 fstat() 함수로 해당 파일의 정확한 정보를 가져온 후에 해당 정보에 따라 동작을 결정해야 합니다.\nlstat() 함수에만 의존하여 파일 정보를 확인하지 않도록 합니다. lstat() 함수로 원하는 파일이 맞는지 확인한 후에 open() 함수로 파일을 열고, 다시 fstat() 함수의 결과와 기존 lstat() 함수의 결과가 동일한 경우에만 작업을 진행합니다.",
  "rule.saqt.q.cpp.191.example.0.dangerous": "라인 6: 파일 정보를 lstat_info 구조체에 저장했습니다.\n라인 9: 파일이 심볼릭 링크가 아니면 파일을 열게 됩니다.\n라인 15: 실제 파일의 상태를 확인하지 않고 파일을 수정하는 경우 TOCTOU 경쟁 조건이 발생할 수 있습니다.",
  "rule.saqt.q.cpp.191.example.0.safe": "라인 7: 파일 이름으로 lstat()를 호출합니다.\n라인 10: open() 함수로 파일을 엽니다.\n라인 14: fstat() 함수로 파일의 상태를 불러옵니다.\n라인 17: lstat() 함수로 얻은 링크 정보와 fstat() 함수로 얻은 파일 정보가 동일한지 확인한 후에 파일을 수정합니다.",
  "rule.saqt.q.cpp.191.name": "심볼릭 링크 경쟁 조건",
  "rule.saqt.q.cpp.1914.description": "함수 포인터에 물리 주소 직접 할당 체커는 함수 포인터에 주소 값을 직접 대입한 경우를 검출합니다.\n함수 포인터에 주소 값을 직접 대입하지 마십시오. 언제나 같은 메모리 주소에 해당 함수가 있다고 보장할 수 없습니다.\n공격자가 악의적 코드가 실행되도록 해당 포인터가 가리키는 주소를 바꿀 수 있습니다.\n함수 포인터에 주소 값을 직접 대입하지 않습니다.",
  "rule.saqt.q.cpp.1914.example.0.dangerous": "라인 1: 함수 포인터에 직접 하드웨어 주소를 입력하고 있습니다.",
  "rule.saqt.q.cpp.1914.example.0.safe": "라인 6: 함수 포인터에 하드웨어 주소를 직접 입력하지 않고, 선언된 함수 이름을 사용하여 함수의 주소 값을 대입합니다.",
  "rule.saqt.q.cpp.1914.name": "함수 포인터에 물리 주소 직접 할당",
  "rule.saqt.q.cpp.193.description": "비 동기 스레드 종료 체커는 pthread cancel 타입으로 PTHREAD_CANCEL_ASYNCHRONOUS 인자를 사용하는 코드를 검출합니다.\n스레드를 비동기적으로 종료하는 경우 프로그램 충돌, 리소스 누수 또는 예상하지 못한 동작이 발생할 수 있습니다.\npthread cancel 타입으로 PTHREAD_CANCEL_ASYNCHRONOUS를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.193.example.0.dangerous": "라인 5: pthread cancel 타입으로 PTHREAD_CANCEL_ASYNCHRONOUS를 사용했습니다.\n라인 11: 반복문이 실행되면서 여러 스레드가 실행되지만 pthread_setcanceltype() 함수가 실행되기 전까지 스레드는 종료되지 않고 남아 있습니다.",
  "rule.saqt.q.cpp.193.example.0.safe": "라인 3: 경쟁 조건이 발생하는 경우 PTHREAD_CANCEL_ASYNCHRONOUS 대신에 pthread_mutex_lock과 pthread_mutex_unlock을 사용하여 해당 오류를 해결한 후에 pthread를 종료하도록 합니다.",
  "rule.saqt.q.cpp.193.name": "비 동기 스레드 종료",
  "rule.saqt.q.cpp.193.option.pthread_cancel_type.description": "PTHREAD_CALCEL_TYPE 매크로의 실제 값을 입력합니다.",
  "rule.saqt.q.cpp.193.option.pthread_cancel_type.name": "PTHREAD_CALCEL_TYPE 매크로의 실제 값",
  "rule.saqt.q.cpp.194.description": "비교 대신 할당 수행 체커는 조건을 계산하기 위해 비교 연산을 사용해야 하는 부분에 할당 연산을 수행하는 코드를 검출합니다.\n보통 '=='와 같은 비교 연산자를 작성하려다 실수로 '='와 같은 대입 연산자를 사용하는 경우에 이러한 문제가 발생합니다. 실수로 작성한 코드의 경우 의도와 다르게 동작함에도 불구하고 위치를 파악하기가 어렵습니다.\n비교 연산자 대신 대입 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.194.example.0.dangerous": "라인 2: a를 널과 비교하는 대신 할당했기 때문에 문제가 발생했습니다.",
  "rule.saqt.q.cpp.194.example.0.safe": "라인 2: 조건문에서는 비교 연산자를 사용해야 합니다.",
  "rule.saqt.q.cpp.194.name": "비교 대신 할당 수행",
  "rule.saqt.q.cpp.195.description": "할당 대신 비교 수행 체커는 할당 연산을 사용해야 하는 부분에 비교 연산을 수행하는 코드를 검출합니다.\n보통 '='와 같은 대입 연산자를 작성하려다 실수로 '=='와 같은 비교 연산자를 사용하는 경우에 이러한 문제가 발생합니다.\n실수로 다른 연산자를 사용하는 경우 프로그램이 의도하지 않은 흐름으로 수행될 수 있습니다.\n대입 연산자 대신 비교 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.195.example.0.dangerous": "라인 3: 변수 a에 5를 대입하는 대신 비교 연산을 수행했습니다.",
  "rule.saqt.q.cpp.195.example.0.safe": "라인 3: 경우에 맞게 올바른 연산자를 사용합니다.",
  "rule.saqt.q.cpp.195.name": "할당 대신 비교 수행",
  "rule.saqt.q.cpp.1951.description": "비 가상 순수 함수 체커는 순수 함수가 가상 함수로 선언되지 않은 경우를 검출합니다.\n순수 함수는 반드시 가상 함수로 선언되어야 합니다. 그렇지 않으면 컴파일이 되지 않습니다.\n컴파일 오류가 발생합니다.\n순수 함수를 가상 함수로 선언합니다.",
  "rule.saqt.q.cpp.1951.example.0.dangerous": "라인 5: 순수 가상 함수를 virtual 로 선언하지 않았습니다. C++ 문법에 맞지 않는 코드입니다.",
  "rule.saqt.q.cpp.1951.example.0.safe": "라인 5: 순수 함수는 반드시 가상 함수로 선언되어야 합니다.",
  "rule.saqt.q.cpp.1951.name": "비 가상 순수 함수",
  "rule.saqt.q.cpp.1952.description": "순수 가상 함수의 잘못된 초기화 체커는 순수 가상 함수를 0으로 초기화하지 않은 경우를 검출합니다.\n순수 가상 함수는 반드시 0으로 초기화되어야 합니다. 그렇지 않으면 컴파일이 되지 않습니다.\n컴파일 오류가 발생합니다.\n순수 가상 함수를 0으로 초기화합니다.",
  "rule.saqt.q.cpp.1952.example.0.dangerous": "라인 5: 순수 가상 함수로 선언한 것으로 보이나 전혀 C++ 문법에 맞지 않습니다.",
  "rule.saqt.q.cpp.1952.example.0.safe": "라인 5: 순수 가상 함수를 선언하려면 = 0을 붙여야 합니다.",
  "rule.saqt.q.cpp.1952.name": "순수 가상 함수의 잘못된 초기화",
  "rule.saqt.q.cpp.196.description": "일치하지 않는 함수 정의 및 선언 타입 체커는 함수 정의와 선언에서 타입 이름이 일치하지 않는 경우를 검출합니다.\nC/C++의 경우 함수 정의와 선언에서 타입 이름이 다르더라도 호환되는 타입이 있습니다. 하지만 일반적으로 함수 정의와 선언에서 타입 이름이 다른 것은 정의되지 않은 동작(Undefined Behavior)입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n함수는 선언된 대로 정의되어야 합니다.",
  "rule.saqt.q.cpp.196.example.0.dangerous": "라인 3: 함수에서 정의된 인자형(int)과 선언된 인자형(SINT32)이 다르기 때문에 검출되었습니다.",
  "rule.saqt.q.cpp.196.example.0.safe": "라인 3: 함수 정의와 선언에서 타입 이름이 일치해야 합니다.",
  "rule.saqt.q.cpp.196.name": "일치하지 않는 함수 정의 및 선언 타입",
  "rule.saqt.q.cpp.198.description": "부적절한 memcpy 인자의 값 체커는 포인터나 복합 수식을 인자로 포함하는 sizeof 연산자의 결과를 memcpy()와 같은 옵션에 지정된 함수의 특정 인자로 전달하는 코드를 검출합니다\n옵션에서 검출 대상 함수와 인자의 위치를 지정할 수 있습니다.\nsizeof 연산자에 포인터를 전달하는 경우 포인터 타입의 크기를 얻을 것으로 기대하지만 실제로는 포인터의 크기를 측정하게 됩니다. 또한, sizeof 연산자에 복합 수식을 전달하는 경우 의도하지 않은 결과나 오류가 발생할 수 있습니다. sizeof 연산자의 결과는 컴파일할 때 평가되지만 변수 등이 포함된 복합 수식의 결과는 런타임할 때에야 알 수 있기 때문입니다.\n옵션에 지정된 memcpy()와 같은 함수의 특정 위치의 인자에 sizeof 연산자를 사용하는 경우 해당 연산자의 인자에 포인터나 복합 수식을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.198.example.0.dangerous": "라인 5: sizeof 연산자 인자로 포인터 변수를 사용했습니다.\n라인 6: sizeof 연산자 인자로 연산 수식을 사용했습니다.",
  "rule.saqt.q.cpp.198.example.0.safe": "라인 5: 변수를 sizeof()의 직접 인자로 사용합니다.\n라인 6: sizeof()가 아닌 수식을 사용합니다.",
  "rule.saqt.q.cpp.198.name": "부적절한 memcpy 인자의 값",
  "rule.saqt.q.cpp.198.option.call_param_target_in_function.description": "분석 대상 함수와 파라미터 인덱스를 설정합니다.",
  "rule.saqt.q.cpp.198.option.call_param_target_in_function.name": "분석 대상 함수와 파라미터 인덱스",
  "rule.saqt.q.cpp.200.description": "쓸모없는 이름 체커는 동일한 이름의 정적 변수와 지역 변수를 사용하는 코드를 검출합니다.\n지역 변수와 정적 변수의 이름이 같은 경우 가독성이 떨어질 뿐만 아니라 지역 변수는 사용되지 않고 정적 변수만 사용되어 프로그램에 혼란을 줄 수 있습니다.\n동일한 이름의 지역 변수와 정적 변수를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.200.example.0.dangerous": "라인 3: 정적 변수와 같은 이름의 지역 변수를 선언하여 오류가 발생했습니다.",
  "rule.saqt.q.cpp.200.example.0.safe": "라인 3: 정적 변수와 지역 변수의 이름을 다르게 선언합니다.",
  "rule.saqt.q.cpp.200.name": "쓸모없는 이름",
  "rule.saqt.q.cpp.201.description": "누락된 반환 타입 체커는 함수의 반환 타입을 정의하지 않는 코드를 검출합니다.\n함수의 반환 타입이 정의되지 않은 경우 GCC와 같은 타입의 컴파일러에서는 해당 함수의 타입을 int로 간주합니다. 그렇지만 명시적으로 함수의 반환 타입을 정의하는 것이 좋습니다.\n함수를 정의할 때 반환 타입을 누락하지 않도록 합니다.",
  "rule.saqt.q.cpp.201.example.0.dangerous": "라인 1: GCC의 경우 함수의 반환 타입을 int로 간주합니다. 하지만 반환 타입이 float이므로 오류가 발생했습니다.",
  "rule.saqt.q.cpp.201.example.0.safe": "라인 1: 함수의 반환 타입을 명시적으로 정의해야 합니다.",
  "rule.saqt.q.cpp.201.name": "누락된 반환 타입",
  "rule.saqt.q.cpp.2010.description": "빈 while 구문 체커는 본문에 아무런 내용이 없는 while 구문을 검출합니다.\nwhile 구문에 본문이 없으면 아무런 의미가 없는 구문입니다. 특히 반복문의 조건이 참인 경우 무의미한 무한 루프에 빠질 위험이 있습니다.\nwhile 구문의 본문을 비워두지 않도록 합니다.",
  "rule.saqt.q.cpp.2010.example.0.dangerous": "라인 3: while 구문의 본문이 비어 있습니다.",
  "rule.saqt.q.cpp.2010.example.0.safe": "라인 4: while 구문의 본문을 비워두지 않도록 합니다.",
  "rule.saqt.q.cpp.2010.name": "빈 while 구문",
  "rule.saqt.q.cpp.2011.description": "16진수 이스케이프 시퀀스 사용 체커는 16진수 이스케이프 시퀀스를 사용한 수식을 검출합니다.\n역슬러시 뒤에 영문자 x와 숫자값이 오는 것은 16진수로 취급됩니다.\n16진수 이스케이프 시퀀스를 처리하는 방법은 구현 정의 동작(Implementation Defined Behavior)입니다. 따라서 컴파일러마다 다르게 처리될 수 있습니다. 예를 들어 16진수 이스케이프 시퀀스를 작성할 경우, 뒤에 오는 숫자의 값에 따라 16진수로 표현되기도 하고 16진수 + 남은 10진수 정수로 나뉘어 표현되기도 합니다. 따라서 개발자가 인지하지 못한 채 잘못된 상수를 사용할 위험이 있습니다.\n16진수 이스케이프 시퀀스는 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2011.example.0.dangerous": "라인 3: 16진수 이스케이프 시퀀스를 사용했습니다.",
  "rule.saqt.q.cpp.2011.example.0.safe": "라인 3: 16진수 이스케이프 시퀀스를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2011.name": "16진수 이스케이프 시퀀스 사용",
  "rule.saqt.q.cpp.204.description": "매크로 정의 시 후행하는 세미콜론 체커는 매크로를 정의할 때 치환 문자열이 세미콜론으로 끝나는 코드를 검출합니다.\n옵션에서 분석 제외 매크로 이름을 지정할 수 있습니다.\n매크로로 정의한 치환 문자열을 종료할 때 반드시 세미콜론을 사용해야 하는 것은 아닙니다. 매크로를 정의할 때 마지막에 세미콜론을 사용하면 의도하지 않게 프로그램의 흐름을 변경하게 될 수 있습니다. 매크로를 사용하는 프로그램의 흐름에서 세미콜론이 불필요한 경우에는 매크로를 정의할 때 세미콜론을 제거해야 합니다.\n매크로로 정의한 치환 문자열의 끝에 세미콜론을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.204.example.0.dangerous": "라인 1: 정의된 매크로 ADD의 내용이 세미콜론으로 끝납니다.",
  "rule.saqt.q.cpp.204.example.0.safe": "라인 1: 매크로를 정의할 때 내용이 세미콜론으로 끝나지 않도록 합니다.",
  "rule.saqt.q.cpp.204.name": "매크로 정의 시 후행하는 세미콜론",
  "rule.saqt.q.cpp.204.option.exclude_macro.description": "분석에서 제외할 매크로 이름을 입력합니다.",
  "rule.saqt.q.cpp.204.option.exclude_macro.name": "분석 제외 매크로",
  "rule.saqt.q.cpp.205.description": "부적절한 매크로 사용 체커는 매크로에 괄호를 잘못 사용한 수식을 포함하거나 매크로를 함수처럼 사용하는 코드를 검출합니다.\n즉, 매크로를 선언할 때 매개 변수나 상수를 괄호로 감싸지 않거나 매크로에서 할당을 사용하거나 함수를 호출하는 경우를 가리킵니다.\n실제 매크로는 함수와 동일하게 작동하지만 의미가 다르기 때문입니다. 예를 들어, 함수처럼 선언된 두 개의 매크로를 연산할 경우 예상하지 못한 동작이 발생합니다. 따라서 매크로를 함수처럼 사용하는 대신 인라인 함수나 정적 함수를 사용하도록 합니다.\n매크로를 선언할 때 인자를 괄호로 감싸고 매크로에서 할당이나 함수 호출을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.205.example.0.dangerous": "라인 1: 매크로를 함수처럼 사용했기 때문에 문제가 발생했습니다.\n라인 1: 매크로에 전체 괄호가 누락되었습니다.\n라인 4: 매크로가 적용되면 수식이 (((24+(a))*(a))*(a)) 와 같이 계산됩니다. 의도하지 않은 연산이기 때문에 문제가 발생했습니다.",
  "rule.saqt.q.cpp.205.example.0.safe": "라인 1: 매크로 대신 inline 함수를 사용합니다.\n라인 6: 매크로가 적용되는 시점을 고려하여 괄호를 추가합니다.",
  "rule.saqt.q.cpp.205.name": "부적절한 매크로 사용",
  "rule.saqt.q.cpp.206.description": "안전한 함수 교체 체커는 금지된 함수 이름으로 매크로를 선언하는 코드를 검출합니다.\n더 이상 사용되지 않는 함수는 다음과 같습니다. asctime(), asctime_s(), atof(), strtod(), atoi(), strtol(), atol(), strtol(), atoll(), strtoll(), ctime(), ctime_s(), gets(), gets_s(), fopen(), fmemopen|open_memstream(), fopen_s(), freopen(), freopen_s(), rewind(), fseek(), setbuf(), vsetbuf(), strtok(), strtok_r(), strtok_s(), vsprintf(), vsnprintf(), strcpy(), strcpy_s(), strcat(), strcat_s().\n매크로를 안전한 함수 이름으로 정의하더라도 매크로에 금지된 함수가 포함되면 매크로는 안전하지 않습니다. 이로 인해 버퍼 오버런 등의 오류가 발생할 수 있습니다. 또한 금지된 함수명을 매크로의 이름으로 사용하는 경우에도 동일한 문제가 발생할 수 있습니다. 금지된 함수명을 구현하기 위해 마찬가지로 보안에 취약한 표준 함수를 사용할 위험이 있기 때문입니다.\n매크로를 금지된 이름으로 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.206.example.0.dangerous": "라인 1: vsnprintf()와 vsprintf() 함수는 매크로 이름으로 사용하지 않도록 금지된 함수입니다.",
  "rule.saqt.q.cpp.206.example.0.safe": "라인 1: 시스템이 지원하지 않는 함수를 사용하지 않도록 ifdef 와 endif 사이에 재정의해야 하며, 금지된 함수 이름을 사용하지 않습니다.",
  "rule.saqt.q.cpp.206.name": "안전한 함수 교체",
  "rule.saqt.q.cpp.208.description": "괄호로 묶이지 않은 여러 개의 구문을 포함하는 매크로 체커는 여러 개의 구문으로 작성된 매크로를 do-while 문으로 감싸지 않는 코드를 검출합니다.\n중괄호로 묶여지지 않은 매크로를 사용하는 경우 프로그래머의 의도와 다르게 동작할 수 있습니다. 예를 들어, 중괄호가 없는 if 구문에서 매크로를 사용하는 경우 매크로 자체에 중괄호가 없기 때문에 매크로의 일부만 실행될 수 있습니다.\n여러 개의 구문으로 작성된 매크로를 do-while 문으로 감싸주어야 합니다.",
  "rule.saqt.q.cpp.208.example.0.dangerous": "라인 6: CAL() 매크로가 두 개의 라인으로 구성되었습니다. 하지만 if 문에서 실행되는 구문은 라인 2(X=X+Y) 뿐입니다.",
  "rule.saqt.q.cpp.208.example.0.safe": "라인 1: 여러 구문으로 구성된 매크로는 do-while 구문으로 감싸야 합니다.",
  "rule.saqt.q.cpp.208.name": "괄호로 묶이지 않은 여러 개의 구문을 포함하는 매크로",
  "rule.saqt.q.cpp.209.description": "중복된 매크로 체커는 매크로를 중복으로 선언한 코드를 검출합니다.\n매크로를 중복으로 선언하지 않게 주의해야 합니다.",
  "rule.saqt.q.cpp.209.example.0.dangerous": "라인 1: 매크로 SIZE를 선언했습니다.\n라인 4: 동일한 매크로를 중복 선언했습니다.",
  "rule.saqt.q.cpp.209.example.0.safe": "라인 1: 매크로는 한 번만 선언하도록 합니다.",
  "rule.saqt.q.cpp.209.name": "중복된 매크로",
  "rule.saqt.q.cpp.209.option.exclude_macro.description": "분석에서 제외할 매크로 이름을 입력합니다.",
  "rule.saqt.q.cpp.209.option.exclude_macro.name": "분석 제외 매크로",
  "rule.saqt.q.cpp.211.description": "서로 다른 시스템 구조에서는 다른 바이트 순서(little endian 또는 big endian)를 사용합니다. 데이터 전송을 서로 다른 시스템 사이에 할 경우 바이트 순서를 고려해야 합니다. htonl(), htons(), ntohl(), ntohs() 들은 네트워크 바이트 순서와 호스트 바이트 순서를 맞춰줍니다. 바이트 순서를 맞추지 않았을 경우 부정확한 결과를 초래할 수 있습니다.\n올바른 바이트 순서를 사용하여 데이터를 전송할 수 있도록 정렬 함수들을 적절히 사용하도록 합니다.",
  "rule.saqt.q.cpp.211.example.0.dangerous": "라인 3: recv()로 데이터 num을 받았습니다.\n라인 7: ntohl()를 사용하여 데이터 num의 바이트 순서를 변경하지 않고 사용했습니다.",
  "rule.saqt.q.cpp.211.example.0.safe": "라인 6: recv()로 받은 데이터 num을 ntohl()로 변환하여 사용합니다.",
  "rule.saqt.q.cpp.211.name": "일치하지 않는 바이트 순서",
  "rule.saqt.q.cpp.212.description": "이미 잠금된 자원 잠금 체커는 이미 잠궈진 리소스에 다시 잠금을 거는 코드를 검출합니다.\n여러 접속자가 동시에 중요한 리소스를 사용하는 것을 방지하기 위해 잠금을 사용합니다. 하지만 중첩적으로 잠금을 수행하는 경우 같은 수의 잠금을 해제해야 합니다. 잠금을 해제하지 않은 경우 사용자가 중요한 리소스를 사용하지 못하게 되고 사용하기 위해 계속 대기하게 되므로 대기 풀이 가득차서 프로그램의 성능이 감소하게 됩니다. 또한 의도하지 않은 동작이 발생할 수 있습니다.\n리소스의 잠금을 걸기 전에 이미 잠궈진 리소스가 아닌지 확인해야 합니다.",
  "rule.saqt.q.cpp.212.example.0.dangerous": "라인 8: 뮤텍스에 잠금을 걸었습니다.\n라인 11: 잠금이 해제되지 않은 뮤텍스에 다시 잠금을 걸어 문제가 발생했습니다.",
  "rule.saqt.q.cpp.212.example.0.safe": "라인 10: 뮤텍스에 잠금을 걸기 전에 항상 잠금 해제를 먼저 실행합니다.",
  "rule.saqt.q.cpp.212.name": "이미 잠금된 자원 잠금",
  "rule.saqt.q.cpp.213.description": "이미 잠금 해제된 자원 잠금 해제 체커는 이미 잠금이 해제된 리소스의 잠금을 다시 해제하려고 시도하는 코드를 검출합니다.\n여러 접속자가 동시에 중요한 리소스를 사용하는 것을 방지하기 위해 잠금을 사용합니다. 하지만 중첩적으로 잠금 해제를 수행하는 경우 이미 사용 가능한 리소스를 다시 검사하는 오버헤드가 발생합니다. 그 결과, 프로그램 충돌 또는 예측할 수 없는 동작을 일으킬 수 있습니다.\n리소스가 이미 잠금 해제되어 있다면 다시 잠금 해제하지 않도록 주의합니다.",
  "rule.saqt.q.cpp.213.example.0.dangerous": "라인 9: if 구문에서 뮤텍스의 잠금을 해제하는 pthread_mutex_unlock()을 사용했습니다.\n라인 11: 다시 잠금을 해제하여 이중 잠금 해제가 발생했습니다.",
  "rule.saqt.q.cpp.213.example.0.safe": "라인 10: 뮤텍스에 대하여 두 번 이상 잠금을 해제하지 않도록 수정합니다.",
  "rule.saqt.q.cpp.213.name": "이미 잠금 해제된 자원 잠금 해제",
  "rule.saqt.q.cpp.219.description": "이미 잠금된 자원 trylock 체커는 pthread_mutex_trylock() 함수를 사용하여 이미 잠금을 수행한 리소스를 다시 호출하는 코드를 검출합니다.\n여러 접속자가 동시에 중요한 리소스를 사용하는 것을 방지하기 위해 잠금을 사용합니다. 하지만 이미 잠궈진 리소스에 잠금 해제를 수행하지 않고 trylock을 수행하는 경우 trylock이 실패하게 됩니다.\npthread_mutex_trylock() 함수로 리소스의 잠금을 걸기 전에 pthread_mutex_unlock() 함수로 리소스의 잠금을 해지해야 합니다.",
  "rule.saqt.q.cpp.219.example.0.dangerous": "라인 8: 뮤텍스에 대해 잠금을 수행했습니다.\n라인 11: 뮤텍스에 다시 잠금을 걸려고 하지만 이미 잠금 상태이기 때문에 pthread_mutex_trylock() 함수는 EBUSY를 반환합니다.",
  "rule.saqt.q.cpp.219.example.0.safe": "라인 13: 뮤텍스에 잠금을 걸 수 있는 상태에서 trylock을 수행합니다. pthread_mutex_trylock() 함수가 EBUSY를 반환하지 않는 경우에 리소스를 잠글 수 있도록 수정합니다.",
  "rule.saqt.q.cpp.219.name": "이미 잠금된 자원 trylock",
  "rule.saqt.q.cpp.220.description": "부적절한 파일 지시자의 값 체커는 파일/소켓 관련 함수의 인자에 음수를 전달하는 코드를 검출합니다.\n검출 대상 함수는 다음과 같습니다. __fxstat(), _dup(), _dup2(), _fdopen(), _fstat(), _fstat32(), _fstat32i64(), _fstat64(), _fstat64i32(), _fstati64(), _lseek(), _lseeki64(), _read(), _wfdopen(), _write(), accept(), bind(), close(), closesocket(), connect(), dup(), dup2(), fcntl(), fdopen(), fpathconf(), fstat(), fstatfs(), fsync(), ftruncate(), ioctl(), ioctlsocket(), listen(), lseek(), read(), readv(), recv(), recvfrom(), recvmsg(), send(), sendmsg(), unlinkat(), write(), writev()\n파일/소켓 관련 함수의 인자에 음수의 파일 디스크립터(File Descriptor)를 사용하면 프로그램의 동작을 예측할 수 없습니다.\n파일/소켓 관련 함수의 인자는 음수가 아니여야 합니다.",
  "rule.saqt.q.cpp.220.example.0.dangerous": "라인 4: open() 함수 호출에 실패하는 경우 -1을 반환할 수 있습니다.\n라인 5: write() 함수 호출에서 사용되는 인자 fd가 음수인 경우 프로그램 오류가 발생하게 됩니다.",
  "rule.saqt.q.cpp.220.example.0.safe": "라인 3: open() 함수의 반환값이 음수가 될 수 있는지 검사하고 사용하도록 합니다.",
  "rule.saqt.q.cpp.220.name": "부적절한 파일 지시자의 값",
  "rule.saqt.q.cpp.221.description": "너무 큰 스택 크기 체커는 지정된 크기를 초과하는 버퍼를 스택에 할당하는 코드를 검출합니다.\n일정량의 크기를 초과하는 버퍼를 사용하면 스택 오버플로우가 발생할 수 있습니다.\n65535 바이트를 넘는 버퍼를 스택에 할당하지 않도록 합니다.",
  "rule.saqt.q.cpp.221.example.0.dangerous": "라인 2: 배열의 크기가 65535 바이트를 초과하므로 해당 오류가 검출되었습니다.",
  "rule.saqt.q.cpp.221.example.0.safe": "라인 2: 특정 크기를 초과하지 않도록 배열의 크기를 조정합니다.",
  "rule.saqt.q.cpp.221.name": "너무 큰 스택 크기",
  "rule.saqt.q.cpp.221.option.max_stack_variable_size.description": "스택 변수의 최대 크기를 적습니다.",
  "rule.saqt.q.cpp.221.option.max_stack_variable_size.name": "스택 변수의 최대 크기",
  "rule.saqt.q.cpp.222.description": "효과가 없는 함수 호출 체커는 함수를 호출했으나 프로그램 흐름에 영향을 주지 않는 코드를 검출합니다.\n옵션에서 예외 사항에 포함되는 구조체 이름을 지정할 수 있습니다.\n예를 들어 memset()과 같은 함수에서 길이를 담당하는 인자에 길이가 아닌 다른 값이 입력되면 함수가 원래 기능을 수행하지 못하게 됩니다. 따라서 함수의 정의에 맞는 인자를 사용해야 합니다.\n함수를 호출할 때 정확한 인자의 값을 입력해야 합니다.",
  "rule.saqt.q.cpp.222.example.0.dangerous": "라인 3: memset() 함수의 인자에서 길이를 결정하는 인자를 '\\0'으로 지정했습니다. 길이를 나타내는 값 '10'과 바뀌었기 때문에 오류로 검출했습니다.",
  "rule.saqt.q.cpp.222.example.0.safe": "라인 3: 길이를 결정하는 인자값을 정확하게 입력해야 합니다.",
  "rule.saqt.q.cpp.222.name": "효과가 없는 함수 호출",
  "rule.saqt.q.cpp.222.option.excluded_structure.description": "예외사항에 포함되는 구조체 이름 목록을 적습니다.",
  "rule.saqt.q.cpp.222.option.excluded_structure.name": "예외사항에 포함되는 구조체 이름 목록",
  "rule.saqt.q.cpp.2274.description": "복사 대입 연산자를 정의하지 않은 템플릿을 포함한 클래스 체커는 명시적인 복사 대입 연산자를 정의하지 않은 템플릿을 포함한 클래스 선언을 검출합니다.\n템플릿을 포함한 클래스란 템플릿 매개 변수를 사용하는 제너릭한 복사 대입 연산자를 선언한 클래스를 의미합니다.\n개발자의 예상과 달리 템플릿 복사 대입 연산자는 컴파일러에서 생성한 복사 대입 연산자를 억제하지 않습니다. 이로 인해 깊은 복사가 필요한 멤버의 경우 잘못된 복사가 발생할 수 있습니다.\n항상 클래스 선언 시 명시적인 복사 대입 연산자를 정의하도록 합니다.",
  "rule.saqt.q.cpp.2274.example.0.dangerous": "라인 9: 템플릿 매개 변수를 사용한 템플릿 복사 대입 연산자를 선언했습니다.\n라인 23: 클래스 A를 복사할 때 깊은 복사를 기대하지만, 라인 3에서 주석 처리된 코드와 같은 컴파일러가 암시적으로 생성한 복사 대입 연산자가 사용됩니다.",
  "rule.saqt.q.cpp.2274.example.0.safe": "라인 3: 명확한 깊은 복사를 하는 복사 대입 연산자를 선언해야 합니다.\n라인 16: 라인3에 명시적으로 선언한 복사 대입 연산자가 사용됩니다.",
  "rule.saqt.q.cpp.2274.name": "복사 대입 연산자를 정의하지 않은 템플릿을 포함한 클래스",
  "rule.saqt.q.cpp.2277.description": "외부 부수 효과를 가지지 않은 함수 선언 체커는 반환 타입이 void이고 외부에 아무런 영향을 미치지 않는 함수 선언을 검출합니다.\n외부 부수 효과(External Side Effect)란 함수 외부에 어떠한 영향을 발휘하는 것을 의미 합니다. 예를 들어 파일 읽기 또는 쓰기, 전역 변수의 값 변경, 참조 타입을 가지는 인자 값의 변경, volatile 객체 사용, 예외 발생이 외부 부수 효과에 해당하는 항목입니다.\n값을 반환하지 않고 외부에 영향을 미치지 않는 함수는 계산 시간만 소비하고 어떠한 결과에도 기여하지 않습니다. 이것은 개발자가 예상한 동작과 다를수 있으며 의도되지 않은 동작일 가능성이 높습니다.\n반환 타입이 void인 함수는 반드시 외부 부수 효과를 일으켜야 합니다.",
  "rule.saqt.q.cpp.2277.example.0.dangerous": "라인 1: 함수의 반환 타입이 void입니다. 이 함수는 외부 부수 효과를 일으키지 않습니다.",
  "rule.saqt.q.cpp.2277.example.0.safe": "라인 5: 전역 함수의 값을 수정합니다. 외부 부수 효과를 일으킨다는 조건을 충족합니다.",
  "rule.saqt.q.cpp.2277.name": "외부 부수 효과를 가지지 않은 함수 선언",
  "rule.saqt.q.cpp.2278.description": "타입이 서로 다른 비트 연산자의 피연산자 체커는 비트 연산자의 피연산자 타입이 서로 다른 수식을 검출합니다.\n비트 연산자의 피연산자 타입을 동일하게 맞추도록 합니다.",
  "rule.saqt.q.cpp.2278.example.0.dangerous": "라인 4: value와 mask의 타입이 다릅니다.",
  "rule.saqt.q.cpp.2278.example.0.safe": "라인 4: mask와 value를 같은 타입으로 바꿉니다.",
  "rule.saqt.q.cpp.2278.name": "타입이 서로 다른 비트 연산자의 피연산자",
  "rule.saqt.q.cpp.2279.description": "다이아몬드 문제가 발생하는 비가상 상속 관계 체커는 다이아몬드 계층 구조를 가지는 부모 클래스를 가상으로 상속하지 않은 자식 클래스를 검출합니다.\n다이아몬드 문제(Diamond Problem)란 자식 클래스에서 2개 이상의 부모 클래스를 상속하고, 이 부모 클래스들도 최상위 부모 클래스 1개를 상속했을 때 최상위 부모 메소드를 호출하면 모호성이 발생할 수 있는 문제입니다.\nC++에서는 다중상속을 허용합니다. 하지만 추상 클래스가 아닌 부모 클래스를 여러 개 상속할 경우 다이아몬드 상속 등 문제가 발생할 수 있습니다. 이 경우 최상위 부모 클래스의 메소드를 호출하면 컴파일 오류가 발생합니다.\n자식 클래스는 부모 클래스가 다이아몬드 계층 구조를 가질 경우에만 가상으로 상속합니다. 이것은 가상 상속이 항상 좋은 해결 방법은 아니기 때문입니다. 무분별한 가상 상속은 정의되지 않은 동작(Undefind Behavior)이 발생할 수 있습니다.",
  "rule.saqt.q.cpp.2279.example.0.dangerous": "라인 2: 클래스 B1은 부모 클래스 A를 가상 상속했습니다.\n라인 3: 클래스 B2는 부모 클래스 A를 상속했습니다. 부모 메소드를 호출할 때 모호성이 발생합니다.\n라인 4: 클래스 C에서 부모 클래스 A를 기준으로 다이아몬드 계층구조를 만듭니다.",
  "rule.saqt.q.cpp.2279.example.0.safe": "라인 3: 클래스 B2가 부모 클래스 A를 가상으로 상속하도록 변경합니다.",
  "rule.saqt.q.cpp.2279.name": "다이아몬드 문제가 발생하는 비가상 상속 관계",
  "rule.saqt.q.cpp.2280.description": "지역 변수 주소를 범위 밖 변수에 대입 체커는 함수 범위를 벗어나는 변수에 지역 변수의 주소를 대입하는 수식을 검출합니다.\n함수 범위를 벗어나는 변수란 전역 변수 등을 의미합니다.\n지역 변수는 함수가 종료될 때 더 이상 유효하지 않습니다. 함수 범위를 벗어나는 변수가 지역 변수를 가지고 있을 경우, 함수가 끝난 경우에도 이 주소를 사용할 가능성이 있습니다. 이와 같은 경우 프로그램이 정상적으로 동작하지 않을 수 있습니다.\n지역 변수를 함수 범위를 벗어나는 변수에 대입하지 않도록 합니다.",
  "rule.saqt.q.cpp.2280.example.0.dangerous": "라인 1: 포인터 전역 변수를 선언했습니다.\n라인 5: 포인터 전역 변수에 지역 변수의 주소 값을 할당했습니다.",
  "rule.saqt.q.cpp.2280.example.0.safe": "라인 2: 포인터 지역 변수를 선언합니다.\n라인 4: 포인터 지역 변수에 지역 변수의 주소 값을 할당합니다.",
  "rule.saqt.q.cpp.2280.name": "지역 변수 주소를 범위 밖 변수에 대입",
  "rule.saqt.q.cpp.2282.description": "메인 함수에서 모든 예외 핸들러 누락 체커는 메인 함수 내부에서 모든 예외를 처리할 수 있는 예외 핸들러가 없는 경우를 이슈로 검출합니다.\n모든 예외 핸들러(catch-all handler)는 어떤 타입인지를 구분하지 않고 catch하는 구문입니다. 표현 방식상 실제 던져진 예외를 처리하는 것은 불가능합니다. 이러한 모든 예외 핸들러는 `catch(...)`와 같은 구문으로 표현할 수 있습니다.\n메인 함수는 프로그램의 첫 시작이자 마지막입니다. 마지막까지 처리되지 않은 예외는 구현에 정의된 방식(Implementation Defined Behavior)으로 처리되어 결과를 알 수 없습니다.\n메인 함수에서 모든 예외를 처리할 수 있도록 모든 예외 핸들러를 추가합니다.",
  "rule.saqt.q.cpp.2282.example.0.dangerous": "라인 2: 처리되지 않은 모든 예외를 잡을 수 없습니다.",
  "rule.saqt.q.cpp.2282.example.0.safe": "라인 9: 처리되지 않은 모든 예외를 잡을 수 있는 모든 예외 핸들러를 추가합니다.",
  "rule.saqt.q.cpp.2282.name": "메인 함수에서 모든 예외 핸들러 누락",
  "rule.saqt.q.cpp.2283.description": "cstdio 헤더 사용 체커는 cstdio 헤더 파일을 포함하는 전처리 구문을 검출합니다.\ncstdio 헤더에는 파일 및 입출력 함수 fgetpos(), fopen(), ftell(), gets(), perror(), remove(), rename() 함수들이 포함됩니다. 이와 같은 스트림 및 파일 입출력 함수에는 파일 및 입출력 함수와 관련된 다수의 명시되지 않고 정의되지 않은 구현 정의 동작(Implementation Defined Behavior)이 있습니다.\n소스 코드에서 cstdio 헤더를 포함하지 않도록 합니다. C++에서 스트림 및 파일 입출력 라이브러리가 필요한 경우에는 iostream 와 같은 헤더를 포함하도록 합니다.",
  "rule.saqt.q.cpp.2283.example.0.dangerous": "라인 1: 스트림 입출력 라이브러리 cstdio 헤더를 포함했습니다.",
  "rule.saqt.q.cpp.2283.example.0.safe": "라인 1: 스트림 입출력 라이브러리 cstdio 헤더 대신 iostream 헤더를 포함합니다.",
  "rule.saqt.q.cpp.2283.name": "cstdio 헤더 사용",
  "rule.saqt.q.cpp.2284.description": "cstring 헤더 사용 체커는 cstring 헤더 파일을 포함하는 전처리 구문을 검출합니다.\ncstring 헤더에는 strcpy(), strcmp(), strcat(), strchr(), strspn(), strcspn(), strpbrk(), strrchr(), strstr(), strtok(), strlen() 함수들이 포함됩니다. 이 함수들은 버퍼의 끝 부분을 읽거나 쓸 수 없으므로 결과적으로 정의되지 않은 동작이 발생합니다. 안전한 문자열 처리 라이브러리를 사용해야 합니다.\n소스 코드에서 cstring 헤더를 포함하지 않도록 합니다. C++에서 문자열 관련 라이브러리가 필요한 경우에는 string 헤더를 포함하도록 합니다.",
  "rule.saqt.q.cpp.2284.example.0.dangerous": "라인 1: 문자열 라이브러리 cstring 헤더를 포함했습니다.",
  "rule.saqt.q.cpp.2284.example.0.safe": "라인 1: 문자열 라이브러리 cstring 헤더 대신 string 헤더를 포함합니다.",
  "rule.saqt.q.cpp.2284.name": "cstring 헤더 사용",
  "rule.saqt.q.cpp.2286.description": "ctime 헤더 사용 체커는 ctime 헤더 파일을 포함하는 전처리 구문을 검출합니다.\nctime 헤더에 존재하는 시간 관련 함수들은 시간 포맷과 같은 다양한 측면이 명세가 잘 되어 있지 않거나 구현에 의존적입니다. C++에 새로 추가된 표준 라이브러리를 사용해야 합니다.\n소스 코드에서 ctime 헤더를 포함하지 않도록 합니다. C++에서 시간 관련 라이브러리가 필요한 경우에는 chrono 헤더를 포함하도록 합니다.",
  "rule.saqt.q.cpp.2286.example.0.dangerous": "라인 1: 시간 라이브러리 ctime 헤더를 포함했습니다.",
  "rule.saqt.q.cpp.2286.example.0.safe": "라인 1: 시간 라이브러리 ctime 헤더 대신 chrono 헤더를 포함합니다.",
  "rule.saqt.q.cpp.2286.name": "ctime 헤더 사용",
  "rule.saqt.q.cpp.2289.description": "널 예외 던짐 체커는 명시적으로 널 포인터를 예외로 던지는 구문을 검출합니다.\nthrow 구문으로 널 포인터를 던지는 예외는 포인터 핸들러가 잡지 않습니다. 이 예외는 정수 핸들러에서만 포착됩니다. 이는 개발자의 예상과 다를 수 있습니다. 특히 포인터 타입에 대한 핸들러만 있는 경우에는 예외가 잡히지 않으므로 매우 알기 어려운 문제가 발생합니다.\n널 포인터를 예외로 던지지 않도록 합니다.",
  "rule.saqt.q.cpp.2289.example.0.dangerous": "라인 13: 널 포인터를 예외로 던졌습니다. 실제로는 0 값이 예외로 던져집니다.",
  "rule.saqt.q.cpp.2289.example.0.safe": "라인 13: 널 포인터를 예외로 던지지 않습니다.",
  "rule.saqt.q.cpp.2289.name": "널 예외 던짐",
  "rule.saqt.q.cpp.2290.description": "포인터 타입 예외 던짐 체커는 포인터 타입을 예외로 던지는 구문을 검출합니다.\n동적으로 할당한 객체의 포인터 타입을 예외로 던질 경우 어떤 함수에서 그 객체를 해제해야 하는지 명확하지 않을 수 있습니다. 예외 처리시 던져진 객체가 값 또는 참조에 의해 처리되면 모호성은 존재하지 않습니다.\n포인터 타입 예외를 던지지 않도록 합니다.",
  "rule.saqt.q.cpp.2290.example.0.dangerous": "라인 9: 포인터 타입 객체를 던졌습니다.",
  "rule.saqt.q.cpp.2290.example.0.safe": "라인 9: 포인터 타입 대신 값이나 참조로 객체를 던집니다.",
  "rule.saqt.q.cpp.2290.name": "포인터 타입 예외 던짐",
  "rule.saqt.q.cpp.2291.description": "빈 throw 구문 체커는 예외 핸들러 밖에서 아무런 객체를 던지지 않고 사용되는 throw 구문을 검출합니다.\n빈 throw 구문은 예외를 나타내는 임시 객체를 다시 던집니다. 이를 통해 두 개 이상의 핸들러에서 예외 처리를 분리할 수 있도록 하지만 일반적인 사용 방법은 아닙니다.\n예외 핸들러의 본문에서 사용하는 경우를 제외하고 빈 throw 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2291.example.0.dangerous": "라인 6: 예외 핸들러가 아닌 곳에서 빈 throw 구문을 사용했습니다.",
  "rule.saqt.q.cpp.2291.example.0.safe": "라인 6: 예외 핸들러가 아닌 곳에서 빈 throw 구문을 사용하지 않습니다.",
  "rule.saqt.q.cpp.2291.name": "빈 throw 구문",
  "rule.saqt.q.cpp.2292.description": "정수값으로 사용한 널 포인터 체커는 일반 정수값을 사용해야 할 곳에서 널 포인터를 사용한 수식을 검출합니다.\n일반적으로 널 포인터로 사용하는 널 매크로는 정수값 0입니다.\n널 매크로와 0 값은 실제로는 동일하다고 할 수 있습니다. 하지만 이 두 값을 혼용하여 사용하는 것은 개발자의 예상과는 일치하지 않을 수 있습니다.\n널 포인터를 표현하기 위해서는 널 매크로를 사용하며, 그 이외의 경우에는 0 값을 사용하도록 합니다.",
  "rule.saqt.q.cpp.2292.example.0.dangerous": "라인 9 : 널 매크로를 인자로 사용하여 bg() 함수를 호출했습니다.",
  "rule.saqt.q.cpp.2292.example.0.safe": "라인 9: 널 매크로 대신 0 값을 인자로 사용하여 bg() 함수를 호출합니다.",
  "rule.saqt.q.cpp.2292.name": "정수값으로 사용한 널 포인터",
  "rule.saqt.q.cpp.2293.description": "열거형 비트 필드 선언 체커는 비트 필드의 타입이 열거형인 선언을 검출합니다.\nC++ 표준에서 열거형을 비트 필트의 타입으로 사용하는 것은 금지되어 있습니다. 이것은 기본 표현을 signed 또는 unsigned로 명시적으로 정의하지 않기 때문입니다. 이것은 열거형의 모든 값을 나타내는 데 필요한 정확한 비트 수를 결정할 수 없습니다.\n비트 필드의 타입으로 열거형을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2293.example.0.dangerous": "라인 4: 비트 필드를 열거형으로 선언했습니다.",
  "rule.saqt.q.cpp.2293.example.0.safe": "라인 4: 비트 필드를 열거형으로 선언하지 않도록 합니다.",
  "rule.saqt.q.cpp.2293.name": "열거형 비트 필드 선언",
  "rule.saqt.q.cpp.2294.description": "참조로 받은 인자 값의 반환 체커는 함수에서 참조 또는 const 참조로 전달된 인자를 참조 혹은 포인터로 반환하는 구문을 검출합니다.\n참조로 전달된 인자 값이 임시 객체 인지 일반적인 객체인지는 알 수 없습니다. 만약 전달받은 인자 값이 임시 객체인 경우에는 함수가 반환된 시점에서 제거됩니다. 해제된 객체를 사용하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n참조로 받은 인자 값을 참조나 포인터로 반환하지 않도록 합니다. 값 자체를 반환하지 않거나 복사한 값으로 반환하도록 합니다.",
  "rule.saqt.q.cpp.2294.example.0.dangerous": "라인 2: 참조로 받은 인자 값을 참조로 반환했습니다.",
  "rule.saqt.q.cpp.2294.example.0.safe": "라인 2: 참조로 받은 인자 값을 반환하지 않습니다.",
  "rule.saqt.q.cpp.2294.name": "참조로 받은 인자 값의 반환",
  "rule.saqt.q.cpp.2295.description": "주소 연산자 오버로딩 체커는 클래스에서 주소 연산자를 오버로딩한 메소드 선언을 검출합니다.\n이 문제는 주소 연산자 오버로딩이 된 클래스를 불완전한 타입 상태로 주소 연산자를 사용했을 때 발생합니다. 위와 같은 문제는 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n주소 연산자를 오버로딩하지 않도록 합니다.",
  "rule.saqt.q.cpp.2295.example.0.dangerous": "라인 3: 주소 연산자를 오버로딩했습니다.\n라인 7: 주소 연산자를 사용했습니다. 이 경우 완전한 타입일 때와 불완전한 타입일 때 호출되는 연산자가 달라집니다.",
  "rule.saqt.q.cpp.2295.example.0.safe": "라인 3: 주소 연산자를 오버로딩하지 않습니다.",
  "rule.saqt.q.cpp.2295.name": "주소 연산자 오버로딩",
  "rule.saqt.q.cpp.2296.description": "가상 상속 사용 체커는 부모 클래스를 가상 상속한 자식 클래스를 검출합니다.\n가상 상속 자체는 C++의 정규 기능이며, 잘 사용할 경우 특별히 문제가 되지는 않습니다. 하지만 가상 상속의 기능을 제대로 파악하지 않고 잘못 사용하는 것은 정의되지 않은 동작 문제와 사용상에서 혼란이 발생할 수 있습니다.\n부모 클래스를 상속할 때 가상 상속을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2296.example.0.dangerous": "라인 2: 클래스 D는 클래스 B를 가상으로 상속했습니다.",
  "rule.saqt.q.cpp.2296.example.0.safe": "라인 2: 클래스 D는 클래스B를 가상으로 상속하지 않고 일반적인 방법으로 상속합니다.",
  "rule.saqt.q.cpp.2296.name": "가상 상속 사용",
  "rule.saqt.q.cpp.2297.description": "같은 계층 간 다른 상속 사용 체커는 최상위 부모 클래스의 상속 방식이 한가지로 이루어져 있지 않은 자식 클래스를 검출합니다.\n이 문제는 구체적으로 다음과 같은 상황에서 발생합니다. 최상위 부모 클래스가 존재합니다. 최상위 부모 클래스를 상속하는 부모 클래스들이 존재합니다. 이 때 부모 클래스들 일부는 최상위 부모 클래스를 가상으로 상속합니다. 자식 클래스를 부모 클래스들을 모두 다중상속합니다.\n최상위 부모 클래스가 다중 상속 계층에서 가상 및 비가상 모두로 상속될 경우, 자식 클래스 객체에는 최상위 부모 클래스 객체의 사본이 두 개 이상 있습니다. 이는 개발자의 예상과 다를 수 있습니다.\n이 문제는 검출대상이 된 자식 클래스가 아닌 부모 클래스들의 상속 방식을 통일합니다. 최상위 부모 클래스를 상속한 부모 클래스들은 가상, 혹은 비가상으로만 최상위 부모 클래스를 상속해야 합니다.",
  "rule.saqt.q.cpp.2297.example.0.dangerous": "라인 2: 클래스 B1이 최상위 부모 클래스 A를 가상으로 상속했습니다.\n라인 3: 클래스 B2가 최상위 부모 클래스 A를 가상으로 상속했습니다.\n라인 4: 클래스 B3가 최상위 부모 클래스 A를 상속했습니다.\n라인 5: 클래스 C가 클래스 B1, B2, B3를 다중 상속했습니다.",
  "rule.saqt.q.cpp.2297.example.0.safe": "라인 4: 클래스 B3가 최상위 부모 클래스 A를 가상으로 상속합니다. 모든 부모 클래스들이 최상위 부모 클래스 A를 상속하는 방식을 통일합니다.",
  "rule.saqt.q.cpp.2297.name": "같은 계층 간 다른 상속 사용",
  "rule.saqt.q.cpp.2301.description": "한 번도 호출되지 않은 함수 체커는 함수 본문은 정의하었지만 한 번도 호출되지 않은 함수를 검출합니다.\n단, 선언만 존재하는 함수와 메인 함수등은 예외로 합니다.\n호출되지 않은 함수는 경로 누락과 같은 문제일 수 있습니다.\n정의한 함수는 다른함수에서 최소한 한 번 호출되어야 합니다.",
  "rule.saqt.q.cpp.2301.example.0.dangerous": "라인 5: cef2() 함수를 정의했습니다. 하지만 다른 함수에서 한 번도 호출되지 않았습니다.",
  "rule.saqt.q.cpp.2301.example.0.safe": "라인 17: cef2() 함수를 호출합니다.",
  "rule.saqt.q.cpp.2301.name": "한 번도 호출되지 않은 함수",
  "rule.saqt.q.cpp.2301.option.check_member_func.description": "구조체나 클래스의 멤버 함수도 검사합니다.",
  "rule.saqt.q.cpp.2301.option.check_member_func.name": "멤버 함수를 검사",
  "rule.saqt.q.cpp.2301.option.ignore_file.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.saqt.q.cpp.2301.option.ignore_file.name": "분석에서 제외되는 파일",
  "rule.saqt.q.cpp.2301.option.ignore_func.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.saqt.q.cpp.2301.option.ignore_func.name": "분석에서 제외되는 함수",
  "rule.saqt.q.cpp.2306.description": "잘못 사용한 예외 던짐 체커는 조건문 내에서 사용한 throw 구문을 검출합니다.\n예외는 오류 처리에만 사용합니다. 정확하게는, 예외 처리 메커니즘은 바람직하지 않은 동작을 잡아내는데만 사용해야 합니다. 정상적인 프로그램 실행에서는 보이지 않는 것이 좋습니다. 만약 예외를 조건문 등에서 특정 조건을 검사하여 함수를 반환하는 또다른 방법으로 사용하면 이해하기 어려운 코드가 될 수 있습니다.\n조건문 내에서 throw 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2306.example.0.dangerous": "라인 4: 조건문에서 throw 구문을 사용했습니다.",
  "rule.saqt.q.cpp.2306.example.0.safe": "라인 3: 조건문 없이 throw 구문을 사용합니다.",
  "rule.saqt.q.cpp.2306.name": "잘못 사용한 예외 던짐",
  "rule.saqt.q.cpp.2310.description": "허용되지 않은 타입으로 비트 필드 선언 체커는 비트 필드의 타입이 허용되지 않은 타입인 선언을 검출합니다.\n허용된 타입은 bool, signed, unsigned 타입입니다.\nC++ 표준에서 bool, signed , unsigned 이 타입들은 비트 필드로 사용하는 것은 허용되어 있습니다. 반면 wchar_t와 같은 타입은 sigend 또는 unsigned로 기본 표현을 명시적으로 정의하지 않기 때문에 비트 필드로 사용하는 것이 금지되어 있습니다.\n허용한 타입으로만 비트 필드를 선언합니다.",
  "rule.saqt.q.cpp.2310.example.0.dangerous": "라인 2: 비트 필드를 wchar_t 타입으로 선언했습니다.\n라인 5: 비트 필드를 char 타입으로 선언했습니다.\n라인 8: 비트 필드를 long long 타입으로 선언했습니다.\n라인 10: 비트 필드를 short 타입으로 선언했습니다.\n라인 13: 비트 필드를 int 타입으로 선언했습니다.",
  "rule.saqt.q.cpp.2310.example.0.safe": "라인 1: 허용된 타입으로만 비트 필드를 선언합니다.",
  "rule.saqt.q.cpp.2310.name": "허용되지 않은 타입으로 비트 필드 선언",
  "rule.saqt.q.cpp.2313.description": "asm 선언 없이 어셈블리어 명령어 사용 체커는 asm 선언에 포함되지 않은 어셈블리어 명령어를 사용한 코드를 이슈로 검출합니다.\nasm 선언은 모든 C++ 구현에서 사용할 수 있습니다. 따라서 일관된 메커니즘을 적용할 수 있습니다. 다만 유의할 점은 asm에 대한 매개 변수는 여전히 구현에 정의된 동작(Implementation Defined Behavior)입니다. 어셈블리어 명령어 사용은 개발 환경에 맞추어 잘 사용하도록 합니다.\n어셈블리 명령어는 반드시 asm 선언 내에서 사용하도록 합니다.",
  "rule.saqt.q.cpp.2313.example.0.dangerous": "라인 2: 전처리 구문을 선언하여 어셈블리 명령어를 사용했습니다. 이것은 비표준적인 방법입니다.",
  "rule.saqt.q.cpp.2313.example.0.safe": "라인 3: 전처리 구문 대신 asm 선언을 사용합니다.",
  "rule.saqt.q.cpp.2313.name": "asm 선언 없이 어셈블리어 명령어 사용",
  "rule.saqt.q.cpp.2318.description": "가상 함수에서 사용하지 않은 매개 변수 체커는 사용되지 않은 매개 변수가 있는 가상 함수 선언을 검출합니다.\n사용되지 않는 매개 변수는 설계 변경으로 인해 종종 발생합니다. 이것은 매개 변수의 목록의 불일치로 함수 호출 시 잘못 사용할 수 있습니다.\n가상 함수에서 반드시 모든 매개 변수를 사용합니다.",
  "rule.saqt.q.cpp.2318.example.0.dangerous": "라인 9: 가상 함수 내에서 unusedpara 매개 변수가 사용되지 않았습니다.\n라인 12: 가상 함수 내에서 para2 매개 변수가 사용되지 않았습니다.",
  "rule.saqt.q.cpp.2318.example.0.safe": "라인 9: 사용되지 않는 unusedpara 매개 변수를 제거합니다.\n라인 12: 사용되지 않는 para2 매개 변수를 제거합니다.",
  "rule.saqt.q.cpp.2318.name": "가상 함수에서 사용하지 않은 매개 변수",
  "rule.saqt.q.cpp.2319.description": "코드 영역에서 사용한 주석 체커는 코드와 코드 사이에서 사용한 주석을 검출합니다.\nC 스타일 주석은 중첩을 지원하지 않습니다. 또한 코드 영역에 이미 있는 주석의 영향을 변경하기 때문에 시작 및 끝 주석 표시자를 사용하는 것은 위험할 수 있습니다. 또한 주석은 소스 코드 자체에서 분명하지 않은 코드 측면을 설명하는데에만 사용해야 합니다. 주석 처리된 코드가 오래되어 코드를 유지보수할 때 혼동을 줄 수 있습니다.\n코드와 코드 사이에서 주석을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2319.example.0.dangerous": "라인 3: 코드 영역에 /**/주석을 사용했습니다.\n라인 4: 코드 영역에 //주석을 사용했습니다.",
  "rule.saqt.q.cpp.2319.example.0.safe": "라인 2: 코드 영역에서 주석을 제거합니다.",
  "rule.saqt.q.cpp.2319.name": "코드 영역에서 사용한 주석",
  "rule.saqt.q.cpp.2321.description": "생성자 및 소멸자에서 예외 던짐 체커는 직접적으로 throw 구문을 메소드 내부에서 사용하는 생성자 및 소멸자를 검출합니다.\n예외는 프로그램의 시작 후와 종료 전에 던져야 합니다. 시작 또는 종류 과정에서 예외를 던지는 것은 구현 정의 동작(Implementation Defined Behavior)입니다. 예를 들어 프로그램은 메인 함수를 실행하기 전에 정적 객체를 생성하고 초기화합니다. 또한 메인 함수가 종료된 이후에 이러한 정적 객체가 파괴됩니다. 이 과정에서 예외가 발생하는 것은 컴파일러마다 다른 방식으로 이 문제를 처리하게 됩니다. 이러한 예외는 메인 함수에서 예외 처리 구문을 작성했다고 하더라도 잡히지 않습니다.\n생성자 및 소멸자에서 throw 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2321.example.0.dangerous": "라인 4: 생성자에서 예외를 던졌습니다.\n라인 7: 소멸자에서 예외를 던졌습니다.\n라인 11: 클래스 C를 정적 객체로 선언했습니다. 이 객체가 생성 및 소멸과정에서 던진 예외는 컴파일러마다 다르게 처리됩니다.\n라인 13: 메인 함수에서 예외 처리 구문을 작성하였지만 라인 11에서 정의한 객체의 예외는 잡을 수 없습니다.",
  "rule.saqt.q.cpp.2321.example.0.safe": "라인 4: 생성자의 throw 구문을 제거합니다.\n라인 7: 소멸자의 throw 구문을 제거합니다.",
  "rule.saqt.q.cpp.2321.name": "생성자 및 소멸자에서 예외 던짐",
  "rule.saqt.q.cpp.2322.description": "복사 생성자에서 정적 필드값 변경 체커는 복사 생성자 내부에서 정적 필드의 값을 변경하는 수식을 검출합니다.\n컴파일러는 복사 생성자 호출이 중복될 경우 객체 사본을 만들지 않고 호출을 생략할 수 있습니다. 이것은 컴파일러에 따라 복사 생성자가 호출되는 횟수가 다를 수 있다는 의미입니다. 따라서 개발자과 의도한 것과 다른 동작이 발생할 수 있습니다. 복사 생성자의 수정 횟수가 불안정하므로 정적 필드값을 복사 생성자에서 변경하는 것은 좋지 않은 방법입니다.\n복사 생성자에서 정적 멤버의 값을 변경하지 않도록 합니다.",
  "rule.saqt.q.cpp.2322.example.0.dangerous": "라인 5: m_static 정적 필드의 값을 변경했습니다.\n라인 6: m_static_sec 정적 필드의 값을 변경했습니다.",
  "rule.saqt.q.cpp.2322.example.0.safe": "라인 5: m_static 정적 필드의 값을 변경하지 않도록 합니다.\n라인 6: m_static_sec 정적 필드의 값을 변경하지 않도록 합니다.",
  "rule.saqt.q.cpp.2322.name": "복사 생성자에서 정적 필드값 변경",
  "rule.saqt.q.cpp.2324.description": "복사 생성자를 정의하지 않은 템플릿을 포함한 클래스 체커는 명시적인 복사 생성자를 정의하지 않은 템플릿을 포함한 클래스 선언을 검출합니다.\n템플릿을 포함한 클래스란 템플릿 매개 변수를 사용하는 제너릭한 복사 생성자를 선언한 클래스를 의미합니다.\n개발자의 예상과 달리 템플릿 복사 생성자는 컴파일러에서 생성한 복사 생성자를 억제하지 않습니다. 이로 인해 깊은 복사가 필요한 멤버의 경우 잘못된 복사가 발생할 수 있습니다.\n항상 클래스 선언 시 명시적인 복사 생성자를 정의하도록 합니다.",
  "rule.saqt.q.cpp.2324.example.0.dangerous": "라인 7: 템플릿 매개 변수를 사용한 템플릿 복사 생성자를 선언했습니다.\n라인 16: 클래스 B를 복사할 때 깊은 복사를 기대하지만, 4번째 라인에 주석 처리된 코드와 같은 컴파일러가 암시적으로 생성한 복사 생성자가 사용됩니다.",
  "rule.saqt.q.cpp.2324.example.0.safe": "라인 3: 명확한 깊은 복사를 수행하는 복사 생성자를 선언해야 합니다.\n라인 12: 라인3에서 선언한 명시적인 복사생성자가 사용됩니다.",
  "rule.saqt.q.cpp.2324.name": "복사 생성자를 정의하지 않은 템플릿을 포함한 클래스",
  "rule.saqt.q.cpp.2325.description": "인스턴스화되지 않은 템플릿 체커는 한 번도 인스턴스화되지 않은 템플릿 요소를 검출합니다.\n여기서 템플릿 요소란 클래스 템플릿, 함수 템플릿, 클래스 템플릿 메소드, 클래스 템플릿 정적 필드를 의미합니다.\n호출되지 않은 함수와 마찬가지로 인스턴스화되지 않은 클래스 및 함수 템플릿은 잠재적 위험입니다. 이것은 경로 누락과 같은 더 심각한 문제를 일으킬 수 있습니다.\n인스턴스화되지 않은 템플릿 요소를 인스턴스화 합니다. 만약 앞으로도 인스턴스화 될 일이 없는 템플릿 요소는 제거하도록 합니다.",
  "rule.saqt.q.cpp.2325.example.0.dangerous": "라인 2: 클래스 템플릿 Sample을 선언했습니다.\n라인 5: 클래스 템플릿 메소드 inst_mem을 선언했습니다.\n라인 15: inst_mem을 호출했습니다. 이로서 라인5에서 선언한 클래스 템플릿 메소드가 인스턴스화 됩니다.",
  "rule.saqt.q.cpp.2325.example.0.safe": "라인 9: 인스턴스화되지 않은 클래스 템플릿 메소드를 제거합니다. 혹은 클래스 템플릿 메소드를 반드시 인스턴스화하도록 합니다.",
  "rule.saqt.q.cpp.2325.name": "인스턴스화되지 않은 템플릿",
  "rule.saqt.q.cpp.2326.description": "명시적 특수화된 함수의 모호한 호출 체커는 명시적 특수화가 존재하는 오버로딩 함수들을 호출한 수식을 검출합니다.\n명시적 특수화(Explicit Specialization)는 템플릿 요소에서 템플릿의 모든 매개 변수를 치환한 템플릿 구현을 제공한 것을 의미합니다. 예를들어 함수 템플릿에서 치환 가능한 모든 매개 변수의 타입을 정해둔 타입으로 선언하고 구현해둔 함수가 있다면 이것을 명시적 특수화라고 부릅니다.\n명시적 특수화로 구현한 함수는 오버로딩 함수 선택 과정에서 기본 함수 템플릿 집합 중 가장 일치하는 항목을 선택한 이후에 고려됩니다. 따라서 항상 우선순위가 밀리게 되며, 개발자가 예상한 명시적 특수화로 구현한 함수 템플릿이 선택되지 않을 가능성이 높습니다.\n명시적 특수화가 필요한 함수는 오버로딩하지 않도록 합니다. 또는 명시적 특수화를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2326.example.0.dangerous": "라인 2: 일반 타입에 대한 오버로딩 함수 템플릿을 정의했습니다.\n라인 6: 포인터 타입에 대한 오버로딩 함수 템플릿을 정의했습니다.\n라인 12: 라인 2의 함수 템플릿의 명시적 특수화를 정의했습니다.\n라인 18: f() 함수를 호출했습니다. 개발자는 라인 12에서 정의한 함수를 사용하길 원했으나 실제론 라인 6에 정의한 함수가 호출됩니다.",
  "rule.saqt.q.cpp.2326.example.0.safe": "라인 7: 오버로딩 함수 템플릿을 제거합니다.\n라인 20: 라인 13에서 명시적 특수화로 정의한 f() 함수가 호출됩니다.",
  "rule.saqt.q.cpp.2326.name": "명시적 특수화된 함수의 모호한 호출",
  "rule.saqt.q.cpp.2327.description": "템플릿 특수화된 함수의 모호한 호출 체커는 템플릿 특수화가 존재하고 일반 함수와 모호성이 발생하는 호출 수식을 검출합니다.\n템플릿 특수화(Template Specialization)은 템플릿 인자를 실제 타입으로 치환하여 템플릿 요소에서 일반적인 클래스나 함수, 메소드로 변환한 결과물을 의미합니다.\n일반적인 구현과 템플릿 특수화가 모두 존재하는 함수는 오버로딩 함수 선택 과정에서 두개가 동등한 것으로 간주될 경우, 특수화하지 않은 함수가 특수화된 함수보다 우선적으로 선택됩니다. 이러한 선택 결과는 개발자의 예상과 다를수 있습니다.\n함수 호출이 모호하지 않도록 호출 시점에서 명시적으로 템플릿 특수화 함수 호출을 사용합니다. 템플릿 특수화 함수 호출은 호출하는 함수명과 괄호 사이에 <>를 붙여 사용하는 것입니다.",
  "rule.saqt.q.cpp.2327.example.0.dangerous": "라인 1: f() 함수를 정의했습니다.\n라인 5: f() 함수 템플릿을 정의했습니다.\n라인 10: 라인 1의 함수가 호출됩니다. 템플릿 특수화가 가능하나 실제로 선택되는건 라인 1의 함수입니다.\n라인 11: 라인 5의 템플릿 특수화한 함수가 호출됩니다. s + 1은 암시적 캐스팅에 의해 short보다 넓은 범위를 가지는 int로 치환되어 int 타입으로 특수화된 라인 5의 함수가 선택됩니다.",
  "rule.saqt.q.cpp.2327.example.0.safe": "라인 10: 특수화된 라인 5의 함수를 명시적으로 호출합니다.\n라인 11: 특수화된 라인 5의 함수를 명시적으로 호출합니다.",
  "rule.saqt.q.cpp.2327.name": "템플릿 특수화된 함수의 모호한 호출",
  "rule.saqt.q.cpp.2328.description": "throw 구문의 수식에서 예외 발생 체커는 예외를 던질때 사용하는 throw 구문의 수식을 평가한 결과가 예외를 발생시키는 수식인 경우를 검출합니다.\n예외 객체를 생성하거나 예외 객체를 초기화하는 식에서 예외가 발생할 수 있습니다. 이 경우 실제로 던져지는 예외는 예외 객체의 생성 속은 초기화 수식에서 발생한 예외입니다. 이것은 개발자의 예상과 다를 수 있습니다.\nthrow 구문의 수식은 예외를 발생시키지 않도록 합니다.",
  "rule.saqt.q.cpp.2328.example.0.dangerous": "라인 4: 클래스 E2의 생성자에서 예외를 던졌습니다.\n라인 10: 클래스 E2의 생성자를 호출했습니다. 이때 실제로 던져지는 예외는 클래스 E2의 객체가 아닌 생성자에서 던진 10입니다.",
  "rule.saqt.q.cpp.2328.example.0.safe": "라인 4: 클래스 E2의 생성자에서 예외를 던지지 않도록 합니다.\n라인 10: 클래스 E2의 객체가 예외로 던져집니다.",
  "rule.saqt.q.cpp.2328.name": "throw 구문의 수식에서 예외 발생",
  "rule.saqt.q.cpp.2329.description": "서로 다른 예외 명세 체커는 다른 번역 단위를 포함한 같은 함수의 예외 명세가 서로 다른 경우를 검출합니다.\n함수가 다른 번역 단위에서 다른 예외를 가지는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n같은 함수간에 서로 다른 예외 명세를 동일하게 맞추도록 합니다. 어느 한쪽의 예외 명세를 수정하면 됩니다.",
  "rule.saqt.q.cpp.2329.example.0.dangerous": "라인 2: foo() 함수의 예외 명세 타입을 const char* 로 선언했습니다.\n라인 7: foo() 함수의 예외 명세 타입을 int 로 선언했습니다. 번역 단위 B에 있는 예외 명세와 번역 단위 A에 있는 예외 명세의 타입이 다릅니다.",
  "rule.saqt.q.cpp.2329.example.0.safe": "라인 2: foo() 함수의 예외 명세 타입을 int로 변경합니다. 서로 다른 번역 단위의 예외 명세를 일치시키기 위해서입니다.",
  "rule.saqt.q.cpp.2329.name": "서로 다른 예외 명세",
  "rule.saqt.q.cpp.2332.description": "네임스페이스에서 비멤버 템플릿 함수 선언 체커는 연관된 네임스페이스에서 선언된 비멤버 템플릿 함수를 검출합니다.\n컴파일러는 호출된 함수의 이름을 조회할 때 ADL(Arguments-Dependent Lookup) 이라는 기능을 사용합니다. ADL은 조회 시 검색되는 범위 집합에 네임스페이스를 추가합니다. 이 때 추가된 네임스페이스에서 발견된 일반 함수는 함수 오버로딩 집합에 추가되며, 개발자의 예상과 다른 오버로딩 선택 방법에 의해 선택됩니다.\n함수 호출을 명확하게 하기 위해 연관된 네임스페이스에서 비멤버 템플릿 함수를 선언하지 않습니다.",
  "rule.saqt.q.cpp.2332.example.0.dangerous": "라인 4: 클래스 B에서 덧셈 연산자를 오버로딩 했습니다.\n라인 7: 클래스 B에서 f() 메소드를 정의했습니다.\n라인 15: 네임스페이스 NS에서 비멤버 템플릿으로 덧셈 연산자를 오버로딩했습니다.\n라인 23: f() 메소드를 호출했습니다. 메소드 내부의 덧셈 연산에서 모호성이 발생합니다.",
  "rule.saqt.q.cpp.2332.example.0.safe": "라인 15: 네임스페이스 NS에서 비멤버 템플릿 함수를 제거합니다. 덧셈 연산자 호출을 명확하게 하기 위해서입니다.",
  "rule.saqt.q.cpp.2332.name": "네임스페이스에서 비멤버 템플릿 함수 선언",
  "rule.saqt.q.cpp.2335.description": "모호한 템플릿 부모 클래스 메소드 호출 체커는 템플릿 부모 클래스의 메소드 호출이 모호한 수식을 검출합니다.\n모호한 상황은 다음과 같은 경우에 발생합니다. 템플릿 부모 클래스를 선언합니다. 템플릿 부모 클래스를 상속받은 자식 클래스를 선언합니다. 자식 클래스에서 템플릿 부모 클래스의 변수, 혹은 메소드를 접근합니다. 이때 명시적인 한정자를 붙이지 않고 호출합니다.\n메소드 호출이 모호한 경우 개발자의 예상과 다른 함수가 호출될 수 있습니다.\n한정자를 사용하거나 식별자 앞에 this-> 접두어를 붙여 원하는 메소드를 호출합니다. 명확하게 메소드를 호출할 경우 호출 결과가 개발자의 예상과 일치합니다.",
  "rule.saqt.q.cpp.2335.example.0.dangerous": "라인 2: g() 함수를 선언했습니다.\n라인 8: 템플릿 클래스 B를 템플릿 클래스 A가 상속했습니다.\n라인 11: g() 함수 혹은 메소드를 호출했습니다. 이 호출은 모호성이 발생합니다.\n라인 19: 템플릿 클래스 B에서 g() 메소드를 선언했습니다.",
  "rule.saqt.q.cpp.2335.example.0.safe": "라인 11: 한정자를 사용하여 명확하게 g() 함수를 호출합니다.\n라인 13: this 지시자를 사용하여 명확하게 g() 메소드를 호출합니다.",
  "rule.saqt.q.cpp.2335.name": "모호한 템플릿 부모 클래스 메소드 호출",
  "rule.saqt.q.cpp.2353.description": "const char 포인터 외의 자료형에 문자열 할당 체커는 문자열을 할당 받은 객체의 타입이 const char 포인터가 아닌 경우를 검출합니다.\n문자열 리터럴을 변경하려고 하면 정의되지 않는 동작이 발생합니다. 예를 들어, 일부 구현에서는 읽기 전용 메모리에 문자열 리터럴을 저장할 수 있습니다. 이 경우에 문자열 리터럴을 수정하려는 시도는 예외 또는 충돌을 발생시킬 수 있습니다.\nconst char 포인터 객체에만 문자열을 할당합니다.",
  "rule.saqt.q.cpp.2353.example.0.dangerous": "라인 3: 문자열을 char 포인터 변수에 초기화합니다.\n라인 6: 문자열을 char 포인터 변수에 할당합니다.\n라인 18: 문자열 인자로 매개 변수가 char 포인터인 함수를 호출했습니다.\n라인 24: 함수의 반환 타입이 char 포인터이며, 반환 값으로 문자열을 사용했습니다.",
  "rule.saqt.q.cpp.2353.example.0.safe": "라인 3: 문자열을 const char 포인터 변수에 초기화합니다.\n라인 6: 문자열을 const char 포인터 변수에 할당합니다.\n라인 18: 문자열 인자로 매개 변수가 const char 포인터인 함수를 호출합니다.\n라인 24: 함수의 반환 타입이 const char 포인터이며, 반환 값으로 문자열을 사용합니다.",
  "rule.saqt.q.cpp.2353.name": "const char 포인터 외의 자료형에 문자열 할당",
  "rule.saqt.q.cpp.2382.description": "조건 혹은 증감절에 의해 루프 제어 변수값 변동 체커는 루프 제어 변수의 값이 조건절 혹은 증감절에서 변환된 경우를 검출합니다.\n이때 루프 제어 변수란 루프 카운터를 제외하고 for 문의 초기화 절에서 초기화되지 않거나 증감절에서 변화하지 않는 조건절 변수를 의미합니다.\n루프 제어 변수가 증감절이나 조건절에서 변동될 경우 코드의 가독성이 떨어질 뿐만아니라 코드 결과를 예측하기 어려워 집니다.\n루프 제어 변수가 증감절이나 조건절에서 변동되지 않도록 주의합니다.",
  "rule.saqt.q.cpp.2382.example.0.dangerous": "라인 14: 루프 제어 변수인 bool_a 변수의 값이 변할 수 있습니다.",
  "rule.saqt.q.cpp.2382.example.0.safe": "라인 14: 조건 혹은 증감절에 의해 루프 제어 변수의 값이 변경되지 않도록 합니다.",
  "rule.saqt.q.cpp.2382.name": "조건 혹은 증감절에 의해 루프 제어 변수값 변동",
  "rule.saqt.q.cpp.2383.description": "Boolean 타입이 아닌 루프 제어 변수 체커는 루프 제어 변수가 반복문의 본문에서 값이 변할 경우 그 타입이 Boolean 타입이 아닌 경우를 검출합니다.\n이때 루프 제어 변수란 루프 카운터를 제외하고 for 문의 초기화 절에서 초기화되지 않거나 증감절에서 변화하지 않는 조건절 변수를 의미합니다.\n루프 제어 변수는 일반적으로 반복문을 조기에 종료하는데 사용합니다. 따라서 이러한 루프 제어 변수가 Boolean 타입을 가지고 있으면 좀 더 명확하게 그 의미를 이해할 수 있습니다.\n루프 제어 변수는 Boolean 타입을 가지도록 선언합니다.",
  "rule.saqt.q.cpp.2383.example.0.dangerous": "라인 10: 반복문 본문에 포함된 u8a 루프 제어 변수에 값을 대입했습니다. 이 변수는 Boolean 타입이 아닙니다.",
  "rule.saqt.q.cpp.2383.example.0.safe": "라인 10: 반복문 본문에 포함된 u8a 루프 제어 변수를 Boolean 타입으로 변경하여 값을 대입합니다.",
  "rule.saqt.q.cpp.2383.name": "Boolean 타입이 아닌 루프 제어 변수",
  "rule.saqt.q.cpp.2384.description": "비정형적인 for 구문에서 continue 구문 사용 체커는 일반적인 방식으로 사용하지 않은 for 구문 내부에서 continue 구문을 사용하여 반복문을 탈출하는 경우를 검출합니다.\n여기서 비정형적인 for 구문이란 다음과 같습니다. 루프 카운터가 여러 개이거나 정수형이 아닙니다. 루프 카운터 외의 다른 루프 제어 변수가 Boolean 타입을 가지지 않습니다.\n일반적이지 않은 for 구문에서 continue를 잘못 사용할 경우 의도하지 않은 제어 흐름이 발생할 수 있습니다. 특히 이러한 경우 중 무한 루프가 발생하게 될 경우 프로세스가 멈춰버릴 수 있습니다.\n비정형적인 for 구문에서는 continue 구문을 사용하지 않습니다. continue 구문 없이 개발자가 의도한 제어 흐름을 가지도록 소스 코드를 수정할 필요가 있습니다.",
  "rule.saqt.q.cpp.2384.example.0.dangerous": "라인 5: 비정형적인 for 구문에서 continue 구문을 사용했습니다.",
  "rule.saqt.q.cpp.2384.example.0.safe": "라인 5: 비정형적인 for 구문에서 continue 구문을 사용하지 않습니다.",
  "rule.saqt.q.cpp.2384.name": "비정형적인 for 구문에서 continue 구문 사용",
  "rule.saqt.q.cpp.2385.description": "정적 스토리지 클래스를 가지지 않은 내부 링크 함수 체커는 내부 링크를 가지는 함수를 재선언할 때 정적 스토리지 클래스를 지정하지 않은 정의를 검출합니다.\n함수를 정적 스토리지 클래스를 지정하여 선언했으면 이미 내부 링크를 가집니다. 하지만 재선언, 즉, 정의하는 과정에서 이러한 정적 스토리지 클래스를 작성하지 않으면 개발자에게 혼동을 줄 수 있습니다.\n내부 링크를 가지는 함수 선언은 재선언 시에도 정적 스토리지 클래스를 지정하도록 합니다.",
  "rule.saqt.q.cpp.2385.example.0.dangerous": "라인 1: 함수를 정적 스토리지 클래스를 가지도록 선언했습니다.\n라인 5: 함수 재선언에서 정적 스토리지 클래스 지정이 빠져있습니다.",
  "rule.saqt.q.cpp.2385.example.0.safe": "라인 5: 함수 재선언 시 정적 스토리지 클래스를 지정합니다.",
  "rule.saqt.q.cpp.2385.name": "정적 스토리지 클래스를 가지지 않은 내부 링크 함수",
  "rule.saqt.q.cpp.2386.description": "명시적인 예외 처리에 catch 문 미처리 체커는 코드에서 명시적으로 던져지는 각 예외가 해당 지점으로 이어질 수있는 모든 호출 경로에서 호환 가능한 유형의 핸들러를 가지지 않은 경우를 검출합니다.\n프로그램이 처리되지 않은 예외를 throw하면 구현 정의 방식으로 종료됩니다. 특히, 호출 스택이 종료 전에 unwind되는지 여부는 구현에 따라 정의되므로 모든 자동 객체의 소멸자가 호출되거나 호출되지 않을 수 있습니다.\n명시적으로 작성된 예외 처리는 반드시 catch를 통해서 처리해야 합니다.",
  "rule.saqt.q.cpp.2386.example.0.dangerous": "라인 11: MISRA_15_3_4___A()를 던집니다.\n라인 15: MISRA_15_3_4___B()를 던집니다. catch에서 처리하지 못하기 때문에 문제가 발생할 수 있습니다.\n라인 18: catch를 통해MISRA_15_3_4___A() 처리합니다.",
  "rule.saqt.q.cpp.2386.example.0.safe": "라인 22: MISRA_15_3_4___B()를 처리할 수 있는 catch 문을 추가합니다.",
  "rule.saqt.q.cpp.2386.name": "명시적인 예외 처리에 catch 문 미처리",
  "rule.saqt.q.cpp.2387.description": "non-const 핸들러를 클래스 데이터로 반환 금지 체커는 멤버 함수가 non-const 핸들러를 클래스 데이터로 반환한 경우를 검출합니다.\n멤버 함수를 사용하여 클래스 인터페이스를 구현함으로써 구현은 객체 상태를 수정하는 방법을 더 많이 제어 할 수 있으며 클라이언트에 영향을 주지 않고 클래스를 유지 관리 할 수 있습니다. 클래스 데이터에 대한 핸들러를 반환하면 클라이언트는 인터페이스를 사용하지 않고 객체의 상태를 수정할 수 있습니다.\n멤버 함수에서 클래스 데이터를 반환하지 않도록 합니다.",
  "rule.saqt.q.cpp.2387.example.0.dangerous": "라인 6: 클래스의 멤버 함수에서 멤버 변수 a를 반환하고 있습니다.\n라인 10: 클래스에 멤버 변수로 a가 선언되었습니다.",
  "rule.saqt.q.cpp.2387.example.0.safe": "라인 6: 클래스의 멤버 함수에서 멤버 변수를 반한하는 코드를 제거합니다.",
  "rule.saqt.q.cpp.2387.name": "non-const 핸들러를 클래스 데이터로 반환 금지",
  "rule.saqt.q.cpp.2388.description": "재선언 시 토큰 불일치 체커는 객체, 함수 반환 타입 또는 함수 매개 변수에 사용되는 타입이 모든 선언 및 재선언에서 동일한 토큰이 아닌 경우를 검출합니다.\n재선언에 호환 유형이 있지만 동일한 토큰이 아닌 타입이 있는 경우에 재선언이 어떤 선언을 가리키는지 명확하지 않을 수 있습니다.\n재선언 시 선언에 명시된 토큰을 사용해야 합니다.",
  "rule.saqt.q.cpp.2388.example.0.dangerous": "라인 2: INT 자료형으로 변수를 선언했습니다.\n라인 3: int 자료형으로 변수를 선언했습니다.\n라인 9: 함수의 매개 변수를 signed int 자료형으로 선언했습니다.\n라인 10: 함수의 매개 변수를 int 자료형으로 선언했습니다.",
  "rule.saqt.q.cpp.2388.example.0.safe": "라인 3: 먼저 선언된 변수와 같은 자료형으로 재선언합니다.\n라인 9: 먼저 선언된 함수의 매개변수와 같은 자료형으로 재선언합니다.",
  "rule.saqt.q.cpp.2388.name": "재선언 시 토큰 불일치",
  "rule.saqt.q.cpp.2390.description": "unsigned int 자료형에 접미사 U 사용 체커는 unsigned int 타입의 정수형 리터럴에는 대문자로 접미사 \"U\"로 명시하지 않은 경우를 검출합니다.\nunsigned int 정수형 리터럴에 접미사 U를 사용하도록 합니다.",
  "rule.saqt.q.cpp.2390.example.0.dangerous": "라인 19: unsigned int 타입의 16진수 0x8000을 함수호출의 인자 값으로 사용하고 있습니다.\n라인 20: unsigned int 타입의 16진수 0x8000을 식에서 사용하고 있습니다.",
  "rule.saqt.q.cpp.2390.example.0.safe": "라인 19: 0x8000 뒤에 접미사 U를 추가합니다.\n라인 20: 0x8000 뒤에 접미사 U를 추가합니다.",
  "rule.saqt.q.cpp.2390.name": "unsigned int 자료형에 접미사 U 사용",
  "rule.saqt.q.cpp.2392.description": "case문 종료 누락 체커는 switch-case 문에서 내용이 있는 case문이 throw 또는 break 문으로 종료되지 않은 경우를 검출합니다.\nswitch-case문의 마지막 case문과 default문은 항상 break 혹은 throw로 종료되어야 합니다.",
  "rule.saqt.q.cpp.2392.example.0.dangerous": "라인 18: case 문에 break 문이 없습니다.\n라인 21: default 문에 break 문이 없습니다.",
  "rule.saqt.q.cpp.2392.example.0.safe": "라인 20: case 문에 break 문을 추가합니다.\n라인 22: case 문에 break 문을 추가합니다.",
  "rule.saqt.q.cpp.2392.name": "case문 종료 누락",
  "rule.saqt.q.cpp.2394.description": "C 스타일 메모리 관련 함수 사용 체커는 클래스 타입을 할당하거나 해제할 때, C 스타일 메모리 관련 함수를 사용한 수식을 검출합니다.\nC++에서 클래스를 C 스타일 메모리 관련 함수로 할당하거나 해제할 경우, 생성자와 소멸자를 부르지 않습니다. 클래스 생성자와 소멸자가 불리지 않으면 정상적인 동작이 이루어지지 않을 가능성이 무척 높습니다.\nC 스타일 메모리 관련 함수 대신 각 함수에 대응하는 C++ 메모리 연산자를 사용합니다. 구체적으로는 malloc() 함수 대신 new 연산자를 사용하고, free() 함수 대신 delete 연산자를 사용합니다.",
  "rule.saqt.q.cpp.2394.example.0.dangerous": "라인 1: malloc() 함수를 사용했습니다. 생성자가 불리지 않습니다.",
  "rule.saqt.q.cpp.2394.example.0.safe": "라인 1: malloc() 함수 대신 new 연산자를 사용합니다.",
  "rule.saqt.q.cpp.2394.name": "C 스타일 메모리 관련 함수 사용",
  "rule.saqt.q.cpp.249.description": "무한 반복 체커는 반복 구문에서 잠재적으로 무한 반복의 가능성이 있는 코드를 검출합니다.\n무한 반복의 가능성을 판단하는 기준은 다음과 같습니다. - 의도적으로 무한 루프를 사용하고 루프를 탈출하기 위한 종료 구문(예: break, return)이 없는 경우입니다. 이 경우에 옵션으로 알람을 울리지 않도록 조정할 수 있습니다. - for 문의 조건부가 비어 있는 경우입니다. for 문에서 루프를 탈출하기 위해 사용되는 코드를 조건부에 작성하는 것이 좋습니다. 이 경우에 옵션에서 알람이 울리지 않도록 조정할 수 있습니다. - for 문의 루프 카운터가 블록 내에서 변경되는 경우입니다. for 문의 루프 카운터는 증감부에서만 변경되는 것이 좋습니다. 이 경우에 옵션에서 알람이 울리지 않도록 조정할 수 있습니다. - 정수형과 같은 기본 타입 루프 카운터를 동등 비교(==, !=)하고, 해당 값이 순차적으로 증감하지 않는 경우입니다. - 정수형과 같은 기본 타입 루프 카운터의 경계값과 증감 방향이 서로 다른 경우입니다. - 루프 카운터의 값이 반복문 안에서 바뀌지 않는 경우입니다.\n무한 반복을 수행하는 경우 프로그램은 종료되지 않고 지속적으로 리소스를 소모합니다. 메모리 할당과 같은 작업을 무한하게 수행하는 경우 프로그램이 강제적으로 종료되고 시스템에 악영향을 미치게 됩니다.\n무한 반복의 가능성이 있는 코드를 작성하지 않도록 합니다.",
  "rule.saqt.q.cpp.249.example.0.dangerous": "라인 1: i를 10과 동등 비교(!=)하고 있으며 i의 값은 순차적으로 증가하지 않습니다.\n라인 4: ptr의 값이 반복문 안에서 바뀌지 않습니다.\n라인 7: i 값의 최소 경계값이 제한되지만, 값은 증가합니다. 따라서 루프가 한 번도 돌지 않거나 무한히 돌게 됩니다.",
  "rule.saqt.q.cpp.249.example.0.safe": "라인 1: i를 대소 비교(<, <=, >, >=)하도록 합니다.\n라인 4: ptr의 값을 반복문 안에서 수정하도록 수정합니다.\n라인 7: 경계값과 값의 증감 방향을 정상적으로 수정합니다.",
  "rule.saqt.q.cpp.249.name": "무한 반복",
  "rule.saqt.q.cpp.249.option.ignore_assigned_in_for_body.description": "옵션을 사용하는 경우, for 문의 본체 내에서 루프 카운터가 바뀔 때 발생하는 이슈를 무시합니다.",
  "rule.saqt.q.cpp.249.option.ignore_assigned_in_for_body.name": "for문의 본채 내에서 루프 카운터가 바뀌는 이슈 무시",
  "rule.saqt.q.cpp.249.option.ignore_empty_condition_in_for.description": "선택할 경우 for문의 조건부가 비어 있는 이슈를 무시합니다.",
  "rule.saqt.q.cpp.249.option.ignore_empty_condition_in_for.name": "for문의 조건부가 비어 있는 이슈 무시",
  "rule.saqt.q.cpp.249.option.ignore_while_true_idiom.description": "선택할 경우 for(;;)나 while(1)와 같은 의도적인 무한루프에 대한 이슈를 무시합니다.",
  "rule.saqt.q.cpp.249.option.ignore_while_true_idiom.name": "의도적인 무한루프에 대한 이슈 무시",
  "rule.saqt.q.cpp.250.description": "소켓의 잘못된 사용 체커는 소켓 관련 함수를 잘못 사용하는 코드를 검출합니다.\n소켓 관련 함수는 호출될 수 있는 적절한 상태가 존재하며, \n소켓 관련 함수에 부적절한 상태가 사용되는 경우 의도하지 않은 결과가 발생할 수 있습니다.\n소켓 관련 함수를 순서에 맞게 사용해야 합니다.",
  "rule.saqt.q.cpp.250.example.0.dangerous": "라인 2: 소켓 파일 디스크립터인 'server_sockfd'를 0으로 초기화했습니다.\n라인 9: 'server_sockfd'를 socket() 함수를 통해 초기화하지 않고 사용하였으므로 오류로 검출했습니다.",
  "rule.saqt.q.cpp.250.example.0.safe": "라인 5: 소켓 파일 디스크립터를 사용하여 바인딩하기 위해서는 socket() 함수로 초기화해야 합니다.",
  "rule.saqt.q.cpp.250.name": "소켓의 잘못된 사용",
  "rule.saqt.q.cpp.257.description": "금지된 함수 사용 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.\n호출을 금지할 함수는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 함수를 사용하지 않도록 금지해야 하는 경우가 있습니다. 예를 들어, 프로젝트 전체의 일관성을 유지하거나, 다른 방법을 통해 해당 함수를 더 이상 사용하지 않는 경우, 혹은 해당 함수에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 함수를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.saqt.q.cpp.257.example.0.dangerous": "라인 2: 여기서는 forbidden() 함수가 금지되었다고 가정합니다.",
  "rule.saqt.q.cpp.257.example.0.safe": "라인 2: 금지된 함수 대신 다른 함수를 사용합니다.",
  "rule.saqt.q.cpp.257.name": "금지된 함수 사용",
  "rule.saqt.q.cpp.257.option.forbidden_function.description": "금지할 함수의 이름을 작성합니다.<br />예시) forbidden",
  "rule.saqt.q.cpp.257.option.forbidden_function.name": "금지할 함수 이름",
  "rule.saqt.q.cpp.262.description": "반환 값 대신 함수 포인터 비교 체커는 함수 호출을 사용해야 하는 위치에 함수 포인터를 사용하는 코드를 검출합니다.\n함수 이름 뒤에 인자 목록을 작성하지 않으면 해당 이름은 함수 포인터가 됩니다. 함수 포인터와 함수 호출을 혼동하여 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.262.example.0.dangerous": "라인 8: 함수의 반환값을 비교하지 않고 함수 포인터의 값을 비교했습니다.",
  "rule.saqt.q.cpp.262.example.0.safe": "라인 8: 함수의 반환값을 비교하도록 수정합니다.",
  "rule.saqt.q.cpp.262.name": "반환 값 대신 함수 포인터 비교",
  "rule.saqt.q.cpp.2738.description": "포인터 연산을 위한 포인터 크기 조정 금지 체커는 포인터 연산을 위해서 사용자가 임의로 포인터 크기를 조정한 경우를 검출합니다.\n포인터 연산을 사용할 때, 더해지거나 빠지는 값이 알아서 참조하는 객체의 타입에 맞게 크기가 조정됩니다. 포인터 연산을 위해서 사용자가 임의로 크기를 조정하는 것은 크기 조정이 중복으로 발생하기 때문에 유효하지 않습니다.\n포인터 크기를 임의로 조절하지 않도록 합니다.",
  "rule.saqt.q.cpp.2738.example.0.dangerous": "라인 3: buf 포인터에 sizeof 연산자를 사용하여 포인터 연산을 수행했습니다.",
  "rule.saqt.q.cpp.2738.example.0.safe": "라인 3: 포인터 연산에 크기가 조정되지 않은 값을 사용합니다.",
  "rule.saqt.q.cpp.2738.name": "포인터 연산을 위한 포인터 크기 조정 금지",
  "rule.saqt.q.cpp.274.description": "헤더 파일 내 함수 선언 체커는 헤더 파일에서 함수를 정의한 경우를 검출합니다.\n헤더 파일에서 함수를 정의하지 않습니다.",
  "rule.saqt.q.cpp.274.example.0.dangerous": "라인 2: 헤더 파일 내에 함수를 정의하여 문제가 발생했습니다.",
  "rule.saqt.q.cpp.274.example.0.safe": "라인 5: 헤더 파일에 함수를 선언하고, 소스파일에 정의해야 합니다.",
  "rule.saqt.q.cpp.274.name": "헤더 파일 내 함수 선언",
  "rule.saqt.q.cpp.2751.description": "모호한 템플릿 함수 호출 체커는 템플릿 함수 호출이 모호한 수식을 검출합니다.\n모호한 상황은 다음과 같은 경우에 발생합니다. 일반 함수A를 X라는 이름으로 선언합니다. 템플릿 함수B에서 A함수를 호출합니다. B함수 이후에 네임스페이스 C 내부에서 A의 인자와 같은 타입의 변환 연산자를 가지는 구조체 D를 정의합니다. 네임스페이스 C내부에서 구조체D를 인자로 받고 A 함수와 이름이 같은 E함수를 정의합니다. F함수를 정의하고 내부에서 구조체D 객체를 정의한 뒤 X란 이름을 가지는 함수를 호출합니다. X란 이름의 호출이 A를 호출할지 E를 호출할지 모호해집니다.\n함수 호출이 모호한 경우 개발자의 예상과 다른 함수가 호출될 수 있습니다.\n한정자를 사용하여 원하는 함수를 호출합니다. 명확하게 함수를 호출할 경우 호출 결과가 개발자의 예상과 일치합니다.",
  "rule.saqt.q.cpp.2751.example.0.dangerous": "라인 1: b() 함수를 선언했습니다.\n라인 5: f() 함수 템플릿에서 b() 함수를 호출했습니다.\n라인 9: 네임스페이스 NS에서 구조체 A를 선언했습니다. 이 구조체는 int 타입에 대한 변환 연산자를 포함했습니다.\n라인 16: 네임스페이스 NS에서 b() 함수를 선언했습니다. 인자로 받는 타입은 A입니다.\n라인 21: f() 함수를 호출했습니다. 라인 5에서 호출되는 b() 함수가 모호해집니다.",
  "rule.saqt.q.cpp.2751.example.0.safe": "라인 5: 한정자를 붙여 명시적으로 전역에 위치한 b() 함수를 호출합니다.",
  "rule.saqt.q.cpp.2751.name": "모호한 템플릿 함수 호출",
  "rule.saqt.q.cpp.2752.description": "const 한정자를 제거하는 캐스팅 사용 체커는 const 객체를 수정하기 위해 const 한정자를 제거하는 캐스팅 사용하는 경우를 검출합니다.\nconst 한정자를 사용한 객체는 이 객체가 추후 수정되지 않아야 한다는 것을 명시하는 것입니다. 따라서 이러한 객체의 상태를 임의로 수정하게 될 경우 잘못된 동작이 발생할 수 있습니다.\nconst 객체에 const 한정자를 제거하는 캐스팅을 사용하지 않도록 합니다. 만약 반드시 값을 수정할 필요가 있을 경우에는 객체를 const 로 선언하지 않도록 합니다. 만약 클래스의 경우 const를 유지하되 예외 상황에서 값을 수정할 필요가 있다면 mutable 수식어를 사용합니다. 이것은 클래스가 상수로 선언되어도 변경 가능한 멤버 변수를 선언할 수 있습니다.",
  "rule.saqt.q.cpp.2752.example.0.dangerous": "라인 6: const 포인터 변수 v에서 역참조가 발생했습니다.",
  "rule.saqt.q.cpp.2752.example.0.safe": "라인 3: 값을 변경해야 한다면, const가 아닌 일반 변수로 선언합니다.",
  "rule.saqt.q.cpp.2752.name": "const 한정자를 제거하는 캐스팅 사용",
  "rule.saqt.q.cpp.2754.description": "va_start 매크로 제약사항 위반 체커는 가변 인자를 다룰때 사용하는 va_start 매크로의 제약 사항을 위반한 경우를 검출합니다.\nva_start 매크로의 제약사항은 다음과 같은 항목들이 있습니다.\nva_start 매크로의 두번째 인수로 참조 타입을 전달해서는 안됩니다.\n일반적인 복사 생성자나 이동 생성자, 소멸자를 가지는 클래스를 두번째 인수로 전달하는 것은 구현 정의(Implementation defined)로 지원됩니다. 즉 컴파일러에 따라 지원할 수도 있고 지원하지 않을수도 있습니다.\nregister 키워드로 선언된 매개변수나 함수 타입의 매개변수를 전달할 수 있습니다.\n배열 타입의 객체를 전달해서는 안됩니다.\n기본 인수 승격이 발생하는 객체를 전달하면 안됩니다.\nva_start 매크로의 제약사항을 위반하는 것은 정의되지 않은 동작(Undefined Behavior) 입니다.\n이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\nva_start 매크로의 제약사항을 잘 지켜 프로그램을 작성하도록 합니다.",
  "rule.saqt.q.cpp.2754.example.0.dangerous": "라인 3: va_start()의 두 번째 인자의 형식이 'float'입니다.",
  "rule.saqt.q.cpp.2754.example.0.safe": "라인 3: 두 번째 인자의 형식을 'float'에서 'double'로 변경하십시오.",
  "rule.saqt.q.cpp.2754.name": "va_start 매크로 제약사항 위반",
  "rule.saqt.q.cpp.2763.description": "tss_create() 함수 사용 후 메모리 해제 확인 체커는 스레드 한정 저장소를 할당 한 후 해제 하지 않은 경우를 검출합니다.\n스레드 한정 저장소를 할당한 후 해제하지 않으면 메모리 누수가 발생할 수 있습니다.\ntss_create() 함수로 스레드 한정 저장소를 할당한 뒤 해제해야 합니다.",
  "rule.saqt.q.cpp.2763.example.0.dangerous": "라인 11: 메모리가 해제되지 않은 상태에서 반환했습니다.\n라인 21: get_data() 함수를 호출했습니다. 메모리 누수가 발생할 가능성이 있습니다.\n라인 41: add_data() 함수를 통해 get_data() 함수를 호출했습니다. 메모리 누수가 발생할 가능성이 있습니다.",
  "rule.saqt.q.cpp.2763.example.0.safe": "라인 10: 소멸자 함수를 정의합니다. 함수 내에서 메모리 해제가 됩니다.\n라인 18: tss_create() 함수의 두 번째 인자에서 소멸자를 호출합니다. 할당된 메모리가 해제됩니다.",
  "rule.saqt.q.cpp.2763.name": "tss_create() 함수 사용 후 메모리 해제 확인",
  "rule.saqt.q.cpp.2766.description": "표현식에서 원자 변수 두 번 참조 체커는 표현식에서 atomic 변수를 두 번 참조한 경우를 검출합니다.\n하나의 표현식에서 원자 변수가 두 번 나타나는 경우 두 개의 원자 읽기 또는 원자 읽기 및 원자 쓰기가 필요합니다. 다른 스레드가 두 작업 사이의 원자 변수를 수정할 수 있으므로 이러한 한 쌍의 원자 연산은 스레드로부터 안전하지 않습니다. 결과적으로 원자 변수는 동일한 표현식에서 두 번 참조되지 않아야 합니다.\n표현식에서 원자 변수를 두 번 참조하지 않도록 주의합니다.",
  "rule.saqt.q.cpp.2766.example.0.dangerous": "라인 13: 다중 스레드 환경에서 atomic 변수가 의도치 않은 값을 가질 수 있습니다.",
  "rule.saqt.q.cpp.2766.example.0.safe": "라인 15: atomic 변수에 올바른 값이 저장되도록 보장하기 위해 atomic_compare_exchange_weak()를 사용합니다.",
  "rule.saqt.q.cpp.2766.name": "표현식에서 원자 변수 두 번 참조",
  "rule.saqt.q.cpp.2767.description": "atomic_compare_exchange_weak() 함수 실패 체커는 atomic_compare_exchange_weak() 함수를 반복문에 포함시키지 않은 수식을 검출합니다.\natomic_compare_exchange_weak() 함수는 해당 변수가 정상적으로 값을 들고 있을 때만 변수를 설정합니다. 만약 해당 함수 호출이 반복문 안에 들어가 있지 않은 경우 실패할 위험이 있습니다.\natomic_compare_exchange_weak() 함수를 반복문 내에서 호출하도록 합니다.",
  "rule.saqt.q.cpp.2767.example.0.dangerous": "라인 19: atomic_compare_exchange_weak() 함수를 반복문 내에서 호출하지 않았습니다.",
  "rule.saqt.q.cpp.2767.example.0.safe": "라인 27: atomic_compare_exchange_weak() 함수를 반복문 내에서 호출하도록 합니다.",
  "rule.saqt.q.cpp.2767.name": "atomic_compare_exchange_weak() 함수 실패",
  "rule.saqt.q.cpp.2768.description": "스토리지 클래스 충돌 체커는 동일한 함수나 객체의 스토리지 클래스가 선언 및 정의에서 서로 일치하지 않고 충돌하는 경우를 검출합니다.\n함수나 객체가 선언 및 정의에서 스토리지 클래스를 다르게 선언하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n함수나 객체의 선언 및 정의에서 스토리지 클래스가 항상 일치하도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.2768.example.0.dangerous": "라인 8: 라인 2에서 정적 링크로 정의했으나 일반적인 변수로 재정의했습니다. 이전과 스토리지 클래스가 일치하지 않습니다.\n라인 11: 라인 5에서 정적 링크로 선언했으나 일반적인 변수로 정의했습니다. 이전과 스토리지 클래스가 일치하지 않습니다.",
  "rule.saqt.q.cpp.2768.example.0.safe": "라인 1: 함수나 객체의 스토리지 클래스가 충돌하지 않도록 코드를 잘 작성합니다.",
  "rule.saqt.q.cpp.2768.name": "스토리지 클래스 충돌",
  "rule.saqt.q.cpp.2769.description": "사용되지 않은 표준라이브러리 반환 값 체커는 표준라이브러리의 반환 값을 사용하지 않은 수식을 검출합니다.\n표준 라이브러리 함수들이 항상 성공했다고 가정하지 말아야 합니다. 만약 표준 라이브러리 함수가 실패했는데 이것을 성공했다고 가정하고 코드를 작성할 경우 여러 가지 문제가 발생할 수 있습니다.\n표준 라이브러리 반환 값을 항상 점검하고 실패에 대응하도록 합니다.",
  "rule.saqt.q.cpp.2769.example.0.dangerous": "라인 9: setlocale() 함수의 반환값을 검사하지 않았습니다.",
  "rule.saqt.q.cpp.2769.example.0.safe": "라인 9: setlocale() 함수의 반환값을 검사하도록 합니다.",
  "rule.saqt.q.cpp.2769.name": "사용되지 않은 표준라이브러리 반환 값",
  "rule.saqt.q.cpp.2770.description": "정확하지 않은 가변인자 타입 체커는 va_arg 매크로에 사용하는 인자의 타입이 정확하지 않은 수식을 검출합니다.\nva_arg에 제공한 타입은 정확한 타입을 사용해야 합니다. 예를 들어 va_arg에 제공한 타입이 int보다 작은 크기의 정수형인 경우 정수 승급(Integer Promotion)으로 인해 값이 변경되는 문제가 발생할 수 있습니다.\nva_arg에 제공하는 타입을 정수 승급 문제등이 발생하지 않도록 int 타입을 사용하는 것을 권장합니다.",
  "rule.saqt.q.cpp.2770.example.0.dangerous": "라인 8: unsigned char 형을 va_arg 매크로에 전달했습니다.",
  "rule.saqt.q.cpp.2770.example.0.safe": "라인 8: 정수 승급 등의 문제를 방지하기 위해 va_arg 매크로에 전달하는 타입으로 int를 사용하도록 합니다.",
  "rule.saqt.q.cpp.2770.name": "정확하지 않은 가변인자 타입",
  "rule.saqt.q.cpp.2771.description": "float 타입에 대해 비교 연산 수행 체커는 float 타입에 대해 메모리 비교 연산을 수행한 경우를 검출합니다.\nfloat 타입을 포함하는 구조체의 동일성 검사를 위해 메모리 검사를 수행하더라도 의도대로 동작하지 않을 가능성이 있습니다. float 타입 오차 등의 이유로 의도하지 않은 결과가 발생합니다.\nfloat 타입에 메모리 비교 연산을 수행하지 않습니다. 대신 memcmp() 등의 함수를 사용합니다.",
  "rule.saqt.q.cpp.2771.example.0.dangerous": "라인 14: float 타입에 메모리 비교 연산을 수행했습니다.",
  "rule.saqt.q.cpp.2771.example.0.safe": "라인 14: float 타입에 대해 메모리 비교 연산을 수행하는 대신 memcmp() 등의 함수를 사용합니다.",
  "rule.saqt.q.cpp.2771.name": "float 타입에 대해 비교 연산 수행",
  "rule.saqt.q.cpp.2772.description": "부적절한 정수 정밀도 체커는 부적절한 상수 정밀도를 사용한 경우를 검출합니다.\nC의 정수형은 크기와 정밀도로 구성되어 있습니다. 정수의 정밀도를 측정하기 위해 sizeof 등을 사용하면 값이 너무 커져서 잘못된 결과를 얻을 수 있습니다. 따라서 의도하지 않은 동작이 발생할 수 있습니다.\n적절한 정수 정밀도를 사용합니다.",
  "rule.saqt.q.cpp.2772.example.0.dangerous": "라인 4: 정수 정밀도 측정에 sizeof를 사용했습니다.",
  "rule.saqt.q.cpp.2772.example.0.safe": "라인 7: 정수 정밀도를 sizeof를 사용하지 않고 측정합니다.",
  "rule.saqt.q.cpp.2772.name": "부적절한 정수 정밀도",
  "rule.saqt.q.cpp.2773.description": "다른 스레드의 뮤텍스 조작 체커는 다른 스레드의 뮤텍스를 잠금 해제하거나 파괴한 경우를 검출합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n다른 스레드의 뮤텍스를 잠금 해제하거나 파괴하지 않도록 합니다.",
  "rule.saqt.q.cpp.2773.example.0.dangerous": "라인 6: 다른 스레드의 뮤텍스를 파괴했습니다.",
  "rule.saqt.q.cpp.2773.example.0.safe": "라인 8: 다른 스레드가 모두 끝날 때까지 기다린 후에 뮤텍스를 파괴합니다.",
  "rule.saqt.q.cpp.2773.name": "다른 스레드의 뮤텍스 조작",
  "rule.saqt.q.cpp.2774.description": "지역 변수를 공유하는 스레드 체커는 POSIX thread 가 지역 변수를 공유한 경우를 검출합니다.\n다른 스레드에서 스레드의 스택 또는 스레드 지역 변수에 접근하면 유효하지 않은 접근이 될 수 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n스레드 간 데이터를 공유하려면 할당된 메모리를 사용하거나 정적 변수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.2774.example.0.dangerous": "라인 16: 지역 변수 val을 공유했습니다.",
  "rule.saqt.q.cpp.2774.example.0.safe": "라인 16: 할당된 메모리를 공유합니다.",
  "rule.saqt.q.cpp.2774.name": "지역 변수를 공유하는 스레드",
  "rule.saqt.q.cpp.2775.description": "열거형 타입 명명 규칙 위반 체커는 열거형을 정의할 때 대문자와 밑줄(_) 외에 다른 문자를 사용한 경우를 검출합니다.\n열거형을 정의할 경우 대문자와 밑줄(_)만 사용하도록 합니다.",
  "rule.saqt.q.cpp.2775.example.0.dangerous": "라인 2: 열거형 정의 시 소문자를 사용했습니다.",
  "rule.saqt.q.cpp.2775.example.0.safe": "라인 2: 열거형 정의 시 대문자를 사용하도록 합니다.",
  "rule.saqt.q.cpp.2775.name": "열거형 타입 명명 규칙 위반",
  "rule.saqt.q.cpp.2784.description": "클래스 정의 헤더에 인클루드 가드 누락 체커는 클래스를 정의하였으며 인클루드 가드가 누락된 헤더를 검출합니다.\n인클루드 가드(Include Guard)는 전역적으로 사용하는 클래스 선언등을 한 번만 수행할 수 있도록 헤더 파일을 전처리 구문으로 감싸는 것을 의미합니다. 최근의 컴파일러는 이와 동일한 기능을 하는 #pragma once 등의 명령어도 지원합니다.\n인클루드 가드를 사용하지 않는 경우 중복 선언으로 컴파일 오류가 발생할 수 있습니다.\n클래스 정의가 포함된 헤더를 전처리 구문으로 감싸거나 #pragma once를 사용해야 합니다.",
  "rule.saqt.q.cpp.2784.example.0.dangerous": "라인 1: 인클루드 가드 없이 헤더 파일에서 클래스를 정의했습니다.",
  "rule.saqt.q.cpp.2784.example.0.safe": "라인 1: 전처리 구문을 사용하거나 #pragma once를 사용합니다.",
  "rule.saqt.q.cpp.2784.name": "클래스 정의 헤더에 인클루드 가드 누락",
  "rule.saqt.q.cpp.2785.description": "연산자 사이 공백 누락 체커는 연산자 사이에 공백이 누락된 수식을 검출합니다.\n연산자 사이에 공백을 넣도록 합니다.",
  "rule.saqt.q.cpp.2785.example.0.dangerous": "라인 2: + 연산자와 양측 피연산자 사이에 공백이 없습니다.\n라인 5: + 연산자와 좌측 피연산자 사이에 공백이 없습니다.\n라인 6: + 연산자와 우측 피연산자 사이에 공백이 없습니다.\n라인 7: + 연산자와 일부 피연산자들 사이에 공백이 없습니다.",
  "rule.saqt.q.cpp.2785.example.0.safe": "라인 1: 모든 연산자와 피연산자 사이에 공백을 넣도록 합니다.",
  "rule.saqt.q.cpp.2785.name": "연산자 사이 공백 누락",
  "rule.saqt.q.cpp.2786.description": "switch 구문에서 constexpr 사용 체커는 switch 구문 및 case 구문에서 constexpr을 사용한 수식을 검출합니다.\nconstexpr은 수식을 컴파일 타임에 상수값으로 사용할 수 있게 해주는 모던 C++ 표준에 속한 기능입니다. 다만 C++11이나 그 이상을 지원하는 컴파일러가 아닌 경우 이 기능을 정상적으로 파싱하지 못할 가능성이 높습니다. 따라서 이 규칙에서는 switch 구문에서의 constexpr 사용을 금지합니다.\nswitch 구문에서 constexpr을 사용하지 않도록 합니다. 대신 미리 계산해둔 상수값을 사용합니다.",
  "rule.saqt.q.cpp.2786.example.0.dangerous": "라인 6: switch 구문에서 constexpr을 반환하는 함수를 사용했습니다. 이 함수의 결과는 컴파일 타임에 계산되나 오래된 컴파일러에서는 컴파일 할 수 없습니다.",
  "rule.saqt.q.cpp.2786.example.0.safe": "라인 6: switch 구문에서 constexpr을 사용하지 않도록 합니다. 대신 미리 계산된 상수값을 사용합니다.",
  "rule.saqt.q.cpp.2786.name": "switch 구문에서 constexpr 사용",
  "rule.saqt.q.cpp.2787.description": "수학 함수 범위 오류 체커는 수학 함수에서 도메인 오류 및 영역 예러가 발생한 경우를 검출합니다.\n도메인 오류는 입력값이 수학 함수에서 정의한 도메인을 벗어날 때 발생합니다. 범위 오류는 함수의 실행 후 얻은 수학적 결과값이 극단적으로 커서 지정된 타입으로 표현되지 못하는 경우 발생합니다.\n두 경우 모두, 함수는 어떤 값을 반환하지만 계산의 결과로 얻은 것은 정확한 값이 아닙니다. 이로 인한 문제가 발생할 수 있습니다.\n수학 함수를 사용하기 전 입력값의 범위를 검사하고, 출력값의 범위를 검사합니다.",
  "rule.saqt.q.cpp.2787.example.0.dangerous": "라인 3: sqrt() 함수의 인자 값이 음수일 수 있습니다.",
  "rule.saqt.q.cpp.2787.example.0.safe": "라인 4: 범위 검사를 사용하여 도메인 오류를 예방합니다.",
  "rule.saqt.q.cpp.2787.name": "수학 함수 범위 오류",
  "rule.saqt.q.cpp.2788.description": "잠겨 있는 뮤텍스 파괴 체커는 잠긴 상태인 뮤텍스를 파괴하는 수식을 검출합니다.\n뮤텍스는 동시에 액세스 되는 공유 데이터를 보호하는데 사용합니다.\n스레드가 해당 뮤텍스를 기다리는 동안 뮤텍스가 삭제되면, 임계 영역과 공유 데이터가 더 이상 보호되지 않습니다.\n뮤텍스가 잠겨있는 동안에는 뮤텍스를 파괴하지 않도록 합니다.",
  "rule.saqt.q.cpp.2788.example.0.dangerous": "라인 22: 다른 스레드에서 뮤텍스의 잠금이 해제되기 전에 뮤텍스가 파괴될 수 있습니다.",
  "rule.saqt.q.cpp.2788.example.0.safe": "라인 33: 스레드를 결합한 후 뮤텍스를 파괴하여 경쟁 조건을 제거합니다.",
  "rule.saqt.q.cpp.2788.name": "잠겨 있는 뮤텍스 파괴",
  "rule.saqt.q.cpp.2790.description": "저장 기간이 끝난 공유 객체 체커는 스레드간에 공유하는 객체의 저장 기간이 스레드 유지시간보다 짧은 경우를 검출합니다.\n저장 기간이 짧은 객체는 지역 변수등도 포함될 수 있습니다.\n실행 순서에 따라 하위 스레드에서 상위 스레드의 수명이 지난 지역 변수를 접근할 수 있습니다. 이 경우 잘못된 메모리 액세스가 발생할 수 있습니다. 다른 스레드에서 한 스레드의 지역 변수를 접근하는 것은 구현 정의 동작(Implementation Defined Behavior)입니다.\n저장 기간이 짧은 지역 변수 대신 프로그램이 종료되기 전까지 유지되는 정적 객체를 사용하도록 합니다.",
  "rule.saqt.q.cpp.2790.example.0.dangerous": "라인 9: 지역 변수를 스레드의 인자로 전달했습니다.",
  "rule.saqt.q.cpp.2790.example.0.safe": "라인 9: 지역 변수 대신 정적 변수를 전달하도록 합니다.",
  "rule.saqt.q.cpp.2790.name": "저장 기간이 끝난 공유 객체",
  "rule.saqt.q.cpp.2791.description": "데드락 발생 체커는 사전에 정의된 순서로 뮤텍스를 잠그지 않아 데드락이 발생하는 경우를 검출합니다.\n종종 뮤텍스를 잠그면 여러 스레드가 서로의 잠금을 유지하므로 프로그램이 교착 상태가 됩니다.\n사전에 정의된 순서로 뮤텍스를 잠그지 않으면 교착 상태(Deadlock)이 발생할 수 있습니다. 이와 같은 교착 상태는 여러 스레드가 진행되지 못하도록 만들어 프로그램 실행이 중지됩니다.\n뮤텍스의 잠금 순서를 데드락이 발생하지 않도록 순서를 잘 지켜 사용하도록 합니다.",
  "rule.saqt.q.cpp.2791.example.0.dangerous": "라인 24: 뮤텍스를 잠갔습니다.\n라인 29: 뮤텍스의 잠금 순서에 의해 데드락에 취약합니다. 상세한 내용은 CERT의 CON35-C 케이스를 참조하도록 합니다.",
  "rule.saqt.q.cpp.2791.example.0.safe": "라인 33: 미리 정의 된 순서를 설정하여 순환 대기 조건을 제거합니다.",
  "rule.saqt.q.cpp.2791.name": "데드락 발생",
  "rule.saqt.q.cpp.2792.description": "잘못된 조건 변수 사용 체커는 조건 변수를 잘못 사용하여 스레드 안정성과 유효성이 떨어지는 경우를 검출합니다.\n여기서 조건 변수를 잘못 사용한 경우는 스레드 블록을 풀기 위한 cnd_signal() 함수 등을 잘못 사용했을 때를 의미합니다.\n조건 변수를 잘못 사용했을 경우 무기한 차단이 발생할 수 있습니다.\n각 스레드별로 고유한 조건 변수를 사용하도록 합니다. 혹은 cnd_signal() 대신 cnd_broadcast() 함수를 사용하도록 합니다.",
  "rule.saqt.q.cpp.2792.example.0.dangerous": "라인 17: 특정 시나리오에서 무기한 차단이 발생할 수 있습니다. 상세한 내용은 CERT의 CON38-C 케이스를 참조하도록 합니다.",
  "rule.saqt.q.cpp.2792.example.0.safe": "라인 2: 각 스레드 별로 고유한 조건 변수를 사용합니다.\n라인 21: 각 스레드 별로 고유한 조건 변수를 사용합니다.",
  "rule.saqt.q.cpp.2792.name": "잘못된 조건 변수 사용",
  "rule.saqt.q.cpp.2804.description": "이미 소유한 포인터 체커는 이미 스마트 포인터에서 소유한 포인터를 다른 관련 없는 스마트 포인터에 저장하는 경우를 검출합니다.\n이미 스마트 포인터에서 소유한 포인터를 다른 관련없는 스마트 포인터에 저장할 경우 이중 해제 취약점이 발생할 수 있습니다. 예를 들어 첫 번째로 소유한 스마트 포인터의 소멸자가 호출되면 해당 포인터 역시 메모리에서 해제됩니다. 하지만 이 포인터를 다른 관련없는 스마트 포인터도 소유했을 경우 이 스마트 포인터의 소멸자가 호출될 때 메모리의 이중 해제 취약점이 발생합니다.\n이미 소유한 포인터는 관련없는 스마트 포인터에서 저장하지 않도록 합니다.",
  "rule.saqt.q.cpp.2804.example.0.dangerous": "라인 2: 동적 할당한 메모리를 i 변수에 저장했습니다.\n라인 3: p1 스마트 포인터에서 동적할당한 메모리인 i 변수를 소유했습니다.\n라인 4: p2 스마트 포인터에서 이미 소유한 메모리를 저장했습니다.",
  "rule.saqt.q.cpp.2804.example.0.safe": "라인 3: 동적 할당한 메모리는 하나의 스마트 포인터에서만 소유하도록 합니다.",
  "rule.saqt.q.cpp.2804.name": "이미 소유한 포인터",
  "rule.saqt.q.cpp.2805.description": "참조 타입에 volatile 한정자 사용 체커는 참조 타입 변수에 금지된 volatile 한정자를 사용하는 코드를 검출합니다.\nvolatile 참조 타입을 사용하면 정의되지 않은 동작이 발생하여 예상치 못한 값이 저장되고 데이터 무결성을 위반할 수 있습니다.\n참조 타입에 volatile 한정자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2805.example.0.dangerous": "라인 3: 참조 타입 변수 b에 volatile 한정자를 사용했습니다.",
  "rule.saqt.q.cpp.2805.example.0.safe": "라인 3: volatile 한정자가 있으므로 참조 타입을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.2805.name": "참조 타입에 volatile 한정자 사용",
  "rule.saqt.q.cpp.2806.description": "noreturn 으로 선언한 함수에서 반환 체커는 함수의 속성을 [[noreturn]] 으로 선언한 함수에서 반환 구문이 있는 경우를 검출합니다.\n이때 반환 구문은 명시적인 반환과 암시적인 반환 모두를 포함합니다.\n[[noreturn]] 속성으로 선언한 함수가 반환 구문을 가지는 것은 정의되지 않은 동작(Undefined Behaviour) 입니다. 또한 컴파일러에 따라 결과가 달라질 수 있습니다.\n[[noreturn]] 속성으로 선언한 함수에서는 반환 구문을 포함하지 않도록 합니다.",
  "rule.saqt.q.cpp.2806.example.0.dangerous": "라인 1: 함수를 [[noreturn]] 속성으로 선언했습니다.\n라인 5: i 가 0일 경우 라인 9에 도달할 수 있습니다.\n라인 9: 함수에서 반환 구문이 작성되었습니다. 만약 해당 구문을 명시적으로 작성하지 않았더라도 컴파일러는 암시적으로 반환 구문을 생성합니다.",
  "rule.saqt.q.cpp.2806.example.0.safe": "라인 5: 제어 흐름상 반환 구문이 생성되지 않도록 코드를 작성합니다.",
  "rule.saqt.q.cpp.2806.name": "noreturn 으로 선언한 함수에서 반환",
  "rule.saqt.q.cpp.2807.description": "배열을 다형성으로 취급 금지 체커는 객체의 동적 포인터 형식과 다른 정적 포인터 형식으로 할당하면 검출합니다.\n잘못된 타입의 포인터를 통해 배열을 삭제하면 정의되지 않은 동작(Undefined Behavior)이 발생할 수 있습니다.\n클래스 객체를 배열로 할당할 때는 선언한 클래스 타입 그대로 할당하도록 합니다. 만약 선언한 클래스 타입의 상속 클래스를 할당할 필요가 있을 경우 변수의 클래스 선언 타입을 바꾸도록 합니다.",
  "rule.saqt.q.cpp.2807.example.0.dangerous": "라인 17: Base형 포인터 변수 b에 Derived형 배열을 할당했습니다.\n라인 18: Base2형 포인터 변수 a에 Derived2형 배열을 할당했습니다.",
  "rule.saqt.q.cpp.2807.example.0.safe": "라인 17: Base형 포인터 변수 b에 같은 타입인 Base형 배열을 할당합니다.\n라인 18: Base2형 포인터 변수 a에 같은 타입인 Base형 배열을 할당합니다.",
  "rule.saqt.q.cpp.2807.name": "배열을 다형성으로 취급 금지",
  "rule.saqt.q.cpp.2808.description": "반복자에서 1보다 큰 값으로 증감 금지 체커는 반복문의 반복자에서 1보다 큰 상수값으로 증감 연산을 수행하는 코드를 검출합니다.\n배열을 가리킬 때 포인터가 마지막 인덱스를 지나치는 주소를 가리키는 표현을 할 수 있습니다. 반복자 형식 역시 마찬가지로 마지막 원소를 지나친 주소를 가리킬 수 있습니다.\n포인터나 임의 접근 반복자에 관해 가산하거나 감산하는 결과 값이 컨테이너 범위를 벗어나게 될 때에는 런타임 오류(Runtime Error)나 정의되지 않은 동작(Undefined Behavior)이 발생할 수 있습니다.\n2이상 가산 또는 감산하는 정수 타입의 표현식을 사용하지 않아야 합니다.",
  "rule.saqt.q.cpp.2808.example.0.dangerous": "라인 5: for문의 반복자 i가 2씩 증가했습니다.",
  "rule.saqt.q.cpp.2808.example.0.safe": "라인 5: for문의 반복자 i가 1씩 증가하도록 수정합니다.",
  "rule.saqt.q.cpp.2808.name": "반복자에서 1보다 큰 값으로 증감 금지",
  "rule.saqt.q.cpp.2809.description": "뮤텍스 unlock() 함수 예외 처리 없이 호출 금지 체커는 예외 처리 없이 뮤텍스 unlock() 함수를 호출하는 코드를 검출합니다.\n예외가 발생했을 때 뮤텍스가 잠긴 상태로 유지될 수 있습니다. 이 경우 잠긴 뮤텍스로 인해 프로그램이 정상적으로 동작하지 않게 될 수 있습니다.\n뮤텍스가 잠겨 있고 공유 리소스를 사용하는 공간에서 예외가 발생하더라도 뮤텍스의 잠금이 해제될 수 있게 해야 합니다. 예를 들어 예외를 처리하는 catch 구문 등에서 뮤텍스 잠금 해제 함수를 사용하는 방법이 있습니다.",
  "rule.saqt.q.cpp.2809.example.0.dangerous": "라인 3: mutex lock() 함수를 호출했습니다.\n라인 5: 예외 처리 없이 mutex unlock() 함수를 호출합니다.",
  "rule.saqt.q.cpp.2809.example.0.safe": "라인 3: mutex lock() 함수를 호출했습니다.\n라인 7: 예외 상황에서도 잠금을 해제할 수 있도록 mutex unlock() 함수를 호출합니다.",
  "rule.saqt.q.cpp.2809.name": "뮤텍스 unlock() 함수 예외 처리 없이 호출 금지",
  "rule.saqt.q.cpp.2810.description": "최대 크기 버퍼 사용 체커는 옵션에 지정된 경로 최대 크기보다 작은 크기의 버퍼를 사용하는 코드를 검출합니다.\n외부에서 경로를 받아 처리하는 realpath(), readlink(), PathAppend() 함수를 사용할 때 버퍼의 크기가 경로 최대 크기(MAX_PATH)보다 작은 경우를 검출합니다. 옵션에서 최소 버퍼 크기를 지정할 수 있습니다.\n부적절한 크기의 출력 버퍼를 경로 조작 기능에 전달하면 버퍼 오버플로우가 발생할 수 있습니다.\n버퍼의 크기를 경로 최대 크기(MAX_PATH)보다 크거나 같게 설정하도록 합니다.",
  "rule.saqt.q.cpp.2810.example.0.dangerous": "라인 3: 배열 temp의 크기가 255 입니다.\n라인 5: PathAppend() 함수의 첫 번째 인자 temp의 크기가 MAX_PATH보다 작으므로 버퍼 오버플로우가 발생할 수 있습니다.\n라인 6: realpath() 함수의 두 번째 인자 temp의 크기가 MAX_PATH보다 작으므로 버퍼 오버플로우가 발생할 수 있습니다.\n라인 7: readlink() 함수의 두 번째 인자 temp의 크기가 MAX_PATH보다 작으므로 버퍼 오버플로우가 발생할 수 있습니다.",
  "rule.saqt.q.cpp.2810.example.0.safe": "라인 3: 배열 temp의 크기가 256 입니다.\n라인 5: PathAppend() 함수의 첫 번째 인자 temp의 크기가 MAX_PATH와 같습니다.\n라인 6: realpath() 함수의 두 번째 인자 temp의 크기가 MAX_PATH와 같습니다.\n라인 7: readlink() 함수의 두 번째 인자 temp의 크기가 MAX_PATH와 같습니다.",
  "rule.saqt.q.cpp.2810.name": "최대 크기 버퍼 사용",
  "rule.saqt.q.cpp.2810.option.min_array_variable_size.description": "인자로 오는 배열의 최소 크기를 입력합니다.",
  "rule.saqt.q.cpp.2810.option.min_array_variable_size.name": "최소 배열 크기",
  "rule.saqt.q.cpp.3011.description": "bool 형식에 감소 연산자 사용 체커는 bool 형식의 변수에 감소 연산자('--')를 사용하는 경우를 검출합니다.\nbool 형식의 변수에 감소 연산자('--')를 사용하지 않도록 합니다. 이와 같은 방식은 더 이상 사용되지 않습니다.\nbool 형식의 변수에 감소 연산자를 사용하지 않습니다. 직접적인 참, 거짓을 대입하거나 toggle()이나 set(), clear() 같은 사용자 정의 함수를 만들어 사용하도록 합니다.",
  "rule.saqt.q.cpp.3011.example.0.dangerous": "라인 2: bool 타입의 변수에 감소 연산자를 사용했습니다.",
  "rule.saqt.q.cpp.3011.example.0.safe": "라인 2: 직접적으로 true, false를 대입합니다. 혹은 사용자 정의 함수를 만들어 사용할 수도 있습니다.",
  "rule.saqt.q.cpp.3011.name": "bool 형식에 감소 연산자 사용",
  "rule.saqt.q.cpp.345.description": "누락된 지역 변수의 초기화 체커는 초기화가 없는 변수 선언을 검출합니다.\n초기화되지 않은 값을 사용하는 경우 알아차리기 어려운 문제로 인해 런타임 오류가 발생 가능하므로 매우 치명적이라고 할 수 있습니다. 물론 변수의 선언과 동시에 초기화하지 않더라도 사용하기 직전에 초기화하면 문제는 발생하지 않습니다. 다만 복잡한 제어 흐름 속에서 초기화가 누락될 가능성이 있으므로 가장 좋은 방법은 선언과 동시에 초기화하는 것입니다.\n지역 변수 선언 시 반드시 동시에 초기화하도록 합니다.",
  "rule.saqt.q.cpp.345.example.0.dangerous": "라인 2: 초기화 없이 지역 변수를 선언했습니다.",
  "rule.saqt.q.cpp.345.example.0.safe": "라인 2: 지역 변수 선언과 동시에 초기화하도록 합니다.",
  "rule.saqt.q.cpp.345.name": "누락된 지역 변수의 초기화",
  "rule.saqt.q.cpp.345.option.ignored_variable_name.description": "검사 대상에서 제외할 변수 이름을 기록합니다.",
  "rule.saqt.q.cpp.345.option.ignored_variable_name.name": "검사 대상에서 제외할 변수 이름",
  "rule.saqt.q.cpp.345.option.skip_array_check.description": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.q.cpp.345.option.skip_array_check.name": "array의 초기화 여부를 검사하지 않습니다.",
  "rule.saqt.q.cpp.348.description": "헤더 파일에서 누락된 #define 체커는 파일의 시작과 끝에 인클루드 가드가 누락된 헤더를 검출합니다.\n인클루드 가드(Include Guard)는 전역적으로 사용하는 선언 등을 한 번만 수행할 수 있도록 헤더 파일을 전처리 구문으로 감싸는 것을 의미합니다.\n인클루드 가드를 사용하지 않는 경우 중복 선언으로 컴파일 오류가 발생할 수 있습니다.\n헤더 파일을 전처리 구문으로 감싸도록 합니다.",
  "rule.saqt.q.cpp.348.example.0.dangerous": "라인 2: #define 구문이 없습니다. 불완전한 인클루드 가드이므로 중복된 헤더 파일이 포함될 수 있습니다.",
  "rule.saqt.q.cpp.348.example.0.safe": "라인 1: 헤더 파일의 시작과 끝에서 인클루드 가드를 사용합니다.",
  "rule.saqt.q.cpp.348.name": "헤더 파일에서 누락된 #define",
  "rule.saqt.q.cpp.348.option.ignored_path.description": "검사 대상에서 제외할 경로 이름을 기록합니다.",
  "rule.saqt.q.cpp.348.option.ignored_path.name": "검사 대상에서 제외할 경로 이름",
  "rule.saqt.q.cpp.385.description": "문자열 비교로 인한 도달할 수 없는 코드 체커는 문자열 비교로 이루어진 조건문 체인에서 도달할 수 없는 조건문 본문을 검출합니다.\n도달할 수 없는 코드는 프로그램 흐름 상 불필요한 코드로 가독성을 떨어뜨리고 유지보수에 어려움을 줍니다. 또한 프로그램의 최적화를 위해서 해결해야 할 문제입니다.\n문자열 비교로 이루어진 조건문 체인에서 도달할 수 없는 경로가 발생하는 것은 비교 구문이 잘못되었을 가능성이 매우 높습니다. 비교 구문들을 점검하고 도달 불가능한 조건문 본문이 없게 조건을 변경하도록 합니다.",
  "rule.saqt.q.cpp.385.example.0.dangerous": "라인 1: str + 2 와 문자열 \"CD\"를 길이 2만큼 부분 비교 했습니다.\n라인 4: str 과 문자열 \"ABCDE\"를 길이 5만큼 부분 비교 했습니다. 하지만 이 조건은 라인1에서 항상 만족하므로 절대 도달할 수 없습니다.",
  "rule.saqt.q.cpp.385.example.0.safe": "라인 4: 도달할 수 있는 비교 구문을 작성하도록 합니다.",
  "rule.saqt.q.cpp.385.name": "문자열 비교로 인한 도달할 수 없는 코드",
  "rule.saqt.q.cpp.387.description": "음수에 대해 나머지 연산 체커는 모듈러 연산자의 피연산자로 음수를 사용하는 수식을 검출합니다.\n모듈러 연산에서 음수값을 피연산자로 사용하는 것은 구현 정의 동작(Implementation Defined Behavior)입니다. 즉, 컴파일러에 따라 결과가 달라질 수 있습니다.\n모듈러 연산의 피연산자로써 항상 양수를 사용하도록 합니다. 이러한 조건을 유지하기 위해 피연산자로 사용된 값이 0을 초과하는지를 검사합니다. 혹은 피연산자 타입을 unsigned로 선언하도록 합니다.",
  "rule.saqt.q.cpp.387.example.0.dangerous": "라인 3: size를 피연산자로 사용하여 모듈러 연산을 수행했습니다. 이 때 size 변수는 음수일 수 있습니다.",
  "rule.saqt.q.cpp.387.example.0.safe": "라인 1: 모듈러 연산에서 음수를 피연산자로 사용하지 않도록 size의 타입을 unsigned로 변경합니다.",
  "rule.saqt.q.cpp.387.name": "음수에 대해 나머지 연산",
  "rule.saqt.q.cpp.388.description": "부호가 없는 타입에 음수 할당 체커는 음수 값이 unsigned 로 변환되어 저장될 수 있는 수식을 검출합니다.\n큰 수를 표현하는 데이터형으로 값이 변환될 때 음수 값이 큰 양수 값으로 변환될 수 있습니다. 특히 음수 값을 unsigned 타입으로 복사하는 경우 잘못된 부호의 확장으로 엄청나게 큰 숫자가 발생할 수 있습니다.\n음수값이 큰 양수값으로 변환되지 않도록 부호 여부가 다른 객체 간 대입 시 조건을 잘 설정해야 합니다.",
  "rule.saqt.q.cpp.388.example.0.dangerous": "라인 6: s가 256보다 큰지를 비교했습니다.\n라인 7: s를 sz에 대입했습니다. 만약 s가 0보다 작았을 경우 sz의 타입은 unsigned 이므로 이 값이 커다란 양수값으로 변할 가능성이 있습니다.",
  "rule.saqt.q.cpp.388.example.0.safe": "라인 6: s가 0보다 작은지 비교하는 구문을 추가합니다.",
  "rule.saqt.q.cpp.388.name": "부호가 없는 타입에 음수 할당",
  "rule.saqt.q.cpp.42.description": "0으로 나누기 체커는 0으로 나누기를 수행하는 코드를 검출합니다.\n나누기는 0을 제수로 사용하는 것에 대해 정의되어 있지 않으므로 0으로 나누기 연산을 시도하면 CPU 수준에서 예외가 발생할 수 있습니다. 이로 인해 프로그램이 비정상적으로 종료되거나 DoS(Denial of Service)가 발생할 수 있습니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다.",
  "rule.saqt.q.cpp.42.example.0.dangerous": "라인 5: func 함수의 인자로 전달된 i가 10보다 크면 a에 random 함수의 반환값을 할당하게 됩니다.\n라인 8: 라인 4가 실행되지 않으면 값이 0인 a로 cnt를 나누어 오류가 발생할 수 있습니다.",
  "rule.saqt.q.cpp.42.example.0.safe": "라인 8: 값을 0으로 나누지 않기 위해 제수가 0 이상인지를 검사해야 합니다.",
  "rule.saqt.q.cpp.42.name": "0으로 나누기",
  "rule.saqt.q.cpp.43.description": "누락된 0으로 나누기 검사 체커는 나눗셈의 제수인 함수 인자 혹은 반환값을 이전에는 0 확인 후 사용했지만 이번에는 0 확인 없이 사용하는 코드를 검출합니다.\n나누기는 0을 제수로 사용하는 것에 대해 정의되어 있지 않으므로 0으로 나누기 연산을 시도하면 CPU 수준에서 예외가 발생할 수 있습니다. 이로 인해 프로그램이 비정상적으로 종료되거나 DoS(Denial of Service)가 발생할 수 있습니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다. 함수의 인자로 전달되거나 다른 함수에서 반환된 값은 0이 아니라고 확신할 수 없으므로 0인지 확인한 후에 나누기에 사용하는 것이 안전합니다.",
  "rule.saqt.q.cpp.43.example.0.dangerous": "라인 5: func 함수의 인자로 전달되는 i가 0이 아닌지를 검사했습니다.\n라인 9: 제수로 사용된 i 값이 0일 수 있기 때문에 오류가 발생할 수 있습니다.",
  "rule.saqt.q.cpp.43.example.0.safe": "라인 7: 정수형을 나눌 때 제수가 0이 될 경우를 고려하여 검사를 수행한 후에 실행합니다.",
  "rule.saqt.q.cpp.43.name": "누락된 0으로 나누기 검사",
  "rule.saqt.q.cpp.45.description": "지역 변수 주소 반환 체커는 지역 변수의 주소를 반환하는 코드를 검출합니다.\n지역 변수의 주소를 반환하면 일반적으로 의도하지 않은 동작이 발생하게 됩니다.\n버퍼를 반환할 때는 스택 영역에 할당되는 배열이 아닌 힙 영역에 할당되는 동적 할당 버퍼를 반환해야 합니다.",
  "rule.saqt.q.cpp.45.example.0.dangerous": "라인 2: arr은 test() 함수의 지역 변수입니다.\n라인 6: 지역 변수 arr의 주소를 반환하여 오류가 발생했습니다.",
  "rule.saqt.q.cpp.45.example.0.safe": "라인 2: arr를 동적으로 할당합니다.\n라인 6: 힙 메모리 영역에 할당된 버퍼를 반환합니다.",
  "rule.saqt.q.cpp.45.name": "지역 변수 주소 반환",
  "rule.saqt.q.cpp.46.description": "스택 메모리 해제 체커는 힙 영역이 아닌 스택 영역에 할당된 메모리를 해제하는 코드를 검출합니다.\n해당 오류는 주로 지역 변수의 주소를 해제하는 경우에 발생합니다.\n스택 영역의 메모리 주소를 해제하려고 하면 프로그램이 비정상적으로 종료될 수 있습니다.\n스택 영역이 아닌 힙 영역에 할당된 메모리를 해제해야 합니다.",
  "rule.saqt.q.cpp.46.example.0.dangerous": "라인 1: 지역 변수 arr을 선언했습니다.\n라인 2: arr 변수의 회수를 시도하지만, arr이 스택 영역에 할당되었으므로 오류가 발생합니다.",
  "rule.saqt.q.cpp.46.example.0.safe": "라인 1: arr를 동적 할당합니다.\n라인 2: arr은 힙 영역에 할당되었으므로 정상 해제됩니다.",
  "rule.saqt.q.cpp.46.name": "스택 메모리 해제",
  "rule.saqt.q.cpp.48.description": "누락된 반환 구문 체커는 반환 타입이 void가 아닌 함수 중 반환 구문이 포함되지 않는 함수를 검출합니다.\n이로 인해 의도하지 않은 동작이 발생할 수 있습니다.\n반환 타입이 void가 아닌 함수에는 반환 구문이 포함되어야 합니다.",
  "rule.saqt.q.cpp.48.example.0.dangerous": "라인 1: 함수의 반환 형식이 void가 아닙니다.\n라인 3: 함수 종료 전에 함수의 반환 구문을 작성하지 않았으므로 오류가 발생합니다.",
  "rule.saqt.q.cpp.48.example.0.safe": "라인 3: 함수의 반환 형식이 void가 아닌 경우에는 함수 종료 전에 반환 구문을 작성합니다.",
  "rule.saqt.q.cpp.48.name": "누락된 반환 구문",
  "rule.saqt.q.cpp.52.description": "겹치는 메모리 영역 체커는 함수에 겹치는 메모리 영역을 가리키는 다수의 인자를 전달하는 코드를 검출합니다.\n대상 함수는 다음과 같습니다. memccpy(), memcpy(), strcpy(), strncpy().\nmemccpy(), memcpy(), strcpy(), strncpy() 와 같은 함수는 restrict 포인터가 참조하는 소스 객체에서 대상 객체로 메모리를 복사하는 C 표준 라이브러리 함수입니다. 이 함수에서 다수의 인자가 서로 겹치는 메모리 영역을 사용하면 데이터 무결성을 손상시키거나 메모리 충돌을 발생시킬 수 있습니다.\nrestrict 포인터가 참조하는 소스 객체에서 대상 객체로 메모리를 복사하는 C 표준 라이브러리 함수를 사용할 때 다수의 인자에 겹치는 메모리 영역을 전달 받지 않아야 합니다.",
  "rule.saqt.q.cpp.52.example.0.dangerous": "라인 3: 문자열 포인터 p를 pt1에 할당했습니다.\n라인 5: pt1과 동일한 메모리 영역을 pt2에 할당했습니다.\n라인 6: pt1의 문자열 중 크기 4인 문자열을 pt2에 복사하려고 시도하지만 같은 메모리 영역을 사용하므로 문제가 발생했습니다.",
  "rule.saqt.q.cpp.52.example.0.safe": "라인 6: 메모리나 문자열을 복사할 때 memmove() 함수를 사용하면 메모리가 겹치지 않도록 방지할 수 있습니다.",
  "rule.saqt.q.cpp.52.name": "겹치는 메모리 영역",
  "rule.saqt.q.cpp.60.description": "비트 폭을 초과하는 시프트 체커는 대상 타입의 비트 크기보다 크게 시프트 연산자(>>, <<)를 적용하는 코드를 검출합니다.\n프로그램을 수행하는 도중 오류가 발생하여 예상하지 못한 결과가 발생할 수 있습니다. 또한 이차적으로 버퍼 오버플로우 또는 언더플로우를 발생시켜 보안 상 위협에 노출될 수 있습니다.\n대상 타입의 크기보다 큰 시프트 연산을 수행하지 않도록 합니다.",
  "rule.saqt.q.cpp.60.example.0.dangerous": "라인 3: unsigned char 타입의 값을 8비트 만큼 시프트합니다. unsigned char는 8비트 밖에 표현하지 못하기 때문에 표현 한계를 넘어가게 됩니다.",
  "rule.saqt.q.cpp.60.example.0.safe": "라인 3: 변수형의 범위를 고려하여 시프트함으로써 문제를 해결합니다.",
  "rule.saqt.q.cpp.60.name": "비트 폭을 초과하는 시프트",
  "rule.saqt.q.cpp.61.description": "음수 값에 대해 시프트 체커는 음수 값에 시프트 연산자(>>, <<)를 적용하는 코드를 검출합니다.\n프로그램을 수행하는 도중 오류로 인해 예상하지 못한 결과가 발생할 수 있습니다. 또한 이차적으로 버퍼 오버플로우나 언더플로우를 발생시켜 보안 위협에 노출될 수 있습니다.\n음수 값에는 시프트 연산을 수행하지 않아야 합니다.",
  "rule.saqt.q.cpp.61.example.0.dangerous": "라인 4: int 타입의 변수 a에 음수로 왼쪽 시프트 연산을 수행하여 오류가 발생했습니다.",
  "rule.saqt.q.cpp.61.example.0.safe": "라인 4: 변수 타입의 범위를 고려하여 양의 정수만큼 시프트함으로써 문제를 해결합니다.",
  "rule.saqt.q.cpp.61.name": "음수 값에 대해 시프트",
  "rule.saqt.q.cpp.66.description": "부적절한 길이 인자의 값 체커는 함수에 길이를 정하는 인자의 값이 음수이거나 너무 큰 코드를 검출합니다.\n여기서 말하는 함수는 다음과 같습니다. alloca(), bcopy(), calloc(), malloc(), memccpy(), memcpy(), realloc(), strncpy(). 메모리 할당 함수에서 할당량을 표시하는 인자를 unsigned 정수형으로 전달하지 않는 경우를 검출하거나 외부 입력값을 검사하지 않고 덧셈이나 뺄셈을 통해서 계산하는 코드를 검출합니다.\n인자 값이 음수이거나 자료형의 범위를 벗어나는 경우 캐스트가 발생합니다. 그 결과 시스템은 예상하지 못한 메모리 주소 요청을 받게 됩니다. 이를 사용하여 공격자가 프로그램에 접근하여 흐름을 제어할 수 있게 되어 보안 위협을 받을 수 있습니다.\n함수의 길이를 정하는 인자의 값이 음수가 되거나 자료형의 값을 초과할 정도로 큰 값을 지정하지 않도록 주의해야 합니다.",
  "rule.saqt.q.cpp.66.example.0.dangerous": "라인 2: n이 음수로 초기화되었습니다.\n라인 3: malloc() 함수의 인자에 음수 값 또는 범위를 벗어난 수를 전달할 수 있는 가능성이 있습니다.",
  "rule.saqt.q.cpp.66.example.0.safe": "라인 2: 매개변수 n을 검사합니다.\n라인 3: 범위를 고려하여 길이 인자를 설정하도록 합니다. 외부 입력으로 길이를 설정할 때에도 입력 범위를 지정하는 것이 좋습니다.",
  "rule.saqt.q.cpp.66.name": "부적절한 길이 인자의 값",
  "rule.saqt.q.cpp.66.option.max_decision_point_number.description": "허용할 메모리 할당의 최대 크기를 설정합니다.",
  "rule.saqt.q.cpp.66.option.max_decision_point_number.name": "허용 메모리 최대 크기",
  "rule.saqt.q.cpp.68.description": "쓸모없는 조건 체커는 항상 만족되거나 절대로 만족될 수 없는 조건식을 사용하는 코드를 검출합니다.\n항상 true이거나 false인 조건식은 불필요한 코드입니다. 조건식이 항상 true라면 항상 실행될 것이므로 조건이 필요하지 않고, 항상 false라면 도달할 수 없는 코드가 존재하게 됩니다. 이러한 불필요한 코드는 프로그램의 흐름을 혼란스럽게 하고 불필요한 메모리를 차지하게 만듭니다.\n조건식을 실수로 잘못 작성했다면 수정해야 합니다. 혹은 조건부로 실행되도록 작성한 코드가 실제로는 항상 실행되거나 혹은 절대로 실행되지 않는 코드일 수 있습니다. 이러한 경우 조건문이나 해당 코드 전체를 삭제합니다.",
  "rule.saqt.q.cpp.68.example.0.dangerous": "라인 8: foo() 함수에서 1을 반환하여 x 변수에 1을 할당했습니다.\n라인 9: foo2() 함수에서 0을 반환하여 y 변수에 0을 할당했습니다.\n라인 10: 여기서 x는 항상 1이고 y는 항상 0이므로 조건식은 항상 true입니다.",
  "rule.saqt.q.cpp.68.example.0.safe": "라인 10: 코드가 조건부로 실행되지 않으므로 조건문을 삭제하여 항상 실행되는 코드로 수정합니다.",
  "rule.saqt.q.cpp.68.name": "쓸모없는 조건",
  "rule.saqt.q.cpp.70.description": "도달할 수 없는 코드 체커는 어떠한 경우에도 도달할 수 없는 코드 블록을 검출합니다.\n구문을 제거하더라도 프로그램 출력에 영향을 미치지 않는 코드는 중복 코드로써 불필요합니다. 해당 코드가 의도적인지 아니면 오류로 인해 발생했는지 여부는 검토자에게 명확하지 않습니다.\n도달할 수 없는 코드는 프로그램 흐름 상 불필요한 코드로 가독성을 떨어뜨리고 유지보수에 어려움을 줍니다. 또한 프로그램의 최적화를 위해서 해결해야 할 문제입니다.\n실행되지 않는 코드를 제거합니다.",
  "rule.saqt.q.cpp.70.example.0.dangerous": "라인 2: x=1로 설정했습니다.\n라인 3: switch-case 문에서 x=1이기 때문에 break;를 실행하고 종료했습니다.\n라인 6: printf() 함수를 실행하지 않으므로 오류로 검출되었습니다.",
  "rule.saqt.q.cpp.70.example.0.safe": "라인 5: switch-case 조건에 따라 printf() 함수가 동작하도록 수정합니다.",
  "rule.saqt.q.cpp.70.name": "도달할 수 없는 코드",
  "rule.saqt.q.cpp.71.description": "사용되지 않은 값 체커는 변수에 값을 할당한 후에 해당 변수를 실행 경로에서 사용하지 않는 코드를 검출합니다.\n구문을 제거하더라도 프로그램 출력에 영향을 미치지 않는 코드는 중복 코드로써 불필요합니다. 해당 코드가 의도적인지 아니면 오류로 인해 발생했는지 여부는 검토자에게 명확하지 않습니다.\n사용되지 않는 변수는 논리적인 오류이며 이러한 논리적인 오류는 소스 코드의 가독성을 떨어뜨리고 유지보수에 어려움을 줍니다. 따라서 사용되지 않는 변수를 삭제하는 것이 좋습니다.\n사용되지 않는 변수를 제거합니다.",
  "rule.saqt.q.cpp.71.example.0.dangerous": "라인 2: a를 2로 초기화했습니다.\n라인 4: a의 값이 다시 할당되지만 사용되지 않기 때문에 오류가 발생했습니다.",
  "rule.saqt.q.cpp.71.example.0.safe": "라인 9: 변수 a를 반환합니다. 사용하지 않던 a를 사용하도록 소스 코드를 수정합니다.",
  "rule.saqt.q.cpp.71.name": "사용되지 않은 값",
  "rule.saqt.q.cpp.73.description": "위험한 함수 포인터 형변환 체커는 서명이 충돌하거나 반환 타입이 다른 함수 포인터로 캐스팅되는 코드를 검출합니다.\n가변 인자 함수 포인터를 인자나 반환 타입이 다른 함수 포인터로 캐스팅하는 경우도 포함됩니다.\n함수와 함수 포인터의 서명이 다른 경우 컴파일러는 오류를 검출하지 않습니다. 하지만 이로 인해 프로그래머가 예상하지 못한 오작동이 발생할 수 있습니다.\n함수 포인터의 경우 서명과 타입이 동일하도록 캐스팅해야 합니다.",
  "rule.saqt.q.cpp.73.example.0.dangerous": "라인 5: int 타입의 함수 포인터 fp_foo2를 선언했습니다.\n라인 7: char 타입의 반환 함수 foo1을 int 타입의 함수 포인터로 캐스팅하므로 오류를 검출했습니다.",
  "rule.saqt.q.cpp.73.example.0.safe": "라인 5: char 타입의 함수 포인터 fp_foo2를 선언합니다.",
  "rule.saqt.q.cpp.73.name": "위험한 함수 포인터 형변환",
  "rule.saqt.q.cpp.7423.description": "함수의 블록 영역이나 이름 없는 네임스페이스 영역과 같이 제한된 가시성을 가지는 곳에서 선언된 구조체, 클래스, 열거형 및 타입 별칭과 같은 타입은 해당 번역 단위에서 사용되지 않으면 실질적으로 무의미한 코드가 됩니다.\n\n이러한 미사용 타입은 코드를 검토할 때 불필요한 선언인지, 실수로 누락된 것인지 모호하게 만들어 코드의 명확성을 해치고 잠재적인 유지보수 문제를 유발합니다.\n제한된 가시성을 가지는 곳에 선언된 타입은 해당 번역 단위 내에서 반드시 사용해야 합니다.\n\n사용 방식은 변수 선언, 함수 인자 또는 반환 타입으로 사용하거나 열거형의 경우 해당 열거자 중 하나라도 사용하면 사용으로 간주할 수 있습니다.",
  "rule.saqt.q.cpp.7423.example.0.dangerous": "라인 2, 4, 6: 제한된 가시성을 가지는 이름없는 네임스페이스 영역에서 각각의 타입이 한번도 사용되지 않았습니다.",
  "rule.saqt.q.cpp.7423.example.0.safe": "라인 2, 4, 6: 제한된 가시성을 가지는 이름없는 네임스페이스 영역에서 각각의 타입을 반드시 1번 이상 사용해야 합니다.\n라인 11: 열거형의 열거자만 사용되어도 EnumType를 사용한 것으로 간주합니다.",
  "rule.saqt.q.cpp.7423.name": "제한된 가시성 타입 미사용",
  "rule.saqt.q.cpp.7425.description": "이름 없는 네임스페이스나 정적으로 선언된 함수, 접근 범위가 제한된 클래스 메소드와 같이 제한된 가시성을 가지는 함수는 해당 번역 단위에서 사용되지 않으면 실질적으로 무의미한 코드가 됩니다.\n\n이러한 미사용 함수는 코드를 검토할 때 불필요한 선언인지, 실수로 누락된 것인지 모호하게 만들어 코드의 명확성을 해치고 잠재적인 유지보수 문제를 유발합니다.\n제한된 가시성을 가지는 함수는 해당 번역 단위 내에서 반드시 사용해야 합니다.\n\n사용 방식은 해당 함수를 명확하게 1번 이상 호출하는 것입니다. 단, 클래스의 특수 멤버 함수, 오버로딩 함수, 연산자 오버로딩 함수, 가상 함수를 오버라이딩한 멤버 함수, 또는 delete 키워드로 명시적으로 삭제한 함수는 검사 대상에서 제외합니다.",
  "rule.saqt.q.cpp.7425.example.0.dangerous": "라인 7: 클래스 내의 private 접근 제한을 가진 비가상 멤버 함수가 사용되지 않았습니다.",
  "rule.saqt.q.cpp.7425.example.0.safe": "라인 4: 클래스 내의 private 접근 제한을 가진 비가상 멤버 함수는 최소 1번 이상 사용되어야 합니다.",
  "rule.saqt.q.cpp.7425.name": "제한된 가시성 함수 미사용",
  "rule.saqt.q.cpp.7429.description": "동일한 변수 또는 함수와 같은 모든 엔터티(Entity)의 선언은 번역 단위 전체 및 시스템 전반에 걸쳐 동일한 타입을 가져야 합니다.\n\n구체적으로는 전역 범위의 변수 및 오버로드 되지 않은 함수가 검사 항목에 해당합니다. 만약 두 선언에서 동일한 변수나 함수를 서로 다른 타입으로 선언하였다면 정의되지 않은 동작(Undefined behavior)를 유발하여 예상치 못한 메모리 접근이나 데이터 손상을 초래할 수 있습니다.\n동일한 전역 변수 및 함수 선언과 정의에서 타입을 일치시켜야 합니다.\n\n다만 배열의 경우 요소 타입만 일치하면 크기 선언 유무나 값이 달라도 동일한 것으로 간주하며, 별칭으로 등록한 타입은 기본 타입이 같다면 마찬가지로 동일한 것으로 간주합니다.\n\n만약 동일한 식별자를 가진 함수가 있을 경우, 이 함수의 파라미터 타입이 다를 경우에는 오버로딩된 함수로 인식합니다. 이외에는 변수의 경우 선언 타입을, 함수의 경우 반환 타입이 동일해야 합니다.",
  "rule.saqt.q.cpp.7429.example.0.dangerous": "라인 7: 이전에 선언된 변수와 선언 타입이 일치하지 않습니다.\n라인 8: 이전에 선언된 함수와 반환 타입이 일치하지 않습니다.",
  "rule.saqt.q.cpp.7429.example.0.safe": "라인 7-8: 이전에 선언된 엔터티와 동일한 형식을 유지해야 합니다. 이때 동일한 기본 타입을 가졌다면 별칭을 사용하는 것은 허용됩니다.",
  "rule.saqt.q.cpp.7429.name": "전역 변수 및 함수 선언 타입 불일치",
  "rule.saqt.q.cpp.7431.description": "C++에서 변수와 함수와 같은 엔터티(Entity)에 내부 연결(Internal Linkage)을 부여할 때는 이름 없는 네임스페이스를 사용하는 것이 바람직합니다.\n\nstatic 키워드 역시 내부 연결을 부여하지만, 이러한 키워드는 클래스 멤버나 지역 변수 등 다양한 용도로 사용되어 개발자에게 혼동을 줄 수 있습니다. 또한, 이미 내부 연결을 가진 엔터티에 extern 키워드를 사용하는 것도 혼란을 초래합니다.\n\n따라서 적절하지 않은 위치에 static이나 extern과 같은 키워드를 사용하는 대신 이름 없는 네임스페이스를 사용하여 내부 연결을 명확하게 지정해야 합니다.\n내부 연결을 가지는 함수나 const가 아닌 변수가 static을 사용하거나 이름 없는 네임스페이스 안에서 extern 키워드를 사용하여 선언되었다면, 해당 엔터티를 이름 없는 네임스페이스 안에 키워드 없이 선언하도록 수정해야 합니다.\n\n이 방식으로 모든 엔터티의 내부 연결 지정 방법을 일관되게 유지하고 키워드의 다목적 사용으로 인한 혼란을 방지해야 합니다.\n\n단 constexpr이나 const로 선언된 변수는 기본적으로 내부 연결을 가지므로 이 규칙의 대상에서 제외되며, 익명 네임스페이스 안에 static 키워드로 선언한 경우는 링크 자체의 모호성을 발생시키지 않으므로 사용해도 무방하나, 가급적 지양하는 것이 좋습니다.",
  "rule.saqt.q.cpp.7431.example.0.dangerous": "라인 1: 내부 연결을 가지는 함수의 선언이 전역 범위에서 이루어졌습니다.\n라인 2: 내부 연결을 가지는 변수의 선언이 전역 범위에서 이루어졌습니다.\n라인 4: 내부 연결을 가지는 변수의 선언이 extern 키워드를 사용하여 서로 모순됩니다.",
  "rule.saqt.q.cpp.7431.example.0.safe": "라인 2-3: 내부 연결을 가지는 엔터티는 이름 없는 네임스페이스 안에 extern 과 같은 모순된 키워드 없이 선언해야 합니다.\n라인 5: const 변수의 경우 전역 범위에서 static 으로 선언하는 것을 허용합니다.",
  "rule.saqt.q.cpp.7431.name": "내부 연결 엔터티의 부적절한 키워드 사용",
  "rule.saqt.q.cpp.7448.description": "반환 타입이 참조나 포인터인 멤버 함수가 객체 자신(this 또는 \\*this) 혹은 참조가 아닌 필드를 반환할 때, 이 함수가 임시 객체에서 호출되면 댕글링 포인터(Dangling pointer)에 의해 잘못된 메모리 접근이 발생할 수 있습니다.\n\n왜냐하면 임시 객체는 함수 호출이 끝난 문장에서 바로 소멸되므로, 반환된 참조나 포인터는 유효하지 않은 메모리를 가리키기 때문입니다.\n\nC++11 표준에서는 멤버 함수에 참조 한정자(Ref-qualifier)를 지정하여 이러한 위험을 방지할 수 있습니다.\n이것은 함수 선언부 끝에 & 한정자를 && 한정자를 붙여 함수의 호출을 lvalue 객체, 혹은 rvalue 객체로만 한정할 수 있는 기능을 제공합니다.\n\n여기어 이야기 하는 lvalue 객체는 일반적인 이름이 붙은 객체를 의미하며, rvalue 객체는 임시 객체를 의미합니다. 예를 들어 만약 & 한정자를 사용하여 참조 한정 멤버 함수를 선언했다면, 이 함수는 lvalue 객체에서만 호출할 수 있으며 임시 객체 호출시 컴파일 시점에서 오류를 발생시켜 줍니다.\n반환 타입이 참조나 포인터이면서 객체 자신(this 또는 \\*this) 혹은 참조가 아닌 필드를 반환하는 멤버 함수는 적절한 참조 한정자를 명시해야 합니다.\n\n가장 일반적인 해결책은 함수 선언부 끝에 & 한정자를 추가하여 lvalue 객체에서만 호출하도록 제한하는 것입니다. 만약 const& 한정자를 사용해야 한다면 동일한 시그니처를 가지는 && 한정 오버로딩 함수를 함께 선언해야 합니다.\n\n왜냐하면 const& 한정자는 lvalue와 rvalue 모두에 바인딩될 수 있기 때문에, 더 나은 선택인 && 한정 멤버 함수가 없다면 컴파일러가 임시 객체에서 이 const& 함수를 호출하기 때문입니다.",
  "rule.saqt.q.cpp.7448.example.0.dangerous": "라인 3, 4: this 및 필드 객체를 리턴하는 멤버 함수의 참조 한정자가 없습니다.\n라인 5: this 객체를 리턴하는 멤버 함수가 && 한정 오버로딩 함수 없이 const & 참조 한정으로 정의되었습니다.",
  "rule.saqt.q.cpp.7448.example.0.safe": "라인 3, 4: this 및 필드 객체를 리턴하는 멤버 함수를 참조 한정으로 정의해야 합니다.\n라인 6: const & 한정 멤버 함수와 동일한 시그니처를 가진 && 한정 오버로딩 함수를 선언해야 합니다.",
  "rule.saqt.q.cpp.7448.name": "참조 반환 멤버 함수의 부적절한 한정자",
  "rule.saqt.q.cpp.7450.description": "C++11 이후부터 널 포인터 상수를 표현할 때 nullptr 키워드를 사용할 수 있습니다. 기존에 많이 사용하던 0 이나 NULL 매크로는 int 타입으로 취급되며, 이로 인해 함수 오버로딩 과정에서 포인터가 아닌 정수 타입 함수가 호출될 수 있습니다.  따라서 C++에서는 포인터와 관련된 문맥에서 nullptr을 사용하는 것이 좋습니다.\n널 포인터 상수가 필요한 모든 곳에 0 이나 NULL 매크로 대신 nullptr을 사용해야 합니다. 또한 NULL 매크로를 포인터와 관련 없는 문맥에 사용하는 것도 금지합니다.",
  "rule.saqt.q.cpp.7450.example.0.dangerous": "라인 8-9: 널 포인터 상수로 nullptr을 사용하지 않았습니다.\n라인 10: 포인터와 관련 없는 문맥에서 NULL 매크로를 사용했습니다.",
  "rule.saqt.q.cpp.7450.example.0.safe": "라인 8-9: 널 포인터 상수로 nullptr을 사용해야 합니다.\n라인 10: 포인터와 관련 없는 문맥에서는 정수 0을 사용해야 합니다.",
  "rule.saqt.q.cpp.7450.name": "nullptr 미사용",
  "rule.saqt.q.cpp.7451.description": "멤버 함수 내에서 람다를 정의할 때, 캡처 목록에 기본 복사 캡처인 [=] 또는 기본 참조 캡처인 [&]를 사용하고 람다 본문에서 멤버 변수에 접근하면 해당 변수가 아닌 this 포인터가 암시적으로 캡처됩니다.\n\n이 람다가 변수에 저장되거나 반환되는 등 즉시 실행되지 않는 비-일시적(Non-transient) 람다일 경우, 람다가 속한 객체보다 오래 살아남을 수 있습니다.\n\n만약 객체가 소멸된 후에 이 람다가 호출되면, 암시적으로 캡처된 this 포인터는 댕글링 포인터가 되어 정의되지 않은 동작(Undefined behavior)을 유발합니다.\n람다 본문에서 멤버 변수에 접근하면서 [=] 또는 [&] 같은 기본 캡처 모드를 사용하지 않아야 합니다. 만약 코드 작성 시 this 포인터가 필요한 경우엔 [this]라고 캡처 목록에 정확히 명시해야 합니다. \n\n또는 C++17 이상의 표준을 지원하는 컴파일러를 쓰고 있다면 [self = \\*this]와 같이 객체 자체를 복사 캡처하여 원본 객체의 생명주기로부터 분리하는 안전한 방법을 사용할 수 있습니다.",
  "rule.saqt.q.cpp.7451.example.0.dangerous": "라인 4-5: 람다 본문에서 현재 클래스의 멤버 변수를 사용했기 때문에 기본 캡처가 this 포인터를 암시적으로 캡처했습니다.",
  "rule.saqt.q.cpp.7451.example.0.safe": "라인 4: 현재 클래스의 멤버 변수 사용이 필요하다면 명시적으로 this 포인터를 캡처해야 합니다.\n라인 5: 혹은 람다 함수를 일시적 람다로 만들어 잠재적인 댕글링 포인터 위험 없이 사용할 수 있습니다.",
  "rule.saqt.q.cpp.7451.name": "람다의 암시적 this 캡처",
  "rule.saqt.q.cpp.7452.description": "캡처 목록에 기본 복사 캡처인 [=] 나 기본 참조 캡처인 [&]를 사용하면 람다 본문에서 사용하는 외부 지역 변수들이 암시적으로 캡처됩니다.\n\n이 람다가 변수에 저장되거나 반환되는 등 즉시 실행되지 않는 비-일시적(non-transient) 람다일 경우, 람다가 어떤 변수에 의존하는지 명확히 드러나지 않습니다.\n\n특히 [&]는 람다가 캡처된 변수의 생명주기보다 오래 살아남아 소멸된 객체에 대한 참조를 유발할 수 있습니다.\n람다 본문에서 외부 변수를 접근한다면 [=] 또는 [&] 와 같은 기본 캡처를 사용하지 않아야 합니다. 가장 권장되는 방식은 람다 본문에서 사용하는 모든 외부 변수를 캡처 목록에 명시적으로 나열하는 것입니다.\n\n예를 들어 val 과 min 변수를 참조한다면 [&val, &min] 과 같이 지정하고, 복사한다면 [val, min] 과 같이 지정해야 합니다.",
  "rule.saqt.q.cpp.7452.example.0.dangerous": "라인 2: 비 일시적 람다에 기본 캡처를 사용했습니다.",
  "rule.saqt.q.cpp.7452.example.0.safe": "라인 2: 람다 본문에서 사용하는 외부 변수를 명시적으로 캡처해야 합니다.\n라인 8: 혹은 일시적 람다를 사용하여, 소멸된 객체를 참조할 잠재적인 위험을 피할 수 있습니다.",
  "rule.saqt.q.cpp.7452.name": "비 일시적 람다의 기본 캡처 사용",
  "rule.saqt.q.cpp.7453.description": "reinterpret_cast는 C++에서 가장 위험한 타입 변환 연산자입니다. 이 연산자는 값의 실제 내용을 변환하지 않고, 단지 A 타입을 B 타입인 것처럼 강제로 취급하라고 컴파일러에게 지시합니다. 예를 들어 float 타입 변수를 int 타입인 것처럼 강제로 다루게 만듭니다. \n\n이렇게 서로 관련 없는 타입 간의 강제 변환은 메모리 접근 규칙을 위반하여 예측 불가능한 결과나 크래시를 유발하는 정의되지 않은 동작(Undefined behavior)으로 이어집니다.\nreinterpret_cast의 사용을 원칙적으로 금지해야 합니다. 타입 간의 안전한 변환이 필요하다면 각각의 용도에 따라 준비된 static_cast, dynamic_cast, const_cast를 사용하는 것이 좋습니다.\n\n다만, 객체의 메모리 내용을 바이트 단위로 검사하기 위해 포인터를 void*, char*, unsigned char*, std::byte* 타입으로 변환하거나, 포인터의 주소 값 자체를 저장 하기 위해 std::uintptr_t 와 같이 충분한 크기를 가진 정수 타입으로 변환하는 경우 reinterpret_cast 사용이 허용됩니다.",
  "rule.saqt.q.cpp.7453.example.0.dangerous": "라인 3: reinterpret_cast를 사용하여 uint32_t* 를 허용되지 않는 uint16_t* 타입으로 변환했습니다.",
  "rule.saqt.q.cpp.7453.example.0.safe": "라인 5-6: reinterpret_cast는 규칙에서 허용하는 예외 타입으로만 변환해야 합니다.",
  "rule.saqt.q.cpp.7453.name": "reinterpret_cast 사용",
  "rule.saqt.q.cpp.7462.description": "typeid 연산자는 타입 정보를 얻기 위해 사용되는 키워드 입니다. \n\n이때 이 연산자의 피연산자가 다형성 클래스 타입의 객체일 경우 런타임 평가 여부가 불분명해집니다. 이로 인해 표현식 내의 잠재적인 부수 효과(Side effect)가 발생할지 예측하기 어렵습니다. 혹은 피연산자가 널 포인터 역참조와 같이 유효하지 않은 다형성 객체를 가리킬 때 std::bad_typeid 예외가 발생할 수 있습니다.\n\n이러한 런타임 동작의 불확실성과 예외 발생 가능성은 프로그램의 신뢰성을 저하 시킬 수 있습니다.\ntypeid 연산자를 사용할 때 피연산자로 다형성 클래스 타입의 표현식을 직접 사용하지 않아야 합니다. 만약 타입의 정적 정보가 필요한 경우 표현식 대신 타입 자체를 피연산자로 사용하는 것이 좋습니다.\n\n예를 들어 typeid(*p) 대신 typeid(ClassType)와 같이 명시적인 타입을 사용하는 것입니다.",
  "rule.saqt.q.cpp.7462.example.0.dangerous": "라인 9-10: typeid의 피연산자에 다형성 객체를 전달했습니다.",
  "rule.saqt.q.cpp.7462.example.0.safe": "라인 11-12: typeid에 전달하는 피연산자는 클래스명이거나 다형성 클래스가 아니어야 합니다.",
  "rule.saqt.q.cpp.7462.name": "typeid 연산자에 다형성 객체 사용",
  "rule.saqt.q.cpp.7463.description": "임의의 개수의 인자를 받는 가변 인자 함수는 C 언어의 POD(Plain Old Data) 타입만 안전하게 처리하도록 설계되었습니다. \n\n가변 인자에 가상 함수를 포함하거나, 명시적으로 복사/이동 생성자나 소멸자를 정의하거나, 이러한 요소를 포함한 클래스를 상속한 하위 클래스 유형을 가변 인자에 전달한다면 이것은 구현에 따라 정의된 동작(Implementation behavior) 에 해당합니다. \n\n이렇나 객체들은 전달 과정에서 복사 방식이나 소멸 시점이 컴파일러에 따라 달라질 수 있기 때문에 객체의 상태가 올바르게 전달되지 않거나, 메모리 문제가 발생하여 프로그램의 신뢰성을 저하 시킬 수 있습니다.\n가변 인자에는 앞서 언급한 적절하지 않은 클래스 유형을 가진 객체를 직접 전달하지 않아야 합니다. 가변 인자에는 원시 타입이나 POD 타입만 전달해야 하며, 위와 같은 C++ 객체를 가변 인자 처럼 전달하고 싶으면 C++ 템플릿의 가변 인자 템플릿(Variadic template)을 사용하는 것이 좋습니다.",
  "rule.saqt.q.cpp.7463.example.0.dangerous": "라인 8: 표준 라이브러리인 printf 함수의 가변 인자에 부적절한 클래스 타입을 가지는 객체를 전달했습니다.\n라인 9: 자체적으로 선언한 log 함수의 가변 인자에 부적절한 클래스 타입을 가지는 객체를 전달했습니다.",
  "rule.saqt.q.cpp.7463.example.0.safe": "라인 11: 가변 인자에 전달하는 값을 원시 타입이나 POD 타입으로 변환하여 안전하게 전달해야 합니다.\n라인 12: 혹은 C++의 가변 인자 템플릿을 사용하여 C 스타일의 가변 인자를 사용하지 않는 함수를 정의해서 사용해야 합니다.",
  "rule.saqt.q.cpp.7463.name": "가변 인자에 부적절한 객체 전달",
  "rule.saqt.q.cpp.7464.description": "C++에서 단항 +연산자는 피연산자에 대해 아무런 연산을 수행하지 않는 것처럼 보일 때가 많습니다. \n\n하지만 이 연산자는 char 나 short와 같은 작은 정수 타입을 int로 변환하는 정수 승격(Integral promotion)을 유발합니다. 또한 함수 이름이나 람다 표현식에 사용될 경우, 해당 함수를 함수 포인터로 변환하는 역할을 하기도 합니다.\n\n이러한 동작은 개발자의 의도와 다를 수 있으며 코드의 가독성을 저해하는 요소가 될 수 있습니다. \n\n특히 x =+ 1과 같은 형태는 복합 대입 연산자 x += 1을 혼동한 결과일 수 있습니다.\n불필요한 단항 + 연산자를 제거해야 합니다. 단 특정 클래스에서 단항 + 연산자를 연산자 오버로딩 하여 사용한 경우는 제외합니다.",
  "rule.saqt.q.cpp.7464.example.0.dangerous": "라인 2, 5: 내장된 단항 + 연산자를 사용했습니다.",
  "rule.saqt.q.cpp.7464.example.0.safe": "라인 2: 정수 승격의 용도로 단항 + 연산자를 사용했다면 명시적인 static_cast 를 사용해야 합니다.\n라인 5: += 연산자를 혼동한 것이라면 올바른 이항 += 연산자를 사용해야 합니다.",
  "rule.saqt.q.cpp.7464.name": "내장된 단항 + 연산자 사용",
  "rule.saqt.q.cpp.7465.description": "함수형 표기법(Functional notation)을 사용하는 명시적 형변환은 타입 이름 뒤에 소괄호()나 중괄호{}가 오는 방식으로 구성되며 단독 구문으로 사용할 수 있습니다.\n\n다만 이것은 변수 선언이 아니라 임시 객체 생성을 의미합니다. 이 문법은 변수 이름이 누락된 선언과 매우 유사해 보여 개발자가 혼동하기 쉬우며, 생성된 임시 객체가 해당 라인이 끝나는 세미콜론 시점에 즉시 소멸하는 문제가 있습니다.\n\n만약 이것이 std::lock_guard와 같이 생성자에서 잠금을 획득하고 소멸자에서 해제하는 RAII(Resource Acquisition Is Initialization) 객체라면, 리소스가 의도한 블록 동안 유지되지 않고 즉시 해제되어 심각한 동시성 문제나 로직 오류를 유발합니다.\n해당 구문이 변수 선언을 의도했다면 타입과 초기화 인자 사이에 변수 이름을 명시해야 합니다. 이를 통해 객체의 생명주기를 현재 블록의 끝까지 연장하여 리소스가 안전하게 보호되도록 해야 합니다. \n\n단순히 타입 변환이 목적이었다면, 결과값이 버려지지 않도록 다른 변수에 대입하거나 함수 인자로 전달하는 등 의미 있는 곳에 사용해야 합니다. 기본적으로는 함수형 표기법을 사용하는 명시적 형변환은 단독 문장으로 구성하지 않는 것이 좋습니다.",
  "rule.saqt.q.cpp.7465.example.0.dangerous": "라인 6: 이름이 없는 변수 선언이 아닌 함수형 표기법으로 명시적 형변환을 수행했습니다. 임시 객체가 생성됩니다.",
  "rule.saqt.q.cpp.7465.example.0.safe": "라인 6: 명시적 형변환이 아닌 변수 선언이 될 수 있도록 변수명을 작성해야 합니다.",
  "rule.saqt.q.cpp.7465.name": "변수명 누락으로 인한 임시 객체 생성",
  "rule.saqt.q.cpp.7466.description": "범위 기반 for 문의 초기화 식 중 오른쪽에 위치한 수식은 내부적으로 auto&& 타입으로 추론되어 수명이 연장됩니다. \n\n하지만 이 수명 연장 규칙은 수식의 최종 결과물인 객체에만 적용되며, 수식 중간 과정에서 생성되었다가 사라지는 중간 임시 객체들에는 적용되지 않습니다. \n\n만약 초기화 식에 함수 호출이 2개 이상 연쇄적으로 포함되어 있고, 이 과정에서 임시 객체 호출이 존재한다면 최종 결과물이 이미 소멸된 중간 임시 객체의 내부를 참조하게 될 위험이 큽니다. 이는 루프가 실행되는 동안 유효하지 않은 메모리에 접근하는 정의되지 않은 동작(Undefined behavior)을 유발합니다.\n초기화 식 내부에서 사용된 복합적인 함수 호출 구문을 분리해야 합니다. for 문이 시작되기 전에 별도의 변수를 선언한 뒤 초기화 식의 전체 결과나 중간 단계의 임시 객체를 복사하여 저장하는 것이 안전합니다.\n\n혹은 컴파일러가 C++23 이상의 표준을 준수하는지 확인하도록 합니다. 해당 표준을 준수하는 컴파일러는 C++ 표준 및 언어 차원에서 범위 기반 for 문의 초기화 식 수명 문제를 해결하고 있습니다.",
  "rule.saqt.q.cpp.7466.example.0.dangerous": "라인 7: 범위 기반 for문의 초기화 식 내에서 2개의 함수를 호출하여 임시 객체 수명 문제가 발생했습니다.",
  "rule.saqt.q.cpp.7466.example.0.safe": "라인 7: 임시 객체를 반환하는 함수 호출은 별도 변수로 저장해야 합니다.\n라인 8: 안전한 코드 작성을 위해, 임시 객체의 유무와 관계 없이 범위 기반 for 문 초기화 식에서 최대 1개의 함수만 호출해야 합니다.",
  "rule.saqt.q.cpp.7466.name": "범위 기반 for 문 초기화 식 내 다중 함수 호출",
  "rule.saqt.q.cpp.7467.description": "C++에서는 쉼표 연산자를 사용하여 하나의 구문 내에서 여러 개의 변수나 멤버 변수를 동시에 선언하는 것이 가능합니다. \n\n하지만 포인터나 참조자와 같은 파생 타입을 포함하는 선언문에서 이러한 방식은 각 식별자의 타입을 명확하게 파악하기 어렵게 만듭니다. \n\n예를 들어 정수형 포인터를 의도하고 작성한 구문이 실제로는 하나의 포인터와 하나의 일반 정수형 변수로 선언될 수 있습니다. 이는 개발자의 의도와 다른 타입이 적용되어 버그를 유발하거나, 코드의 가독성을 저해하여 유지보수를 어렵게 만드는 원인이 될 수 있습니다.\n변수나 멤버 변수를 선언할 때는 반드시 하나의 구문에 하나의 식별자만 선언하도록 코드를 분리해야 합니다.\n\n만약 여러 개의 변수가 필요하다면 쉼표 대신 세미콜론을 사용하여 선언문을 각각 나누어 작성해야 합니다. 단, C++17의 구조적 바인딩(Structured binding) 문법은 이 규칙의 예외로 간주하여 허용합니다.",
  "rule.saqt.q.cpp.7467.example.0.dangerous": "라인 2: 클래스 선언부에서 한 구문에 2개 이상의 멤버 변수를 선언했습니다.\n라인 6: 한 구문에 각각 포인터 및 정수 타입을 가지는 2개 이상의 변수를 선언했습니다.",
  "rule.saqt.q.cpp.7467.example.0.safe": "라인 2-3: 멤버 변수를 각각 별도의 구문으로 분리하여 명확하게 선언해야 합니다.\n라인 7-8: 변수를 각각 별도의 구문으로 분리하여 각 변수의 타입이 명확하게 드러나도록 선언해야 합니다.",
  "rule.saqt.q.cpp.7467.name": "단일 구문 내 다중 변수 선언",
  "rule.saqt.q.cpp.7468.description": "C++ 표준에서 volatile 한정자는 주로 메모리 맵 입출력(MMIO)과 같이 프로그램 외부 요인에 의해 값이 변경될 수 있는 대상을 위해 존재합니다. \n\n하지만 이를 지역 변수, 함수 매개변수, 반환 타입, 멤버 함수, 구조적 바인딩에 사용하는 것은 부적절합니다. 이러한 대상에 volatile 한정자를 사용하는 것은 주로 volatile 한정자가 멀티스레드 환경에서 데이터 경쟁을 예방할 수 있을 것이라는 기대에 의해 발생합니다. 하지만 이것은 오히려 컴파일러 최적화를 방해하거나 스레드 안정성을 보장한다고 착각하게 만듭니다.\n지역 변수, 함수 매개변수, 반환 타입, 멤버 함수, 구조적 바인딩 선언 등 부적절한 대상에 사용된 volatile 한정자를 제거해야 합니다. 만약 멀티스레드 환경에서 스레드 간 동기화나 가시성 확보가 목적이라면 volatile 대신 std::atomic이나 std::mutex와 같은 적절한 동기화 객체를 사용하는 것이 좋습니다.\n\n또한 예외적으로, 앞서 언급한 부적절한 대상의 선언 내에 volatile 한정자가 존재하더라도 포인터가 가리키는 대상에 적용하는 것은 허용합니다. 예를 들어 하드웨어 레지스터 접근을 위해 volatile int* 와 같이 타입 선언 중 * 키워드 좌측에 volatile 한정자를 사용할 수 있습니다.",
  "rule.saqt.q.cpp.7468.example.0.dangerous": "라인 3, 5, 6, 8, 12: 부적절한 대상에 volatile 한정자를 사용했습니다.",
  "rule.saqt.q.cpp.7468.example.0.safe": "라인 3, 5, 6, 8, 12: 변수 및 함수 선언 중 불필요한 volatile 한정자는 사용하지 않아야 합니다. 다만 포인터 타입일 경우 포인터가 가리키는 대상에 대해 volatile 한정자를 사용하는 것은 허용합니다.",
  "rule.saqt.q.cpp.7468.name": "부적절한 대상에 volatile 한정자 사용",
  "rule.saqt.q.cpp.7469.description": "열거형을 정의할 때 기반 타입(Underlying type)을 명시하지 않으면 컴파일러 구현체에 따라 크기와 부호가 달라질 수 있습니다. 범위가 지정되지 않은 열거형(enum)은 구현에 따라 타입이 결정되며, 범위가 지정된 열거형(enum class)은 암시적으로 int 타입을 가집니다. \n\n이러한 불확실성은 특히 열거자가 기본값을 사용하지 않을 때 문제가 커집니다. 이러한 작성 방식은 플랫폼 간 이식성을 저해하며, 모호한 크기 및 부호 문제로 연산 과정에서 예상치 못한 정수 오버플로우 위험을 초래할 수 있습니다.\n열거형 이름 뒤에 콜론(:)과 함께 명시적인 기반 타입을 작성해야 합니다. 예를 들어 int8_t 나 int32_t 와 같이 크기가 명확한 재정의된 타입을 지정하여 컴파일러 간의 차이를 없애야 합니다. \n\n단, 모든 열거자가 값을 명시하지 않고 0부터 시작하는 기본값을 그대로 사용하거나, extern “C” 블록 내에서 선언된 경우에는 기반 타입 지정을 생략할 수 있습니다.",
  "rule.saqt.q.cpp.7469.example.0.dangerous": "라인 3: 열거자에 기본값을 사용하지 않은 범위가 지정된 열거형을 기반 타입 없이 정의했습니다.\n라인 4:  열거자에 명시적인 값을 지정했습니다.\n라인 9: 열거자에 기본값을 사용하지 않은 범위가 지정되지 않은 열거형을 기반 타입 없이 정의했습니다.\n라인 10-12: 모든 열거자에 명시적인 값을 지정했습니다.",
  "rule.saqt.q.cpp.7469.example.0.safe": "라인 3: 열거자에 기본값을 사용하지 않은 열거형은 종류에 상관 없이 모두 기반 타입을 지정해야 합니다.\n라인 9-15: 만약 어떤 열거형 선언이 C언어와의 호환성이 필요하다면 extern “C” 블록 내부에 선언한 뒤 기반 타입을 생략할 수 있습니다.",
  "rule.saqt.q.cpp.7469.name": "열거형의 명시적 기반 타입 정의 누락",
  "rule.saqt.q.cpp.7470.description": "C++에서 범위가 지정되지 않은 열거형(enum)은 열거자의 이름이 열거형이 정의된 스코프로 유출되는 특성이 있습니다. 이는 동일한 스코프 내에 있는 같은 이름의 변수나 함수를 가리게 되어 개발자의 혼란을 초래하거나 이름 충돌 오류를 발생시킵니다. \n\n또한 이러한 열거형은 정수형으로 암시적 변환이 허용되어 타입 안정성을 떨어뜨리고 의도치 않은 연산 오류를 유발할 수 있습니다. 따라서 열거자의 유효 범위를 제한하고 강한 타입 안정성을 보장하는 방식이 필요합니다.\n열거형을 선언할 때 반드시 범위가 지정된 열거형(enum class)으로 정의해야 합니다.\n이를 통해 열거자 이름이 외부로 노출되는 것을 막고 EnumName::Value와 같이 열거형 타입 이름을 통해서만 접근하도록 제한해야 합니다. \n\n단, extern “C” 블록 내에 존재하여 하위 호환성 유지를 위해 정의한 열거형이나, 클래스 멤버로 선언하여 클래스 스코프에 의해 보호받는 열거형은 이 규칙의 예외로 인정되어 변경하지 않아도 됩니다.",
  "rule.saqt.q.cpp.7470.example.0.dangerous": "라인 4: 범위가 지정되지 않은 열거형을 선언했습니다.\n라인 9: 유출된 열거자로 인해 스코프 내에서 이름 충돌 현상이 발생합니다.",
  "rule.saqt.q.cpp.7470.example.0.safe": "라인 3: 열거형을 선언할 경우 범위가 지정된 열거형으로 선언해야 합니다.\n라인 9: 열거자의 이름이 스코프로 유출되지 않기 때문에 이름 충돌 현상이 발생하지 않았습니다.\n라인 11-18: 범위가 지정되지 않은 열거형이 클래스 내부에 선언되거나 extern “C” 블록에 포함된 경우는 예외적으로 허용합니다.",
  "rule.saqt.q.cpp.7470.name": "범위가 지정되지 않은 열거형 선언",
  "rule.saqt.q.cpp.7472.description": "C++에서는 가상 함수를 선언할 때 virtual, override, final 지정자를 사용할 수 있습니다. 하지만 이들을 중복해서 사용하거나, 재정의(Overriding) 상황에서 지정자를 누락하면 코드의 의도가 불분명해집니다. \n\n예를 들어 virtual과 override를 함께 쓰는 것은 중복이며, 재정의하는 함수에 override를 생략하면 기반 클래스의 함수 변경 시 의도치 않은 새 가상 함수 생성으로 이어질 수 있습니다.\n\n또한 override와 final을 같이 쓰는 것도 final이 이미 재정의를 내포하므로 불필요한 중복입니다. 따라서 각 상황에 맞는 단 하나의 지정자만을 사용하여 함수의 역할을 명확히 해야 합니다. \n\n이 규칙은 소멸자에도 동일하게 적용됩니다.\n함수의 역할에 따라 정확히 하나의 지정자만 사용해야 합니다. \n\n구체적으로, 새로운 가상 함수를 선언할 때는 virtual만 사용합니다. 부모 클래스의 가상 함수를 재정의할 때는 virtual이 아닌 override를 사용합니다. 만약 재정의와 동시에 더 이상의 재정의를 막으려면 final만 사용합니다. 이때 virtual이나 override를 중복해서 추가하지 않아야 합니다. \n\n이 외의 조합으로 지정자를 혼용하거나, 잘못된 지정자를 사용하거나, 재정의 시 필요한 지정자를 누락하는 것은 허용되지 않습니다.",
  "rule.saqt.q.cpp.7472.example.0.dangerous": "라인 5: 멤버 함수 선언에 virtual 과 final 지정자를 중복 사용했습니다.\n라인 12: 소멸자를 재정의 하였으나 가상 함수 필수 지정자가 누락되었습니다.\n라인 13: 멤버 함수를 재정의 하였으나 virtual 과 override 지정자를 중복 사용했습니다.\n라인 15: 멤버 함수를 재정의 하였으나 override 와 final 지정자를 중복 사용했습니다.\n라인 16: 멤버 함수를 재정의 하였으나 필수 지정자가 아닌 virtual 지정자를 사용했습니다.",
  "rule.saqt.q.cpp.7472.example.0.safe": "라인 5: 새로운 가상 함수 선언에는 반드시 virtual 지정자만 사용해야 합니다.\n라인 12: 부모 클래스의 가상 함수 재정의 시 반드시 필수 지정자를 명시해야 합니다.\n라인 13, 15, 16: 부모 클래스의 가상 함수 재정의시 역할에 따라 필수 지정자를 1개만 명시해야 합니다.",
  "rule.saqt.q.cpp.7472.name": "가상 함수 지정자의 부적절한 조합 및 누락",
  "rule.saqt.q.cpp.7473.description": "잠재적 가상 함수(Potentially virtual)란 멤버 함수 포인터가 실제 가상 함수를 가리키거나, 다형성 클래스의 멤버를 가리키거나, 혹은 정의가 덜 된 불완전한 클래스의 멤버를 가리키는 경우를 의미합니다. \n\n이때, 멤버 함수 포인터는 특정 함수의 주소를 가리키는 멤버 함수 주소 상수(&A::func)와 런타임에 여러 함수 주소를 담을 수 있는 멤버 함수 포인터 변수(void (A::*ptr)) 두가지 모두 해당됩니다.\n\nC++ 표준에 따르면, 이러한 잠재적 가상 함수 포인터를 nullptr이 아닌 다른 대상과 비교할 경우 그 결과는 명세되지 않은 동작(Unspecified behavior)이 됩니다. 이는 컴파일러가 가상 함수 테이블을 처리하는 방식에 따라 주소 비교 결과가 달라질 수 있기 때문입니다.\n가상 함수를 가리킬 가능성이 있는 멤버 함수 포인터는 오직 nullptr 과의 동등성 비교만 수행해야 합니다.\n\n만약 특정 함수와의 일치 여부를 확인해야 한다면, 멤버 함수 포인터 비교에 의존하지 않는 다른 설계 방식을 고려해야 합니다.",
  "rule.saqt.q.cpp.7473.example.0.dangerous": "라인 12: 명시적으로 가상 함수를 가리키고 있는 멤버 함수 주소 상수를 nullptr이 아닌 대상과 비교했습니다.\n라인 15: 잠재적 가상 함수인 다형성 클래스의 멤버 함수 포인터 변수를 nullptr이 아닌 대상과 비교했습니다.\n라인 18: 잠재적 가상 함수인 불완전한 클래스의 멤버 함수 포인터 변수를 nullptr이 아닌 대상과 비교했습니다.",
  "rule.saqt.q.cpp.7473.example.0.safe": "라인 15: 잠재적 가상 함수인 멤버 함수 포인터는 항상 nullptr로만 비교해야 합니다.\n라인 18: 만약 멤버 함수 포인터가 잠재적 가상 함수가 아닌 경우 nullptr이 아닌 다른 멤버 함수 포인터와 비교는 허용됩니다.",
  "rule.saqt.q.cpp.7473.name": "잠재적 가상 함수 포인터의 부적절한 비교",
  "rule.saqt.q.cpp.7474.description": "사용자가 직접 정의한 복사 생성자, 이동 생성자, 복사 대입 연산자, 이동 대입 연산자는 표준에서 권장하는 올바른 함수 서명을 가져야 합니다. \n\n구체적으로, 복사 연산은 원본 객체를 수정하지 않음을 보장하기 위해 const 참조를 사용해야 하며, 이동 연산은 예외 발생 시 객체 상태가 불분명해지는 것을 막기 위해 noexcept를 명시해야 합니다.\n\n또한 대입 연산자는 임시 객체에 대입하는 것을 막고 연쇄 대입을 지원하기 위해 참조 한정자(&)를 사용하고 자기 자신의 참조를 반환해야 합니다.  만약 이러한 대입 연산자에 참조 한정자가 없다면, 임시 객체에 대입 연산자를 호출했을 때 이후 댕글링 참조 위험이 발생할 수 있습니다.\n\n마지막으로 이러한 함수들은 가상 함수이거나 volatile 객체를 인자로 받아서는 안 됩니다.\n각 멤버 함수의 역할에 맞는 표준 서명을 정확히 사용해야 합니다. \n\n각각의 클래스에 대해 복사 생성자는 const 참조를 인자로 받는 형태여야 하며, 이동 생성자는 noexcept를 명시해야 합니다.  복사 대입 연산자는 const 참조 인자와 참조 한정자를 명시해야 하고, 이동 대입 연산자는 noexcept와 참조 한정자를 모두 명시해야 합니다. 대입 연산자의 반환 타입은 자기 자신의 참조형이 원칙이나 예외적으로 void 반환은 허용됩니다. 또한 해당하는 멤버 함수들은 모두 가상 함수로 선언하지 않아야 합니다.",
  "rule.saqt.q.cpp.7474.example.0.dangerous": "라인 4: 복사 및 이동 관련 멤버 함수에서는 volatile 사용이 금지되었으나, 복사 생성자의 첫번째 인자를 volatile 로 선언했습니다.\n라인 5: 이동 연산에서는 noexcept가 필요하나, 이동 생성자를 noexcept 없이 선언했습니다.\n라인 6: 대입 연산에서는 참조 한정자(&)가 필요하나, 복사 대입 연산자를 참조 한정자 없이 선언했습니다.\n라인 7: 복사 및 이동 관련 멤버 함수에서는 가상 선언이 금지되었으나, 이동 대입 연산자를 가상으로 선언했습니다.\n라인 13: 복사 및 이동 관련 멤버 함수에서는 기본값을 가지는 매개변수 사용이 금지되었으나, 복사 생성자에서 기본값을 가지는 매개변수를 사용했습니다.",
  "rule.saqt.q.cpp.7474.example.0.safe": "라인 4-7: 복사 및 이동 연산과 관련된 멤버 함수는 표준에서 권장하는 올바른 함수 서명을 가지도록 작성해야 합니다.\n라인 13: 복사 생성자는 기본 인수를 넣지 않고 표준 서명을 지켜야 합니다. 필요시 내부 위임 생성자를 만들어 사용하는 것이 좋습니다.\n라인 19: 대입 연산 관련 멤버 함수의 반환 타입은 예외적으로 void로 선언하는 것을 허용합니다.",
  "rule.saqt.q.cpp.7474.name": "부적절한 복사 및 이동 멤버 함수 서명",
  "rule.saqt.q.cpp.7476.description": "C++ 클래스에는 객체의 생성, 대입, 소멸을 담당하는 5가지 특수 멤버 함수(소멸자, 복사 생성자, 복사 대입 연산자, 이동 생성자, 이동 대입 연산자)가 있습니다. 이 함수들은 객체의 생명주기와 리소스 관리에 밀접하게 연관되어 있어 서로 유기적으로 동작해야 합니다. \n\n만약 개발자가 이 중 하나, 예를 들어 소멸자를 직접 정의했다는 것은 메모리나 파일 핸들 같은 리소스를 직접 관리한다는 의미입니다. 이때 나머지 함수들을 정의하지 않고 컴파일러 기본 설정에 맡기면, 얕은 복사(Shallow copy)로 인한 이중 해제(Double free)나 메모리 누수 같은 심각한 버그가 발생합니다. \n\n따라서 이 5가지 함수는 모두 정의하거나 아니면 아예 정의하지 않아야 합니다.\n리소스 관리가 필요 없는 클래스라면 5가지 특수 멤버 함수를 아예 선언하지 않거나 = default로 두어 컴파일러에게 맡기는 것이 가장 좋습니다.\n\n만약 소멸자를 직접 작성해야 한다면, 나머지 복사 및 이동 관련 생성자와 대입 연산자도 반드시 명시적으로 선언해야 합니다. 마찬가지로 복사 생성자나 대입 연산자를 정의했다면, 짝이 되는 이동 생성자와 이동 대입 연산자도 반드시 정의해야 합니다.\n\n이를 간단하게 정리하자면, 5가지 특수 멤버 함수를 하나라도 직접 작성해야 할 경우 나머지 멤버 함수도 모두 명시적으로 선언해야 한다는 것입니다. 이때 명시적인 선언은 직접 구현, 컴파일러 기본 동작을 사용하는 default 선언, 사용을 금지하는 delete 선언 3가지를 모두 포함합니다.",
  "rule.saqt.q.cpp.7476.example.0.dangerous": "라인 1: 클래스에서 소멸자를 정의했으나 나머지 4가지 멤버 함수를 정의하지 않았습니다.\n라인 6: 클래스에서 복사 생성자를 정의했으나 나머지 4가지 멤버 함수를 정의하지 않았습니다.\n라인 11: 클래스에서 이동 생성자와 이동 대입 연산자를 정의했으나 나머지 3가지 멤버 함수를 정의하지 않았습니다.",
  "rule.saqt.q.cpp.7476.example.0.safe": "라인 1: 클래스에서 어떤 특수 멤버 함수를 작성해야 할 경우 모두 명시적으로 선언해야 합니다.\n라인 10: 만약 클래스에서 특수 멤버 함수가 불필요할 경우, 모두 정의하지 않는 것은 허용합니다.",
  "rule.saqt.q.cpp.7476.name": "불완전한 특수 멤버 함수 정의",
  "rule.saqt.q.cpp.7477.description": "클래스 내에 std::initializer_list<T>를 첫 번째 인자로 받는 초기화 리스트 생성자(Initializer-list constructor)가 정의되어 있다면, 복사 및 이동 생성자를 제외한 다른 생성자는 정의되지 않아야 합니다. \n\nC++의 오버로딩 규칙상 중괄호를 사용한 초기화는 초기화 리스트 생성자를 최우선으로 선택합니다. 이로 인해 개발자가 일반 생성자 호출을 의도하여 중괄호를 사용했더라도 초기화 리스트 생성자가 호출되는 등, 초기화 방식에 따라 객체의 생성 결과가 달라지는 혼란이 발생합니다. 또한 기본 생성자가 함께 존재할 경우 빈 중괄호가 빈 리스트 초기화인지 기본 생성자 호출인지에 대한 혼동을 줄 수 있습니다.\n클래스에서 초기화 리스트 생성자를 제공해야 한다면, 해당 클래스에는 복사/이동 생성자를 제외한 다른 생성자가 없어야 합니다. 만약 다른 형태의 생성자가 반드시 필요하다면 초기화 리스트 생성자를 제거하거나, 생성자 대신 정적 팩토리 메서드(Static factory method) 패턴을 사용하여 초기화 의도를 명확히 분리해야 합니다. 혹은 데이터를 std::vector와 같은 표준 컨테이너로 받아 전달하는 방식을 고려할 수도 있습니다.",
  "rule.saqt.q.cpp.7477.example.0.dangerous": "라인 5: 초기화 리스트 생성자를 선언했습니다.\n라인 6: 초기화 리스트 생성자를 선언한 클래스에서 일반 생성자를 선언했습니다.\n라인 10-11: 초기화의 괄호 차이에 따라 다른 생성자가 호출되는 문제가 발생합니다. a1은 일반 생성자를 호출하고, a2는 초기화 리스트 생성자를 호출합니다.",
  "rule.saqt.q.cpp.7477.example.0.safe": "라인 5: 초기화 리스트 생성자를 선언했다면 클래스 내에서 다른 생성자를 선언하지 않아야 합니다.\n라인 6-7: 단, 생성자 중 복사 생성자와 이동 생성자는 초기화 리스트 생성자와 함께 존재해도 예외적으로 허용합니다.",
  "rule.saqt.q.cpp.7477.name": "초기화 리스트 생성자와 다른 생성자 혼용",
  "rule.saqt.q.cpp.7478.description": "프로그램의 안정성을 위해 예외가 발생하면 안 되는 특정 함수들은 반드시 noexcept로 선언되어야 합니다. \n\n예를 들어 이동 생성자와 이동 대입 연산자의 경우, 이들이 사용자에 의해 직접 구현되었을 때 noexcept가 누락되면 이동 연산 중 예외가 발생하여 표준 라이브러리 컨테이너의 동작이 정의되지 않거나 복구 불가능한 상태가 될 수 있습니다. \n\n또한 비지역 정적 변수(Non-local static variable)를 초기화하는 생성자가 사용자에 의해 직접 구현된 경우, 프로그램 시작 시점에 예외가 발생하면 즉시 강제 종료되므로 반드시 noexcept를 명시해야 합니다. \n\n이때, 비지역 정적 변수란 전역 변수, 네임스페이스 변수, 클래스 내부의 정적 멤버 변수 등 함수 외부 공간에 선언된 모든 정적 변수를 의미합니다. 함수 내부의 지역 정적 변수는 제외됩니다.\n예외 금지 함수들은 선언부에 noexcept 지정자를 명시해야 합니다. 이동 연산이나 비지역 정적 변수의 생성자를 직접 작성할 때는 내부 로직에서 예외를 던지지 않도록 구현하고, 함수 선언 뒤에 noexcept를 붙여 예외 안전성을 보장해야 합니다.\n\n만약 일부 비지역 정적 변수에서 호출되는 생성자의 명세를 바꿀 수 없다면, 대안으로 지역 정적 변수를 이용한 지연 초기화(Lazy initialization)를 사용하여 정적 변수의 초기화 시점을 함수 호출 시점으로 늦추는 방법을 사용할 수 있습니다.",
  "rule.saqt.q.cpp.7478.example.0.dangerous": "라인 3: noexcept 지정이 누락된 생성자 선언입니다.\n라인 8-9: 예외 발생시 치명적인 이동 생성자 및 이동 대입 연산자 선언에 noexcept 지정이 누락되었습니다.\n라인 14, 17, 20: 비지역 정적 변수를 선언 하였으나, 이 과정에서 호출되는 생성자의 선언에 noexcept 지정이 누락되었습니다.",
  "rule.saqt.q.cpp.7478.example.0.safe": "라인 5: noexcept 지정이 있는 생성자 선언입니다.\n라인 10-11: 이동 생성자 및 이동 대입 연산자는 선언시 noexcept 지정이 있어야 합니다.\n라인 16: 비지역 정적 변수 선언시 호출되는 생성자는 선언시 noexcept 지정이 있어야 합니다.\n라인 18: 만약 비지역 정적 변수가 필요하지만 생성자 명세를 변경하기 어려운 경우, 지역 정적 변수를 이용한 지연 초기화 방법을 사용하여 안전한 선언 방식으로 우회할 수 있습니다.",
  "rule.saqt.q.cpp.7478.name": "예외 금지 함수의 noexcept 지정 누락",
  "rule.saqt.q.cpp.7479.description": "noexcept 지정자가 명시된 함수, 혹은 소멸자와 같이 암시적으로 noexcept인 함수는 호출자에게 예외를 전달해서는 안 됩니다. \n\n만약 이러한 함수 내부에서 직접 throw를 하거나, 예외를 던지는 다른 함수를 호출한 뒤 이를 내부에서 catch하여 처리하지 않으면 이 예외는 외부로 전파됩니다. 하지만 noexcept로 지정된 함수에서 예외가 전파될 경우, C++ 런타임은 프로그램을 즉시 강제 종료합니다. 이는 리소스 누수 및 시스템의 비정상 종료로 이어질 수 있습니다.\nnoexcept 함수 내부에서 예외가 발생할 가능성이 있는 코드는 반드시 try-catch 블록으로 감싸서 함수 내부에서 예외를 완전히 처리해야 합니다. \n\n만약 예외를 외부로 전파해야 하는 설계라면 함수 선언에서 noexcept 지정자를 제거하거나 noexcept(false)로 변경해야 합니다. 단, 소멸자나 이동 연산 등은 noexcept를 유지하고 내부에서 예외를 완전히 처리하는 방식을 사용하는 것이 좋습니다.",
  "rule.saqt.q.cpp.7479.example.0.dangerous": "라인 3-5: noexcept가 지정된 함수 내부에서 throw 구문을 사용하여 예외가 밖으로 전파됩니다.\n라인 9-10: 암시적으로 noexcept 인 소멸자 내부에서 예외를 던지는 함수를 호출하여 예외가 밖으로 전파됩니다.",
  "rule.saqt.q.cpp.7479.example.0.safe": "라인 5-11: noexcept가 직간접적으로 지정된 함수에서는 반드시 내부에서 예외를 처리하여 외부 전파를 막아야 합니다.\n라인 12: 혹은 함수의 구현 상 예외를 전파하는 경우 noexcept 지정을 하지 않아야 합니다.",
  "rule.saqt.q.cpp.7479.name": "noexcept 함수 내부의 처리되지 않은 예외 전파",
  "rule.saqt.q.cpp.7482.description": "<cstring>, <cstdlib>, <cwchar>, <cinttypes> 및 이에 대응하는 C 헤더에서 제공하는 문자열 처리 함수들의 사용을 금지합니다. \n\n이러한 함수들은 널 종료 문자에 의존하거나 버퍼의 크기를 인자로 명시적으로 전달받지 않는 경우가 많아, 잘못 사용할 경우 버퍼 오버플로우와 같은 메모리 접근 오류를 유발하여 정의되지 않은 동작(Undefined behavior)을 초래할 수 있습니다. \n\n또한 일부 함수는 오류 상황을 errno 전역 변수에 의존하여 보고하는데, 이는 호출 흐름에 따라 값이 오염될 수 있어 신뢰하기 어려운 방식입니다.\nC 스타일 문자열 함수 대신 C++ 표준 라이브러리에서 제공하는 더 안전하고 현대적인 기능을 사용해야 합니다. \n\n문자열 복사나 조작이 필요한 경우 std::string 또는 std::string_view를 사용하여 메모리 관리와 경계 검사가 수행되도록 합니다. \n\n문자열과 숫자 간의 변환이 필요한 경우에도 strto* 계열 함수 대신 C++11의 std::lexical_cast 나 C+17의 std::from_chars 등을 활용하여 타입 안전성을 확보하는 것이 좋습니다.",
  "rule.saqt.q.cpp.7482.example.0.dangerous": "라인 5: 문자열 길이를 계산하는 C 스타일 함수를 사용했습니다.\n라인 6: 문자열을 복사하는 C 스타일 함수를 사용했습니다.",
  "rule.saqt.q.cpp.7482.example.0.safe": "라인 6-7: 기존 C스타일 문자열 처리 함수에 대응하는 C++ 스타일의 함수를 사용해야 합니다.\n라인 10: 혹은 이 예시의 경우 std::string 클래스를 사용하여 문자열 메모리 관리를 자동화하는 방안도 고려해 볼 수 있습니다.",
  "rule.saqt.q.cpp.7482.name": "금지된 C 스타일 문자열 처리 함수 사용",
  "rule.saqt.q.cpp.7483.description": "C++ 표준 라이브러리에서 제공하는 기본적인 동적 할당 연산자 이외의 고급 메모리 관리 기능 사용을 금지합니다. \n\n구체적으로 placement new 연산자 사용, 명시적인 소멸자 호출, uninitialized_copy와 같은 저수준 메모리 관리 함수 사용이 포함됩니다. 또한 클래스 내부에서 사용자 정의 operator new 및 delete를 연산자 오버로딩하여 직접 선언하는 것도 금지됩니다. \n\n이러한 기능들은 메모리 정렬, 객체 수명 관리, 포인터 세탁 등 복잡한 문제를 수반하여 정의되지 않은 동작(Undefined behavior)을 유발할 위험이 높습니다.\n앞서 명시한 기능의 사용, 금지된 함수 호출 및 메모리 관련 연산자 오버로딩을 사용하지 않아야 합니다. 고급 메모리 관리 기능의 사용은 최대한 줄이고, 보편적인 사용 방식이나 혹은 객체 수명 주기를 자동으로 관리하는 스마트 포인터의 사용을 고려해보기 바랍니다.",
  "rule.saqt.q.cpp.7483.example.0.dangerous": "라인 9: 클래스 내에서 메모리 관리 연산자 operator new 의 연산자 오버로딩이 선언되었습니다.\n라인 15: 클래스 객체 생성에 placement new 연산자를 사용했습니다.\n라인 16: 소멸자의 명시적인 호출이 이루어졌습니다.\n라인 21: 금지된 저수준 메모리 관리 함수를 사용했습니다.",
  "rule.saqt.q.cpp.7483.example.0.safe": "라인 11-13: 금지된 고급 메모리 관리 기능이 아닌 보편적인 메모리 관리 방식을 사용해야 합니다.",
  "rule.saqt.q.cpp.7483.name": "금지된 고급 메모리 관리 기능 사용",
  "rule.saqt.q.cpp.7484.description": "전역 operator delete를 재정의할 때는 크기 지정 버전과 크기 미지정 버전을 모두 구현하여 컴파일러가 어떤 버전을 호출하더라도 일관된 동작이 수행되도록 해야 합니다. \n\nC++에서는 operator delete를 사용자가 재정의하여 메모리 해제 동작을 변경할 수 있습니다. 다만 operator delete는 크기를 지정할 수 있는 버전과 없는 버전 2가지가 존재하며, 실제 코드 실행 시 어떤 버전이 호출될지는 컴파일러의 최적화 수준이나 C++ 버전 설정에 의해 자동으로 결정됩니다.\n\n이로 인해 만약 operator delete를 한 가지 버전만 재정의할 경우, 컴파일러의 선택에 따라 사용자가 커스터마이징한 해제 로직이 호출될 수도 있고, 시스템 기본 해제 함수가 호출될 수도 있는 불일치가 발생합니다. 이는 메모리 해제 과정에서 서로 다른 동작을 사용하게 되는 치명적인 오류로 이어질 수 있습니다.\n전역 operator delete를 재정의하려면 반드시 void* 매개변수 하나만 갖는 미지정 버전과, void* 및 std::size_t 두 개의 매개변수를 갖는 크기 지정 버전을 모두 정의해야 합니다. \n\n또한 두 함수는 내부적으로 동일한 메모리 해제 메커니즘을 수행하도록 구현하여, 컴파일러가 어떤 버전을 선택하여 호출하더라도 프로그램의 메모리 관리 동작이 일관되게 유지되도록 해야 합니다.",
  "rule.saqt.q.cpp.7484.example.0.dangerous": "라인 4-6: operator delete 연산자 재정의를 크기 미지정 버전만 정의했습니다.",
  "rule.saqt.q.cpp.7484.example.0.safe": "라인 4-9: operator delete 연산자를 재정의 해야 할 경우, 두 버전 모두 쌍으로 재정의 해야 합니다.",
  "rule.saqt.q.cpp.7484.name": "전역 operator delete 단독 정의",
  "rule.saqt.q.cpp.7485.description": "assert 매크로는 프로그램 실행 중에 발생하는 동적인 조건을 검사하기 위한 도구입니다. 따라서 이미 컴파일 타임에 결과가 정해져 있는 상수 표현식(Constant expression)을 assert의 인자로 전달하여 런타임에 검사하는 것은 비효율적이며, 빌드 설정에 따라 검사가 누락될 위험이 있습니다.  상수 조건은 컴파일 타임에 확실하게 검증해야 합니다.\n검사하려는 조건식이 상수 표현식이라면 assert 대신 C++11 표준의 static_assert를 사용해야 합니다. 이를 통해 런타임 오류가 아닌 컴파일 오류로 문제를 즉시 발견할 수 있습니다.\n\n예외적으로 assert(false)와 같이 실행 흐름이 도달 불가능한 경로(Unreachable code)를 명시하기 위해 관용구로서 사용하는 경우는 허용합니다.",
  "rule.saqt.q.cpp.7485.example.0.dangerous": "라인 4: assert 매크로에 상수 표현식을 인자로 전달했습니다.",
  "rule.saqt.q.cpp.7485.example.0.safe": "라인 4: 전달하는 인자가 상수 표현식인 경우 컴파일 타임에 연산이 이루어질 수 있도록 static_assert를 사용해야 합니다.\n라인 8: 예외적으로 도달 불가능한 경로를 표현하기 위해 assert 매크로에 상수 표현식을 사용하는 것은 허용합니다.",
  "rule.saqt.q.cpp.7485.name": "상수 표현식에 대한 assert 매크로 사용",
  "rule.saqt.q.cpp.7487.description": "<cctype>, <cwctype> 및 이에 대응하는 C 헤더에서 제공하는 문자 처리 함수들의 사용을 금지합니다. \n\n이 함수들은 int 타입의 인자를 받도록 설계되어 있어, unsigned char 범위나 EOF가 아닌 값이 전달될 경우 정의되지 않은 동작(Undefined behavior)을 유발할 수 있습니다. 특히 char 타입이 부호 있는 타입으로 처리되는 환경에서 음수 값이 인자로 전달될 때 치명적인 오류가 발생할 위험이 있습니다.\nC 스타일 문자 처리 함수 대신 C++ 표준 라이브러리의 <locale> 헤더에서 제공하는 함수를 사용해야 합니다. 로케일 객체를 인자로 받는 함수를 사용하면 모든 char 값에 대해 안전한 동작을 보장받을 수 있습니다.",
  "rule.saqt.q.cpp.7487.example.0.dangerous": "라인 4:  10진수 숫자인지 판별하는 C 스타일 함수를 사용했습니다.",
  "rule.saqt.q.cpp.7487.example.0.safe": "라인 4: 기존 C스타일 문자 처리 함수에 대응되는, <locale>에 선언된 C++ 스타일의 함수를 사용해야 합니다.",
  "rule.saqt.q.cpp.7487.name": "금지된 C 스타일 문자 처리 함수 사용",
  "rule.saqt.q.cpp.7488.description": "<cstring> 및 이에 대응하는 C 헤더에서 제공하는 memcpy, memmove, memcmp 함수의 사용을 금지합니다. \n\n메모리 복사 함수인 memcpy와 memmove는 C++ 객체의 생성자나 대입 연산자를 무시하고 단순 비트 복사만 수행하므로, 객체가 올바르게 복사되지 않을 위험이 큽니다. 특히 memcpy는 복사할 메모리 영역이 겹칠 경우 오동작할 수 있습니다. \n\n메모리 비교 함수인 memcmp는 객체의 논리적 값이 아닌 메모리에 저장된 비트 패턴을 비교합니다. 따라서 구조체 내부의 의미 없는 패딩값이나 부동 소수점의 표현 차이로 인해, 실제로는 같은 값임에도 다르다고 판단할 수 있습니다.\n메모리 복사가 필요한 경우 C++ 표준 알고리즘인 std::copy, std::copy_n 등을 사용하거나 객체의 대입 연산자를 사용해야 합니다. 이들은 객체의 타입 특성을 고려하여 안전하게 동작합니다. \n\n객체 간 비교가 필요한 경우 memcmp 대신 operator==를 오버로딩하여 멤버별로 명확하게 비교하거나, std::equal 알고리즘을 사용해야 합니다.",
  "rule.saqt.q.cpp.7488.example.0.dangerous": "라인 7: 메모리 공간을 복사하는 C 스타일 함수를 사용했습니다.\n라인 12: 메모리 공간을 비교하는 C 스타일 함수를 사용했습니다.",
  "rule.saqt.q.cpp.7488.example.0.safe": "라인 13, 17: 기존 C 스타일 메모리 조작 함수에 대응하는 C++ 스타일의 처리 방식을 사용해야 합니다.",
  "rule.saqt.q.cpp.7488.name": "금지된 C 스타일 메모리 조작 함수 사용",
  "rule.saqt.q.cpp.7489.description": "C++ 표준 라이브러리 알고리즘에 전달되는 술어(Predicate)는 부작용(Side effects)을 유발해서는 안 됩니다. \n\n표준 라이브러리 구현에 따라 술어는 여러 번 복사되거나 예측할 수 없는 순서로 호출될 수 있습니다. 만약 술어가 호출될 때마다 내부 상태를 변경하거나 외부 변수를 수정한다면, 복사본 간의 상태 불일치로 인해 잘못된 결과가 나오거나 정의되지 않은 동작(Undefined behavior)이 발생할 수 있습니다.  따라서 술어 정의시 최소한의 검토를 통해 안정성을 확보해야 합니다.\n알고리즘에 전달하는 술어는 순수 함수(Pure function)처럼 동작하도록 구현해야 합니다. \n\n함수 객체를 정의할 때는 operator()를 const 멤버 함수로 선언하여 상태 변경이 없음을 명시해야 합니다. 람다를 사용할 경우 캡처된 외부 변수를 수정하는 로직을 제거해야 합니다.",
  "rule.saqt.q.cpp.7489.example.0.dangerous": "라인 7: 술어로 사용될 가능성이 있는 operator() 연산자 오버로딩을 const 없이 선언했습니다.\n라인 16: 람다 함수 내부에서 참조로 캡처된 외부 변수의 값이 변경됩니다.",
  "rule.saqt.q.cpp.7489.example.0.safe": "라인 7: 술어로 사용될 가능성이 있는 operator() 연산자 오버로딩은 const로 선언해야 합니다.\n라인 15-16: 술어로 사용될 가능성이 있는 람다는 캡처된 데이터를 변경하지 않는 방식으로 코드를 재작성해야 합니다.",
  "rule.saqt.q.cpp.7489.name": "부작용을 가진 술어 사용",
  "rule.saqt.q.cpp.7490.description": "C++ 표준에 속한 move 함수는 const 가 아닌 lvalue 의 소유권을 이전하기 위해 사용되어야 합니다. \n\n여기서 lvalue(Left value) 란 이름을 가지고 있어 주소를 참조할 수 있고, 수식이 끝난 뒤에도 지속되는 객체를 의미합니다. 또한 이와 반대되는 의미로 rvalue(Right value) 가 있으며, 이것은 임시 객체와 같이 수식이 종료되면 즉시 소멸하는 값을 의미합니다. 이 과정에서 move 함수는 인자로 전달된 값을 이동 가능한 상태로(Rvalue reference) 변경하는 역할을 맡습니다.\n\n이때, 만약 move 함수의 인자로 const 객체가 전달되면 이동 대신 복사가 수행되어 의도한 효과를 얻을 수 없습니다. 이것은 이동이라는 동작 자체가 기존 값을 변경하는데, const 로 인해 변경이 불가능 하여 이동을 수행할 수 없기 때문입니다. 또한 인자로 이미 rvalue 인 값이 전달되면 어차피 move 함수 없이도 이동되므로 불필요한 중복 코드가 됩니다. 따라서 이러한 인자 전달은 API의 오용으로 간주됩니다.\nmove 함수의 인자에는 오로지 const 가 아닌 lvalue 만 전달해야 합니다.\n\n만약 인자가 const 객체라면 move 함수를 제거하여 복사됨을 명확히 하거나, 이동이 반드시 필요하다면 원본 객체의 const 한정자를 제거해야 합니다. \n\n또한 인자가 이미 임시 객체라면 컴파일러가 알아서 처리하므로 move 함수 호출을 제거하여 코드를 간결하게 만들어야 합니다.",
  "rule.saqt.q.cpp.7490.example.0.dangerous": "라인 11: move 함수의 인자에 const 객체를 전달했습니다. 이 경우 값을 복사하는 함수가 호출됩니다.\n라인 12: move 함수의 인자에 이미 rvalue인 객체를 전달했습니다. 이 경우 값을 이동하는 함수가 호출되나, move 함수의 유무와는 관계 없습니다.",
  "rule.saqt.q.cpp.7490.example.0.safe": "라인 11: move 함수에는 const 가 아닌 lvalue 를 전달해야 합니다. 이 경우 정상적으로 소유권이 이전되어 값을 이동하는 함수가 호출됩니다.\n라인 12: 임시 객체의 경우 move 함수 없이 그대로 전달해야 합니다. 이것은 자동으로 rvalue 로 취급되어 값을 이동하는 함수가 호출됩니다.",
  "rule.saqt.q.cpp.7490.name": "부적절한 move 함수 인자",
  "rule.saqt.q.cpp.7491.description": "템플릿 함수에서 타입 추론이 일어나는 T&& 형태의 매개변수를 전달 참조(Forwarding reference)라고 합니다. \n\n이러한 매개변수는 인자의 값 카테고리(lvalue/rvalue)와 상수성(const/volatile)을 그대로 보존하여 다른 함수로 넘겨주는 완벽한 전달(Perfect forwarding)을 구현하기 위해 사용됩니다.\n\n이를 위해서는 반드시 전달 참조 매개변수를 표준 C++의 forward 함수로 감싸서 전달해야 합니다. 만약 forward 함수를 사용하지 않으면, 전달 참조 변수 자체는 함수 내부에서 이름이 있는 lvalue로 취급되므로 원본이 rvalue였더라도 lvalue로 변환되어 전달됩니다. 이는 불필요한 복사를 유발하여 완벽한 전달을 깨뜨리게 됩니다. \n\n반대로 전달 참조가 아닌 일반 매개변수에 forward를 사용하는 것 또한 타입 추론의 의도에 맞지 않으므로 금지됩니다.\n템플릿 매개변수가 전달 참조로 선언되었다면, 해당 변수를 사용할 때 반드시 forward<T>(변수)를 사용하여 완벽한 전달을 수행해야 합니다. 반면 일반적인 rvalue 참조(구체적 타입의 &&)나 lvalue 참조에는 forward 대신 상황에 맞게 move를 쓰거나 그대로 전달해야 합니다.",
  "rule.saqt.q.cpp.7491.example.0.dangerous": "라인 11: 전달 참조 인자 t1을 forward 함수로 감싸지 않고 다른 함수에 그대로 전달했습니다.\n라인 12: 전달 참조 인자 t1을 move 함수로 잘못 감싸 다른 함수에 전달했습니다.\n라인 13: 비전달 참조 인자 t2를 forward 함수로 잘못 감싸 다른 함수에 전달했습니다.",
  "rule.saqt.q.cpp.7491.example.0.safe": "라인 11: 전달 참조 인자는 다른 함수의 인자로 전달시 forward 함수로 감싸야 합니다.\n라인 12: 비전달 참조 인자는 다른 함수의 인자로 전달시 그대로 전달해야 합니다.",
  "rule.saqt.q.cpp.7491.name": "전달 참조와 forward 함수 사용 불일치",
  "rule.saqt.q.cpp.7492.description": "C++ 표준 라이브러리의 컨테이너 변경 함수인 remove, remove_if, unique 등은 컨테이너의 요소를 실제로 삭제하는 것이 아니라, 조건을 만족하지 않는 요소들을 앞쪽으로 이동시키고 새로운 논리적 끝을 가리키는 반복자를 반환합니다. 따라서 이 반환값을 사용하여 erase 와 같은 멤버 함수를 통해 실제로 요소를 삭제하지 않으면 컨테이너 뒷부분에 유효하지 않은 데이터가 남게 됩니다. \n\n또한 컨테이너 상태 조회 함수인 empty 등은 컨테이너가 비었는지 확인할 뿐 내용을 비우는 함수가 아닙니다. 만약 empty 함수의 반환값을 무시하고 단독으로 호출하는 코드가 존재할 경우, 개발자가 해당 함수의 기능을 clear로 오해했을 가능성이 매우 높습니다.\n컨테이너 변경 함수의 반환값은 반드시 erase 멤버 함수의 인자로 전달하여 실제로 불필요한 요소를 컨테이너에서 삭제해야 합니다. \n\n컨테이너 상태 조회 함수의 경우 반환값을 조건문 등에서 사용하여 상태를 확인해야 하며, 만약 컨테이너를 비우려는 의도라면 empty 대신 clear 함수를 호출하도록 코드를 수정해야 합니다.",
  "rule.saqt.q.cpp.7492.example.0.dangerous": "라인 7: 컨테이너 변경 함수의 반환값을 사용하지 않았습니다.\n라인 8: 컨테이너 상태 조회 함수의 반환값을 사용하지 않았습니다.",
  "rule.saqt.q.cpp.7492.example.0.safe": "라인 7-8: 컨테이너 변경 및 조회 함수의 반환값은 반드시 사용해야 합니다.",
  "rule.saqt.q.cpp.7492.name": "컨테이너 변경 및 조회 함수 반환값 미사용",
  "rule.saqt.q.cpp.7494.description": "switch 구문은 여러 조건에 대한 로직 처리를 할 때 다수의 if-else 체인을 만드는 대신 사용할 수 있는 유용한 구문입니다. 하지만 이를 과용할 경우 구문이 제공하는 문법적 유연성으로 인해 오히려 복잡하고 비구조적인 코드를 유발할 수 있습니다. \n\n예를 들어 초기화 구문이 복잡하거나 라벨이 중첩된 블록 내부에 숨어있는 경우, 또는 분기가 명확하게 종료되지 않거나 default 라벨의 위치가 일관되지 않은 구조는 코드의 가독성을 심각하게 저해하고 의도치 않은 로직 오류로 이어질 수 있습니다. 이러한 코드는 개발자가 의도했거나 실제로 문제가 발생하지 않을 수 있지만 지나친 복잡성으로 인해 실수할 여지를 만들게 됩니다.\nswitch 구문의 구조를 단순하고 일관성 있게 유지하기 위해 구문 작성시 다음과 같은 작성 지침을 준수해야 합니다.\n\n대부분의 switch 구문 사용 방식인 조건만 사용하는 일반적인 형태는 허용되나, 만약 C++17의 초기화 구문을 함께 사용할 경우에는 반드시 단순 변수 선언(Simple Declaration) 형태여야 합니다. case와 default 라벨은 switch 본문의 가장 바깥쪽 레벨에 배치해야 합니다. \n\n실행 흐름이 다음 케이스로 넘어가지 않도록 각 분기의 끝에는 break 등을 사용하여 무조건적인 종료를 명시해야 합니다. 구체적으로 break, continue, return, throw, [[noreturn]] 속성을 가진 함수 호출, 의도된 경우 [[fallthrough]] 중 하나를 사용해야 합니다. 다만 실행 문장이 없는 연속된 case 라벨은 허용합니다.\n\n또한 방어적 프로그래밍을 위해 default 라벨을 반드시 작성하고, 이를 가장 처음이나 마지막 순서에 배치하여 가독성을 확보해야 합니다.\n\n마지막으로 switch 구문 사용시 최소 2개 이상의 실행경로가 존재해야 합니다.",
  "rule.saqt.q.cpp.7494.example.0.dangerous": "라인 5: switch의 C++17 초기화 구문에 단순 변수 선언이 아닌 수식이 사용되었습니다.\n라인 7: switch 구문에 default 라벨이 누락되었습니다.\n라인 8: switch 구문과 case 0 라벨 사이에 실행 불가능한 코드가 존재합니다.\n라인 11: case 2 라벨이 switch 본문의 최상위 레벨이 아닌 중첩된 블록 내부에 있습니다.\n라인 12: case 0 라벨에 해당하는 분기가 무조건적으로 종료되지 않았습니다.\n라인 16: case 10 라벨에 해당하는 분기가 무조건적으로 종료되지 않았으며, 다음 case 11 라벨에 연결됩니다.\n라인 21: default 라벨이 switch 본문의 가장 처음이나 마지막에 위치하지 않습니다.\n라인 23: case 12 라벨에 해당하는 분기가 무조건적으로 종료되지 않았습니다. program_exit() 함수가 그 역할일 수 있으나 [[noreturn]] 속성을 가지고 있지 않습니다.\n라인 26: switch 구문의 실행 경로가 2개 미만입니다.",
  "rule.saqt.q.cpp.7494.example.0.safe": "라인 4: switch의 C++17 초기화 구문 사용시 반드시 단순 변수 선언을 사용해야 합니다.\n라인 7: switch 구문은 최소 2개 이상의 실행 경로를 가지고, 실행 불가능한 코드를 포함하지 않아야 하고, 라벨을 올바른 위치에 포함시켜야 하며, default 구문을 반드시 포함해야 합니다.\n라인 8-11: 각 라벨별 분기는 무조건적인 종료가 이루어져야 합니다. 종료 방법은 break, return, throw, continue 를 사용할 수 있습니다.\n라인 12: 함수에 의한 무조건적인 종료도 사용할 수 있으며, 이 경우 해당 함수는 [[noreturn]] 으로 선언되어야 합니다.\n라인 13: 다만 예외적으로 실행 문장이 없는 연속된 case 라벨은 허용합니다.\n라인 16: 만약 의도적으로 다음 라벨로 이어지는 로직을 작성해야 한다면 [[fallthrough]] 를 사용해야 합니다.\n라인 17: default 라벨은 switch 본문의 가장 처음이나 마지막에 위치해야 합니다.\n라인 18-23: 제어 흐름 내에서 조건부 종료가 존재해도 현재 분기의 마지막에 무조건적인 종료가 있어야 합니다. 이는 모든 제어 흐름이 내부적으로 종료되는 경우에도 동일하게 적용됩니다.",
  "rule.saqt.q.cpp.7494.name": "부적절한 구조의 switch 구문",
  "rule.saqt.q.cpp.80.description": "일반 주석 형식 위반 체커는 일반 주석에 해당하는 주석의 형식을 위반하는 코드를 검출합니다.\n코드에 작성된 일반 주석을 사전에 정의된 일반 주석 형식에 따라 확인합니다.\n사전에 정의된 형식에 맞게 일반 주석을 작성하여 ////으로 선언된 주석을 //으로 변경해야 합니다.",
  "rule.saqt.q.cpp.80.example.0.dangerous": "라인 2: 주석을 표현할 때 ////을 사용했습니다.",
  "rule.saqt.q.cpp.80.example.0.safe": "라인 2: 주석을 표현할 때 //을 사용하여 주석 형식을 맞춥니다.",
  "rule.saqt.q.cpp.80.name": "일반 주석 형식 위반",
  "rule.saqt.q.cpp.80.option.GeneralComment.description": "일반 주석 형식을 정의합니다.",
  "rule.saqt.q.cpp.80.option.GeneralComment.name": "일반 주석 형식",
  "rule.saqt.q.cpp.82.description": "레이블 구문 사용 체커는 레이블 구문을 사용하는 코드를 검출합니다.\ngoto 문을 사용하면 프로그램에서 예상하지 못한 동작이 발생할 수 있습니다. 레이블 구문은 주로 goto 문과 쌍으로 사용합니다.\n레이블 구문을 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.82.example.0.dangerous": "라인 2: label을 사용했습니다.",
  "rule.saqt.q.cpp.82.example.0.safe": "라인 2: label을 지웁니다.",
  "rule.saqt.q.cpp.82.name": "레이블 구문 사용",
  "rule.saqt.q.cpp.98.description": "반복문 내에서 금지된 함수 사용 체커는 반복문에서 사용하지 않도록 옵션에 지정된 함수를 사용하는 코드를 검출합니다.\n옵션에서는 특정 반복문에서 호출을 금지하는 함수를 설정할 수 있습니다.\n반복문 안에서 메모리를 생성하면 메모리 시작점을 잃어버려서 메모리 누수가 발생하고 성능 및 처리 속도가 감소할 수 있습니다.\n반복문 안에서 옵션에 지정된 호출 금지 함수를 사용하지 않도록 합니다.",
  "rule.saqt.q.cpp.98.example.0.dangerous": "라인 4: for 문에서 malloc() 함수를 호출했습니다.",
  "rule.saqt.q.cpp.98.example.0.safe": "라인 3: 반복문 밖에서 malloc() 함수를 사용합니다. 반복문 안에서 메모리를 생성하면 메모리 시작점을 잃어버려서 메모리 누수가 발생하고 성능이 감소할 수 있습니다. 반복문에서 기존 리소스를 재활용하도록 변경합니다.",
  "rule.saqt.q.cpp.98.name": "반복문 내에서 금지된 함수 사용",
  "rule.saqt.q.cpp.98.option.target_functions.description": "금지 함수를 설정합니다.",
  "rule.saqt.q.cpp.98.option.target_functions.name": "금지 함수",
  "rule.saqt.q.cs.1011.description": "누락된 while 구문 중괄호 체커는 while 문에 중괄호를 사용하지 않은 경우를 검출합니다.\nwhile 문을 사용할 때 중괄호를 사용하지 않으면 while 문 주변 코드를 변경할 때 논리 오류가 발생할 확률이 높습니다.\nwhile 문을 사용할 때는 중괄호를 사용하도록 합니다.",
  "rule.saqt.q.cs.1011.example.0.dangerous": "라인 2: while 문에 중괄호를 사용하지 않았습니다.",
  "rule.saqt.q.cs.1011.example.0.safe": "라인 2: while 문에 중괄호를 사용합니다.",
  "rule.saqt.q.cs.1011.name": "누락된 while 구문 중괄호",
  "rule.saqt.q.cs.1012.description": "누락된 for 구문 중괄호 체커는 for 문에 중괄호를 사용하지 않은 경우를 검출합니다.\nfor 문을 사용할 때 중괄호를 사용하지 않으면 for 문 주변 코드를 변경할 때 논리 오류가 발생할 확률이 높습니다.\nfor 문을 사용할 때는 중괄호를 사용하도록 합니다.",
  "rule.saqt.q.cs.1012.example.0.dangerous": "라인 2: for 문에 중괄호를 사용하지 않았습니다.",
  "rule.saqt.q.cs.1012.example.0.safe": "라인 2: for 문에 중괄호를 사용합니다.",
  "rule.saqt.q.cs.1012.name": "누락된 for 구문 중괄호",
  "rule.saqt.q.cs.1013.description": "문자열의 인스턴스화 체커는 new String()을 사용한 경우를 검출합니다.\n문자 배열이 포함된 문자열을 초기화할 경우를 제외하고는 문자열 개체를 만들기 위해 new 연산자를 사용하지 않습니다.\nString은 인자가 없는 생성자가 정의되어 있지 않습니다. 따라서 new String()은 올바르지 않은 호출입니다.\n빈 문자열을 생성할 때는 String.Empty 또는 \"\"를 사용합니다.",
  "rule.saqt.q.cs.1013.example.0.dangerous": "라인 1: 문자열 상수 대신 불필요한 생성자를 호출했습니다.\n라인 6: 문자열을 초기화할 때 문자열 상수 대신 new String()을 사용했습니다.\n라인 7: 빈 문자열을 초기화할 때 new String()을 사용했습니다.",
  "rule.saqt.q.cs.1013.example.0.safe": "라인 1: 문자열을 초기화할 때 문자열 상수를 사용합니다.\n라인 6: 문자열을 초기화할 때 문자열 상수를 사용합니다.\n라인 7: 빈 문자열을 초기화할 때 String.Empty 또는 \"\"을 사용합니다.",
  "rule.saqt.q.cs.1013.name": "문자열의 인스턴스화",
  "rule.saqt.q.cs.1014.description": "누락된 switch 구문 내 default 케이스 체커는 switch 문에 기본 케이스가 없는 경우를 검출합니다.\nswitch 문에 기본 케이스가 없으면 고려하지 못한 케이스가 있을 때 의도하지 않은 동작을 수행할 수 있습니다.\nswitch 문에 기본 케이스를 작성합니다.",
  "rule.saqt.q.cs.1014.example.0.dangerous": "라인 5: switch 구문에 기본 케이스가 없습니다.",
  "rule.saqt.q.cs.1014.example.0.safe": "라인 5: switch 구문에 기본 케이스를 작성합니다.",
  "rule.saqt.q.cs.1014.name": "누락된 switch 구문 내 default 케이스",
  "rule.saqt.q.cs.1015.description": "케이스 구문에서 누락된 break 구문 체커는 switch 문 안에 break가 없는 케이스 구문을 검출합니다.\n케이스 구문에 break가 없으면 의도하지 않은 동작을 수행할 수 있습니다.\n모든 케이스 구문에 break를 함께 작성합니다.",
  "rule.saqt.q.cs.1015.example.0.dangerous": "라인 4: case 구문이 break로 끝나지 않습니다.",
  "rule.saqt.q.cs.1015.example.0.safe": "라인 4: break를 작성합니다.",
  "rule.saqt.q.cs.1015.name": "케이스 구문에서 누락된 break 구문",
  "rule.saqt.q.cs.1016.description": "반복문 마지막에 점프문 사용 체커는 반복문 마지막에 분기문(break,continue)을 사용한 경우를 검출합니다.\n조건 식 없이 분기문이 break 문이 사용될 경우 바로 반복문을 빠져 나가며, continue 문이 사용될 경우 아무 의미가 없는 분기문이기 때문에 쓸모 없는 코드가 됩니다.\n반복문 마지막에 조건없는 break 또는 continue를 사용하지 않습니다.",
  "rule.saqt.q.cs.1016.example.0.dangerous": "라인 4: 반복문 마지막에 조건없는 break를 사용했습니다.",
  "rule.saqt.q.cs.1016.example.0.safe": "라인 4: break를 실행할 조건을 추가합니다.",
  "rule.saqt.q.cs.1016.name": "반복문 마지막에 점프문 사용",
  "rule.saqt.q.cs.1017.description": "변수에 대해 Equals 사용 체커는 변수.Equals(리터럴) 형태의 구문을 사용한 경우를 검출합니다.\n변수가 널 일 경우 널 역참조 연산이 발생합니다.\n해당 오류를 범하지 않기 위해 리터럴.Equals(변수) 로 변경합니다.",
  "rule.saqt.q.cs.1017.example.0.dangerous": "라인 1: 변수.Equals(리터럴) 형태의 구문을 사용했습니다.",
  "rule.saqt.q.cs.1017.example.0.safe": "라인 1: 리터럴.Equals(변수) 형태의 구문을 사용합니다.",
  "rule.saqt.q.cs.1017.name": "변수에 대해 Equals 사용",
  "rule.saqt.q.cs.1018.description": "+ 연산에 사용된 빈 문자열 체커는 빈 문자열을 +연산에 사용할 때 검출합니다.\n빈 문자열을 +연산에 사용했습니다. 타입 캐스팅을 위한 것이라면 명시적인 방법으로 타입 캐스팅을 하는 것이 바람직합니다. 그렇지 않은 경우 불필요한 연산이므로 해당 연산을 삭제하는 것을 권장합니다.\n타입 캐스팅을 위한 것이라면 명시적인 방법으로 타입 캐스팅을 하거나, 그렇지 않은 경우 불필요한 연산이므로 해당 연산을 삭제하는 것을 합니다.",
  "rule.saqt.q.cs.1018.example.0.dangerous": "라인 3: 빈 문자열을 + 연산에 사용했습니다.",
  "rule.saqt.q.cs.1018.example.0.safe": "라인 3: 빈 문자열과 '+' 연산을 삭제합니다.",
  "rule.saqt.q.cs.1018.name": "+ 연산에 사용된 빈 문자열",
  "rule.saqt.q.cs.1019.description": "하드코드된 IP 체커는 IP 주소를 하드코드해서 사용한 경우를 검출합니다.\nIP 주소를 하드코드해서 사용하면, 중요한 IP 주소가 노출될 수 있습니다. 그리고 프로그램 실행 환경이 변하는 경우 프로그램을 새로 배포해야 하는 번거로움이 있습니다.\nIP 주소를 하드코드해서 사용하지 않습니다.",
  "rule.saqt.q.cs.1019.example.0.dangerous": "라인 1: IP 주소를 하드코드해서 사용했습니다.",
  "rule.saqt.q.cs.1019.example.0.safe": "라인 1: IP 주소를 하드코드해서 사용하지 않습니다.",
  "rule.saqt.q.cs.1019.name": "하드코드된 IP",
  "rule.saqt.q.cs.1020.description": "여러 변수에 할당 체커는 하나의 값을 두 개 이상의 변수에 대입한 경우를 검출합니다.\n하나의 값을 두 개 이상의 변수에 대입하는 코드는 가독성을 해치므로 수정해야 합니다.\n하나의 값을 대입할 때 하나의 변수에 대입합니다.",
  "rule.saqt.q.cs.1020.example.0.dangerous": "라인 1: 하나의 값을 두개 이상의 변수에 대입합니다.",
  "rule.saqt.q.cs.1020.example.0.safe": "라인 1: 하나의 값은 하나의 변수에 대입합니다.",
  "rule.saqt.q.cs.1020.name": "여러 변수에 할당",
  "rule.saqt.q.cs.1021.description": "반복문 내에서의 인스턴스 생성 체커는 반복문 안에서 객체를 생성한 경우를 검출합니다.\n반복문 안에서 인스턴스를 생성하면 프로그램 실행 성능이 저하됩니다.\n반복문 밖에서 인스턴스를 생성해 사용하도록 합니다.",
  "rule.saqt.q.cs.1021.example.0.dangerous": "라인 3: 반복문 안에서 인스턴스를 생성합니다.",
  "rule.saqt.q.cs.1021.example.0.safe": "라인 1: 반복문 밖에서 인스턴스를 생성한 후 사용합니다.",
  "rule.saqt.q.cs.1021.name": "반복문 내에서의 인스턴스 생성",
  "rule.saqt.q.cs.1022.description": "너무 깊이 중첩된 if 구문 체커는 지정한 횟수 이상의 if 중첩문을 사용한 경우를 검출합니다.\n깊게 중첩된 if 문은 프로그램 흐름을 파악하기 어렵게 만들고 개발할 때 많은 실수가 생길 수 있습니다. 보통 깊게 중첩된 if 문을 사용해야 한다면 프로그램 복잡도를 낮추기 위해 노력해야 합니다.\n깊게 중첩된 if 문을 사용하지 않습니다.",
  "rule.saqt.q.cs.1022.example.0.dangerous": "라인 3: 깊게 중첩된 if 문을 사용하고 있습니다.",
  "rule.saqt.q.cs.1022.example.0.safe": "라인 1: 깊게 중첩된 if 문을 사용하지 않습니다.",
  "rule.saqt.q.cs.1022.name": "너무 깊이 중첩된 if 구문",
  "rule.saqt.q.cs.1022.option.max_depth.description": "검출 대상 if 조건문의 깊이 임계값을 지정합니다.",
  "rule.saqt.q.cs.1022.option.max_depth.name": "깊이",
  "rule.saqt.q.cs.1024.description": "NullReferenceException 예외 생성 체커는 NullReferenceException 예외를 throw 구문으로 직접 던지는 경우를 검출합니다.\nNullReferenceException 예외는 nullable 타입의 레퍼런스가 널 값을 가지고 있는데도 바로 멤버에 접근하려고 할 때 닷넷 프레임워크에서 발생시키는 예외입니다. 특별한 목적으로 사용되는 예외이므로 사용자가 직접 생성하여 던질 이유가 없고 코드를 작성할 때 혼란을 가중시킵니다.\n다른 예외 클래스를 사용하거나 예외 던지기가 아닌 다른 방식으로 문제를 해결합니다.",
  "rule.saqt.q.cs.1024.example.0.dangerous": "라인 5: NullReferenceException 예외를 던지고 있습니다.",
  "rule.saqt.q.cs.1024.example.0.safe": "라인 2: 널 포인터 예외가 생기는 근본적인 원인을 수정합니다.",
  "rule.saqt.q.cs.1024.name": "NullReferenceException 예외 생성",
  "rule.saqt.q.cs.1025.description": "부동 소수점 값에 대한 == 연산 체커는 `==` 연산자를 사용하여 부동소수점을 비교하는 코드를 검출합니다.\n부동 소수점을 비교하는 연산은 정확하게 동작하지 않을 수 있습니다.\n`==` 연산자를 사용하는 대신 Math.Abs를 사용하여 두 값의 차이가 오차 범위보다 적은지를 확인합니다. 예를 들어 다음과 같이 비교합니다. const double EPSILON = 0.001; Console.WriteLine(Math.Abs((0.1 + 0.2) - 0.3) < EPSILON);",
  "rule.saqt.q.cs.1025.example.0.dangerous": "라인 3: 부동 소수점 비교에 == 연산자를 사용하고 있습니다.",
  "rule.saqt.q.cs.1025.example.0.safe": "라인 3: == 대신 NearlyEquals() 메소드를 만들어 사용하도록 합니다. NearlyEquals() 메소드 구현은 설명을 참고하십시오.",
  "rule.saqt.q.cs.1025.name": "부동 소수점 값에 대한 == 연산",
  "rule.saqt.q.cs.1026.description": "+= 연산자로 더해진 문자열 체커는 연산자 `+=`를 사용하여 스트링 값을 더하는 경우를 검출합니다.\n연산자 `+=`을 사용하는 것보다 StringBuilder를 사용하는 것이 대체로 성능이 더 좋습니다. string에 대해 `+` 연산 또는 += 연산을 수행할 때 마다 새로운 string 클래스가 생성되고 이전 데이터는 Garbage Collector에 의해 수집됩니다. 따라서 부하가 발생합니다. StringBuilder를 사용하면 새로운 변수를 생성하지 않고 값을 변경하므로 `+`나 `+=` 연산보다 적은 부하가 발생합니다.\n연산자 `+=` 대신 StringBuilder를 사용합니다.",
  "rule.saqt.q.cs.1026.example.0.dangerous": "라인 6: '+=' 연산자를 사용하여 2개의 문자열을 연결했습니다.",
  "rule.saqt.q.cs.1026.example.0.safe": "라인 6: '+=' 연산자 대신 StringBuilder의 Append 함수를 사용합니다.",
  "rule.saqt.q.cs.1026.name": "+= 연산자로 더해진 문자열",
  "rule.saqt.q.cs.1027.description": "컬렉션 크기를 0과 비교 체커는 컬렉션 객체에 Count()==0 혹은 Count()!=0을 사용한 경우를 검출합니다.\n일반적으로 Count() 메소드보다 Any() 메소드가 훨씬 성능이 좋습니다.\n컬렉션 내에 item 이 존재 하는지 확인하기 위해서는 Any() 함수를 사용하도록 합니다.",
  "rule.saqt.q.cs.1027.example.0.dangerous": "라인 5: 컬렉션 내 item 존재 여부를 Count() 메소드를 사용해 검사합니다.",
  "rule.saqt.q.cs.1027.example.0.safe": "라인 5: Any() 메소드를 사용합니다.",
  "rule.saqt.q.cs.1027.name": "컬렉션 크기를 0과 비교",
  "rule.saqt.q.cs.1030.description": "사용되지 않은 지역 변수 체커는 지역 변수를 선언한 후에 사용하지 않는 코드를 검출합니다.\n변수를 선언만 하고 사용하지 않으면 컴퓨터 리소스를 낭비하게 됩니다. 그리고 코드 가독성을 해칠 뿐 아니라 의도하지 않은 동작을 수행할 수 있습니다.\n사용되지 않는 변수를 제거합니다.",
  "rule.saqt.q.cs.1030.example.0.dangerous": "라인 3: 초기화만 하고 사용하지 않는 변수가 있습니다.",
  "rule.saqt.q.cs.1030.example.0.safe": "라인 3: 사용되지 않는 지역 변수를 제거합니다.",
  "rule.saqt.q.cs.1030.name": "사용되지 않은 지역 변수",
  "rule.saqt.q.cs.1031.description": "사용되지 않은 파라미터 체커는 메소드의 매개 변수 중 사용하지 않는 변수가 있는 경우를 검출합니다.\n메소드 중 사용하지 않는 매개 변수는 제거하는 것이 좋습니다. 메소드를 호출할 때 불필요한 매개 변수에 값을 할당하기 위해 필요없는 노력을 해야 하고, 매개 변수 타입이 사용자 정의 클래스 등 크기가 큰 타입이면 무의미한 값 복사가 생깁니다.\n사용하지 않는 매개 변수는 제거합니다.",
  "rule.saqt.q.cs.1031.example.0.dangerous": "라인 1: 사용하지 않는 매개 변수 c가 있습니다.",
  "rule.saqt.q.cs.1031.example.0.safe": "라인 1: 사용되지 않는 매개변수를 제거합니다.",
  "rule.saqt.q.cs.1031.name": "사용되지 않은 파라미터",
  "rule.saqt.q.cs.1031.option.exceptional_parameter_name.description": "예외 처리할 파라미터 이름을 적습니다.",
  "rule.saqt.q.cs.1031.option.exceptional_parameter_name.name": "예외 파라미터 명",
  "rule.saqt.q.cs.1031.option.exceptional_parameter_type.description": "예외 처리할 파라미터 타입을 적습니다.",
  "rule.saqt.q.cs.1031.option.exceptional_parameter_type.name": "예외 파라미터 타입",
  "rule.saqt.q.cs.1032.description": "사용되지 않은 private 필드 체커는 사용하지 않는 private 필드를 검출합니다.\nprivate 필드를 선언만 하고 사용하지 않으면 리소스를 낭비하게 됩니다. 그리고 코드 가독성을 해칠 뿐 아니라 의도하지 않은 동작을 수행할 수 있습니다.\n사용하지 않는 private 필드는 제거합니다.",
  "rule.saqt.q.cs.1032.example.0.dangerous": "라인 2: 사용하지 않는 private 필드가 있습니다.",
  "rule.saqt.q.cs.1032.example.0.safe": "라인 2: 사용하지 않는 private 필드는 제거합니다.",
  "rule.saqt.q.cs.1032.name": "사용되지 않은 private 필드",
  "rule.saqt.q.cs.1033.description": "새로운 예외 생성 체커는 catch 블록 내에서 새로운 예외 객체를 생성하고 던지는 경우를 검출합니다.\ncatch 문에서 새로운 예외 객체를 생성하고 던지면 기존 예외에 담겨 있던 정보가 사라지게 되므로 기존 예외 객체를 던지는 것이 좋습니다.\n새로운 예외 객체를 생성하지 않고, 기존 예외를 던지도록 합니다.",
  "rule.saqt.q.cs.1033.example.0.dangerous": "라인 3: catch 문에서 새로운 예외 객체를 생성하고 던집니다.",
  "rule.saqt.q.cs.1033.example.0.safe": "라인 3: 새로운 객체를 만들지 말고 기존 객체를 그대로 던지도록 합니다.",
  "rule.saqt.q.cs.1033.name": "새로운 예외 생성",
  "rule.saqt.q.cs.1034.description": "pulse 되지 않은 객체 체커는 Monitor.PulseAll() 메소드와 Monitor.Wait() 메소드를 동시에 사용하지 않은 경우를 검출합니다.\n객체에 대해 Monitor.Wait() 메소드를 호출하면 다른 스레드에서 해당 객체에 대해 Mointor.Pulse() 메소드 혹은 Monitor.PulseAll() 메소드 호출을 통해 깨워질 때까지 대기하기 때문에 둘은 반드시 쌍으로 존재해야 합니다. 현재 클래스 안에서 깨워주지 않더라도 다른 클래스에서 깨워주는 것도 불가능하지는 않지만 프로그램을 이해하기 어려워집니다.\nMonitor.Wait() 메소드 호출과 Monitor.Pulse() 혹은 Monitor.PulseAll() 메소드 호출을 한 클래스 안에서 쌍으로 유지합니다.",
  "rule.saqt.q.cs.1034.example.0.dangerous": "라인 6: someObject 객체에 대해 Mointor.Wait() 메소드가 호출되었지만 이 클래스 안에 Monitor.PulseAll() 메소드 호출은 없습니다.",
  "rule.saqt.q.cs.1034.example.0.safe": "라인 6: someObject 객체에 대해 Monitor.Wait() 메소드가 호출됩니다.\n라인 10: someObject 객체에 대해 Monitor.PulseAll() 메소드가 호출됩니다. 한 클래스 안에 두 메소드 호출이 쌍으로 존재합니다.",
  "rule.saqt.q.cs.1034.name": "pulse 되지 않은 객체",
  "rule.saqt.q.cs.1646.description": "비교 대신 할당 수행 체커는 조건을 계산하기 위해 비교 연산을 사용해야 하는 부분에 할당 연산을 수행하는 코드를 검출합니다.\n보통 `==`와 같은 비교 연산자를 작성하려다 실수로 `=`와 같은 대입 연산자를 사용하는 경우에 이러한 문제가 발생합니다. 실수로 작성한 코드의 경우 의도와 다르게 동작함에도 불구하고 위치를 파악하기가 어렵습니다. 물론 C#에서는 if 구문이나 삼항 조건 연산식에서 조건식이 들어가야할 자리에 bool 타입의 값만 위치할 수 있기 때문에 이런 실수가 자주 일어나지는 않고 보통 C/C++에서 많이 발생하는 문제입니다.\n비교 연산자 대신 대입 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.cs.1646.example.0.dangerous": "라인 2: if 조건문 안에서 변수 a에 널을 할당하고 있습니다. 이는 변수 a를 널과 비교할 목적이었을 가능성이 큽니다.",
  "rule.saqt.q.cs.1646.example.0.safe": "라인 2: 조건문 내에 할당하는 부분이 개발자가 의도하지 않은 부분이라면 비교 연산인 = 또는 != 으로 바꾸어 줍니다.",
  "rule.saqt.q.cs.1646.name": "비교 대신 할당 수행",
  "rule.saqt.q.cs.1843.description": "빈 while 구문 체커는 while 문이 선언되었지만 내부 블록이 비어 있는 경우를 검출합니다.\n빈 while 문은 의도하지 않은 동작을 수행할 수 있고, 경우에 따라 무한 반복에 빠질 수 있습니다.\n빈 while 문은 제거합니다.",
  "rule.saqt.q.cs.1843.example.0.dangerous": "라인 19: while 문의 내부 블록이 비어 있습니다.",
  "rule.saqt.q.cs.1843.example.0.safe": "라인 21: while 문 내부에 동작하는 코드를 입력합니다.",
  "rule.saqt.q.cs.1843.name": "빈 while 구문",
  "rule.saqt.q.cs.2192.description": "sealed 클래스에 잘못된 접근 한정자 사용 체커는 public sealed인 클래스에서 protected 멤버나 protected 중첩 클래스를 선언한 경우를 검출합니다.\nsealed 클래스는 상속할 수 없습니다. 즉, sealed 클래스에 대해 protected 메소드를 호출할 수 없고, protected 멤버도 접근할 수 없습니다.\nsealed의 의미에 맞게 public sealed로 선언한 클래스에는 protected 멤버를 만들지 않는 것이 좋습니다. 무의미한 클래스 멤버는 코드 가독성을 해칠 뿐 아니라, 혼란을 일으킬 수 있습니다.\npublic sealed 클래스에 protected 멤버를 만들지 않습니다.",
  "rule.saqt.q.cs.2192.example.0.dangerous": "라인 8: public sealed 클래스에 protected 멤버를 선언합니다.",
  "rule.saqt.q.cs.2192.example.0.safe": "라인 8: protected 멤버를 선언하지 않습니다.",
  "rule.saqt.q.cs.2192.name": "sealed 클래스에 잘못된 접근 한정자 사용",
  "rule.saqt.q.cs.957.description": "배열에 대해 toString 사용 체커는 배열 객체에 대한 ToString 메소드를 호출을 검출합니다.\n배열에 대해 toString()을 사용하면 배열의 상세 내용 대신 배열 객체에 대한 정보가 출력됩니다. 배열의 내용을 출력하려면 string.Join 메소드 등을 사용하는 것이 좋습니다.\n배열 내용을 출력할 때는 string.Join()을 사용합니다.",
  "rule.saqt.q.cs.957.example.0.dangerous": "라인 4: 배열에 toString()을 사용했습니다.",
  "rule.saqt.q.cs.957.example.0.safe": "라인 4: string.Join()을 사용합니다.",
  "rule.saqt.q.cs.957.name": "배열에 대해 toString 사용",
  "rule.saqt.q.java.2162.description": "Android Activity에서 부모 클래스 메소드 호출 누락 체커는 Activity 클래스의 생명주기 관련 메소드를 오버라이딩할 때 맨 앞에 super의 메소드 호출을 넣지 않은 경우를 검출합니다.\nActivity 클래스의 onCreate(), onStart(), onRestart(), onResume(), onPause(), onStop(), onDestroy() 등의 생명주기 관련 메소드가 검사 대상입니다.\nActivity 클래스의 onCreate(), onStart(), onRestart(), onResume(), onPause(), onStop(), onDestroy() 등의 생명주기 관련 메소드를 오버라이딩할 경우, 메소드의 맨 앞에서 super의 해당 메소드를 호출해야 Activity 인스턴스가 Android 플랫폼의 정의에 맞게 작동합니다.",
  "rule.saqt.q.java.2162.example.0.dangerous": "라인 6: super.onCreate() 메소드 호출이 있지만 정의 맨 앞에 있지 않습니다.\n라인 11: super.onDestroy() 메소드 호출이 없습니다.\n라인 17: super.onStop() 메소드 대신 엉뚱한 super.onDestroy() 메소드를 호출했습니다.",
  "rule.saqt.q.java.2162.example.0.safe": "라인 6: super.onCreate() 메소드를 맨 처음 호출합니다.\n라인 12: super.onDestroy() 메소드를 맨 처음 호출합니다.\n라인 18: super.onStop() 메소드를 맨 처음 호출합니다.",
  "rule.saqt.q.java.2162.name": "Android Activity에서 부모 클래스 메소드 호출 누락",
  "rule.saqt.q.java.2164.description": "onMeasure 메소드 오버라이딩 중 필수 호출 누락 체커는 View.onMeasure() 메소드를 오버라이딩할 때 setMeasuredDimension() 메소드를 호출하지 않는 경우를 검출합니다.\nView 클래스를 상속 받아 커스텀 뷰를 생성하면서 onMeasure() 메소드를 오버라이딩할 경우, setMeasuredDimension() 메소드를 호출해 적절한 처리를 해줄 의무가 커스텀 뷰 클래스에게 있습니다.",
  "rule.saqt.q.java.2164.example.0.dangerous": "라인 7: View.onMeasure() 메소드를 오버라이딩했지만 setMeasuredDimension() 메소드를 호출하지 않고 있습니다.",
  "rule.saqt.q.java.2164.example.0.safe": "라인 10: 오버라이딩된 onMeasure() 메소드에서는 적절한 값을 인자로 전달하며 setMeasuredDimension() 메소드를 호출해야 합니다.",
  "rule.saqt.q.java.2164.name": "onMeasure 메소드 오버라이딩 중 필수 호출 누락",
  "rule.saqt.q.java.2391.description": "특정 변수에 리터럴 직접 대입 체커는 지정된 조건을 만족하는 변수에 리터럴을 대입하는 경우를 검출합니다.\n테스트 혹은 디버그를 위해 임시로 리터럴 상수를 대입하는 코드를 작성한 후 미처 삭제하지 못하는 것처럼 의도하지 않게 어떤 변수에 리터럴 상수를 대입하는 코드를 배포 시점까지 내버려두면 프로그램이 오작동할 수 있습니다.\n해당 변수에 리터럴 상수를 대입하지 않도록 합니다.",
  "rule.saqt.q.java.2391.example.0.dangerous": "라인 6: 테스트를 위해 임시로 매개 변수 name에 리터럴 값을 대입하고 있습니다.\n라인 7: 테스트를 위해 임시로 매개 변수 id에 리터럴 값을 대입하고 있습니다.",
  "rule.saqt.q.java.2391.example.0.safe": "라인 6: 리터럴을 대입하는 코드를 삭제합니다.",
  "rule.saqt.q.java.2391.name": "특정 변수에 리터럴 직접 대입",
  "rule.saqt.q.java.2391.option.check_field.description": "선택할 경우 인스턴스 필드(정적 필드가 아닌 멤버) 변수를 검사 대상에 포함시킵니다.",
  "rule.saqt.q.java.2391.option.check_field.name": "인스턴스 필드 검출 여부",
  "rule.saqt.q.java.2391.option.check_local.description": "선택할 경우 메소드 내에서 선언된 지역 변수를 검사 대상에 포함시킵니다.",
  "rule.saqt.q.java.2391.option.check_local.name": "지역 변수 검출 여부",
  "rule.saqt.q.java.2391.option.check_param.description": "옵션을 사용하는 경우, 메소드의 인자 변수를 검사 대상에 포함시킵니다.",
  "rule.saqt.q.java.2391.option.check_param.name": "메소드 인자 변수 검출 여부",
  "rule.saqt.q.java.2391.option.check_static.description": "선택할 경우 정적 필드 변수를 검사 대상에 포함시킵니다.",
  "rule.saqt.q.java.2391.option.check_static.name": "정적 필드 검출 여부",
  "rule.saqt.q.java.2391.option.excluded_class.description": "이슈 검출 대상 클래스 중 검사에서 제외할 클래스 이름을 입력합니다<br /><i>예시)</i> .*Constant",
  "rule.saqt.q.java.2391.option.excluded_class.name": "예외 패키지 이름",
  "rule.saqt.q.java.2391.option.excluded_method.description": "이슈 검출 대상 메소드 중 검사에서 제외할 메소드 이름을 입력합니다.<br /><i>예시)</i> get.*",
  "rule.saqt.q.java.2391.option.excluded_method.name": "예외 클래스 이름",
  "rule.saqt.q.java.2391.option.excluded_package.description": "이슈 검출 대상 패키지 중 검사에서 제외할 패키지 이름을 입력합니다.<br /><i>예시)</i> .*const.*",
  "rule.saqt.q.java.2391.option.excluded_package.name": "예외 메소드 이름",
  "rule.saqt.q.java.2391.option.target_class.description": "이슈를 검출할 대상 클래스 이름을 입력합니다<br /><i>예시)</i> .*Controller",
  "rule.saqt.q.java.2391.option.target_class.name": "검출 대상 클래스 이름",
  "rule.saqt.q.java.2391.option.target_method.description": "이슈 검출할 대상 메소드 이름을 입력합니다.<br /><i>예시)</i> ((select)|(delete)|(update)).*",
  "rule.saqt.q.java.2391.option.target_method.name": "검출 대상 메소드 이름",
  "rule.saqt.q.java.2391.option.target_package.description": "이슈를 검출할 대상 패키지 이름을 입력합니다.<br /><i>예시)</i> com.fasoo..*control",
  "rule.saqt.q.java.2391.option.target_package.name": "검출 대상 패키지 이름",
  "rule.saqt.q.java.2391.option.target_variable.description": "이슈 검출할 대상 변수 이름을 입력합니다.<br /><i>예시)</i> .*Id",
  "rule.saqt.q.java.2391.option.target_variable.name": "검출 대상 변수 이름",
  "rule.saqt.q.java.390.description": "컬렉션 내 객체에 대한 위험한 다운캐스팅 체커는 컬렉션에 요소를 넣은 뒤, 그 컬렉션에서 다시 꺼낸 요소를 다른 타입으로 캐스팅하는 코드를 검출합니다.\n이런 코드는 주로 1.5보다 낮은 버전의 Java 소스에서 발견되는데, 제네릭이 아직 도입되지 않아서 컨테이너로부터 요소들을 꺼낼 때 캐스팅이 필요하기 때문입니다. 실행 도중 잘못된 타입으로 캐스팅을 시도하려고 하면 애플리케이션은 ClassCastException 오류를 발생시키게 됩니다.\n확실한 타입으로 캐스팅하거나 instanceof 연산자로 타입을 확인한 후 캐스팅하는 것이 좋습니다. Java 1.5 이상의 버전을 사용중이라면 컬렉션을 사용할 때 제네릭 타입을 제대로 명시하여 선언하면 잘못된 다운캐스팅의 위험성을 줄일 수 있습니다.",
  "rule.saqt.q.java.390.example.0.dangerous": "라인 7: c에 Shape 객체를 넣을 수 있게 작성되어 있습니다.\n라인 12: c에서 꺼낸 객체를 확인 없이 Shape의 자식 클래스인 Triangle 타입으로 캐스팅하고 있습니다.",
  "rule.saqt.q.java.390.example.0.safe": "라인 11: c에 Shape 객체를 수집하기로 했다면 c에서 객체를 꺼냈을 때도 Shape 타입으로 캐스팅해야 합니다. Triangle 타입으로 캐스팅하고 싶다면 이전에 instanceof 연산 등을 활용해 타입이 맞는지 확인해야 합니다.",
  "rule.saqt.q.java.390.name": "컬렉션 내 객체에 대한 위험한 다운캐스팅",
  "rule.saqt.q.java.394.description": "의심스러운 메소드 이름 체커는 이름을 실수로 잘못 쓴 것으로 보이는 메소드 정의를 검출합니다.\n이름이 equal(), tostring(), hashcode()인 메소드는 equals(), toString(), hashCode() 메소드를 오버라이딩하려다 실수로 잘못 썼을 가능성이 높습니다.\n해당 메소드는 java.lang.Object 클래스로부터 공통적으로 상속되며 필요할 경우 오버라이딩으로 재정의합니다. 하지만 실수로 메소드 이름을 equal(), tostring(), hashcode() 등과 같이 쓰게 되면 프로그램이 의도와 다르게 작동할 수도 있습니다.\n실수로 이름을 잘못 쓴 것이라면 원래의 의도대로 Object 클래스로부터 상속받은 메소드 이름으로 정정합니다. 실수를 방지하고자 한다면 @Override 라는 annotation을 메소드 선언 앞에 사용하는 방법이 있습니다. 실수했을 때 컴파일러가 컴파일 타임 오류를 발생시켜줄 것입니다. 만약 의도적으로 지은 이름이라 해도 추후 본인 혹은 다른 개발자의 혼란을 일으킬 수 있으므로 명확히 다른 이름으로 바꾸는 것이 좋습니다.",
  "rule.saqt.q.java.394.example.0.dangerous": "라인 1: 이름이 tostring인 메소드가 정의되었습니다.",
  "rule.saqt.q.java.394.example.0.safe": "라인 1: 실수를 방지하기 위해 명시적으로 @Override를 사용합니다.\n라인 2: 메소드 이름을 toString으로 정정합니다.",
  "rule.saqt.q.java.394.name": "의심스러운 메소드 이름",
  "rule.saqt.q.java.415.description": "equals 및 == 연산자의 잘못된 사용 체커는 객체를 비교할 때 equals()와 == 두 가지 방식을 잘못 섞어서 사용한 것으로 판단되는 경우를 검출합니다.\n어떤 x, y라는 임의의 두 객체에 대하여 x와 y가 equals() 메소드와 == 연산자 두 가지 방식으로 비교 될 경우, equals() 메소드로 비교된 횟수와 == 연산자로 비교된 횟수의 비율이 특정 비율을 벗어나 어느 한 쪽이 일방적으로 높을 경우 경고를 냅니다. 경고를 내기 위해 특정 비교 방식이 차지해야 하는 비율을 Threshold(T)라고 하고, Threshold의 기본값을 80%(0.8)로 가정합니다. 예를 들어서 A를 equals() 메소드로 비교된 횟수, B를 == 연산자로 비교된 횟수라고 했을 때 경고를 내야 하는 경우를 일반적인 수식으로 표현하면 아래와 같습니다. A/(A+B) >= T or B/(A+B) >= T 하지만 아래와 같은 경우는 예외적으로 처리합니다.. - 해당 클래스에서 equals() 메소드를 오버라이딩하지 않고 Object.equals() 메소드를 그대로 상속받아 사용하는 경우에는 검출하지 않습니다. - 객체를 널 상수와 비교할 경우에는(i.e x == 널) 비교 횟수로 취급하지 않습니다. - 객체가 정적 필드일 경우에는(i.e static Object x; x == y;) 비교 횟수로 취급하지 않습니다.\n일반적으로 두 객체를 비교할 때 명확히 메모리 상의 주소 값을 비교하려는 의도가 아니라면 equals() 메소드를 쓰는 것이 좋습니다. 만약 명확한 의도를 가지고 equals() 메소드와 == 연산자를 섞어서 사용했다면 각 비교식마다 의도한 정확한 방법을 사용했는지 꼼꼼히 확인하도록 합니다.",
  "rule.saqt.q.java.415.example.0.dangerous": "라인 18: == 연산을 통한 비교는 한 번, equals() 메소드를 통한 비교는 5번 사용되었습니다.",
  "rule.saqt.q.java.415.example.0.safe": "라인 17: 특별한 이유가 없다면 한 가지 방법으로 통일해서 사용하는 것이 좋습니다.",
  "rule.saqt.q.java.415.name": "equals 및 == 연산자의 잘못된 사용",
  "rule.saqt.q.java.416.description": "부정확한 오버라이딩 체커는 잘못 오버라이딩한 메소드 정의를 검출합니다.\n메소드를 잘못 오버라이딩하는 2가지 패턴을 선별하여 문제를 보고합니다. 한 가지는 어떤 메소드 정의에 대해 부모 클래스에 이름이 같은 메소드가 존재하고, 그 메소드의 인자의 타입이 부모 클래스 메소드의 인자 타입과 이름은 같지만 패키지 이름이 다른 패턴입니다. 메소드를 이렇게 정의하면 마치 부모 클래스의 메소드를 오버라이딩하는 것처럼 보이지만 실제로는 전혀 무관한 별도의 메소드를 정의하는 것입니다. 다른 한 가지는 어떤 메소드 정의에 대해 부모 클래스에 대소문자를 무시했을 때 이름이 같은 메소드가 존재하는 패턴입니다. 이 경우에는 프로그램 작성자가 부모 클래스의 메소드를 오버라이딩하려고 의도했으나 실수한 것으로 판단합니다. Java 문법에서는 대소문자를 구별하기 때문에 이 정의 역시 실제로는 오버라이딩이 아니라 별도의 메소드를 정의하는 것이 됩니다.\n메소드를 오버라이딩할 때 항상 정의 앞에 @Override annotation을 덧붙이면 컴파일러의 도움을 받아 실수를 줄일 수 있습니다. 또한 혼동을 피하기 위해 이름이 대소문자만 다른 메소드는 정의하지 않도록 합니다. 일반적으로 camelCase를 사용하여 일관적으로 이름을 지으면 이런 문제를 피할 수 있습니다.",
  "rule.saqt.q.java.416.example.0.dangerous": "라인 4: BadOverrideTest 클래스의 test 메소드의 인자 타입은 상단의 import 구문에 의해 pkg1.pkg2.Custom 클래스입니다.\n라인 11: 그러나 BadOverrideTestSuper 클래스의 test 메소드의 인자 타입은 역시 상단의 import 구문에 의해 pkg1.Custom 클래스가 되어 서로 일치하지 않습니다.",
  "rule.saqt.q.java.416.example.0.safe": "라인 9: 오버라이딩된 메소드 인자의 클래스가 정확히 일치하도록 만들어줍니다.",
  "rule.saqt.q.java.416.name": "부정확한 오버라이딩",
  "rule.saqt.q.java.422.description": "비정적 메소드 내에서의 정적 필드 변경 체커는 인스턴스 메소드 코드 중 정적 필드에 값을 대입하는 구문을 검출합니다.\n정적 메소드가 아닌 모든 메소드는 인스턴스 메소드입니다.\n보통 정적 필드는 특별한 경우를 제외하고는 정적 메소드에서만 변경되어야 하며, 그렇지 않은 경우에는 프로그램이 예상하지 않은 결과를 낼 수 있습니다.\n인스턴스 메소드에서 정적 필드 정보를 변경해야 할 경우엔 정적 메소드를 호출하여 간접적으로 변경하는 것이 좋습니다.",
  "rule.saqt.q.java.422.example.0.dangerous": "라인 5: 정적 필드의 값을 정적 메소드가 아닌 메소드에서 변경하고 있습니다.",
  "rule.saqt.q.java.422.example.0.safe": "라인 7: 정적 필드의 값 변경은 정적 메소드 내에서 하는 것이 좋습니다.",
  "rule.saqt.q.java.422.name": "비정적 메소드 내에서의 정적 필드 변경",
  "rule.saqt.q.java.669.description": "notify 사용 체커는 notifiy()를 직접 호출하는 경우를 검출합니다.\nnotifiy()를 직접 호출하면 어떤 스레드를 깨울지 불명확하므로 사용하지 않는 것을 권장합니다.\nnotify() 없이 어떤 스레드를 깨울지 명시할 수 있는 방법을 구상해봅니다.",
  "rule.saqt.q.java.669.example.0.dangerous": "라인 3: notify() 메소드를 호출하고 있습니다.",
  "rule.saqt.q.java.669.example.0.safe": "라인 3: notify() 메소드를 호출하지 않도록 합니다.",
  "rule.saqt.q.java.669.name": "notify 사용",
  "rule.saqt.q.java.7171.description": "클래스 정의 시 클래스 블록 내부에 아무런 멤버(필드, 메소드, 생성자 등)가 없으면 빈 클래스 블록 위반으로 간주합니다. 코드 누락이나 의도치 않은 코드 삭제가 존재할 수 있으며, 이로 인한 문제가 발생할 수 있습니다.\n클래스 내부에 필요한 필드, 메소드, 주석 등을 추가합니다. 필요하지 않은 경우 해당 클래스를 삭제합니다.",
  "rule.saqt.q.java.7171.example.0.dangerous": "라인 1: 클래스 블록이 비어 있습니다.",
  "rule.saqt.q.java.7171.example.0.safe": "라인 2: 클래스 내부에 사전에 정의한 주석이 포함되어 있으므로 위반 사항이 없습니다.",
  "rule.saqt.q.java.7171.name": "빈 클래스 블록 검사",
  "rule.saqt.q.java.7172.description": "메소드 또는 생성자 블록 내부에 실행 코드가 전혀 없으면 빈 메소드 블록 위반으로 감지합니다. 이는 코드의 누락이나 불필요한 메소드가 존재한다는 것을 의미할 수 있습니다.\n메소드 내부에 필요한 구현 코드를 추가하거나 불필요한 경우 해당 메소드를 제거합니다.",
  "rule.saqt.q.java.7172.example.0.dangerous": "라인 1: 메소드 본문이 비어 있어 실행 로직이 누락되었습니다.",
  "rule.saqt.q.java.7172.example.0.safe": "라인 2: 주석을 포함하여 의도적으로 빈 상태가 아님을 표시합니다.",
  "rule.saqt.q.java.7172.name": "빈 메소드 블록 검사",
  "rule.saqt.q.java.7173.description": "if, else if, else 등 조건문 블록 내에 실행 코드가 없으면 위반으로 판단합니다. 이로 인해 조건에 따른 처리가 누락되어 의도치 않은 동작을 발생시킬 수 있습니다.\n조건문 내부에 필요한 실행 코드를 추가하거나, 불필요한 경우 조건문을 삭제합니다.",
  "rule.saqt.q.java.7173.example.0.dangerous": "라인 1: 조건문 블록이 비어 있으므로 위반입니다.",
  "rule.saqt.q.java.7173.example.0.safe": "라인 2: 주석이 포함되어 있어 빈 블록이 아님을 명시합니다.",
  "rule.saqt.q.java.7173.name": "빈 조건문 블록 검사",
  "rule.saqt.q.java.7174.description": "`for` 루프의 선언부, 조건식, 증감식은 존재하나, 본문이 비어 있으면 위반으로 판단합니다. 이는 반복 처리 로직의 누락으로 인해 의도한 반복 동작이 이루어지지 않을 수 있습니다.\nfor 루프 본문에 필요한 코드를 추가하거나, 불필요한 루프라면 삭제합니다.",
  "rule.saqt.q.java.7174.example.0.dangerous": "라인 1: for 루프 본문이 비어 있으므로 위반입니다.",
  "rule.saqt.q.java.7174.example.0.safe": "라인 2: 지정된 주석 또는 코드가 포함되어 있어 의도적 빈 상태가 아님을 나타냅니다.",
  "rule.saqt.q.java.7174.name": "빈 for 구문 블록 검사",
  "rule.saqt.q.java.7175.description": "while 및 do-while 루프의 본문이 비어 있으면 위반으로 판단합니다. 이는 반복 처리 로직이 누락되어 루프가 의도대로 동작하지 않을 수 있습니다.\n루프 본문에 필요한 코드를 추가하거나, 불필요한 루프라면 삭제합니다.",
  "rule.saqt.q.java.7175.example.0.dangerous": "라인 1: while 루프 본문이 비어 있으므로 위반입니다.",
  "rule.saqt.q.java.7175.example.0.safe": "라인 2: 사전에 정의된 주석이 포함되어 있어 위반이 아닙니다.",
  "rule.saqt.q.java.7175.name": "빈 while 구문 블록 검사",
  "rule.saqt.q.java.7176.description": "switch 문의 각 case 및 default 블록에 실행 코드가 없으면 위반으로 판단합니다.\n각 case나 default 블록 내에 필요한 코드를 추가하거나, 의도적인 경우에는 사전에 정의한 주석을 추가하여 명시합니다.",
  "rule.saqt.q.java.7176.example.0.dangerous": "라인 2, 7: 각 case 및 default 블록이 비어 있으므로 위반입니다.",
  "rule.saqt.q.java.7176.example.0.safe": "라인 3, 9: 사전에 정의된 주석이 포함되어 있으므로 위반이 아닙니다.",
  "rule.saqt.q.java.7176.name": "빈 switch 구문 블록 검사",
  "rule.saqt.q.java.7177.description": "`try`, `catch`, `finally` 블록 내에 실행 코드가 전혀 없으면 위반으로 판단합니다. 이는 예외 상황에 대한 적절한 처리가 누락되었음을 의미합니다.\n해당 블록 내에 적절한 예외 처리 코드를 추가합니다.",
  "rule.saqt.q.java.7177.example.0.dangerous": "라인 3: catch 블록이 비어 있어 예외 처리 로직이 누락되었습니다.",
  "rule.saqt.q.java.7177.example.0.safe": "라인 4: 사전에 정의된 주석이 포함되어 있어 위반이 아닙니다.",
  "rule.saqt.q.java.7177.name": "빈 예외 처리 블록 검사",
  "rule.saqt.q.java.7178.description": "금지된 패키지 이름이 발견되면 이를 검출합니다.\n금지된 패키지를 제거하거나 옵션 설정을 통해 검출 목록에서 제외하세요.",
  "rule.saqt.q.java.7178.example.0.dangerous": "라인 1: 금지된 패키지 이름이 검출되었습니다.",
  "rule.saqt.q.java.7178.example.0.safe": "라인 1: 허용된 패키지 이름입니다.",
  "rule.saqt.q.java.7178.name": "금지된 패키지 이름",
  "rule.saqt.q.java.7179.description": "금지된 클래스 이름이 발견되면 검출합니다.\n금지된 클래스 이름을 제거하거나, 옵션 설정을 통해 검출 리스트에서 제거합니다.",
  "rule.saqt.q.java.7179.example.0.dangerous": "라인 1: 금지된 클래스 이름이 사용되었습니다.",
  "rule.saqt.q.java.7179.example.0.safe": "라인 1: 허가된 클래스 이름이 사용되었습니다.",
  "rule.saqt.q.java.7179.name": "금지된 클래스 이름",
  "rule.saqt.q.java.7210.description": "`equals()` 또는 `equalsIgnoreCase()` 메소드 사용 시 비교하고자 하는 변수에 `null` 값이 존재하면 `NullPointerException`이 발생할 수 있습니다. 해당 체커는 옵션을 통해 금지 및 예외 패턴을 설정할 수 있습니다.\n\n```java\nString str = null;\nstr.equals(\"Sparrow\")\n```\n\n`equals()` 또는 `equalsIgnoreCase()` 메소드를 사용할 때 하드코드된 문자열이 앞에 오면 `NullPointerException`을 방지할 수 있습니다.",
  "rule.saqt.q.java.7210.example.0.dangerous": "라인 2: 변수 str이 문자열 비교에 직접 사용되었습니다.",
  "rule.saqt.q.java.7210.example.0.safe": "라인 2: 하드코드된 문자열을 equals() 메소드 앞에 두면 NullPointerException을 방지할 수 있습니다.",
  "rule.saqt.q.java.7210.name": "하드코딩된 값과 문자열 equal 비교",
  "rule.saqt.q.java.7211.description": "메소드 본문에 불필요한 문장이 존재하면 위반으로 판단합니다. 이는 구현 누락이나 불필요한 메소드 존재로 이어질 수 있습니다.\n메소드 본문에 필요한 코드를 추가하거나 불필요한 문장을 제거합니다.",
  "rule.saqt.q.java.7211.example.0.dangerous": "라인 2: 메소드 본문에 불필요한 문장이 작성되었습니다.",
  "rule.saqt.q.java.7211.example.0.safe": "라인 2: 메소드 본문에 불필요한 문장을 제거하고, 필요한 코드를 작성합니다.",
  "rule.saqt.q.java.7211.name": "필요 없는 문장 존재",
  "rule.saqt.q.java.7212.description": "if, else if, while, for, switch 분기문의 조건절에서 할당식을 사용하는 경우 규칙 위반으로 판단합니다. 코드 가독성 측면에서 조건식에 피연산자 내 할당문을 사용하지 않아야 합니다.\n제어문의 조건절에 할당식을 포함하지 않고, 코드를 분리하여 작성합니다.\n\n```java\nx = getX();\nif (x == 3) {\n...\n}\n```",
  "rule.saqt.q.java.7212.example.0.dangerous": "라인 3: 제어문의 조건절에 할당식이 포함되어 있습니다.",
  "rule.saqt.q.java.7212.example.0.safe": "라인 3: 제어문의 조건절에 할당식을 포함하지 않고, 코드를 분리하여 작성합니다.",
  "rule.saqt.q.java.7212.name": "제어문의 조건절에 할당식 사용 금지",
  "rule.saqt.q.java.7213.description": "코드 내 `SimpleDateFormat` 클래스를 발견하면 검출합니다. 해당 클래스는 멀티 스레드 환경에서 `Thread-Safe`를 보장하지 않으므로, 여러 스레드가 동시에 자원을 접근하면 데이터 불일치가 발생할 수 있어 사용을 권장하지 않습니다.\n\n- Thread-Safe란\n    - 멀티 스레드 환경에서 어떤 함수/변수/객체에 여러 스레드가 동시에 접근하더라도 프로그램의 실행에 문제가 없음을 뜻하는 용어입니다.\n`SimpleDataFormat` 대신 프레임워크에서 제공하는 `DateUtil` 클래스를 사용합니다. 해당 클래스는 `Thread-safe`를 보장하는 `DateTimeFormatter`를 지원하며, `ZoneID` 적용을 통해 원하는 지역의 시간을 일관되게 처리할 수 있습니다.",
  "rule.saqt.q.java.7213.example.0.dangerous": "라인 7: SimpleDateFormat 클래스는 Thread-Safe를 보장하지 않으므로 사용을 권장하지 않습니다.",
  "rule.saqt.q.java.7213.example.0.safe": "라인 7: DateTimeFormatter 클래스는 Thread-Safe를 보장하므로 안전합니다.",
  "rule.saqt.q.java.7213.name": "SimpleDateFormat 사용 금지",
  "rule.saqt.q.java.7219.description": "지정한 파일 경로 내 모든 파일의 메소드가 명명 규칙을 준수했는지 확인합니다.\n지정한 파일 경로 내 모든 파일의 메소드 이름을 명명 규칙을 준수하여 작성합니다.",
  "rule.saqt.q.java.7219.example.0.dangerous": "라인 3-4: 정해진 메소드 명명규칙에 의거하여 파일 경로 내 모든 메소드 이름은 소문자 알파벳으로만 시작되어야 합니다. 주어진 메소드 이름은 해당 규칙을 위반했습니다.",
  "rule.saqt.q.java.7219.example.0.safe": "라인 3-4: 정해진 메소드 명명규칙에 의거하여 파일 경로 내 모든 메소드 이름은 소문자 알파벳으로만 시작되어야 합니다. 주어진 메소드 이름은 해당 규칙을 준수했습니다.",
  "rule.saqt.q.java.7219.name": "특정 파일 경로 내 메소드 명명 규칙 확인",
  "rule.saqt.q.java.7220.description": "특정 패키지에 종속적인 메소드 명명 규칙이 부가적으로 존재하는 경우, 해당 패키지는 자체적인 명명 규칙에 대한 추가적인 검출이 필요합니다.\n필요시 getter/setter 메소드는 독립적인 명명 규칙을 사용할 수 있기 때문에, 해당 명명 규칙의 검출 범위에서 제외시킬 수 있습니다.\n특정 패키지에 종속적인 메소드 명명 규칙이 부가적으로 존재하는 경우, 해당 패키지는 자체적인 명명 규칙을 준수하여 메소드 이름을 작성합니다. 필요시 getter/setter 메소드는 독립적인 명명 규칙을 사용할 수 있기 때문에, 해당 명명 규칙의 검출 범위에서 제외시킨 후 검출합니다.",
  "rule.saqt.q.java.7220.example.0.dangerous": "라인 3-5: 정해진 메소드 명명규칙에 의거하여 패키지 내 모든 메소드 이름은 동사로만 시작되어야 합니다. 주어진 메소드 이름은 해당 규칙을 위반했습니다.",
  "rule.saqt.q.java.7220.example.0.safe": "라인 3-5: 정해진 메소드 명명규칙에 의거하여 패키지 내 모든 메소드 이름은 동사로만 시작되어야 합니다. 주어진 메소드 이름은 해당 규칙을 준수했습니다.",
  "rule.saqt.q.java.7220.name": "특정 패키지에 종속적인 메소드 명명 규칙 확인",
  "rule.saqt.q.java.7223.description": "FOR문을 제어하는 변수가 정해진 규칙을 준수했는지 확인합니다.\nFOR문을 제어하는 변수로 정수형이 아닌 실수형을 사용하는 경우 시작 및 종료 조건이 정상적으로 실행되지 않을 수 있습니다.\n\n추가적으로, FOR문을 제어하는 변수를 FOR문 내에서 변경하는 경우, 반복 횟수를 예측할 수 없어 코드 이해도가 떨어지고 계산이 잘못되는 경우 무한 루프가 발생할 수 있습니다.\n\n따라서 다음 두 가지 조건이 정해진 규칙에 따라 올바르게 설정되었는지 확인합니다:\n\n(1) FOR문을 제어하는 변수로 정수형이 아닌 실수형을 사용하는 것을 허용/금지합니다.\n\n(2) FOR문 제어 변수를 FOR문 내에서 변경할 수 있도록 허용/금지합니다.\n정해진 규칙에 맞춰 FOR문을 제어하는 변수가 변경되지 않도록 올바른 변수형을 사용합니다.",
  "rule.saqt.q.java.7223.example.0.dangerous": "라인 1-3: FOR문의 제어 변수로 정수형이 아닌 실수형을 사용했습니다.\n라인 5-9: FOR문의 제어 변수가 FOR문 내부에서 값이 변경되었습니다.",
  "rule.saqt.q.java.7223.example.0.safe": "라인 1-3: FOR문의 제어 변수로 정수형을 사용했습니다.\n라인 5-7: FOR문의 제어 변수가 FOR문 내부에서 값이 변경되지 않았습니다.",
  "rule.saqt.q.java.7223.name": "FOR문 제어 변수 확인",
  "rule.saqt.q.java.7224.description": "상수 클래스 내 메소드가 존재하면 위반으로 판단합니다. 상수 클래스는 주로 변경되지 않는 값들을 한곳에 모아 관리하는 용도로 사용되므로, 메소드는 불필요합니다. 해당 체커는 옵션을 통해 점검할 상수 클래스 및 검출 제외 메소드를 설정할 수 있습니다.\n상수 클래스 내 불필요한 메소드를 제거합니다.",
  "rule.saqt.q.java.7224.example.0.dangerous": "라인 7: 상수 클래스 내 불필요한 계산 메소드가 포함되어 있습니다.",
  "rule.saqt.q.java.7224.example.0.safe": "라인 5: 상수 클래스에는 오직 상수 값만 저장해야 하며, 계산 메소드는 별도의 클래스로 분리하여 관리합니다.",
  "rule.saqt.q.java.7224.name": "상수 클래스 내 메소드 생성 금지",
  "rule.saqt.q.java.7225.description": "동일 업무그룹 내 클래스 호출 규약을 위반하면 검출합니다. 해당 체커는 옵션을 통해 분석 대상 클래스, 호출 가능 클래스, 예외 패턴 등을 설정할 수 있습니다.\n동일 업무그룹 내 호출 규약을 위반한 클래스를 제거하고, 전체 호출 구조를 재점검합니다.",
  "rule.saqt.q.java.7225.example.0.dangerous": "라인 5: ComplexSVCImpl 클래스에서 동일 업무그룹인 BIZ 클래스를 호출 불가 클래스로 가정했을 때, 해당 코드는 동일 업무그룹 내 호출 규약을 위반한 사례입니다.",
  "rule.saqt.q.java.7225.example.0.safe": "라인 5: ComplexSVCImpl 클래스에서 동일 업무그룹인 SVCImpl 클래스를 호출 가능 클래스로 가정했을 때, 해당 코드는 동일 업무그룹 내 호출 규약을 준수한 사례입니다.",
  "rule.saqt.q.java.7225.name": "동일 업무그룹 내 클래스 호출 점검",
  "rule.saqt.q.java.7226.description": "클래스 내부에 선언된 멤버 변수의 사용을 금지합니다.\n클래스 멤버 변수 대신, 메소드 내부의 로컬 변수를 사용하거나 필요한 경우 생성자 인자, 메소드 인자 등을 활용하여 상태를 관리합니다.",
  "rule.saqt.q.java.7226.example.0.dangerous": "라인 3: 클래스 멤버 변수가 선언되어 있습니다.",
  "rule.saqt.q.java.7226.example.0.safe": "라인 3: 클래스 멤버 변수 대신 로컬 변수를 활용했습니다.",
  "rule.saqt.q.java.7226.name": "Class Member 변수 사용 금지(non-final)",
  "rule.saqt.q.java.7227.description": "지정한 파일 경로 내 모든 파일의 boolean 변수가 명명 규칙을 준수했는지 확인합니다.\n지정한 파일 경로 내 모든 파일의 boolean 변수명을 명명 규칙을 준수하여 작성합니다.",
  "rule.saqt.q.java.7227.example.0.dangerous": "라인 3: 정해진 boolean 변수 명명 규칙에 의거하여 파일 경로 내 모든 boolean 변수 이름은 소문자로만 시작되어야 합니다. 주어진 boolean 변수 이름은 해당 규칙을 위반했습니다.",
  "rule.saqt.q.java.7227.example.0.safe": "라인 3: 정해진 boolean 변수 명명 규칙에 의거하여 파일 경로 내 모든 boolean 변수 이름은 소문자로만 시작되어야 합니다. 주어진 boolean 변수 이름은 해당 규칙을 준수했습니다.",
  "rule.saqt.q.java.7227.name": "특정 파일 경로 내 boolean 변수 명명 규칙 확인",
  "rule.saqt.q.java.7228.description": "CATCH 문 내부에 THROW 문이 반드시 포함되어야 합니다.\nTHROW 문이 없는 CATCH 문 사용을 허용할 경우, THROW 문 대신 특정 형식의 주석을 CATCH 문 내에 포함해 작성합니다.\nCATCH 문 사용 시 내부에 THROW 문을 포함하여 작성합니다. THROW 문이 없는 CATCH 문 사용을 허용할 경우, THROW 문 대신 특정 형식의 주석을 CATCH 문 내에 포함해 작성합니다.",
  "rule.saqt.q.java.7228.example.0.dangerous": "라인 2-4: CATCH 블록 내에 THROW 문 또는 대체 주석이 존재하지 않습니다.",
  "rule.saqt.q.java.7228.example.0.safe": "라인 4: CATCH 블록 내에 THROW 문이 존재합니다.\n라인 10: CATCH 블록 내에 THROW 문 대체 주석이 존재합니다.",
  "rule.saqt.q.java.7228.name": "CATCH 문 내부에 THROW문 포함 여부 검사",
  "rule.saqt.q.java.7229.description": "null 값과 특정값을 비교할 때 `.equals()` 메소드를 사용하면 `NullPointerException`이 발생할 수 있습니다.\n`null` 값과 특정값을 비교할 경우 `==`을 사용합니다.",
  "rule.saqt.q.java.7229.example.0.dangerous": "라인 4: null 값과 특정값을 비교할 때 .equals() 메소드를 사용했습니다.",
  "rule.saqt.q.java.7229.example.0.safe": "라인 4: null 값과 특정값을 비교할 때 ==을 사용했습니다.",
  "rule.saqt.q.java.7229.name": "equals()을 이용한 null 비교 금지",
  "rule.saqt.q.java.7230.description": "불필요한 `import`문은 코드를 직관적으로 이해하는 데에 방해되는 요소입니다.\n불필요한 `import`문은 크게 3가지 종류가 있습니다:\n\n1. 동일한 패키지를 선언\n2. 중복된 패키지를 선언\n3. 사용되지 않는 패키지를 선언\n불필요한 `import`문을 사용하지 않습니다.",
  "rule.saqt.q.java.7230.example.0.dangerous": "라인 2-3: 이미 선언된 패키지에서 import 문을 선언했습니다.\n라인 5: 사용되지 않는 import 문을 선언했습니다.\n라인 6: 중복된 import 문을 선언했습니다.",
  "rule.saqt.q.java.7230.example.0.safe": "라인 2: 불필요한 import문을 사용하지 않았습니다.",
  "rule.saqt.q.java.7230.name": "특정 파일 경로 내 불필요한 import문 검사",
  "rule.saqt.q.java.7231.description": "타 업무그룹 내 클래스 호출 규약을 위반하면 검출합니다. 해당 체커는 옵션을 통해 분석 대상 클래스, 호출 가능 클래스, 예외 패턴 등을 설정할 수 있습니다.\n타 업무그룹 내 호출 규약을 위반한 클래스를 제거하고, 전체 호출 구조를 재점검합니다.",
  "rule.saqt.q.java.7231.example.0.dangerous": "라인 7: ComplexSVCImpl 클래스에서 타 업무그룹인 BIZ 클래스를 호출 불가 클래스로 가정했을 때, 해당 코드는 타 업무그룹 내 호출 규약을 위반한 사례입니다.",
  "rule.saqt.q.java.7231.example.0.safe": "라인 7: ComplexSVCImpl 클래스에서 타 업무그룹인 SVCImpl 클래스를 호출 가능 클래스로 가정했을 때, 해당 코드는 타 업무그룹 내 호출 규약을 준수한 사례입니다.",
  "rule.saqt.q.java.7231.name": "타 업무그룹 내 클래스 호출 점검",
  "rule.saqt.q.java.7232.description": "catch 블록에서 throw 하는 경우, 반드시 생성한 Exception 객체를 인자값에 포함하여 전달해야 합니다.\ncatch 블록에서 Exception을 받을 때 해당 Exception을 객체로 생성합니다. 따라서 해당 블록 내에서 throw 하는 경우, 생성한 Exception 객체를 인자값에 포함하여 전달하면 정확하게 해당 Exception을 처리할 수 있습니다.\ncatch 블록에서 throw 하는 경우, 반드시 생성한 Exception 객체를 인자값에 포함하여 전달합니다.",
  "rule.saqt.q.java.7232.example.0.dangerous": "라인 2: catch 블록에서 throw 할 때 생성한 Exception 객체를 인자값에 포함하지 않았습니다.",
  "rule.saqt.q.java.7232.example.0.safe": "라인 2: catch 블록에서 throw 할 때 생성한 Exception 객체를 인자값에 포함했습니다.",
  "rule.saqt.q.java.7232.name": "특정 파일 경로 내 catch 블록 내부 throw 인자에 Exception 객체 포함 여부 확인",
  "rule.saqt.q.java.7233.description": "특정 파일 경로 내 금지된 Exception의 인스턴스 생성 및 사용을 금지합니다.\n특정 Exception 인스턴스를 생성하거나 사용할 경우, 정확히 어느 지점에서 해당 Exception이 발생했고 원인이 무엇인지 파악하기 어렵습니다.\n특정 Exception 인스턴스를 금지하여 생성하거나 사용하지 않습니다. 대신 발생 원인 및 상황에 맞는 Exception의 인스턴스를 생성 및 사용하여 해당 Exception에 적절한 catch 문을 통해 상황을 해결합니다.",
  "rule.saqt.q.java.7233.example.0.dangerous": "라인 4: 금지된 NullPointerException 인스턴스를 생성했습니다.\n라인 12: throw 문에서 금지된 IOException을 생성했습니다.",
  "rule.saqt.q.java.7233.example.0.safe": "라인 4: 금지되지 않은 IllegalArgumentException 인스턴스를 생성했습니다.\n라인 12: throw 문에서 금지된 Exception을 사용하지 않았습니다.",
  "rule.saqt.q.java.7233.name": "특정 파일 경로 내 금지된 Exception 인스턴스 생성 및 사용 금지",
  "rule.saqt.q.java.7234.description": "특정 파일 경로 내 로거 객체의 지정된 메소드 인자 값에서 금지된 패턴이 있는지 확인합니다.\n로거 객체의 몇몇 특정 메소드는 인자값 내 toString() 메소드를 사용하지 않아야 하는 등의 제약이 존재할 수 있습니다. 따라서 검출할 지정 메소드 목록과 해당 메소드 인자 값에 금지된 패턴을 설정한 뒤, 이를 준수하지 않은 코드를 검출합니다.\n특정 파일 경로 내 로거 객체의 지정된 메소드 인자 값에서 금지된 패턴을 사용하지 않습니다.",
  "rule.saqt.q.java.7234.example.0.dangerous": "라인 3: 특정 파일 경로 내 로그 객체의 지정된 메소드 인자 값에서 금지된 패턴을 사용했습니다.",
  "rule.saqt.q.java.7234.example.0.safe": "라인 3: 특정 파일 경로 내 로그 객체의 지정된 메소드 인자 값에서 금지된 패턴을 사용하지 않았습니다.",
  "rule.saqt.q.java.7234.name": "특정 파일 경로 내 로거 객체의 지정된 메소드 인자 값에서 금지된 패턴 존재 확인",
  "rule.saqt.q.java.7235.description": "타 업무 메시지 코드 규약을 위반하면 검출합니다. 해당 체커는 옵션을 통해 분석 대상 메소드, 메시지 코드 허용 패턴, 애플리케이션 코드 검사 여부, 분석 대상 애플리케이션 코드, 예외 패턴 등을 설정할 수 있습니다.\n타 업무 메시지 코드 규약을 점검하고, 위반된 문자열을 제거합니다.",
  "rule.saqt.q.java.7235.example.0.dangerous": "라인 1: Business_Msg 메소드의 인수로 전달되는 업무 메시지 코드의 허용 패턴이 BESPARROW인 경우, 해당 코드는 업무 메시지 코드 규약을 위반한 사례입니다.",
  "rule.saqt.q.java.7235.example.0.safe": "라인 1: Business_Msg 메소드의 인수로 전달되는 업무 메시지 코드의 허용 패턴이 BESPARROW인 경우, 해당 코드는 업무 메시지 코드 규약을 준수한 사례입니다.",
  "rule.saqt.q.java.7235.name": "타 업무 메시지 코드 사용 금지",
  "rule.saqt.q.java.7236.description": "Inner 클래스는 코드 복잡성을 증가시키고, 가독성과 테스트 용이성을 해칠 수 있습니다.\n해당 클래스를 외부 클래스로 리팩토링하여 별도로 분리합니다.",
  "rule.saqt.q.java.7236.example.0.dangerous": "라인 2: Inner 클래스를 사용하여 가독성을 해칠 수 있습니다.",
  "rule.saqt.q.java.7236.example.0.safe": "라인 2: 클래스를 분리하여 규칙을 준수합니다.",
  "rule.saqt.q.java.7236.name": "Inner 클래스 금지",
  "rule.saqt.q.java.7237.description": "특정 파일 경로 내 메소드의 코드 라인 수가 금지된 범위에 포함되면 검출합니다.\n메소드의 라인 수가 지나치게 많은 경우, 필요 이상으로 많은 기능을 할당했을 가능성이 높습니다. 이는 코드 가시성 저하, 유지보수 및 디버깅의 어려움을 유발합니다. 따라서 해당 메소드를 독립적인 클래스로 분리하거나, 여러 세분화된 private 메소드로 나누는 것을 권장합니다.\n\n메소드의 라인 수가 지나치게 적은 경우, 다른 메소드에 포함할 수 있는 기능을 과도하게 분리하여 구현했을 가능성이 높습니다. 그러면 불필요하게 많은 함수를 호출하므로 코드의 직관적인 이해가 어렵고 유지보수 및 디버깅이 어려워집니다. 따라서 해당 메소드를 호출하는 다른 메소드와 합치는 것이 좋습니다.\n특정 파일 경로 내 메소드의 코드 라인 수가 금지된 범위에 포함되지 않도록 작성하세요.",
  "rule.saqt.q.java.7237.example.0.dangerous": "라인 5: 메소드 내부 코드의 라인 수가 금지된 범위에 포함되었습니다.",
  "rule.saqt.q.java.7237.example.0.safe": "라인 2-4: 메소드 내부 코드의 라인 수가 금지된 범위에 포함되지 않았습니다.",
  "rule.saqt.q.java.7237.name": "특정 파일 경로 내 메소드 라인 수 확인",
  "rule.saqt.q.java.7238.description": "Java에서는 문자열 리터럴을 사용하면 내부적으로 이미 생성된 인스턴스를 재사용합니다. 그러나 new 연산자를 사용하면 매번 새로운 인스턴스가 생성되므로 메모리 낭비 및 성능 저하를 초래할 수 있습니다.\n문자열을 생성할 때는 new 연산자 대신 문자열 리터럴을 직접 사용합니다.",
  "rule.saqt.q.java.7238.example.0.dangerous": "라인 1: new 연산자가 새로운 인스턴스를 생성하여 메모리 낭비를 유발합니다.",
  "rule.saqt.q.java.7238.example.0.safe": "라인 1: 문자열 리터럴을 직접 사용하여 불필요한 인스턴스 생성을 방지합니다.",
  "rule.saqt.q.java.7238.name": "불필요한 String Instance 생성 금지",
  "rule.saqt.q.java.7239.description": "문자열 객체는 이미 내부적으로 불변 인스턴스로 관리되고 있으며, 문자열 리터럴이나 String 변수는 이미 toString() 호출 없이도 사용 가능합니다.\n문자열을 사용할 때는 toString()을 호출하지 않고, 직접 변수나 리터럴을 사용합니다.",
  "rule.saqt.q.java.7239.example.0.dangerous": "라인 2: 불필요한 toString()이 사용되었습니다.",
  "rule.saqt.q.java.7239.example.0.safe": "라인 2: 문자열 변수를 그대로 사용합니다.",
  "rule.saqt.q.java.7239.name": "불필요한 toString() 메소드 사용 점검",
  "rule.saqt.q.java.7240.description": "괄호 없이도 충분히 의미가 전달되는 경우에 불필요하게 괄호를 사용하는 것은 코드 가독성을 떨어뜨릴 수 있습니다.\n괄호가 없어도 표현식의 의미가 명확한 경우에는 괄호를 제거하여 코드를 간결하게 만듭니다.",
  "rule.saqt.q.java.7240.example.0.dangerous": "라인 1, 2: 불필요한 괄호가 사용되어 코드가 복잡해 보일 수 있습니다.",
  "rule.saqt.q.java.7240.example.0.safe": "라인 1, 2: 불필요한 괄호를 사용하지 않아 코드의 가독성이 좋습니다.",
  "rule.saqt.q.java.7240.name": "불필요한 괄호 사용",
  "rule.saqt.q.java.7241.description": "코드 내에서 예외를 단순히 던지는 경우는 문제가 발생했을 때 원인을 파악하기 어렵게 만들고, 예외 전파 시 추가적인 컨텍스트가 부족하여 디버깅이 힘들어집니다.\n예외 메시지를 보강하거나 커스텀 예외 클래스로 감싼 후에 throw합니다.",
  "rule.saqt.q.java.7241.example.0.dangerous": "라인 1: 가공되지 않은 Exception을 사용하여 예외 발생 시 문제를 파악하기 어렵습니다.",
  "rule.saqt.q.java.7241.example.0.safe": "라인 1: 예외 발생 시 추가적인 정보를 얻을 수 있어 디버깅이 쉬워집니다.",
  "rule.saqt.q.java.7241.name": "비가공 Exception throw 금지",
  "rule.saqt.q.java.7242.description": "특정 파일 경로 내 선언되었으나 실제 코드 내 사용되지는 않은 private 메소드를 검출합니다.\n사용하지 않는 private 메소드의 선언은 성능을 저하시킬 수 있습니다.\n특정 파일 경로 내 미사용된 private 메소드를 삭제하거나 주석 처리합니다.",
  "rule.saqt.q.java.7242.example.0.dangerous": "라인 4-6: 사용되지 않은 private 메소드를 선언했습니다.",
  "rule.saqt.q.java.7242.example.0.safe": "라인 4-9: 사용되지 않은 private 메소드를 주석 처리했습니다.",
  "rule.saqt.q.java.7242.name": "특정 파일 경로 내 미사용 private 메소드 검출",
  "rule.saqt.q.java.7243.description": "빈 문자열인지 확인할 때, `String.trim().length()`를 사용하면 불필요한 연산과 예외 상황이 발생할 수 있습니다.\n빈 문자열 확인 시 `StringUtil.isEmpty(String)` 메소드를 활용하여 판단합니다.\n- 옵션으로 메소드가 추가될 수 있습니다.",
  "rule.saqt.q.java.7243.example.0.dangerous": "라인 1: 불필요한 연산과 null 처리가 누락될 위험이 있는 확인 방법입니다.",
  "rule.saqt.q.java.7243.example.0.safe": "라인 1: 코드가 간결해지고 null 안전성을 확보할 수 있습니다.",
  "rule.saqt.q.java.7243.name": "빈 문자열 확인 점검",
  "rule.saqt.q.java.7244.description": "메소드의 입력 파라미터는 호출자로부터 전달된 데이터로, 외부에서 관리되고 있을 가능성이 높습니다. 입력 파라미터를 직접 수정하는 경우, 호출자에게 원치 않는 영향을 미칠 수 있으므로 읽기 전용으로 간주하고 수정하지 않아야 합니다.\n입력 파라미터를 수정하지 않고, 필요한 경우 해당 파라미터의 복사본을 생성하여 수정합니다.",
  "rule.saqt.q.java.7244.example.0.dangerous": "라인 2: 입력 파라미터에 직접 접근하여 값을 변경하고 있습니다.",
  "rule.saqt.q.java.7244.example.0.safe": "라인 3: 복사본을 생성하여 값을 변경하고 있습니다.",
  "rule.saqt.q.java.7244.name": "입력 파라미터 수정 금지",
  "rule.saqt.q.java.7245.description": "특정 파일 경로 내 선언되었으나 실제 코드 내 사용되지는 않은 private 변수를 검출합니다.\n사용하지 않는 private 변수의 선언은 성능을 저하시킬 수 있습니다.\n특정 파일 경로 내 미사용된 private 변수를 삭제하거나 주석 처리합니다.",
  "rule.saqt.q.java.7245.example.0.dangerous": "라인 2: 사용되지 않은 private 변수를 선언했습니다.",
  "rule.saqt.q.java.7245.example.0.safe": "라인 2-3: 사용되지 않은 private 변수를 주석 처리했습니다.",
  "rule.saqt.q.java.7245.name": "특정 파일 경로 내 미사용 private 변수 검출",
  "rule.saqt.q.java.7292.description": "클래스에 final 멤버 변수를 선언하는 것을 금지합니다.\n클래스에 final 멤버 변수를 선언하지 않고, 필요한 값은 메소드 내부의 지역 변수나 매개변수를 통해 관리합니다.",
  "rule.saqt.q.java.7292.example.0.dangerous": "라인 3: 클래스에 final 멤버 변수가 선언되어 있습니다.",
  "rule.saqt.q.java.7292.example.0.safe": "라인 4: final 멤버 변수를 선언하지 않고, 메소드 내부에서 지역 변수를 활용했습니다.",
  "rule.saqt.q.java.7292.name": "Class Member 변수 사용 금지(final)",
  "rule.saqt.q.java.7293.description": "특정 패키지에 종속적인 메소드 명명 규칙이 부가적으로 존재하는 경우, 해당 패키지는 자체적인 명명 규칙에 대한 추가적인 검출이 필요합니다.\n필요시 getter/setter 메소드는 독립적인 명명 규칙을 사용할 수 있기 때문에, 해당 명명 규칙의 검출 범위에서 제외시킬 수 있습니다.\n특정 패키지에 종속적인 메소드 명명 규칙이 부가적으로 존재하는 경우, 해당 패키지는 자체적인 명명 규칙을 준수하여 메소드 이름을 작성합니다. 필요시 getter/setter 메소드는 독립적인 명명 규칙을 사용할 수 있기 때문에, 해당 명명 규칙의 검출 범위에서 제외시킨 후 검출합니다.",
  "rule.saqt.q.java.7293.example.0.dangerous": "라인 3-5: 정해진 메소드 명명규칙에 의거하여 패키지 내 모든 메소드 이름은 동사로만 시작되어야 합니다. 주어진 메소드 이름은 해당 규칙을 위반했습니다.",
  "rule.saqt.q.java.7293.example.0.safe": "라인 3-5: 정해진 메소드 명명규칙에 의거하여 패키지 내 모든 메소드 이름은 동사로만 시작되어야 합니다. 주어진 메소드 이름은 해당 규칙을 준수했습니다.",
  "rule.saqt.q.java.7293.name": "메소드 명명 규칙 확인",
  "rule.saqt.q.java.761.description": "제어 없이 동기화 블록 내에서의 wait 사용 체커는 synchronized 블록 내에서 wait() 메소드를 호출할 때 아무런 제어가 없을 경우를 검출합니다.\nwait() 메소드는 현재 스레드의 작업 진행에 필요한 특정한 조건이 충족될 때까지 기다려야할 때 호출합니다. 이 조건을 확인하면서 대기하는 것이 일반적이므로 wait() 메소드가 아무런 조건 없이 호출된다면 코드를 잘못 작성했을 가능성이 높습니다.\nwait() 메소드를 적절한 조건문 혹은 반복문으로 제어합니다.",
  "rule.saqt.q.java.761.example.0.dangerous": "라인 3: wait() 메소드가 아무런 제어 없이 호출되었습니다.",
  "rule.saqt.q.java.761.example.0.safe": "라인 4: 대기에 조건을 걸어 반복문으로 감싸줍니다.",
  "rule.saqt.q.java.761.name": "제어 없이 동기화 블록 내에서의 wait 사용",
  "rule.saqt.q.java.761.option.check_if_stmt.description": "체크해제시 if문 내의 wait 메소드를 검출합니다.",
  "rule.saqt.q.java.761.option.check_if_stmt.name": "if문 검출 여부",
  "rule.saqt.q.java.761.option.wait_method.description": "wait 메소드의 이름을 FQN으로 작성합니다.<br />예시) java.util.concurrent.locks.Lock.wait",
  "rule.saqt.q.java.761.option.wait_method.name": "wait 메소드 이름",
  "rule.saqt.q.java.762.description": "동기화 블록 내에서의 notify 사용 체커는 synchronized 블록 내에서 notify() 메소드를 호출하는 경우를 검출합니다.\nnotify() 메소드는 어떤 스레드를 깨울지 불명확하므로 사용하지 않도록 합니다.\nnotifyAll() 메소드로 모든 스레드를 깨우고 어떤 스레드가 실제로 다음 단계로 넘어갈지를 제어합니다.",
  "rule.saqt.q.java.762.example.0.dangerous": "라인 6: notify() 메소드를 호출했습니다.",
  "rule.saqt.q.java.762.example.0.safe": "라인 6: notifyAll() 메소드로 교체합니다.",
  "rule.saqt.q.java.762.name": "동기화 블록 내에서의 notify 사용",
  "rule.saqt.q.java.762.option.notify_method.description": "notify 메소드의 이름을 FQN으로 작성합니다.<br />예시) java.lang.Object.notify",
  "rule.saqt.q.java.762.option.notify_method.name": "notify 메소드 이름",
  "rule.saqt.q.java.763.description": "지정된 예외 처리 방식 위반 체커는 반드시 예외 처리가 필요한 예외 클래스를 처리하지 않았거나, 처리하지 말아야 할 예외 클래스를 처리한 경우를 검출합니다.\n처리가 필요한 예외 클래스 및 처리하지 말아야 할 예외 클래스는 옵션으로 조정 가능합니다.\n프로그램이 모든 부분에서 일관적으로 동작할 수 있도록 특정한 종류의 예외를 반드시 처리하도록 하거나 반대로 특정한 예외는 처리하지 않도록 지정하는 것이 필요할 수 있습니다. 예를 들어 다른 구체적인 예외들의 상위 추상 클래스를 금지해두고 실제로 발생하는 구체적인 예외들을 일일이 개별 처리하도록 강제할 수 있습니다.\n반드시 처리하도록 지정된 예외를 발생시키는 메소드를 호출할 때는 그 예외를 catch 블록으로 꼭 처리합니다. 반대로 금지된 예외는 catch 블록에서 직접 처리하지 않습니다.",
  "rule.saqt.q.java.763.example.0.dangerous": "라인 5: 이 예시에서는 SQLException 예외 처리가 필수로 지정되었다고 가정합니다. 필수적인 예외 처리를 하지 않았습니다.",
  "rule.saqt.q.java.763.example.0.safe": "라인 5: 필수로 지정된 SQLException 예외를 반드시 처리합니다.",
  "rule.saqt.q.java.763.name": "지정된 예외 처리 방식 위반",
  "rule.saqt.q.java.763.option.forbidden_exception.description": "금지할 예외 클래스의 이름을 FQN으로 작성합니다.<br />예시) java.io.IOException",
  "rule.saqt.q.java.763.option.forbidden_exception.name": "금지할 예외 클래스 이름",
  "rule.saqt.q.java.763.option.required_exception.description": "포함해야 할 예외 클래스의 이름을 FQN으로 작성합니다.<br />예시) java.sql.SQLException",
  "rule.saqt.q.java.763.option.required_exception.name": "포함해야 할 예외 클래스 이름",
  "rule.saqt.q.java.764.description": "제어 블록 밖에서의 sleep 혹은 yield 사용 체커는 조건에 의한 제어 없이 sleep() 혹은 yeidl() 메소드를 호출하는 경우를 검출합니다.\n해당 메소드가 반드시 조건부로 호출되도록 제어 구문을 작성합니다.",
  "rule.saqt.q.java.764.example.0.dangerous": "라인 3: Thread.sleep() 메소드가 제어 없이 호출됩니다.\n라인 7: Thread.yeild() 메소드가 제어 없이 호출됩니다.",
  "rule.saqt.q.java.764.example.0.safe": "라인 5: Thread.sleep() 메소드가 while 구문의 제어 하에 호출됩니다.",
  "rule.saqt.q.java.764.name": "제어 블록 밖에서의 sleep 혹은 yield 사용",
  "rule.saqt.q.java.764.option.sleep_method.description": "sleep 메소드의 이름을 FQN으로 작성합니다.<br />예시) java.lang.Thread.sleep",
  "rule.saqt.q.java.764.option.sleep_method.name": "sleep 메소드 이름",
  "rule.saqt.q.java.764.option.yield_method.description": "yield 메소드의 이름을 FQN으로 작성합니다.<br />예시) java.lang.Thread.yield",
  "rule.saqt.q.java.764.option.yield_method.name": "yield 메소드 이름",
  "rule.saqt.q.java.767.description": "부동 소수점 값에 대한 == 연산 체커는 두 부동 소수점 값을 == 연산자로 비교하는 경우를 검출합니다.\n부동 소수점 값은 여러 연산을 거치면서 조금씩 오차가 쌓일 수 있습니다. 따라서 같은 값을 가질 것으로 기대되는 두 값이 실제로는 아주 조금 다른 값일 수 있고 이로 인해 의도와 다른 방식으로 프로그램이 작동할 수 있습니다.\n두 부동 소수점 값이 같은지 비교하고 싶다면 두 값의 차가 미리 정해둔 충분히 작은 값 이내인지 확인하는 방식으로 비교해야 합니다.",
  "rule.saqt.q.java.767.example.0.dangerous": "라인 6: 부동 소수점 값을 == 연산자로 비교하고 있습니다.",
  "rule.saqt.q.java.767.example.0.safe": "라인 6: 두 값의 차가 적당히 작은 값 이내인지 확인하는 방식으로 비교합니다.",
  "rule.saqt.q.java.767.name": "부동 소수점 값에 대한 == 연산",
  "rule.saqt.q.java.768.description": "잘못된 컬렉션 내 객체 제거 체커는 정수값을 담는 컬렉션 객체에 대해 remove 메소드의 인자로 정수 상수가 포함된 식을 사용하는 경우를 검출합니다.\n컬렉션 클래스에 기본적으로 존재하는 remove() 메소드는 java.lang.Object 타입에 대해 정의되어 있이기 때문에 모든 타입의 값을 인자로 받을 수 있습니다. 정수형 원시 타입 상수도 암시적 박싱에 의해 래퍼 객체로(예: int 값에서 java.lang.Integer 객체로) 변환되어 인자로 전달됩니다. 따라서 remove() 메소드에 정수 상수를 그냥 전달하면 의도와 다른 방식으로 해석될 여지가 있습니다. 특히 AbstractList 클래스에서 파생되는 컬렉션의 경우에는 제거할 요소의 위치를 지정하는 remove(int) 메소드가 추가로 오버로딩 되어 있어서 더욱 복잡해집니다. 따라서 정수 호환형 타입을 담는 컬렉션 객체에 대해 remove() 메소드를 사용할 때는 많은 주의가 필요합니다.\nremove() 메소드에 상수가 포함된 인자를 전달할 때는 컬렉션의 요소 타입으로 명시적 캐스팅하여 어떤 의도로 작성한 코드인지를 명확히 해두는 것이 좋습니다.",
  "rule.saqt.q.java.768.example.0.dangerous": "라인 6: short 타입을 담는 컬렉션의 remove() 메소드에 정수 상수가 포함된 식이 전달됩니다.",
  "rule.saqt.q.java.768.example.0.safe": "라인 6: 인자를 short 타입으로 명확히 캐스팅하여 remove() 메소드에 전달합니다.",
  "rule.saqt.q.java.768.name": "잘못된 컬렉션 내 객체 제거",
  "rule.saqt.q.java.769.description": "외부 클래스의 private 멤버에 접근 체커는 내부 클래스에서 외부 클래스의 private 멤버에 접근하는 경우를 검출합니다.\nJava의 언어 스펙상으로는 중첩 클래스 중 내부에서 외부의 모든 멤버에 접근하는 것이 가능합니다. 그런데 JVM 바이트 코드에서는 중첩 클래스라는 개념이 따로 없기 때문에 모든 클래스가 독립적으로 존재하도록 컴파일됩니다. 이때 다른 클래스의 private 필드에 접근하는 것은 불가능하기 때문에, 내부 클래스에서 외부 클래스의 private 멤버에 직접 접근하도록 코드를 작성하면 컴파일 과정에서 내부 클래스가 이 멤버에 접근하기 위해 필요한 특정한 메소드를 외부 클래스에 생성하게 됩니다. 이러한 상황이 일어나는 것을 방지하기 위해 외부 클래스의 private 필드에 직접 접근하지 않는 것이 좋습니다.\n외부 클래스의 private 멤버에 직접 접근하지 않고 public 메소드를 통해 접근합니다. 내부 클래스에 공개해야 할 멤버는 private으로 선언하지 않고 public이나 protected로 선언합니다.",
  "rule.saqt.q.java.769.example.0.dangerous": "라인 8: 외부 클래스의 private 멤버인 doNotAccess에 직접 접근하고 있습니다.",
  "rule.saqt.q.java.769.example.0.safe": "라인 2: 내부 클래스에게 공개할 멤버를 protected로 선언합니다.",
  "rule.saqt.q.java.769.name": "외부 클래스의 private 멤버에 접근",
  "rule.saqt.q.java.770.description": "해제되지 않은 잠금 체커는 메소드 내에서 잠금 객체를 사용하여 잠금을 했지만 해당 메소드 내에서 잠금 해제를 해주지 않는 경우를 검출합니다.\n잠금과 잠금 해제를 한 메소드 안에서 하지 않으면 잠금을 관리하는 흐름을 한 눈에 이해하기 어렵기 때문에 실수를 발생시키기 쉽습니다. 따라서 한 메소드에서 잠금을 했다면 해제도 그 메소드 안에서 하는 것이 좋습니다.\n잠금을 수행한 메소드 안에서 해제도 처리해줍니다.",
  "rule.saqt.q.java.770.example.0.dangerous": "라인 8: lock() 메소드를 호출하지만 unlock() 메소드 호출은 존재하지 않습니다. 다른 메소드에서 unlock() 메소드를 호출할지도 모르지만 잠금 관리가 어떻게 이루어지는지 이해하기 어렵습니다.",
  "rule.saqt.q.java.770.example.0.safe": "라인 10: lock() 메소드 호출과 unlock() 메소드 호출을 한 메소드 add() 안에서 모두 수행합니다.",
  "rule.saqt.q.java.770.name": "해제되지 않은 잠금",
  "rule.saqt.q.java.771.description": "notify 되지 않은 객체 체커는 한 클래스 안에서 notify() 혹은 notifyAll() 메소드 호출 없이 wait() 메소드 호출만 존재하는 경우를 검출합니다.\n객체에 대해 wait() 메소드를 호출하면 다른 스레드에서 해당 객체에 대해 notifiy() 혹은 notifyAll() 메소드 호출을 통해 깨워질 때까지 대기하기 때문에 둘은 반드시 쌍으로 존재해야 합니다. 현재 클래스 안에서 깨워주지 않더라도 다른 클래스에서 깨워주는 것도 불가능하지는 않지만 프로그램을 이해하기 어려워집니다.\nwait() 메소드 호출과 notifiy() 혹은 notifyAll() 메소드 호출을 한 클래스 안에서 쌍으로 유지합니다.",
  "rule.saqt.q.java.771.example.0.dangerous": "라인 6: wait() 메소드를 호출하지만 클래스 내에 notify() 혹은 notifyAll() 메소드 호출이 없습니다.",
  "rule.saqt.q.java.771.example.0.safe": "라인 14: notifyAll() 메소드 호출을 추가합니다.",
  "rule.saqt.q.java.771.name": "notify 되지 않은 객체",
  "rule.saqt.q.java.772.description": "불필요한 반복자 변수 형변환 체커는 Iterator 타입 객체의 next() 메소드의 반환 값을 불필요하게 캐스팅하는 경우를 검출합니다.\n제네릭으로 요소 타입이 명시된 Iterator 클래스라면 next() 메소드의 반환 값을 캐스팅할 필요가 없습니다. 이미 반환 값의 정적 타입이 요소 타입이기 때문입니다.\n불필요한 캐스팅을 삭제합니다.",
  "rule.saqt.q.java.772.example.0.dangerous": "라인 3: iter 변수가 Iteartor<String> 타입으로 선언되었습니다. 제네릭 타입 매개 변수에 String이 지정되었습니다.\n라인 5: next() 메소드의 반환 타입이 제네릭 타입에 의해 이미 String이 되었으므로 캐스팅은 무의미합니다.",
  "rule.saqt.q.java.772.example.0.safe": "라인 6: 불필요한 캐스팅을 삭제합니다.\n라인 7: 반면에 iter2에는 제네릭 타입 매개 변수가 명시되지 않았으므로 next() 메소드 호출 시 캐스팅이 필요합니다.",
  "rule.saqt.q.java.772.name": "불필요한 반복자 변수 형변환",
  "rule.saqt.q.java.773.description": "함수 호출 시 발생하는 암시적 형변환 체커는 메소드 호출식의 인자에서 암시적 캐스팅이 일어나는 경우를 검출합니다.\n검출 대상은 메소드의 매개 변수 타입은 실수형인데 인자로 정수가 전달되는 경우입니다.\n암시적 캐스팅이 일어나면 눈에 띄지 않게 값의 정확도가 변경될 수 있는 등의 문제가 있으므로 명시적 캐스팅을 사용하는 것이 좋습니다.\n명시적 캐스팅을 사용합니다.",
  "rule.saqt.q.java.773.example.0.dangerous": "라인 8: 변수 num의 타입은 정수인데 암묵적으로 double 타입으로 변환된 값이 addDouble() 메소드에 인자로 전달됩니다.",
  "rule.saqt.q.java.773.example.0.safe": "라인 8: 암시적 캐스팅이 일어나지 않도록 명시적으로 캐스팅을 수행합니다.",
  "rule.saqt.q.java.773.name": "함수 호출 시 발생하는 암시적 형변환",
  "rule.saqt.q.java.774.description": "대입 시 발생하는 암시적 형변환 체커는 대입 연산의 좌변과 우변 사이 타입이 달라서 암시적 캐스팅이 일어나는 경우를 검출합니다.\n정수형 변수에 실수형 값을 대입하거나 반대로 실수형 변수에 정수형 값을 대입하는 것이 검출 대상입니다.\n암시적 캐스팅이 일어나면 눈에 띄지 않게 값의 정확도가 변경될 수 있는 등의 문제가 있으므로 명시적 캐스팅을 사용하는 것이 좋습니다.\n명시적 캐스팅을 사용합니다.",
  "rule.saqt.q.java.774.example.0.dangerous": "라인 4: 정수형 변수 intNum의 값이 암묵적으로 double 타입으로 변환되어 실수형 변수 doubleNum에 대입됩니다.",
  "rule.saqt.q.java.774.example.0.safe": "라인 4: 암시적 캐스팅이 일어나지 않도록 명시적으로 캐스팅을 수행합니다.",
  "rule.saqt.q.java.774.name": "대입 시 발생하는 암시적 형변환",
  "rule.saqt.q.java.775.description": "반환 시 발생하는 암시적 형변환 체커는 메소드의 반환 타입과 실제 반환하는 값의 타입이 달라서 암시적 캐스팅이 일어나는 경우를 검출합니다.\n반환 타입이 실수형인데 정수형 값을 반환하거나 반대로 반환 타입이 정수형인데 실수형 값을 반환하는 것이 검출 대상입니다.\n암시적 캐스팅이 일어나면 눈에 띄지 않게 값의 정확도가 변경될 수 있는 등의 문제가 있으므로 명시적 캐스팅을 사용하는 것이 좋습니다.\n명시적 캐스팅을 사용합니다.",
  "rule.saqt.q.java.775.example.0.dangerous": "라인 3: 정수형 변수 intNum의 값이 암묵적으로 double 타입으로 변환 후 반환됩니다.",
  "rule.saqt.q.java.775.example.0.safe": "라인 3: 암시적 캐스팅이 일어나지 않도록 명시적으로 캐스팅을 수행합니다.",
  "rule.saqt.q.java.775.name": "반환 시 발생하는 암시적 형변환",
  "rule.saqt.q.java.776.description": "중첩된 try 구문 사용 체커는 try 구문의 블록 안에 또 다른 try 구문을 중첩해서 사용하는 경우를 검출합니다.\n완전히 별도의 try 구문으로 분리하거나 하나의 try 구문으로 합칩니다.",
  "rule.saqt.q.java.776.example.0.dangerous": "라인 4: try 구문의 블록 안에 try 구문이 한 번 더 등장합니다.",
  "rule.saqt.q.java.776.example.0.safe": "라인 3: 두 개의 별도의 try 구문으로 분리합니다.",
  "rule.saqt.q.java.776.name": "중첩된 try 구문 사용",
  "rule.saqt.q.java.777.description": "외부 클래스의 private 필드 반환 체커는 내부 클래스에서 외부 클래스의 private 멤버에 접근하여 직접 값을 반환하는 경우를 검출합니다.\nJava의 언어 스펙상으로는 중첩 클래스 중 내부에서 외부의 모든 멤버에 접근하는 것이 가능합니다. 그런데 JVM 바이트 코드에서는 중첩 클래스라는 개념이 따로 없기 때문에 모든 클래스가 독립적으로 존재하도록 컴파일됩니다. 이때 다른 클래스의 private 필드에 접근하는 것은 불가능하기 때문에, 내부 클래스에서 외부 클래스의 private 멤버에 직접 접근하도록 코드를 작성하면 컴파일 과정에서 내부 클래스가 이 멤버에 접근하기 위해 필요한 특정한 메소드를 외부 클래스에 생성하게 됩니다. 이러한 상황이 일어나는 것을 방지하기 위해 외부 클래스의 private 필드에 직접 접근하지 않는 것이 좋습니다. 또한, 해당 private 필드가 원시 타입이 아닌 레퍼런스 타입이라면 private 한정자를 통해 외부로 직접 노출시키지 않으려 했던 객체가 외부로 노출되는 결과라 발생할 수 있으므로 더욱 주의가 필요합니다.\n외부 클래스의 private 멤버에 직접 접근하지 않고 public 메소드를 통해 접근합니다. 내부 클래스에게 공개해야 할 멤버는 private으로 선언하지 않고 public이나 protected로 선언합니다.",
  "rule.saqt.q.java.777.example.0.dangerous": "라인 5: 외부 클래스의 private 필드인 outerField 변수를 바로 반환하고 있습니다.",
  "rule.saqt.q.java.777.example.0.safe": "라인 2: 내부 클래스에게 공개할 멤버를 protected로 선언합니다.",
  "rule.saqt.q.java.777.name": "외부 클래스의 private 필드 반환",
  "rule.saqt.q.java.778.description": "생성자를 사용한 문자열 변환 체커는 어떤 객체를 생성한 다음 즉시 toString() 메소드로 문자열로 변환하는 경우를 검출합니다.\n대부분 해당 생성자를 호출하지 않고도 원하는 문자열을 생성해낼 방법이 존재합니다. 예를 들어 원시 타입의 래퍼 클래스에는 래퍼 객체 생성 없이 값을 바로 문자열로 변환해주는 정적 메소드들이 존재합니다. 그럼에도 굳이 생성자를 호출하여 객체를 생성하면 불필요하게 메모리를 더 소모하게 됩니다.\n임시 객체를 생성하지 않고 다른 방법으로 문자열 변환을 시도합니다.",
  "rule.saqt.q.java.778.example.0.dangerous": "라인 3: 변수 arg를 문자열로 변환하기 위해 새로운 Integer 객체를 생성하고 있습니다.",
  "rule.saqt.q.java.778.example.0.safe": "라인 3: 새로운 객체를 생성하지 말고 문자열로 직접 변환하도록 합니다.",
  "rule.saqt.q.java.778.name": "생성자를 사용한 문자열 변환",
  "rule.saqt.q.java.779.description": "Runtime.exec 사용 체커는 위험한 메소드인 Runtime.exec() 메소드 호출을 검출합니다.\n해당 메소드를 사용하지 않도록 합니다.",
  "rule.saqt.q.java.779.example.0.dangerous": "라인 4: Runtime.exec() 메소드를 호출하고 있습니다.",
  "rule.saqt.q.java.779.example.0.safe": "라인 4: 사용 금지된 메소드를 호출하지 않도록 합니다.",
  "rule.saqt.q.java.779.name": "Runtime.exec 사용",
  "rule.saqt.q.java.780.description": "종료 시 finalizer 사용 체커는 위험한 메소드인 Runtime.runFinalizersOnExit() 또는 System.runFinalizersOnExit()를 호출하는 경우를 검출합니다.\n해당 API 메소드들은 Deprecated 표시가 되어 있어 사용을 자제해야 하는 메소드입니다. 이유는 이 메소드 사용으로 인해 다른 스레드에서 사용중인 아직 살아있는 객체에 대해 finalizer가 호출될 수 있고 이로 인해 데드락이 발생할 수 있는 등의 위험이 존재하기 때문입니다.\n해당 메소드를 사용하지 않도록 합니다.",
  "rule.saqt.q.java.780.example.0.dangerous": "라인 3: 금지된 메소드들을 호출하고 있습니다.",
  "rule.saqt.q.java.780.example.0.safe": "라인 3: 가급적 Runtime.runFinalizersOnExit() 또는 System.runFinalizersOnExit()를 사용하지 않도록 합니다.",
  "rule.saqt.q.java.780.name": "종료 시 finalizer 사용",
  "rule.saqt.q.java.781.description": "원시 타입 사용 체커는 제네릭으로 정의된 컬렉션 클래스 타입을 타입 매개 변수 없이 사용하는 경우를 검출합니다.\njava.util 패키지에 포함된 주요 제네릭 컬렉션 타입들이 검출 대상입니다.\n타입 매개 변수를 명시하지 않으면 java.lang.Object를 사용한 것과 같은 의미를 갖는데 이로 인해 정적 타입 시스템이 확인해줄 수도 있는 실수들을 방치할 위험이 발생합니다.\nJava 1.5 이상의 버전을 사용중이라면 제네릭 타입을 사용할 때 타입 매개 변수를 명시하여 사용하는 것이 안전합니다.",
  "rule.saqt.q.java.781.example.0.dangerous": "라인 2: Set 클래스를 제네릭 타입 매개 변수 없이 사용했습니다.",
  "rule.saqt.q.java.781.example.0.safe": "라인 2: 요소 타입을 타입 매개 변수로 명확히 전달합니다.",
  "rule.saqt.q.java.781.name": "원시 타입 사용",
  "rule.saqt.q.java.789.description": "더 이상 사용되지 않는 API 사용 체커는 사용을 자제할 것이 권고되는(deprecated) API를 사용하는 경우를 검출합니다.\n사용을 자제할 API 목록은 옵션으로 지정할 수 있습니다.\nAPI가 사용 자제 권고(deprecated) 되었다면 해당 API는 사용하지 않는 것이 좋습니다. 대체로 더 좋은 대안이 개발되었거나 해당 API 내부에 결함이 있어서 더 안전한 버전이 만들어진 경우가 많습니다.\n다른 허용된 API를 사용하는 것을 고려해보도록 합니다.",
  "rule.saqt.q.java.789.example.0.dangerous": "라인 1: Date 클래스는 사용하지 않는 것이 좋습니다.",
  "rule.saqt.q.java.789.example.0.safe": "라인 1: 해당 API를 사용하지 않습니다.",
  "rule.saqt.q.java.789.name": "더 이상 사용되지 않는 API 사용",
  "rule.saqt.q.java.789.option.deprecated_api.description": "사용되지 않을 api 클래스 이름을 FQN으로 작성합니다.<br />예시) java.util.Date",
  "rule.saqt.q.java.789.option.deprecated_api.name": "사용되지 않을 api 클래스 이름",
  "rule.saqt.q.java.809.description": "반복문 내에서의 동기화 메소드 사용 체커는 반복문 내에서 synchronized로 선언된 메소드를 호출하는 경우를 검출합니다.\nsynchronized로 선언된 메소드가 반복문 내에서 반복적으로 호출되면 성능이 저하됩니다.\n동기화가 꼭 필요하지 않다면 synchronized 한정자를 제거합니다. 동기화가 꼭 필요하다면 반복문 내에서 이 메소드를 꼭 호출해야 하는지 한 번 더 검토합니다. 반드시 필요한 상황이라면 코드를 그대로 둘 수밖에 없지만 성능이 저하된다는 것을 유의해야 합니다.",
  "rule.saqt.q.java.809.example.0.dangerous": "라인 4: synchronized로 선언된 메소드 addItem()을 while 구문 내에서 호출했습니다.",
  "rule.saqt.q.java.809.example.0.safe": "라인 7: addItem() 메소드에서 synchronized 한정자를 제거합니다.",
  "rule.saqt.q.java.809.name": "반복문 내에서의 동기화 메소드 사용",
  "rule.saqt.q.java.810.description": "반복문 내에서 일정한 색인으로 배열 접근 체커는 반복문에서 항상 같은 색인 값을 갖는 배열 접근식을 검출합니다.\n반복문 내에서 배열에 접근한다면 배열의 여러 요소를 돌아가며 접근하기 위해 반복문이 사용되었을 가능성이 높고, 반복문 내에서 배열의 특정 위치에만 고정적으로 접근한다면 코드 작성 중 실수가 있었을 가능성이 높습니다.\n실수로 잘못 작성한 코드가 아닌지 확인해봅니다. 만약 실수가 아니고 의도한 동작이라면 의도를 명확히 하기 위해 배열 접근을 반복문 밖으로 뺍니다. 배열의 특정 값을 계속 읽어서 사용하고 있다면 반복 시작 전에 미리 값을 읽어서 다른 변수에 저장해두고 그 변수를 사용합니다. 반대로 배열에 특정 값을 계속 대입한다면 다른 변수에 값을 저장하고 반복이 끝난 후에 배열에 대입합니다.",
  "rule.saqt.q.java.810.example.0.dangerous": "라인 12: 반복문 내에서 상수 0을 통해 배열에 접근하고 있습니다.\n라인 13: j는 반복문 내에서 일정한 값 0을 갖습니다.",
  "rule.saqt.q.java.810.example.0.safe": "라인 10: 반복문 내에서 반복 사용할 특정한 배열 값이 있다면 다른 변수에 미리 꺼내둡니다.\n라인 12: 실수로 잘못된 색인값을 사용했다면 바르게 고쳐줍니다.",
  "rule.saqt.q.java.810.name": "반복문 내에서 일정한 색인으로 배열 접근",
  "rule.saqt.q.java.810.option.trusted_readonly_methods.description": "객체의 메모리 상태를 변화시키지 않고 객체의 정보를 읽기만 하는 메소드 이름을 입력합니다.<br />예시) compareTo",
  "rule.saqt.q.java.810.option.trusted_readonly_methods.name": "객체의 메모리 상태를 변화시키지 않는 메소드",
  "rule.saqt.q.java.811.description": "레이블을 사용한 break 구문 체커는 반복문 내에서 레이블을 사용해 특정 반복문을 지정해 중단하도록 하는 경우를 검출합니다.\nbreak 구문에 레이블을 사용하면 중첩 반복문에서 특정 반복문을 지정하여 한 번에 빠져나오게 할 수 있습니다. 그러나 이런 방식을 사용하면 제어 흐름이 복잡해져서 코드를 이해하기 어려워집니다.\n레이블을 사용한 break 구문 대신 다른 방법을 사용합니다. 동일한 의도를 달성할 수 있는 다른 방법은 항상 존재합니다.",
  "rule.saqt.q.java.811.example.0.dangerous": "라인 6: 조건이 참일 경우 이 break로 인해 무한 반복을 수행합니다.",
  "rule.saqt.q.java.811.example.0.safe": "라인 8: 레이블을 사용한 break 없이도 조건 변수를 적절히 활용하면 외부의 반복문을 빠져나가게 만들 수 있습니다.",
  "rule.saqt.q.java.811.name": "레이블을 사용한 break 구문",
  "rule.saqt.q.java.817.description": "volatile 사용 체커는 모든 volatile 한정자 사용을 검출합니다.\nvolatile 한정자를 사용하지 않습니다.",
  "rule.saqt.q.java.817.example.0.dangerous": "라인 2: volatile 한정자를 사용했습니다.",
  "rule.saqt.q.java.817.example.0.safe": "라인 2: volatile 한정자를 삭제합니다.",
  "rule.saqt.q.java.817.name": "volatile 사용",
  "rule.saqt.q.java.818.description": "short 타입 사용 체커는 모든 short 타입 사용을 검출합니다.\nshort 타입은 JVM 내부적으로 int로 변환하여 계산한 후 다시 short 타입으로 변환되므로 성능을 저하시킵니다.\nshort 타입을 사용하지 않습니다.",
  "rule.saqt.q.java.818.example.0.dangerous": "라인 2: num 변수가 short 타입으로 선언되었습니다.",
  "rule.saqt.q.java.818.example.0.safe": "라인 2: short 대신 int 타입을 사용합니다.",
  "rule.saqt.q.java.818.name": "short 타입 사용",
  "rule.saqt.q.java.819.description": "public 필드 사용 체커는 필드 변수에 public 한정자를 사용한 경우를 이슈로 검출합니다.\n옵션을 통해 검출 조건을 조정할 수 있습니다. 검출 대상 변수 이름의 패턴을 지정하면 해당되는 변수만을, 검출 대상 변수 이름 패턴을 비워두면 모든 변수를 검사합니다. 제외 대상 변수 이름 패턴은 존재할 경우 해당되는 변수를 검사에서 제외합니다.\n옵션으로 지정된 변수에 대해 public 한정자를 사용하지 않습니다.",
  "rule.saqt.q.java.819.example.0.dangerous": "라인 2: public 필드 변수가 선언되었습니다.",
  "rule.saqt.q.java.819.example.0.safe": "라인 2: 변수를 private 한정자로 선언합니다.",
  "rule.saqt.q.java.819.name": "public 필드 사용",
  "rule.saqt.q.java.819.option.excluded_variable.description": "검출에서 제외할 필드 이름을 작성합니다.<br/>예시) excluded",
  "rule.saqt.q.java.819.option.excluded_variable.name": "제외할 필드 이름",
  "rule.saqt.q.java.819.option.target_variable.description": "선언 직후 초기화가 수행되는 경우를 검출할 대상 필드 이름을 작성합니다.<br/>예시) field",
  "rule.saqt.q.java.819.option.target_variable.name": "대상 필드 이름",
  "rule.saqt.q.java.820.description": "사용되지 않은 import 구문 체커는 삭제해도 무방한 import 구문을 검출합니다.\nimport 대상이 코드에서 한 번도 사용되지 않는 import 구문을 검출합니다. 혹은 import 구문 없이도 당연히 바로 접근할 수 있는 java.lang 패키지의 클래스나 현재 클래스가 속한 패키지의 클래스를 import 하는 경우, 또는 같은 패키지에 대해 *을 사용한 on-demand import가 두 번 이상 등장하는 경우에도 해당 구문은 불필요하므로 검출합니다.\n대부분 필요에 의해 import 구문을 추가했다가, 소스 코드 수정 과정에서 해당 클래스나 멤버를 더 이상 사용하지 않게 되었지만 이전에 추가했던 import 구문은 정리하지 않았을 때 불필요한 import 구문이 남습니다. 이런 import 구문이 남아 있으면 만약 나중에 같은 이름을 갖는 다른 패키지의 클래스나 멤버를 사용하게 되었을 때 의도와 다른 대상을 import 하는 수가 있으므로 현재 사용되지 않는 import 구문은 미리 정리해두는 것이 좋습니다.\n불필요한 import 구문을 삭제합니다.",
  "rule.saqt.q.java.820.example.0.dangerous": "라인 1: 코드에서 List 클래스가 사용되지 않으므로 이 import 구문은 아무 효과가 없습니다.",
  "rule.saqt.q.java.820.example.0.safe": "라인 1: 불필요한 import 구문을 삭제합니다.",
  "rule.saqt.q.java.820.name": "사용되지 않은 import 구문",
  "rule.saqt.q.java.823.description": "메소드 내의 public 필드 사용 체커는 메소드 정의를 포함하는 클래스 안에 있는 public 인스턴스 필드 선언을 검출합니다.\npublic 인스턴스 필드는 멤버 메소드 선언이 하나도 없는 클래스에서만 허용됩니다. 이런 클래스는 C언어의 구조체와 비슷한 역할을 할 수 있습니다. 그 외의 경우에는 인스턴스 필드를 public으로 선언하지 말고 메소드를 통해 접근하도록 합니다.\n모든 인스턴스 필드를 private 혹은 protected로 선언합니다. 혹은 클래스 내에 선언된 모든 메소드를 삭제합니다.",
  "rule.saqt.q.java.823.example.0.dangerous": "라인 2: getField() 메소드가 존재하는 클래스에서 public 인스턴스 필드가 선언되었습니다.",
  "rule.saqt.q.java.823.example.0.safe": "라인 2: 메소드가 없는 클래스라면 public 인스턴스 필드가 존재해도 괜찮습니다.",
  "rule.saqt.q.java.823.name": "메소드 내의 public 필드 사용",
  "rule.saqt.q.java.824.description": "여러 변수에 할당 체커는 한 구문에서 두 개 이상의 변수에 대입이 일어나는 경우를 검출합니다.\n옵션을 통해 같은 값을 동시에 여러 변수에 대입하는 것만 검출하도록 조정하는 것이 가능합니다.\n한 구문에서 여러 변수에 대입이 일어나면 변수의 값이 변하는 순서가 명확하지 않아 의도와 다른 수식이 될 가능성이 있습니다. 여러 구문에 나누어서 작성해도 같은 결과를 얻을 수 있으므로 명확한 코드를 작성하는 것이 좋습니다.\n대입이 일어날 순서를 명확히 하여 여러 구문에 걸쳐 코드를 작성합니다.",
  "rule.saqt.q.java.824.example.0.dangerous": "라인 4: 한 구문에서 변수 x, y에 1을 대입합니다.",
  "rule.saqt.q.java.824.example.0.safe": "라인 5: 대입을 두 구문으로 구분합니다.",
  "rule.saqt.q.java.824.name": "여러 변수에 할당",
  "rule.saqt.q.java.824.option.check_separate_assignments.description": "옵션을 사용하는 경우, 한 수식 내에서 동시에 같은 값을 할당하지는 않지만 분리되어 사용되고 있는 할당 연산자가 두 개 이상인 경우를 검출합니다.",
  "rule.saqt.q.java.824.option.check_separate_assignments.name": "분리된 할당 연산자 검사",
  "rule.saqt.q.java.825.description": "비교 대신 할당 수행 체커는 조건을 계산하기 위해 비교 연산을 사용해야 하는 부분에 할당 연산을 수행하는 코드를 검출합니다.\n보통 `==`와 같은 비교 연산자를 작성하려다 실수로 `=`와 같은 대입 연산자를 사용하는 경우에 이러한 문제가 발생합니다. 실수로 작성한 코드의 경우 의도와 다르게 동작함에도 불구하고 위치를 파악하기가 어렵습니다. 물론 Java에서는 if 구문이나 삼항 조건 연산식에서 조건식이 들어가야 할 자리에 boolean 타입의 값만 위치할 수 있기 때문에 이런 실수가 자주 일어나지는 않고 보통 C/C++에서 많이 발생하는 문제입니다.\n비교 연산자 대신 대입 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.java.825.example.0.dangerous": "라인 3: if 구문의 조건식에 = 연산자를 사용했습니다.",
  "rule.saqt.q.java.825.example.0.safe": "라인 3: 비교 연산을 수행하려는 의도라면 연산자를 ==로 수정합니다.",
  "rule.saqt.q.java.825.name": "비교 대신 할당 수행",
  "rule.saqt.q.js.1482.description": "잘못된 피연산자 타입 체커는 잘못된 타입의 피연산자를 사용한 경우에 검출됩니다.\n특정 연산자를 사용할 때 잘못된 타입의 피연산자를 사용한 경우에 검출됩니다.\nJavascript의 경우, `in`의 오른쪽 피연산자는 객체 타입이어야만하고, `instanceof` 연산자는 함수 타입이어야만 합니다.\n올바른 피연산자를 사용합니다.",
  "rule.saqt.q.js.1482.example.0.dangerous": "라인 4: 'instanceof'의 오른쪽 피연산자는 함수형이어야만 합니다. 예제에서는 피연산자로 변수형을 사용했습니다.",
  "rule.saqt.q.js.1482.example.0.safe": "라인 4: 적절한 피연산자인 함수형을 사용하여 검사합니다.",
  "rule.saqt.q.js.1482.name": "잘못된 피연산자 타입",
  "rule.saqt.q.js.1514.description": "with 구문 사용 체커는 with 문을 사용할 경우에 검출됩니다.\nwith 문을 사용하면 인자로 들어온 객체의 유효범위를 새로 생성하여 접근 가능하게 되므로 코드의 가독성이 매우 떨어지게 됩니다.\nwith 문을 사용하지 않습니다.",
  "rule.saqt.q.js.1514.example.0.dangerous": "라인 1: with 문을 사용했습니다.",
  "rule.saqt.q.js.1514.example.0.safe": "라인 1: 코드를 직관적으로 보기 쉽게 with 문을 사용하지 않습니다.",
  "rule.saqt.q.js.1514.name": "with 구문 사용",
  "rule.saqt.q.js.1515.description": "부적절한 동등 비교 연산자 체커는 ===, !=== 대신 ==, !=를 사용하는 경우를 검출합니다.\nJavaScript에서 ==, !=는 사용하게되면 암시적 캐스팅으로 사용자의 의도와 다른 결과를 낼 수 있습니다.\n비교의 경우 === 연산자를 사용하도록 합니다.",
  "rule.saqt.q.js.1515.example.0.dangerous": "라인 2: 이와 같이 == 는 몇몇 경우에서 실제로 사용자가 의도한 결과를 내지 않는 경우가 있습니다.",
  "rule.saqt.q.js.1515.example.0.safe": "라인 2: ===을 사용하여 정확한 비교를 수행합니다.",
  "rule.saqt.q.js.1515.name": "부적절한 동등 비교 연산자",
  "rule.saqt.q.js.1519.description": "피연산자에 사용된 할당 체커는 조건을 계산하기 위해 비교 연산을 사용해야 하는 부분에 할당 연산을 수행하는 코드를 검출합니다.\n보통 `==`와 같은 비교 연산자를 작성하려다 실수로 `=`와 같은 대입 연산자를 사용하는 경우에 이러한 문제가 발생합니다. 실수로 작성한 코드의 경우 의도와 다르게 동작함에도 불구하고 위치를 파악하기가 어렵습니다.\n비교 연산자 대신 대입 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.js.1519.example.0.dangerous": "라인 3: if 구문의 조건식에 = 연산자를 사용했습니다.",
  "rule.saqt.q.js.1519.example.0.safe": "라인 3: if 구문의 조건식에 == 연산자를 사용합니다.",
  "rule.saqt.q.js.1519.name": "피연산자에 사용된 할당",
  "rule.saqt.q.js.1519.option.allowConditionalExpression.description": "조건문에서의 조건에서 대입문에 허용여부를 입력하세요. (true/false)",
  "rule.saqt.q.js.1519.option.allowConditionalExpression.name": "조건연산문에서의 허용 (조건)",
  "rule.saqt.q.js.1519.option.allowConditionalExpressionResult.description": "조건문에의 결과에 대입문에 대한 허용여부를 입력하세요. (true/false)",
  "rule.saqt.q.js.1519.option.allowConditionalExpressionResult.name": "조건연산문에서의 허용 (결과)",
  "rule.saqt.q.js.1519.option.allowFor.description": "for문의 조건에서 대입문의 허용여부를 입력하세요. (true/false)",
  "rule.saqt.q.js.1519.option.allowFor.name": "for문 허용",
  "rule.saqt.q.js.1519.option.allowIf.description": "if문 조건내에서 대입문을 허용여부를 입력하세요. (true/false)",
  "rule.saqt.q.js.1519.option.allowIf.name": "if문 허용",
  "rule.saqt.q.js.1519.option.allowWhile.description": "while문의 조건에서 대입문의 허용여부를 입력하세요. (true/false)",
  "rule.saqt.q.js.1519.option.allowWhile.name": "while문 허용",
  "rule.saqt.q.js.1520.description": "비트 연산 수행 체커는 비트 연산자를 사용하는 경우에 검출됩니다.\nJavaScript에서는 비트 연산자가 거의 사용되지 않고 있습니다. 혹은 조건 연산자를 실수로 잘못 사용한 것일 수 있습니다.\n비트 연산자를 제거합니다",
  "rule.saqt.q.js.1520.example.0.dangerous": "라인 1: if 문의 조건에 쓰인 비트 연산자 & 는 &&의 오타라고 가정합니다.",
  "rule.saqt.q.js.1520.example.0.safe": "라인 1: 오타를 수정합니다.",
  "rule.saqt.q.js.1520.name": "비트 연산 수행",
  "rule.saqt.q.js.1693.description": "수정된 네이티브 객체 체커는 브라우저에 포함된 네이티브 객체의 프로퍼티를 수정하는 경우를 검출합니다.\n브라우저에 포함된 네이티브 객체의 프로퍼티를 수정하면 내부의 네이티브 객체로 생성된 변수 내의 함수가 의도하지 않은 동작을 취할 수 있습니다.\n네이티브 객체의 프로토타입은 수정하지 말고 있는 그대로 사용합니다.",
  "rule.saqt.q.js.1693.example.0.dangerous": "라인 3: Array의 sort() 함수를 임의로 재정의했습니다.",
  "rule.saqt.q.js.1693.example.0.safe": "라인 3: 브라우저에 포함된 네이티브 객체의 프로퍼티를 수정하지 않습니다.",
  "rule.saqt.q.js.1693.name": "수정된 네이티브 객체",
  "rule.saqt.q.js.1693.option.native_object.description": "수정을 금지할 내장 객체를 작성해 주세요.",
  "rule.saqt.q.js.1693.option.native_object.name": "수정을 금지할 내장 객체",
  "rule.saqt.q.js.1695.description": "for 구문 내에서의 부적절한 변수 선언 체커는 for 내에서 변수를 선언해서 사용하는 경우에, var 선언문을 사용하지 않았을 경우에 검출됩니다.\nvar 선언문을 사용하지 않으면, 전역 변수로 선언되어 의도하지 않은 변수의 변경이 일어날 수 있습니다.\nfor 구문의 계산식에 var 선언을 수행합니다.",
  "rule.saqt.q.js.1695.example.0.dangerous": "라인 5: var 선언 없이 변수를 사용했습니다.",
  "rule.saqt.q.js.1695.example.0.safe": "라인 5: var 선언 이후 변수를 사용했습니다.",
  "rule.saqt.q.js.1695.name": "for 구문 내에서의 부적절한 변수 선언",
  "rule.saqt.q.js.1698.description": "도달할 수 없는 코드 체커는 `return` 또는 `break`, `continue`, `throw` 문에 후행하는 다른 구문들이 있어 접근할수 없는 구문이 발생하는 경우를 검출합니다.\n`return` 또는 `break`, `continue`, `throw` 문은 항상 블록의 마지막에 사용되어야 합니다.\n구문의 위치를 적절하게 조절합니다.",
  "rule.saqt.q.js.1698.example.0.dangerous": "라인 4: return 문 이하의 다른 구문이 존재합니다.",
  "rule.saqt.q.js.1698.example.0.safe": "라인 4: return 구문 이후에 다른 구문이 없습니다.",
  "rule.saqt.q.js.1698.name": "도달할 수 없는 코드",
  "rule.saqt.q.js.7559.description": "if, else if, while, for, switch 등 제어문의 조건절에서 대입 연산자(=)를 사용하는 경우 이슈를 검출합니다. 조건절에 대입 연산자가 등장하는 원인은 보통 두 가지입니다. 개발자가 의도적으로 사용한 경우와 비교 연산자(==, ===)를 입력하려다 실수로 사용한 경우입니다. 코드상에서는 이 두 가지를 명확히 구분할 수 없습니다. 의도한 경우라면 문제가 없지만, 실수인 경우에는 조건절이 할당된 값에 따라 항상 참 또는 거짓으로 평가되어 의도하지 않은 로직 오류가 발생할 수 있습니다.\n제어문의 조건절에는 대입 연산자(=)를 사용하지 않습니다. 값을 비교할 때는 비교 연산자(===, !==, ==, !=, <, > 등)를 사용하고, 변수 할당이 필요한 경우 제어문 외부로 코드를 분리하여 작성합니다.",
  "rule.saqt.q.js.7559.example.0.dangerous": "라인 4, 7: if, for 문의 조건절에 대입 연산자(`=`)가 사용되었습니다.",
  "rule.saqt.q.js.7559.example.0.safe": "라인 1, 7: for 문의 조건절에서 변수를 직접 할당하는 대신, 제어문 외부에서 미리 할당하여 사용해야 합니다.\n라인 4: if 문의 조건절에서 값을 비교할 때는 비교 연산자(`===`)를 사용해야 합니다.",
  "rule.saqt.q.js.7559.name": "제어문의 조건절에 할당식 사용 금지",
  "rule.saqt.q.objc.1898.description": "심볼릭 링크 경쟁 조건 체커는 lstat() 함수의 호출 결과에만 의존하여 파일에 접근하는 코드를 검출합니다.\nlstat() 함수는 파일의 경로를 통해 정보를 확인하기 때문에 해당 함수로 확인한 파일의 심볼릭 링크 상태가 정확하지 않을 수 있습니다. 즉, lstat() 함수를 호출하고 open() 함수로 다시 파일을 여는 사이에 파일이 조작될 가능성이 있습니다. 따라서 open() 함수로 파일을 확보하고 다시 fstat() 함수로 해당 파일의 정확한 정보를 가져온 후에 해당 정보에 따라 동작을 결정해야 합니다.\nlstat() 함수에만 의존하지 않도록 합니다. lstat() 함수로 원하는 정보를 확인한 후에 open() 함수로 파일을 열고, 다시 fstat() 함수의 결과와 lstat() 함수의 결과가 동일한 경우에만 작업을 진행합니다.",
  "rule.saqt.q.objc.1898.example.0.dangerous": "라인 6: 파일 정보를 lstat_info 구조체에 저장했습니다.\n라인 9: 파일이 심볼릭 링크가 아니면 파일을 열게 됩니다.\n라인 15: 실제 파일의 상태를 확인하지 않고 파일을 수정하면 TOCTOU 경쟁 조건이 발생합니다.",
  "rule.saqt.q.objc.1898.example.0.safe": "라인 7: 파일 이름으로 lstat()를 호출합니다.\n라인 10: open() 함수로 파일을 엽니다.\n라인 14: fstat() 함수로 파일의 상태를 불러옵니다.\n라인 17: lstat() 함수로 얻은 링크 정보와 fstat() 함수로 얻은 파일 정보가 동일한지 확인한 후에 파일을 수정합니다.",
  "rule.saqt.q.objc.1898.name": "심볼릭 링크 경쟁 조건",
  "rule.saqt.q.objc.1898.option.symlink_chklist.description": "검사할 심볼릭 링크의 종류를 입력합니다.",
  "rule.saqt.q.objc.1898.option.symlink_chklist.name": "검사할 심볼릭 링크",
  "rule.saqt.q.objc.1909.description": "Apple API의 잘못된 사용 체커는 dispatch_once() 함수의 첫 번째 인자에 정적이 아닌 변수를 전달하는 경우를 검출합니다.\ndispatch_once() 함수의 첫 번째 인자는 해당 코드 블록의 실제 실행 여부를 저장하는 객체입니다 코드 블록이 프로그램 실행 도중 다만 한 번만 실행되었다는 사실을 저장해야 하는 객체이므로 프로그램이 실행되는 동안 메모리에 유지되어야 합니다. 따라서 이 인자에 전달되는 변수는 함수의 일반 지역 변수로 선언하면 안되고 static 예약어를 붙여 선언해야 합니다.\n인자로 사용할 dispatch_once_t 타입의 변수 선언에 static 예약어를 추가합니다.",
  "rule.saqt.q.objc.1909.example.0.dangerous": "라인 5: dispatch_once() 함수의 첫 번째 인자인 pred가 일반 지역 변수입니다.",
  "rule.saqt.q.objc.1909.example.0.safe": "라인 4: dispatch_once() 함수의 인자로 사용할 pred 변수를 static으로 선언합니다.",
  "rule.saqt.q.objc.1909.name": "Apple API의 잘못된 사용",
  "rule.saqt.q.objc.1910.description": "@synchronized 지시자에 nil 전달 체커는 동기화 블록를 나타내는 @synchronized 지시자에 동기화 객체로 nil을 전달하는 경우를 검출합니다.\n경쟁 상태를 발생시킬 수 있습니다.\n동기화 객체로는 nil이 아닌 객체만 전달합니다.",
  "rule.saqt.q.objc.1910.example.0.dangerous": "라인 4: nil 인 객체 x 가 @synchronized 지시자에 넘겨졌습니다.",
  "rule.saqt.q.objc.1910.example.0.safe": "라인 4: @synchronized 지시자에 넘겨진 객체 x가 nil 객체가 아니어야 합니다.",
  "rule.saqt.q.objc.1910.name": "@synchronized 지시자에 nil 전달",
  "rule.saqt.q.objc.1911.description": "비 인스턴스 객체 해제 체커는 인스턴스가 아닌 클래스에 [release], [retain], [autorelease] 메시지를 보내는 경우를 검출합니다.\n해당 메시지는 인스턴스를 대상으로 메모리를 해제하기 위해 보내는 것이므로 인스턴스가 아닌 클래스 대해서는 이 메시지를 보내면 안됩니다.\n클래스가 아닌 인스턴스에 대해 메모리 해제 메시지를 보냅니다.",
  "rule.saqt.q.objc.1911.example.0.dangerous": "라인 6: 인스턴스가 아닌 MyClass 클래스에 [release] 메시지를 보내고 있습니다.",
  "rule.saqt.q.objc.1911.example.0.safe": "라인 6: 인스턴스 mycar에 [release] 메시지를 보냈습니다.",
  "rule.saqt.q.objc.1911.name": "비 인스턴스 객체 해제",
  "rule.saqt.q.objc.1912.description": "CFNumberCreate의 잘못된 사용 체커는 CFNumberCreate() 함수의 세 번째 인자의 비트 수가 두 번째 인자로 지정된 크기보다 작은 경우를 검출합니다.\n비트 수를 일치시키지 않으면 CFNumberCreate() 함수가 반환하는 CFNumberRef 객체가 제대로 초기화가 되지 않습니다.\n세 번째 인자로 전달하는 숫자 타입의 비트 수에 맞는 값을 두 번째 인자로 전달합니다.",
  "rule.saqt.q.objc.1912.example.0.dangerous": "라인 4: CFNumberCreate() 함수의 세 번째 인자의 크기는 8비트지만, 만들어지는 숫자는 두 번째 인자의 값인 16비트입니다. 따라서 제대로 초기화가 이루어지지 않습니다.",
  "rule.saqt.q.objc.1912.example.0.safe": "라인 4: CFNumberCreate() 함수를 통해 CFNumberRef 객체를 생성할 때 적절한 초기화 비트 길이를 사용해야 합니다.",
  "rule.saqt.q.objc.1912.name": "CFNumberCreate의 잘못된 사용",
  "rule.saqt.q.objc.1913.description": "반복문 인덱스로 실수 타입 사용 체커는 실수형 변수를 루프 카운터로 사용하는 경우를 검출합니다.\n실수는 사칙연산 과정에서 결과에 미세한 오차가 누적되어 생각했던 것과 다른 값이 될 수 있으므로 루프 카운터로 사용하기에 적합하지 않습니다. 코드를 작성할 때 의도하지 않은 횟수로 반복될 수 있습니다.\n루프 카운터에 실수형이 아닌 정수형 변수만을 사용하도록 합니다.",
  "rule.saqt.q.objc.1913.example.0.dangerous": "라인 9: 루프 카운터 변수 x가 부동소수점 타입입니다.",
  "rule.saqt.q.objc.1913.example.0.safe": "라인 9: 정수형 변수를 루프 카운터로 사용합니다.",
  "rule.saqt.q.objc.1913.name": "반복문 인덱스로 실수 타입 사용",
  "rule.saqt.q.objc.1920.description": "이항 연산에서 초기화되지 않은 값 사용 체커는 초기화되지 않은 변수를 이항 연산식의 피연산자로 사용하는 경우를 검출합니다.\n초기화되지 않은 값을 이항 연산자의 피연산자로 사용할 경우 그 연산결과값을 예측 할 수 없습니다.\n변수를 초기화한 후에 사용합니다.",
  "rule.saqt.q.objc.1920.example.0.dangerous": "라인 3: 초기화되지 않은 변수 x를 + 연산에 사용하고 있습니다.",
  "rule.saqt.q.objc.1920.example.0.safe": "라인 3: 변수 x가 적절하게 초기화되었습니다.",
  "rule.saqt.q.objc.1920.name": "이항 연산에서 초기화되지 않은 값 사용",
  "rule.saqt.q.objc.1921.description": "배열에서 초기화되지 않은 값 사용 체커는 초기화되지 않은 변수로 배열 참조를 수행하는 경우를 검출합니다.\n초기화되지 않은 변수로 배열 참조를 수행할 경우, 어느 메모리 영역을 참조하게 될지 알 수 없습니다.\n변수를 초기화한 후에 사용합니다.",
  "rule.saqt.q.objc.1921.example.0.dangerous": "라인 3: 초기화되지 않은 변수 i를 배열 접근자로 사용하고 있습니다.",
  "rule.saqt.q.objc.1921.example.0.safe": "라인 3: 변수 i가 적절하게 초기화되었습니다.",
  "rule.saqt.q.objc.1921.name": "배열에서 초기화되지 않은 값 사용",
  "rule.saqt.q.objc.1922.description": "초기화되지 않은 값 대입 체커는 초기화되지 않은 변수를 다른 변수에 대입하는 코드를 검출합니다.\n초기화되지 않은 변수를 다른 변수에 대입하면 초기화되지 않은 또 다른 변수가 생길 뿐이며 개발자의 실수일 가능성이 높습니다.\n변수를 초기화한 후에 사용합니다.",
  "rule.saqt.q.objc.1922.example.0.dangerous": "라인 4: 초기화되지 않은 변수 a를 변수 b에 할당합니다.",
  "rule.saqt.q.objc.1922.example.0.safe": "라인 4: 초기화된 변수 a를 b에 할당합니다.",
  "rule.saqt.q.objc.1922.name": "초기화되지 않은 값 대입",
  "rule.saqt.q.objc.1923.description": "조건식에서 초기화되지 않은 값 사용 체커는 초기화되지 않은 변수를 조건문의 조건식으로 사용하는 경우를 검출합니다.\n초기화되지 않은 값을 분기 조건으로 사용할 경우, 그 결과를 예측할 수 없습니다.\n변수를 초기화한 후에 사용합니다.",
  "rule.saqt.q.objc.1923.example.0.dangerous": "라인 4: 초기화되지 않은 변수 a를 조건식으로 사용했습니다.",
  "rule.saqt.q.objc.1923.example.0.safe": "라인 4: 초기화된 변수 a를 조건식으로 사용합니다.",
  "rule.saqt.q.objc.1923.name": "조건식에서 초기화되지 않은 값 사용",
  "rule.saqt.q.objc.1924.description": "초기화되지 않은 값 반환 체커는 초기화되지 않은 값을 반환하는 경우를 검출합니다.\n초기화되지 않은 값을 반환 값으로 사용할 경우, 그 결과를 예측할 수 없습니다.\n변수를 초기화한 후에 사용합니다.",
  "rule.saqt.q.objc.1924.example.0.dangerous": "라인 3: 초기화되지 않은 변수 x를 반환식으로 사용합니다.",
  "rule.saqt.q.objc.1924.example.0.safe": "라인 4: 초기화된 변수 x를 반환합니다.",
  "rule.saqt.q.objc.1924.name": "초기화되지 않은 값 반환",
  "rule.saqt.q.objc.1929.description": "CFErrorRef의 잘못된 사용 체커는 CFErrorRef* 형을 매개 변수로 받는 함수의 반환 타입이 void 형으로 선언된 경우를 검출합니다.\nCFErrorRef* 형을 매개 변수로 받는 함수는 항상 값을 반환하도록 작성합니다.",
  "rule.saqt.q.objc.1929.example.0.dangerous": "라인 3: test() 함수는 매개 변수로 CFErrorRef* 형의 값을 받지만 반환 타입은 void 형으로 선언되었습니다.",
  "rule.saqt.q.objc.1929.example.0.safe": "라인 2: 함수 test()가 값을 반환하도록 정정합니다.",
  "rule.saqt.q.objc.1929.name": "CFErrorRef의 잘못된 사용",
  "rule.saqt.q.objc.1931.description": "malloc의 잘못된 사용 체커는 malloc() 함수 사용과 관련된 메모리 누출, 이중 해제 및 해제 후 사용을 검출합니다.\n메모리 관리를 제대로 하지 않으면 성능에 악영향을 미칠 수 있습니다.\n메모리 관련 함수를 올바른 방법으로 사용합니다.",
  "rule.saqt.q.objc.1931.example.0.dangerous": "라인 3: 이미 free() 함수로 해제된 포인터 p에 지정된 메모리를 다시 한 번 해제하려 합니다.",
  "rule.saqt.q.objc.1931.example.0.safe": "라인 2: 한 번 해제한 메모리를 다시 해제하지 않습니다.",
  "rule.saqt.q.objc.1931.name": "malloc의 잘못된 사용",
  "rule.saqt.q.objc.1932.description": "부적절한 malloc 인자의 값 체커는 malloc() 함수의 인자로 전달하기 위한 sizeof 연산을 잘못 사용한 경우를 검출합니다.\nmalloc() 함수의 반환 값을 저장할 변수 타입과 인자 내부에서 사용된 sizeof 연산의 타입이 어긋났다면 실수일 가능성이 높습니다.\n메모리 할당이 의도대로 이루어지지 않으면 프로그램이 잘못 동작하게 됩니다.\n메모리 관련 함수를 올바른 방법으로 사용합니다.",
  "rule.saqt.q.objc.1932.example.0.dangerous": "라인 3: 할당된 메모리를 저장하려는 포인터 변수의 타입과 malloc() 함수의 인자에서 사용된 sizeof 연산 대상 타입이 일치하지 않습니다.",
  "rule.saqt.q.objc.1932.example.0.safe": "라인 3: 할당된 메모리를 long * 포인터 변수에 저장하므로 sizeof 연산에도 long 타입을 사용해야 합니다.",
  "rule.saqt.q.objc.1932.name": "부적절한 malloc 인자의 값",
  "rule.saqt.q.objc.1936.description": "스택 변수 주소 할당 체커는 함수가 반환되고 나면 접근할 수 없어지는 지역 변수의 주소를 참조하는 경우를 검출합니다.\n함수의 지역 변수는 메모리의 스택 영역에 할당되어 함수가 반환되고 나면 더 이상 접근할 수 없게 됩니다. 따라서 이런 스택 영역에 있는 변수의 주소를 참조할 경우 이 참조값이 함수가 반환되기 전까지만 사용된다는 확신이 있어야 합니다. 실수할 가능성을 줄이기 위해 지역 변수의 주소를 참조하는 것을 최대한 지양하는 것이 좋습니다.\n지역 변수에 & 연산자를 사용하지 않습니다.",
  "rule.saqt.q.objc.1936.example.0.dangerous": "라인 5: 지역 변수는 함수 범위를 벗어날 때 더 이상 메모리에 남아있지 않으므로 그 참조값을 전역 변수에 저장하면 위험합니다.",
  "rule.saqt.q.objc.1936.example.0.safe": "라인 6: 동적으로 할당된 메모리를 참조하면 함수 범위를 벗어나도 안전합니다.",
  "rule.saqt.q.objc.1936.name": "스택 변수 주소 할당",
  "rule.saqt.q.objc.1937.description": "잘못된 문자열 함수 인자 체커는 C 표준 문자열 함수에 잘못된 크기 인자를 전달하는 경우를 검출합니다.\n문자열 함수에 잘못된 인자를 전달하면 메모리 오류가 발생할 수 있습니다.\n문자열 함수를 올바른 방법으로 사용합니다.",
  "rule.saqt.q.objc.1937.example.0.dangerous": "라인 3: strncat() 함수의 3번째 인자로 전달된 값이 버퍼의 크기와 같습니다.",
  "rule.saqt.q.objc.1937.example.0.safe": "라인 3: strncat() 함수의 3번째 인자 길이는 버퍼의 크기보다 작아야 합니다.",
  "rule.saqt.q.objc.1937.name": "잘못된 문자열 함수 인자",
  "rule.saqt.q.objc.1938.description": "CFRetain, CFRelease 및 CFMakeCollectable의 잘못된 사용 체커는 CFRetain(), CFRelease(), CFMakeCollectable() 함수의 인자로 널이 전달되는 경우를 검출합니다.\n공식 API 문서에 따르면 해당 함수들에 널이 전달되면 런타임 오류가 발생합니다.\n메모리 관리 함수에 널을 전달하지 않습니다.",
  "rule.saqt.q.objc.1938.example.0.dangerous": "라인 3: CFRetain() 함수에 널이 전달됩니다.",
  "rule.saqt.q.objc.1938.example.0.safe": "라인 3: CFRetain() 함수에 널이 전달되지 않습니다.",
  "rule.saqt.q.objc.1938.name": "CFRetain, CFRelease 및 CFMakeCollectable의 잘못된 사용",
  "rule.saqt.q.objc.1939.description": "초기화되지 않은 self 체커는 초기화 메소드 내에서 self가 잘못 초기화되는 경우를 검출합니다.\n초기화되지 않은 self를 반환하는 것은 작성자의 실수일 가능성이 높습니다.\nself를 제대로 초기화합니다.",
  "rule.saqt.q.objc.1939.example.0.dangerous": "라인 9: self를 초기화하지 않고 반환합니다.",
  "rule.saqt.q.objc.1939.example.0.safe": "라인 10: 초기화된 self를 반환합니다.",
  "rule.saqt.q.objc.1939.name": "초기화되지 않은 self",
  "rule.saqt.q.objc.1940.description": "Secure Keychain API의 잘못된 사용 체커는 Secure Keychain API를 용법에 맞지 않게 사용한 경우를 검출합니다.\n라이브러리 함수를 규약에 맞게 사용하지 않으면 시스템에 의도하지 않은 영향을 미치거나 프로그램이 잘못된 동작을 할 수 있습니다.\n라이브러리 함수는 정해진 규약에 맞게 올바른 방법으로 호출합니다.",
  "rule.saqt.q.objc.1940.example.0.dangerous": "라인 5: 아무 것도 할당되지 않은 변수를 해제하려 합니다.",
  "rule.saqt.q.objc.1940.example.0.safe": "라인 9: SecKeychainItemFreeContent() 함수를 정상적으로 사용합니다.",
  "rule.saqt.q.objc.1940.name": "Secure Keychain API의 잘못된 사용",
  "rule.saqt.q.objc.1941.description": "사용되지 않은 변수 체커는 변수를 선언한 후에 사용하지 않는 코드를 검출합니다.\n사용되지 않는 변수의 선언을 남겨두면 불필요하게 메모리를 추가로 사용하거나 코드 읽기를 방해할 수 있습니다. 혹은 사용해야 할 변수를 사용하지 않는 실수를 했을 가능성이 있습니다.\n사용하지 않는 변수 선언은 제거합니다. 혹은 용도가 있는 변수를 실수로 사용하지 않은 것은 아닌지 확인해봅니다.",
  "rule.saqt.q.objc.1941.example.0.dangerous": "라인 3: x가 사용되지 않습니다.",
  "rule.saqt.q.objc.1941.example.0.safe": "라인 10: x가 사용됩니다.",
  "rule.saqt.q.objc.1941.name": "사용되지 않은 변수",
  "rule.saqt.q.objc.1943.description": "함수 호출 및 메시징의 논리 오류 체커는 함수 호출과 메시지 전달 상의 논리적 오류를 검출합니다.\n초기화되지 않은 인자, 널 함수 포인터 등의 로직 오류가 검출 대상입니다.\n메시지 전달과 함수 호출을 잘못된 방식으로 수행할 경우 프로그램이 오동작할 수 있습니다.\n기본적인 논리적 오류는 없는 코드를 작성합니다.",
  "rule.saqt.q.objc.1943.example.0.dangerous": "라인 9: 값 전달 호출 방식으로 전달되는 타입의 인자에 초기화되지 않은 값을 전달합니다.",
  "rule.saqt.q.objc.1943.example.0.safe": "라인 9: 값 전달 호출 방식으로 전달되는 타입의 인자에는 초기화된 값을 전달해야 합니다.",
  "rule.saqt.q.objc.1943.name": "함수 호출 및 메시징의 논리 오류",
  "rule.saqt.q.objc.1973.description": "부적절한 길이 인자의 값 체커는 길이를 인자로 받는 함수에 해당 인자로 음수 혹은 너무 큰 값이 전달되는 경우를 검출합니다.\n여기서 말하는 함수는 다음과 같습니다. alloca(), bcopy(), calloc(), malloc(), memccpy(), memcpy(), realloc(), strncpy().\n인자 값이 음수이거나 자료형의 범위를 벗어나면 정수 오버플로우나 암시적 캐스팅 등이 발생합니다. 그 결과 시스템은 예상하지 못한 메모리 주소 요청을 받게 됩니다. 이를 사용하여 공격자가 프로그램에 접근하여 흐름을 제어할 수 있게 되어 보안 위협을 받을 수 있습니다.\n길이에 해당하는 인자를 받는 함수를 호출할 때엔 값의 범위가 함수의 설계 의도에 맞는 범위인지 충분히 확인하고 사용합니다.",
  "rule.saqt.q.objc.1973.example.0.dangerous": "라인 3: malloc() 함수의 인자로 음수가 전달되었습니다.",
  "rule.saqt.q.objc.1973.example.0.safe": "라인 3: 길이 인자는 전달하기 전에 범위를 확인해야 합니다.",
  "rule.saqt.q.objc.1973.name": "부적절한 길이 인자의 값",
  "rule.saqt.q.objc.1973.option.check_function.description": "체커가 검사할 함수명을 입력합니다.",
  "rule.saqt.q.objc.1973.option.check_function.name": "검사할 함수",
  "rule.saqt.q.objc.1981.description": "IPv4 전용 API 사용 체커는 사용이 금지된 IPv4 전용 함수들의 사용을 검출합니다.\nWWDC 2015에서 발표된 가이드에 따라 모든 iOS 애플리케이션은 IPv6 전용 네트워크를 의무적으로 지원해야 합니다. 따라서 IPv4 전용 함수들의 사용을 제한합니다.\nIPv6 전용 네트워크에서 정상적으로 작동 가능한 함수만을 사용합니다.",
  "rule.saqt.q.objc.1981.example.0.dangerous": "라인 1: inet_addr() 함수는 IPv4 전용 함수입니다.",
  "rule.saqt.q.objc.1981.example.0.safe": "라인 2: IPv6 호환 함수인 inet_pton() 함수로 대체합니다.",
  "rule.saqt.q.objc.1981.name": "IPv4 전용 API 사용",
  "rule.saqt.q.objc.1982.description": "하드코드된 IP 체커는 코드에 직접 작성된 IPv4 주소를 검출합니다.\nWWDC 2015에서 발표된 가이드에 따라 모든 iOS 애플리케이션은 IPv6 전용 네트워크를 의무적으로 지원해야 합니다. 따라서 IPv4 전용 IP의 사용을 제한합니다.\nIPv6 전용 네트워크에서 정상적으로 작동 가능한 코드만 작성합니다.",
  "rule.saqt.q.objc.1982.example.0.dangerous": "라인 1: IPv4 주소를 사용했습니다.",
  "rule.saqt.q.objc.1982.example.0.safe": "라인 1: IPv6 주소를 사용합니다.",
  "rule.saqt.q.objc.1982.name": "하드코드된 IP",
  "rule.saqt.q.objc.1991.description": "잠금 해제되지 않은 뮤텍스 체커는 뮤텍스 잠금을 해제하기 전에 시그널을 보내는 경우를 검출합니다.\n잠금을 얻고 나서 해제하지 않고 다른 스레드를 깨우면 데드락 상태에 빠질 위험이 있습니다.\npthread_cond_signal() 함수를 호출하기 전에 잠금을 해제합니다.",
  "rule.saqt.q.objc.1991.example.0.dangerous": "라인 7: mutex_unlock() 함수 호출 없이 시그널을 보냅니다.",
  "rule.saqt.q.objc.1991.example.0.safe": "라인 7: mutex_unlock() 함수로 잠금을 해제하고 나서 pthread_cond_signal() 함수를 호출합니다.",
  "rule.saqt.q.objc.1991.name": "잠금 해제되지 않은 뮤텍스",
  "rule.saqt.q.objc.1992.description": "버퍼 오버플로우 체커는 고정 길이 배열의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.saqt.q.objc.1992.example.0.dangerous": "라인 6: 배열 인덱스를 검사하지 않았습니다.\n라인 10: 배열 인덱스가 배열 크기를 벗어날 가능성이 있습니다.",
  "rule.saqt.q.objc.1992.example.0.safe": "라인 9: 배열 크기를 안전하게 검사하여 사용합니다.",
  "rule.saqt.q.objc.1992.name": "버퍼 오버플로우",
  "rule.saqt.q.objc.1993.description": "할당 시 정밀성 손실 체커는 대입 연산의 좌변과 우변 사이 타입이 달라서 암시적 캐스팅이 일어나는 경우를 검출합니다.\n타입이 다른 두 정수형 변수 사이에 표현 범위가 다를 때 암시적 캐스팅이 일어나면 값이 손실될 수 있습니다.\n암시적 캐스팅이 일어나면 눈에 띄지 않게 값의 정확도가 변경될 수 있는 등의 문제가 있으므로 명시적 캐스팅을 사용하는 것이 좋습니다.\n명시적 캐스팅을 사용합니다.",
  "rule.saqt.q.objc.1993.example.0.dangerous": "라인 6: 정수를 더 작은 표현 범위 타입 변수에 대입할 때 값 손실이 발생합니다.",
  "rule.saqt.q.objc.1993.example.0.safe": "라인 7: 범위를 확인하고 명시적 캐스팅을 사용하여 값 손실이 일어나지 않도록 합니다.",
  "rule.saqt.q.objc.1993.name": "할당 시 정밀성 손실",
  "rule.saqt.q.objc.1994.description": "누락된 pthread_mutex_lock 반환 값 검사 체커는 pthread_mutex_lock() 함수를 호출하고 반환 값을 검사하지 않는 경우를 검출합니다.\npthread_mutex_lock() 함수는 잠금에 실패했을 때 오류 코드를 반환합니다. 이런 예외 상황에 대한 처리를 해주지 않으면 실제로 잠금을 얻지 못했음에도 잠금을 얻었다는 가정 하에 프로그램 실행이 진행되어 문제를 일으킬 수 있습니다.\n반환 값 검사를 통해 잠금에 성공했는지 확인해야 합니다.",
  "rule.saqt.q.objc.1994.example.0.dangerous": "라인 2: pthread_mutex_lock() 함수의 반환 값에 대한 처리가 없습니다.",
  "rule.saqt.q.objc.1994.example.0.safe": "라인 5: pthread_mutex_lock() 함수의 반환 값을 검사하고 실패 시 예외 처리를 해줍니다.",
  "rule.saqt.q.objc.1994.name": "누락된 pthread_mutex_lock 반환 값 검사",
  "rule.saqt.q.objc.1994.option.target_grp1.description": "호출 후, if 구문으로 리턴 값을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "rule.saqt.q.objc.1994.option.target_grp1.name": "리턴 값 검사 대상 함수",
  "rule.saqt.q.objc.1995.description": "부동 소수점 값에 대한 == 연산 체커는 원시 타입이 아닌 두 객체를 비교할 때 객체의 내용물이 아닌 주소 값을 비교하는 경우를 검출합니다.\n두 객체가 물리적으로 같은 메모리에 위치하고 있는지 비교해야 하는 상황은 많지 않습니다. 대부분의 상황에서 그보다는 두 객체의 내용이 동일한지 비교가 필요합니다. 특별한 경우가 아니라면 두 객체를 == 연산자로 비교하는 것은 작성자의 실수일 가능성이 높습니다.\n두 객체를 비교할 때는 == 연산자 대신 [isEqual] 메시지를 사용합니다.",
  "rule.saqt.q.objc.1995.example.0.dangerous": "라인 2: 두 객체를 == 연산으로 비교하고 있습니다.",
  "rule.saqt.q.objc.1995.example.0.safe": "라인 2: 객체를 [isEqual] 메시지로 비교하도록 합니다.",
  "rule.saqt.q.objc.1995.name": "부동 소수점 값에 대한 == 연산",
  "rule.saqt.q.objc.912.description": "금지된 함수 사용 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.\n호출을 금지할 함수는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 함수를 사용하지 않도록 금지해야 하는 경우가 있습니다. 예를 들어, 프로젝트 전체의 일관성을 유지하거나, 다른 방법을 통해 해당 함수를 더 이상 사용하지 않는 경우, 혹은 해당 함수에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 함수를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.saqt.q.objc.912.example.0.dangerous": "라인 3: 현재 옵션에서 객체에 forbidden 메시지의 전송이 금지되었다고 가정하면 여기서 금지된 호출이 일어납니다.",
  "rule.saqt.q.objc.912.example.0.safe": "라인 3: 해당 메시지 전송 구문을 사용하지 않습니다.",
  "rule.saqt.q.objc.912.name": "금지된 함수 사용",
  "rule.saqt.q.objc.912.option.forbidden_function.description": "금지할 함수 혹은 리시버 이름을 입력합니다.<br />예시) .*forbidden.*",
  "rule.saqt.q.objc.912.option.forbidden_function.name": "금지할 함수 혹은 리시버",
  "rule.saqt.q.py.2367.description": "ConnectionError 예외 처리 누락 체커는 ConnectionError 예외 처리 없이 해당 예외를 발생시킬 수 있는 API를 호출하는 경우를 검출합니다.\n오류가 발생할 수 있는 API를 호출할 때 오류 상황을 제때 처리해두지 않으면 프로그램이 비정상적으로 종료될 수 있으며 원인을 파악하기도 쉽지 않습니다. 그러므로 이런 API는 항상 try 블록 내에서 호출하고 예외를 처리합니다.\nConnectionError 오류를 발생시킬 수 있는 API를 호출할 경우에는 try 구문으로 감싸고 오류 상황을 적절히 처리해야 합니다.",
  "rule.saqt.q.py.2367.example.0.dangerous": "라인 5: socket.connect() 함수를 호출하면 ConnectionError 예외가 발생할 수 있지만 처리하지 않았습니다.",
  "rule.saqt.q.py.2367.example.0.safe": "라인 7: try 구문으로 해당 API 호출을 감싸고 적절한 예외 처리를 수행합니다.",
  "rule.saqt.q.py.2367.name": "ConnectionError 예외 처리 누락",
  "rule.saqt.q.py.2368.description": "BlockingIOError 예외 처리 누락 체커는 BlockingIOError 예외 처리 없이 해당 예외를 발생시킬 수 있는 API를 호출하는 경우를 검출합니다.\n오류가 발생할 수 있는 API를 호출할 때 오류 상황을 제때 처리해두지 않으면 프로그램이 비정상적으로 종료될 수 있으며 원인을 파악하기도 쉽지 않습니다. 그러므로 이런 API는 항상 try 블록 내에서 호출하고 예외를 처리합니다.\nBlockingIOError 오류를 발생시킬 수 있는 API를 호출할 경우에는 try 구문으로 감싸고 오류 상황을 적절히 처리해야 합니다.",
  "rule.saqt.q.py.2368.example.0.dangerous": "라인 5: fcntl.flock() 함수를 호출하면 BlockingIOError 예외가 발생할 수 있지만 처리하지 않았습니다.",
  "rule.saqt.q.py.2368.example.0.safe": "라인 7: try 구문으로 해당 API 호출을 감싸고 적절한 예외 처리를 수행합니다.",
  "rule.saqt.q.py.2368.name": "BlockingIOError 예외 처리 누락",
  "rule.saqt.q.py.2369.description": "FileExistError 예외 처리 누락 체커는 FileExistError 예외 처리 없이 해당 예외를 발생시킬 수 있는 API를 호출하는 경우를 검출합니다.\n오류가 발생할 수 있는 API를 호출할 때 오류 상황을 제때 처리해두지 않으면 프로그램이 비정상적으로 종료될 수 있으며 원인을 파악하기도 쉽지 않습니다. 그러므로 이런 API는 항상 try 블록 내에서 호출하고 예외를 처리합니다. 특히 파일 관련 API는 경쟁 조건이 발생할 수 있으므로 if 구문으로 체크하기보다 try 구문을 사용하는 것이 좋습니다.\nFileExistsError 오류를 발생시킬 수 있는 API를 호출할 경우에는 try 구문으로 감싸고 오류 상황을 적절히 처리해야 합니다.",
  "rule.saqt.q.py.2369.example.0.dangerous": "라인 5: os.path.exists() 함수 호출로 os.mkdir() 함수가 작동에 성공할 수 있을지 미리 확인하고 있으나 os.path.exists() 함수 호출과 os.mkdir() 함수 호출 사이의 시간차로 인해 경쟁 조건이 발생할 수 있으므로 권장되지 않습니다.\n라인 6: os.mkdir() 함수를 호출하면 FileExistsError 예외가 발생할 수 있지만 처리하지 않았습니다.",
  "rule.saqt.q.py.2369.example.0.safe": "라인 7: try 구문으로 API 호출을 감싸줍니다.",
  "rule.saqt.q.py.2369.name": "FileExistError 예외 처리 누락",
  "rule.saqt.q.sql.1834.description": "SELECT 구문에서 누락된 WHERE 절 체커는 WHERE 절이 존재하지 않는 SELECT 구문을 검출합니다.\nSELECT 문에서 WHERE 절이 존재하지 않는 경우 시스템 과부하 현상이 발생할 수 있습니다.\n특정 조건에 해당하는 컬럼을 조회하도록 WHERE 절 추가를 권장합니다.",
  "rule.saqt.q.sql.1834.example.0.dangerous": "라인 2: SELECT 구문에 WHERE 절이 없습니다.",
  "rule.saqt.q.sql.1834.example.0.safe": "라인 6: WHERE 절을 추가하여 특정 조건에 대항하는 열을 조회합니다.",
  "rule.saqt.q.sql.1834.name": "SELECT 구문에서 누락된 WHERE 절",
  "rule.saqt.q.sql.2264.description": "존재하지 않는 테이블 체커는 존재하지 않는 테이블을 사용하는 SQL 구문을 검출합니다.\n데이터베이스에 존재하지 않는 테이블을 참조할 경우 실행 오류를 발생할 수 있습니다.\n존재하지 않는 테이블을 정의하고 생성합니다. 오탈자로 인해 테이블 이름이 잘못 기입된 경우는 DML 구문을 수정합니다.",
  "rule.saqt.q.sql.2264.example.0.dangerous": "라인 4: jisa_code 테이블을 참조합니다. jisa_code 테이블은 DDL에 존재하지 않습니다.",
  "rule.saqt.q.sql.2264.example.0.safe": "라인 2: 존재하지 않는 테이블을 정의하고 생성합니다.",
  "rule.saqt.q.sql.2264.name": "존재하지 않는 테이블",
  "rule.saqt.q.sql.2265.description": "존재하지 않는 컬럼 체커는 존재하지 않는 컬럼을 사용하는 SQL 구문을 검출합니다.\n데이터베이스에 존재하지 않는 컬럼을 참조할 경우 실행 오류를 발생할 수 있습니다.\n해당 테이블에 검출된 컬럼을 추가합니다. 오탈자로 인해 컬럼이 잘못 기입된 경우는 DML 구문을 수정합니다.",
  "rule.saqt.q.sql.2265.example.0.dangerous": "라인 5: DROS.tb_cbl_stat_control 테이블에 'CONTROL_SUMMER_EXCEPT' 이라는 컬럼이 존재 하지 않습니다.",
  "rule.saqt.q.sql.2265.example.0.safe": "라인 2: 존재하지 않는 컬럼을 테이블에 추가합니다.\n라인 6: 테이블에 존재하는 summer_except 컬럼을 참조합니다.",
  "rule.saqt.q.sql.2265.name": "존재하지 않는 컬럼",
  "rule.saqt.q.sql.2266.description": "사용하지 않는 테이블 체커는 데이터베이스에는 존재하나 DML 구문에서 한 번도 사용되지 않는 테이블을 검출합니다.\nDML 구문에서 한 번도 사용되지 않는 테이블은 의미 없는 데이터일 수 있습니다. 프로그램 실행에는 문제가 없으나 리소스가 낭비될 수 있습니다.\n의도한 데이터가 아닌 경우 해당 테이블을 삭제합니다.",
  "rule.saqt.q.sql.2266.example.0.dangerous": "라인 2: tb_cbl_stat_control 테이블이 정의됩니다.\n라인 8: tb_cbl_stat_control 테이블을 참조하는 DML이 존재하지 않습니다.",
  "rule.saqt.q.sql.2266.example.0.safe": "라인 2: 사용되지 않는 테이블 tb_cbl_stat_control을 삭제합니다.",
  "rule.saqt.q.sql.2266.name": "사용하지 않는 테이블",
  "rule.saqt.q.sql.2267.description": "사용하지 않는 컬럼 체커는 데이터베이스에는 존재하나 DML 구문에서 한 번도 사용되지 않은 컬럼을 검출합니다.\nDML 구문에서 한 번도 사용되지 않는 컬럼은 의미 없는 데이터일 수 있습니다. 프로그램 실행에는 문제가 없으나 리소스가 낭비될 수 있습니다.\n의도한 데이터가 아닌 경우 해당 컬럼을 삭제합니다.",
  "rule.saqt.q.sql.2267.example.0.dangerous": "라인 5: IKW 컬럼이 정의됩니다.\n라인 9: TB_WEEK_EXCEPTION_CUSTOMER 테이블 내 IKW 컬럼을 참조하는 DML이 존재 하지 않습니다.",
  "rule.saqt.q.sql.2267.example.0.safe": "라인 2: 사용되지 않는 컬럼 IKW를 삭제합니다.",
  "rule.saqt.q.sql.2267.name": "사용하지 않는 컬럼",
  "rule.saqt.q.sql.2268.description": "유효하지 않은 숫자 형식 체커는 데이터베이스에 숫자로 정의된 컬럼에 다른 형식의 값을 입력하는 DML 구문을 검출합니다.\nUPDATE, INSERT 혹은 SELECT 구문에서 NUMBER로 정의된 컬럼에 다른 형식의 값을 입력할 경우를 검출합니다.\n컬럼에 정의된 형식과 다른 형식의 값을 입력할 경우 실행 시 구문 오류가 발생할 수 있습니다.\nSQL 구문을 실행하기 전에 인자 값의 형식을 확인합니다.",
  "rule.saqt.q.sql.2268.example.0.dangerous": "라인 18: map에 id값으로 문자열이 삽입되었습니다.\n라인 21: update 문을 실행 했습니다. Number로 정의 되어 있는 ID에 비교 값으로 문자열을 입력하여 실행 오류가 발생했습니다.",
  "rule.saqt.q.sql.2268.example.0.safe": "라인 17: SQL 문 인자 값의 타입을 확인하고 SQL 문을 실행합니다.",
  "rule.saqt.q.sql.2268.name": "유효하지 않은 숫자 형식",
  "rule.saqt.q.sql.2269.description": "컬럼 크기를 초과하는 입력 체커는 컬럼에서 허용된 길이를 초과하는 입력을 검출합니다.\nDML 구문 중 UPDATE 혹은 INSERT 시 데이터베이스에 정의된 컬럼의 크기보다 큰 값이 입력될 경우에 검출됩니다.\nDDL에 정의된 크기보다 큰 값이 입력될 경우 실행 오류를 발생할 수 있습니다.\n인자의 크기가 컬럼의 크기를 초과하지 않는 경우에만 SQL 구문을 실행합니다.",
  "rule.saqt.q.sql.2269.example.0.dangerous": "라인 19 : update 문이 실행되었습니다. 'MANAGERNM'의 크기가 30을 초과하여 실행 오류가 발생되었습니다.",
  "rule.saqt.q.sql.2269.example.0.safe": "라인 17: SQL 문 실행전에 인자의 크기를 확인하여 SQL 실행 여부를 판단합니다.",
  "rule.saqt.q.sql.2269.name": "컬럼 크기를 초과하는 입력",
  "rule.saqt.q.sql.2270.description": "잘못된 GROUP BY 절 체커는 GROUP BY 사용 시 SELECT 구문에 기술된 모든 단일 컬럼이 GROUP BY 절에 기술되지 않은 SQL 구문을 검출합니다.\nGROUP BY 절에 기술된 컬럼을 기준으로 그룹을 만들어 각 그룹 별로 집계함수의 값을 보여줍니다. 그룹의 기준에 SELECT에 기술된 모든 단일 컬럼을 포함하지 않는 경우, 누락된 단일 컬럼을 그룹화할 수 없기 때문에 오류가 발생합니다. rep) ORA-00979\n집계 함수에 사용되는 컬럼을 제외한 모든 단일 컬럼을 GROUP BY 절에 기술합니다.",
  "rule.saqt.q.sql.2270.example.0.dangerous": "라인 4: name 이 Group By 절에 기술 되지 않아 SQL 실행 시 오류를 발생할 수 있습니다.",
  "rule.saqt.q.sql.2270.example.0.safe": "라인 4: 집계 함수에 사용되는 컬럼을 제외한 모든 단일 컬럼을 GROUP BY 절에 기술합니다.",
  "rule.saqt.q.sql.2270.name": "잘못된 GROUP BY 절",
  "rule.saqt.q.sql.2271.description": "널 값을 허용하지 않는 컬럼에 널 값 입력 체커는 NOT 널 컬럼에 널 값을 입력하는 구문을 검출합니다.\nNOT 널 컬럼에 널 값을 입력하는 DML 구문을 검출합니다. UPDATE 혹은 INSERT 구문의 매개 변수를 기반으로 입력되는 컬럼이 널 값이 허용하는지 확인합니다. 해당 컬럼이 널 값을 허용하지 않는 경우, 매개 변수가 널 인지 검사합니다. 매개 변수의 널 여부를 판단할 수 없는 경우 널로 판단합니다.\nSQL 제약 조건을 위반하는 경우에 SQL 구문이 취소되어 의도하지 않은 동작을 발생할 수 있습니다.\nNOT 널 컬럼에 DML 구문을 사용하기 전에 매개 변수가 널 값인지 아닌지 검사합니다. 널 값이 아닌 경우에만 DML 구문을 실행합니다.",
  "rule.saqt.q.sql.2271.example.0.dangerous": "라인 11: USER_ID가 NOT 널로 정의됩니다.\n라인 17 : map에 userId로 널 값이 입력되었습니다.\n라인 19 : Insert문이 실행되었습니다.\n널 값을 가질 수 없는 컬럼인 'USER_ID' 에 널 값이 입력 되었습니다.",
  "rule.saqt.q.sql.2271.example.0.safe": "라인 11: USER_ID가 NOT 널로 정의됩니다.\n라인 16: SQL 문 인자 값이 널인지 확인 후 SQL 문을 실행합니다.",
  "rule.saqt.q.sql.2271.name": "널 값을 허용하지 않는 컬럼에 널 값 입력",
  "rule.saqt.q.sql.2272.description": "날짜 형식 오류 체커는 날짜 형식에 맞지 않는 입력을 검출합니다.\nDataType 변환 함수 사용 시 입력한 값과 형식이 맞지 않을 경우 실행 오류가 발생할 수 있습니다.\nSQL 구문 실행 전에 인자 값의 날짜 형식을 확인합니다.",
  "rule.saqt.q.sql.2272.example.0.dangerous": "라인 11: map에 startDate 값으로 \"19901322\"이 삽입 되었습니다.\n라인 14: TO_DATE() 함수를 포함하는 select 문이 실행되었습니다. TO_DATE() 에 입력값이 'yyyymmdd' 포맷에 맞지 않습니다. 월 단위(mm)의 값이 잘못 되었습니다.",
  "rule.saqt.q.sql.2272.example.0.safe": "라인 18: SQL을 실행하기 전에 인자 값의 형식을 미리 확인하여 SQL이 실행 가능한지 판단합니다.",
  "rule.saqt.q.sql.2272.name": "날짜 형식 오류",
  "rule.saqt.q.sql.2273.description": "구문 오류 체커는 문법적으로 잘못된 구문을 검출합니다.\n구문 오류가 있는 코드는 실행 시에 문법 오류가 발생합니다.\n코드를 실행하기 전에 구문 오류를 수정합니다.",
  "rule.saqt.q.sql.2273.example.0.dangerous": "라인 5: SUBSTR() 함수 사용 시 '(' 가 빠져있어 실행 시에 문법 오류가 발생할 위험이 있습니다.",
  "rule.saqt.q.sql.2273.example.0.safe": "라인 5: 구문 오류를 확인하고 문법에 맞도록 수정합니다.",
  "rule.saqt.q.sql.2273.name": "구문 오류",
  "rule.saqt.q.sql.2419.description": "유효하지 않은 테이블 이름 체커는 유효하지 않은 테이블 이름을 검출합니다.\n테이블을 생성 혹은 변환하는 SQL 구문(DML, DDL)을 분석합니다. 테이블 이름에서 구문 오류가 발생하는 SQL 구문을 검출합니다.\n테이블 생성 혹은 변환 시 테이블 이름으로 사용할 수 없는 문자를 사용할 경우 구문 오류가 발생할 수 있습니다. rep) ORA-00903\n테이블 이름에 예약어 또는 특수문자를 사용하지 않습니다.",
  "rule.saqt.q.sql.2419.example.0.dangerous": "라인 2: 'ORDER'는 Oracle 예약어로 Table명에 적절하지 못합니다.",
  "rule.saqt.q.sql.2419.example.0.safe": "라인 2: 테이블 이름을 SQL 예약어 및 특수문자가 없도록 수정합니다.",
  "rule.saqt.q.sql.2419.name": "유효하지 않은 테이블 이름",
  "rule.saqt.q.sql.2420.description": "PRIMARY KEY 컬럼에 널 값 입력 체커는 PRIMARY KEY 컬럼에 널 값을 입력하는 구문을 검출합니다.\nPRIMARY KEY로 정의된 컬럼에 널 값을 입력하는 DML 구문을 검출합니다. UPDATE 혹은 INSERT 구문의 매개 변수를 기반으로 입력되는 컬럼이 PRIMARY KEY인지 확인합니다. 해당 컬럼이 PRIMARY KEY인 경우, 매개 변수가 널 인지 검사합니다. 매개 변수의 널 여부를 판단할 수 없는 경우 널로 판단합니다.\nSQL 제약 조건을 위반하는 경우에 SQL 구문이 취소되어 의도하지 않은 동작을 발생할 수 있습니다.\nPRIMARY KEY 컬럼에 DML 구문을 사용하기 전에 매개 변수가 널 값인지 아닌지 검사합니다. 널 값이 아닌 경우에만 DML 구문을 실행합니다.",
  "rule.saqt.q.sql.2420.example.0.dangerous": "라인 8: STANDARD_YEAR가 PRIMARY KEY로 정의됩니다.\n라인 14 : map에 standardYear로 널 값이 입력되었습니다.\n라인 16 : Insert문이 실행되었습니다. Primary Key 컬럼인 'STANDARD_YEAR' 에 널 값이 입력 되었습니다.",
  "rule.saqt.q.sql.2420.example.0.safe": "라인 8: STANDARD_YEAR가 PRIMARY KEY로 정의됩니다.\n라인 14: SQL 문 인자 값이 널인지 확인 후 SQL 문 실행 여부를 판단합니다.",
  "rule.saqt.q.sql.2420.name": "PRIMARY KEY 컬럼에 널 값 입력",
  "rule.saqt.q.sql.2421.description": "SELECT 구문에 포함되지 않은 ORDER BY 절 컬럼 체커는 ORDER BY 절에 기술된 컬럼을 포함하지 않는 SELECT 구문을 검출합니다..\nDISTINCT 사용 시, ORDER BY 절에 기술 된 컬럼이 SELECT 구문에 포함되어 있는지 검사한다.\nDISTINCT 키워드 사용 시 기술된 컬럼을 제외한 컬럼에서 중복되는 결과를 제거합니다. ORDER BY 절에 명시된 컬럼을 SELECT 구문에 기술하지 않아 해당 컬럼의 값이 중복되어 제거되는 경우 오류가 발생합니다.\nORDER BY 절에 기술된 컬럼을 SELECT 구문에 포함합니다.",
  "rule.saqt.q.sql.2421.example.0.dangerous": "라인 2: ORDER BY 절 컬럼인 'seq'가 SELECT 구문에 포함되지 않아 SQL 실행 시 오류가 발생할 수 있습니다.",
  "rule.saqt.q.sql.2421.example.0.safe": "라인 2: ORDER BY 절에 정의된 컬럼을 SELECT 절에 포함합니다.",
  "rule.saqt.q.sql.2421.name": "SELECT 구문에 포함되지 않은 ORDER BY 절 컬럼",
  "rule.saqt.q.sql.7169.description": "INSERT문에서 APPEND 힌트가 사용되면 검출합니다.\nAPPEND 힌트를 사용하는 INSERT문은 대상 테이블에 배타락(Exclusive Lock; TM Lock mode = X)를 걸어 다른 트랜잭션(transaction)에 의한 INSERT/UPDATE/DELETE문을 동시에 실행할 수 없도록 설정합니다. 이로 인해 해당 테이블을 접근하는 다른 쿼리가 정상적으로 실행되지 않을 수 있습니다.\nINSERT문에서 APPEND 힌트를 사용하지 않습니다.",
  "rule.saqt.q.sql.7169.example.0.dangerous": "라인 1: INSERT 문에 APPEND 힌트문이 사용되었습니다.",
  "rule.saqt.q.sql.7169.example.0.safe": "라인 1: INSERT 문에 APPEND 힌트문이 사용되지 않았습니다.",
  "rule.saqt.q.sql.7169.name": "INSERT 문에서의 APPEND 힌트 사용 검출",
  "rule.saqt.q.sql.7170.description": "특정 SQL 문장에서의 적합한 PARALLEL 힌트문 사용 여부를 검출합니다.\nPARALLEL 힌트문은 병렬 작업을 처리할 때 동시에 가용 가능한 서버의 개수를 지정하기 위해 사용합니다. PARALLEL 힌트문은 SELECT, INSERT, UPDATE, DELETE 및 테이블 스캔 부분의 문장에서도 사용할 수 있으며 시스템 전체에 영향을 줄 수 있습니다. 특히 PARALLEL 힌트문의 degree를 할당하지 않고 배치(Batch)를 사용할 경우 CPU를 대량으로 소진할 가능성이 있습니다.\n특정 SQL 문장에서 PARALLEL 힌트문을 사용하지 않도록 합니다. PARALLEL 힌트문을 사용하도록 허용된 경우, 반드시 degree 값을 할당한 후에 사용하세요.",
  "rule.saqt.q.sql.7170.example.0.dangerous": "라인 1, 5: 금지된 PARALLEL 힌트문을 사용했습니다.",
  "rule.saqt.q.sql.7170.example.0.safe": "라인 1-2: 금지된 PARALLEL 힌트문을 사용하지 않았습니다.\n라인 4: PARALLEL 힌트문을 사용하도록 허용한 경우, degree 값을 할당한 뒤 사용했습니다.",
  "rule.saqt.q.sql.7170.name": "특정 SQL 문장에서의 PARALLEL 힌트문 사용 검출",
  "rule.saqt.q.sql.7214.description": "ROWNUM과 ORDER BY가 동일 QUERY BLOCK에 존재하는 경우, ORDER BY가 가장 늦게 수행되므로 결과 셋에 오류가 발생할 수 있습니다.\n쿼리를 따로 작성하여 사용합니다. 서브쿼리 사용이 허용되는 경우, ORDER BY를 서브쿼리로 작성하여 먼저 실행한 뒤 ROWNUM값을 사용합니다.",
  "rule.saqt.q.sql.7214.example.0.dangerous": "라인 3-4: ROWNUM과 ORDER BY가 동일한 QUERY BLOCK에 존재합니다. ORDER BY가 가장 늦게 수행되므로 정렬 기준이 의도와는 다르게 작용할 가능성이 높습니다.",
  "rule.saqt.q.sql.7214.example.0.safe": "라인 3: ROWNUM과 ORDER BY가 동일한 QUERY BLOCK에 존재하지 않습니다.",
  "rule.saqt.q.sql.7214.name": "ROWNUM과 ORDER BY가 동일 QUERY BLOCK에 존재 검사",
  "rule.saqt.q.sql.7215.description": "DB에서 오류나 성능에 문제가 되는 SQL이 확인되어 튜닝 후 반영 시 관련 프로그램 추적에 많은 시간이 소요되어 SQL 문장 내 주석으로 고유한 식별자를 기입합니다.\n식별자의 형태는 특정 컬럼 정규식 패턴 형식으로 작성합니다. 또한 SQL 문장 내 특정 위치에 존재해야 합니다. SQL 문장 내 정규식에 정의된 형식 및 정해진 위치에 주석이 존재하지 않으면 검출합니다.\nSQL 문장 내 정규식에 정의된 형식 및 정해진 위치에 주석을 작성합니다.",
  "rule.saqt.q.sql.7215.example.0.dangerous": "라인 1-2: SQL 문장 상단에 \"*SQL_ID*\" 형식의 주석이 존재하지 않습니다.",
  "rule.saqt.q.sql.7215.example.0.safe": "라인 1: SQL 문장 상단에 지정한 \"*SQL_ID*\" 형식의 주석이 존재합니다.",
  "rule.saqt.q.sql.7215.name": "고유 식별자(SQL 상단에 주석) 검사",
  "rule.saqt.q.sql.7217.description": "지정 문장 형식별 퀴리문 내에 필수적으로 요구되는 특정 문구가 사용되었는지 검사합니다.\nDB의 효율적인 운용을 위해 SQL 문장별로 반드시 사용해야 하는 값이 존재할 수 있습니다. 이는 컬럼명 또는 타 쿼리의 결과값을 인자 형태(#{...}, :...)로 받는 경우를 모두 포함하며, 해당 값을 사용하지 않을 시 데이터의 체계적인 유지보수 및 효율적 사용에 제약이 생깁니다. 따라서 문장별로 요구되는 특정 문구가 쿼리에 사용되었는지 확인합니다.\n지정 문장 형식별 퀴리문 작성시 필수적으로 요구되는 특정 문구를 사용하지 않았습니다.\n지정 문장 형식별 퀴리문 작성시 필수적으로 요구되는 특정 문구를 사용합니다.",
  "rule.saqt.q.sql.7217.example.0.dangerous": "라인 11-13: INSERT 문에서 필수 문구를 사용하지 않았습니다.",
  "rule.saqt.q.sql.7217.example.0.safe": "라인 11-14: INSERT 문에서 필수 문구를 사용했습니다.",
  "rule.saqt.q.sql.7217.name": "지정 문장 형식별 필수 문구 사용 검사",
  "rule.saqt.q.sql.7218.description": "FROM 절(조인 구문 포함)에 명시된 일반 테이블, 인라인 뷰(서브 쿼리 블록) 자체, 서브 쿼리 내부의 테이블을 대상으로 별칭(Alias) 존재 유무 및 사용 여부를 점검합니다. 각 테이블에 별칭을 작성하지 않았거나, 별칭을 작성했더라도 SELECT 절이나 WHERE 절에서 별칭 없이 컬럼명만 단독으로 작성한 경우를 검출합니다. 이를 통해 단일 테이블을 조회하는 쿼리이더라도 향후 운영 단계에서 조인이 추가되거나 동일한 이름의 컬럼이 추가될 상황을 대비할 수 있습니다. 컬럼에 테이블 별칭을 명시하지 않으면 데이터베이스 시스템이 어떤 테이블의 컬럼인지 식별하지 못해 구문 오류가 발생할 수 있습니다.\nFROM 절(조인 구문 포함)에 명시된 일반 테이블, 인라인 뷰 자체, 서브 쿼리 내부의 테이블에 별칭(Alias)을 명확히 작성하세요. 이후 SELECT 절이나 WHERE 절에서 컬럼을 작성할 때는 컬럼명만 단독으로 작성하지 않고, `{별칭}.{컬럼명}` 형태로 작성하여 데이터베이스 시스템이 컬럼의 출처를 식별할 수 있도록 합니다.",
  "rule.saqt.q.sql.7218.example.0.dangerous": "라인 4: 인라인 뷰 자체의 테이블 별칭이 누락되어 있습니다. 또한 인라인 뷰 내부 쿼리의 테이블(role_data)과 SELECT 절의 컬럼 이름(auth_id) 앞에도 테이블 별칭이 누락되어 있습니다.\n라인 6, 9: SELECT와 WHERE 절에 있는 컬럼(user_id, role_name) 이름 앞에 테이블 별칭이 누락되었습니다. 컬럼에 테이블 별칭을 명시하지 않으면, 데이터베이스 시스템이 어떤 테이블의 컬럼인지 식별하지 못해 구문 오류가 발생할 수 있습니다.",
  "rule.saqt.q.sql.7218.example.0.safe": "라인 1-3: FROM 절의 각 테이블 뒤에 별칭(Alias)을 지정하고, SELECT와 WHERE 절의 모든 컬럼 이름 앞에도 테이블 별칭을 명시해야 합니다.",
  "rule.saqt.q.sql.7218.name": "테이블에 Alias 미사용 검사",
  "rule.saqt.q.sql.7262.description": "지정 문장 형식별 퀴리문 내에 금지된 문구가 사용되었는지 검사합니다.\nDB의 효율적인 운용을 위해 SQL 문장별로 사용이 금지된 값이 존재할 수 있습니다. 이는 금지된 컬럼명 또는 타 쿼리의 결과값을 인자 형태(#{...}, :...)로 받는 경우를 모두 포함하며, 이러한 값을 특정 문장에 사용할 경우 예상치 못한 오류가 생겨 데이터의 체계적인 유지보수 및 효율적 사용에 제약이 생깁니다. 따라서 문장별로 금지된 문구가 쿼리에 사용되었는지 확인합니다.\n지정 문장 형식별 퀴리문 작성시 금지된 문구를 사용했습니다.\n지정 문장 형식별 퀴리문을 작성할 때 금지된 문구를 사용하지 않도록 하세요.",
  "rule.saqt.q.sql.7262.example.0.dangerous": "라인 11-14: INSERT 문에서 금지된 문구를 사용했습니다.",
  "rule.saqt.q.sql.7262.example.0.safe": "라인 11-14: INSERT 문에서 금지된 문구를 사용하지 않았습니다.",
  "rule.saqt.q.sql.7262.name": "지정 문장 형식별 금지 문구 사용 검사",
  "rule.saqt.q.sql.7533.description": "INSERT 구문에서 INTO 테이블 이름 뒤에 대상 컬럼 이름을 생략한 경우 이슈로 검출합니다.\nINSERT 구문에서 INTO 테이블 이름 뒤에 대상 컬럼 이름을 소괄호 ()로 묶어 명시적으로 작성합니다.",
  "rule.saqt.q.sql.7533.example.0.dangerous": "라인 1: INSERT 구문에서 테이블 이름 뒤에 대상 컬럼 이름을 작성하지 않았습니다.",
  "rule.saqt.q.sql.7533.example.0.safe": "라인 1: INSERT 구문에서 테이블 이름 뒤에 대상 컬럼 이름을 괄호 ()로 묶어 올바르게 작성했습니다.",
  "rule.saqt.q.sql.7533.name": "INSERT 문에서 컬럼 이름 생략",
  "rule.saqt.q.sql.7534.description": "SELECT 절에서 별표(*)를 사용하면 불필요한 컬럼 조회로 인해 네트워크 전송량 및 메모리 사용량을 증가시킵니다. 또한 테이블 구조 변경에 따른 애플리케이션의 컬럼 매핑 오류나, 다중 테이블 조인 환경에서 동일 컬럼명으로 인한 열 참조 모호성 오류를 유발할 수 있습니다.\nSELECT 절에서 업무에 필요한 컬럼만 명시적으로 작성합니다. 단, 프레임워크가 자동 생성하는 페이징 래퍼 등 구조상 별표(*)를 사용해야만 하는 경우는 제외 옵션으로 관리합니다.",
  "rule.saqt.q.sql.7534.example.0.dangerous": "라인 1, 5: SELECT 절에서 별표(*)를 사용하여 전체 컬럼을 조회했습니다. 따라서 불필요한 메모리 낭비를 발생시키며, 중복된 컬럼 이름이 존재할 경우 의도하지 않은 오류가 발생할 수 있습니다.",
  "rule.saqt.q.sql.7534.example.0.safe": "라인 1: SELECT 절에서 전체 컬럼 조회(*)를 사용하지 않고 명시적인 컬럼을 사용해야 합니다.",
  "rule.saqt.q.sql.7534.name": "SELECT 절 내 * 사용 금지",
  "rule.saqt.q.sql.964.description": "INSERT 쿼리에서 일치하지 않는 컬럼 및 값의 개수 체커는 테이블 컬럼의 수와 입력의 수가 일치하지 않는 INSERT 구문을 검출합니다.\n컬럼의 수와 입력의 수가 일치하지 않으면 오류가 발생합니다.\n컬럼의 수와 입력의 수를 일치시켜야 합니다. 빈 값을 의도한 경우 널을 대신 사용합니다.",
  "rule.saqt.q.sql.964.example.0.dangerous": "라인 4: 컬럼의 수(6)와 입력의 수(5)가 일치하지 않습니다.",
  "rule.saqt.q.sql.964.example.0.safe": "라인 4: 컬럼의 수(6)와 입력의 수(6)가 일치합니다.",
  "rule.saqt.q.sql.964.name": "INSERT 쿼리에서 일치하지 않는 컬럼 및 값의 개수",
  "rule.saqt.q.sql.968.description": "DELETE 및 UPDATE 구문에서 누락된 WHERE 절 체커는 WHERE 절을 포함하지 않은 DELETE 또는 UPDATE 구문을 검출합니다.\nWHERE 절이 존재하지 않는 경우 모든 레코드가 영향을 받아 의도하지 않은 동작이 발생할 수 있습니다.\n특정 조건에 해당하는 레코드를 삭제 또는 갱신하도록 WHERE 절 추가를 권장합니다.",
  "rule.saqt.q.sql.968.example.0.dangerous": "라인 1: DELETE 구문에 WHERE 절이 없습니다.",
  "rule.saqt.q.sql.968.example.0.safe": "라인 3: DELETE 구문에 WHERE 절이 추가합니다.",
  "rule.saqt.q.sql.968.name": "DELETE 및 UPDATE 구문에서 누락된 WHERE 절",
  "rule.saqt.q.swift.2333.description": "대입 연산의 좌측 피연산자 갱신 체커는 `=`로 끝나는 이항 연산자가 왼쪽 피연산자를 업데이트 하지 않는경우를 검출합니다.\n통상적으로, 이항 연산자가 `=`로 끝날 경우 왼쪽 피연산자를 업데이트합니다. 이를 어길 경우, 사용자가 그 연산자의 용도를 잘못 이해하고 오용할 수 있습니다. 따라서, 반드시 왼쪽 피연산자가 업데이트되어야 합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n연산자를 재정의할 때, 좌측 피연산자를 업데이트하도록 프로그램을 작성합니다.",
  "rule.saqt.q.swift.2333.example.0.dangerous": "라인 2: 왼쪽 피연산자인 p1 연산자가 업데이트되지 않았습니다.",
  "rule.saqt.q.swift.2333.example.0.safe": "라인 2: p1을 업데이트하여 사용자의 오용을 막습니다.",
  "rule.saqt.q.swift.2333.name": "대입 연산의 좌측 피연산자 갱신",
  "rule.saqt.q.swift.2334.description": "동일한 값을 반환하는 삼항 연산자 체커는 삼항 연산자가 조건과 무관하게 같은 값을 반환하는 경우를 검출합니다.\n삼항 연산자는 조건과 관계없이 같은 값을 반환하면 안됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n삼항연산자가 조건에 따라 다른 값을 리턴하도록 수정합니다.",
  "rule.saqt.q.swift.2334.example.0.dangerous": "라인 2, 6: 삼항 연산자가 조건과 관계없이 항상 같은 값을 반환합니다.",
  "rule.saqt.q.swift.2334.example.0.safe": "라인 2, 6: 삼항 연산자가 조건에 따라 다른 값을 반환하도록 하거나, 삼항 연산자 없이 그 값을 반환해야 합니다.",
  "rule.saqt.q.swift.2334.name": "동일한 값을 반환하는 삼항 연산자",
  "rule.saqt.q.swift.2336.description": "중복된 조건 검사 체커는 if 문 또는 switch 문에서 동일한 조건을 중복 확인 하는 경우를 검출합니다.\nif 문 또는 switch 문에서 동일한 조건을 중복으로 사용할 경우 후자의 조건은 어떠한 경우에도 접근이 불가능합니다. 따라서 중복된 조건은 어떠한 경우에도 사용되지 않는 미사용 코드를 생성합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n동일한 조건을 검사하지 않도록 프로그램을 작성합니다.",
  "rule.saqt.q.swift.2336.example.0.dangerous": "라인 8: 위에서 이미 확인된 조건과 동일한 조건을 확인합니다.",
  "rule.saqt.q.swift.2336.example.0.safe": "라인 8: 동일 case의 코드의 경우 한 분기절에 모두 씁니다.",
  "rule.saqt.q.swift.2336.name": "중복된 조건 검사",
  "rule.saqt.q.swift.2337.description": "시스템 함수 호출 체커는 금지된 함수 system()를 호출하는경우를 검출합니다.\n금지된 함수 system()을 호출하면 안됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n시스템 함수를 호출하지 않습니다.",
  "rule.saqt.q.swift.2337.example.0.dangerous": "라인 2, 4: system()이 호출되었습니다.",
  "rule.saqt.q.swift.2337.example.0.safe": "라인 1: 금지된 함수를 호출하지 않습니다.",
  "rule.saqt.q.swift.2337.name": "시스템 함수 호출",
  "rule.saqt.q.swift.2338.description": "같은 피연산자를 가진 이항 연산 체커는 이항 연산 기호의 양쪽에 같은 표현식이 존재 할 경우를 검출합니다.\n이항 연산 기호의 양쪽에 같은 표현식이 존재 할 경우 반환 값이 반드시 True이기 때문에 불필요한 코드를 생성합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n검사하고자 하는 값이 동일한 값인지 검토합니다.",
  "rule.saqt.q.swift.2338.example.0.dangerous": "라인 1: 이항 연산 기호의 양쪽에 동일한 값이 존재합니다. 따라서, 항상 True 값을 반환합니다.",
  "rule.saqt.q.swift.2338.example.0.safe": "라인 1: 이항 연산 기호를 사용할 경우 양쪽 값이 다른 것을 확인합니다.",
  "rule.saqt.q.swift.2338.name": "같은 피연산자를 가진 이항 연산",
  "rule.saqt.q.swift.2339.description": "제어문 후 작성된 코드 체커는 한 코드 블록 내에서 사용된 분기문 및 반환문을 뒤따르는 코드가 존재하는 경우를 검출합니다.\n한 코드 블록 내에서 사용된 분기문 및 반환문은 뒤따르는 코드들을 접근할 수 없게 합니다. 따라서 동일 코드 블록 안에선 제어문 뒤에 있는 코드들은 무의미합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n분기문 및 반환문 이후의 코드를 삭제합니다.",
  "rule.saqt.q.swift.2339.example.0.dangerous": "라인 7: break 문 이후에 오는 코드는 접근이 불가능합니다.",
  "rule.saqt.q.swift.2339.example.0.safe": "라인 6: break 문 이후에 오는 코드의 위치를 break 문 이전으로 변경합니다.",
  "rule.saqt.q.swift.2339.name": "제어문 후 작성된 코드",
  "rule.saqt.q.swift.2340.description": "조건문 속에 포함되지 않은 제어문 체커는 제어문이 조건문 속에서 사용되지 않은 경우를 검출합니다.\n조건문 속에 포함되지 않은 제어문(break, continue, fallthrough, return)은 속해 있는 반복문 등을 무의미하게 합니다. 따라서 분기문은 조건문 속에 포함되어야 합니다. (return의 경우 함수 내에선 예외)\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n제어문은 조건문 안에서 사용하도록 합니다.",
  "rule.saqt.q.swift.2340.example.0.dangerous": "라인 3: break 문을 조건문 없이 사용했습니다.",
  "rule.saqt.q.swift.2340.example.0.safe": "라인 5: break 문을 조건문 속에 포함시켰습니다.",
  "rule.saqt.q.swift.2340.name": "조건문 속에 포함되지 않은 제어문",
  "rule.saqt.q.swift.2341.description": "부동 소수점 값에 대한 관계 연산 체커는 float 타입의 변수에 대해서 관계 연산자를 사용하는 경우를 검출합니다.\nfloat 타입의 값 비교는 예상하지 못한 결과를 가져 올 수 있습니다. 따라서, float 타입의 변수에 대해 관계 연산자를 사용하여서는 안됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\nfloat 타입의 변수에 대해서 관계 연산자를 사용하지 않도록 합니다.",
  "rule.saqt.q.swift.2341.example.0.dangerous": "라인 3: a에 0.1의 값을 넣더라도 실제 값은 0.100123810200으로 저장될 수 있습니다. 그러면 if 문을 통과하지 못하는 경우가 발생할 수 있습니다.",
  "rule.saqt.q.swift.2341.example.0.safe": "라인 3: float 타입의 변수에 대해서 관계 연산자를 사용해서는 안됩니다.",
  "rule.saqt.q.swift.2341.name": "부동 소수점 값에 대한 관계 연산",
  "rule.saqt.q.swift.2342.description": "강제로 해제한 옵셔널 체커는 옵셔널을 forced-unwrap하는 경우를 검출합니다.\n옵셔널을 forced-unwrap해서는 안됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n옵셔널을 forced-unwrap하지 않습니다",
  "rule.saqt.q.swift.2342.example.0.dangerous": "라인 3, 6: 옵셔널인 tempString을 forced-unwrap 했습니다.",
  "rule.saqt.q.swift.2342.example.0.safe": "라인 1: 옵셔널 바인딩을 통해 옵셔널에 접근합니다.",
  "rule.saqt.q.swift.2342.name": "강제로 해제한 옵셔널",
  "rule.saqt.q.swift.2343.description": "연산자 우선순위 변경 체커는 기본 연산자의 연산 순위와 결합 순위를 바꾸는 경우를 검출합니다.\n기본 연산자의 연산 순위와 결합 순위를 바꾸면 안됩니다. 필요한 경우 새로운 연산자를 사용하십시오.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n기본 연산자의 우선순위를 변경하지 않도록 합니다.",
  "rule.saqt.q.swift.2343.example.0.dangerous": "라인 6: 기본 연산자의 순위 그룹을 변경합니다.",
  "rule.saqt.q.swift.2343.example.0.safe": "라인 6: 기본 연산자 이외의 연산자를 사용하십시오.",
  "rule.saqt.q.swift.2343.name": "연산자 우선순위 변경",
  "rule.saqt.q.swift.2344.description": "암시적으로 해제한 옵셔널 타입 체커는 암묵적으로 해제된 옵셔널을 사용하는 경우를 검출합니다.\nImplicitly unwrapped optionals를 사용해서는 안됩니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n암시적으로 해제된 옵셔널 타입을 사용하지 않습니다.",
  "rule.saqt.q.swift.2344.example.0.dangerous": "라인 1: 암묵적으로 벗겨진 옵셔널 타입의 tempString을 정의했습니다.",
  "rule.saqt.q.swift.2344.example.0.safe": "라인 2: 암묵적으로 벗겨진 옵셔널 타입을 사용해서는 안됩니다.",
  "rule.saqt.q.swift.2344.name": "암시적으로 해제한 옵셔널 타입",
  "rule.saqt.q.swift.2346.description": "지문 요청 사유 메시지 누락 체커는 사용자에게 지문 입력을 요청할 때 그 이유를 명시하지 않는 경우를 검출합니다.\nApple의 정책에 따르면 애플리케이션은 항상 지문이 필요한 이유를 사용자에게 설명해야 합니다. 이렇게 하지 않으면 사용자에게 혼동이 발생하거나 애플리케이션이 AppStore에서 거부될 수도 있습니다.\n지문 입력을 요청할 때 항상 이유를 명시합니다.",
  "rule.saqt.q.swift.2346.example.0.dangerous": "라인 7: 지문 입력의 이유를 아무 내용 없는 문자열로 요청하고 있습니다.",
  "rule.saqt.q.swift.2346.example.0.safe": "라인 7: localizedReason 인자로 지문 입력이 필요한 이유를 명시합니다.",
  "rule.saqt.q.swift.2346.name": "지문 요청 사유 메시지 누락",
  "rule.saqt.q.unknown.2371.description": "지정한 문자열 사용 체커는 소스 코드 내에서 지정한 문자열이 있는 경우를 검출합니다.\n지정한 문자열은 옵션을 통해 입력할 수 있습니다.\n지정한 문자열을 사용하지 않도록 합니다.",
  "rule.saqt.q.unknown.2371.example.0.dangerous": "라인 1: forbiddenFunc 문자열을 사용했습니다. 옵션에서 forbidden 문자열을 검출 대상으로 지정했다고 가정한 결과입니다.",
  "rule.saqt.q.unknown.2371.example.0.safe": "라인 1: 지정한 문자열을 사용하지 않도록 합니다.",
  "rule.saqt.q.unknown.2371.name": "지정한 문자열 사용",
  "rule.saqt.q.unknown.2371.option.exclude_dir.description": "검출 제외 폴더 경로를 glob 패턴을 사용하여 입력합니다.<br />예시) src/java/**/core/**",
  "rule.saqt.q.unknown.2371.option.exclude_dir.name": "제외 폴더 경로",
  "rule.saqt.q.unknown.2371.option.exclude_extension.description": "검출 제외 파일 확장자를 지정합니다.<br />예시) java",
  "rule.saqt.q.unknown.2371.option.exclude_extension.name": "제외 파일 확장자",
  "rule.saqt.q.unknown.2371.option.rule.description": "검출 규칙을 정규식을 사용하여 지정합니다.",
  "rule.saqt.q.unknown.2371.option.rule.name": "검출 규칙",
  "rule.saqt.q.unknown.2371.option.target_dir.description": "분석 대상 폴더 경로를 glob 패턴을 사용하여 입력합니다.<br />예시) src/java/**/core/**",
  "rule.saqt.q.unknown.2371.option.target_dir.name": "분석 대상 폴더",
  "rule.saqt.q.unknown.2371.option.target_extension.description": "분석 대상 확장자를 입력합니다.<br />예시) java",
  "rule.saqt.q.unknown.2371.option.target_extension.name": "분석 대상 확장자",
  "rule.saqt.q.vbs.1605.description": "금지된 함수 사용 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.\n호출을 금지할 함수는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 함수를 사용하지 않도록 금지해야 하는 경우가 있습니다. 예를 들어, 프로젝트 전체의 일관성을 유지하거나, 다른 방법을 통해 해당 함수를 더 이상 사용하지 않는 경우, 혹은 해당 함수에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 함수를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.saqt.q.vbs.1605.example.0.dangerous": "라인 4: 옵션에 forbidden() 함수가 지정되었다면 이 함수를 호출하면 안됩니다.",
  "rule.saqt.q.vbs.1605.example.0.safe": "라인 3: 금지된 함수를 호출하지 않습니다.",
  "rule.saqt.q.vbs.1605.name": "금지된 함수 사용",
  "rule.saqt.q.vbs.1605.option.forbidden_function.description": "금지할 함수의 이름을 작성합니다.<br />예시) forbidden",
  "rule.saqt.q.vbs.1605.option.forbidden_function.name": "금지할 함수",
  "rule.saqt.q.vbs.1607.description": "누락된 빈 값 검사 체커는 빈 값 여부를 먼저 검사하지 않고 타입 검사를 하는 경우를 검출합니다.\n초기화되지 않은 변수에 대해 IsNumeric()과 같은 함수로 타입을 검사하면 참을 반환하므로 잘못된 프로그램을 작성할 수 있습니다.\n타입을 검사하기 전에 빈 값 여부를 먼저 검사해야 합니다.",
  "rule.saqt.q.vbs.1607.example.0.dangerous": "라인 3: 값이 비어 있는지를 검사하지 않고 IsNumeric() 함수를 사용했습니다.",
  "rule.saqt.q.vbs.1607.example.0.safe": "라인 3: 값이 비어 있는지 먼저 검사합니다.",
  "rule.saqt.q.vbs.1607.name": "누락된 빈 값 검사",
  "rule.saqt.q.vbs.1610.description": "with 구문 사용 체커는 금지된 With 구문 사용을 검출합니다.\nWith 구문을 사용하면 범위를 새로 생성하게 되어 가독성이 매우 떨어집니다.\nWith 구문을 사용하지 말고 더 직관적인 방식을 사용합니다.",
  "rule.saqt.q.vbs.1610.example.0.dangerous": "라인 1: With 문을 사용했습니다.",
  "rule.saqt.q.vbs.1610.example.0.safe": "라인 1: With 구문을 사용하지 않고도 원하는 결과를 얻을 수 있습니다.",
  "rule.saqt.q.vbs.1610.name": "with 구문 사용",
  "rule.saqt.q.vbs.1614.description": "누락된 반환 구문 체커는 함수 안에 반환 구문이 없는 경우를 검출합니다.\n함수 안에 반환 구문이 존재하지 않으면 그 함수는 서브 프로시져처럼 작동하기 때문에 오류가 발생할 수 있습니다.\n함수 안에는 항상 반환 구문을 포함시킵니다.",
  "rule.saqt.q.vbs.1614.example.0.dangerous": "라인 1: add() 함수 안에 반환문이 없습니다.",
  "rule.saqt.q.vbs.1614.example.0.safe": "라인 3: 함수 정의 안에는 항상 반환 구문을 포함시킵니다.",
  "rule.saqt.q.vbs.1614.name": "누락된 반환 구문",
  "rule.sast.c.java.2043.description": "catch 블록에서 반환 구문 사용 체커는 catch 블록 안에 반환 구문이 있는 경우를 검출합니다.\n값이 있는 반환이라면 반환할 값을 변수에 저장해두고 try 구문 전체가 끝난 후에 반환하도록 수정합니다.",
  "rule.sast.c.java.2043.example.0.dangerous": "라인 18: catch 블록 안에서 값을 반환합니다.",
  "rule.sast.c.java.2043.example.0.safe": "라인 18: catch 블록 안에서는 반환 구문을 사용하지 않습니다.",
  "rule.sast.c.java.2043.name": "catch 블록에서 반환 구문 사용",
  "rule.sast.c.java.7276.description": "NullPointerException catch 금지 체커는 NullPointerException을 직접 catch하는 구문을 검출합니다.\n정상적인 코드는 NullPointerException이 발생하지 않아야 합니다.\n따라서 NullPointerException을 catch하는 방법보다는 사전에 null 체크를 수행하는 것이 좋습니다.",
  "rule.sast.c.java.7276.example.0.dangerous": "라인 6: NullPointerException 예외를 catch했습니다.",
  "rule.sast.c.java.7276.example.0.safe": "라인 5: null 체크를 수행하도록 변경합니다.",
  "rule.sast.c.java.7276.name": "NullPointerException catch 금지",
  "rule.sast.c.java.7277.description": "java.math.BigDecimal의 인자 실수 타입 체커는 BigDecimal 인자의 타입이 실수이면 검출합니다.\n인자로 0.1을 설정했을 경우 실제 0.1231248935092 과 같은 값을 가집니다. 따라서 BigDecimal 의 인자 타입이 실수인 경우 계산한 값이 정확하게 나오지 않을 수 있습니다.\n해당하는 인자를 문자열로 변경해줍니다.",
  "rule.sast.c.java.7277.example.0.dangerous": "라인 3: BigDecimal 의 인자로 실수를 사용했습니다.",
  "rule.sast.c.java.7277.example.0.safe": "라인 3: BigDecimal의 실수 타입 인자를 문자열 타입으로 나타내도록 합니다.",
  "rule.sast.c.java.7277.name": "java.math.BigDecimal의 인자 실수 타입",
  "rule.sast.c.java.7278.description": "synchronized 메소드 선언 체커는 synchronized로 선언된 메소드를 검출합니다.\nsynchronized로 선언된 메소드는 메소드 코드 전체에서 객체 자체를 동기화할 대상으로 봅니다. 따라서 다른 스레드를 병렬으로 실행하지 않도록 지나치게 제약하여 성능 저하를 일으킬 수 있습니다.\n메소드를 선언할 때 synchronized를 사용하기보다는 메소드 내부에서 필요한 코드에 synchronized 블록을 추가하는 것이 좋습니다.",
  "rule.sast.c.java.7278.example.0.dangerous": "라인 2: 메서드 선언을 synchronized 로 하였습니다.",
  "rule.sast.c.java.7278.example.0.safe": "라인 2, 3: 메서드 선언에 synchronized 를 사용하지 않고, 메서드 내부에 synchronized 를 사용합니다.",
  "rule.sast.c.java.7278.name": "synchronized 메서드 선언",
  "rule.sast.c.java.7279.description": "ThreadGroup 클래스의 사용 체커는 java.lang.Thread 를 사용하면 검출합니다.\njava.lang.Thread 클래스의 메소드 (ThreadGroupallowThreadSuspension(), resume(), stop(), suspend(), ThreadGroup(), ...)들의 사용을 검출합니다.\n스레드 그룹은 스레드를 조직화하는 데 유용하지만 해당 클래스의 많은 메소드가 원하는 기능을 제공하지 않음에 더 이상 사용되지 않습니다. 또한 몇몇 메소드는 스레드로부터 안전하지 못합니다.\njava.lang.ThreadGroup 클래스의 메소드를 사용하지 않습니다.",
  "rule.sast.c.java.7279.example.0.dangerous": "라인 3: java.lang.ThreadGroup의 ThreadGroup을 사용합니다.\n라인 4: java.lang.ThreadGroup의 ThreadGroup을 사용합니다.\n라인 5: java.lang.ThreadGroup의 getThreadGroup()을 사용합니다.\n라인 6: java.lang.ThreadGroup의 getThreadGroup()을 사용합니다.",
  "rule.sast.c.java.7279.example.0.safe": "라인 3: ThreadGroup 을 생성하지 않도록 합니다.\n라인 4: ThreadGroup 을 생성하지 않도록 합니다.\n라인 5: getThreadGroup() 을 사용하지 않도록 합니다.\n라인 6: getThreadGroup() 을 사용하지 않도록 합니다.",
  "rule.sast.c.java.7279.name": "ThreadGroup 클래스 사용",
  "rule.sast.c.java.7280.description": "NullPointerException 객체 할당 체커는 NullPointerException 으로 객체 할당을 하면 검출합니다.\nNullPointerException 으로 객체 할당을 하면, 해당 객체 이미 null 이므로 NullPointerException 이 발생하게 됩니다.\nNullPointerException 으로 객체 할당을 한 부분을 제거합니다.",
  "rule.sast.c.java.7280.example.0.dangerous": "라인 3: NullPointerExcpetion 객체 할당을 했습니다.",
  "rule.sast.c.java.7280.example.0.safe": "라인 3: NullPointerExcpetion 객체 할당 부분을 제거합니다.",
  "rule.sast.c.java.7280.name": "NullPointerException 객체 할당",
  "rule.sast.c.java.7281.description": "지나치게 일반적인 예외 객체 사용 체커는 일반적인 예외 객체를 사용하는 코드를 검출합니다.\nRuntimeException, Throwable, Exception, Error 대신 하위 클래스화 된 예외 또는 오류를 사용하세요.",
  "rule.sast.c.java.7281.example.0.dangerous": "라인 3: 일반적인 예외인 Exception 이 사용되었습니다.",
  "rule.sast.c.java.7281.example.0.safe": "라인 3: 일반적이지 않은 예외를 사용합니다.",
  "rule.sast.c.java.7281.name": "지나치게 일반적인 예외 객체 사용",
  "rule.sast.c.java.7281.option.exception_list.name": "예외 목록",
  "rule.sast.c.java.7282.description": "Double.NaN 또는 Float.NaN 비교 체커는 비교할 때 `Double.NaN` 혹은 `Float.NaN` 등과 비교하는 경우 이를 검출합니다.\nNaN은 정렬되지 않는 값이므로 비교 연산자에 사용될 시 항상 false를 반환합니다.\n값이 NaN 값인지 확인하려면 `Double.isNaN()` 혹은 `Float.isNaN()`을 사용해야 합니다.",
  "rule.sast.c.java.7282.example.0.dangerous": "라인 2: Double.NaN을 비교 연산자에 사용했습니다.",
  "rule.sast.c.java.7282.example.0.safe": "라인 2: 값이 NaN 값인지 확인하기 위해 'Double.isNaN()' 을 사용하세요.",
  "rule.sast.c.java.7282.name": "Double.NaN 또는 Float.NaN 비교",
  "rule.sast.c.java.7283.description": "직렬화 가능하지 않은 Bean 클래스 체커는 직렬화가 가능하지 않은 Bean 클래스를 검출합니다. \n클래스가 Java Bean이거나 Bean에서 직접 또는 간접적으로 참조되는 경우, 직렬화가 필요한 상황이 있을 수 있으므로 Serializable로 작성하는 것이 좋습니다. \nBean 클래스의 private 멤버 변수는 transient 또는 static으로 표시하거나 멤버 변수의 접근자 메서드를 구현해야 합니다. 접근자 메서드는 JavaBean 명명 규칙을 따라야 합니다.",
  "rule.sast.c.java.7283.example.0.dangerous": "라인 2: badFoo에 대한 접근자가 존재하지 않습니다.",
  "rule.sast.c.java.7283.example.0.safe": "라인 2: badFoo에 대한 접근자를 생성합니다.",
  "rule.sast.c.java.7283.name": "직렬화 가능하지 않은 bean 클래스",
  "rule.sast.c.java.7284.description": "상속 받는 클래스 생성자에서 super() 또는 다른 생성자를 미호출 체커는 상속 받는 클래스 생성자에서 super() 또는 다른 생성자를 호출하지 않으면 검출합니다.\n자식 클래스의 인스턴스를 생성하면, 해당 인스턴스에는 자식 클래스의 멤버뿐만 아니라 부모 클래스의 모든 멤버까지도 포함되어 있습니다.\n부모 클래스의 멤버를 초기화하기 위해서는 자식 클래스 생성자에서 부모 클래스의 생성자까지 호출해야 합니다.\n상속 받은 클래스 생성자 내부에 super() 또는 다른 생성자를 호출합니다.",
  "rule.sast.c.java.7284.example.0.dangerous": "라인 2: 생성자 내부에서 다른 생성자를 호출하지 않습니다.",
  "rule.sast.c.java.7284.example.0.safe": "라인 2: 생성자 내부에서 super() 를 호출합니다.",
  "rule.sast.c.java.7284.name": "상속 받는 클래스 생성자에서 super() 또는 다른 생성자를 미호출",
  "rule.sast.c.java.7285.description": "부모 클래스의 생성자에서 가상 메소드 호출 체커는 부모 클래스의 생성자 내부에서 가상 메소드를 호출하면 검출합니다.\n부모 클래스의 생성자 안에서 가상 메소드를 호출하게 되면 자식 클래스의 필드가 초기화되기 전에 읽게 되는 문제가 발생합니다.\n부모 클래스의 생성자 안에서 가상 메소드를 호출하지 않도록 합니다.",
  "rule.sast.c.java.7285.example.0.dangerous": "라인 8: virtualMethod()의 가상 메소드가 Parent 생성자 내부에서 호출됩니다.",
  "rule.sast.c.java.7285.example.0.safe": "라인 8: 부모 클래스의 생성자 안에서 가상 메소드를 호출하지 않습니다.",
  "rule.sast.c.java.7285.name": "부모 클래스의 생성자에서 가상 메소드 호출",
  "rule.sast.c.java.7286.description": "Thread 클래스의 run 메소드 사용 체커는 Thread 클래스의 run 메서드를 외부에서 직접 호출하는 경우를 검출합니다. \nstart() 대신에 run()을 호출하면 새로운 스레드가 생성되지 않고 현재 스레드에서 run() 함수를 직접 호출하고 종료하기까지 대기하게 됩니다.\nThread 클래스의 run 메소드가 아닌 start 메소드를 사용해야 합니다.",
  "rule.sast.c.java.7286.example.0.dangerous": "라인 2: Thread 클래스의 run 메소드를 사용하고 있습니다.\n라인 3: Thread 클래스의 run 메소드를 사용하고 있습니다.",
  "rule.sast.c.java.7286.example.0.safe": "라인 2: Thread 클래스의 start 메소드를 사용하세요.\n라인 3: Thread 클래스의 start 메소드를 사용하세요.",
  "rule.sast.c.java.7286.name": "Thread 클래스의 run 메소드 사용",
  "rule.sast.c.java.7287.description": "반복문 인덱스에 float 자료형 사용 체커는 반복문의 인덱스로 float 자료형을 사용한 코드를 검출합니다.\nfloat 자료형을 반복문의 인덱스로 사용하면 부동소수점 표현 방식의 한계로 인해 오차가 누적되어 부정확한 결과가 발생할 수 있습니다. \n부득이하게 소수점 연산을 활용한 반복문이 필요한 경우에는 float 자료형보다 정밀도가 상대적으로 높은 double 자료형을 사용하는 것이 낫습니다.",
  "rule.sast.c.java.7287.example.0.dangerous": "라인 3: float 자료형을 반복문의 인덱스로 사용했습니다.",
  "rule.sast.c.java.7287.example.0.safe": "라인 4: 반복문 본문에서 변수에 대한 변경을 실행했습니다.",
  "rule.sast.c.java.7287.name": "반복문 인덱스에 float 자료형 사용",
  "rule.sast.c.java.7289.description": "finally 블록 내부에서 return 사용 체커는 finally 블록 안에서 사용된 return 구문을 검출합니다.\nJava에서 finally 블록은 무조건 실행됩니다. 그러나 finally 블록 안에 return 문이 있을 경우, try나 catch 블록 안에 있는 return 구문이 있더라도 무시되고, finally 블록의 return 문이 최종적으로 실행됩니다. 이로 인해 예기치 못한 결과가 발생할 수 있습니다.\nfinally 블록 안에서는 return 문을 사용하지 않는 것이 좋습니다.",
  "rule.sast.c.java.7289.example.0.dangerous": "라인 8: finally 블럭 내부에서 return 이 사용되었습니다.",
  "rule.sast.c.java.7289.example.0.safe": "라인 8: finally 블럭 내부에 return 문을 제거합니다.",
  "rule.sast.c.java.7289.name": "finally 블럭 내부에서 return 사용",
  "rule.sast.c.java.7290.description": "System.(out | err).print~ 메서드 사용 체커는 System.out.print() 혹은 System.err.print() 메서드를 사용하면 검출합니다.\nSystem.out.println()을 호출하게 되면 디스크 I/O 동기화 처리가 되기 때문에 전체적인 시스템의 성능이 저하될 수 있습니다. 또한, System.out.println()으로 디버그 처리한 부분을 일일이 주석처리 및 해제를 하는 것은 개발 및 운영의 효율성을 떨어트릴 수 있습니다.\nSystem.out.println() 혹은 System.err.println()을 사용하지 않고 전용 로거를 사용하도록 합니다.",
  "rule.sast.c.java.7290.example.0.dangerous": "라인 3: System.out.print()를 사용했습니다.",
  "rule.sast.c.java.7290.example.0.safe": "라인 4: log 를 사용하여 출력합니다.",
  "rule.sast.c.java.7290.name": "System.(out | err).print~ 메서드 사용",
  "rule.sast.c.java.7291.description": "유틸 클래스의 미사용 체커는 유틸 클래스가 아님에도 정적 요소만 포함하는 클래스를 검출합니다.\n클래스에 정적 요소만 존재한다면 해당 클래스는 인스턴스를 생성하지 않도록 유틸 클래스로 만들도록 합니다. \n정적 요소와 생성자에는 private 접근자를 사용해야 합니다.",
  "rule.sast.c.java.7291.example.0.dangerous": "라인 1: 정적 요소의 접근자가 public입니다.",
  "rule.sast.c.java.7291.example.0.safe": "라인 1: 정적 요소만 존재하는 클래스를 유틸 클래스로 만들어주기 위해 private의 생성자와 정적 요소의 접근자를 private로 변경합니다.",
  "rule.sast.c.java.7291.name": "유틸 클래스의 미사용",
  "rule.sast.c.js.1959.description": "이진 타입을 사용하지 않는 트랜잭션 체커는 이진 타입을 사용하지 않고, 트랜잭션 함수를 통해 데이터를 전송하는 경우를 검출합니다.\n개발 시점에서는 xml 타입이 디버깅하기 쉽지만, 운영 시점에서는 이진타입을 사용하여 네트워크 리소스를 줄이는 것을 권장합니다.",
  "rule.sast.c.js.1959.example.0.dangerous": "라인 1-2: 8번째 매개 변수가 0이므로 데이터를 XML 형식으로 전송하고 있습니다.\n라인 4-5: 8번째 매개 변수를 작성하지 않았기 때문에 기본 설정인 XML 방식으로 전송하고 있습니다.",
  "rule.sast.c.js.1959.example.0.safe": "라인 1-2: 8번째 매개 변수를 1로 설정하여 이진 타입으로 데이터를 전송합니다.",
  "rule.sast.c.js.1959.name": "이진 타입을 사용하지 않는 트랜잭션",
  "rule.sast.c.swift.2365.description": "암시적인 클래스 접근 제어 체커는 엑세스 레벨을 정의하지 읺고 사용하는 경우를 검출합니다.\n엑세스 레벨이 명시적으로 선언되지 않으면 의도와 다르게 동작 할 수 있습니다.\n명시적으로 엑세스 레벨을 설정합니다.",
  "rule.sast.c.swift.2365.example.0.dangerous": "라인 1: 엑세스 레벨을 명시적으로 설정하지 않았습니다.",
  "rule.sast.c.swift.2365.example.0.safe": "라인 1: 엑세스 레벨을 명시적으로 설정했습니다.",
  "rule.sast.c.swift.2365.name": "암시적인 클래스 접근 제어",
  "rule.sast.c.vbnet.2739.description": "제한되지 않은 동작 체커는 모든 동작이 허용된 컨트롤러를 검출합니다.\nPOST 이외의 동작이 허용된 컨트롤러를 검출합니다.\n컨트롤러에 모든 동작을 허용하면 CSRF 공격에 취약할 수 있습니다. POST만 허용하면 CSRF 공격을 수행하기 어려워집니다.\n<AcceptVerbs(HttpVerbs.Post)> 또는 <HttpPost> 속성을 사용하여 POST만 사용하도록 허용합니다.",
  "rule.sast.c.vbnet.2739.example.0.dangerous": "라인 1: 모든 동작을 허용하여 CSRF 공격에 취약한 상태입니다.",
  "rule.sast.c.vbnet.2739.example.0.safe": "라인 1: <AcceptVerbs(HttpVerbs.Post)> 설정을 통해 Post만 허용하도록 합니다.",
  "rule.sast.c.vbnet.2739.name": "제한되지 않은 동작",
  "rule.sast.c.vbnet.2740.description": "헤더 검사 비활성화 체커는 헤더 검사 기능이 비활성화시키는 코드를 검출합니다.\nEnableHeaderChecking 속성이 False로 설정된 경우를 검출합니다.\nEnableHeaderChecking 속성을 false로 설정하면, HTTP 응답 분할 공격에 취약해 집니다.\nEnableHeaderChecking 속성을 False로 설정하지 않거나, 명시적으로 True로 설정합니다.",
  "rule.sast.c.vbnet.2740.example.0.dangerous": "라인 1: EnableHeaderChecking 속성을 False로 설정했습니다.",
  "rule.sast.c.vbnet.2740.example.0.safe": "라인 1: EnableHeaderChecking 속성을 True로 설정했습니다.",
  "rule.sast.c.vbnet.2740.name": "헤더 검사 비활성화",
  "rule.sast.c.vbnet.2741.description": "뷰 상태 MAC 비활성화 체커는 뷰 상태 MAC 검사 기능을 비활성화하는 코드를 검출합니다.\nEnableViewStateMac 속성이 False로 설정된 경우를 검출합니다.\n뷰 상태 MAC가 비활성화되어 있는 경우, 공격자는 저장된 데이터를 임의로 변경할 수 있게 됩니다.\nEnableViewStateMac 속성을 False로 설정하지 않거나, 명시적으로 True로 설정합니다.",
  "rule.sast.c.vbnet.2741.example.0.dangerous": "라인 1: 뷰 상태 MAC을 비활성화했습니다.",
  "rule.sast.c.vbnet.2741.example.0.safe": "라인 1: 뷰 상태 MAC을 활성화하도록 합니다.",
  "rule.sast.c.vbnet.2741.name": "뷰 상태 MAC 비활성화",
  "rule.sast.c.vbnet.2742.description": "가장된 권한에 의한 실행 체커는 가장된 자격 증명으로 실행하는 경우를 이슈로 검출합니다.\n`impersonate'로 끝나는 메소드들을 검출합니다.\n가장된 권한을 사용하면 프로그램은 가장된 권한에 부여된 보안 설정으로 실행됩니다. 만약 가장된 권한을 남용하는 경우 권한이 필요하지 않은 상황에서 높은 권한으로 실행될 수 있습니다.\n프로그램을 가장된 권한으로 실행할 수 있도록 허용하는 Impersonate() 메소드를 사용하지 않도록 합니다.",
  "rule.sast.c.vbnet.2742.example.0.dangerous": "라인 1: 애플리케이션이 가장된 자격 증명으로 실행됩니다.",
  "rule.sast.c.vbnet.2742.example.0.safe": "라인 1: 가장된 자격 증명을 사용하지 않습니다.",
  "rule.sast.c.vbnet.2742.name": "가장된 권한에 의한 실행",
  "rule.sast.c.vbnet.2743.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\nMain() 메소드 및 서브 루틴에 잔존하는 디버그 코드를 검출합니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.c.vbnet.2743.example.0.dangerous": "라인 1: Main() 서브 루틴 내에서 디버깅 코드를 포함하고 있습니다.",
  "rule.sast.c.vbnet.2743.example.0.safe": "라인 1: Main() 서브 루틴을 삭제합니다.",
  "rule.sast.c.vbnet.2743.name": "남은 디버그 코드",
  "rule.sast.c.vbnet.2745.description": "HttpSessionState 속성으로 비직렬화 객체 저장 체커는 세션에 추가되는 [Serialization] 속성을 포함하지 않는 객체를 검출합니다.\nHttpSessionState 클래스는 서버에서 클라이언트마다 세션을 관리할 수 있는 기능을 제공합니다. HttpSessionState 클래스는 key/value 형식으로 클라이언트 세션의 항목들을 제공합니다. HttpSessionState 클래스 재부팅 후 세션을 재사용하고 공유하기 위해서는 영구적인 세션으로 저장할 필요가 있습니다. 해당 세션을 저장하기 위해서는 해당 항목을 직렬화해야 합니다. HttpSessionState 클래스의 속성으로 직렬화가 가능하지 않는 객체가 추가되는 경우, 세션은 정상적으로 직렬화되지 않습니다.\n세션에 추가되는 객체는 [Serializable] 속성을 통해 직렬화가 가능하다고 명시합니다.",
  "rule.sast.c.vbnet.2745.example.0.dangerous": "라인 3: 세션에 비직렬화 객체를 저장하고 있습니다.\n라인 4: 세션에 비직렬화 객체를 저장하고 있습니다.",
  "rule.sast.c.vbnet.2745.example.0.safe": "라인 1: 객체에 직렬화 속성을 선업합니다.\n라인 4: 세션에 직렬화가 가능한 객체를 저장합니다.\n라인 5: 세션에 직렬화가 가능한 객체를 저장합니다.",
  "rule.sast.c.vbnet.2745.name": "HttpSessionState 속성으로 비직렬화 객체 저장",
  "rule.sast.c.vbnet.2746.description": "Required 속성이 없는 상위 모델 체커는 Required 속성을 지니는 하위 모델을 포함하는 Required 속성이 없는 상위 모델을 검출합니다.\nRequired 속성을 포함하는 하위 모델을 가지는 상위 모델은 Required 속성이 있어야 합니다. 그렇지 않을 경우 under-posting 공격이 발생할 수 있습니다.\n상위 모델에 Required 속성을 추가합니다.",
  "rule.sast.c.vbnet.2746.example.0.dangerous": "라인 1: 클래스 ChildModel에서 Required 속성을 포함하고 있습니다.\n라인 10: ChildModel을 포함하는 클래스 ParentModel에서 Required 속성을 포함하고 있지 않습니다.",
  "rule.sast.c.vbnet.2746.example.0.safe": "라인 10: ParentModel에 Required 속성을 추가합니다.",
  "rule.sast.c.vbnet.2746.name": "Required 속성이 없는 상위 모델",
  "rule.sast.c.vbnet.2747.description": "지속적인 권한 설정 체커는 두 번째 인자 값이 true인 RedirectFromLoginPage() 메소드를 검출합니다.\nRedirectFromLoginPage() 메소드의 두 번째 인자 값은 지속적인 쿠키를 생성하도록 허용할지 여부를 나타냅니다. True로 설정된 경우 지속적인 쿠키를 생성하여 지속적인 권한을 획득합니다. 이 경우에는 세션 하이재킹 공격에 노출되는 기간이 길어질 수 있습니다.\nRedirectFromLoginPage() 메소드의 두 번째 인자 값을 False로 설정하여 지속적인 쿠키를 생성하지 않습니다.",
  "rule.sast.c.vbnet.2747.example.0.dangerous": "라인 1: 지속적인 쿠키를 생성합니다.",
  "rule.sast.c.vbnet.2747.example.0.safe": "라인 1: 지속적인 쿠키를 생성하지 않도록 설정합니다.",
  "rule.sast.c.vbnet.2747.name": "지속적인 권한 설정",
  "rule.sast.c.vbnet.2748.description": "신뢰할 수 없는 모델 체커는 함수 내에서 ModelState.IsValid 속성을 확인하지 않은 HttpPost() 속성을 지닌 함수를 검출합니다.\n확인되지 않은 입력은 ASP.NET WEB API 서비스의 취약점의 주된 원인 중 하나입니다. HttpPost() 속성을 지닌 함수는 외부에서 입력 받은 값을 사용하기 전에 모델의 유효성을 검증해야 합니다.\nModelState.IsValid 속성을 확인하여 모델의 유효성을 확인합니다.",
  "rule.sast.c.vbnet.2748.example.0.dangerous": "라인 3: 함수가 HttpPost() 속성을 지닙니다.\n라인 4: 함수 내에서 모델 검증을 하지 않았습니다.",
  "rule.sast.c.vbnet.2748.example.0.safe": "라인 4: 함수가 HttpPost() 속성을 지닙니다.\n라인 5: 함수 내에서 모델 검증을 합니다.",
  "rule.sast.c.vbnet.2748.name": "신뢰할 수 없는 모델",
  "rule.sast.iac.terraform.7338.description": "`사용자 데이터`는 EC2 인스턴스의 메타데이터 필드로, 인스턴스가 처음으로 생성된 직후에 해당 필드 내의 사용자 지정 코드를 실행합니다. 해당 필드는 암호화되어 있지 않으며, 읽기 전용 권한과 같이 EC2 인스턴스에 가장 기초적인 접근 권한을 가진 모든 객체가 메타데이터 접근 서비스를 사용하여 접근할 수 있습니다. 따라서 해당 필드에 민감한 개인 정보 또는 비밀을 포함할 경우 해당 비밀이 제3자에게 노출될 위험이 증가합니다.\n이를 방지하기 위해서 EC2 인스턴스의 `사용자 데이터` 필드 내에 민감한 AWS 키인 AWS_ACCESS_KEY_ID 및 AWS_SECRET_ACCESS_KEY 를 포함시키지 않습니다. 키를 통한 액세스 대신 EC2 인스턴스 내 할당된 IAM 인스턴스 프로파일을 사용하여 다른 AWS 서비스를 액세스합니다.",
  "rule.sast.iac.terraform.7338.example.0.dangerous": "라인 7: `AWS_ACCESS_KEY_ID` 및 `AWS_SECRET_ACCESS_KEY`가 하드코딩되어 있는 `user_data`가 존재합니다.",
  "rule.sast.iac.terraform.7338.example.0.safe": "라인 1-4, 11: 인스턴스에 할당된 IAM 인스턴스 프로파일을 사용하여 다른 AWS 서비스에 액세스할 수 있도록 설정하였습니다.\n라인 13-20: EC2 인스턴스의 사용자 데이터 부분 내에 민감한 정보가 없습니다.",
  "rule.sast.iac.terraform.7338.name": "EC2 인스턴스 사용자 데이터 내 하드코딩된 AWS 키 존재 금지",
  "rule.sast.iac.terraform.7339.description": "Public/Private EC2 인스턴스가 동일한 역할을 사용하면, 공격자가 Public 인스턴스를 성공적으로 탈취한 경우 Private 인스턴스와 동일한 AWS 권한을 획득합니다. 이를 통해 데이터 도난, 래터럴 무브먼트 및 완전한 환경 손상을 초래할 수 있습니다. 따라서 Public/Private EC2 인스턴스간 사용하는 역할을 구분하여 지정해야 하며, 겹치는 역할은 없어야 합니다.",
  "rule.sast.iac.terraform.7339.example.0.dangerous": "라인 5, 12: Public 인스턴스인 `pub_ins`와 Private 인스턴스인 `priv_ins` 모두 동일한 `test_profile` IAM 인스턴스 프로파일을 사용했습니다.",
  "rule.sast.iac.terraform.7339.example.0.safe": "라인 5, 12: Public 인스턴스인 \"pub_ins\"와 Private 인스턴스인 \"priv_ins\"가 서로 다른 IAM 인스턴스 프로파일을 사용했습니다.",
  "rule.sast.iac.terraform.7339.name": "Public/Private EC2 인스턴스간 동일 IAM 역할 사용 금지",
  "rule.sast.iac.terraform.7340.description": "특정 그룹 정책에 `iam:PassRole` 및 `ec2:RunInstance` 작업이 모두 `*`으로 설정되어 있는 경우, 공격자는 해당 작업을 사용한 그룹 권한 상승을 통해 기존 EC2 인스턴스 프로필/서비스 역할에 접근할 수 있는 새로운 EC2 인스턴스를 생성할 수 있습니다. 이후 해당 인스턴스에 로그인하여 EC2 인스턴스 메타데이터에서 관련 AWS 키를 요청할 수 있으며, 이를 통해 관련 인스턴스 프로필/서비스 역할이 가진 모든 권한에 접근할 수 있습니다.\n그룹 정책에서 필요에 따라 각 작업마다 허용할 역할을 명확히 정의하여 필요한 역할만 전달될 수 있도록 설정합니다. 또한 정책 내 조건 인자를 설정하여 특정 조건에서만 사용할 수 있도록 합니다.",
  "rule.sast.iac.terraform.7340.example.0.dangerous": "라인 1: `iam:PassRole` 및 `ec2:RunInstance` 작업이 모두 `*`으로 설정되어 있는 `aws_iam_group`이 존재합니다.",
  "rule.sast.iac.terraform.7340.example.0.safe": "라인 11-35: `ec2:RunInstances`에 조건 인자를 사용하여 특정 조건에서만 역할이 전달되도록 설정합니다.\n라인 45-56: `iam:PassRole`의 `resource`를 지정하여 액세스를 필터링합니다. 또한 조건 인자를 사용하여 특정 조건에서만 역할이 전달되도록 설정합니다.",
  "rule.sast.iac.terraform.7340.name": "잘못된 EC2 인스턴스 IAM 그룹 권한 구성: `ec2:RunInstances’ 및 `iam:PassRole` 작업을 악용한 그룹 권한 상승 취약점",
  "rule.sast.iac.terraform.7341.description": "특정 사용자 정책에 `iam:PassRole` 및 `ec2:RunInstance` 작업이 모두 `*`으로 설정되어 있는 경우, 공격자는 해당 작업을 사용한 사용자 권한 상승을 통해 기존 EC2 인스턴스 프로필/서비스 역할에 접근할 수 있는 새로운 EC2 인스턴스를 생성할 수 있습니다. 이후 해당 인스턴스에 로그인하여 EC2 인스턴스 메타데이터에서 관련 AWS 키를 요청할 수 있으며, 이를 통해 관련 인스턴스 프로필/서비스 역할이 가진 모든 권한에 접근할 수 있습니다.\n사용자 정책에서 필요에 따라 각 작업마다 허용할 역할을 명확히 정의하여 필요한 역할만 전달될 수 있도록 설정합니다. 또한 정책 내 조건 인자를 설정하여 특정 조건에서만 사용할 수 있도록 합니다.",
  "rule.sast.iac.terraform.7341.example.0.dangerous": "라인 1: `ec2:RunInstance` 및 `iam:PassRole` 작업이 모두 `*`으로 설정되어 있는 `aws_iam_user`가 존재합니다.",
  "rule.sast.iac.terraform.7341.example.0.safe": "라인 11-35: `ec2:RunInstances`에 조건 인자를 사용하여 특정 조건에서만 역할이 전달되도록 설정합니다.\n라인 45-51: `iam:PassRole`의 `resource`를 지정하여 액세스를 필터링합니다.",
  "rule.sast.iac.terraform.7341.name": "잘못된 EC2 인스턴스 IAM 사용자 권한 구성: `ec2:RunInstances’ 및 `iam:PassRole` 작업을 악용한 사용자 권한 상승 취약점",
  "rule.sast.iac.terraform.7342.description": "특정 역할 정책에 `iam:PassRole` 및 `ec2:RunInstance` 작업이 모두 `*`으로 설정되어 있는 경우, 공격자는 해당 작업을 사용한 그룹 권한 상승을 통해 기존 EC2 인스턴스 프로필/서비스 역할에 접근할 수 있는 새로운 EC2 인스턴스를 생성할 수 있습니다. 이후 해당 인스턴스에 로그인하여 EC2 인스턴스 메타데이터에서 관련 AWS 키를 요청할 수 있으며, 이를 통해 관련 인스턴스 프로필/서비스 역할이 가진 모든 권한에 접근할 수 있습니다.\n역할 정책에서 필요에 따라 각 작업마다 허용할 역할을 명확히 정의하여 필요한 역할만 전달될 수 있도록 설정합니다. 또한 정책 내 조건 인자를 설정하여 특정 조건에서만 사용할 수 있도록 합니다.",
  "rule.sast.iac.terraform.7342.example.0.dangerous": "라인 1: `ec2:RunInstances` 및 `iam:PassRole` 모두 `*`으로 설정되어 있는 `aws_iam_role`이 존재합니다.",
  "rule.sast.iac.terraform.7342.example.0.safe": "라인 11-35: `ec2:RunInstances`에 조건 인자를 사용하여 특정 조건에서만 역할이 전달되도록 설정합니다.\n라인 45-51: `iam:PassRole`의 `resource`를 지정하여 액세스를 필터링합니다.",
  "rule.sast.iac.terraform.7342.name": "잘못된 EC2 인스턴스 IAM 역할 권한 구성: `ec2:RunInstances’ 및 `iam:PassRole` 작업을 악용한 역할 권한 상승 취약점",
  "rule.sast.iac.terraform.7343.description": "EC2 인스턴스가 AWS의 기본 VPC의 기본 보안 그룹을 수정 없이 사용할 경우, 보안 그룹에 할당된 모든 리소스로부터의 인바운드 트래픽 및 모든 아웃바운드 IPv4 트래픽을 허용합니다. 또한 VPC에 연결된 IPv6 CIDR 블록이 있는 경우, 모든 아웃바운드 IPv6 트래픽을 허용합니다. 이 경우 접근 권한이 없는 트래픽이 EC2 인스턴스에 접근하거나, 인스턴스 내 민감한 정보를 탈취할 수 있습니다.\nEC2 인스턴스를 생성할 때 기본 보안 그룹을 사용하지 않고, 필요한 권한만을 부여하는 보안 그룹을 정의하여 사용합니다.",
  "rule.sast.iac.terraform.7343.example.0.dangerous": "라인 1: \"security_groups\" 또는 \"vpc_security_group_ids\" 인자값이 없는 \"aws_instance\"가 존재합니다.",
  "rule.sast.iac.terraform.7343.example.0.safe": "라인 9: EC2-클래식 또는 기본 VPC를 사용하는 EC2 인스턴스의 \"security_groups\" 인자값을 기본값이 아닌 커스텀 보안 그룹을 사용하도록 설정하였습니다.",
  "rule.sast.iac.terraform.7343.name": "EC2 인스턴스 기본 보안 그룹 사용 금지",
  "rule.sast.iac.terraform.7344.description": "AWS에서 제공하는 기본 VPC는 자동으로 인터넷에 EC2 인스턴스를 노출시키고, NACL 및 보안 그룹이 모든 ingress(외부에서 내부로 들어오는) 트래픽을 허용하며, 사용자가 CIDR 블록 크키를 조정할 수 없어 IP 충돌이 발생할 수 있습니다.\n사용자의 사용 환경에 맞춘 적절하게 세분화된 서브넷, 최소 권한 규칙 및 기업 네트워킹에 맞는 CIDR 범위를 갖춘 맞춤형 VPC를 만들어 EC2 인스턴스를 VPC 내부에 위치시킵니다.",
  "rule.sast.iac.terraform.7344.example.0.dangerous": "라인 1: \"subnet_id\"를 기본 VPC로 사용하는 \"aws_instance\"가 존재합니다.",
  "rule.sast.iac.terraform.7344.example.0.safe": "라인 6, 10: EC2 인스턴스의 \"subnet_id\" 인자값을 통해 찾은 VPC의 \"vpc_id\"가 \"aws_vpc.default.id\"가 아니므로 기본 VPC를 사용하지 않았습니다.",
  "rule.sast.iac.terraform.7344.name": "EC2 인스턴스 기본 VPC 사용 금지",
  "rule.sast.iac.terraform.7345.description": "EC2 인스턴스를 VPC 및 접근 제어 없이 Public IP 주소를 사용할 경우, 해당 인스턴스는 인터넷에서 공개적으로 액세스할 수 있습니다. 공격자는 이를 악용하여 무차별 대입 또는 DDOS와 같은 사이버 공격을 시도할 수 있습니다. 따라서 외부 고객에게 서비스를 제공하는 인스턴스에는 퍼블릭 IP 주소가 필요할 때가 있지만, 가능하면 리소스의 공개 노출을 제한할 것을 권장합니다.\n인스턴스에 직접 인터넷 액세스가 필요하지 않은 경우, VPC 내의 프라이빗 서브넷으로 인스턴스를 이동하면 퍼블릭 IP 주소가 제거되는 동시에 VPC 내의 다른 리소스와 통신할 수 있습니다. 또한 인스턴스가 퍼블릭 IP 주소가 필요하지 않은 퍼블릭 서브넷에서 시작된 경우 퍼블릭 IP 주소의 자동 할당을 방지하기 위해 시작 구성을 수정할 수 있습니다.",
  "rule.sast.iac.terraform.7345.example.0.dangerous": "라인 1: `map_public_ip_on_launch` 인자 값이 true로 설정되어 있는 서브넷을 사용하는 `aws_instance`가 존재합니다.",
  "rule.sast.iac.terraform.7345.example.0.safe": "라인 18: \"map_public_ip_on_launch\" 인자 값을 \"false\"로 설정하여 Public IP를 사용하지 않습니다.",
  "rule.sast.iac.terraform.7345.name": "EC2 인스턴스 Public IP 주소 사용 금지",
  "rule.sast.iac.terraform.7346.description": "AWS Tranist Gateway는 VPC와 온프레미스 네트워크를 상호 연결하는 네트워크 전송 허브입니다. EC2의 Transit Gateway가 VPC 연결 요청을 자동으로 수락하는 경우, 공격자가 한 개의 VPC를 연결하면 다른 모든 VPC에 접근할 수 있습니다.\nEC2의 Transit Gateway가 VPC 연결 요청을 자동으로 수락하지 않도록 설정합니다.",
  "rule.sast.iac.terraform.7346.example.0.dangerous": "라인 5: \"aws_ec2_transit_gateway\" 리소스값 내 \"auto_accept_shared_attachments\" 값이 \"enable\"로 설정되어 있습니다.",
  "rule.sast.iac.terraform.7346.example.0.safe": "라인 5: \"aws_ec2_transit_gateway\" 리소스값 내 \"auto_accept_shared_attachments\" 값이 \"disable\"로 설정되어 있습니다.\n라인 7-11: \"aws_ec2_transit_gateway\" 리소스값 내 \"auto_accept_shared_attachments\" 값이 설정되어 있지 않아 기본값인 \"disable\"로 설정되어 있습니다.",
  "rule.sast.iac.terraform.7346.name": "EC2 Transit Gateway의 VPC 연결 요청 자동 수락 금지",
  "rule.sast.iac.terraform.7354.description": "EC2 인스턴스를 사용할 경우 가능한 EBS 최적화 인스턴스를 사용하는 것이 권장됩니다. EBS 최적화 인스턴스는 Amazon EBS I/O와 인스턴스의 다른 트래픽 간의 경합을 최소화하여 EBS 볼륨에 최적의 성능을 제공합니다.\nEBS에 최적화된 EC2 인스턴스를 사용합니다.",
  "rule.sast.iac.terraform.7354.example.0.dangerous": "라인 1: AWS 인스턴스 내에 \"ebs_optimized\" 인자 값이 존재하지 않는 \"r3.4xlarge\" 인스턴스를 사용 중입니다.",
  "rule.sast.iac.terraform.7354.example.0.safe": "라인 6: EC2 인스턴스 타입이 EBS 최적화가 기본적으로 설정되지 않는 \"r3.4xlarge\"이지만, \"ebs_optimized\" 인자값을 \"true\"로 설정하여 EBS에 최적화하였습니다.",
  "rule.sast.iac.terraform.7354.name": "EC2 인스턴스가 EBS에 최적화되어 있지 않음",
  "rule.sast.iac.terraform.7355.description": "모니터링은 Amazon EC2 인스턴스 및 AWS 솔루션의 안정성, 가용성 및 성능을 유지하는 데 있어서 중요한 부분입니다. 발생하는 다중 지점 실패를 보다 쉽게 디버깅할 수 있도록 AWS 솔루션의 모든 부분으로부터 모니터링 데이터를 수집해야 합니다. 따라서 반드시 EC2 인스턴스 상세 모니터링을 사용하도록 설정되어야 합니다.\nEC2 인스턴스 상세 모니터링을 사용하도록 설정합니다.",
  "rule.sast.iac.terraform.7355.example.0.dangerous": "라인 1: \"monitoring\" 인자값이 존재하지 않아 EC2 인스턴스 모니터링을 사용할 수 없는 \"aws_instance\"가 존재합니다.",
  "rule.sast.iac.terraform.7355.example.0.safe": "라인 7: \"aws_instance\" 리소스 내 \"monitoring\" 인자값이 \"true\"로 올바르게 설정되어 있어 EC2 인스턴스 모니터링을 사용할 수 있습니다.",
  "rule.sast.iac.terraform.7355.name": "EC2 인스턴스 상세 모니터링을 사용하도록 설정되어야 함",
  "rule.sast.iac.terraform.7356.description": "인스턴스 메타데이터 서비스(IMDS)는 인스턴스의 코드가 인스턴스 메타데이터에 안전하게 액세스하는 데 사용하는 온-인스턴스 구성 요소입니다.\n\n실행 중인 인스턴스에서 인스턴스 메타데이터 서비스 버전 1(IMDSv1)을 사용할 경우 요청/응답 방법을 통해, 버전 2(IMDSv2)을 사용할 경우 세션 지향 방법을 통해 인스턴스 메타데이터에 액세스할 수 있습니다. 이 과정에서 IMDSv1의 요청/응답 방법은 로컬 설정 오류가 발생하기 쉬우며, 프록시 열기, NAT 및 라우터 열기, 서버 측 반사 취약점과 같은 취약점을 노출시킬 수 있습니다.\n\n따라서 EC2 인스턴스를 생성할 때 EC2 인스턴스의 `metadata_options` 블록 내 `http_endpoint` 인자값을 `disabled`로 설정해서 IMDS을 사용하지 않도록 설정하거나, 해당 블록 내 `http_tokens` 인자값을 `required`로 설정하여 IMDSv2만을 사용하도록 설정해야 합니다.\nEC2 인스턴스 생성시 IMDS를 사용하지 않도록 설정하거나, 사용할 경우 IMDSv2만 사용하도록 설정합니다.",
  "rule.sast.iac.terraform.7356.example.0.dangerous": "라인 1: `metadata_options` 블록이 존재하지 않는 `aws_instance`가 존재합니다. \n라인 6: `http_tokens` 값 없이 `http_endpoint`를 활성화한 `aws_instance`가 존재합니다.",
  "rule.sast.iac.terraform.7356.example.0.safe": "라인 4-6: `aws_instance` 리소스 내 `metadata_options` 블록이 존재하고, 해당 블록 내 `http_endpoint` 인자값이 `disabled`로 설정되어 있어 EC2 인스턴스가 IMDS 자체를 사용하지 않도록 설정되었습니다.\n라인 12-14: `aws_instance` 리소스 내 `metadata_options` 블록이 존재하고, 해당 블록 내 `http_endpoint` 인자값이 `enabled`로 설정되어 있고 `http_tokens` 값이 `required`로 설정되어 있어 EC2 인스턴스가 IMDSv2만을 사용하도록 설정되었습니다.",
  "rule.sast.iac.terraform.7356.name": "EC2 인스턴스 IMDSv1 사용 금지",
  "rule.sast.iac.terraform.7357.description": "보안 그룹에는 감사 목적을 위한 설명이 포함되어야 합니다. 보안 그룹에 대한 적절한 설명은 감사, 디버깅 및 관리를 간소화합니다.\n보안 그룹에 적절한 설명을 추가합니다.",
  "rule.sast.iac.terraform.7357.example.0.dangerous": "라인 1: 보안 그룹 리소스의 \"description\" 값이 비어 있는 \"aws_security_group\"이 존재합니다.",
  "rule.sast.iac.terraform.7357.example.0.safe": "라인 3: \"aws_security_group\" 리소스의 \"description\" 값에 보안 그룹에 대한 적절한 설명이 존재합니다.",
  "rule.sast.iac.terraform.7357.name": "보안 그룹의 설명 누락 금지",
  "rule.sast.iac.terraform.7358.description": "보안 그룹 내의 `ingress` 규칙에는 감사 목적을 위한 설명이 포함되어야 합니다. 해당 규칙에 대한 적절한 설명은 감사, 디버깅 및 관리를 간소화합니다.\n보안 그룹 내의 `ingress` 규칙에 적절한 설명을 추가합니다.",
  "rule.sast.iac.terraform.7358.example.0.dangerous": "라인 1: 리소스 내 \"ingress\" 보안 규칙의 \"description\" 값이 비어 있는 \"aws_security_group\"이 존재합니다.",
  "rule.sast.iac.terraform.7358.example.0.safe": "라인 6: \"aws_security_group\" 보안 그룹 리소스 내 \"ingress\" 보안 규칙의  \"description\" 값에 해당 규칙에 대한 적절한 설명이 존재합니다.",
  "rule.sast.iac.terraform.7358.name": "보안 그룹 내 ingress 규칙의 설명 누락 금지",
  "rule.sast.iac.terraform.7359.description": "보안 그룹 내의 `egress` 규칙에는 감사 목적을 위한 설명이 포함되어야 합니다. 해당 규칙에 대한 적절한 설명은 감사, 디버깅 및 관리를 간소화합니다.\n보안 그룹 내의 `egress` 규칙에 적절한 설명을 추가합니다.",
  "rule.sast.iac.terraform.7359.example.0.dangerous": "라인 1: 리소스 내 \"egress\" 보안 규칙의 \"description\" 값이 비어 있는 \"aws_security_group\"이 존재합니다.",
  "rule.sast.iac.terraform.7359.example.0.safe": "라인 6: \"aws_security_group\" 보안 그룹 리소스 내 \"egress\" 보안 규칙의  \"description\" 값에 해당 규칙에 대한 적절한 설명이 존재합니다.",
  "rule.sast.iac.terraform.7359.name": "보안 그룹 내 egress 규칙의 설명 누락 금지",
  "rule.sast.iac.terraform.7360.description": "EBS 볼륨은 암호화되어야 합니다. EBS 볼륨 암호화를 활성화하면 볼륨, 디스크 I/O 및 파생된 스냅샷이 가로채질 경우 손상되지 않도록 보호할 수 있습니다.\n모든 EBS 볼륨을 암호화합니다.",
  "rule.sast.iac.terraform.7360.example.0.dangerous": "라인 1: \"aws_ebs_encryption_by_default\" 리소스 값이 존재하지 않으며, \"encrypted\" 값 또한 설정되어 있지 않은 \"aws_ebs_volume\"이 존재합니다.",
  "rule.sast.iac.terraform.7360.example.0.safe": "라인 1-3: \"aws_ebs_encryption_by_default\" 리소스의 \"enabled\" 값이 \"true\"로 설정되어 있어 새로 생성되는 모든 EBS 볼륨은 암호화됩니다.\n라인 8: \"aws_ebs_volume\" 내 \"encrypted\" 값이 \"true\"로 설정되어 있어 EBS 볼륨이 암호화되었습니다.",
  "rule.sast.iac.terraform.7360.name": "EBS 볼륨이 암호화되지 않음",
  "rule.sast.iac.terraform.7361.description": "AWS 키를 사용한 암호화는 EBS 볼륨을 보호합니다. 암호화 제어력을 높이고 키 교체 주기를 관리하기 위해 사용자가 생성하는 KMS 키인 고객 관리형 키를 사용합니다.\nEBS 볼륨 암호화에 고객 관리형 키를 사용합니다.",
  "rule.sast.iac.terraform.7361.example.0.dangerous": "라인 6: \"enable_key_rotation\"값이 false인 \"kms_key_id\"를 사용하는 \"aws_abs_volume\"가 존재합니다.",
  "rule.sast.iac.terraform.7361.example.0.safe": "라인 6: \"enable_key_rotation\"값이 true인 \"kms_key_id\"를 사용하는 \"aws_abs_volume\"가 존재합니다.",
  "rule.sast.iac.terraform.7361.name": "EBS 암호화 키 관리 정책 미준수",
  "rule.sast.iac.terraform.7362.description": "서브넷 세부 정보 없이 생성되는 Redshift 클러스터는 EC2-Classic 모드로 생성됩니다. EC2-Classic은 VPC가 존재하지 않고 모든 인스턴스가 동일한 네트워크 공간을 사용합니다. 이 경우 VPC를 사용하여 얻을 수 있는 보안 그룹 및 NACL을 통한 인바운드/아웃바운드 네트워크 트래픽 제어 기능과 같은 보안 이점을 활용할 수 없습니다.\nRedshift 클러스터를 생성할 때 반드시 서브넷 세부 정보를 포함합니다.",
  "rule.sast.iac.terraform.7362.example.0.dangerous": "라인 1: 리소스 내 \"cluster_subnet_group_name\" 값이 없는 \"aws_redshift_cluster\"가 존재합니다.",
  "rule.sast.iac.terraform.7362.example.0.safe": "라인 8: \"aws_redshift_cluster\" 리소스 내 \"cluster_subnet_group_name\" 값이 주어졌습니다.",
  "rule.sast.iac.terraform.7362.name": "Redshift Cluster 생성에 서브넷 정보 누락",
  "rule.sast.q.abap.1783.description": "동적 절과 함께 SELECT 사용 체커는 동적 조건을 포함한 SELECT 구문을 검출합니다.\nSQL 쿼리에 동적 조건을 포함하지 말아야 합니다. 의도 자체는 좋았지만 정적으로 문제가 있는지 검사하기 힘들고, SQL 인젝션 공격의 위험이 있습니다.\nSQL 쿼리에 동적 조건 대신 필터링할 고정된 조건을 명시합니다.",
  "rule.sast.q.abap.1783.example.0.dangerous": "라인 1: 동적 조건을 포함했습니다.",
  "rule.sast.q.abap.1783.example.0.safe": "라인 1: SELECT 문에서 동적 조건을 제거했습니다.",
  "rule.sast.q.abap.1783.name": "동적 절과 함께 SELECT 사용",
  "rule.sast.q.c.2044.description": "가변 길이 배열 사용 체커는 정적 배열을 선언할 때 정해지지 않은 크기로 선언한 경우를 검출합니다.\n정적 배열은 스택 영역에 할당되는데, 정적 배열의 크기로 값이 정해지지 않은 변수를 전달하면 스택에 할당될 배열의 크기가 프로그램 실행 도중에 결정됩니다. 이때 지나치게 큰 값이 전달되어 스택에 허용된 영역을 초과하는 크기의 배열을 할당 시도하면 프로그램이 오작동할 수 있습니다.\n실행 도중 크기가 결정되는 배열이 필요하면 동적 할당을 사용하도록 합니다.",
  "rule.sast.q.c.2044.example.0.dangerous": "라인 3: 매개 변수 n에 어떤 값이 전달될지 알 수 없어서 이 값으로 가변 길이 배열을 선언하면 위험합니다.",
  "rule.sast.q.c.2044.example.0.safe": "라인 4: 정적 배열의 길이는 확정된 값으로 지정해야 합니다.",
  "rule.sast.q.c.2044.name": "가변 길이 배열 사용",
  "rule.sast.q.c.2048.description": "예약어를 매크로 이름으로 사용 체커는 매크로 정의에서 예약어를 이름으로 지정한 경우를 검출합니다.\n예약어는 if, while 등의 키워드는 아니지만 시스템 용도나 추후 사용을 목적으로 사용자가 사용할 수 없도록 약속해놓은 것입니다.\n매크로 이름을 예약어가 아닌 것으로 바꿉니다.",
  "rule.sast.q.c.2048.example.0.dangerous": "라인 1: 매크로 이름으로 errno 예약어를 사용했습니다.",
  "rule.sast.q.c.2048.example.0.safe": "라인 1: 예약어가 아닌 것으로 매크로 이름을 고칩니다.",
  "rule.sast.q.c.2048.name": "예약어를 매크로 이름으로 사용",
  "rule.sast.q.c.2050.description": "금지된 재귀 호출 체커는 함수 정의에 재귀 호출을 사용한 경우를 검출합니다.\n무한 재귀 호출이 일어나면 스택 오버플로우로 인해 시스템이 비정상적으로 종료될 수 있습니다. 재귀 호출로 더 간결하고 이해하기 쉬운 프로그램을 작성할 수도 있지만 재귀 호출에 익숙하지 않은 프로그래머에게는 반복문으로 작성하는 것에 비해서 실수를 하기 더 쉽습니다. 무한 재귀 호출의 위험을 막기 위해 프로젝트 내에서 재귀 호출 사용을 일괄적으로 금지할 수 있습니다.\n이론적으로 모든 재귀 호출 함수는 같은 동작을 하는 코드를 반복문으로 작성 가능하므로 해당 함수를 반복문을 사용하여 다시 구현합니다. 이 때 함수의 1회 호출 안에서 재귀 호출이 두 번 이상 일어날 수 있다면 반복문으로 구현할 때 주요 정보를 저장해둘 스택을 직접 구현해야 할 수도 있습니다.",
  "rule.sast.q.c.2050.example.0.dangerous": "라인 6: fn_a() 함수를 재귀 호출했습니다.",
  "rule.sast.q.c.2050.example.0.safe": "라인 1: 같은 동작을 하는 함수를 반복문을 사용하여 다시 구현합니다.",
  "rule.sast.q.c.2050.name": "금지된 재귀 호출",
  "rule.sast.q.c.2052.description": "불필요한 타입 선언 체커는 프로젝트 어디에서도 사용되지 않는 타입 선언을 검출합니다.\n사용되지 않는 타입 선언이 존재하면 프로그램의 전체 구조를 읽기 어렵게 만들고, 추후 실수로 타입을 중복해서 선언했을 때 어느 쪽이 원래 의도였는지 파악하기 어렵게 만듭니다.\n사용되지 않는 타입은 삭제합니다.",
  "rule.sast.q.c.2052.example.0.dangerous": "라인 1: localSecType 타입이 선언되었지만 사용되지 않았습니다.\n라인 4: localType 타입이 선언되었지만 사용되지 않았습니다.",
  "rule.sast.q.c.2052.example.0.safe": "라인 1: 사용되지 않는 타입 선언은 삭제합니다.",
  "rule.sast.q.c.2052.name": "불필요한 타입 선언",
  "rule.sast.q.c.2793.description": "문자 함수에 signed 문자형 전달 체커는 문자를 다루는 함수의 인자로 unsigned char 타입이 아닌 값을 전달한 경우를 검출합니다.\nunsigned char 타입이 아닌 값을 전달하면 암시적 캐스팅과 상위 비트를 버리는 현상으로 인해 예상과 다른 값으로 변경되어 매개 변수로 사용될 가능성이 있습니다.\n타입이 다른 값의 경우 명시적 캐스팅을 통해 unsigned char 타입으로 변환한 후에 전달합니다.",
  "rule.sast.q.c.2793.example.0.dangerous": "라인 8: *t는 signed char 타입입니다.",
  "rule.sast.q.c.2793.example.0.safe": "라인 8: unsigned char 타입으로 캐스팅하여 사용합니다.",
  "rule.sast.q.c.2793.name": "문자 함수에 signed 문자형 전달",
  "rule.sast.q.c.2794.description": "잘못된 타입의 getchar 함수 반환값 사용 체커는 getchar() 함수의 반환값을 int보다 작은 타입에 대입하는 경우를 검출합니다.\ngetchar() 함수의 반환 타입은 int로 선언되어 있으며, 정상적으로 문자를 읽었을 경우 그 결과를 unsigned char 타입으로 해석한 뒤 int 타입으로 캐스팅한 결과를 반환합니다. 하지만 문자를 읽은 경우 외에도 스트림의 끝을 표현하기 위해 EOF(-1)를 포함하여 총 257가지의 결과를 반환할 수 있습니다. 이 범위는 char 타입 변수에 저장할 수 있는 0에서 255까지의 256개보다 크기 때문에 너무 작은 타입의 변수에 저장하면 의도하지 않은 동작을 일으킬 수 있습니다.\ngetchar() 함수의 반환값은 일단 int 타입 변수에 저장하여 EOF인지 여부를 확인한 후에 사용해야 합니다.",
  "rule.sast.q.c.2794.example.0.dangerous": "라인 7: char 타입의 변수 c를 정의했습니다.\n라인 11: getchar() 함수의 반환값을 char 타입인 변수 c에 할당했습니다.",
  "rule.sast.q.c.2794.example.0.safe": "라인 7: char 타입의 변수 c를 정의합니다.\n라인 11: getchar() 함수의 반환값을 int 타입인 변수 c에 할당합니다.",
  "rule.sast.q.c.2794.name": "잘못된 타입의 getchar 함수 반환값 사용",
  "rule.sast.q.c.49.description": "할당 실패로 인한 널 역참조 체커는 메모리 할당에 실패했을 때 널을 반환하는 함수로부터 반환된 포인터에 대해 널 확인을 하지 않고 역참조하는 코드를 검출합니다.\n일반적으로 널 값 역참조로 인해 시스템이 비정상적으로 종료됩니다. 보통 메모리 할당에 성공하는 것이 일반적이지만 여러 가지 이유로 인해 예외적으로 실패할 수 있습니다. 이러한 예외적인 상황에 대비하여 방어적으로 프로그램을 작성해야 합니다.\n메모리 할당 함수를 호출할 때 할당이 성공했는지를 확인한 후 해당 함수의 반환값을 사용합니다.",
  "rule.sast.q.c.49.example.0.dangerous": "라인 2: malloc() 함수를 사용하여 p에 메모리를 할당했습니다.\n라인 3: 메모리 할당에 실패할 경우 p는 널 주소 값을 갖습니다. 따라서 널 확인 없이 p를 사용하면 런타임 오류가 발생했습니다.",
  "rule.sast.q.c.49.example.0.safe": "라인 3: malloc() 함수와 같은 메모리 할당 함수를 사용한 후에 반환값이 널인지 검사합니다.",
  "rule.sast.q.c.49.name": "할당 실패로 인한 널 역참조",
  "rule.sast.q.c.59.description": "널 값 검사 전 역참조 체커는 널 확인 없이 역참조한 값을 나중에 널과 비교하는 코드를 검출합니다.\n포인터 변수를 한 번이라도 널과 비교했다면 당시 개발자가 해당 지점에 도달하는 실행 경로에 따라 그 변수에 널이 포함될 가능성이 있다고 판단했기 때문입니다. 반대로 확인 없이 포인터를 역참조했다면 개발자가 그 변수에 널이 포함될 가능성이 없다고 판단했어야 합니다. 그런데 같은 변수를 한 번은 널 확인 없이 역참조하고 한 번은 널 확인을 했다면 작성자가 실수했을 가능성이 높습니다. 널일 가능성이 없는 변수라면 이후의 널 확인은 불필요한 연산이 되어 성능 저하를 일으킬 것이며, 널일 가능성이 있는 변수라면 확인 없이 역참조하는 곳에서 런타임 오류가 발생할 것입니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다. 반대로 변수가 널이 아니라는 보장이 있다면 혼동을 줄이기 위해 일관적으로 해당 변수를 널 확인 없이 직접 사용해야 합니다.",
  "rule.sast.q.c.59.example.0.dangerous": "라인 3: n이 20보다 클 때 ptr 포인터를 역참조한 메모리에 20을 저장했습니다.\n라인 6: n이 20보다 작거나 같을 때 ptr 포인터를 역참조한 메모리에 5를 저장했습니다.\n라인 8: 여기까지 실행했다면 ptr은 널이 아닙니다. 따라서 불필요한 널 검사를 수행했습니다.",
  "rule.sast.q.c.59.example.0.safe": "라인 2: 포인터가 참조되기 전에 널 검사를 수행하거나, 프로그램의 로직을 고려하여 불필요한 작업을 방지해야 합니다.",
  "rule.sast.q.c.59.name": "널 값 검사 전 역참조",
  "rule.sast.q.ccpp.1038.description": "삼중자 사용 체커는 소스 코드 내에서 삼중자를 사용하는 수식을 검출합니다.\n삼중자(Trigraph)란 두 개의 물음표로 시작하고 한 개의 식별 문자로 끝나는 문자셋입니다. 삼중자는 C 언어 문자셋을 모두 받아들이지 못하는 일부 언어권의 문자셋을 보완하기 위해 만들어졌습니다.\n현대에 들어 삼중자는 거의 사용되지 않습니다. 따라서 삼중자를 사용하도록 의도하지 않았을 가능성이 높습니다. 또한 삼중자를 사용하는 경우 예측하기 어려운 결과가 발생할 수 있습니다.\n삼중자를 사용하지 않도록 합니다. 삼중자로 표현하는 문자셋은 모두 일반적인 문자셋으로 표현할 수 있습니다.",
  "rule.sast.q.ccpp.1038.example.0.dangerous": "라인 4: ??! 삼중자를 | 으로 바꿨습니다. 따라서 puts() 함수의 인자로 \"Over 9000!|\"을 사용했습니다.",
  "rule.sast.q.ccpp.1038.example.0.safe": "라인 4: ? 사이에 \"\"를 넣어서 삼중자가 되지 않도록 합니다.",
  "rule.sast.q.ccpp.1038.name": "삼중자 사용",
  "rule.sast.q.ccpp.1063.description": "너무 많은 초기화 값 체커는 명시된 구조체 및 배열의 크기보다 초기화 데이터가 많은 정의를 검출합니다.\n명시된 배열 크기나 구조체의 수보다 초기화 데이터가 많습니다.\n기본적으로 중괄호 초기화의 요소가 구조체 및 배열의 크기보다 많은 경우 초기화 요소가 무시됩니다. 단, 이러한 값이 개발자가 의도한 결과인지는 알 수 없습니다. 따라서 원래의 의도와 다른 결과가 발생할 수 있습니다.\n구조체나 배열의 크기와 중괄호 초기화의 항목 수를 동일하게 맞추도록 합니다.",
  "rule.sast.q.ccpp.1063.example.0.dangerous": "라인 2: 크기가 3인 배열을 중괄호 초기화로 초기화했습니다. 여기서 초기화 요소는 4개입니다.",
  "rule.sast.q.ccpp.1063.example.0.safe": "라인 2: 배열의 크기와 중괄호 초기화 요소의 수를 동일하게 맞추도록 합니다.",
  "rule.sast.q.ccpp.1063.name": "너무 많은 초기화 값",
  "rule.sast.q.ccpp.1079.description": "형변환 시 const 자격 손실 체커는 const형 객체를 캐스팅하여 const 한정자를 제거하는 수식을 검출합니다.\nconst 형으로 표현된 값은 변경되지 않아야 합니다. 캐스팅으로 const 한정자를 제거하는 경우 문제가 발생할 수 있습니다.\nconst 형 객체를 캐스팅하여 const 한정자를 제거하지 않도록 합니다.",
  "rule.sast.q.ccpp.1079.example.0.dangerous": "라인 2: item 객체를 캐스팅하여 const 한정자를 제거했습니다.",
  "rule.sast.q.ccpp.1079.example.0.safe": "라인 2: const 한정자를 제거하지 않도록 합니다.",
  "rule.sast.q.ccpp.1079.name": "형변환 시 const 자격 손실",
  "rule.sast.q.ccpp.1080.description": "형변환 시 volatile 자격 손실 체커는 volatile 형 객체를 캐스팅하여 volatile 한정자를 제거하는 수식을 검출합니다.\nvolatile 형으로 표현된 휘발성 객체는 프로그램 외부에서 수정될 수 있습니다. 캐스팅으로 volatile 한정자를 제거하는 경우 문제가 발생할 수 있습니다.\nvolatile 형 객체를 캐스팅하여 volatile 한정자를 제거하지 않도록 합니다.",
  "rule.sast.q.ccpp.1080.example.0.dangerous": "라인 4: vRegister 객체를 캐스팅하여 volatile 한정자를 제거했습니다.",
  "rule.sast.q.ccpp.1080.example.0.safe": "라인 3: volatile 한정자를 제거하지 않도록 합니다.",
  "rule.sast.q.ccpp.1080.name": "형변환 시 volatile 자격 손실",
  "rule.sast.q.ccpp.1162.description": "누락된 오류 감지 체커는 애플리케이션 독립적인 코드에서 오류 감지 메커니즘을 제공하지 않는 경우를 검출합니다.\n여기서 애플리케이션 독립적인 코드란 컴파일러 및 운영 체제와 함께 제공되거나 제3자가 제공한 라이브러리 혹은 내부 용도로 개발된 코드를 의미합니다.\n애플리케이션 독립적인 코드는 어떤 애플리케이션에도 종속되지 않기 때문에 오류를 처리할 수 없습니다. 하지만 오류를 감지하고 애플리케이션에 보고하는 오류 감지 매커니즘을 필수적으로 제공해야 합니다. 해당 기능이 제공되지 않으면 애플리케이션 독립적인 코드를 사용하는 과정에서 예상하지 못한 프로그램 종료가 발생할 수 있습니다.\n애플리케이션 독립적인 코드에서 오류 감지 메커니즘을 제공하도록 합니다. 즉, 반환값, 인자에 전달된 주소 값, 전역 객체, longjmp() 등을 사용하여 오류를 애플리케이션에 전달할 수 있도록 합니다.",
  "rule.sast.q.ccpp.1162.example.0.dangerous": "라인 5: g() 함수 내부에서 abort() 함수를 호출했습니다. 따라서 g() 함수를 호출한 함수에게 오류 상태를 알려줄 수 없습니다.",
  "rule.sast.q.ccpp.1162.example.0.safe": "라인 2: 성공과 실패 여부를 반환값으로 알려줄 수 있도록 함수의 인터페이스를 수정합니다.",
  "rule.sast.q.ccpp.1162.name": "누락된 오류 감지",
  "rule.sast.q.ccpp.1163.description": "assert 구문의 잘못된 사용 체커는 atexit() 함수를 사용하여 핸들러를 등록한 후에 assert() 함수를 사용하는 경우를 검출합니다.\n만약 atexit() 함수를 사용하여 종료 시 종료 프로세스가 동작하도록 구현했을 경우, assert를 호출하면 이러한 종료 프로세스가 동작하기 않게 됩니다. assert는 인자로 받은 Boolean 식이 false인 경우 abort() 함수를 호출합니다. 그러면 atexit()를 사용하여 등록한 종료 프로세스를 수행하는 핸들러가 호출되지 않습니다.\natexit() 함수를 사용하여 핸들러를 등록한 후에 assert() 함수를 사용하지 않도록 합니다. 아니면 assert() 함수를 사용하기 위해 종료 프로세스를 다른 방법으로 처리하도록 합니다.",
  "rule.sast.q.ccpp.1163.example.0.dangerous": "라인 5: 프로그램 종료 전에 종료 프로세스를 수행하기 위해 cleanup() 함수를 핸들러로 등록했습니다.\n라인 9: assert() 함수가 실패하면서 cleanup() 함수가 호출되지 않았습니다.",
  "rule.sast.q.ccpp.1163.example.0.safe": "라인 10: assert() 함수 대신 조건을 검사한 후에 exit() 함수를 호출하도록 합니다.",
  "rule.sast.q.ccpp.1163.name": "assert 구문의 잘못된 사용",
  "rule.sast.q.ccpp.1169.description": "PTHREAD_MUTEX_NORMAL 타입 뮤텍스 잠금 사용 체커는 PTHREAD_MUTEX_NORMAL 타입의 뮤텍스를 사용하는 경우를 검출합니다.\nPTHREAD_MUTEX_NORMAL 뮤텍스 잠금은 데드락 검사를 지원하지 않습니다. 따라서 해당 뮤텍스를 사용하여 다시 잠금을 수행하는 경우 프로그램이 데드락 상태에 빠지거나 비정상적으로 종료될 수 있습니다.\n대신 뮤텍스 잠금을 수행하기 위해 PTHREAD_MUTEX_ERRORCHECK 타입 뮤텍스를 사용합니다. 해당 뮤텍스는 데드락 검사를 지원하므로 안전합니다.",
  "rule.sast.q.ccpp.1169.example.0.dangerous": "라인 6: PTHREAD_MUTEX_NORMAL을 사용하여 뮤텍스를 잠갔습니다. 따라서 데드락 검사를 수행하지 못합니다.",
  "rule.sast.q.ccpp.1169.example.0.safe": "라인 6: PTHREAD_MUTEX_ERRORCHECK를 사용하도록 합니다.",
  "rule.sast.q.ccpp.1169.name": "PTHREAD_MUTEX_NORMAL 타입 뮤텍스 잠금 사용",
  "rule.sast.q.ccpp.1170.description": "vfork 함수 사용 체커는 vfork() 함수를 호출한 후에 execve() 함수를 호출하는 경우를 검출합니다.\nvfork() 함수와 execve() 함수를 이어서 호출하면 일부 시스템에서 레이스 윈도우가 발생할 수 있습니다. 이외에도 vfork() 함수의 취약성으로 인해 정의되지 않은 동작이나 DoS(Denial of Service) 등이 발생할 수 있습니다.\nvfork() 함수를 사용하는 대신 fork() 함수와 같이 경쟁 상태를 갖지 않는 함수를 사용하도록 합니다.",
  "rule.sast.q.ccpp.1170.example.0.dangerous": "라인 2: vfork() 함수를 호출했습니다.\n라인 4: execve() 함수를 호출했습니다. 하지만 라인 2에서 vfork() 함수를 호출했으므로 레이스 윈도우 문제가 발생할 수 있습니다.",
  "rule.sast.q.ccpp.1170.example.0.safe": "라인 2: vfork() 함수 대신 fork() 함수를 사용하도록 합니다.",
  "rule.sast.q.ccpp.1170.name": "vfork 함수 사용",
  "rule.sast.q.ccpp.1173.description": "pthread_kill 함수 사용 체커는 pthread_kill() 함수를 호출하는 수식을 검출합니다.\n스레드를 종료하기 위해 pthread_kill() 함수를 사용해서는 안됩니다. pthread_kill() 함수를 사용하면 모든 프로세스를 종료하게 됩니다.\n만약 스레드를 종료할 목적이라면 pthread_cancel() 함수를 사용하도록 합니다.",
  "rule.sast.q.ccpp.1173.example.0.dangerous": "라인 10: pthread_kll() 함수를 호출했습니다. 해당 시그널을 받으면 모든 프로세스가 종료되게 됩니다.",
  "rule.sast.q.ccpp.1173.example.0.safe": "라인 10: pthread_kll() 함수를 호출했습니다.",
  "rule.sast.q.ccpp.1173.name": "pthread_kill 함수 사용",
  "rule.sast.q.ccpp.1429.description": "시그널 함수 사용 체커는 signal() 함수 호출을 검출합니다.\n일반적인 기능을 구현할 때 시그널 핸들러를 이식성이 높고 안전한 방식으로 사용하기에는 많은 어려움이 있습니다.\nsignal() 함수를 사용하지 않습니다.",
  "rule.sast.q.ccpp.1429.example.0.dangerous": "라인 2: signal() 함수를 사용하고 있습니다.",
  "rule.sast.q.ccpp.1429.example.0.safe": "라인 2: signal() 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.1429.name": "시그널 함수 사용",
  "rule.sast.q.ccpp.170.description": "배열 타입 파라미터에 대해 sizeof 함수 사용 체커는 함수의 인자로 전달된 배열 타입의 변수에 sizeof 연산자를 사용하는 코드를 검출합니다.\nsizeof 연산자를 사용하여 함수의 인자로 사용하는 배열의 크기를 계산하면 버퍼 오버플로우가 발생할 가능성이 있습니다. 또한 실제로는 포인터의 크기를 계산하여 프로그래머가 의도하지 않은 동작이 발생할 수 있습니다.\n배열 타입의 인자에 sizeof 연산자를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.170.example.0.dangerous": "라인 3: 라인 1의 함수 인자 a[]의 크기를 측정하기 위해 sizeof 연산자를 사용했지만 실제로 포인터의 크기가 측정되었습니다.",
  "rule.sast.q.ccpp.170.example.0.safe": "라인 1: 함수로 전달된 배열의 크기를 sizeof 연산자로 계산하지 않고 계산한 값을 함수의 인자로 전달하여 문제를 해결합니다.",
  "rule.sast.q.ccpp.170.name": "배열 타입 파라미터에 대해 sizeof 함수 사용",
  "rule.sast.q.ccpp.1711.description": "부적절한 숫자 타입 간 변환 체커는 정수형과 실수형 객체 사이에 검증 없이 캐스팅한 수식을 검출합니다.\n숫자 타입 간에 잘못된 캐스팅이 이루어질 경우 객체의 값이 의도하지 않게 바뀔 수 있습니다. 따라서 개발자가 예상하지 않은 문제가 발생할 수 있습니다.\n캐스팅 후 정상적으로 변환되었는지 범위 값을 점검하도록 합니다.",
  "rule.sast.q.ccpp.1711.example.0.dangerous": "라인 4: atof() 함수로 문자열을 double 타입으로 캐스팅했습니다.\n라인 9: 캐스팅한 값을 범위 확인 없이 사용했습니다. 정상적으로 캐스팅되지 않았을 수 있습니다.",
  "rule.sast.q.ccpp.1711.example.0.safe": "라인 1: 정상적으로 변환되었는지 범위를 확인 후 사용하도록 합니다.",
  "rule.sast.q.ccpp.1711.name": "부적절한 숫자 타입 간 변환",
  "rule.sast.q.ccpp.172.description": "부적절한 할당 메모리 크기 체커는 문자열의 크기를 고려하지 않고 malloc()을 호출하는 코드를 검출합니다.\n확장 문자 문자열의 크기를 정확하게 정하지 않으면 버퍼 오버런 오류가 발생할 수 있습니다.\n동적 메모리를 할당할 때 자료형의 크기를 고려해야 합니다.",
  "rule.sast.q.ccpp.172.example.0.dangerous": "라인 3: malloc() 함수를 사용하여 동적 메모리를 할당할 때 문자열의 크기를 고려하지 않았기 때문에 문제가 발생했습니다.",
  "rule.sast.q.ccpp.172.example.0.safe": "라인 3: 문자열 또는 다른 자료형의 길이뿐만 아니라 크기를 길이에 곱하여 올바른 크기의 동적 메모리를 할당해야 합니다.",
  "rule.sast.q.ccpp.172.name": "부적절한 할당 메모리 크기",
  "rule.sast.q.ccpp.175.description": "임시 혹은 공개 디렉토리에 파일 출력 체커는 임의의 사용자가 접근 가능한 공개 디렉토리에서 임시 파일을 생성하는 코드를 검출합니다.\n누구나 접근할 수 있는 디렉토리(예: /tmp, /var/tmp, C:\\TEMP)에 임시 파일을 생성하는 것은 위험합니다.\n임시 디렉토리나 공개 디렉토리에 임시 파일을 생성하는 경우 공격자가 해당 파일의 내용을 조작하여 프로그램에 오동작을 일으킬 수 있습니다.\n권한이 있는 사용자만 접근할 수 있는 위치에 임시 파일을 생성하고 정보를 저장하는 것이 안전합니다.",
  "rule.sast.q.ccpp.175.example.0.dangerous": "라인 2: 다른 사용자가 볼 수 있는 디렉토리 경로에 임시 파일의 위치를 지정했습니다. 경쟁 조건과 같은 상황이 발생하면 공격자가 파일을 조작할 수 있습니다.",
  "rule.sast.q.ccpp.175.example.0.safe": "라인 8: mkstemp() 함수를 사용하여 임시 파일을 생성합니다.\n라인 12: 임시 파일을 사용한 후에 unlink() 함수로 삭제하도록 합니다.",
  "rule.sast.q.ccpp.175.name": "임시 혹은 공개 디렉토리에 파일 출력",
  "rule.sast.q.ccpp.176.description": "system 함수 사용 체커는 사용이 금지된 system() 함수를 호출하는 코드를 검출합니다.\n시스템 함수의 이름을 옵션에 지정할 수 있습니다.\nsystem() 함수를 통해 공격자는 임의의 쉘 스크립트 또는 실행 프로그램을 실행시킬 수 있습니다. 따라서 프로그램에서 예상하지 못한 동작이 발생하거나 공격자가 의도한 경로로 프로그램이 동작할 수 있습니다.\n옵션에 지정된 시스템 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.176.example.0.dangerous": "라인 2: system() 함수를 사용해서 파일을 삭제했습니다. 취약한 프로그램의 경우 관리자 권한을 사용하여 시스템을 조작할 수 있습니다.",
  "rule.sast.q.ccpp.176.example.0.safe": "라인 3: unlink() 함수를 사용하여 시스템의 파일을 삭제하므로 임의의 시스템 조작을 방지할 수 있습니다.",
  "rule.sast.q.ccpp.176.name": "system 함수 사용",
  "rule.sast.q.ccpp.176.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.ccpp.176.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.177.description": "atexit 핸들러 상에서 종료 체커는 atexit 핸들러로 등록된 함수에서 _Exit(), exit() 또는 abort() 함수를 호출하는 코드를 검출합니다.\n프로그램을 종료하는 함수를 사용할 때 주의가 필요합니다. atexit() 함수와 다른 종료 함수를 중복해서 사용하면 예상하지 못한 동작이나 비정상적인 프로그램 종료를 일으킬 수 있습니다.\natexit 핸들러로 등록된 함수에서 프로그램을 종료하는 함수를 호출하지 않도록 합니다.",
  "rule.sast.q.ccpp.177.example.0.dangerous": "라인 9: atexit() 함수를 사용하여 프로그램이 종료될 때 foo1(), foo2() 함수를 호출하는 프로그램입니다. atexit() 함수는 등록된 함수를 역순으로 실행한 후에 종료하기 때문에 해당 라인에서 foo2() 함수가 먼저 실행됩니다. 하지만 foo2() 함수 내에 exit() 함수가 있으므로 foo1() 함수를 실행하지 않고 프로그램이 종료됩니다.",
  "rule.sast.q.ccpp.177.example.0.safe": "라인 9: atexit() 함수에 등록되는 함수에 _Exit(), exit() 또는 abort()와 같은 종료 함수를 사용하지 말아야 합니다.",
  "rule.sast.q.ccpp.177.name": "atexit 핸들러 상에서 종료",
  "rule.sast.q.ccpp.178.description": "시그널 핸들러 내에서의 위험한 함수 사용 체커는 비동기식으로 동작할 때 시그널 핸들러로 등록된 함수에서 안전하지 않은 함수를 호출하는 경우를 검출합니다.\n옵션에서 분석에서 제외할 함수를 지정할 수 있습니다.\n그렇지 않으면 메모리 충돌, 비동기화된 데이터 사용 등 여러 가지 문제가 발생할 수 있습니다.\n비동기식으로 동작할 때 시그널 핸들러에서 안전하지 않은 함수를 호출하지 않아야 합니다.",
  "rule.sast.q.ccpp.178.example.0.dangerous": "라인 3: 전역 변수 stderr이 시그널 핸들러에서 안전하지 않은 상태로 동작할 수 있습니다.\n라인 6: info 변수가 volatile sig_atomic_t 형으로 선언되지 않았기 때문에 동기화 문제가 발생했습니다.\n라인 7: handler() 함수에서 free 함수를 호출하는 도중 interrunpt signal이 발생하면 힙 메모리 충돌을 일으킬 수 있습니다.",
  "rule.sast.q.ccpp.178.example.0.safe": "라인 6: flag 변수를 독립적으로 실행하려면 handler() 함수를 volatile sig_atomic_t 형으로 선언하고 동기화 문제가 있는 코드를 삭제해야 합니다.",
  "rule.sast.q.ccpp.178.name": "시그널 핸들러 내에서의 위험한 함수 사용",
  "rule.sast.q.ccpp.178.option.ignore_func.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.ccpp.178.option.ignore_func.name": "분석에서 제외되는 함수",
  "rule.sast.q.ccpp.182.description": "더 이상 사용되지 않는 API 사용 체커는 중요도가 떨어져서 더 이상 사용되지 않는 함수를 호출하는 경우를 검출합니다.\n더 이상 사용되지 않는 함수는 다음과 같습니다. asctime(), asctime_s(), atof(), strtod(), atoi(), strtol(), atol(), strtol(), atoll(), strtoll(), ctime(), ctime_s(), gets(), gets_s(), fopen(), fmemopen|open_memstream(), fopen_s(), freopen(), freopen_s(), rewind(), fseek(), setbuf(), vsetbuf(), strtok(), strtok_r(), strtok_s(), vsprintf(), vsnprintf(), strcpy(), strcpy_s(), strcat(), strcat_s().\n동일한 동작을 수행하면서도 보안 상 안전한 함수가 있다면 해당 함수를 사용하도록 합니다. 오래되거나 보안 상 위험한 함수를 오류가 없이 검증된 함수로 대체하는 것이 좋습니다.\n더 이상 사용되지 않는 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.182.example.0.dangerous": "라인 3: 문제점이 알려진 오래된 함수를 사용했습니다.",
  "rule.sast.q.ccpp.182.example.0.safe": "라인 3: 버퍼 오버런을 방지하기 위해 _s 접미사가 있는 함수를 사용합니다.",
  "rule.sast.q.ccpp.182.name": "더 이상 사용되지 않는 API 사용",
  "rule.sast.q.ccpp.183.description": "스레드 조기 종료 체커는 부모 스레드가 조인을 통해 자식을 기다리거나, 부모 스레드가 먼저 끝나야 하는 경우 detach를 통해 자식 스레드를 분리하지 않은 경우를 검출합니다.\nPTHREAD에서 pthread_create() 함수 호출을 한 이후에 부모 스레드가 pthread_join() 함수 또는 pthread_detach() 함수를 호출하지 않을 경우에 검출됩니다.\n부모 스레드가 자식 스레드 보다 먼저 종료되는 경우, 자식 스레드에 분배된 리소스 회수를 못하는 경우가 발생합니다. 자식 스레드가 생성되면 프로그램은 내부적으로 스레드 제어를 위한 객체를 할당합니다. 만약 부모 스레드가 pthread_join()과 같은 함수로 자식 스레드가 끝나는 것을 기다린다면, 자식 스레드 제어를 위한 객체는 정상적으로 해제됩니다. 하지만 부모 스레드가 자식 스레드보다 먼저 종료될 경우 스레드 제어 객체는 해제되지 않으며 이로 인해 리소스 누수 현상이 발생합니다.\npthread_create() 함수를 호출한 후 부모 스레드에서 pthread_join() 함수 또는 pthread_detach() 함수를 호출해야 합니다.",
  "rule.sast.q.ccpp.183.example.0.dangerous": "라인 9: thread 생성 후 join으로 기다리거나 detach로 스스로 리소스를 반환하도록 해야 합니다.",
  "rule.sast.q.ccpp.183.example.0.safe": "라인 13: pthread_join() 함수로 자식 thread를 기다려서 리소스를 반납하고 반환하도록 수정해야 합니다.",
  "rule.sast.q.ccpp.183.name": "스레드 조기 종료",
  "rule.sast.q.ccpp.186.description": "포인터 타입에 대해 sizeof 함수 사용 체커는 포인터 타입에 sizeof 연산자를 사용하는 코드를 검출합니다.\n포인터 타입은 타입에 관계없이 항상 같은 크기를 갖습니다.\n따라서 포인터 타입의 변수를 sizeof의 피연산자로 사용하여 포인터 타입의 크기를 측정하려는 경우 포인터의 크기는 측정할 수 있지만 타입의 크기는 측정할 수 없습니다. 그러므로 정확한 크기를 측정하기 위해 sizeof 연산자를 사용할 때 포인터 타입을 사용하지 않는 것이 좋습니다.\n포인트 타입에 sizeof 연산자를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.186.example.0.dangerous": "라인 3: sizeof 연산자로 포인터 타입의 크기를 측정했습니다.\n라인 6: sizeof 연산자로 포인터 타입의 크기를 측정했습니다.",
  "rule.sast.q.ccpp.186.example.0.safe": "라인 3: 포인터 타입의 크기가 아닌 포인터 값의 크기를 측정하도록 변경해야 합니다.\n라인 6: 포인터 타입의 크기가 아닌 포인터 값의 크기를 측정하도록 변경해야 합니다.",
  "rule.sast.q.ccpp.186.name": "포인터 타입에 대해 sizeof 함수 사용",
  "rule.sast.q.ccpp.186.option.ignore_var.description": "무시할 변수 이름을 입력합니다.",
  "rule.sast.q.ccpp.186.option.ignore_var.name": "무시할 변수",
  "rule.sast.q.ccpp.186.option.memset_function.description": "변수의 메모리를 설정하는 함수 이름을 작성합니다.<br />예시) memset",
  "rule.sast.q.ccpp.186.option.memset_function.name": "메모리 설정 함수",
  "rule.sast.q.ccpp.186.option.print_function.description": "출력을 수행하는 함수 이름을 작성합니다. 메모리 설정 함수를 이용하여 설정된 포인터형 변수가 곧바로 출력 함수의 인자로 사용될 경우 오류로 검출하지 않습니다.<br />예시) printf",
  "rule.sast.q.ccpp.186.option.print_function.name": "출력 함수",
  "rule.sast.q.ccpp.188.description": "잘못된 권한 포기 순서 체커는 잘못된 순서로 다수의 권한을 포기하는 코드를 검출합니다.\n사용자 권한을 설정하는 setuid() 함수와 그룹 권한을 설정하는 setgid() 함수의 순서에 따라 권한이 의도한 대로 설정되지 않을 수 있습니다.\n권한을 포기하기 위해 setuid() 함수를 호출하는 경우 사용자 권한이 낮아지게 됩니다. 하지만 setgid() 함수가 제대로 동작하려면 수퍼 사용자 권한이 필요합니다. 따라서 setuid() 함수를 먼저 호출하면 setgid() 함수를 사용하여 그룹 권한을 포기하는 작업을 제대로 수행할 수 없습니다. 이로 인해 공격자가 남겨진 그룹 권한을 이용할 가능성이 있습니다.\nsetgid() 함수를 먼저 호출한 후에 setuid() 함수를 호출해야 합니다.",
  "rule.sast.q.ccpp.188.example.0.dangerous": "라인 1: 그룹 권한을 먼저 포기하지 않고 setuid()를 호출했습니다.",
  "rule.sast.q.ccpp.188.example.0.safe": "라인 1: 그룹 권한을 먼저 포기한 후에 사용자 권한을 바꾸어야 합니다.",
  "rule.sast.q.ccpp.188.name": "잘못된 권한 포기 순서",
  "rule.sast.q.ccpp.192.description": "안전하지 않은 권한 포기 체커는 setuid(getuid()) 함수를 호출한 후에 setuid(0) 함수를 호출하지 않는 코드를 검출합니다.\n권한 제거 조건을 확인하지 않고 남겨두는 경우 시스템의 권한이 다른 사용자 또는 그룹에게 부여될 수 있습니다.\nseteuid(getuid()) 함수를 호출한 후에 setuid(0) 함수를 호출해야 합니다.",
  "rule.sast.q.ccpp.192.example.0.dangerous": "라인 1: 임시적으로 권한을 해제했습니다.\n라인 5: 권한을 다시 부여했습니다.\n라인 9: 권한을 해제한 후에 복구하지 않아서 문제가 발생했습니다.",
  "rule.sast.q.ccpp.192.example.0.safe": "라인 12: 권한을 해제한 후에 반드시 복구해야 합니다.",
  "rule.sast.q.ccpp.192.name": "안전하지 않은 권한 포기",
  "rule.sast.q.ccpp.1934.description": "정수 언더플로우 체커는 덧셈이나 뺄셈, 곱셈을 하는 곳에서 계산의 결과값이 각 타입에 맞게 허용된 최소값보다 작은 값으로 내려가면 검출합니다.\n정수형 변수가 표현할 수 있는 정수의 최소 값 미만으로 내려가게 될 경우 언더플로우가 발생하여 큰 양수 혹은 예상하지 못한 결과값을 얻을 수 있습니다. 예상하지 못한 결과값을 사용하여 메모리를 할당하거나 반복문의 조건을 작성하는 경우 보안 취약점이 발생합니다.\n정수 연산 시 계산 결과값을 비교하여 정수 표현의 최소값 미만으로 떨어지지 않도록 합니다.",
  "rule.sast.q.ccpp.1934.example.0.dangerous": "라인 5: 결과값이 int 타입으로 표현할 수 있는 최소값보다 작으므로 언더플로우가 발생합니다.",
  "rule.sast.q.ccpp.1934.example.0.safe": "라인 6: 언더플로우의 가능성이 있는 연산을 수행하기 전에 크기를 비교하여 확인한 후에 연산을 수행하도록 합니다.",
  "rule.sast.q.ccpp.1934.name": "정수 언더플로우",
  "rule.sast.q.ccpp.1934.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />",
  "rule.sast.q.ccpp.1934.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.q.ccpp.1985.description": "부적절한 정수 다운캐스팅 체커는 확인 없이 정수값을 표현범위가 줄어드는 방향으로 캐스팅하는 경우를 검출합니다.\n-1을 캐스팅하는 것은 임의의 타입에 대해 모든 비트가 꽉 찬 값을 표현하기 위한 방법으로 자주 사용되기 때문에 예외로 허용합니다. 이 값은 체커 옵션을 통해 범위를 설정할 수 있습니다.\n상대적을 크기가 큰 타입을 작은 타입으로 캐스팅하는 경우 잘림 현상에 의해 값이 변경될 수 있습니다. 또한 signed 정수 값을 unsigned 정수형으로 캐스팅하는 경우 부호의 변화에 의해 값이 변경될 수 있습니다. 그 결과 사용자가 의도하지 않은 결과값을 얻게 될 수 있습니다.\n캐스팅 대상 타입의 표현 범위를 고려하여 값의 범위를 확인한 후 안전하다고 판단되는 경우에만 캐스팅을 진행합니다.",
  "rule.sast.q.ccpp.1985.example.0.dangerous": "라인 5: 음수 -20이 저장된 a 변수를 unsigned int 타입으로 캐스팅하면 같은 비트로 표현되는 양수로 값을 변경하게 됩니다.",
  "rule.sast.q.ccpp.1985.example.0.safe": "라인 5: 자료형의 크기, 범위를 고려하여 캐스팅해야 합니다.",
  "rule.sast.q.ccpp.1985.name": "부적절한 정수 다운캐스팅",
  "rule.sast.q.ccpp.1985.option.max_decision_point_number.description": "이슈를 발생 시키지 않을 값들의 범위의 최대값을 설정합니다.",
  "rule.sast.q.ccpp.1985.option.max_decision_point_number.name": "범위의 최대값",
  "rule.sast.q.ccpp.1985.option.min_decision_point_number.description": "이슈를 발생 시키지 않을 값들의 범위의 최소값을 설정합니다.",
  "rule.sast.q.ccpp.1985.option.min_decision_point_number.name": "범위의 최소값",
  "rule.sast.q.ccpp.1987.description": "해제된 자원 사용 체커는 리소스를 반환한 후에 다시 사용하는 경우를 검출합니다.\n여기서 리소스는 파일 디스크립터와 같이 파일을 열고 난 후에 해당 파일을 가리키는 변수 등을 가리킵니다.\n이미 반환한 리소스를 다시 사용하는 것은 시스템에 비정상적인 결과를 일으킬 수 있습니다. 반환한 리소스는 유효하지 않으며, 이러한 리소스의 타입에 따라 런타임 오류나 예상하지 못한 동작이 발생할 수 있습니다.\n리소스는 항상 유효한 상태에서 사용하도록 합니다. 사용이 완전히 끝난 리소스만 반환하도록 합니다.",
  "rule.sast.q.ccpp.1987.example.0.dangerous": "라인 4: 리소스를 닫은 후에 다시 사용했습니다.",
  "rule.sast.q.ccpp.1987.example.0.safe": "라인 4: 리소스를 모두 사용한 후에 닫도록 합니다.",
  "rule.sast.q.ccpp.1987.name": "해제된 자원 사용",
  "rule.sast.q.ccpp.199.description": "일치하지 않는 버퍼 사이즈 체커는 배열의 크기를 고려하지 않고 sprintf() 함수를 사용하는 코드를 검출합니다.\nsprintf() 함수를 사용하는 경우 버퍼 오버런이 발생할 수 있습니다. 버퍼 오버런은 가장 널리 알려진 형태의 소프트웨어 보안 취약점입니다. 공격자는 해당 데이터를 사용하여 프로그램에 버그를 만드는 잠재적, 악의적, 혹은 임의적인 코드를 실행할 수 있습니다. 따라서 프로그램이 중단되고 DoS(Denial of Service) 공격이 발생할 수 있습니다.\nsprintf() 함수를 사용할 때 배열의 크기를 고려해야 합니다.",
  "rule.sast.q.ccpp.199.example.0.dangerous": "라인 5: a와 b의 크기를 더하면 300이기 때문에 배열 buf의 크기인 100을 초과했습니다.\n라인 6: snprintf() 함수를 사용하는 경우 buf의 크기를 초과하면 버퍼 오버런이 발생할 수 있습니다.",
  "rule.sast.q.ccpp.199.example.0.safe": "라인 5: 배열의 크기를 고려하여 sprintf() 함수를 사용해야 합니다.\n라인 6: 배열의 크기를 고려하여 sprintf() 함수를 사용해야 합니다.",
  "rule.sast.q.ccpp.199.name": "일치하지 않는 버퍼 사이즈",
  "rule.sast.q.ccpp.2003.description": "너무 작은 경로 버퍼 체커는 PathAppend() 함수 호출 시 경로를 담을 버퍼의 크기가 너무 작은 수식을 검출합니다.\n윈도우즈의 경우 MAX_PATH 라는 매크로 상수를 최대 경로의 크기로 사용합니다. 이 값은 일반적으로 260이며 PathAppend() 함수의 첫 번째 인자에 전달할 버퍼의 크기는 이값 이상을 사용해야 합니다. 이보다 작을 경우 버퍼 오버플로우 등의 문제가 발생할 수 있습니다.\nPathAppend()의 첫 번째 인자에 전달할 버퍼 크기를 260 이상으로 선언하도록 합니다.",
  "rule.sast.q.ccpp.2003.example.0.dangerous": "라인 17: 길이가 260 미만인 배열을 PathAppend()의 첫 번째 인자로 전달할 버퍼로 사용했습니다.\n라인 20: 길이가 260 미만인 배열을 PathAppend()의 첫 번째 인자로 전달할 버퍼로 사용했습니다.",
  "rule.sast.q.ccpp.2003.example.0.safe": "라인 17: 버퍼의 길이를 260 이상으로 선언하여 사용합니다.\n라인 20: 버퍼의 길이를 260 이상으로 선언하여 사용합니다.",
  "rule.sast.q.ccpp.2003.name": "너무 작은 경로 버퍼",
  "rule.sast.q.ccpp.207.description": "잘못된 순서로 매크로 사용 체커는 매크로를 사용할 때 공유 리소스에서 쌍으로 호출해야 하는 후속 함수를 누락한 코드를 검출합니다.\npthread_cleanup_push() 함수를 사용한 후에 pthread_cleanup_pop() 함수를 사용해야 합니다.\n같은 범위에서 쌍으로 사용해야 하는 매크로가 존재합니다. 이러한 매크로를 다른 범위에서 사용하는 경우 예상하지 않은 결과가 발생합니다.\npthread_cleanup_push() 함수를 사용한 후에 pthread_cleanup_pop() 함수를 사용해야 합니다.",
  "rule.sast.q.ccpp.207.example.0.dangerous": "라인 7: pthread_cleanup_push() 함수를 단독으로 사용하면 안됩니다.",
  "rule.sast.q.ccpp.207.example.0.safe": "라인 7: pthread_cleanup_push() 함수는 pthread_cleanup_pop() 함수와 같은 레벨의 범위에서 짝으로 사용해야 합니다.",
  "rule.sast.q.ccpp.207.name": "잘못된 순서로 매크로 사용",
  "rule.sast.q.ccpp.207.option.macro_used_order.description": "매크로 사용 순서를 설정합니다.",
  "rule.sast.q.ccpp.207.option.macro_used_order.name": "매크로 사용 순서",
  "rule.sast.q.ccpp.223.description": "asctime의 잘못된 사용 체커는 asctime() 함수에서 유효하지 않거나 검증되지 않는 입력값을 사용하는 코드를 검출합니다.\nasctime() 함수는 struct tm의 멤버 변수를 문자열로 변환합니다. 멤버 변수에는 정해진 범위나 값이 있기 때문에 검증되지 않은 데이터가 전달되는 경우 버퍼 오버런이 발생할 수 있습니다.\nasctime() 함수에 유효하지 않은 인자를 전달했을 때 버퍼 오버플로우 문제가 발생할 수 있으므로 더 안전한 strftime() 함수를 사용하도록 합니다.",
  "rule.sast.q.ccpp.223.example.0.dangerous": "라인 2: 버퍼 오버플로우에 취약한 asctime() 함수를 사용하여 오류로 검출했습니다.",
  "rule.sast.q.ccpp.223.example.0.safe": "라인 6: asctime() 함수와 동일한 역할을 수행하지만 버퍼 오버플로우를 막을 수 있는 strftime() 함수를 사용합니다.",
  "rule.sast.q.ccpp.223.name": "asctime의 잘못된 사용",
  "rule.sast.q.ccpp.224.description": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.\n해당 체커는 덧셈이나 뺄셈, 곱셈에서 다음 조건이 충족되는 경우를 검출합니다. 1. 외부로부터 입력된 위험한 값이 계산에 사용되는 경우 2. 계산의 결과값이 각 타입에 허용된 최소값보다 작거나 최대값보다 큰 경우\n정수형 변수가 표현할 수 있는 정수의 범위를 초과하게 될 경우 오버플로우가 발생하여 음수 또는 예상하지 못한 결과값을 얻을 수 있습니다. 예상하지 못한 결과값을 사용하여 메모리를 할당하거나 반복문의 조건을 작성하는 경우 보안 취약점이 발생합니다.\n언어 및 플랫폼에 따라 정수형의 범위를 확인하고 사용하도록 합니다. 정수형 변수를 연산에 사용하는 경우 먼저 결과값의 범위를 확인하도록 합니다. 외부 입력값을 동적 메모리 할당에 사용하는 경우 변수가 적절한 범위 내에 존재하는지 확인해야 합니다.",
  "rule.sast.q.ccpp.224.example.0.dangerous": "라인 3: 검증되지 않은 변수 size를 사용하므로 정수 오버플로우가 발생할 수 있습니다.",
  "rule.sast.q.ccpp.224.example.0.safe": "라인 6: malloc() 함수의 인자로 사용되는 변수에 유효한 범위의 값을 전달하도록 검증하고 사용합니다.",
  "rule.sast.q.ccpp.224.name": "정수 오버플로우",
  "rule.sast.q.ccpp.224.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />",
  "rule.sast.q.ccpp.224.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.q.ccpp.225.description": "위험한 함수 사용 체커는 옵션에 지정된 위험하다고 알려진 함수를 사용하는 코드를 검출합니다.\n옵션에서 사용 금지 함수를 설정할 수 있습니다. atof(), atoi(), atol() 함수는 각각의 타입(f, i, l)으로 변환할 수 없는 값에 대한 예외를 처리하지 않습니다. 예외 처리가 정의되지 않았기 때문에 반환값을 예측할 수 없습니다. 예를 들어, atof(), atoi(), atol() 함수를 사용하여 버퍼 크기를 설정하는 경우 버퍼 오버플로우가 발생할 수 있습니다. C 표준 라이브러리에서 예외 처리를 수행하는 strtof(atof), strtol(atoi, atol) 함수를 사용하세요. strcpy() 함수는 대상 문자열에 복사되는 원본 문자열의 크기를 검사하지 않습니다. 원본 문자열이 대상 문자열보다 큰 경우 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 복사되는 크기 상한을 지정하는 strncpy() 함수를 사용하세요. strcat() 함수는 결과물의 크기를 검사하지 않습니다. 합쳐진 결과물이 대상 문자열이 할당 받은 크기보다 큰 경우, 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 합쳐지는 크기 상한을 지정하는 strncat() 함수를 사용하세요. fopen() 함수는 오류가 발생할 때 원인을 찾기 힘듭니다. C 표준 라이브러리에서 오류 원인을 반환하는 fopen_s() 함수를 사용하세요. gets() 함수는 대상 문자열에 삽입되는 입력의 크기를 검사하지 않습니다. 표준 입력 스트림으로 삽입되는 배열이 대상 문자열보다 큰 경우 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 입력 크기를 지정하는 fgets() 혹은 gets_s() 함수를 사용하십시오.\n특정 라이브러리 함수는 보안 취약점에 노출되어 있습니다. 보안에 취약한 함수 대신 안전한 함수를 사용하도록 합니다.\n위험하다고 알려진 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.225.example.0.dangerous": "라인 7: 위험한 gets() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.\n라인 8: 위험한 strcpy() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.\n라인 9: 위험한 strcat() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.\n라인 10: 위험한 fopen() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.\n라인 11: 위험한 atoi() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.",
  "rule.sast.q.ccpp.225.example.0.safe": "라인 8: gets() 함수 대신 버퍼 오버플로우를 방지할 수 있는 fgets() 함수를 사용합니다.\n라인 9: strcpy() 함수 대신 버퍼 오버플로우를 방지할 수 있는 strncpy() 함수를 사용합니다. C11에서는 strcpy_s() 함수를 사용할 수 있습니다.\n라인 10: strcat() 함수 대신 버퍼 오버플로우를 방지할 수 있는 strncat() 함수를 사용합니다. C11에서는 strcat_s() 함수를 사용할 수 있습니다.\n라인 11: 보안에 취약한 fopen() 대신 fopen_s() 함수를 사용했습니다.\n라인 12: 보안에 취약한 atoi() 대신 strtol() 함수를 사용했습니다.\n라인 13: 보안에 취약한 atol() 대신 strtoll() 함수를 사용했습니다.\n라인 14: 보안에 취약한 atod() 대신 strtod() 함수를 사용했습니다.",
  "rule.sast.q.ccpp.225.name": "위험한 함수 사용",
  "rule.sast.q.ccpp.225.option.function_should_not_be_used.description": "사용을 금지할 함수 목록을 적습니다.",
  "rule.sast.q.ccpp.225.option.function_should_not_be_used.name": "금지 함수 목록",
  "rule.sast.q.ccpp.228.description": "안전하지 않은 멀티 바이트 문자열 함수 사용 체커는 윈도우에서 제공하는 멀티 바이트 문자열 함수들 중 보안에 안전하지 않은 함수를 사용한 경우를 검출합니다.\n옵션에서 사용 금지 함수의 정규식 패턴을 설정할 수 있습니다.\n윈도우에서 제공하는 모든 멀티 바이트 문자열 함수로 인해 버퍼 오버런이 발생할 가능성이 있기 때문에 사용하지 않는 것이 좋습니다.\n윈도우에서 제공하는 멀티 바이트 문자열 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.228.example.0.dangerous": "라인 2: mbscpy()를 사용했으므로 오류로 검출되었습니다.",
  "rule.sast.q.ccpp.228.example.0.safe": "라인 2: Microsoft에서 제공하는 안전한 멀티 바이트 문자열 함수인 _mbscpy_s()를 사용합니다.",
  "rule.sast.q.ccpp.228.name": "안전하지 않은 멀티 바이트 문자열 함수 사용",
  "rule.sast.q.ccpp.228.option.function_should_not_be_used.description": "사용 금지 함수를 탐지할 정규표현식을 설정합니다.",
  "rule.sast.q.ccpp.228.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.241.description": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.\n프로그램에 무한 재귀 호출이 발생하는 경우 메모리나 스택 등 대부분의 리소스를 지속적으로 할당 받기 때문에 성능이 저하되고 의도하지 않게 프로그램이 종료될 수 있습니다. 정적 분석을 통해서 무한 재귀 호출 혹은 무한 루프를 사전에 완벽하게 예방하는 것은 이론적으로 불가능합니다. 따라서 이 체커는 대표적인 특정 패턴이나 간단한 경우에 대해서만 검사가 가능합니다.\n재귀 호출 구문을 올바른 제어 구문 아래에 둡니다. 또한 재귀 호출의 종료 조건을 제대로 지정하지 못하는 경우를 대비하기 위해 재귀 호출 대신 동일한 기능을 수행하는 반복문을 사용하는 방법도 있습니다.",
  "rule.sast.q.ccpp.241.example.0.dangerous": "라인 2: 조건이 없는 재귀 호출 구문을 사용하는 경우 무한 재귀 호출이 발생할 수 있습니다.",
  "rule.sast.q.ccpp.241.example.0.safe": "라인 2: 무한 재귀 호출이 발생하지 않도록 조건을 작정하도록 합니다.",
  "rule.sast.q.ccpp.241.name": "무한 재귀 호출",
  "rule.sast.q.ccpp.2422.description": "포맷 스트링과 대상 인자 개수 불일치 체커는 특정 인자 위치로 문자열 형을 반환하는 함수에서 문자열 형태(`%s`, `%x`, `%c` 등)와 그 대상 인자의 개수가 다른 경우를 검출합니다.\n특정 인자 위치로 문자열 형을 반환하는 함수에서 문자열 형태(`%s`, `%x`, `%c` 등)와 그 대상 인자의 개수가 다르다면 프로그램이 어떻게 동작하게 될지 예측할 수 없습니다.\n문자열 형태와 대상 인자의 개수가 다르지 않게 합니다.",
  "rule.sast.q.ccpp.2422.example.0.dangerous": "라인 3: 인자 개수가 필요 인자수(2개) 와 다릅니다.",
  "rule.sast.q.ccpp.2422.example.0.safe": "라인 3: 인자 개수가 필요 인자수(2개)를 맞춰줍니다.",
  "rule.sast.q.ccpp.2422.name": "포맷 스트링과 대상 인자 개수 불일치",
  "rule.sast.q.ccpp.2422.option.targets.description": "아래 목록에 존재하는 함수에 대하여만 검사합니다.",
  "rule.sast.q.ccpp.2422.option.targets.name": "검사 대상 string format함수",
  "rule.sast.q.ccpp.255.description": "빈 분기문 체커는 if 구문의 거짓 분기 혹은 switch 구문의 case 및 default 블록에 실행할 코드가 없는 경우를 검출합니다.\n규칙에 맞게 각 분기에 실행할 코드를 삽입합니다.",
  "rule.sast.q.ccpp.255.example.0.dangerous": "라인 3: if 문에서 fp가 널이 아닐 경우에 해당 작업을 수행하지만 널 일 경우 예외 처리해 주는 else 문이 빠져 있습니다.\n라인 9: swith-case 문에서 default 문이 없을 경우를 검출합니다. 옵션 값이 case 문에서 처리할 수 없는 값일 경우에 예상하지 못한 결과를 일으킬 수 있습니다.\n라인 20: swith-case 문에서 case 문이 없고, default 문만 있을 경우를 검출합니다",
  "rule.sast.q.ccpp.255.example.0.safe": "라인 5: else 문으로 적절한 예외 처리를 해줘야 합니다.\n라인 12: switch-case 문에 default 문을 삽입하여 적절한 예외 처리를 합니다.\n라인 13: case 문을 추가하도록 합니다.",
  "rule.sast.q.ccpp.255.name": "빈 분기문",
  "rule.sast.q.ccpp.255.option.allow_oneline_if.description": "선택할 경우 if문에 else 구문이 없더라도 이슈를 검출하지 않습니다.",
  "rule.sast.q.ccpp.255.option.allow_oneline_if.name": "else 구문이 없는 if문 허용",
  "rule.sast.q.ccpp.255.option.check_empty_case.description": "옵션을 사용하는 경우, 비어있는 case 구문을 검출합니다.",
  "rule.sast.q.ccpp.255.option.check_empty_case.name": "빈 case branch 검출",
  "rule.sast.q.ccpp.255.option.check_empty_default_case.description": "선택할 경우 비어있는 default 구문을 이슈로 검출합니다. 여기서 이야기 하는 빈 구문은 switch문이 끝나거나 다음 case문이 나타나기 전 break와 같은 문장만 존재하는 경우를 뜻합니다.",
  "rule.sast.q.ccpp.255.option.check_empty_default_case.name": "빈 default case branch 검출",
  "rule.sast.q.ccpp.255.option.check_empty_else_branch.description": "선택할 경우 else 구문이 비어있을 경우 이슈로 검출합니다.",
  "rule.sast.q.ccpp.255.option.check_empty_else_branch.name": "빈 else branch 검출",
  "rule.sast.q.ccpp.255.option.treat_comment_as_nonempty.description": "선택할 경우 주석문이 작성되어 있을 경우, 비어있지 않은걸로 간주합니다.",
  "rule.sast.q.ccpp.255.option.treat_comment_as_nonempty.name": "주석문이 있을 경우 검출하지 않습니다.",
  "rule.sast.q.ccpp.2789.description": "다중 스레드 환경에서 비트 필드 접근 체커는 서로 다른 스레드에서 인접한 비트 필드를 수정하는 경우를 검출합니다.\n컴파일러는 인접한 비트 필드를 저장할 때 하나의 메모리 주소에 저장해야 합니다. 이때 서로 다른 스레드에서 인접한 비트 필드를 수정하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다. 또한 이러한 사용 방식은 일반적으로는 경쟁 상태(Race Condition)가 발생할 수 있습니다.\n인접한 비트 필드에 값을 저장할 경우에는 뮤텍스를 잠근 후에 데이터를 조작하도록 합니다.",
  "rule.sast.q.ccpp.2789.example.0.dangerous": "라인 9: 비트 필드에 값을 저장했습니다.\n라인 14: 라인 9의 비트 필드와 인접한 비트 필드에 값을 저장했습니다. 이로 인해 경쟁 상태가 발생할 수 있습니다.",
  "rule.sast.q.ccpp.2789.example.0.safe": "라인 17: 뮤텍스를 잠근 후에 데이터를 저장합니다.\n라인 28: 뮤텍스를 잠근 후에 데이터를 저장합니다.",
  "rule.sast.q.ccpp.2789.name": "다중 스레드 환경에서 비트 필드 접근",
  "rule.sast.q.ccpp.287.description": "동적 할당 버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 경우를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.q.ccpp.287.example.0.dangerous": "라인 2: buf에 n + 2의 계산 결과를 인덱스로 접근했습니다.\n라인 6: 12 크기의 메모리를 dest에 할당했습니다.\n라인 7: dest의 오프셋에 8을 더하여 sub() 함수를 호출했습니다. 따라서 라인 2에서 정해진 범위를 벗어난 접근이 발생했습니다.",
  "rule.sast.q.ccpp.287.example.0.safe": "라인 2: buf에 n의 값을 인덱스로 접근하도록 합니다.\n라인 7: 할당 받은 메모리 크기를 초과하여 접근하지 않도록 수정합니다.",
  "rule.sast.q.ccpp.287.name": "동적 할당 버퍼 오버플로우",
  "rule.sast.q.ccpp.31.description": "메모리 누수 체커는 더 이상 필요하지 않은 할당된 메모리를 해제하지 않는 코드를 검출합니다.\n메모리 누수는 형식이 잘못된 데이터의 부적절한 처리 또는 예상하지 못한 세션 중단에 의해 발생합니다. 따라서 시스템의 성능을 저하시키거나 서비스가 불가능한 상태로 이어질 수 있습니다.\n동적으로 할당된 메모리를 반드시 해제하도록 합니다. 특히 조건 검사를 수행하고 함수를 반환하기 전에 사용한 메모리를 해제하는 것을 누락하는 경우가 있습니다.",
  "rule.sast.q.ccpp.31.example.0.dangerous": "라인 2: malloc()을 사용하여 buf 변수에 BLOCK_SIZE 크기의 메모리를 할당했습니다.\n라인 4: read를 통해 얻은 buf의 크기가 기대했던 크기가 아니면 널을 반환하고 종료하는데, 이 때 라인 2에서 할당한 메모리를 회수하지 않았으므로 메모리 누수가 발생합니다.",
  "rule.sast.q.ccpp.31.example.0.safe": "라인 5: 할당된 메모리를 해제합니다. 함수를 반환하기 전에 할당된 메모리를 해제해야 합니다.",
  "rule.sast.q.ccpp.31.name": "메모리 누수",
  "rule.sast.q.ccpp.32.description": "자원 누수 체커는 파일, 소켓 등 리소스를 할당한 후에 해제하지 않는 코드를 검출합니다.\n리소스 누수는 형식이 잘못된 데이터의 부적절한 처리 또는 예상하지 못한 세션 중단에 의해 발생합니다. 따라서 시스템의 성능을 저하시키거나 서비스가 불가능한 상태로 이어질 수 있습니다.\n할당된 리소스를 반드시 해제해야 합니다. 특히 조건 검사를 수행하고 함수를 반환하기 전에 사용한 리소스를 해제하는 것을 누락하는 경우가 있습니다.",
  "rule.sast.q.ccpp.32.example.0.dangerous": "라인 2: fopen()을 사용하여 p에 리소스를 할당했습니다.\n라인 4: 라인 3의 if 구문을 만족하는 경우 라인 2에서 획득한 리소스를 해제하지 않고 종료했습니다.",
  "rule.sast.q.ccpp.32.example.0.safe": "라인 4: fclose(p)를 호출하여 리소스를 해제합니다.",
  "rule.sast.q.ccpp.32.name": "자원 누수",
  "rule.sast.q.ccpp.37.description": "이미 해제된 메모리 해제 체커는 이미 해제된 메모리를 다시 해제하려는 코드를 검출합니다.\n메모리를 이중으로 해제하면 잠재적으로 메모리 위치를 예상하지 않게 수정하게 되어 프로그램이 비정상적으로 종료될 수 있습니다.\n할당된 메모리 혹은 리소스를 해제하기 전에 이미 해제되었는지 확인해야 합니다.",
  "rule.sast.q.ccpp.37.example.0.dangerous": "라인 9: malloc()을 사용하여 p 변수에 메모리를 할당했습니다.\n라인 10: p가 가리키는 메모리를 foo 함수의 인자로 전달했습니다.\n라인 3: foo 함수에서 라인 3의 인자로 전달된 메모리를 해제하고 -1을 반환했습니다.\n라인 11: foo 함수에서 -1을 반환하여 라인 11이 실행되었습니다. foo 함수에서 해제한 메모리를 다시 해제하므로 이중 해제가 발생했습니다.",
  "rule.sast.q.ccpp.37.example.0.safe": "라인 6: p 변수를 해제하기 전에 널을 확인하여 이중 해제를 방지합니다.",
  "rule.sast.q.ccpp.37.name": "이미 해제된 메모리 해제",
  "rule.sast.q.ccpp.38.description": "해제된 메모리 사용 체커는 해제된 메모리 블록을 다시 참조하는 코드를 검출합니다.\n해제된 메모리를 사용하면 비정상적인 값을 사용하여 시스템에도 비정상적인 상태가 발생할 수 있습니다.\n메모리를 사용하기 전에 해제되었는지를 확인합니다.",
  "rule.sast.q.ccpp.38.example.0.dangerous": "라인 3: if 구문이 true로 실행되어 라인 5에서 ptr의 메모리를 해제했습니다.\n라인 9: 라인 5에서 이미 해제된 메모리를 참조하였으므로 해제 후 사용이 발생했습니다.",
  "rule.sast.q.ccpp.38.example.0.safe": "라인 6: 할당된 메모리를 해제하기 전에 사용하도록 코드를 변경합니다.",
  "rule.sast.q.ccpp.38.name": "해제된 메모리 사용",
  "rule.sast.q.ccpp.39.description": "초기화되지 않은 값 체커는 초기화되지 않은 지역 변수를 사용하는 코드를 검출합니다.\n초기화되지 않은 변수는 임의의 데이터 값을 가지기 때문에 예상하지 않은 동작이 발생할 수 있습니다.\n지역 변수를 사용하기 전에 먼저 초기화하도록 합니다.",
  "rule.sast.q.ccpp.39.example.0.dangerous": "라인 1: 초기값을 할당하지 않고 변수 a와 b를 선언했습니다.\n라인 2: 초기화되지 않은 변수 a와 b를 사용했습니다.",
  "rule.sast.q.ccpp.39.example.0.safe": "라인 1: 변수를 선언할 때 초기화해야 합니다.",
  "rule.sast.q.ccpp.39.name": "초기화되지 않은 값",
  "rule.sast.q.ccpp.40.description": "널 역참조 체커는 포인터 값이 널임을 고려하지 않고 널 포인터가 가리키는 값을 읽는 코드를 검출합니다.\n일반적으로 널 값 역참조로 인해 시스템이 종료될 수 있습니다.\n포인터를 역참조하기 전에 널을 확인해야 합니다.",
  "rule.sast.q.ccpp.40.example.0.dangerous": "라인 3: 포인터 ptr이 가리키는 주소 값을 널로 지정했습니다.\n라인 5: 주소 값이 널인 ptr의 주소를 역참조하여 널 값 역참조 오류가 발생했습니다.",
  "rule.sast.q.ccpp.40.example.0.safe": "라인 5: 포인터 변수를 사용하기 전에 반드시 널을 확인해야 합니다.",
  "rule.sast.q.ccpp.40.name": "널 역참조",
  "rule.sast.q.ccpp.41.description": "누락된 널 검사 체커는 함수의 인자로 전달되거나 다른 함수에서 반환된 포인터를 이전에는 널 확인 후 사용했지만 이번에는 널 확인 없이 사용하는 코드를 검출합니다.\n이전에 널 확인을 수행한 포인터 변수에도 널이 할당될 가능성이 있기 때문입니다.\n일반적으로 널 값 역참조로 인해 시스템이 종료될 수 있습니다.\n이전에 널 확인을 수행한 포인터 변수를 사용하기 전에 다시 널을 확인해야 합니다.",
  "rule.sast.q.ccpp.41.example.0.dangerous": "라인 1: 함수의 인자로 포인터 x를 사용했습니다.\n라인 4: 포인터 x의 주소가 널이 아니면 y1에 x가 가리키는 값을 할당하게 됩니다.\n라인 7: 주소 값이 널일 수 있는 x가 가리키는 값을 y2에 할당했습니다.",
  "rule.sast.q.ccpp.41.example.0.safe": "라인 7: 이전에 널을 확인한 포인터 변수에 대해 다시 널 확인을 수행합니다.",
  "rule.sast.q.ccpp.41.name": "누락된 널 검사",
  "rule.sast.q.ccpp.44.description": "해제된 메모리 반환 체커는 이미 해제된 메모리를 가리키는 변수를 반환하는 코드를 검출합니다.\n해제된 변수를 반환하면 일반적으로 충돌과 같이 의도하지 않은 동작이 발생합니다.\n반환할 변수가 이미 해제되었는지를 확인해야 합니다.",
  "rule.sast.q.ccpp.44.example.0.dangerous": "라인 3: if 구문이 true로 실행되어 라인 5에서 ptr의 메모리를 해제했습니다.\n라인 9: 라인 5에서 회수된 메모리를 가리키는 ptr 포인터를 반환하므로 오류가 발생했습니다.",
  "rule.sast.q.ccpp.44.example.0.safe": "라인 9: 해제된 메모리를 반환하지 않도록 코드를 변경하여 해결할 수 있습니다.",
  "rule.sast.q.ccpp.44.name": "해제된 메모리 반환",
  "rule.sast.q.ccpp.53.description": "동적 할당된 메모리에 대한 delete 시도 체커는 malloc() 과 같은 함수로 할당된 메모리 영역을 delete로 해제하려고 시도하는 코드를 검출합니다.\n동적 메모리 할당 함수로 할당된 메모리는 delete 키워드로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\n동적 메모리 할당 함수로 할당된 메모리는 free() 함수로 해제합니다.",
  "rule.sast.q.ccpp.53.example.0.dangerous": "라인 2: malloc()을 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 delete로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.ccpp.53.example.0.safe": "라인 4: delete 대신 free로 메모리를 해제하여 문제를 해결합니다.",
  "rule.sast.q.ccpp.53.name": "동적 할당된 메모리에 대한 delete 시도",
  "rule.sast.q.ccpp.54.description": "동적 할당된 메모리에 대한 delete[] 시도 체커는 malloc 같은 함수로 할당된 메모리 영역을 delete[]로 해제하려고 시도하는 코드를 검출합니다.\n동적 메모리 할당 함수로 할당된 메모리는 delete[] 키워드로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\n동적 메모리 할당 함수로 할당된 메모리는 free() 함수로 해제합니다.",
  "rule.sast.q.ccpp.54.example.0.dangerous": "라인 2: malloc()을 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 delete[]로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.ccpp.54.example.0.safe": "라인 4: delete[] 대신 free로 메모리를 해제하여 문제를 해결합니다.",
  "rule.sast.q.ccpp.54.name": "동적 할당된 메모리에 대한 delete[] 시도",
  "rule.sast.q.ccpp.55.description": "new[]로 할당된 메모리에 대한 delete 시도 체커는 new[] 연산자로 할당된 메모리 영역을 delete로 해제하려고 시도하는 코드를 검출합니다.\nnew[]로 할당된 메모리는 delete로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\nnew[]로 할당된 메모리 영역을 delete[]로 해제합니다.",
  "rule.sast.q.ccpp.55.example.0.dangerous": "라인 2: new char[]를 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 delete로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.ccpp.55.example.0.safe": "라인 4: delete 대신 delete[]를 사용하여 메모리를 해제합니다.",
  "rule.sast.q.ccpp.55.name": "new[]로 할당된 메모리에 대한 delete 시도",
  "rule.sast.q.ccpp.56.description": "new[]로 할당된 메모리에 대한 free 시도 체커는 new[] 연산자로 할당된 메모리 영역을 free()로 해제하려고 시도하는 코드를 검출합니다.\nnew[]로 할당된 메모리는 free()로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\nnew[]로 할당된 메모리 영역을 delete[]로 해제합니다.",
  "rule.sast.q.ccpp.56.example.0.dangerous": "라인 2: new char[]를 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 free()로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.ccpp.56.example.0.safe": "라인 4: delete 대신 delete[]를 사용하여 메모리를 해제합니다.",
  "rule.sast.q.ccpp.56.name": "new[]로 할당된 메모리에 대한 free 시도",
  "rule.sast.q.ccpp.57.description": "new로 할당된 메모리에 대한 delete[] 시도 체커는 new 연산자로 할당된 메모리 영역을 delete[]로 해제하려고 시도하는 코드를 검출합니다.\nnew로 할당된 메모리는 delete[]로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\nnew로 할당된 메모리는 delete로 해제합니다.",
  "rule.sast.q.ccpp.57.example.0.dangerous": "라인 2: new char를 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 delete[]로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.ccpp.57.example.0.safe": "라인 4: delete[] 대신 delete로 메모리를 해제하여 문제를 해결합니다.",
  "rule.sast.q.ccpp.57.name": "new로 할당된 메모리에 대한 delete[] 시도",
  "rule.sast.q.ccpp.58.description": "new로 할당된 메모리에 대한 free 시도 체커는 new 연산자로 할당된 메모리 영역을 free로 해제하려고 시도하는 코드를 검출합니다.\nnew로 할당된 메모리는 free로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\nnew로 할당된 메모리는 delete로 해제합니다.",
  "rule.sast.q.ccpp.58.example.0.dangerous": "라인 2: new char를 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 free()로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.ccpp.58.example.0.safe": "라인 4: free() 대신 delete로 메모리를 해제하여 문제를 해결합니다.",
  "rule.sast.q.ccpp.58.name": "new로 할당된 메모리에 대한 free 시도",
  "rule.sast.q.ccpp.74.description": "이미 해제된 자원 해제 체커는 이미 해제된 리소스를 다시 해제하려는 코드를 검출합니다.\n여기서 리소스는 파일, 네트워크 소켓 등을 가리킵니다.\n리소스를 이중으로 해제하면 잠재적으로 메모리 위치를 예상하지 못하게 수정하므로 프로그램이 비정상적으로 종료될 수 있습니다.\n할당된 리소스를 해제하기 전에 이미 해제되었는지를 확인해야 합니다.",
  "rule.sast.q.ccpp.74.example.0.dangerous": "라인 9: fp변수에 fopen() 함수를 사용하여 파일 포인터를 할당받습니다.\n라인 10: fp 변수가 가리키는 파일 포인터는 foo의 인자로 전달되었습니다.\n라인 3: foo() 함수의 라인 3에서 인자로 전달된 파일을 해제하고 1을 반환합니다.\n라인 11: foo() 함수에서 1을 반환하면 라인 11이 실행됩니다. foo() 함수에서 해제한 파일을 다시 해제하게 되어 오류가 발생합니다.",
  "rule.sast.q.ccpp.74.example.0.safe": "라인 4: 이미 해제된 리소스를 다시 해제하지 않도록 코드를 수정하여 해결할 수 있습니다.",
  "rule.sast.q.ccpp.74.name": "이미 해제된 자원 해제",
  "rule.sast.q.ccpp.83.description": "지정된 라이브러리 함수 호출 누락 체커는 옵션에 지정된 라이브러리 함수를 호출하지 않은 코드를 검출합니다.\n지정한 라이브러리 함수를 호출하지 않았을 경우를 검출합니다. 기본적으로 설정되어 있는 라이브러리 함수는 다음과 같습니다. printf(), scanf(), fprintf(), fscanf().\n옵션에 지정된 필수 라이브러리 함수를 사용하도록 합니다.",
  "rule.sast.q.ccpp.83.example.0.dangerous": "라인 2: make_device() 함수 내에서 옵션에 지정된 라이브러리 함수를 사용하지 않았습니다.",
  "rule.sast.q.ccpp.83.example.0.safe": "라인 2: 옵션에 지정된 printf() 함수를 사용합니다.",
  "rule.sast.q.ccpp.83.name": "지정된 라이브러리 함수 호출 누락",
  "rule.sast.q.ccpp.83.option.function_should_be_used.description": "필수 사용 함수를 설정합니다.",
  "rule.sast.q.ccpp.83.option.function_should_be_used.name": "필수 사용 함수",
  "rule.sast.q.ccpp.84.description": "지정된 매개변수를 사용하는 라이브러리 함수 호출 누락 체커는 옵션에 지정된 매개변수를 포함한 함수에서 금지된 함수를 사용하는 코드를 검출합니다.\n지정된 함수란 옵션에 설정된 매개변수를 포함하는 함수를 의미합니다. 옵션에서 제외 대상 파일, 사용 금지 함수와 해당 함수가 가져야 할 매개 변수 타입을 설정할 수 있습니다.\n옵션에 있는 정의된 매개변수를 포함하는 함수에서 금지된 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.84.example.0.dangerous": "라인 2: Func() 함수의 매개변수가 int 타입이므로 분석 대상입니다.\n라인 3: 금지된 함수 divide()를 호출했습니다.",
  "rule.sast.q.ccpp.84.example.0.safe": "라인 2: 분석 대상인 Func(int) 함수에서 금지된 함수인 divide() 함수를 호출하지 않습니다.",
  "rule.sast.q.ccpp.84.name": "지정된 매개변수를 사용하는 라이브러리 함수 호출 누락",
  "rule.sast.q.ccpp.84.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.sast.q.ccpp.84.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.ccpp.84.option.function_should_not_be_used.description": "반드시 사용되지 말아야하는 함수를 설정합니다.",
  "rule.sast.q.ccpp.84.option.function_should_not_be_used.name": "반드시 사용되지 말아야하는 함수",
  "rule.sast.q.ccpp.84.option.function_target_have_param_type.description": "분석 대상이 가져야 할 파라미터 타입을 설정합니다.",
  "rule.sast.q.ccpp.84.option.function_target_have_param_type.name": "분석 대상이 가져야할 파라미터 타입",
  "rule.sast.q.ccpp.85.description": "누락된 필수 인자를 사용한 필수 라이브러리 함수 호출 체커는 옵션에 지정된 함수를 호출할 때 지정된 인자로 호출하지 않은 코드를 검출합니다.\n지정된 함수란 옵션에서 설정된 함수이고 지정된 인자란 옵션에 설정되어 있는 인자값을 의미합니다. 옵션에서 제외 대상 파일, 호출 대상 함수 및 반드시 가져야 할 매개 변수 이름을 설정할 수 있습니다.\n옵션에 지정된 함수를 호출하려면 지정된 인자값으로 호출해야 합니다.",
  "rule.sast.q.ccpp.85.example.0.dangerous": "라인 4: 옵션에 지정되어 있는 함수에서 지정된 인자값을 사용하지 않았습니다.",
  "rule.sast.q.ccpp.85.example.0.safe": "라인 4: 옵션에 지정되어 있는 함수에서 지정된 인자값을 사용합니다.",
  "rule.sast.q.ccpp.85.name": "누락된 필수 인자를 사용한 필수 라이브러리 함수 호출",
  "rule.sast.q.ccpp.85.option.call_param_should_be_name.description": "반드시 사용해야 될 파라미터 이름과 인덱스를 설정합니다.",
  "rule.sast.q.ccpp.85.option.call_param_should_be_name.name": "반드시 사용해야 될 파라미터 이름과 인덱스",
  "rule.sast.q.ccpp.85.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.sast.q.ccpp.85.option.call_target.name": "호출 대상 함수",
  "rule.sast.q.ccpp.85.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.sast.q.ccpp.85.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.ccpp.86.description": "누락된 필수 함수 호출 체커는 특정 함수를 호출할 때 지정된 함수를 쌍으로 호출하지 않은 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 대상 제외 함수, 검사 대상 호출 함수, 매개 변수 위치와 들어가야 할 문자열 패턴을 설정할 수 있습니다.\n옵션에서 지정된 함수를 호출할 때 반드시 옵션에 지정된 함수를 쌍으로 호출합니다.",
  "rule.sast.q.ccpp.86.example.0.dangerous": "라인 8: LB_call_WLC_exit() 함수를 호출했습니다. 하지만 이후에 LB_call_WLC_need() 함수를 호출하지 않았습니다.",
  "rule.sast.q.ccpp.86.example.0.safe": "라인 8: LB_call_WLC_exit() 함수를 호출했습니다.\n라인 11: LB_call_WLC_need() 함수를 호출합니다.",
  "rule.sast.q.ccpp.86.name": "누락된 필수 함수 호출",
  "rule.sast.q.ccpp.86.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.sast.q.ccpp.86.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.ccpp.86.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.sast.q.ccpp.86.option.function_target.name": "분석 대상 함수",
  "rule.sast.q.ccpp.86.option.function_used_set.description": "반드시 사용해야 될 함수와 함께 사용해야 할 함수를 설정합니다.",
  "rule.sast.q.ccpp.86.option.function_used_set.name": "반드시 사용해야 될 함수와 함께 사용해야 할 함수 설정",
  "rule.sast.q.ccpp.87.description": "malloc의 잘못된 사용 체커는 옵션에 지정된 메모리 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 여부, 분석 제외 함수, 금지할 함수를 설정할 수 있습니다.\n옵션에서 사용이 금지된 메모리 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.87.example.0.dangerous": "라인 6: memory() 함수를 정의했습니다.\n라인 7: 금지된 malloc_FB06() 함수를 호출했습니다.\n라인 8: 금지된 realloc_FB06() 함수를 호출했습니다.",
  "rule.sast.q.ccpp.87.example.0.safe": "라인 6: 분석 제외 대상인 Function() 함수를 정의합니다.\n라인 7: 금지되지 않은 malloc() 함수를 호출합니다.\n라인 8: 금지되지 않은 realloc() 함수를 호출합니다.",
  "rule.sast.q.ccpp.87.name": "malloc의 잘못된 사용",
  "rule.sast.q.ccpp.87.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.sast.q.ccpp.87.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.ccpp.87.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.ccpp.87.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.ccpp.87.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.ccpp.87.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.87.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.ccpp.87.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.sast.q.ccpp.89.description": "프로세스 API의 잘못된 사용 체커는 옵션에 지정된 프로세스 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 지정된 대로 사용이 금지된 프로세스 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.89.example.0.dangerous": "라인 3: terminate_process() 함수를 정의했습니다.\n라인 6: 금지된 fork_FB08() 함수를 호출했습니다.",
  "rule.sast.q.ccpp.89.example.0.safe": "라인 3: 분석 제외 대상인 create_process() 함수를 정의합니다.\n라인 6: 금지되지 않은 fork() 함수를 호출합니다.",
  "rule.sast.q.ccpp.89.name": "프로세스 API의 잘못된 사용",
  "rule.sast.q.ccpp.89.option.file_target_excluded.description": "분석 대상에서 제외되는 파일 이름을 설정합니다.복수 설정이 가능하며, 각각의 설정에 일치하는 파일은 분석 대상에서 제외됩니다.",
  "rule.sast.q.ccpp.89.option.file_target_excluded.name": "분석 대상에서 제외되는 파일 이름",
  "rule.sast.q.ccpp.89.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.ccpp.89.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.ccpp.89.option.function_should_not_be_used.description": "만약, 설정에 일치하는 함수 호출이 있으면 결함으로 검출합니다.",
  "rule.sast.q.ccpp.89.option.function_should_not_be_used.name": "반드시 사용되지 말아야하는 함수",
  "rule.sast.q.ccpp.89.option.function_target_excluded.description": "분석 대상에서 제외되는 함수 이름을 설정합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 함수는 분석 대상에서 제외됩니다.",
  "rule.sast.q.ccpp.89.option.function_target_excluded.name": "제외할 대상 함수",
  "rule.sast.q.ccpp.90.description": "자원 API의 잘못된 사용 체커는 옵션에 지정된 리소스 제한 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 지정된 대로 사용이 금지된 리소스 제한 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.90.example.0.dangerous": "라인 6: resource_limit() 함수를 정의했습니다.\n라인 8: getrlimit_FB09() 함수를 호출했습니다.",
  "rule.sast.q.ccpp.90.example.0.safe": "라인 6: 분석 제외 대상인 create_limit() 함수를 정의합니다.\n라인 8: 금지되지 않은 getrlimit() 함수를 호출합니다.",
  "rule.sast.q.ccpp.90.name": "자원 API의 잘못된 사용",
  "rule.sast.q.ccpp.90.option.file_target_excluded.description": "분석 대상에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.ccpp.90.option.file_target_excluded.name": "분석 대상에서 제외되는 파일",
  "rule.sast.q.ccpp.90.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.ccpp.90.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.ccpp.90.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.ccpp.90.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.90.option.function_target_excluded.description": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.ccpp.90.option.function_target_excluded.name": "분석 대상에서 제외되는 함수",
  "rule.sast.q.ccpp.91.description": "신호 API의 잘못된 사용 체커는 옵션에 지정된 시그널 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 지정된 대로 사용이 금지된 시그널 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.91.example.0.dangerous": "라인 4: signal_handler() 함수를 정의했습니다.\n라인 5: signal_FB10() 함수를 호출했습니다.",
  "rule.sast.q.ccpp.91.example.0.safe": "라인 4: 분석 제외 대상인 create_signal_handler() 함수를 정의합니다.\n라인 5: 금지되지 않은 signal() 함수를 호출합니다.",
  "rule.sast.q.ccpp.91.name": "신호 API의 잘못된 사용",
  "rule.sast.q.ccpp.91.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.ccpp.91.option.file_target_excluded.name": "분석 대상에서 제외되는 파일",
  "rule.sast.q.ccpp.91.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.ccpp.91.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.ccpp.91.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.ccpp.91.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.91.option.function_target_excluded.description": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.ccpp.91.option.function_target_excluded.name": "분석 대상에서 제외되는 함수",
  "rule.sast.q.ccpp.92.description": "TP API의 잘못된 사용 체커는 옵션에 지정된 TP(TMAX) 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 지정된 대로 사용이 금지된 TP(TMAX) 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.92.example.0.dangerous": "라인 4: terminate_tp() 함수를 정의했습니다.\n라인 6: tprecv_FB11() 함수를 호출했습니다.",
  "rule.sast.q.ccpp.92.example.0.safe": "라인 4: 분석 제외 대상인 create_tp() 함수를 정의합니다.\n라인 5: 금지되지 않은 tprecv() 함수를 호출합니다.",
  "rule.sast.q.ccpp.92.name": "TP API의 잘못된 사용",
  "rule.sast.q.ccpp.92.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.ccpp.92.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.ccpp.92.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.ccpp.92.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.ccpp.92.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.ccpp.92.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.92.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.ccpp.92.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.sast.q.ccpp.93.description": "임시 파일 관련 함수 사용 체커는 부적절한 방법으로 임시 파일을 생성하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 위험하여 사용을 금지하는 임시 파일 생성 라이브러리 함수를 설정할 수 있습니다.\n임시 파일의 이름을 공격자가 예측 가능한 이름으로 생성하거나 임의의 프로그램이 접근 가능한 권한으로 생성하면 공격자가 임시 파일의 내용을 조작하여 프로그램에 오동작을 일으킬 수 있습니다.\n임시 파일은 예측 불가능한 이름을 사용하고 프로그램이 단독으로 사용할 수 있도록 생성하는 것이 좋습니다.",
  "rule.sast.q.ccpp.93.example.0.dangerous": "라인 3: make_temp() 함수를 정의했습니다.\n라인 5: mktemp_FB12() 함수를 호출했습니다.",
  "rule.sast.q.ccpp.93.example.0.safe": "라인 3: 분석 제외 대상인 create_temp() 함수를 정의합니다.\n라인 5: 금지되지 않은 mktemp() 함수를 호출합니다.",
  "rule.sast.q.ccpp.93.name": "임시 파일 관련 함수 사용",
  "rule.sast.q.ccpp.93.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.ccpp.93.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.ccpp.93.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.ccpp.93.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.ccpp.93.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.ccpp.93.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.93.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.ccpp.93.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.sast.q.ccpp.94.description": "타이머 API의 잘못된 사용 체커는 옵션에 지정된 타이머 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 사용이 금지된 타이머 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.ccpp.94.example.0.dangerous": "라인 2: set_sleep_func() 함수를 정의했습니다.\n라인 4: sleep_FB13() 함수를 호출했습니다.",
  "rule.sast.q.ccpp.94.example.0.safe": "라인 2: 분석 제외 대상인 create_sleep_func() 함수를 정의합니다.\n라인 4: 금지되지 않은 sleep() 함수를 호출합니다.",
  "rule.sast.q.ccpp.94.name": "타이머 API의 잘못된 사용",
  "rule.sast.q.ccpp.94.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.ccpp.94.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.ccpp.94.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.ccpp.94.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.ccpp.94.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.ccpp.94.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.94.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.ccpp.94.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.sast.q.ccpp.95.description": "printf 함수 사용 체커는 printf() 함수를 사용하는 코드를 검출합니다.\nprintf() 함수는 일반적으로 디버깅이나 오류를 확인하기 위해 사용합니다. 하지만 디버깅이나 오류의 내용이 노출되면 프로그램 또는 시스템 정보도 노출될 가능성이 있습니다.\nprintf() 함수를 사용하지 않습니다.",
  "rule.sast.q.ccpp.95.example.0.dangerous": "라인 2: printf() 함수를 사용했습니다.",
  "rule.sast.q.ccpp.95.example.0.safe": "라인 2: printf() 함수를 사용하여 메시지를 출력하지 않습니다.",
  "rule.sast.q.ccpp.95.name": "printf 함수 사용",
  "rule.sast.q.ccpp.96.description": "[] 연산자를 통한 배열 접근 체커는 배열 객체에 접근할 때 배열 연산자([])를 사용하는 코드를 검출합니다.\n배열 수식으로 배열에 직접 접근하는 경우 배열의 범위에서 벗어날 수 있습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n배열에 접근할 때 배열 수식 대신 포인터를 사용해야 합니다.",
  "rule.sast.q.ccpp.96.example.0.dangerous": "라인 2: int 타입 배열 arr에 대해 배열 연산자([])를 사용하여 직접 배열의 원소에 접근했습니다.",
  "rule.sast.q.ccpp.96.example.0.safe": "라인 2: 배열 연산자([])를 사용하여 직접 배열의 원소에 접근하는 대신, 포인터를 사용하여 접근하도록 합니다.",
  "rule.sast.q.ccpp.96.name": "[] 연산자를 통한 배열 접근",
  "rule.sast.q.ccpp.97.description": "fopen 함수 호출 전 umask 함수 사용 체커는 옵션에 지정된 함수의 호출 순서를 지키지 않는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 먼저 호출되어야 하는 함수, 이후 호출되어야 하는 함수를 설정할 수 있습니다.\n옵션에 지정된 함수 호출 순서를 따라야 합니다.",
  "rule.sast.q.ccpp.97.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 5: fopen_FBD16() 함수를 호출했습니다.\n라인 4: umask_FBD16() 함수를 fopen_FBD16() 이전에 호출했습니다.",
  "rule.sast.q.ccpp.97.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: fopen_FBD16() 함수를 호출합니다.\n라인 5: umask_FBD16() 함수를 호출합니다. 호출 순서를 준수합니다.",
  "rule.sast.q.ccpp.97.name": "fopen 함수 호출 전 umask 함수 사용",
  "rule.sast.q.ccpp.97.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.ccpp.97.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.ccpp.97.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.ccpp.97.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.ccpp.97.option.function_target.description": "분석 대상 함수명을 설정합니다.",
  "rule.sast.q.ccpp.97.option.function_target.name": "분석 대상 함수",
  "rule.sast.q.ccpp.97.option.function_target_begin_call_function.description": "분석을 시작할 특정 함수 호출을 설정합니다.",
  "rule.sast.q.ccpp.97.option.function_target_begin_call_function.name": "분석을 시작할 특정 함수 호출",
  "rule.sast.q.ccpp.97.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.ccpp.97.option.function_target_excluded.name": "분석 제외되는 함수",
  "rule.sast.q.ccpp.99.description": "구조체 멤버에 여러번 접근 체커는 옵션에 지정된 특정 구조체의 필드에 지정된 횟수를 초과하여 접근하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 멤버 접근 횟수를 설정할 수 있습니다.\n구조체 필드에 접근하는 횟수가 옵션에 설정된 횟수를 초과하지 않도록 합니다.",
  "rule.sast.q.ccpp.99.example.0.dangerous": "라인 10: obj 구조체의 a 필드에 세 번째 접근했습니다.",
  "rule.sast.q.ccpp.99.example.0.safe": "라인 9: obj 구조체의 a 필드에 두 번째 접근했습니다. 더 이상 접근하지 않습니다.",
  "rule.sast.q.ccpp.99.name": "구조체 멤버에 여러번 접근",
  "rule.sast.q.ccpp.99.option.file_target_excluded.description": "제외 대상 파일을 설정합니다.",
  "rule.sast.q.ccpp.99.option.file_target_excluded.name": "제외 대상 파일",
  "rule.sast.q.ccpp.99.option.function_target.description": "대상 함수 이름을 설정합니다.",
  "rule.sast.q.ccpp.99.option.function_target.name": "대상 함수",
  "rule.sast.q.ccpp.99.option.function_target_excluded.description": "제외 대상 함수를 설정합니다.",
  "rule.sast.q.ccpp.99.option.function_target_excluded.name": "제외 대상 함수",
  "rule.sast.q.ccpp.99.option.member_assign_limit.description": "멤버에 대입하는 횟수를 제한합니다.",
  "rule.sast.q.ccpp.99.option.member_assign_limit.name": "멤버 대입 제한",
  "rule.sast.q.cpp.1038.description": "삼중자 사용 체커는 소스 코드 내에서 삼중자를 사용하는 수식을 검출합니다.\n삼중자(Trigraph)란 두 개의 물음표로 시작하고 한 개의 식별 문자로 끝나는 문자셋입니다. 삼중자는 C 언어 문자셋을 모두 받아들이지 못하는 일부 언어권의 문자셋을 보완하기 위해 만들어졌습니다.\n현대에 들어 삼중자는 거의 사용되지 않습니다. 따라서 삼중자를 사용하도록 의도하지 않았을 가능성이 높습니다. 또한 삼중자를 사용하는 경우 예측하기 어려운 결과가 발생할 수 있습니다.\n삼중자를 사용하지 않도록 합니다. 삼중자로 표현하는 문자셋은 모두 일반적인 문자셋으로 표현할 수 있습니다.",
  "rule.sast.q.cpp.1038.example.0.dangerous": "라인 4: ??! 삼중자를 | 으로 바꿨습니다. 따라서 puts() 함수의 인자로 \"Over 9000!|\"을 사용했습니다.",
  "rule.sast.q.cpp.1038.example.0.safe": "라인 4: ? 사이에 \"\"를 넣어서 삼중자가 되지 않도록 합니다.",
  "rule.sast.q.cpp.1038.name": "삼중자 사용",
  "rule.sast.q.cpp.1063.description": "너무 많은 초기화 값 체커는 명시된 구조체 및 배열의 크기보다 초기화 데이터가 많은 정의를 검출합니다.\n명시된 배열 크기나 구조체의 수보다 초기화 데이터가 많습니다.\n기본적으로 중괄호 초기화의 요소가 구조체 및 배열의 크기보다 많은 경우 초기화 요소가 무시됩니다. 단, 이러한 값이 개발자가 의도한 결과인지는 알 수 없습니다. 따라서 원래의 의도와 다른 결과가 발생할 수 있습니다.\n구조체나 배열의 크기와 중괄호 초기화의 항목 수를 동일하게 맞추도록 합니다.",
  "rule.sast.q.cpp.1063.example.0.dangerous": "라인 2: 크기가 3인 배열을 중괄호 초기화로 초기화했습니다. 여기서 초기화 요소는 4개입니다.",
  "rule.sast.q.cpp.1063.example.0.safe": "라인 2: 배열의 크기와 중괄호 초기화 요소의 수를 동일하게 맞추도록 합니다.",
  "rule.sast.q.cpp.1063.name": "너무 많은 초기화 값",
  "rule.sast.q.cpp.1079.description": "형변환 시 const 자격 손실 체커는 const형 객체를 캐스팅하여 const 한정자를 제거하는 수식을 검출합니다.\nconst 형으로 표현된 값은 변경되지 않아야 합니다. 캐스팅으로 const 한정자를 제거하는 경우 문제가 발생할 수 있습니다.\nconst 형 객체를 캐스팅하여 const 한정자를 제거하지 않도록 합니다.",
  "rule.sast.q.cpp.1079.example.0.dangerous": "라인 2: item 객체를 캐스팅하여 const 한정자를 제거했습니다.",
  "rule.sast.q.cpp.1079.example.0.safe": "라인 2: const 한정자를 제거하지 않도록 합니다.",
  "rule.sast.q.cpp.1079.name": "형변환 시 const 자격 손실",
  "rule.sast.q.cpp.1080.description": "형변환 시 volatile 자격 손실 체커는 volatile 형 객체를 캐스팅하여 volatile 한정자를 제거하는 수식을 검출합니다.\nvolatile 형으로 표현된 휘발성 객체는 프로그램 외부에서 수정될 수 있습니다. 캐스팅으로 volatile 한정자를 제거하는 경우 문제가 발생할 수 있습니다.\nvolatile 형 객체를 캐스팅하여 volatile 한정자를 제거하지 않도록 합니다.",
  "rule.sast.q.cpp.1080.example.0.dangerous": "라인 4: vRegister 객체를 캐스팅하여 volatile 한정자를 제거했습니다.",
  "rule.sast.q.cpp.1080.example.0.safe": "라인 3: volatile 한정자를 제거하지 않도록 합니다.",
  "rule.sast.q.cpp.1080.name": "형변환 시 volatile 자격 손실",
  "rule.sast.q.cpp.1162.description": "누락된 오류 감지 체커는 애플리케이션 독립적인 코드에서 오류 감지 메커니즘을 제공하지 않는 경우를 검출합니다.\n여기서 애플리케이션 독립적인 코드란 컴파일러 및 운영 체제와 함께 제공되거나 제3자가 제공한 라이브러리 혹은 내부 용도로 개발된 코드를 의미합니다.\n애플리케이션 독립적인 코드는 어떤 애플리케이션에도 종속되지 않기 때문에 오류를 처리할 수 없습니다. 하지만 오류를 감지하고 애플리케이션에 보고하는 오류 감지 매커니즘을 필수적으로 제공해야 합니다. 해당 기능이 제공되지 않으면 애플리케이션 독립적인 코드를 사용하는 과정에서 예상하지 못한 프로그램 종료가 발생할 수 있습니다.\n애플리케이션 독립적인 코드에서 오류 감지 메커니즘을 제공하도록 합니다. 즉, 반환값, 인자에 전달된 주소 값, 전역 객체, longjmp() 등을 사용하여 오류를 애플리케이션에 전달할 수 있도록 합니다.",
  "rule.sast.q.cpp.1162.example.0.dangerous": "라인 5: g() 함수 내부에서 abort() 함수를 호출했습니다. 따라서 g() 함수를 호출한 함수에게 오류 상태를 알려줄 수 없습니다.",
  "rule.sast.q.cpp.1162.example.0.safe": "라인 2: 성공과 실패 여부를 반환값으로 알려줄 수 있도록 함수의 인터페이스를 수정합니다.",
  "rule.sast.q.cpp.1162.name": "누락된 오류 감지",
  "rule.sast.q.cpp.1163.description": "assert 구문의 잘못된 사용 체커는 atexit() 함수를 사용하여 핸들러를 등록한 후에 assert() 함수를 사용하는 경우를 검출합니다.\n만약 atexit() 함수를 사용하여 종료 시 종료 프로세스가 동작하도록 구현했을 경우, assert를 호출하면 이러한 종료 프로세스가 동작하기 않게 됩니다. assert는 인자로 받은 Boolean 식이 false인 경우 abort() 함수를 호출합니다. 그러면 atexit()를 사용하여 등록한 종료 프로세스를 수행하는 핸들러가 호출되지 않습니다.\natexit() 함수를 사용하여 핸들러를 등록한 후에 assert() 함수를 사용하지 않도록 합니다. 아니면 assert() 함수를 사용하기 위해 종료 프로세스를 다른 방법으로 처리하도록 합니다.",
  "rule.sast.q.cpp.1163.example.0.dangerous": "라인 5: 프로그램 종료 전에 종료 프로세스를 수행하기 위해 cleanup() 함수를 핸들러로 등록했습니다.\n라인 9: assert() 함수가 실패하면서 cleanup() 함수가 호출되지 않았습니다.",
  "rule.sast.q.cpp.1163.example.0.safe": "라인 10: assert() 함수 대신 조건을 검사한 후에 exit() 함수를 호출하도록 합니다.",
  "rule.sast.q.cpp.1163.name": "assert 구문의 잘못된 사용",
  "rule.sast.q.cpp.1169.description": "PTHREAD_MUTEX_NORMAL 타입 뮤텍스 잠금 사용 체커는 PTHREAD_MUTEX_NORMAL 타입의 뮤텍스를 사용하는 경우를 검출합니다.\nPTHREAD_MUTEX_NORMAL 뮤텍스 잠금은 데드락 검사를 지원하지 않습니다. 따라서 해당 뮤텍스를 사용하여 다시 잠금을 수행하는 경우 프로그램이 데드락 상태에 빠지거나 비정상적으로 종료될 수 있습니다.\n대신 뮤텍스 잠금을 수행하기 위해 PTHREAD_MUTEX_ERRORCHECK 타입 뮤텍스를 사용합니다. 해당 뮤텍스는 데드락 검사를 지원하므로 안전합니다.",
  "rule.sast.q.cpp.1169.example.0.dangerous": "라인 6: PTHREAD_MUTEX_NORMAL을 사용하여 뮤텍스를 잠갔습니다. 따라서 데드락 검사를 수행하지 못합니다.",
  "rule.sast.q.cpp.1169.example.0.safe": "라인 6: PTHREAD_MUTEX_ERRORCHECK를 사용하도록 합니다.",
  "rule.sast.q.cpp.1169.name": "PTHREAD_MUTEX_NORMAL 타입 뮤텍스 잠금 사용",
  "rule.sast.q.cpp.1170.description": "vfork 함수 사용 체커는 vfork() 함수를 호출한 후에 execve() 함수를 호출하는 경우를 검출합니다.\nvfork() 함수와 execve() 함수를 이어서 호출하면 일부 시스템에서 레이스 윈도우가 발생할 수 있습니다. 이외에도 vfork() 함수의 취약성으로 인해 정의되지 않은 동작이나 DoS(Denial of Service) 등이 발생할 수 있습니다.\nvfork() 함수를 사용하는 대신 fork() 함수와 같이 경쟁 상태를 갖지 않는 함수를 사용하도록 합니다.",
  "rule.sast.q.cpp.1170.example.0.dangerous": "라인 2: vfork() 함수를 호출했습니다.\n라인 4: execve() 함수를 호출했습니다. 하지만 라인 2에서 vfork() 함수를 호출했으므로 레이스 윈도우 문제가 발생할 수 있습니다.",
  "rule.sast.q.cpp.1170.example.0.safe": "라인 2: vfork() 함수 대신 fork() 함수를 사용하도록 합니다.",
  "rule.sast.q.cpp.1170.name": "vfork 함수 사용",
  "rule.sast.q.cpp.1173.description": "pthread_kill 함수 사용 체커는 pthread_kill() 함수를 호출하는 수식을 검출합니다.\n스레드를 종료하기 위해 pthread_kill() 함수를 사용해서는 안됩니다. pthread_kill() 함수를 사용하면 모든 프로세스를 종료하게 됩니다.\n만약 스레드를 종료할 목적이라면 pthread_cancel() 함수를 사용하도록 합니다.",
  "rule.sast.q.cpp.1173.example.0.dangerous": "라인 10: pthread_kll() 함수를 호출했습니다. 해당 시그널을 받으면 모든 프로세스가 종료되게 됩니다.",
  "rule.sast.q.cpp.1173.example.0.safe": "라인 10: pthread_kll() 함수를 호출했습니다.",
  "rule.sast.q.cpp.1173.name": "pthread_kill 함수 사용",
  "rule.sast.q.cpp.1429.description": "시그널 함수 사용 체커는 signal() 함수 호출을 검출합니다.\n일반적인 기능을 구현할 때 시그널 핸들러를 이식성이 높고 안전한 방식으로 사용하기에는 많은 어려움이 있습니다.\nsignal() 함수를 사용하지 않습니다.",
  "rule.sast.q.cpp.1429.example.0.dangerous": "라인 2: signal() 함수를 사용하고 있습니다.",
  "rule.sast.q.cpp.1429.example.0.safe": "라인 2: signal() 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.1429.name": "시그널 함수 사용",
  "rule.sast.q.cpp.170.description": "배열 타입 파라미터에 대해 sizeof 함수 사용 체커는 함수의 인자로 전달된 배열 타입의 변수에 sizeof 연산자를 사용하는 코드를 검출합니다.\nsizeof 연산자를 사용하여 함수의 인자로 사용하는 배열의 크기를 계산하면 버퍼 오버플로우가 발생할 가능성이 있습니다. 또한 실제로는 포인터의 크기를 계산하여 프로그래머가 의도하지 않은 동작이 발생할 수 있습니다.\n배열 타입의 인자에 sizeof 연산자를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.170.example.0.dangerous": "라인 3: 라인 1의 함수 인자 a[]의 크기를 측정하기 위해 sizeof 연산자를 사용했지만 실제로 포인터의 크기가 측정되었습니다.",
  "rule.sast.q.cpp.170.example.0.safe": "라인 1: 함수로 전달된 배열의 크기를 sizeof 연산자로 계산하지 않고 계산한 값을 함수의 인자로 전달하여 문제를 해결합니다.",
  "rule.sast.q.cpp.170.name": "배열 타입 파라미터에 대해 sizeof 함수 사용",
  "rule.sast.q.cpp.1711.description": "부적절한 숫자 타입 간 변환 체커는 정수형과 실수형 객체 사이에 검증 없이 캐스팅한 수식을 검출합니다.\n숫자 타입 간에 잘못된 캐스팅이 이루어질 경우 객체의 값이 의도하지 않게 바뀔 수 있습니다. 따라서 개발자가 예상하지 않은 문제가 발생할 수 있습니다.\n캐스팅 후 정상적으로 변환되었는지 범위 값을 점검하도록 합니다.",
  "rule.sast.q.cpp.1711.example.0.dangerous": "라인 4: atof() 함수로 문자열을 double 타입으로 캐스팅했습니다.\n라인 9: 캐스팅한 값을 범위 확인 없이 사용했습니다. 정상적으로 캐스팅되지 않았을 수 있습니다.",
  "rule.sast.q.cpp.1711.example.0.safe": "라인 1: 정상적으로 변환되었는지 범위를 확인 후 사용하도록 합니다.",
  "rule.sast.q.cpp.1711.name": "부적절한 숫자 타입 간 변환",
  "rule.sast.q.cpp.172.description": "부적절한 할당 메모리 크기 체커는 문자열의 크기를 고려하지 않고 malloc()을 호출하는 코드를 검출합니다.\n확장 문자 문자열의 크기를 정확하게 정하지 않으면 버퍼 오버런 오류가 발생할 수 있습니다.\n동적 메모리를 할당할 때 자료형의 크기를 고려해야 합니다.",
  "rule.sast.q.cpp.172.example.0.dangerous": "라인 3: malloc() 함수를 사용하여 동적 메모리를 할당할 때 문자열의 크기를 고려하지 않았기 때문에 문제가 발생했습니다.",
  "rule.sast.q.cpp.172.example.0.safe": "라인 3: 문자열 또는 다른 자료형의 길이뿐만 아니라 크기를 길이에 곱하여 올바른 크기의 동적 메모리를 할당해야 합니다.",
  "rule.sast.q.cpp.172.name": "부적절한 할당 메모리 크기",
  "rule.sast.q.cpp.175.description": "임시 혹은 공개 디렉토리에 파일 출력 체커는 임의의 사용자가 접근 가능한 공개 디렉토리에서 임시 파일을 생성하는 코드를 검출합니다.\n누구나 접근할 수 있는 디렉토리(예: /tmp, /var/tmp, C:\\TEMP)에 임시 파일을 생성하는 것은 위험합니다.\n임시 디렉토리나 공개 디렉토리에 임시 파일을 생성하는 경우 공격자가 해당 파일의 내용을 조작하여 프로그램에 오동작을 일으킬 수 있습니다.\n권한이 있는 사용자만 접근할 수 있는 위치에 임시 파일을 생성하고 정보를 저장하는 것이 안전합니다.",
  "rule.sast.q.cpp.175.example.0.dangerous": "라인 2: 다른 사용자가 볼 수 있는 디렉토리 경로에 임시 파일의 위치를 지정했습니다. 경쟁 조건과 같은 상황이 발생하면 공격자가 파일을 조작할 수 있습니다.",
  "rule.sast.q.cpp.175.example.0.safe": "라인 8: mkstemp() 함수를 사용하여 임시 파일을 생성합니다.\n라인 12: 임시 파일을 사용한 후에 unlink() 함수로 삭제하도록 합니다.",
  "rule.sast.q.cpp.175.name": "임시 혹은 공개 디렉토리에 파일 출력",
  "rule.sast.q.cpp.176.description": "system 함수 사용 체커는 사용이 금지된 system() 함수를 호출하는 코드를 검출합니다.\n시스템 함수의 이름을 옵션에 지정할 수 있습니다.\nsystem() 함수를 통해 공격자는 임의의 쉘 스크립트 또는 실행 프로그램을 실행시킬 수 있습니다. 따라서 프로그램에서 예상하지 못한 동작이 발생하거나 공격자가 의도한 경로로 프로그램이 동작할 수 있습니다.\n옵션에 지정된 시스템 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.176.example.0.dangerous": "라인 2: system() 함수를 사용해서 파일을 삭제했습니다. 취약한 프로그램의 경우 관리자 권한을 사용하여 시스템을 조작할 수 있습니다.",
  "rule.sast.q.cpp.176.example.0.safe": "라인 3: unlink() 함수를 사용하여 시스템의 파일을 삭제하므로 임의의 시스템 조작을 방지할 수 있습니다.",
  "rule.sast.q.cpp.176.name": "system 함수 사용",
  "rule.sast.q.cpp.176.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.cpp.176.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.177.description": "atexit 핸들러 상에서 종료 체커는 atexit 핸들러로 등록된 함수에서 _Exit(), exit() 또는 abort() 함수를 호출하는 코드를 검출합니다.\n프로그램을 종료하는 함수를 사용할 때 주의가 필요합니다. atexit() 함수와 다른 종료 함수를 중복해서 사용하면 예상하지 못한 동작이나 비정상적인 프로그램 종료를 일으킬 수 있습니다.\natexit 핸들러로 등록된 함수에서 프로그램을 종료하는 함수를 호출하지 않도록 합니다.",
  "rule.sast.q.cpp.177.example.0.dangerous": "라인 9: atexit() 함수를 사용하여 프로그램이 종료될 때 foo1(), foo2() 함수를 호출하는 프로그램입니다. atexit() 함수는 등록된 함수를 역순으로 실행한 후에 종료하기 때문에 해당 라인에서 foo2() 함수가 먼저 실행됩니다. 하지만 foo2() 함수 내에 exit() 함수가 있으므로 foo1() 함수를 실행하지 않고 프로그램이 종료됩니다.",
  "rule.sast.q.cpp.177.example.0.safe": "라인 9: atexit() 함수에 등록되는 함수에 _Exit(), exit() 또는 abort()와 같은 종료 함수를 사용하지 말아야 합니다.",
  "rule.sast.q.cpp.177.name": "atexit 핸들러 상에서 종료",
  "rule.sast.q.cpp.178.description": "시그널 핸들러 내에서의 위험한 함수 사용 체커는 비동기식으로 동작할 때 시그널 핸들러로 등록된 함수에서 안전하지 않은 함수를 호출하는 경우를 검출합니다.\n옵션에서 분석에서 제외할 함수를 지정할 수 있습니다.\n그렇지 않으면 메모리 충돌, 비동기화된 데이터 사용 등 여러 가지 문제가 발생할 수 있습니다.\n비동기식으로 동작할 때 시그널 핸들러에서 안전하지 않은 함수를 호출하지 않아야 합니다.",
  "rule.sast.q.cpp.178.example.0.dangerous": "라인 3: 전역 변수 stderr이 시그널 핸들러에서 안전하지 않은 상태로 동작할 수 있습니다.\n라인 6: info 변수가 volatile sig_atomic_t 형으로 선언되지 않았기 때문에 동기화 문제가 발생했습니다.\n라인 7: handler() 함수에서 free 함수를 호출하는 도중 interrunpt signal이 발생하면 힙 메모리 충돌을 일으킬 수 있습니다.",
  "rule.sast.q.cpp.178.example.0.safe": "라인 6: flag 변수를 독립적으로 실행하려면 handler() 함수를 volatile sig_atomic_t 형으로 선언하고 동기화 문제가 있는 코드를 삭제해야 합니다.",
  "rule.sast.q.cpp.178.name": "시그널 핸들러 내에서의 위험한 함수 사용",
  "rule.sast.q.cpp.178.option.ignore_func.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.cpp.178.option.ignore_func.name": "분석에서 제외되는 함수",
  "rule.sast.q.cpp.182.description": "더 이상 사용되지 않는 API 사용 체커는 중요도가 떨어져서 더 이상 사용되지 않는 함수를 호출하는 경우를 검출합니다.\n더 이상 사용되지 않는 함수는 다음과 같습니다. asctime(), asctime_s(), atof(), strtod(), atoi(), strtol(), atol(), strtol(), atoll(), strtoll(), ctime(), ctime_s(), gets(), gets_s(), fopen(), fmemopen|open_memstream(), fopen_s(), freopen(), freopen_s(), rewind(), fseek(), setbuf(), vsetbuf(), strtok(), strtok_r(), strtok_s(), vsprintf(), vsnprintf(), strcpy(), strcpy_s(), strcat(), strcat_s().\n동일한 동작을 수행하면서도 보안 상 안전한 함수가 있다면 해당 함수를 사용하도록 합니다. 오래되거나 보안 상 위험한 함수를 오류가 없이 검증된 함수로 대체하는 것이 좋습니다.\n더 이상 사용되지 않는 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.182.example.0.dangerous": "라인 3: 문제점이 알려진 오래된 함수를 사용했습니다.",
  "rule.sast.q.cpp.182.example.0.safe": "라인 3: 버퍼 오버런을 방지하기 위해 _s 접미사가 있는 함수를 사용합니다.",
  "rule.sast.q.cpp.182.name": "더 이상 사용되지 않는 API 사용",
  "rule.sast.q.cpp.183.description": "스레드 조기 종료 체커는 부모 스레드가 조인을 통해 자식을 기다리거나, 부모 스레드가 먼저 끝나야 하는 경우 detach를 통해 자식 스레드를 분리하지 않은 경우를 검출합니다.\nPTHREAD에서 pthread_create() 함수 호출을 한 이후에 부모 스레드가 pthread_join() 함수 또는 pthread_detach() 함수를 호출하지 않을 경우에 검출됩니다.\n부모 스레드가 자식 스레드 보다 먼저 종료되는 경우, 자식 스레드에 분배된 리소스 회수를 못하는 경우가 발생합니다. 자식 스레드가 생성되면 프로그램은 내부적으로 스레드 제어를 위한 객체를 할당합니다. 만약 부모 스레드가 pthread_join()과 같은 함수로 자식 스레드가 끝나는 것을 기다린다면, 자식 스레드 제어를 위한 객체는 정상적으로 해제됩니다. 하지만 부모 스레드가 자식 스레드보다 먼저 종료될 경우 스레드 제어 객체는 해제되지 않으며 이로 인해 리소스 누수 현상이 발생합니다.\npthread_create() 함수를 호출한 후 부모 스레드에서 pthread_join() 함수 또는 pthread_detach() 함수를 호출해야 합니다.",
  "rule.sast.q.cpp.183.example.0.dangerous": "라인 9: thread 생성 후 join으로 기다리거나 detach로 스스로 리소스를 반환하도록 해야 합니다.",
  "rule.sast.q.cpp.183.example.0.safe": "라인 13: pthread_join() 함수로 자식 thread를 기다려서 리소스를 반납하고 반환하도록 수정해야 합니다.",
  "rule.sast.q.cpp.183.name": "스레드 조기 종료",
  "rule.sast.q.cpp.186.description": "포인터 타입에 대해 sizeof 함수 사용 체커는 포인터 타입에 sizeof 연산자를 사용하는 코드를 검출합니다.\n포인터 타입은 타입에 관계없이 항상 같은 크기를 갖습니다.\n따라서 포인터 타입의 변수를 sizeof의 피연산자로 사용하여 포인터 타입의 크기를 측정하려는 경우 포인터의 크기는 측정할 수 있지만 타입의 크기는 측정할 수 없습니다. 그러므로 정확한 크기를 측정하기 위해 sizeof 연산자를 사용할 때 포인터 타입을 사용하지 않는 것이 좋습니다.\n포인트 타입에 sizeof 연산자를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.186.example.0.dangerous": "라인 3: sizeof 연산자로 포인터 타입의 크기를 측정했습니다.\n라인 6: sizeof 연산자로 포인터 타입의 크기를 측정했습니다.",
  "rule.sast.q.cpp.186.example.0.safe": "라인 3: 포인터 타입의 크기가 아닌 포인터 값의 크기를 측정하도록 변경해야 합니다.\n라인 6: 포인터 타입의 크기가 아닌 포인터 값의 크기를 측정하도록 변경해야 합니다.",
  "rule.sast.q.cpp.186.name": "포인터 타입에 대해 sizeof 함수 사용",
  "rule.sast.q.cpp.186.option.ignore_var.description": "무시할 변수 이름을 입력합니다.",
  "rule.sast.q.cpp.186.option.ignore_var.name": "무시할 변수",
  "rule.sast.q.cpp.186.option.memset_function.description": "변수의 메모리를 설정하는 함수 이름을 작성합니다.<br />예시) memset",
  "rule.sast.q.cpp.186.option.memset_function.name": "메모리 설정 함수",
  "rule.sast.q.cpp.186.option.print_function.description": "출력을 수행하는 함수 이름을 작성합니다. 메모리 설정 함수를 이용하여 설정된 포인터형 변수가 곧바로 출력 함수의 인자로 사용될 경우 오류로 검출하지 않습니다.<br />예시) printf",
  "rule.sast.q.cpp.186.option.print_function.name": "출력 함수",
  "rule.sast.q.cpp.1871.description": "지나치게 일반적인 예외 생성 체커는 std::exception 타입과 같이 지나치게 일반적인 예외를 던지는 수식을 검출합니다.\n너무 일반적인 예외를 던지는 것은 예외의 발생 원인을 알기 힘들며 제대로 된 처리를 할 수 없습니다. 따라서 보안 취약점이 발생할 수 있습니다.\n오류가 발생하였을 경우 구체적인 예외를 던지도록 합니다.",
  "rule.sast.q.cpp.1871.example.0.dangerous": "라인 3: 지나치게 일반적인 std::exception 타입 예외를 던졌습니다.",
  "rule.sast.q.cpp.1871.example.0.safe": "라인 3: 좀 더 구체적인 예외를 던집니다.",
  "rule.sast.q.cpp.1871.name": "지나치게 일반적인 예외 생성",
  "rule.sast.q.cpp.188.description": "잘못된 권한 포기 순서 체커는 잘못된 순서로 다수의 권한을 포기하는 코드를 검출합니다.\n사용자 권한을 설정하는 setuid() 함수와 그룹 권한을 설정하는 setgid() 함수의 순서에 따라 권한이 의도한 대로 설정되지 않을 수 있습니다.\n권한을 포기하기 위해 setuid() 함수를 호출하는 경우 사용자 권한이 낮아지게 됩니다. 하지만 setgid() 함수가 제대로 동작하려면 수퍼 사용자 권한이 필요합니다. 따라서 setuid() 함수를 먼저 호출하면 setgid() 함수를 사용하여 그룹 권한을 포기하는 작업을 제대로 수행할 수 없습니다. 이로 인해 공격자가 남겨진 그룹 권한을 이용할 가능성이 있습니다.\nsetgid() 함수를 먼저 호출한 후에 setuid() 함수를 호출해야 합니다.",
  "rule.sast.q.cpp.188.example.0.dangerous": "라인 1: 그룹 권한을 먼저 포기하지 않고 setuid()를 호출했습니다.",
  "rule.sast.q.cpp.188.example.0.safe": "라인 1: 그룹 권한을 먼저 포기한 후에 사용자 권한을 바꾸어야 합니다.",
  "rule.sast.q.cpp.188.name": "잘못된 권한 포기 순서",
  "rule.sast.q.cpp.192.description": "안전하지 않은 권한 포기 체커는 setuid(getuid()) 함수를 호출한 후에 setuid(0) 함수를 호출하지 않는 코드를 검출합니다.\n권한 제거 조건을 확인하지 않고 남겨두는 경우 시스템의 권한이 다른 사용자 또는 그룹에게 부여될 수 있습니다.\nseteuid(getuid()) 함수를 호출한 후에 setuid(0) 함수를 호출해야 합니다.",
  "rule.sast.q.cpp.192.example.0.dangerous": "라인 1: 임시적으로 권한을 해제했습니다.\n라인 5: 권한을 다시 부여했습니다.\n라인 9: 권한을 해제한 후에 복구하지 않아서 문제가 발생했습니다.",
  "rule.sast.q.cpp.192.example.0.safe": "라인 12: 권한을 해제한 후에 반드시 복구해야 합니다.",
  "rule.sast.q.cpp.192.name": "안전하지 않은 권한 포기",
  "rule.sast.q.cpp.1934.description": "정수 언더플로우 체커는 덧셈이나 뺄셈, 곱셈을 하는 곳에서 계산의 결과값이 각 타입에 맞게 허용된 최소값보다 작은 값으로 내려가면 검출합니다.\n정수형 변수가 표현할 수 있는 정수의 최소 값 미만으로 내려가게 될 경우 언더플로우가 발생하여 큰 양수 혹은 예상하지 못한 결과값을 얻을 수 있습니다. 예상하지 못한 결과값을 사용하여 메모리를 할당하거나 반복문의 조건을 작성하는 경우 보안 취약점이 발생합니다.\n정수 연산 시 계산 결과값을 비교하여 정수 표현의 최소값 미만으로 떨어지지 않도록 합니다.",
  "rule.sast.q.cpp.1934.example.0.dangerous": "라인 5: 결과값이 int 타입으로 표현할 수 있는 최소값보다 작으므로 언더플로우가 발생합니다.",
  "rule.sast.q.cpp.1934.example.0.safe": "라인 6: 언더플로우의 가능성이 있는 연산을 수행하기 전에 크기를 비교하여 확인한 후에 연산을 수행하도록 합니다.",
  "rule.sast.q.cpp.1934.name": "정수 언더플로우",
  "rule.sast.q.cpp.1934.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />",
  "rule.sast.q.cpp.1934.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.q.cpp.1985.description": "부적절한 정수 다운캐스팅 체커는 확인 없이 정수값을 표현범위가 줄어드는 방향으로 캐스팅하는 경우를 검출합니다.\n-1을 캐스팅하는 것은 임의의 타입에 대해 모든 비트가 꽉 찬 값을 표현하기 위한 방법으로 자주 사용되기 때문에 예외로 허용합니다. 이 값은 체커 옵션을 통해 범위를 설정할 수 있습니다.\n상대적을 크기가 큰 타입을 작은 타입으로 캐스팅하는 경우 잘림 현상에 의해 값이 변경될 수 있습니다. 또한 signed 정수 값을 unsigned 정수형으로 캐스팅하는 경우 부호의 변화에 의해 값이 변경될 수 있습니다. 그 결과 사용자가 의도하지 않은 결과값을 얻게 될 수 있습니다.\n캐스팅 대상 타입의 표현 범위를 고려하여 값의 범위를 확인한 후 안전하다고 판단되는 경우에만 캐스팅을 진행합니다.",
  "rule.sast.q.cpp.1985.example.0.dangerous": "라인 5: 음수 -20이 저장된 a 변수를 unsigned int 타입으로 캐스팅하면 같은 비트로 표현되는 양수로 값을 변경하게 됩니다.",
  "rule.sast.q.cpp.1985.example.0.safe": "라인 5: 자료형의 크기, 범위를 고려하여 캐스팅해야 합니다.",
  "rule.sast.q.cpp.1985.name": "부적절한 정수 다운캐스팅",
  "rule.sast.q.cpp.1985.option.max_decision_point_number.description": "이슈를 발생 시키지 않을 값들의 범위의 최대값을 설정합니다.",
  "rule.sast.q.cpp.1985.option.max_decision_point_number.name": "범위의 최대값",
  "rule.sast.q.cpp.1985.option.min_decision_point_number.description": "이슈를 발생 시키지 않을 값들의 범위의 최소값을 설정합니다.",
  "rule.sast.q.cpp.1985.option.min_decision_point_number.name": "범위의 최소값",
  "rule.sast.q.cpp.1987.description": "해제된 자원 사용 체커는 리소스를 반환한 후에 다시 사용하는 경우를 검출합니다.\n여기서 리소스는 파일 디스크립터와 같이 파일을 열고 난 후에 해당 파일을 가리키는 변수 등을 가리킵니다.\n이미 반환한 리소스를 다시 사용하는 것은 시스템에 비정상적인 결과를 일으킬 수 있습니다. 반환한 리소스는 유효하지 않으며, 이러한 리소스의 타입에 따라 런타임 오류나 예상하지 못한 동작이 발생할 수 있습니다.\n리소스는 항상 유효한 상태에서 사용하도록 합니다. 사용이 완전히 끝난 리소스만 반환하도록 합니다.",
  "rule.sast.q.cpp.1987.example.0.dangerous": "라인 4: 리소스를 닫은 후에 다시 사용했습니다.",
  "rule.sast.q.cpp.1987.example.0.safe": "라인 4: 리소스를 모두 사용한 후에 닫도록 합니다.",
  "rule.sast.q.cpp.1987.name": "해제된 자원 사용",
  "rule.sast.q.cpp.199.description": "일치하지 않는 버퍼 사이즈 체커는 배열의 크기를 고려하지 않고 sprintf() 함수를 사용하는 코드를 검출합니다.\nsprintf() 함수를 사용하는 경우 버퍼 오버런이 발생할 수 있습니다. 버퍼 오버런은 가장 널리 알려진 형태의 소프트웨어 보안 취약점입니다. 공격자는 해당 데이터를 사용하여 프로그램에 버그를 만드는 잠재적, 악의적, 혹은 임의적인 코드를 실행할 수 있습니다. 따라서 프로그램이 중단되고 DoS(Denial of Service) 공격이 발생할 수 있습니다.\nsprintf() 함수를 사용할 때 배열의 크기를 고려해야 합니다.",
  "rule.sast.q.cpp.199.example.0.dangerous": "라인 5: a와 b의 크기를 더하면 300이기 때문에 배열 buf의 크기인 100을 초과했습니다.\n라인 6: snprintf() 함수를 사용하는 경우 buf의 크기를 초과하면 버퍼 오버런이 발생할 수 있습니다.",
  "rule.sast.q.cpp.199.example.0.safe": "라인 5: 배열의 크기를 고려하여 sprintf() 함수를 사용해야 합니다.\n라인 6: 배열의 크기를 고려하여 sprintf() 함수를 사용해야 합니다.",
  "rule.sast.q.cpp.199.name": "일치하지 않는 버퍼 사이즈",
  "rule.sast.q.cpp.2003.description": "너무 작은 경로 버퍼 체커는 PathAppend() 함수 호출 시 경로를 담을 버퍼의 크기가 너무 작은 수식을 검출합니다.\n윈도우즈의 경우 MAX_PATH 라는 매크로 상수를 최대 경로의 크기로 사용합니다. 이 값은 일반적으로 260이며 PathAppend() 함수의 첫 번째 인자에 전달할 버퍼의 크기는 이값 이상을 사용해야 합니다. 이보다 작을 경우 버퍼 오버플로우 등의 문제가 발생할 수 있습니다.\nPathAppend()의 첫 번째 인자에 전달할 버퍼 크기를 260 이상으로 선언하도록 합니다.",
  "rule.sast.q.cpp.2003.example.0.dangerous": "라인 17: 길이가 260 미만인 배열을 PathAppend()의 첫 번째 인자로 전달할 버퍼로 사용했습니다.\n라인 20: 길이가 260 미만인 배열을 PathAppend()의 첫 번째 인자로 전달할 버퍼로 사용했습니다.",
  "rule.sast.q.cpp.2003.example.0.safe": "라인 17: 버퍼의 길이를 260 이상으로 선언하여 사용합니다.\n라인 20: 버퍼의 길이를 260 이상으로 선언하여 사용합니다.",
  "rule.sast.q.cpp.2003.name": "너무 작은 경로 버퍼",
  "rule.sast.q.cpp.2004.description": "const 한정자 없는 중요 public 변수 체커는 클래스에서 const 한정자 없이 public으로 선언한 중요한 필드를 검출합니다.\n일반적으로 필드는 private으로 선언합니다. 하지만 특별한 경우에 외부에서 직접 접근할 수 있는 중요한 필드를 public으로 선언하는 경우가 있습니다. 이때 모든 public 필드가 중요한 필드는 아닙니다. 이 체커는 중요한 필드를 판별하기 위해 필드의 이름을 옵션으로 지정할 수 있습니다.\nconst로 선언하지 않은 필드는 외부에서 그 값을 변경할 수 있습니다. 이와 같은 경우 프로그램이 정상적으로 동작하지 않을 수 있습니다.\npublic으로 선언한 중요한 필드는 반드시 const 한정자를 붙여 선언합니다.",
  "rule.sast.q.cpp.2004.example.0.dangerous": "라인 6: 중요한 필드를 const 한정자로 선언하지 않았습니다.",
  "rule.sast.q.cpp.2004.example.0.safe": "라인 6: 중요한 필드를 const 한정자로 선언합니다.",
  "rule.sast.q.cpp.2004.name": "const 한정자 없는 중요 public 변수",
  "rule.sast.q.cpp.2004.option.variable_name.description": "변수 이름을 정규식으로 작성할 수 있습니다.",
  "rule.sast.q.cpp.2004.option.variable_name.name": "검출할 변수 이름",
  "rule.sast.q.cpp.207.description": "잘못된 순서로 매크로 사용 체커는 매크로를 사용할 때 공유 리소스에서 쌍으로 호출해야 하는 후속 함수를 누락한 코드를 검출합니다.\npthread_cleanup_push() 함수를 사용한 후에 pthread_cleanup_pop() 함수를 사용해야 합니다.\n같은 범위에서 쌍으로 사용해야 하는 매크로가 존재합니다. 이러한 매크로를 다른 범위에서 사용하는 경우 예상하지 않은 결과가 발생합니다.\npthread_cleanup_push() 함수를 사용한 후에 pthread_cleanup_pop() 함수를 사용해야 합니다.",
  "rule.sast.q.cpp.207.example.0.dangerous": "라인 7: pthread_cleanup_push() 함수를 단독으로 사용하면 안됩니다.",
  "rule.sast.q.cpp.207.example.0.safe": "라인 7: pthread_cleanup_push() 함수는 pthread_cleanup_pop() 함수와 같은 레벨의 범위에서 짝으로 사용해야 합니다.",
  "rule.sast.q.cpp.207.name": "잘못된 순서로 매크로 사용",
  "rule.sast.q.cpp.207.option.macro_used_order.description": "매크로 사용 순서를 설정합니다.",
  "rule.sast.q.cpp.207.option.macro_used_order.name": "매크로 사용 순서",
  "rule.sast.q.cpp.223.description": "asctime의 잘못된 사용 체커는 asctime() 함수에서 유효하지 않거나 검증되지 않는 입력값을 사용하는 코드를 검출합니다.\nasctime() 함수는 struct tm의 멤버 변수를 문자열로 변환합니다. 멤버 변수에는 정해진 범위나 값이 있기 때문에 검증되지 않은 데이터가 전달되는 경우 버퍼 오버런이 발생할 수 있습니다.\nasctime() 함수에 유효하지 않은 인자를 전달했을 때 버퍼 오버플로우 문제가 발생할 수 있으므로 더 안전한 strftime() 함수를 사용하도록 합니다.",
  "rule.sast.q.cpp.223.example.0.dangerous": "라인 2: 버퍼 오버플로우에 취약한 asctime() 함수를 사용하여 오류로 검출했습니다.",
  "rule.sast.q.cpp.223.example.0.safe": "라인 6: asctime() 함수와 동일한 역할을 수행하지만 버퍼 오버플로우를 막을 수 있는 strftime() 함수를 사용합니다.",
  "rule.sast.q.cpp.223.name": "asctime의 잘못된 사용",
  "rule.sast.q.cpp.224.description": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.\n해당 체커는 덧셈이나 뺄셈, 곱셈에서 다음 조건이 충족되는 경우를 검출합니다. 1. 외부로부터 입력된 위험한 값이 계산에 사용되는 경우 2. 계산의 결과값이 각 타입에 허용된 최소값보다 작거나 최대값보다 큰 경우\n정수형 변수가 표현할 수 있는 정수의 범위를 초과하게 될 경우 오버플로우가 발생하여 음수 또는 예상하지 못한 결과값을 얻을 수 있습니다. 예상하지 못한 결과값을 사용하여 메모리를 할당하거나 반복문의 조건을 작성하는 경우 보안 취약점이 발생합니다.\n언어 및 플랫폼에 따라 정수형의 범위를 확인하고 사용하도록 합니다. 정수형 변수를 연산에 사용하는 경우 먼저 결과값의 범위를 확인하도록 합니다. 외부 입력값을 동적 메모리 할당에 사용하는 경우 변수가 적절한 범위 내에 존재하는지 확인해야 합니다.",
  "rule.sast.q.cpp.224.example.0.dangerous": "라인 3: 검증되지 않은 변수 size를 사용하므로 정수 오버플로우가 발생할 수 있습니다.",
  "rule.sast.q.cpp.224.example.0.safe": "라인 6: malloc() 함수의 인자로 사용되는 변수에 유효한 범위의 값을 전달하도록 검증하고 사용합니다.",
  "rule.sast.q.cpp.224.name": "정수 오버플로우",
  "rule.sast.q.cpp.224.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />",
  "rule.sast.q.cpp.224.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.q.cpp.225.description": "위험한 함수 사용 체커는 옵션에 지정된 위험하다고 알려진 함수를 사용하는 코드를 검출합니다.\n옵션에서 사용 금지 함수를 설정할 수 있습니다. atof(), atoi(), atol() 함수는 각각의 타입(f, i, l)으로 변환할 수 없는 값에 대한 예외를 처리하지 않습니다. 예외 처리가 정의되지 않았기 때문에 반환값을 예측할 수 없습니다. 예를 들어, atof(), atoi(), atol() 함수를 사용하여 버퍼 크기를 설정하는 경우 버퍼 오버플로우가 발생할 수 있습니다. C 표준 라이브러리에서 예외 처리를 수행하는 strtof(atof), strtol(atoi, atol) 함수를 사용하세요. strcpy() 함수는 대상 문자열에 복사되는 원본 문자열의 크기를 검사하지 않습니다. 원본 문자열이 대상 문자열보다 큰 경우 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 복사되는 크기 상한을 지정하는 strncpy() 함수를 사용하세요. strcat() 함수는 결과물의 크기를 검사하지 않습니다. 합쳐진 결과물이 대상 문자열이 할당 받은 크기보다 큰 경우, 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 합쳐지는 크기 상한을 지정하는 strncat() 함수를 사용하세요. fopen() 함수는 오류가 발생할 때 원인을 찾기 힘듭니다. C 표준 라이브러리에서 오류 원인을 반환하는 fopen_s() 함수를 사용하세요. gets() 함수는 대상 문자열에 삽입되는 입력의 크기를 검사하지 않습니다. 표준 입력 스트림으로 삽입되는 배열이 대상 문자열보다 큰 경우 버퍼 오버플로우가 발생합니다. C 표준 라이브러리에서 입력 크기를 지정하는 fgets() 혹은 gets_s() 함수를 사용하십시오.\n특정 라이브러리 함수는 보안 취약점에 노출되어 있습니다. 보안에 취약한 함수 대신 안전한 함수를 사용하도록 합니다.\n위험하다고 알려진 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.225.example.0.dangerous": "라인 7: 위험한 gets() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.\n라인 8: 위험한 strcpy() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.\n라인 9: 위험한 strcat() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.\n라인 10: 위험한 fopen() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.\n라인 11: 위험한 atoi() 함수를 사용하여 입력을 받으므로 오류로 검출했습니다.",
  "rule.sast.q.cpp.225.example.0.safe": "라인 8: gets() 함수 대신 버퍼 오버플로우를 방지할 수 있는 fgets() 함수를 사용합니다.\n라인 9: strcpy() 함수 대신 버퍼 오버플로우를 방지할 수 있는 strncpy() 함수를 사용합니다. C11에서는 strcpy_s() 함수를 사용할 수 있습니다.\n라인 10: strcat() 함수 대신 버퍼 오버플로우를 방지할 수 있는 strncat() 함수를 사용합니다. C11에서는 strcat_s() 함수를 사용할 수 있습니다.\n라인 11: 보안에 취약한 fopen() 대신 fopen_s() 함수를 사용했습니다.\n라인 12: 보안에 취약한 atoi() 대신 strtol() 함수를 사용했습니다.\n라인 13: 보안에 취약한 atol() 대신 strtoll() 함수를 사용했습니다.\n라인 14: 보안에 취약한 atod() 대신 strtod() 함수를 사용했습니다.",
  "rule.sast.q.cpp.225.name": "위험한 함수 사용",
  "rule.sast.q.cpp.225.option.function_should_not_be_used.description": "사용을 금지할 함수 목록을 적습니다.",
  "rule.sast.q.cpp.225.option.function_should_not_be_used.name": "금지 함수 목록",
  "rule.sast.q.cpp.228.description": "안전하지 않은 멀티 바이트 문자열 함수 사용 체커는 윈도우에서 제공하는 멀티 바이트 문자열 함수들 중 보안에 안전하지 않은 함수를 사용한 경우를 검출합니다.\n옵션에서 사용 금지 함수의 정규식 패턴을 설정할 수 있습니다.\n윈도우에서 제공하는 모든 멀티 바이트 문자열 함수로 인해 버퍼 오버런이 발생할 가능성이 있기 때문에 사용하지 않는 것이 좋습니다.\n윈도우에서 제공하는 멀티 바이트 문자열 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.228.example.0.dangerous": "라인 2: mbscpy()를 사용했으므로 오류로 검출되었습니다.",
  "rule.sast.q.cpp.228.example.0.safe": "라인 2: Microsoft에서 제공하는 안전한 멀티 바이트 문자열 함수인 _mbscpy_s()를 사용합니다.",
  "rule.sast.q.cpp.228.name": "안전하지 않은 멀티 바이트 문자열 함수 사용",
  "rule.sast.q.cpp.228.option.function_should_not_be_used.description": "사용 금지 함수를 탐지할 정규 표현식을 입력합니다.",
  "rule.sast.q.cpp.228.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.241.description": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.\n프로그램에 무한 재귀 호출이 발생하는 경우 메모리나 스택 등 대부분의 리소스를 지속적으로 할당 받기 때문에 성능이 저하되고 의도하지 않게 프로그램이 종료될 수 있습니다. 정적 분석을 통해서 무한 재귀 호출 혹은 무한 루프를 사전에 완벽하게 예방하는 것은 이론적으로 불가능합니다. 따라서 이 체커는 대표적인 특정 패턴이나 간단한 경우에 대해서만 검사가 가능합니다.\n재귀 호출 구문을 올바른 제어 구문 아래에 둡니다. 또한 재귀 호출의 종료 조건을 제대로 지정하지 못하는 경우를 대비하기 위해 재귀 호출 대신 동일한 기능을 수행하는 반복문을 사용하는 방법도 있습니다.",
  "rule.sast.q.cpp.241.example.0.dangerous": "라인 2: 조건이 없는 재귀 호출 구문을 사용하는 경우 무한 재귀 호출이 발생할 수 있습니다.",
  "rule.sast.q.cpp.241.example.0.safe": "라인 2: 무한 재귀 호출이 발생하지 않도록 조건을 작정하도록 합니다.",
  "rule.sast.q.cpp.241.name": "무한 재귀 호출",
  "rule.sast.q.cpp.2422.description": "포맷 스트링과 대상 인자 개수 불일치 체커는 특정 인자 위치로 문자열 형을 반환하는 함수에서 문자열 형태(`%s`, `%x`, `%c` 등)와 그 대상 인자의 개수가 다른 경우를 검출합니다.\n특정 인자 위치로 문자열 형을 반환하는 함수에서 문자열 형태(`%s`, `%x`, `%c` 등)와 그 대상 인자의 개수가 다르다면 프로그램이 어떻게 동작하게 될지 예측할 수 없습니다.\n문자열 형태와 대상 인자의 개수가 다르지 않게 합니다.",
  "rule.sast.q.cpp.2422.example.0.dangerous": "라인 3: 인자 개수가 필요 인자수(2개) 와 다릅니다.",
  "rule.sast.q.cpp.2422.example.0.safe": "라인 3: 인자 개수가 필요 인자수(2개)를 맞춰줍니다.",
  "rule.sast.q.cpp.2422.name": "포맷 스트링과 대상 인자 개수 불일치",
  "rule.sast.q.cpp.2422.option.targets.description": "아래 목록에 존재하는 함수에 대하여만 검사합니다.",
  "rule.sast.q.cpp.2422.option.targets.name": "검사 대상 string format함수",
  "rule.sast.q.cpp.255.description": "빈 분기문 체커는 if 구문의 거짓 분기 혹은 switch 구문의 case 및 default 블록에 실행할 코드가 없는 경우를 검출합니다.\n규칙에 맞게 각 분기에 실행할 코드를 삽입합니다.",
  "rule.sast.q.cpp.255.example.0.dangerous": "라인 3: if 문에서 fp가 널이 아닐 경우에 해당 작업을 수행하지만 널 일 경우 예외 처리해 주는 else 문이 빠져 있습니다.\n라인 9: swith-case 문에서 default 문이 없을 경우를 검출합니다. 옵션 값이 case 문에서 처리할 수 없는 값일 경우에 예상하지 못한 결과를 일으킬 수 있습니다.\n라인 20: swith-case 문에서 case 문이 없고, default 문만 있을 경우를 검출합니다",
  "rule.sast.q.cpp.255.example.0.safe": "라인 5: else 문으로 적절한 예외 처리를 해줘야 합니다.\n라인 12: switch-case 문에 default 문을 삽입하여 적절한 예외 처리를 합니다.\n라인 13: case 문을 추가하도록 합니다.",
  "rule.sast.q.cpp.255.name": "빈 분기문",
  "rule.sast.q.cpp.255.option.allow_oneline_if.description": "선택할 경우 if문에 else 구문이 없더라도 이슈를 검출하지 않습니다.",
  "rule.sast.q.cpp.255.option.allow_oneline_if.name": "else 구문이 없는 if문 허용",
  "rule.sast.q.cpp.255.option.check_empty_case.description": "옵션을 사용하는 경우, 빈 case branch를 검출합니다.",
  "rule.sast.q.cpp.255.option.check_empty_case.name": "빈 case branch 검출",
  "rule.sast.q.cpp.255.option.check_empty_default_case.description": "옵션을 사용하는 경우, 빈 default case branch를 검출합니다.",
  "rule.sast.q.cpp.255.option.check_empty_default_case.name": "빈 default case branch 검출",
  "rule.sast.q.cpp.255.option.check_empty_else_branch.description": "옵션을 사용하는 경우, 빈 else branch를 이슈로 검출합니다.",
  "rule.sast.q.cpp.255.option.check_empty_else_branch.name": "빈 else branch 검출",
  "rule.sast.q.cpp.255.option.treat_comment_as_nonempty.description": "옵션을 사용하는 경우, 주석문이 작성되어 있다면 비어있지 않은 것으로 간주합니다.",
  "rule.sast.q.cpp.255.option.treat_comment_as_nonempty.name": "주석문이 있을 경우 검출하지 않습니다.",
  "rule.sast.q.cpp.2789.description": "다중 스레드 환경에서 비트 필드 접근 체커는 서로 다른 스레드에서 인접한 비트 필드를 수정하는 경우를 검출합니다.\n컴파일러는 인접한 비트 필드를 저장할 때 하나의 메모리 주소에 저장해야 합니다. 이때 서로 다른 스레드에서 인접한 비트 필드를 수정하는 것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다. 또한 이러한 사용 방식은 일반적으로는 경쟁 상태(Race Condition)가 발생할 수 있습니다.\n인접한 비트 필드에 값을 저장할 경우에는 뮤텍스를 잠근 후에 데이터를 조작하도록 합니다.",
  "rule.sast.q.cpp.2789.example.0.dangerous": "라인 9: 비트 필드에 값을 저장했습니다.\n라인 14: 라인 9의 비트 필드와 인접한 비트 필드에 값을 저장했습니다. 이로 인해 경쟁 상태가 발생할 수 있습니다.",
  "rule.sast.q.cpp.2789.example.0.safe": "라인 17: 뮤텍스를 잠근 후에 데이터를 저장합니다.\n라인 28: 뮤텍스를 잠근 후에 데이터를 저장합니다.",
  "rule.sast.q.cpp.2789.name": "다중 스레드 환경에서 비트 필드 접근",
  "rule.sast.q.cpp.2795.description": "표준 네임스페이스 변경 체커는 사용자가 임의로 std 네임스페이스를 정의한 경우를 검출합니다.\n표준 네임스페이스를 임의로 변경할 경우 표준에 속한 식별자와 개발자가 임의로 정의한 식별자가 충돌이 일어날 수 있습니다. 이것은 정의되지 않은 동작입니다. 이 코드의 결과는 컴파일러에 따라 달라지며 예측할 수 없습니다.\n사용자가 임의로 std 네임스페이스를 정의하지 않도록 합니다. 다른 네임스페이스 이름을 사용하거나 std 네임스페이스에 속한 라이브러리를 호출하는 코드를 작성하는 방식으로 사용합니다.",
  "rule.sast.q.cpp.2795.example.0.dangerous": "라인 1: 사용자가 임의로 std 네임스페이스를 정의했습니다.",
  "rule.sast.q.cpp.2795.example.0.safe": "라인 1: std 네임스페이스가 아닌 다른 네임스페이스 이름을 사용합니다.",
  "rule.sast.q.cpp.2795.name": "표준 네임스페이스 변경",
  "rule.sast.q.cpp.2796.description": "atexit() 함수로 등록한 핸들러에서 예외 발생 체커는 atexit() 함수로 등록한 함수에서 예외가 발생하는 경우를 검출합니다.\n정상적인 종료가 아닌 갑작스러운 프로그램 종료로 인해 메모리 및 리소스 누수와 같은 문제가 발생할 수 있습니다. 특히 파일이나 네트워크 통신과 같은 외부 리소스가 불확실한 형태로 남겨질 수 있으므로 이것은 심각한 문제가 발생할 수 있습니다.\natexit()로 등록한 함수 내에서 예외가 외부로 전파되지 않도록 해야 합니다.",
  "rule.sast.q.cpp.2796.example.0.dangerous": "라인 4: throwing_func() 함수에서 예외를 던졌습니다.\n라인 7: throwing_func() 함수를 호출하는 f() 함수를 정의했습니다.\n라인 12: atexit() 함수를 사용하여 f() 함수를 핸들러로 설정했습니다. 이 함수는 예외를 발생시키므로 갑작스러운 프로그램 종료가 발생합니다.",
  "rule.sast.q.cpp.2796.example.0.safe": "라인 7: f() 함수가 예외를 밖으로 전파하지 않도록 잘 정의합니다.",
  "rule.sast.q.cpp.2796.name": "atexit() 함수로 등록한 핸들러에서 예외 발생",
  "rule.sast.q.cpp.2803.description": "컨테이너 오버플로우 체커는 컨테이너의 용량을 넘어서는 데이터를 삽입하거나 접근하는 수식을 검출합니다.\nSTL에 속한 일부 컨테이너는 내장 메소드나 몇몇 알고리즘 함수에서 버퍼 오버플로우를 유발할 수 있습니다. 이로 인해 보안상 취약점이 발생하거나 런타임 오류가 발생할 수 있습니다.\n컨테이너를 사용할 때 버퍼 오버플로우가 발생하지 않도록 컨테이너의 용량을 늘리거나 삽입 기능을 보조해 주는 유틸리티 함수를 사용하도록 합니다.\n또한 컨테이너의 내부 객체에 접근할 때도 접근하는 인덱스의 값을 충분히 검사해야 합니다.",
  "rule.sast.q.cpp.2803.example.0.dangerous": "라인 2: dest 컨테이너의 용량은 설정되지 않았습니다.\n라인 3: dest 컨테이너의 용량이 없는 상태에서 copy() 함수를 이용하여 데이터 삽입을 시도했습니다. 이때 오버플로우가 발생합니다.",
  "rule.sast.q.cpp.2803.example.0.safe": "라인 2: dest 컨테이너 초기화 시 기본 용량을 설정합니다.\n라인 3: dest 컨테이너에 copy() 함수를 이용하여 데이터를 삽입할 때 back_inserter() 함수를 사용하도록 합니다.",
  "rule.sast.q.cpp.2803.name": "컨테이너 오버플로우",
  "rule.sast.q.cpp.287.description": "동적 할당 버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 경우를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.q.cpp.287.example.0.dangerous": "라인 2: buf에 n + 2의 계산 결과를 인덱스로 접근했습니다.\n라인 6: 12 크기의 메모리를 dest에 할당했습니다.\n라인 7: dest의 오프셋에 8을 더하여 sub() 함수를 호출했습니다. 따라서 라인 2에서 정해진 범위를 벗어난 접근이 발생했습니다.",
  "rule.sast.q.cpp.287.example.0.safe": "라인 2: buf에 n의 값을 인덱스로 접근하도록 합니다.\n라인 7: 할당 받은 메모리 크기를 초과하여 접근하지 않도록 수정합니다.",
  "rule.sast.q.cpp.287.name": "동적 할당 버퍼 오버플로우",
  "rule.sast.q.cpp.3074.description": "복사 연산자 내에서 원본 객체 수정 체커는 복사 생성자 혹은 복사 할당 연산자 내에서 인자로 받은 원본 객체의 멤버 변수 값이 변경되는 경우를 검출합니다.\n복사 연산(복사 생성자 및 복사 대입 연산자)은 소스 객체의 주요 속성을 대상 객체에 복사하고 그 결과 객체는 원본의 사본이 됩니다. 복사 연산자를 구현할 때는 원본 객체의 변수 정보를 변경해서는 안됩니다.\n그러면 원본과 동일하지 않은 사본이 생성될 수 있습니다.\n복사 연산자 내에서 원본 객체를 수정하지 않도록 합니다.",
  "rule.sast.q.cpp.3074.example.0.dangerous": "라인 11, 17: 원본 객체의 멤버 변수 m의 값을 재설정했습니다.",
  "rule.sast.q.cpp.3074.example.0.safe": "라인 10, 11, 13, 20: 복사 연산자 내에서 원본 객체의 멤버 변수 값을 변경하지 않도록 합니다.",
  "rule.sast.q.cpp.3074.name": "복사 연산자 내에서 원본 객체 수정",
  "rule.sast.q.cpp.3075.description": "적절하지 않은 클래스 객체를 대상으로 하는 C 표준 라이브러리 사용 체커는 일부 C 표준 라이브러리를 사용하여 Non-trivial 클래스 객체 혹은 비표준 레이아웃 클래스 객체를 조작하는 경우를 검출합니다.\n여러 가지 C 표준 라이브러리 함수는 객체에 대한 바이트 조작을 수행합니다. 예를 들어 std::memcmp()는 두 객체의 바이트 구성을 비교하고, std::memcpy()는 객체 표현을 구성하는 바이트를 대상 버퍼에 복사합니다. 그러나 일부 객체 타입을 대상으로 이러한 함수를 사용하면 정의되지 않은 동작이 발생합니다.\nNon-trivial한 클래스 타입의 객체를 초기화하기 위해 std::memset()을 사용하거나 객체 사본을 생성하기 위해 std::memcpy()를 사용하면 안됩니다. 또한 비표준 레이아웃 클래스 타입의 객체들을 비교하기 위해 std::memcmp()를 사용해서도 안됩니다. 모든 경우에 C++에서 제공하는 대안을 사용하는 것이 바람직합니다.\n객체의 값을 제대로 초기화하지 못하거나 객체의 값 표현을 제대로 비교하지 못할 수 있습니다.\nC 표준 라이브러리 대신 클래스의 특별한 메소드나 연산자 오버로딩을 사용하도록 합니다.",
  "rule.sast.q.cpp.3075.example.0.dangerous": "라인 9: 비표준 레이아웃 클래스 클래스의 두 객체를 비교했습니다.",
  "rule.sast.q.cpp.3075.example.0.safe": "라인 5: memcmp() 대신에 비교 연산자를 정의하여 사용합니다.",
  "rule.sast.q.cpp.3075.name": "적절하지 않은 클래스 객체를 대상으로 하는 C 표준 라이브러리 사용",
  "rule.sast.q.cpp.3076.description": "const로 선언되지 않은 public 정적 멤버 변수 체커는 객체에 const 키워드로 표시되지 않은 public 정적 멤버 변수가 포함하는 경우를 검출합니다.\npublic 정적 멤버 변수는 접근자 없이 읽을 수 있으며 애플리케이션의 모든 클래스에서 변경할 수 있습니다.\n해당 멤버 변수는 예상치 못한 방식으로 수정될 수 있습니다.\npublic 정적 멤버 변수를 선언할 때 const 키워드를 사용하도록 합니다.",
  "rule.sast.q.cpp.3076.example.0.dangerous": "라인 3: public 정적 멤버 변수가 const로 선언되지 않았습니다.",
  "rule.sast.q.cpp.3076.example.0.safe": "라인 3: const 키워드를 사용하여 변수를 수정하지 못하도록 제한합니다.",
  "rule.sast.q.cpp.3076.name": "const로 선언되지 않은 public 정적 멤버 변수",
  "rule.sast.q.cpp.31.description": "메모리 누수 체커는 더 이상 필요하지 않은 할당된 메모리를 해제하지 않는 코드를 검출합니다.\n메모리 누수는 형식이 잘못된 데이터의 부적절한 처리 또는 예상하지 못한 세션 중단에 의해 발생합니다. 따라서 시스템의 성능을 저하시키거나 서비스가 불가능한 상태로 이어질 수 있습니다.\n동적으로 할당된 메모리를 반드시 해제하도록 합니다. 특히 조건 검사를 수행하고 함수를 반환하기 전에 사용한 메모리를 해제하는 것을 누락하는 경우가 있습니다.",
  "rule.sast.q.cpp.31.example.0.dangerous": "라인 2: malloc()을 사용하여 buf 변수에 BLOCK_SIZE 크기의 메모리를 할당했습니다.\n라인 4: read를 통해 얻은 buf의 크기가 기대했던 크기가 아니면 널을 반환하고 종료하는데, 이 때 라인 2에서 할당한 메모리를 회수하지 않았으므로 메모리 누수가 발생합니다.",
  "rule.sast.q.cpp.31.example.0.safe": "라인 5: 할당된 메모리를 해제합니다. 함수를 반환하기 전에 할당된 메모리를 해제해야 합니다.",
  "rule.sast.q.cpp.31.name": "메모리 누수",
  "rule.sast.q.cpp.32.description": "자원 누수 체커는 파일, 소켓 등 리소스를 할당한 후에 해제하지 않는 코드를 검출합니다.\n리소스 누수는 형식이 잘못된 데이터의 부적절한 처리 또는 예상하지 못한 세션 중단에 의해 발생합니다. 따라서 시스템의 성능을 저하시키거나 서비스가 불가능한 상태로 이어질 수 있습니다.\n할당된 리소스를 반드시 해제해야 합니다. 특히 조건 검사를 수행하고 함수를 반환하기 전에 사용한 리소스를 해제하는 것을 누락하는 경우가 있습니다.",
  "rule.sast.q.cpp.32.example.0.dangerous": "라인 2: fopen()을 사용하여 p에 리소스를 할당했습니다.\n라인 4: 라인 3의 if 구문을 만족하는 경우 라인 2에서 획득한 리소스를 해제하지 않고 종료했습니다.",
  "rule.sast.q.cpp.32.example.0.safe": "라인 4: fclose(p)를 호출하여 리소스를 해제합니다.",
  "rule.sast.q.cpp.32.name": "자원 누수",
  "rule.sast.q.cpp.37.description": "이미 해제된 메모리 해제 체커는 이미 해제된 메모리를 다시 해제하려는 코드를 검출합니다.\n메모리를 이중으로 해제하면 잠재적으로 메모리 위치를 예상하지 않게 수정하게 되어 프로그램이 비정상적으로 종료될 수 있습니다.\n할당된 메모리 혹은 리소스를 해제하기 전에 이미 해제되었는지 확인해야 합니다.",
  "rule.sast.q.cpp.37.example.0.dangerous": "라인 9: malloc()을 사용하여 p 변수에 메모리를 할당했습니다.\n라인 10: p가 가리키는 메모리를 foo 함수의 인자로 전달했습니다.\n라인 3: foo 함수에서 라인 3의 인자로 전달된 메모리를 해제하고 -1을 반환했습니다.\n라인 11: foo 함수에서 -1을 반환하여 라인 11이 실행되었습니다. foo 함수에서 해제한 메모리를 다시 해제하므로 이중 해제가 발생했습니다.",
  "rule.sast.q.cpp.37.example.0.safe": "라인 6: p 변수를 해제하기 전에 널을 확인하여 이중 해제를 방지합니다.",
  "rule.sast.q.cpp.37.name": "이미 해제된 메모리 해제",
  "rule.sast.q.cpp.38.description": "해제된 메모리 사용 체커는 해제된 메모리 블록을 다시 참조하는 코드를 검출합니다.\n해제된 메모리를 사용하면 비정상적인 값을 사용하여 시스템에도 비정상적인 상태가 발생할 수 있습니다.\n메모리를 사용하기 전에 해제되었는지를 확인합니다.",
  "rule.sast.q.cpp.38.example.0.dangerous": "라인 3: if 구문이 true로 실행되어 라인 5에서 ptr의 메모리를 해제했습니다.\n라인 9: 라인 5에서 이미 해제된 메모리를 참조하였으므로 해제 후 사용이 발생했습니다.",
  "rule.sast.q.cpp.38.example.0.safe": "라인 6: 할당된 메모리를 해제하기 전에 사용하도록 코드를 변경합니다.",
  "rule.sast.q.cpp.38.name": "해제된 메모리 사용",
  "rule.sast.q.cpp.39.description": "초기화되지 않은 값 체커는 초기화되지 않은 지역 변수를 사용하는 코드를 검출합니다.\n초기화되지 않은 변수는 임의의 데이터 값을 가지기 때문에 예상하지 않은 동작이 발생할 수 있습니다.\n지역 변수를 사용하기 전에 먼저 초기화하도록 합니다.",
  "rule.sast.q.cpp.39.example.0.dangerous": "라인 1: 초기값을 할당하지 않고 변수 a와 b를 선언했습니다.\n라인 2: 초기화되지 않은 변수 a와 b를 사용했습니다.",
  "rule.sast.q.cpp.39.example.0.safe": "라인 1: 변수를 선언할 때 초기화해야 합니다.",
  "rule.sast.q.cpp.39.name": "초기화되지 않은 값",
  "rule.sast.q.cpp.40.description": "널 역참조 체커는 포인터 값이 널임을 고려하지 않고 널 포인터가 가리키는 값을 읽는 코드를 검출합니다.\n일반적으로 널 값 역참조로 인해 시스템이 종료될 수 있습니다.\n포인터를 역참조하기 전에 널을 확인해야 합니다.",
  "rule.sast.q.cpp.40.example.0.dangerous": "라인 3: 포인터 ptr이 가리키는 주소 값을 널로 지정했습니다.\n라인 5: 주소 값이 널인 ptr의 주소를 역참조하여 널 값 역참조 오류가 발생했습니다.",
  "rule.sast.q.cpp.40.example.0.safe": "라인 5: 포인터 변수를 사용하기 전에 반드시 널을 확인해야 합니다.",
  "rule.sast.q.cpp.40.name": "널 역참조",
  "rule.sast.q.cpp.41.description": "누락된 널 검사 체커는 함수의 인자로 전달되거나 다른 함수에서 반환된 포인터를 이전에는 널 확인 후 사용했지만 이번에는 널 확인 없이 사용하는 코드를 검출합니다.\n이전에 널 확인을 수행한 포인터 변수에도 널이 할당될 가능성이 있기 때문입니다.\n일반적으로 널 값 역참조로 인해 시스템이 종료될 수 있습니다.\n이전에 널 확인을 수행한 포인터 변수를 사용하기 전에 다시 널을 확인해야 합니다.",
  "rule.sast.q.cpp.41.example.0.dangerous": "라인 1: 함수의 인자로 포인터 x를 사용했습니다.\n라인 4: 포인터 x의 주소가 널이 아니면 y1에 x가 가리키는 값을 할당하게 됩니다.\n라인 7: 주소 값이 널일 수 있는 x가 가리키는 값을 y2에 할당했습니다.",
  "rule.sast.q.cpp.41.example.0.safe": "라인 7: 이전에 널을 확인한 포인터 변수에 대해 다시 널 확인을 수행합니다.",
  "rule.sast.q.cpp.41.name": "누락된 널 검사",
  "rule.sast.q.cpp.44.description": "해제된 메모리 반환 체커는 이미 해제된 메모리를 가리키는 변수를 반환하는 코드를 검출합니다.\n해제된 변수를 반환하면 일반적으로 충돌과 같이 의도하지 않은 동작이 발생합니다.\n반환할 변수가 이미 해제되었는지를 확인해야 합니다.",
  "rule.sast.q.cpp.44.example.0.dangerous": "라인 3: if 구문이 true로 실행되어 라인 5에서 ptr의 메모리를 해제했습니다.\n라인 9: 라인 5에서 회수된 메모리를 가리키는 ptr 포인터를 반환하므로 오류가 발생했습니다.",
  "rule.sast.q.cpp.44.example.0.safe": "라인 9: 해제된 메모리를 반환하지 않도록 코드를 변경하여 해결할 수 있습니다.",
  "rule.sast.q.cpp.44.name": "해제된 메모리 반환",
  "rule.sast.q.cpp.53.description": "동적 할당된 메모리에 대한 delete 시도 체커는 malloc() 과 같은 함수로 할당된 메모리 영역을 delete로 해제하려고 시도하는 코드를 검출합니다.\n동적 메모리 할당 함수로 할당된 메모리는 delete 키워드로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\n동적 메모리 할당 함수로 할당된 메모리는 free() 함수로 해제합니다.",
  "rule.sast.q.cpp.53.example.0.dangerous": "라인 2: malloc()을 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 delete로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.cpp.53.example.0.safe": "라인 4: delete 대신 free로 메모리를 해제하여 문제를 해결합니다.",
  "rule.sast.q.cpp.53.name": "동적 할당된 메모리에 대한 delete 시도",
  "rule.sast.q.cpp.54.description": "동적 할당된 메모리에 대한 delete[] 시도 체커는 malloc 같은 함수로 할당된 메모리 영역을 delete[]로 해제하려고 시도하는 코드를 검출합니다.\n동적 메모리 할당 함수로 할당된 메모리는 delete[] 키워드로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\n동적 메모리 할당 함수로 할당된 메모리는 free() 함수로 해제합니다.",
  "rule.sast.q.cpp.54.example.0.dangerous": "라인 2: malloc()을 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 delete[]로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.cpp.54.example.0.safe": "라인 4: delete[] 대신 free로 메모리를 해제하여 문제를 해결합니다.",
  "rule.sast.q.cpp.54.name": "동적 할당된 메모리에 대한 delete[] 시도",
  "rule.sast.q.cpp.55.description": "new[]로 할당된 메모리에 대한 delete 시도 체커는 new[] 연산자로 할당된 메모리 영역을 delete로 해제하려고 시도하는 코드를 검출합니다.\nnew[]로 할당된 메모리는 delete로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\nnew[]로 할당된 메모리 영역을 delete[]로 해제합니다.",
  "rule.sast.q.cpp.55.example.0.dangerous": "라인 2: new char[]를 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 delete로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.cpp.55.example.0.safe": "라인 4: delete 대신 delete[]를 사용하여 메모리를 해제합니다.",
  "rule.sast.q.cpp.55.name": "new[]로 할당된 메모리에 대한 delete 시도",
  "rule.sast.q.cpp.56.description": "new[]로 할당된 메모리에 대한 free 시도 체커는 new[] 연산자로 할당된 메모리 영역을 free()로 해제하려고 시도하는 코드를 검출합니다.\nnew[]로 할당된 메모리는 free()로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\nnew[]로 할당된 메모리 영역을 delete[]로 해제합니다.",
  "rule.sast.q.cpp.56.example.0.dangerous": "라인 2: new char[]를 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 free()로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.cpp.56.example.0.safe": "라인 4: delete 대신 delete[]를 사용하여 메모리를 해제합니다.",
  "rule.sast.q.cpp.56.name": "new[]로 할당된 메모리에 대한 free 시도",
  "rule.sast.q.cpp.57.description": "new로 할당된 메모리에 대한 delete[] 시도 체커는 new 연산자로 할당된 메모리 영역을 delete[]로 해제하려고 시도하는 코드를 검출합니다.\nnew로 할당된 메모리는 delete[]로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\nnew로 할당된 메모리는 delete로 해제합니다.",
  "rule.sast.q.cpp.57.example.0.dangerous": "라인 2: new char를 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 delete[]로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.cpp.57.example.0.safe": "라인 4: delete[] 대신 delete로 메모리를 해제하여 문제를 해결합니다.",
  "rule.sast.q.cpp.57.name": "new로 할당된 메모리에 대한 delete[] 시도",
  "rule.sast.q.cpp.58.description": "new로 할당된 메모리에 대한 free 시도 체커는 new 연산자로 할당된 메모리 영역을 free로 해제하려고 시도하는 코드를 검출합니다.\nnew로 할당된 메모리는 free로 해제되지 않기 때문에 메모리를 할당 받은 상태로 남아 있습니다. 또한 다른 방식으로 메모리를 할당하고 해제하는 경우 세그멘테이션 오류로 인해 프로그램이 예상하지 못하게 종료될 수 있습니다.\nnew로 할당된 메모리는 delete로 해제합니다.",
  "rule.sast.q.cpp.58.example.0.dangerous": "라인 2: new char를 사용하여 포인터 p에 메모리를 할당했습니다.\n라인 4: 포인터 p의 메모리를 free()로 해제하여 문제가 발생했습니다.",
  "rule.sast.q.cpp.58.example.0.safe": "라인 4: free() 대신 delete로 메모리를 해제하여 문제를 해결합니다.",
  "rule.sast.q.cpp.58.name": "new로 할당된 메모리에 대한 free 시도",
  "rule.sast.q.cpp.74.description": "이미 해제된 자원 해제 체커는 이미 해제된 리소스를 다시 해제하려는 코드를 검출합니다.\n여기서 리소스는 파일, 네트워크 소켓 등을 가리킵니다.\n리소스를 이중으로 해제하면 잠재적으로 메모리 위치를 예상하지 못하게 수정하므로 프로그램이 비정상적으로 종료될 수 있습니다.\n할당된 리소스를 해제하기 전에 이미 해제되었는지를 확인해야 합니다.",
  "rule.sast.q.cpp.74.example.0.dangerous": "라인 9: fp변수에 fopen() 함수를 사용하여 파일 포인터를 할당받습니다.\n라인 10: fp 변수가 가리키는 파일 포인터는 foo의 인자로 전달되었습니다.\n라인 3: foo() 함수의 라인 3에서 인자로 전달된 파일을 해제하고 1을 반환합니다.\n라인 11: foo() 함수에서 1을 반환하면 라인 11이 실행됩니다. foo() 함수에서 해제한 파일을 다시 해제하게 되어 오류가 발생합니다.",
  "rule.sast.q.cpp.74.example.0.safe": "라인 4: 이미 해제된 리소스를 다시 해제하지 않도록 코드를 수정하여 해결할 수 있습니다.",
  "rule.sast.q.cpp.74.name": "이미 해제된 자원 해제",
  "rule.sast.q.cpp.7475.description": "클래스의 모든 비정적 멤버 변수는 객체에 접근 가능해지는 시점, 즉 생성자의 본문이 실행되기 전에 초기화가 완료되어야 합니다. \n\n생성자가 있는 클래스의 경우 생성자 본문 내의 대입은 초기화로 인정되지 않으므로 멤버 초기화 리스트를 사용해야 합니다. \n\n생성자가 없이 데이터만 담고 있는 집합체(Aggregate) 클래스의 경우, 객체 생성 시점에 실수로 초기화를 누락하는 것을 방지하기 위해 반드시 멤버 변수 선언과 동시에 기본값(Default Member Initializer)을 지정해야 합니다. \n\n초기화되지 않은 멤버 변수는 쓰레기 값을 가지게 되어 프로그램의 오동작을 유발할 수 있습니다.\n멤버 변수를 초기화 할 때 가장 권장되는 방법은 선언과 동시에 기본값을 지정하는 것입니다. 일부 버전이 낮은 컴파일러에서는 지원되지 않을 수 있으나, 만약 지원된다면 생성자 유무와 관계없이 모든 멤버의 초기화를 보장하는 가장 좋은 방법입니다.\n\n만약 기본 초기화자 사용이 어렵다면, 모든 기본 타입(Primitive type) 및 포인터 타입의 멤버 변수에 대해 생성자 멤버 초기화 리스트(Constructor member initialization list)에서 초기화해야 합니다. 클래스 타입처럼 자체 생성자가 있는 경우는 기본 생성자를 호출하므로 실용적인 관점에서 호출을 생략하는 것을 허용합니다.\n\n또한 다른 생성자에게 초기화를 위임하는 위임 생성자(Delegating Constructor)의 경우, 초기화의 책임이 위임받은 생성자에게 있으므로 별도의 멤버 초기화를 하지 않아도 됩니다.",
  "rule.sast.q.cpp.7475.example.0.dangerous": "라인 4: 생성자를 default 로 선언했으나, 자체 생성자가 있는 name을 제외한 멤버 변수가 초기화되지 않았습니다.\n라인 5: 생성자 본문에서 age를 대입했으며, incomes 배열은 초기화하지 않았습니다.\n라인 14: 집합체 구조체에서 미초기화된 멤버 변수가 있음에도 명시적인 생성자를 선언하지 않았습니다.",
  "rule.sast.q.cpp.7475.example.0.safe": "라인 4: 모든 멤버 변수는 멤버 초기화 리스트에서 올바르게 초기화 해야 합니다.\n라인 5: 클래스 타입과 같이 기본 생성자를 자동으로 호출하는 멤버 변수의 초기화 생략은 허용합니다.\n라인 6: 다른 생성자에게 초기화 작업을 맡기는 위임 생성자의 경우 초기화 생략을 허용합니다.\n라인 13: 멤버 변수를 기본값(Default Member Initializer)을 지정하여 초기화 할 경우 생성자 선언 혹은 초기화를 생략하는 것을 허용합니다.",
  "rule.sast.q.cpp.7475.name": "멤버 변수 초기화 누락",
  "rule.sast.q.cpp.83.description": "지정된 라이브러리 함수 호출 누락 체커는 옵션에 지정된 라이브러리 함수를 호출하지 않은 코드를 검출합니다.\n지정한 라이브러리 함수를 호출하지 않았을 경우를 검출합니다. 기본적으로 설정되어 있는 라이브러리 함수는 다음과 같습니다. printf(), scanf(), fprintf(), fscanf().\n옵션에 지정된 필수 라이브러리 함수를 사용하도록 합니다.",
  "rule.sast.q.cpp.83.example.0.dangerous": "라인 2: make_device() 함수 내에서 옵션에 지정된 라이브러리 함수를 사용하지 않았습니다.",
  "rule.sast.q.cpp.83.example.0.safe": "라인 2: 옵션에 지정된 printf() 함수를 사용합니다.",
  "rule.sast.q.cpp.83.name": "지정된 라이브러리 함수 호출 누락",
  "rule.sast.q.cpp.83.option.function_should_be_used.description": "필수 사용 함수를 설정합니다.",
  "rule.sast.q.cpp.83.option.function_should_be_used.name": "필수 사용 함수",
  "rule.sast.q.cpp.84.description": "지정된 매개변수를 사용하는 라이브러리 함수 호출 누락 체커는 옵션에 지정된 매개변수를 포함한 함수에서 금지된 함수를 사용하는 코드를 검출합니다.\n지정된 함수란 옵션에 설정된 매개변수를 포함하는 함수를 의미합니다. 옵션에서 제외 대상 파일, 사용 금지 함수와 해당 함수가 가져야 할 매개 변수 타입을 설정할 수 있습니다.\n옵션에 있는 정의된 매개변수를 포함하는 함수에서 금지된 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.84.example.0.dangerous": "라인 2: Func() 함수의 매개변수가 int 타입이므로 분석 대상입니다.\n라인 3: 금지된 함수 divide()를 호출했습니다.",
  "rule.sast.q.cpp.84.example.0.safe": "라인 2: 분석 대상인 Func(int) 함수에서 금지된 함수인 divide() 함수를 호출하지 않습니다.",
  "rule.sast.q.cpp.84.name": "지정된 매개변수를 사용하는 라이브러리 함수 호출 누락",
  "rule.sast.q.cpp.84.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.sast.q.cpp.84.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.cpp.84.option.function_should_not_be_used.description": "반드시 사용되지 말아야하는 함수를 설정합니다.",
  "rule.sast.q.cpp.84.option.function_should_not_be_used.name": "반드시 사용되지 말아야하는 함수",
  "rule.sast.q.cpp.84.option.function_target_have_param_type.description": "분석 대상이 가져야 할 파라미터 타입을 설정합니다.",
  "rule.sast.q.cpp.84.option.function_target_have_param_type.name": "분석 대상이 가져야할 파라미터 타입",
  "rule.sast.q.cpp.85.description": "누락된 필수 인자를 사용한 필수 라이브러리 함수 호출 체커는 옵션에 지정된 함수를 호출할 때 지정된 인자로 호출하지 않은 코드를 검출합니다.\n지정된 함수란 옵션에서 설정된 함수이고 지정된 인자란 옵션에 설정되어 있는 인자값을 의미합니다. 옵션에서 제외 대상 파일, 호출 대상 함수 및 반드시 가져야 할 매개 변수 이름을 설정할 수 있습니다.\n옵션에 지정된 함수를 호출하려면 지정된 인자값으로 호출해야 합니다.",
  "rule.sast.q.cpp.85.example.0.dangerous": "라인 4: 옵션에 지정되어 있는 함수에서 지정된 인자값을 사용하지 않았습니다.",
  "rule.sast.q.cpp.85.example.0.safe": "라인 4: 옵션에 지정되어 있는 함수에서 지정된 인자값을 사용합니다.",
  "rule.sast.q.cpp.85.name": "누락된 필수 인자를 사용한 필수 라이브러리 함수 호출",
  "rule.sast.q.cpp.85.option.call_param_should_be_name.description": "반드시 사용해야 될 파라미터 이름과 인덱스를 설정합니다.",
  "rule.sast.q.cpp.85.option.call_param_should_be_name.name": "반드시 사용해야 될 파라미터 이름과 인덱스",
  "rule.sast.q.cpp.85.option.call_target.description": "호출 대상 함수명을 설정합니다.",
  "rule.sast.q.cpp.85.option.call_target.name": "호출 대상 함수",
  "rule.sast.q.cpp.85.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.sast.q.cpp.85.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.cpp.86.description": "누락된 필수 함수 호출 체커는 특정 함수를 호출할 때 지정된 함수를 쌍으로 호출하지 않은 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 대상 제외 함수, 검사 대상 호출 함수, 매개 변수 위치와 들어가야 할 문자열 패턴을 설정할 수 있습니다.\n옵션에서 지정된 함수를 호출할 때 반드시 옵션에 지정된 함수를 쌍으로 호출합니다.",
  "rule.sast.q.cpp.86.example.0.dangerous": "라인 8: LB_call_WLC_exit() 함수를 호출했습니다. 하지만 이후에 LB_call_WLC_need() 함수를 호출하지 않았습니다.",
  "rule.sast.q.cpp.86.example.0.safe": "라인 8: LB_call_WLC_exit() 함수를 호출했습니다.\n라인 11: LB_call_WLC_need() 함수를 호출합니다.",
  "rule.sast.q.cpp.86.name": "누락된 필수 함수 호출",
  "rule.sast.q.cpp.86.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.sast.q.cpp.86.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.cpp.86.option.function_target.description": "분석 대상 함수를 설정합니다.",
  "rule.sast.q.cpp.86.option.function_target.name": "분석 대상 함수",
  "rule.sast.q.cpp.86.option.function_used_set.description": "반드시 사용해야 될 함수와 함께 사용해야 할 함수를 설정합니다.",
  "rule.sast.q.cpp.86.option.function_used_set.name": "반드시 사용해야 될 함수와 함께 사용해야 할 함수 설정",
  "rule.sast.q.cpp.87.description": "malloc의 잘못된 사용 체커는 옵션에 지정된 메모리 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 여부, 분석 제외 함수, 금지할 함수를 설정할 수 있습니다.\n옵션에서 사용이 금지된 메모리 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.87.example.0.dangerous": "라인 6: memory() 함수를 정의했습니다.\n라인 7: 금지된 malloc_FB06() 함수를 호출했습니다.\n라인 8: 금지된 realloc_FB06() 함수를 호출했습니다.",
  "rule.sast.q.cpp.87.example.0.safe": "라인 6: 분석 제외 대상인 Function() 함수를 정의합니다.\n라인 7: 금지되지 않은 malloc() 함수를 호출합니다.\n라인 8: 금지되지 않은 realloc() 함수를 호출합니다.",
  "rule.sast.q.cpp.87.name": "malloc의 잘못된 사용",
  "rule.sast.q.cpp.87.option.file_target_excluded.description": "분석에서 제외되는 파일을 설정합니다.",
  "rule.sast.q.cpp.87.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.cpp.87.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.cpp.87.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.cpp.87.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.cpp.87.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.87.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.cpp.87.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.sast.q.cpp.89.description": "프로세스 API의 잘못된 사용 체커는 옵션에 지정된 프로세스 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 지정된 대로 사용이 금지된 프로세스 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.89.example.0.dangerous": "라인 3: terminate_process() 함수를 정의했습니다.\n라인 6: 금지된 fork_FB08() 함수를 호출했습니다.",
  "rule.sast.q.cpp.89.example.0.safe": "라인 3: 분석 제외 대상인 create_process() 함수를 정의합니다.\n라인 6: 금지되지 않은 fork() 함수를 호출합니다.",
  "rule.sast.q.cpp.89.name": "프로세스 API의 잘못된 사용",
  "rule.sast.q.cpp.89.option.file_target_excluded.description": "분석 대상에서 제외되는 파일 이름을 설정합니다.복수 설정이 가능하며, 각각의 설정에 일치하는 파일은 분석 대상에서 제외됩니다.",
  "rule.sast.q.cpp.89.option.file_target_excluded.name": "분석 대상에서 제외되는 파일 이름",
  "rule.sast.q.cpp.89.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.cpp.89.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.cpp.89.option.function_should_not_be_used.description": "만약, 설정에 일치하는 함수 호출이 있으면 결함으로 검출합니다.",
  "rule.sast.q.cpp.89.option.function_should_not_be_used.name": "반드시 사용되지 말아야하는 함수",
  "rule.sast.q.cpp.89.option.function_target_excluded.description": "분석 대상에서 제외되는 함수 이름을 설정합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 함수는 분석 대상에서 제외됩니다.",
  "rule.sast.q.cpp.89.option.function_target_excluded.name": "제외할 대상 함수",
  "rule.sast.q.cpp.90.description": "자원 API의 잘못된 사용 체커는 옵션에 지정된 리소스 제한 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 지정된 대로 사용이 금지된 리소스 제한 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.90.example.0.dangerous": "라인 6: resource_limit() 함수를 정의했습니다.\n라인 8: getrlimit_FB09() 함수를 호출했습니다.",
  "rule.sast.q.cpp.90.example.0.safe": "라인 6: 분석 제외 대상인 create_limit() 함수를 정의합니다.\n라인 8: 금지되지 않은 getrlimit() 함수를 호출합니다.",
  "rule.sast.q.cpp.90.name": "자원 API의 잘못된 사용",
  "rule.sast.q.cpp.90.option.file_target_excluded.description": "분석 대상에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.cpp.90.option.file_target_excluded.name": "분석 대상에서 제외되는 파일",
  "rule.sast.q.cpp.90.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.cpp.90.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.cpp.90.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.cpp.90.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.90.option.function_target_excluded.description": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.cpp.90.option.function_target_excluded.name": "분석 대상에서 제외되는 함수",
  "rule.sast.q.cpp.91.description": "신호 API의 잘못된 사용 체커는 옵션에 지정된 시그널 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 지정된 대로 사용이 금지된 시그널 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.91.example.0.dangerous": "라인 4: signal_handler() 함수를 정의했습니다.\n라인 5: signal_FB10() 함수를 호출했습니다.",
  "rule.sast.q.cpp.91.example.0.safe": "라인 4: 분석 제외 대상인 create_signal_handler() 함수를 정의합니다.\n라인 5: 금지되지 않은 signal() 함수를 호출합니다.",
  "rule.sast.q.cpp.91.name": "신호 API의 잘못된 사용",
  "rule.sast.q.cpp.91.option.file_target_excluded.description": "대상에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.cpp.91.option.file_target_excluded.name": "분석 대상에서 제외되는 파일",
  "rule.sast.q.cpp.91.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.cpp.91.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.cpp.91.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.cpp.91.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.91.option.function_target_excluded.description": "분석 대상에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.cpp.91.option.function_target_excluded.name": "분석 대상에서 제외되는 함수",
  "rule.sast.q.cpp.92.description": "TP API의 잘못된 사용 체커는 옵션에 지정된 TP(TMAX) 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 지정된 대로 사용이 금지된 TP(TMAX) 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.92.example.0.dangerous": "라인 4: terminate_tp() 함수를 정의했습니다.\n라인 6: tprecv_FB11() 함수를 호출했습니다.",
  "rule.sast.q.cpp.92.example.0.safe": "라인 4: 분석 제외 대상인 create_tp() 함수를 정의합니다.\n라인 5: 금지되지 않은 tprecv() 함수를 호출합니다.",
  "rule.sast.q.cpp.92.name": "TP API의 잘못된 사용",
  "rule.sast.q.cpp.92.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.cpp.92.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.cpp.92.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.cpp.92.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.cpp.92.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.cpp.92.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.92.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.cpp.92.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.sast.q.cpp.93.description": "임시 파일 관련 함수 사용 체커는 부적절한 방법으로 임시 파일을 생성하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 위험하여 사용을 금지하는 임시 파일 생성 라이브러리 함수를 설정할 수 있습니다.\n임시 파일의 이름을 공격자가 예측 가능한 이름으로 생성하거나 임의의 프로그램이 접근 가능한 권한으로 생성하면 공격자가 임시 파일의 내용을 조작하여 프로그램에 오동작을 일으킬 수 있습니다.\n임시 파일은 예측 불가능한 이름을 사용하고 프로그램이 단독으로 사용할 수 있도록 생성하는 것이 좋습니다.",
  "rule.sast.q.cpp.93.example.0.dangerous": "라인 3: make_temp() 함수를 정의했습니다.\n라인 5: mktemp_FB12() 함수를 호출했습니다.",
  "rule.sast.q.cpp.93.example.0.safe": "라인 3: 분석 제외 대상인 create_temp() 함수를 정의합니다.\n라인 5: 금지되지 않은 mktemp() 함수를 호출합니다.",
  "rule.sast.q.cpp.93.name": "임시 파일 관련 함수 사용",
  "rule.sast.q.cpp.93.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.cpp.93.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.cpp.93.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.cpp.93.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.cpp.93.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.cpp.93.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.93.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.cpp.93.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.sast.q.cpp.94.description": "타이머 API의 잘못된 사용 체커는 옵션에 지정된 타이머 관련 함수를 사용하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 헤더를 포함한 경우 분석 유무, 분석 제외 함수, 사용 금지 함수를 설정할 수 있습니다.\n옵션에서 사용이 금지된 타이머 관련 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.cpp.94.example.0.dangerous": "라인 2: set_sleep_func() 함수를 정의했습니다.\n라인 4: sleep_FB13() 함수를 호출했습니다.",
  "rule.sast.q.cpp.94.example.0.safe": "라인 2: 분석 제외 대상인 create_sleep_func() 함수를 정의합니다.\n라인 4: 금지되지 않은 sleep() 함수를 호출합니다.",
  "rule.sast.q.cpp.94.name": "타이머 API의 잘못된 사용",
  "rule.sast.q.cpp.94.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.cpp.94.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.cpp.94.option.file_target_have_include.description": "헤더를 포함한 경우만 대상으로 합니다. 복수 설정이 가능하며, 각각의 설정에 일치하는 파일이 포함하면 대상이 됩니다.",
  "rule.sast.q.cpp.94.option.file_target_have_include.name": "헤더를 포함한 경우만 분석",
  "rule.sast.q.cpp.94.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.cpp.94.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.94.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.cpp.94.option.function_target_excluded.name": "분석에서 제외되는 함수",
  "rule.sast.q.cpp.95.description": "printf 함수 사용 체커는 printf() 함수를 사용하는 코드를 검출합니다.\nprintf() 함수는 일반적으로 디버깅이나 오류를 확인하기 위해 사용합니다. 하지만 디버깅이나 오류의 내용이 노출되면 프로그램 또는 시스템 정보도 노출될 가능성이 있습니다.\nprintf() 함수를 사용하지 않습니다.",
  "rule.sast.q.cpp.95.example.0.dangerous": "라인 2: printf() 함수를 사용했습니다.",
  "rule.sast.q.cpp.95.example.0.safe": "라인 2: printf() 함수를 사용하여 메시지를 출력하지 않습니다.",
  "rule.sast.q.cpp.95.name": "printf 함수 사용",
  "rule.sast.q.cpp.96.description": "[] 연산자를 통한 배열 접근 체커는 배열 객체에 접근할 때 배열 연산자([])를 사용하는 코드를 검출합니다.\n배열 수식으로 배열에 직접 접근하는 경우 배열의 범위에서 벗어날 수 있습니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\n배열에 접근할 때 배열 수식 대신 포인터를 사용해야 합니다.",
  "rule.sast.q.cpp.96.example.0.dangerous": "라인 2: int 타입 배열 arr에 대해 배열 연산자([])를 사용하여 직접 배열의 원소에 접근했습니다.",
  "rule.sast.q.cpp.96.example.0.safe": "라인 2: 배열 연산자([])를 사용하여 직접 배열의 원소에 접근하는 대신, 포인터를 사용하여 접근하도록 합니다.",
  "rule.sast.q.cpp.96.name": "[] 연산자를 통한 배열 접근",
  "rule.sast.q.cpp.97.description": "fopen 함수 호출 전 umask 함수 사용 체커는 옵션에 지정된 함수의 호출 순서를 지키지 않는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 먼저 호출되어야 하는 함수, 이후 호출되어야 하는 함수를 설정할 수 있습니다.\n옵션에 지정된 함수 호출 순서를 따라야 합니다.",
  "rule.sast.q.cpp.97.example.0.dangerous": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 5: fopen_FBD16() 함수를 호출했습니다.\n라인 4: umask_FBD16() 함수를 fopen_FBD16() 이전에 호출했습니다.",
  "rule.sast.q.cpp.97.example.0.safe": "라인 3: 분석 대상인 Func() 함수를 정의했습니다.\n라인 4: fopen_FBD16() 함수를 호출합니다.\n라인 5: umask_FBD16() 함수를 호출합니다. 호출 순서를 준수합니다.",
  "rule.sast.q.cpp.97.name": "fopen 함수 호출 전 umask 함수 사용",
  "rule.sast.q.cpp.97.option.file_target_excluded.description": "분석에서 제외되는 파일명을 설정합니다.",
  "rule.sast.q.cpp.97.option.file_target_excluded.name": "분석에서 제외되는 파일",
  "rule.sast.q.cpp.97.option.function_should_not_be_used.description": "사용 금지 함수를 설정합니다.",
  "rule.sast.q.cpp.97.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.q.cpp.97.option.function_target.description": "분석 대상 함수명을 설정합니다.",
  "rule.sast.q.cpp.97.option.function_target.name": "분석 대상 함수",
  "rule.sast.q.cpp.97.option.function_target_begin_call_function.description": "분석을 시작할 특정 함수 호출을 설정합니다.",
  "rule.sast.q.cpp.97.option.function_target_begin_call_function.name": "분석을 시작할 특정 함수 호출",
  "rule.sast.q.cpp.97.option.function_target_excluded.description": "분석에서 제외되는 함수명을 설정합니다.",
  "rule.sast.q.cpp.97.option.function_target_excluded.name": "분석 제외되는 함수",
  "rule.sast.q.cpp.99.description": "구조체 멤버에 여러번 접근 체커는 옵션에 지정된 특정 구조체의 필드에 지정된 횟수를 초과하여 접근하는 코드를 검출합니다.\n옵션에서 분석 제외 대상 파일, 분석 대상 함수, 분석 제외 함수, 멤버 접근 횟수를 설정할 수 있습니다.\n구조체 필드에 접근하는 횟수가 옵션에 설정된 횟수를 초과하지 않도록 합니다.",
  "rule.sast.q.cpp.99.example.0.dangerous": "라인 10: obj 구조체의 a 필드에 세 번째 접근했습니다.",
  "rule.sast.q.cpp.99.example.0.safe": "라인 9: obj 구조체의 a 필드에 두 번째 접근했습니다. 더 이상 접근하지 않습니다.",
  "rule.sast.q.cpp.99.name": "구조체 멤버에 여러번 접근",
  "rule.sast.q.cpp.99.option.file_target_excluded.description": "제외 대상 파일을 설정합니다.",
  "rule.sast.q.cpp.99.option.file_target_excluded.name": "제외 대상 파일",
  "rule.sast.q.cpp.99.option.function_target.description": "대상 함수 이름을 설정합니다.",
  "rule.sast.q.cpp.99.option.function_target.name": "대상 함수",
  "rule.sast.q.cpp.99.option.function_target_excluded.description": "제외 대상 함수를 설정합니다.",
  "rule.sast.q.cpp.99.option.function_target_excluded.name": "제외 대상 함수",
  "rule.sast.q.cpp.99.option.member_assign_limit.description": "멤버에 대입하는 횟수를 제한합니다.",
  "rule.sast.q.cpp.99.option.member_assign_limit.name": "멤버 대입 제한",
  "rule.sast.q.cs.1006.description": "0으로 나누기 체커는 0으로 나누기를 수행하는 코드를 검출합니다.\n나누기는 0을 제수로 사용하는 것에 대해 정의되어 있지 않으므로 0으로 나누기 연산을 시도하면 CPU 수준에서 예외가 발생할 수 있습니다. 이로 인해 프로그램이 비정상적으로 종료되거나 DoS(Denial of Service)가 발생할 수 있습니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다.",
  "rule.sast.q.cs.1006.example.0.dangerous": "라인 6: 0으로 나누기를 수행합니다.",
  "rule.sast.q.cs.1006.example.0.safe": "라인 5: 나누는 수가 0인지 확인한 후 나눕니다.",
  "rule.sast.q.cs.1006.name": "0으로 나누기",
  "rule.sast.q.cs.1007.description": "널 역참조 체커는 널 상수나 널이 할당된 변수를 역참조하는 경우를 검출합니다.\n널일 수도 있는 값을 검사 없이 역참조하면 프로그램 실행 중에 NullReferenceException 예외가 발생합니다. 프로그램 실행이 비정상적으로 종료될 수 있습니다.\n공격자는 NullReferenceException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n널일 수도 있는 값은 반드시 널인지 확인한 후 사용합니다.",
  "rule.sast.q.cs.1007.example.0.dangerous": "라인 11: ToUpperCase()의 인자로 널이 주어질 경우 널 역참조가 발생합니다.",
  "rule.sast.q.cs.1007.example.0.safe": "라인 11: ToUpperCase()에서 인자 문자열을 사용하기 전에 널 검사를 합니다.",
  "rule.sast.q.cs.1007.name": "널 역참조",
  "rule.sast.q.cs.1008.description": "널 반환 값 역참조 체커는 반환된 널 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 함수의 경우 항상 널 확인을 수행하고 사용해야 합니다. 이렇게 하지 않을 경우, 프로그램이 멈출 수도 있습니다.\n공격자는 NullReferenceException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n널을 반환할 수 있는 함수는 항상 널 확인을 하고 사용합니다.",
  "rule.sast.q.cs.1008.example.0.dangerous": "라인 7: 널을 반환하는 함수의 반환 값을 널 검사를 수행하지 않고 사용했습니다.",
  "rule.sast.q.cs.1008.example.0.safe": "라인 7: 널을 반환하는 함수를 사용할 경우 널 검사를 수행한 후에 사용하도록 합니다.",
  "rule.sast.q.cs.1008.name": "널 반환 값 역참조",
  "rule.sast.q.cs.1010.description": "누락된 널 값 검사 체커는 널 여부를 확인한 적이 있는 값을 후 확인 없이 역참조하는 경우를 검출합니다.\n변수를 한 번이라도 널과 비교했다면 당시 개발자가 해당 지점에 도달하는 실행 경로에 따라 해당 변수에 널이 포함될 가능성이 있다고 판단했기 때문입니다. 그런데 같은 변수를 이후에는 널 확인 없이 역참조 했다면 작성자가 실수했을 가능성이 높기 때문에 검출합니다. 공격자는 NullReferenceException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다. 반대로 변수가 널이 아니라는 보장이 있다면 혼동을 줄이기 위해 일관적으로 해당 변수를 널 확인 없이 직접 사용해야 합니다.",
  "rule.sast.q.cs.1010.example.0.dangerous": "라인 6: ToUpper()를 호출한 시점에 변수 x에 대해 널 검사를 수행했지만, 메소드 ToString()를 호출한 시점에서는 널 검사를 수행하지 않았습니다. 이 경우에 널 역참조가 발생할 수 있습니다.",
  "rule.sast.q.cs.1010.example.0.safe": "라인 9: 메소드 ToString()을 호출하는 시점에도 널 검사를 수행합니다.",
  "rule.sast.q.cs.1010.name": "누락된 널 값 검사",
  "rule.sast.q.cs.1023.description": "Application.Exit 메소드 사용 체커는 Application.Exit()을 사용한 경우를 검출합니다.\n해당 메소드는 즉시 프로그램을 종료하기 때문에 Form.Closed 또는 Form.Closing 이벤트가 처리되지 않습니다. 이벤트 처리하지 못하고 프로그램이 종료되기 때문에 문제가 발생할 수 있습니다.\nApplication.Exit() 메소드를 사용하지 않습니다.",
  "rule.sast.q.cs.1023.example.0.dangerous": "라인 5: Application.Exit()를 사용했습니다.",
  "rule.sast.q.cs.1023.example.0.safe": "라인 6: Application.Exit()를 사용하지 않도록 합니다.",
  "rule.sast.q.cs.1023.name": "Application.exit 메소드 사용",
  "rule.sast.q.cs.1028.description": "IndexOf의 인자로 문자열 사용 체커는 IndexOf 메소드의 인자로 스트링 값을 사용할 때 검출합니다.\n단일 문자의 인덱스를 찾고자 하는 경우 IndexOf 메소드의 인자로 문자 값을 사용하는 것이 성능이 더 좋습니다.\n단일 문자의 인덱스를 찾고자 하는 경우 IndexOf 메소드의 인자로 문자 값을 사용합니다.",
  "rule.sast.q.cs.1028.example.0.dangerous": "라인 1: IndexOf의 인자로 문자열을 사용했습니다.",
  "rule.sast.q.cs.1028.example.0.safe": "라인 1: 문자열 대신 문자 값을 사용합니다.",
  "rule.sast.q.cs.1028.name": "IndexOf의 인자로 문자열 사용",
  "rule.sast.q.cs.1029.description": "Monitor.Pulse 사용 체커는 Monitor.Pulse()를 사용하는 경우를 검출합니다.\nMonitor.Pulse()는 어떤 스레드를 깨울 것인지 명확하지 않습니다.\nPulse() 대신 PulseAll()을 사용합니다.",
  "rule.sast.q.cs.1029.example.0.dangerous": "라인 1: Pulse() 메소드를 사용했습니다.",
  "rule.sast.q.cs.1029.example.0.safe": "라인 1: PulseAll() 메소드를 사용하도록 합니다.",
  "rule.sast.q.cs.1029.name": "Monitor.Pulse 사용",
  "rule.sast.q.cs.1624.description": "자원 누수 체커는 파일, 소켓 등 리소스를 할당한 후에 해제하지 않는 코드를 검출합니다.\n유한한 프로그램 리소스를 할당받았다면 더 이상 사용하지 않게 되었을 때 적절히 반환하여야 합니다. 만일 프로그램 오류 또는 오류나 프레임워크의 가비지 콜렉터에 의해 리소스가 빠르게 회수되지 않은 경우 리소스가 고갈되는 문제가 발생할 수 있습니다. 이러한 경우 시스템 성능이 저하되거나, 기능이 중단되거나, DoS(Denial of Service)가 발생하거나, 또 다른 리소스를 획득하는 데 실패할 수 있습니다.\n한 메소드 안에서 할당 받은 리소스는 그 메소드가 종료되기 전에 반드시 반환할 수 있도록 코드를 작성합니다. 특히 이런 리소스는 접근 도중 예외가 발생할 수 있는 경우가 많기 때문에 리소스가 사용되는 구간을 try 구문으로 감싸고 finally 블록에서 확실하게 반환하는 것이 좋습니다.",
  "rule.sast.q.cs.1624.example.0.dangerous": "라인 3: FileStream 리소스를 할당한 후 해제하지 않았습니다.",
  "rule.sast.q.cs.1624.example.0.safe": "라인 3: using 문을 사용해 리소스를 할당합니다. 그러면 문이 끝나는 지점에서 리소스가 자동으로 해제됩니다.",
  "rule.sast.q.cs.1624.name": "자원 누수",
  "rule.sast.q.cs.1637.description": "표준 라이브러리의 널 반환 값 역참조 체커는 C# 표준 라이브러리 메소드 중에서 널을 반환할 가능성이 있는 메소드의 반환 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 표준 라이브러리 메소드를 호출한 후 그 반환 값을 확인 없이 역참조하면 예외가 발생할 수 있습니다.\n공격자는 NullReferenceException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n널을 반환할 수 있는 표준 라이브러리 메소드의 반환 값은 항상 값 검사 후 사용합니다.",
  "rule.sast.q.cs.1637.example.0.dangerous": "라인 4: 위의 예제에서는 Request.QueryString 메소드에서 널을 반환할 수 있으므로, 해당 메소드의 반환 값을 사용하는 경우 널 역참조가 발생할 수 있습니다.",
  "rule.sast.q.cs.1637.example.0.safe": "라인 4: Request.QueryString의 결과값을 사용하기 전에 널 검사를 수행합니다.",
  "rule.sast.q.cs.1637.name": "표준 라이브러리의 널 반환 값 역참조",
  "rule.sast.q.cs.1842.description": "빈 finally 블록 체커는 finally 블록이 비어 있는 경우를 검출합니다.\nfinally 블록이 비어 있으면, 의도하지 않은 동작을 수행할 수 있습니다.\nfinally 블록을 사용하지 않거나, 사용하는 경우는 블록에 의미있는 내용을 작성합니다.",
  "rule.sast.q.cs.1842.example.0.dangerous": "라인 31: finally 구문이 선언되어 있지만 블록 내용이 비어 있습니다.",
  "rule.sast.q.cs.1842.example.0.safe": "라인 32: 의도한 코드로 finally 블록을 채웁니다.",
  "rule.sast.q.cs.1842.name": "빈 finally 블록",
  "rule.sast.q.cs.940.description": "금지된 인터페이스 사용 체커는 구현하지 않도록 지정한 인터페이스를 구현하는 경우를 검출합니다.\n구현을 금지할 인터페이스는 체커 옵션에서 지정할 수 있습니다.\n옵션에 기본 설정으로 구현이 금지되어 있는 ICloneable 인터페이스의 경우에는 MSDN에서 공식적으로 이 인터페이스를 구현하지 않을 것을 추천하고 있습니다. Clone() 메소드가 객체 내부의 정보를 어느 수준까지 깊이 복사해야 하는지 인터페이스에서 규정해주고 있지 않기 때문에 각 구현마다 복사 방식이 달라질 수 있고, 따라서 호출하는 측에서 이 메소드를 호출하면서 일관적이고 명확한 결과를 기대하기 어렵기 때문입니다. 이와 같이 특정 인터페이스는 디자인에 따라 정해진 몇몇 클래스에서만 구현하고 다른 곳에서는 구현 없이 활용하기만 하도록 의도되었을 수 있기 때문에 구현을 금지할 수 있습니다.\n구현하지 않도록 지정한 인터페이스를 구현하지 않습니다.",
  "rule.sast.q.cs.940.example.0.dangerous": "라인 1: 기본 설정에서 금지되어 있는 ICloneable 인터페이스를 상속 받았습니다.",
  "rule.sast.q.cs.940.example.0.safe": "라인 1: 금지된 인터페이스를 구현하지 않습니다",
  "rule.sast.q.cs.940.name": "금지된 인터페이스 사용",
  "rule.sast.q.cs.940.option.forbidden_interface.description": "금지된 인터페이스를 작성합니다.<br />예시) ICloneable",
  "rule.sast.q.cs.940.option.forbidden_interface.name": "금지 인터페이스",
  "rule.sast.q.cs.945.description": "누락된 Serializable 속성 체커는 ISerializable 인터페이스를 구현하지만 Serializable 속성을 선언하지 않은 클래스를 검출합니다.\nSerializable 속성을 선언하지 않으면 해당 클래스는 serialize되지 않습니다.\nSerializable 속성을 선언하지 않으면 의도하지 않은 동작을 수행할 수 있습니다.\nISerializable을 구현할 때는 Serializable 속성을 선언합니다.",
  "rule.sast.q.cs.945.example.0.dangerous": "라인 1: Serializable 속성을 선언하지 않았습니다.",
  "rule.sast.q.cs.945.example.0.safe": "라인 1: Serializable 속성을 선언합니다.",
  "rule.sast.q.cs.945.name": "누락된 Serializable 속성",
  "rule.sast.q.cs.946.description": "Equals 메소드를 통한 널 검사 체커는 Equals() 메소드를 사용하여 개체를 널과 비교하는 경우를 검출합니다. 해당 결과는 항상 거짓이 됩니다.\n결과가 항상 거짓이 되므로 의도하지 않은 동작을 수행할 수 있습니다.\nEquals() 메소드를 사용하여 다른 객체와 비교하거나, == 연산자를 사용하여 비교하도록 합니다.",
  "rule.sast.q.cs.946.example.0.dangerous": "라인 3: obj를 Equals() 메소드를 사용하여 널과 비교합니다.",
  "rule.sast.q.cs.946.example.0.safe": "라인 3: Equals 메소드를 사용하여 다른 객체와 비교하거나, == 연산자를 사용하여 널 검사를 합니다.",
  "rule.sast.q.cs.946.name": "Equals 메소드를 통한 널 검사",
  "rule.sast.q.cs.947.description": "하나만 정의된 GetHashCode 및 Equals 체커는 두 객체의 동일성을 비교하는 메소드와 해시 코드를 계산하는 메소드 중 어느 한 쪽만 오버라이딩으로 구현된 경우를 검출합니다.\nGetHashCode() 메소드와 Equals() 메소드의 구현 여부는 항상 일치해야 합니다.\n해시 코드를 계산하는 메소드를 제대로 오버라이딩하지 않으면 프로그램에 오동작이 발생할 가능성이 높습니다. 동일한 객체가 다른 해시 코드를 생성하거나 반대로 같은 해시 코드를 생성하는 객체가 실제로는 서로 다른 객체라면 모든 해시 기반의 자료 구조 클래스의 필드로 해시 계산 구현이 잘못된 클래스 객체를 추가할 때 자료 구조가 오동작할 수 있습니다.\n두 객체의 동일성을 비교하는 메소드와 해시 코드를 계산하는 메소드는 둘 모두를 오버라이딩하지 않거나 둘 모두를 오버라이딩하는 것이 좋습니다. 이때, 동일성 비교 메소드를 사용하여 비교했을 때 서로 같은 객체는 해시 코드 계산값도 서로 같아야 하고, 해시 코드 계산값이 서로 다른 객체는 동일성 비교 메소드로 비교했을 때 서로 다른 객체로 판정되도록 작성해야 합니다.",
  "rule.sast.q.cs.947.example.0.dangerous": "라인 2: GetHashCode만 override 되었습니다.",
  "rule.sast.q.cs.947.example.0.safe": "라인 5: Equals()도 함께 오버라이딩합니다.",
  "rule.sast.q.cs.947.name": "하나만 정의된 GetHashCode 및 Equals",
  "rule.sast.q.cs.948.description": "SqlClientPermission의 잘못된 사용 체커는 SqlClientPermission 생성자에 두 번째 인자가 있는 경우를 검출합니다.\nSqlClientPermission의 두 번째 인자는 빈 암호를 사용할 수 있는지 여부를 나타냅니다. 만약 해당 값이 참이라면 빈 암호를 사용할 수 있어 두 번째 인자를 아예 사용하지 않는 것이 안전합니다.\nSqlClientPermission 생성자의 두 번째 인자를 사용하지 않습니다.",
  "rule.sast.q.cs.948.example.0.dangerous": "라인 1: SqlClientPermission 생성자의 두 번째 인자를 사용했습니다.",
  "rule.sast.q.cs.948.example.0.safe": "라인 1: SqlClientPermission 생성자의 두 번째 인자를 사용하지 않도록 합니다.",
  "rule.sast.q.cs.948.name": "SqlClientPermission의 잘못된 사용",
  "rule.sast.q.cs.951.description": "하드코드된 파일 구분 문자 체커는 하드코딩된 파일 구분 문자를 사용하는 경우를 검출합니다.\n하드코딩된 파일 구분자를 사용하면 다른 플랫폼에서 실행해야 할 때 이식성 문제를 일으킬 수 있습니다.\n하드코딩된 파일 구분자 대신 언어에서 제공하는 파일 구분자를 사용하거나, 별도 변수로 정의해서 사용합니다.",
  "rule.sast.q.cs.951.example.0.dangerous": "라인 3: 하드코딩된 파일 구분자를 사용했습니다.",
  "rule.sast.q.cs.951.example.0.safe": "라인 3: 하드코딩된 파일 구분자 대신 언어에서 제공하는 파일 구분자를 사용하거나, 별도 변수로 정의해서 사용합니다.",
  "rule.sast.q.cs.951.name": "하드코드된 파일 구분 문자",
  "rule.sast.q.cs.951.option.file_separators.description": "하드코딩된 파일 구별자를 입력합니다.<br />예시) //",
  "rule.sast.q.cs.951.option.file_separators.name": "파일 구별자",
  "rule.sast.q.java.1647.description": "Android에서의 JavaScript 허용 체커는 WebSettings.setJavaScriptEnabled() 메소드를 사용하여 JavaScript 실행을 허용하는 경우를 검출합니다.\nJavaScript 실행이 허용되면 보안이 취약한 코드가 실행될 수 있습니다.\nWebSettings.setJavaScriptEnabled() 메소드를 호출하지 않습니다.",
  "rule.sast.q.java.1647.example.0.dangerous": "라인 12: JavaScript 실행이 가능하도록 setJavaScriptEnabled(true) 메소드가 호출되었습니다.",
  "rule.sast.q.java.1647.example.0.safe": "라인 12: JavaScript 실행을 허용하지 않도록 설정합니다. setJavaScriptEnabled() 메소드의 인자 값을 false로 설정하거나 해당 메소드를 아예 호출하지 않도록 합니다.",
  "rule.sast.q.java.1647.name": "Android에서의 JavaScript 허용",
  "rule.sast.q.java.1647.option.method_name.description": "Javascript를 WebView 클래스에서 허용할 수 있는 메소드 이름을 입력합니다.",
  "rule.sast.q.java.1647.option.method_name.name": "Javascript 허용 메소드",
  "rule.sast.q.java.1648.description": "Android에서의 URI 권한 부여 체커는 암시적 인텐트를 사용하면서 추가 권한을 부여하는 경우를 검출합니다.\n암시적 인텐트를 사용하면 외부에서 해당 인텐트를 가로챌 수 있습니다. 따라서 암시적 인텐트에 URI 접근 권한을 부여하는 것보다 명시적인 인텐트를 사용하는 것이 더 안전합니다.\naddFlags() 메소드와 setFlags() 메소드 등을 통해 암시적 인텐트에 권한을 부여하지 않습니다. 명시적 인텐트를 사용합니다.",
  "rule.sast.q.java.1648.example.0.dangerous": "라인 9: 외부에 노출 가능성이 있는 암시적 인텐트를 사용했습니다.",
  "rule.sast.q.java.1648.example.0.safe": "라인 9: 우선적으로 addFlags() 메소드 사용을 금지하며, 가능하다면 암시적 인텐트 대신 명시적 인텐트를 사용할 것을 권장합니다.",
  "rule.sast.q.java.1648.name": "Android에서의 URI 권한 부여",
  "rule.sast.q.java.1648.option.class_fqn.description": "Intent 클래스 이름을 입력합니다.",
  "rule.sast.q.java.1648.option.class_fqn.name": "Intent 클래스 이름",
  "rule.sast.q.java.1648.option.forbidden_flag.description": "Flag 로 사용해서는 안되는 금지 인자 값을 입력합니다.",
  "rule.sast.q.java.1648.option.forbidden_flag.name": "금지 인자 값",
  "rule.sast.q.java.1648.option.method_name.description": "addFlags 메소드 이름을 입력합니다.",
  "rule.sast.q.java.1648.option.method_name.name": "addFlags 메소드 이름",
  "rule.sast.q.java.1649.description": "Android에서의 인텐트 브로드캐스팅 체커는 Context.sendBroadcast() 메소드 호출을 검출합니다.\n전역 브로드캐스트를 통해 광역으로 인텐트를 전달하면 중요 정보가 다른 애플리케이션에 노출될 수 있습니다.\n인텐트는 앱 내부에서만 사용하는 것이 안전합니다.",
  "rule.sast.q.java.1649.example.0.dangerous": "라인 15: 외부로 인텐트가 전달될 수 있는 Service.sendBraodcast() 메소드를 호출했습니다.",
  "rule.sast.q.java.1649.example.0.safe": "라인 14: LocalBroadcastManager 클래스를 통해 앱 내부를 대상으로만 브로드캐스트를 사용하는 것이 가능합니다.",
  "rule.sast.q.java.1649.name": "Android에서의 인텐트 브로드캐스팅",
  "rule.sast.q.java.1649.option.check_only_method_name.description": "메소드 이름만 검사합니다",
  "rule.sast.q.java.1649.option.check_only_method_name.name": "메소드 이름만 검사",
  "rule.sast.q.java.1649.option.class_fqn.description": "Broadcast를 전달 가능한 클래스 이름을 입력합니다.",
  "rule.sast.q.java.1649.option.class_fqn.name": "Broadcast 가능한 클래스 이름",
  "rule.sast.q.java.1649.option.method_name.description": "Broadcast를 전달 가능한 메소드 이름을 입력합니다.",
  "rule.sast.q.java.1649.option.method_name.name": "sendBroadcast 메소드 이름",
  "rule.sast.q.java.1650.description": "Android에서 JavaScript 사용 체커는 addJavascriptInterface 메소드를 사용하는 코드를 검출합니다.\naddJavascriptInterface()를 사용하면 JavaScript로 Android 앱을 제어할 수 있게 됩니다. 이는 유용한 기능일 수 있지만 동시에 위험한 보안 문제가 될 수 있습니다. WebView에 포함된 HTML이 신뢰할 수 없는 HTML인 경우(예: HTML의 일부 또는 전체가 알 수 없는 사람이나 프로세스에 의해 제공된 경우) 공격자가 클라이언트 측 코드와 공격자가 선택한 모든 코드를 실행하는 HTML을 포함할 수 있습니다. 따라서 개발자는 WebView에 표시되는 HTML 및 JavaScript를 모두 작성한 경우가 아니면 addJavascriptInterface()를 사용해서는 안됩니다. 또한 사용자에게 WebView 내에서 개발자 소유가 아닌 다른 웹페이지로 이동하도록 허용해서는 안됩니다.\nAndroid에서 addJavascriptInterface()를 사용하지 않도록 합니다.",
  "rule.sast.q.java.1650.example.0.dangerous": "라인 18: 신뢰할 수 없는 HTML에 담긴 JavaScript를 WebView를 통해 실행시킬 수 있습니다.",
  "rule.sast.q.java.1650.example.0.safe": "라인 13: 개발자가 WebView에 표시되는 HTML 및 JavaScript를 모두 작성한 경우가 아니면 addJavascriptInterface()를 사용하지 않도록 합니다.",
  "rule.sast.q.java.1650.name": "Android에서 JavaScript 사용",
  "rule.sast.q.java.1650.option.class_fqn.description": "WebView 클래스 명을 작성합니다.",
  "rule.sast.q.java.1650.option.class_fqn.name": "WebView 클래스 이름",
  "rule.sast.q.java.1650.option.method_name.description": "addJavascriptInterface 메소드 이름을 작성합니다.",
  "rule.sast.q.java.1650.option.method_name.name": "addJavascriptInterface 메소드 이름",
  "rule.sast.q.java.1978.description": "Android에서의 클래스 로딩 하이재킹 체커는 외부 저장 장치로부터 달빅(Dalvik) 클래스 파일을 로드하는 경우를 검출합니다.\n신뢰할 수 없는 소스 또는 환경에서 클래스를 로드하면 애플리케이션이 공격자 대신 악의적인 명령을 실행할 수 있습니다. 외부 저장 장치는 접근 제어가 뚜렷이 되지 않으므로 공격자가 임의의 클래스 파일로 조작해둘 수 있다고 가정하는 것이 안전합니다.\n외부 저장 장치에서 클래스를 로드하지 않습니다.",
  "rule.sast.q.java.1978.example.0.dangerous": "라인 1: 외부 저장 장치 경로를 얻어냅니다.\n라인 2: 외부 저장 장치 경로에 있는 파일을 클래스로 로드합니다.",
  "rule.sast.q.java.1978.example.0.safe": "라인 2: 확인된 안전한 경로에 있는 파일만 로드합니다.",
  "rule.sast.q.java.1978.name": "Android에서의 클래스 로딩 하이재킹",
  "rule.sast.q.java.1978.option.alarm.name": "검출 규칙",
  "rule.sast.q.java.1978.option.exclude.name": "제외 규칙",
  "rule.sast.q.java.1978.option.propagator.name": "전파 규칙",
  "rule.sast.q.java.1978.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.q.java.1979.description": "절대 경로에 의한 Android에서의 클래스 로딩 하이재킹 체커는 상대 경로를 사용해 달빅(Dalvik) 클래스 파일을 로드하는 경우를 검출합니다.\n신뢰할 수 없는 소스 또는 환경에서 클래스를 로드하면 애플리케이션이 공격자 대신 악의적인 명령을 실행할 수 있습니다. 애플리케이션이 클래스를 로드하기 위해 검색하는 디렉토리의 이름을 공격자가 변경하여 자신이 제어권을 가진 디렉토리를 가리키도록 하여 악성 행위가 가능합니다.\njava.io.File.getAbsolutePath를 거친 절대 경로를 사용해야 합니다.",
  "rule.sast.q.java.1979.example.0.dangerous": "라인 3: 상대 경로일 수도 있는 파일 객체를 그대로 클래스 로드에 사용했습니다.",
  "rule.sast.q.java.1979.example.0.safe": "라인 3: 해당 인자로 항상 절대 경로를 전달합니다.",
  "rule.sast.q.java.1979.name": "절대 경로에 의한 Android에서의 클래스 로딩 하이재킹",
  "rule.sast.q.java.1979.option.alarm.name": "검출 규칙",
  "rule.sast.q.java.1979.option.exclude.name": "제외 규칙",
  "rule.sast.q.java.1979.option.propagator.name": "전파 규칙",
  "rule.sast.q.java.1979.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.q.java.1980.description": "Android에서의 권한 검사 무시 체커는 Context.checkCallingOrSelfPermission() 메소드 호출을 검출합니다.\n이 API 호출을 통해 필요한 권한이 없거나 권한이 전혀 없는 애플리케이션이 다른 애플리케이션의 권한을 사용하여 권한 검사를 우회할 수 잇습니다. 이로 인해 적절한 권한이 없는 악성 애플리케이션에 접근 권한을 부여할 수 있어 위험합니다.\n해당 메소드를 사용하지 않도록 합니다.",
  "rule.sast.q.java.1980.example.0.dangerous": "라인 2: checkCallingOrSelfPermission() 메소드를 사용하여 권한을 우회할 수 있습니다.",
  "rule.sast.q.java.1980.example.0.safe": "라인 2: 해당 API를 사용하지 않습니다.",
  "rule.sast.q.java.1980.name": "Android에서의 권한 검사 무시",
  "rule.sast.q.java.1980.option.check_only_method_name.description": "메소드 이름만 검사",
  "rule.sast.q.java.1980.option.check_only_method_name.name": "메소드 이름만 검사",
  "rule.sast.q.java.1980.option.method_name.description": "권한 검사 우회 메소드 리스트",
  "rule.sast.q.java.1980.option.method_name.name": "권한 검사 우회 메소드 리스트",
  "rule.sast.q.java.2041.description": "AWT 및 Swing 사용 제한 체커는 EJB 프로그램에서 AWT 및 Swing을 사용하는 경우를 검출합니다.\nEJB 규격에는 AWT 및 Swing을 사용하는 것을 금지하고 있습니다. 대부분의 서버에서는 애플리케이션, 키보드 및 디스플레이로 서버 시스템과 상호작용하는 것을 허용하지 않습니다.\nAWT와 Swing을 사용하지 않습니다.",
  "rule.sast.q.java.2041.example.0.dangerous": "라인 1: AWT 라이브러리를 사용했습니다.\n라인 2: Swing 라이브러리를 사용했습니다.",
  "rule.sast.q.java.2041.example.0.safe": "라인 1: 사용 금지된 라이브러리를 사용하지 않도록 합니다.",
  "rule.sast.q.java.2041.name": "AWT 및 Swing 사용 제한",
  "rule.sast.q.java.2042.description": "Java IO 사용 제한 체커는 EJB 프로그램에서 java.io 패키지를 사용하는 경우를 검출합니다.\nEJB 규격에는 java.io 패키지를 사용하는 것이 금지되어 있습니다.\njava.io 패키지를 사용하여 파일과 디렉토리에 접근 하지 말고, JDBC 같은 리소스 관리 API를 사용하여야 합니다.",
  "rule.sast.q.java.2042.example.0.dangerous": "라인 1: java.io 패키지의 클래스를 사용하고 있습니다.",
  "rule.sast.q.java.2042.example.0.safe": "라인 1: EJB에서 허용하는 다른 리소스 관리 API를 사용해야 합니다.",
  "rule.sast.q.java.2042.name": "Java IO 사용 제한",
  "rule.sast.q.java.2825.description": "Android 보안 경고 알림 체커는 onReceivedSslError() 메소드에서 handler.proceed() 메소드를 별도의 분기 처리 없이 호출하는 코드를 검출합니다.\nonReceivedSslError() 메소드 내에서 handler.proceed() 메소드를 별도의 분기문 없이 호출하는 경우를 검출합니다. handler.proceed() 메소드는 if 문 내에서 호출해야 합니다.\nAndroid 애플리케이션에 WebViewClient.onReceivedSslError 핸들러가 안전하지 않은 방식으로 구현되었습니다. 특히 해당 구현은 모든 SSL 인증서 확인 오류를 무시하여 앱을 중개인 공격에 취약하게 만듭니다. 공격자는 영향을 받은 WebView의 콘텐츠를 변경하고, 전송된 데이터(예: 로그인 사용자 인증 정보)를 읽고, JavaScript를 사용하여 앱 내부에서 코드를 실행할 수 있습니다.\nhandler.proceed() 메소드를 분기문 내에서 호출하도록 합니다.",
  "rule.sast.q.java.2825.example.0.dangerous": "라인 3: handler.proceed() 메소드가 onReceivedSslError() 메소드에서 별도의 분기문 처리 없이 호출됩니다.",
  "rule.sast.q.java.2825.example.0.safe": "라인 4: if 문 내에서 handler.proceed() 메소드가 호출됩니다.\n라인 8: else 문 내에서 handler.proceed() 메소드가 호출됩니다.",
  "rule.sast.q.java.2825.name": "Android 보안 경고 알림",
  "rule.sast.q.java.2833.description": "escapeXml 설정으로 인한 크로스 사이트 스크립팅 체커는 JSTL의 c:out 태그를 사용할 때 escapeXml 속성을 false로 지정하는 경우를 검출합니다.\nc:out 태그를 사용할 때 escapeXml 속성은 별도로 지정하지 않으면 true로 설정됩니다. 이 속성을 명시적으로 false로 설정하면 웹 페이지 출력 과정에서 HTML 태그 스크립트가 안전하게 변환되지 않고 그대로 출력되므로 크로스 사이트 스크립팅 취약점이 발생할 수 있습니다.\nescapeXml 속성은 true로 지정합니다.",
  "rule.sast.q.java.2833.example.0.dangerous": "라인 1: escapeXml 속성이 false로 지정되었습니다. value 속성으로 전달된 EL 식이 요청 매개변수를 참조하므로 외부 입력이 페이지에 그대로 노출될 수 있습니다.",
  "rule.sast.q.java.2833.example.0.safe": "라인 1: escapeXml 속성은 true로 지정합니다.\n라인 2: escapeXml 속성을 별도로 지정하지 않으면 기본값으로 true가 사용됩니다.",
  "rule.sast.q.java.2833.name": "escapeXml 설정으로 인한 크로스 사이트 스크립팅",
  "rule.sast.q.java.2975.description": "Android에서 브로드캐스터 권한 미설정 체커는 브로드캐스터에 리시버를 등록할 때 권한을 설정하지 않은 코드를 검출합니다.\nbroadcastPermission을 설정하지 않고 registerReceiver를 등록하는 것은 메시지를 지나치게 신뢰하는 좋지 않은 관행입니다. 메시지에 악성 데이터가 포함되어 있거나 메세지를 악성 브로드캐스터에서 전송한 경우 애플리케이션이 손상될 수 있습니다.\nregisterReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler, int flags) 또는 registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler) 를 사용하도록 합니다.",
  "rule.sast.q.java.2975.example.0.dangerous": "라인 13: 별도의 권한 없이 registerReceiver 함수를 사용합니다.",
  "rule.sast.q.java.2975.example.0.safe": "라인 15: registerReceiver 함수를 사용할 때 권한을 설정하세요.",
  "rule.sast.q.java.2975.name": "Android에서 브로드캐스터 권한 미설정",
  "rule.sast.q.java.2996.description": "Android 크로스 사이트 스크립트 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\nWebView 클래스의 loadUrl 함수에 외부에서 입력 받은 url를 전달할 경우, startsWith 함수 등을 사용하여 해당 url이 안전한지 확인한 후 사용합니다.",
  "rule.sast.q.java.2996.example.0.dangerous": "라인 1: 외부에서 입력 받은 값을 url 변수에 전달했습니다.\n라인 6: 외부에서 전달 받은 url을 loadUrl 함수의 매개변수로 사용했습니다.",
  "rule.sast.q.java.2996.example.0.safe": "라인 1: 외부에서 입력 받은 값을 url 변수에 저장합니다.\n라인 5: 외부에서 전달 받은 url의 값이 안전한지 확인한 후 사용합니다.",
  "rule.sast.q.java.2996.name": "Android 크로스 사이트 스크립트",
  "rule.sast.q.java.2996.option.alarm.name": "검출 규칙",
  "rule.sast.q.java.2996.option.exclude.name": "제외 규칙",
  "rule.sast.q.java.2996.option.propagator.name": "전파 규칙",
  "rule.sast.q.java.2996.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.q.java.389.description": "public static final 배열 사용 체커는 public static final 변경자가 지정된 배열 필드 선언을 검출합니다.\n요소가 하나라도 있는 배열은 항상 가변적입니다. 대부분 클래스의 필드 변수를 public static final로 선언하는 경우 이 필드의 내용물이 변하지 않을 것으로 가정하고 코드를 작성하므로 문제가 될 수 있습니다. 실제로는 해당 배열의 내용을 클라이언트가 조작할 수 있기 때문입니다. 이것은 종종 보안 상의 허점이 되기도 합니다.\n어떤 배열의 내용을 일정하게 유지하고 싶다면 private 변경자로 선언하고 외부에서 접근할 때에도 배열을 통째로 넘기지 않아야 합니다. 배열의 각 요소에만 개별적으로 접근할 수 있는 메소드를 제공하거나 배열의 복사본을 넘겨주도록 합니다.",
  "rule.sast.q.java.389.example.0.dangerous": "라인 2: 어떤 클래스에 예시의 EMPLOYEE_NAME과 같이 정적 public final 배열이 존재하면 위험합니다.",
  "rule.sast.q.java.389.example.0.safe": "라인 3: 해당 배열을 private으로 선언하고 필요할 때 복사본을 생성해주는 방식으로 사용하는 것이 좋습니다.",
  "rule.sast.q.java.389.name": "public static final 배열 사용",
  "rule.sast.q.java.391.description": "오버로딩된 equals 메소드 체커는 인자 타입을 java.lang.Object 대신 다른 타입으로 변경하여 정의한 equals() 메소드를 검출합니다.\n특별한 이유가 없다면, Object.equals() 메소드를 오버라이딩하지 않고 오버로딩하면 클래스 사용자가 직관적으로 이해하기 힘든 동작이 일어날 수 있습니다.\nequals() 메소드의 인자 타입으로는 java.lang.Object 만을 사용하도록 합니다. 실수로 equals() 메소드를 오버로딩하는 것을 방지하고자 한다면 @Override 라는 annotation을 메소드 선언 앞에 사용하는 방법이 있습니다. 그러면 실수했을 때 컴파일러가 컴파일 타임 오류를 발생시켜줄 것입니다.",
  "rule.sast.q.java.391.example.0.dangerous": "라인 1: 예시의 메소드 정의는 인자가 Object 타입인 Object.equals를 오버라이딩한것이 아니라 SomeClass 타입의 인자를 받는 equals 메소드를 오버로딩하고 있습니다.",
  "rule.sast.q.java.391.example.0.safe": "라인 1: 실수를 방지하기 위해 @Override를 명시하고 equals 메소드의 인자 타입을 Object로 지정합니다.",
  "rule.sast.q.java.391.name": "오버로딩된 equals 메소드",
  "rule.sast.q.java.392.description": "배열들 간의 equals 사용 체커는 두 비교 대상 객체가 배열 타입인 equals() 메소드 호출을 검출합니다.\n프로그램에서 객체의 equals() 메소드의 사용 방법을 모르고 사용함으로 인해서 발생하는 프로그래밍 상의 실수를 검증하기 위한 규칙입니다. 배열 타입은 Object 클래스의 equals() 메소드를 오버라이딩하지 않기 때문에 배열에 대해 equals() 메소드를 호출하면 주소 값들을 비교하는 것과 같은 결과가 나옵니다.\n두 배열의 내용이 동일한지 알고 싶다면 직접 배열의 내용을 상세히 비교하는 코드를 작성하거나 Arrays 클래스의 equals()를 사용하면 됩니다.",
  "rule.sast.q.java.392.example.0.dangerous": "라인 3: 두 배열을 equals() 메소드로 비교하고 있습니다.",
  "rule.sast.q.java.392.example.0.safe": "라인 2: Arrays 라이브러리 클래스가 제공하는 equals() 메소드를 사용하면 두 배열의 내용이 동일한지 확인할 수 있습니다.",
  "rule.sast.q.java.392.name": "배열들 간의 equals 사용",
  "rule.sast.q.java.393.description": "누락된 문자열 메소드 반환 값 검사 체커는 지정된 문자열 변환 메소드가 반환하는 값을 무시하는 호출을 검출합니다.\n문자열 클래스의 trim(), toLowerCase(), substring(), toString(), toUpperCase() 메소드가 검출 대상입니다.\n해당 메소드는 기존 문자열 객체의 내용을 수정해주는 것이 아니라 변환을 적용한 결과 생성되는 새로운 문자열 객체를 반환합니다. 따라서 이 메소드를 호출하고 그 반환 값을 사용하지 않으면 시간과 메모리만 소모할 뿐입니다. 이런 경우는 대부분 작성자의 실수이기 때문에 확인하고 수정할 수 있도록 검출합니다.\n메소드 호출식이 의도대로 사용되고 있는지 점검합니다. 불필요한 식이 편집 과정에서 삭제되지 않고 남아 있는 경우거나, 반환 값으로 더 해야 할 일을 하지 않았거나, 문자열 객체 자체가 변하지 않고 새 객체가 생긴다는 사실을 모르고 작성한 코드일 가능성이 있습니다.",
  "rule.sast.q.java.393.example.0.dangerous": "라인 2: substring 메소드를 호출했지만 반환 값을 아무 변수에도 저장하지 않고 있습니다.",
  "rule.sast.q.java.393.example.0.safe": "라인 2: substring 메소드의 반환 값을 다른 변수에 저장합니다.",
  "rule.sast.q.java.393.name": "누락된 문자열 메소드 반환 값 검사",
  "rule.sast.q.java.395.description": "연결의 직접 관리 체커는 J2EE 프로그램에서 연결을 직접 관리하는 DriverManager.getConnection() 메소드를 호출할 경우를 검출합니다.\nJ2EE API의 일부는 취약한 API로써, 이러한 API는 보안 상 금지된 함수이거나, 부주의하게 사용될 가능성이 많은 API를 의미합니다. 이들 범주의 API에 대해 확인하지 않고 사용할 때 보안 문제를 발생시킬 수 있습니다. 또한 보안 상 문제가 없다 하더라도 잘못된 방식으로 함수를 사용할 때도 역시 보안 문제를 발생 시킬 수 있습니다.\n연결을 관리해주는 다른 메소드를 사용합니다.",
  "rule.sast.q.java.395.example.0.dangerous": "라인 5: DriverManager.getConnection() 메소드가 호출되었습니다. J2EE 서블릿에서 리소스에 대한 연결을 직접 얻습니다.",
  "rule.sast.q.java.395.example.0.safe": "라인 8: 연결을 관리해주는 다른 메소드를 사용합니다. 이와 같이 리소스 관리 기능을 사용하여 DB에 연결해야 합니다.",
  "rule.sast.q.java.395.name": "연결의 직접 관리",
  "rule.sast.q.java.396.description": "소켓의 직접 사용 체커는 J2EE 프로그램에서 java.net.Socket 클래스를 통해 소켓을 직접 사용하는 경우를 검출합니다.\nJ2EE 표준은 레거시 시스템에서 고수준의 통신 프로토콜이 지원되지 않을 경우에 한해서만 소켓을 사용하도록 허용하고 있습니다. 소켓을 직접적으로 사용하게 되면, in-band vs. out-of-band signaling, 프로토콜 버전 호환성, 채널 보안, 오류 핸들링, 네트워크 제약 조건, 세션 관리 등 여러 가지 어려운 보안 문제들을 직접 처리해야 합니다. 이러한 모든 문제들을 처리하기는 쉬운 것이 아니며, 공격받을 가능성이 증가하게 됩니다.\n소켓을 관리해주는 다른 메소드를 사용합니다.",
  "rule.sast.q.java.396.example.0.dangerous": "라인 8: doGet() 메소드에서 Socket이 직접 사용되고 있습니다.",
  "rule.sast.q.java.396.example.0.safe": "라인 9: Socket을 직접 생성하는 대신 다른 라이브러리 함수를 사용합니다.",
  "rule.sast.q.java.396.name": "소켓의 직접 사용",
  "rule.sast.q.java.397.description": "데이터베이스 연결 경쟁 조건 체커는 데이터베이스 연결 객체를 정적으로 선언한 경우를 검출합니다.\njava.sql.Connection 타입의 객체가 데이터베이스 연결 객체로 간주됩니다.\n트랜잭션 리소스 객체(예: JDBC Connection 객체)는 정적 필드에 저장되어서는 안됩니다. 이러한 객체는 오직 한 번에 한 트랜잭션과 연관될 수 있는데, 정적 필드에 이들을 저장하면 서로 다른 트랜잭션에서 스레드들간의 잘못된 공유가 일어날 수 있습니다. 따라서 Database Connection 객체를 다룰 때에는 정적을 사용하지 않도록 합니다. 다중 스레드 프로그램에서 여러 스레드가 정적 필드에 저장된 트랜잭션 리소스에 동시에 접근할 경우 경쟁 조건이 발생하여 원인을 찾기 어려운 오작동을 일으킬 수 있습니다.\n해당 객체는 인스턴스 필드에 저장하는 것이 좋습니다.",
  "rule.sast.q.java.397.example.0.dangerous": "라인 2: 데이터베이스 연결 객체가 정적 필드에 저장되었습니다.",
  "rule.sast.q.java.397.example.0.safe": "라인 2: 데이터베이스 연결 객체를 정적 필드에 저장하지 않도록 합니다.",
  "rule.sast.q.java.397.name": "데이터베이스 연결 경쟁 조건",
  "rule.sast.q.java.404.description": "자원 누수 체커는 파일, 소켓 등 리소스를 할당한 후에 해제하지 않는 코드를 검출합니다.\n유한한 프로그램 리소스를 할당받았다면 더 이상 사용하지 않게 되었을 때 적절히 반환하여야 합니다. 만일 프로그램 오류 또는 오류나 JVM의 가비지 콜렉터에 의해 리소스가 빠르게 회수되지 않은 경우 리소스가 고갈되는 문제가 발생할 수 있습니다. 이러한 경우 시스템 성능이 저하되거나, 기능이 중단되거나, DoS(Denial of Service)가 발생하거나, 또 다른 리소스를 획득하는 데 실패할 수 있습니다.\n한 메소드 안에서 할당 받은 리소스는 그 메소드가 종료되기 전에 반드시 반환할 수 있도록 코드를 작성합니다. 특히 이런 리소스는 접근 도중 예외가 발생할 수 있는 경우가 많기 때문에 리소스가 사용되는 구간을 try 구문으로 감싸고 finally 블록에서 확실하게 반환하는 것이 좋습니다.",
  "rule.sast.q.java.404.example.0.dangerous": "라인 4: 리소스를 할당받고 나서 예외가 발생할 경우 리소스가 해제되지 않습니다.",
  "rule.sast.q.java.404.example.0.safe": "라인 5: try-with-resources을 사용하여 자원 누수를 방지했습니다.",
  "rule.sast.q.java.404.name": "자원 누수",
  "rule.sast.q.java.405.description": "0으로 나누기 체커는 0으로 나누기를 수행하는 코드를 검출합니다.\n나누기는 0을 제수로 사용하는 것에 대해 정의되어 있지 않으므로 0으로 나누기 연산을 시도하면 CPU 수준에서 예외가 발생할 수 있습니다. 이로 인해 프로그램이 비정상적으로 종료되거나 DoS(Denial of Service)가 발생할 수 있습니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다.",
  "rule.sast.q.java.405.example.0.dangerous": "라인 3: 입력값의 유효성을 검증하지 않았기 때문에 나누는 값이 0이 될 수 있습니다.",
  "rule.sast.q.java.405.example.0.safe": "라인 4: 0으로 나누기를 발생시키지 않기 위해 나누는 값이 0인지를 검사합니다.\n라인 6: 나누는 수가 0인 경우 오류 메시지를 출력하고 ArithmeticException 예외를 던집니다.",
  "rule.sast.q.java.405.name": "0으로 나누기",
  "rule.sast.q.java.406.description": "널 역참조 체커는 널 상수나 널이 할당된 변수를 역참조하는 경우를 검출합니다.\n널일 수도 있는 값을 검사 없이 역참조하면 프로그램 실행 중에 NullPointerException 예외가 발생합니다. 프로그램 실행이 비정상적으로 종료될 수 있습니다.\n공격자는 NullPointerException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다.",
  "rule.sast.q.java.406.example.0.dangerous": "라인 3: toUpperCase() 메소드에 널 값을 전달합니다.\n라인 6: 인자를 확인 없이 역참조합니다.",
  "rule.sast.q.java.406.example.0.safe": "라인 6: 널 역참조가 발생하지 않도록 검사를 수행한 후에 변수를 사용하도록 합니다.",
  "rule.sast.q.java.406.name": "널 역참조",
  "rule.sast.q.java.407.description": "널 반환 값 역참조 체커는 반환된 널 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 메소드를 호출한 후 그 반환 값을 확인 없이 역참조하면 예외가 발생할 수 있습니다.\n공격자는 NullPointerException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n널을 반환할 수 있는 메소드의 반환 값은 항상 값 검사 후 사용합니다.",
  "rule.sast.q.java.407.example.0.dangerous": "라인 2: return널() 메소드는 널 값을 반환합니다.\n라인 4: return널() 메소드의 반환값을 확인 없이 직접 역참조합니다.",
  "rule.sast.q.java.407.example.0.safe": "라인 5: 널을 반환하는 메소드를 호출한 경우 그 반환 값을 사용하기 전에 널 검사를 수행합니다.",
  "rule.sast.q.java.407.name": "널 반환 값 역참조",
  "rule.sast.q.java.409.description": "누락된 널 값 검사 체커는 널 여부를 확인한 적이 있는 값을 후 확인 없이 역참조하는 경우를 검출합니다.\n변수를 한 번이라도 널과 비교했다면 당시 개발자가 해당 지점에 도달하는 실행 경로에 따라 해당 변수에 널이 포함될 가능성이 있다고 판단했기 때문입니다. 그런데 같은 변수를 이후에는 널 확인 없이 역참조 했다면 작성자가 실수했을 가능성이 높기 때문에 검출합니다. 공격자는 NullPointerException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다. 반대로 변수가 널이 아니라는 보장이 있다면 혼동을 줄이기 위해 일관적으로 해당 변수를 널 확인 없이 직접 사용해야 합니다.",
  "rule.sast.q.java.409.example.0.dangerous": "라인 5: 변수 x를 널과 비교하고 있습니다.\n라인 8: 한 번 널과 비교했던 변수 x를 이번에는 검사 없이 사용했습니다.",
  "rule.sast.q.java.409.example.0.safe": "라인 9: 널일 가능성이 있는 변수는 항상 검사 후에 역참조합니다.",
  "rule.sast.q.java.409.name": "누락된 널 값 검사",
  "rule.sast.q.java.417.description": "누락된 부모 클래스 메소드 호출 체커는 부모 클래스의 메소드를 호출해야 하는데 빠뜨린 메소드 오버라이딩 정의를 검출합니다.\n여러 자식 클래스에서 오버라이딩되는 어떤 클래스의 메소드에 대해, 이를 오버라이딩하는 대부분의 메소드들이 부모 클래스의 메소드를 호출하는데 어떤 오버라이딩 메소드에서는 부모 클래스의 메소드를 호출하지 않는 경우에 경고를 냅니다. 부모 클래스의 메소드를 호출하는 메소드의 개수를 A, 호출하지 않는 메소드의 개수를 B라고 할 때, A / (A + B) * 100 >= 65% (Threshold = 0.65)를 만족하는 것이 검출 기준입니다. 기본적으로 Threshold 값은 0.65 로 설정되어 있습니다. 다만, 아래와 같은 경우에는 Threshold 값에 상관 없이 경고를 냅니다. - Object.clone()을 오버라이딩할 때 super.clone() 호출이 존재하지 않는 경우 - Object.finalize()를 호출할 때 super.finalize() 호출이 존재하지 않는 경우 특정 메소드에 대해서 이 경고를 내고 싶지 않을 경우에는 해당 메소드 리스트들을 white list에 등록해 두면 경고가 출력되지 않습니다.\n오버라이딩한 자식 클래스의 메소드에서 부모 클래스의 메소드 호출 여부를 일관성 있게 유지합니다.",
  "rule.sast.q.java.417.example.0.dangerous": "라인 3: clone 메소드가 super의 clone을 호출하지 않습니다.\n라인 36: CallSuperImplTest 클래스에는 4개의 자식 클래스가 존재하는데, 이 중 3개의 자식 클래스가 foo를 오버라이딩할 때 super의 foo를 호출하지만 Daisy 클래스에서는 super의 foo를 호출하지 않습니다.",
  "rule.sast.q.java.417.example.0.safe": "라인 4: clone 메소드는 일반적으로 super의 clone 메소드를 호출해야 합니다.\n라인 36: CallSuperImplTest 클래스의 자식 클래스들이 대부분 foo 메소드를 오버라이딩할 때 super의 foo를 호출하므로 Daisy 클래스에서도 이에 맞추어 라인 36과 같이 super의 foo 메소드를 호출합니다.",
  "rule.sast.q.java.417.name": "누락된 부모 클래스 메소드 호출",
  "rule.sast.q.java.419.description": "compareTo 내에서 변할 수 있는 필드 사용 체커는 Comparable.compareTo() 메소드를 오버라이딩 정의할 때 변경될 수 있는 필드들이 사용된 경우를 검출합니다.\n객체를 Collection에 정렬하여 저장하기 위한 목적으로 Comparable.compareTo() 메소드를 오버라이딩할 경우, final이 아닌 필드들이나 변경될 수 있는 필드들이 계산에 사용되면 올바른 비교가 될 수 없습니다.\n객체 내에서 변치 않는 값만을 활용하여 결과를 계산합니다.",
  "rule.sast.q.java.419.example.0.dangerous": "라인 2: SortedSet은 객체를 삽입하는 시점에서 compareTo 메소드를 사용해 객체 간의 순서를 결정합니다.\n라인 8: 이미 객체가 삽입된 상태에서 객체의 순서를 결정하는 필드 값이 달라질 수 있다면 정렬이 흐트러져 예상과 다른 동작을 할 수 있습니다.",
  "rule.sast.q.java.419.example.0.safe": "라인 3: 객체 간의 순서를 compareTo 메소드를 사용해 결정할 수 있다면 이 순서는 객체 안에서 변하지 않는 값을 통해 결정되어야 합니다.",
  "rule.sast.q.java.419.name": "compareTo 내에서 변할 수 있는 필드 사용",
  "rule.sast.q.java.420.description": "hashCode 내에서 변할 수 있는 필드 사용 체커는 Object.hashCode() 메소드를 오버라이딩 정의할 때 변경될 수 있는 필드들이 사용된 경우를 검출합니다.\nObject.hashCode() 메소드를 오버라이딩하는 메소드가 final 이 아닌 필드 값을 읽을 때 경고를 냅니다. 예외적으로 final이 아닌 필드라 해도 초기화된 이후에 한 번도 값이 변하지 않았다면 final 필드로 간주할 수 있습니다.\nhashCode() 메소드를 구현할 때는 객체 생성 이후로 변하지 않을 값만 사용해서 해시값을 계산해야 합니다.",
  "rule.sast.q.java.420.example.0.dangerous": "라인 16: BadHash 클래스의 mutable 필드 변수는 객체 생성 후 값이 변할 수 있는데, hashCode 메소드에서 이 필드를 참조하여 해시를 생성하고 있습니다.",
  "rule.sast.q.java.420.example.0.safe": "라인 11: inferredFianl field의 경우 초기화 후 새로운 값이 쓰여지지 않기 때문에 MUTABLE_HASHCODE 경고를 발생시키지 않습니다.",
  "rule.sast.q.java.420.name": "hashCode 내에서 변할 수 있는 필드 사용",
  "rule.sast.q.java.423.description": "표준 라이브러리의 널 반환 값 역참조 체커는 Java 표준 라이브러리 메소드중에서 널을 반환할 가능성이 있는 메소드의 반환 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 표준 라이브러리 메소드를 호출한 후 그 반환 값을 확인 없이 역참조하면 예외가 발생할 수 있습니다.\n공격자는 NullPointerException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n널을 반환할 수 있는 표준 라이브러리 메소드의 반환 값은 항상 값 검사 후 사용합니다.",
  "rule.sast.q.java.423.example.0.dangerous": "라인 6: java.io.BufferedReader 클래스의 readline() 메소드의 반환 값은 널일 가능성이 있습니다. 만약 널이 반환되었다면 이를 사용한 toUpperCase() 메소드가 호출될 널 역참조가 발생합니다.",
  "rule.sast.q.java.423.example.0.safe": "라인 7: readLine() 메소드의 반환 값이 널이 아닌지 확인 후에 사용해야 합니다.",
  "rule.sast.q.java.423.name": "표준 라이브러리의 널 반환 값 역참조",
  "rule.sast.q.java.662.description": "부적절한 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.\n최상위 예외 클래스인 Throwable 혹은 Exception 등을 직접 잡는 것을 포괄적 예외 처리로 볼 수 있습니다.\n지나치게 일반적인 예외 처리를 하게 되면 특별히 처리해야 하는 개별 예외를 적절히 처리하지 못할 뿐 아니라 이 지점에서 논리적으로 발생해서는 안되는 예외까지 처리하게 됩니다. 이러한 경우에 개발 및 검수 과정에서 발견되었어야 하는 설계 및 구현 상 결함이 발견되지 못한 채 배포 단계로 넘어가서 더 큰 문제의 원인이 될 수 있습니다.\n해당 코드 구역에서 발생할 수 있는 세부적인 예외들을 명시적으로 나눠서 처리하는 것이 좋습니다. 일반적인 예외를 처리하더라도 예측 가능한 세부적인 예외들을 먼저 처리한 후 마지막에 처리하도록 합니다. 이렇게 작성했을 때 실행 흐름이 일반적인 예외 처리 부분에 도달했다면 개발 과정에서 예측하지 못한 예외가 발생한 것이므로 조용히 넘어가지 않고 상황에 대한 상세한 기록을 남겨서 추후 결함을 수정할 수 있도록 합니다.",
  "rule.sast.q.java.662.example.0.dangerous": "라인 5: 파일 관련 API를 사용하면서 발생 가능한 세부 입출력 예외 대신 포괄적인 Exception 예외를 처리하고 있습니다.",
  "rule.sast.q.java.662.example.0.safe": "라인 7: 실제 발생 가능한 입출력 예외들을 명시적으로 처리합니다.",
  "rule.sast.q.java.662.name": "부적절한 예외 처리",
  "rule.sast.q.java.662.option.check_all_catch_exceptions.description": "체크하지 않을 때 단일 catch 문에서 'Exception' 클래스만 사용했을 경우를 검사합니다.",
  "rule.sast.q.java.662.option.check_all_catch_exceptions.name": "단일 catch 문 검사",
  "rule.sast.q.java.662.option.check_all_method_calls.description": "옵션을 사용하는 경우, 모든 제외 메소드가 catch 문 내에서 호출되어야 이슈가 발생하지 않습니다.",
  "rule.sast.q.java.662.option.check_all_method_calls.name": "모든 제외 메소드 호출 여부",
  "rule.sast.q.java.662.option.excluded_call_name.description": "검사에서 제외할 메소드 이름을 입력합니다.<br /><i>예시)</i> getAnonymousLogger",
  "rule.sast.q.java.662.option.excluded_call_name.name": "제외 메소드",
  "rule.sast.q.java.662.option.excluded_class_type.description": "검사에서 제외할 메소드 타입 이름을 입력합니다.<br /><i>예시)</i> java.util.logging.Logger",
  "rule.sast.q.java.662.option.excluded_class_type.name": "제외 클래스 타입",
  "rule.sast.q.java.663.description": "잘못된 serialPersistentFields 필드 한정자 체커는 private static final로 선언하지 않은 serialPersistentFields 필드를 검출합니다.\npublic으로 선언하여 공유하면 정확성을 해칠 수 있습니다.\n해당 필드의 한정자를 private static final로 지정합니다.",
  "rule.sast.q.java.663.example.0.dangerous": "라인 3: serialPersistentFields가 public으로 선언되었습니다.",
  "rule.sast.q.java.663.example.0.safe": "라인 3: serialPersistentField 필드 선언에는 private, static, final 한정자를 부여해야 합니다.",
  "rule.sast.q.java.663.name": "잘못된 serialPersistentFields 필드 한정자",
  "rule.sast.q.java.664.description": "오버라이딩 중 누락된 동기화 체커는 synchronized 한정자를 가진 메소드를 오버라이딩할 때 synchonized로 선언하지 않는 경우를 검출합니다.\n상위 클래스에서 synchronized 한정자로 동기화된 메소드는 하위 클래스에서 재정의를 하지 않거나, 재정의해야 하는 경우 기존과 동일하게 동기화된 메소드로 정의해야 합니다.",
  "rule.sast.q.java.664.example.0.dangerous": "라인 2: myClass의 synchronizedMethod 메소드는 synchronized로 선언되어 있습니다.\n라인 8: Foo에서는 synchronized 키워드 없이 synchronizedMethod를 오버라이딩합니다.",
  "rule.sast.q.java.664.example.0.safe": "라인 7: 자식 클래스에서 메소드를 오버라이딩할 때에도 synchronized 키워드를 유지시켜줘야 합니다.",
  "rule.sast.q.java.664.name": "오버라이딩 중 누락된 동기화",
  "rule.sast.q.java.7288.description": "synchronized 블럭 내부에 코드 미작성 체커는 sychronized 구문이 비어있는 코드를 검출합니다.\nsychronized 구문은 동기화하기 위해 사용하지만 구문이 비어있으면 동기화할 대상이 없기 때문에 빈 구문도 불필요합니다. \n구문이 비어있으면 비어있는 synchronized 구문을 제거하거나, 내부에 적절한 동기화 코드를 작성하세요.",
  "rule.sast.q.java.7288.example.0.dangerous": "라인 4: synchronized 구문이 비어있습니다.",
  "rule.sast.q.java.7288.example.0.safe": "라인 4: synchronized 이 불필요할 경우 작성을 하지 않도록 합니다.\n라인 10: synchronized 구문이 필요한 경우 적절한 코드를 구현하도록 합니다.",
  "rule.sast.q.java.7288.name": "synchronized 블럭 내부에 코드 미작성",
  "rule.sast.q.java.738.description": "중복 검사된 잠금 체커는 불필요하게 잠금을 여러 번 검사하는 경우를 검출합니다.\n잠금 중복 검사(double-check locking)는 프로그램의 효율성을 높이려는 의도로 사용되지만 실제로는 의도대로 동작하지 않습니다. 특정 리소스가 할당되었을 경우만 작업을 수행하도록 두 번에 걸쳐 검사를 시도한다 해도 원하는 리소스가 할당되었다는 보장을 받는 것은 불가능합니다. 따라서 특정 리소스 할당을 완벽히 보장받기를 원할 경우 메소드를 동기화해야 합니다.\n불필요한 검사를 반복하는 대신 원하는 코드 영역 전체가 제대로 동기화되도록 코드를 작성합니다.",
  "rule.sast.q.java.738.example.0.dangerous": "라인 4: 하나의 helper 객체만 할당될 수 있도록 코드가 작성되어 있습니다.\n라인 6: helper 변수의 값을 두 번 체크하는 방식으로 불필요한 동기화를 피하면서 스레드 안전성을 보장하는 것처럼 보입니다. 하지만 자바에서는 객체 참조 주소를 할당하고 생성자를 호출하므로, helper 객체가 완전하게 초기화되지 않은 상태에서 사용되는 경우가 발생할 수 있습니다.",
  "rule.sast.q.java.738.example.0.safe": "라인 3: 의도에 따라 작동하게 하려면 메소드 전체에 대해 동기화를 하도록 설정합니다.",
  "rule.sast.q.java.738.name": "중복 검사된 잠금",
  "rule.sast.q.java.739.description": "EJB에서의 서버 소켓 사용 체커는 EJB 프로그램에서 bean 내부에서 서버 소켓(ServerSocket)을 직접 사용하여 클라이언트에 서비스를 제공하는 경우를 검출합니다.\nEnterprise JavaBeans(EJB) 규격에는 bean 내부에서 서버 소켓(ServerSocket)을 직접 사용하여 클라이언트에 서비스를 제공하는 것을 금지하고 있습니다. EJB 컨테이너 내의 bean은 모두 EJB 클라이언트에 대해서 네트워크 서버 형태로 서비스를 제공하도록 설계되어 있는데 bean 내에서 다시 ServerSocket을 생성할 경우 구조적인 혼동을 일으킬 수 있기 때문입니다.\nEJB 규격에 맞는 방식을 사용합니다.",
  "rule.sast.q.java.739.example.0.dangerous": "라인 2: EJB 프로그램에서 서버 소켓을 사용하고 있습니다.",
  "rule.sast.q.java.739.example.0.safe": "라인 3: EJB 프로그램에서 서버 소켓을 사용하지 않도록 합니다.",
  "rule.sast.q.java.739.name": "EJB에서의 서버 소켓 사용",
  "rule.sast.q.java.748.description": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.\n프로그램이 무한 재귀 호출 상태에 빠지면 대부분 메모리나 스택 등의 리소스를 계속해서 할당받기 때문에 성능 저하 및 의도하지 않은 프로그램 종료를 일으킬 수 있습니다. 정적 분석을 통해서 무한 재귀 호출 혹은 무한 루프를 사전에 완벽하게 예방하는 것은 이론적으로 불가능합니다. 따라서 이 체커는 대표적인 특정 패턴이나 간단한 경우에 대해서만 검사가 가능합니다.\n재귀 호출 구문을 올바른 제어 구문 아래에 둡니다. 재귀 호출의 종료 조건을 제대로 지정할 자신이 없다면 같은 기능을 재귀 호출 대신 반복문을 사용해 작성하는 것을 고려해보는 것도 좋습니다.",
  "rule.sast.q.java.748.example.0.dangerous": "라인 5: 재귀적으로 정의되는 함수에서 재귀 호출이 조건문이나 반복문 블록 외부에서 일어나면 대부분 무한 재귀 호출을 발생시킵니다.",
  "rule.sast.q.java.748.example.0.safe": "라인 8: 모든 재귀 호출은 조건문이나 반복문 블록 안에서 이루어져야 합니다.",
  "rule.sast.q.java.748.name": "무한 재귀 호출",
  "rule.sast.q.java.751.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.q.java.751.example.0.dangerous": "라인 8: catch 블록에서 예외를 잡지만 아무런 조치를 취하지 않습니다.\n라인 10: catch 블록에서 예외를 잡지만 아무런 조치를 취하지 않습니다.",
  "rule.sast.q.java.751.example.0.safe": "라인 10: 예외를 잡은 후 각각의 예외에 대해 적절한 처리 작업을 수행해야 합니다.\n라인 17: 예외를 잡은 후 각각의 예외에 대해 적절한 처리 작업을 수행해야 합니다.",
  "rule.sast.q.java.751.name": "빈 catch 블록",
  "rule.sast.q.java.751.option.ignore_close_only.description": "옵션을 사용하는 경우, try 블록 내 'close' 메소드가 존재한다면 catch 블록이 비어있어도 이슈를 검출하지 않습니다.",
  "rule.sast.q.java.751.option.ignore_close_only.name": "try 내 close 메소드 무시",
  "rule.sast.q.java.753.description": "부정확한 hashCode 및 equals 오버라이딩 체커는 두 객체의 동일성을 비교하는 메소드와 해시 코드를 계산하는 메소드 중 어느 한 쪽만 오버라이딩으로 구현된 경우를 검출합니다.\nhashCode() 메소드와 equals() 메소드의 구현 여부는 항상 일치해야 합니다.\nhashCode() 메소드를 제대로 오버라이딩하지 않으면 프로그램이 오동작 할 가능성이 높습니다. HashMap, HashSet, HashTable과 같은 모든 해시 기반의 컬렉션 클래스에 잘못 구현된 클래스를 담을 때 문제가 될 수 있습니다.\nhashCode() 메소드와 equals() 메소드는 둘 모두를 오버라이딩하지 않거나 둘 모두를 오버라이딩하는 것이 좋습니다. 이때, equals() 메소드로 비교했을 때 같은 객체는 hashCode() 값도 같아야 하고, hashCode()의 값이 서로 다른 객체는 equals() 메소드로 비교했을 때 다른 객체로 판정되도록 작성해야 합니다.",
  "rule.sast.q.java.753.example.0.dangerous": "라인 3: equals() 메소드를 오버라이딩했지만 hashCode() 메소드를 오버라이딩하지 않았습니다.\n라인 9: hashCode() 메소드를 오버라이딩했지만 equals() 메소드를 오버라이딩하지 않았습니다.",
  "rule.sast.q.java.753.example.0.safe": "라인 2: hashCode() 메소드와 equals() 메소드를 모두 오버라이딩합니다.",
  "rule.sast.q.java.753.name": "부정확한 hashCode 및 equals 오버라이딩",
  "rule.sast.q.java.754.description": "스레드의 직접 사용 체커는 J2EE 웹 애플리케이션에서 직접적으로 스레드를 사용하는 경우를 검출합니다.\n웹 애플리케이션에서 스레드 관리는 J2EE 환경에서 금지되거나, 항상 오류를 만들 소지가 큽니다. 웹 애플리케이션에서 스레드 관리는 어렵고, 애플리케이션 container의 동작에 예상하지 않은 영향을 미칠 수 있습니다.\nEJB 일 경우, 동시 실행을 위해서 스레드를 직접 사용하지 말고, 프레임워크 사용을 고려하는 것이 좋습니다.",
  "rule.sast.q.java.754.example.0.dangerous": "라인 11: J2EE 프로그램에서 스레드를 직접 사용하면 데드락, 경쟁 상태 등 동기화 오류가 발생할 수 있습니다.",
  "rule.sast.q.java.754.example.0.safe": "라인 9: 병렬 처리가 꼭 필요하다면 스레드를 직접 사용하는 대신 프레임워크를 사용하는 것을 권장합니다.",
  "rule.sast.q.java.754.name": "스레드의 직접 사용",
  "rule.sast.q.java.755.description": "System.exit 메소드 사용 체커는 VM을 종료시키는 System.exit()과 같은 메소드 호출을 검출합니다.\n애플리케이션을 종료시킬 수 있는 함수에 접근하는 것은 DoS(Denial of Service) 공격의 진입로가 될 수 있습니다. 애플리케이션을 종료시킬 수 있는 함수는 인증된 관리자만이 적절한 방법으로 사용 가능해야 합니다. 애플리케이션을 종료시킬 수 있는 가능성이 있는 것들은 보안 상 취약점을 내포합니다. 그러므로, 웹 애플리케이션은 가상 Machine을 종료시키는 System.exit() 와 같은 메소드들을 호출해서는 안됩니다. 또한, 웹 애플리케이션은 웹 컨테이너에 안 좋은 영향을 미칠 어떠한 Throwables 도 throw 해서는 안됩니다. 웹 애플리케이션이 아닌 프로그램은 main() 메소드를 포함할 수 있지만, 일반적으로 System.exit() 메소드를 코드 어느 곳에서도 사용하지 말아야 합니다. System.exit() 호출은 대부분 코드 디버깅의 목적으로 남겨진 것이나, J2EE 가 아닌 애플리케이션에서 들어온 코드일 수 있기 때문입니다.\nSystem.exit() 메소드를 호출하지 않습니다. 프로그램 종료가 필요하다면 오류 코드를 반환하여 상위로 전달하는 등의 다른 방법을 사용해야 합니다.",
  "rule.sast.q.java.755.example.0.dangerous": "라인 8: System.exit() 메소드를 호출했습니다.",
  "rule.sast.q.java.755.example.0.safe": "라인 8: System.exit() 메소드를 호출하지 않도록 합니다.",
  "rule.sast.q.java.755.name": "System.exit 메소드 사용",
  "rule.sast.q.java.760.description": "금지된 함수 사용 체커는 사용이 금지된 메소드를 호출하는 코드를 검출합니다.\n호출을 금지할 메소드는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 메소드를 사용하지 못하도록 해야 하는 경우가 있습니다. 프로젝트 전체의 일관성을 위해서일 수도 있고, 더 나은 다른 방법이 개발되어서 해당 메소드는 더 이상 사용하지 않게 되었을 수도 있고, 혹은 해당 메소드에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 메소드를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.sast.q.java.760.example.0.dangerous": "라인 2: 이 예시에서는 Forbidden.forbidden() 메소드가 금지되었다고 가정합니다. 금지된 메소드가 호출되었습니다.",
  "rule.sast.q.java.760.example.0.safe": "라인 2: 금지된 메소드를 호출하지 않습니다.",
  "rule.sast.q.java.760.name": "금지된 함수 사용",
  "rule.sast.q.java.760.option.forbidden_method.description": "금지할 메소드 이름을 FQN으로 입력합니다.<br />예시) com.fasoo.Forbidden.forbidden",
  "rule.sast.q.java.760.option.forbidden_method.name": "금지할 메소드 이름",
  "rule.sast.q.java.765.description": "strictfp 한정자 없는 나눗셈 체커는 strictfp 한정자 없이 부동 소수점 나누기 수식을 사용한 메소드 또는 클래스를 검출합니다.\n해당 한정자가 없을 경우 JVM은 부동 소수점 나누기 연산을 수행할 때 플랫폼이 지원하는 더 정밀한 타입의 나눗셈을 수행할 수도 있습니다. 이렇게 하면 동일한 프로그램이 플랫폼마다 수행 결과가 달라질 수 있고 그로 인해 의도와 다른 동작이 일어날 수 있습니다. 안정적으로 동일한 결과를 얻고자 한다면 strictfp 한정자를 사용해야 합니다.\n부동 소수점 나누기를 사용하는 메소드 혹은 클래스에 정의에 strictfp 한정자를 추가합니다.",
  "rule.sast.q.java.765.example.0.dangerous": "라인 4: 부동 소수점 나누기를 수행하지만 메소드나 클래스에 strictfp 한정자가 없습니다.",
  "rule.sast.q.java.765.example.0.safe": "라인 3: 부동 소수점 나누기를 포함하는 메소드에 strictfp 한정자를 추가합니다.",
  "rule.sast.q.java.765.name": "strictfp 한정자 없는 나눗셈",
  "rule.sast.q.java.787.description": "케이스 구문에서 누락된 break 구문 체커는 switch 구문의 케이스 블록 중 마지막에 break 구문이 사용되지 않은 경우를 검출합니다.\ncase 블록의 끝 문장이 break 구문 또는 return이나 throw 등의 제어 구문이 아닐 경우 해당 case 블록에서 다음 case 블록까지 실행이 이어지게 됩니다. 이런 상황은 대부분 실수로 인해 발생합니다.\n습관적으로 모든 case 블록의 끝에 break 구문을 붙여주면 실수를 예방할 수 있습니다.",
  "rule.sast.q.java.787.example.0.dangerous": "라인 3: case 0 블록에 break 구문이 없습니다.\n라인 4: case 1 블록에 break 구문이 없습니다.",
  "rule.sast.q.java.787.example.0.safe": "라인 4: case 블록의 끝에 break 구문을 붙여줍니다.\n라인 6: case 블록의 끝에 break 구문을 붙여줍니다.",
  "rule.sast.q.java.787.name": "케이스 구문에서 누락된 break 구문",
  "rule.sast.q.java.787.option.check_last_case_only.description": "옵션을 사용하는 경우, 마지막 case에 break 구문이 존재하는 지만 검사합니다.",
  "rule.sast.q.java.787.option.check_last_case_only.name": "마지막 case 구문만 검사",
  "rule.sast.q.java.787.option.ignore_if_comment_exists.description": "옵션을 사용하는 경우 주석이 있는 이슈는 무시합니다.",
  "rule.sast.q.java.787.option.ignore_if_comment_exists.name": "주석 존재 시 이슈 무시 여부",
  "rule.sast.q.java.979.description": "전역적으로 접근 가능한 파일 체커는 내부 저장소에 있는 파일에 접근할 때 MODE_PRIVATE 모드로 접근하지 않는 경우를 검출합니다.\nAndroid 내부 저장소에서 파일에 접근할 때 전역적 접근이 가능할 경우 다른 프로그램에서 해당 파일에 접근하지 못하도록 막을 수 없습니다. 따라서 내부 저장소에 있는 파일에 접근할 때에는 MODE_PRIVATE 모드로 접근할 것을 권장합니다.\nMODE_PRIVATE 모드를 사용합니다.",
  "rule.sast.q.java.979.example.0.dangerous": "라인 5: 내부 저장소 파일에 접근할 때 MODE_WORLD_READABLE 모드를 사용했습니다.",
  "rule.sast.q.java.979.example.0.safe": "라인 5: MODE_PRIVATE 모드로 변경합니다.",
  "rule.sast.q.java.979.name": "전역적으로 접근 가능한 파일",
  "rule.sast.q.java.979.option.forbidden_argument.description": "금지할 인자 값을 지정합니다.<br />예시) MODE_WORLD_WRITEABLE",
  "rule.sast.q.java.979.option.forbidden_argument.name": "금지 인자 값",
  "rule.sast.q.java.979.option.method_name.description": "검사 대상인 메소드를 지정합니다.<br />예시) openFileOutput",
  "rule.sast.q.java.979.option.method_name.name": "검사 대상 메소드 이름",
  "rule.sast.q.js.1480.description": "금지된 함수 사용 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.\n호출을 금지할 함수는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 함수를 사용하지 않도록 금지해야 하는 경우가 있습니다. 예를 들어, 프로젝트 전체의 일관성을 유지하거나, 다른 방법을 통해 해당 함수를 더 이상 사용하지 않는 경우, 혹은 해당 함수에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 함수를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.sast.q.js.1480.example.0.dangerous": "라인 2: forbidden() 함수의 호출이 금지되었다고 가정했을 때, 이 함수를 사용하고 있습니다.",
  "rule.sast.q.js.1480.example.0.safe": "라인 2: 금지된 함수를 호출하지 않습니다.",
  "rule.sast.q.js.1480.name": "금지된 함수 사용",
  "rule.sast.q.js.1480.option.forbidden_function.description": "금지할 함수의 이름을 작성합니다.<br />예시) .*forbidden.*",
  "rule.sast.q.js.1480.option.forbidden_function.name": "금지할 함수",
  "rule.sast.q.js.1958.description": "동기화된 트랜잭션 체커는 동기방식으로 트랜잭션 함수를 사용하는경우를 검출합니다.\n동기 방식으로 트랜잭션 함수를 사용하게되면, 성능에 문제가 되는 경우가 생길 수 있습니다.\n비동기 방식의 트랜잭션을 사용합니다.",
  "rule.sast.q.js.1958.example.0.dangerous": "라인 3: 7번째 매개 변수를 false로 설정하여, 동기 방식의 트랜잭션 함수를 사용하고 있습니다. (기본값은 비동기 방식입니다)",
  "rule.sast.q.js.1958.example.0.safe": "라인 3: 7번째 매개 변수를 true로 바꿔주거나 매개 변수를 사용하지 않는 방법으로 비동기 방식의 통신을 사용합니다.",
  "rule.sast.q.js.1958.name": "동기화된 트랜잭션",
  "rule.sast.q.js.1958.option.functionParamCheck.description": "함수명과 파라미터, 체크해야할 boolean 값을 형식에 맞추어 입력하세요. ex) Transaction/7/false",
  "rule.sast.q.js.1958.option.functionParamCheck.name": "함수/파라미터순서/체크값",
  "rule.sast.q.js.1965.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.q.js.1965.example.0.dangerous": "라인 5: try 블록에서 오류를 포착하고 있지만 아무런 조치를 취하고 있지 않습니다.",
  "rule.sast.q.js.1965.example.0.safe": "라인 5: 예외를 포착한 후 각각의 예외사항에 대하여 적절하게 처리해야 합니다.",
  "rule.sast.q.js.1965.name": "빈 catch 블록",
  "rule.sast.q.kt.2918.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.q.kt.2918.example.0.dangerous": "라인 10: catch 블록에서 예외를 잡지만 아무런 조치를 취하지 않습니다.",
  "rule.sast.q.kt.2918.example.0.safe": "라인 11: 예외를 잡은 후 각각의 예외에 대해 적절한 처리 작업을 수행해야 합니다.",
  "rule.sast.q.kt.2918.name": "빈 catch 블록",
  "rule.sast.q.kt.2922.description": "널 반환 값 역참조 체커는 반환된 널 값을 확인 없이 역참조하는 경우를 검출합니다.\n널을 반환할 수 있는 메소드를 호출한 후 그 반환 값을 확인 없이 역참조하면 예외가 발생할 수 있습니다. Kotlin에서는 기본적으로 NullPointerException가 발생하진 않지만 `!!` 연산자를 사용할 경우 NPE가 발생할 수 있으므로 사용에 주의해야 합니다.\n공격자는 NullPointerException 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n널을 반환할 수 있는 메소드의 반환 값은 항상 값 검사 후 사용합니다.",
  "rule.sast.q.kt.2922.example.0.dangerous": "라인 13: Koltin에서는 NullPointerException이 발생하지 않지만, '!!' 연산자를 사용시 NPE가 발생할 수 있으므로 사용에 주의해야 합니다.",
  "rule.sast.q.kt.2922.example.0.safe": "라인 13: Nullable Null값이 아니라고 100% 확신할 수 있는 경우가 아니라면, '!!' 연산자 사용을 피합니다.",
  "rule.sast.q.kt.2922.name": "널 반환 값 역참조",
  "rule.sast.q.kt.2929.description": "금지된 함수 사용 체커는 사용이 금지된 메소드를 호출하는 코드를 검출합니다.\n호출을 금지할 메소드는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 메소드를 사용하지 못하도록 해야 하는 경우가 있습니다. 프로젝트 전체의 일관성을 위해서일 수도 있고, 더 나은 다른 방법이 개발되어서 해당 메소드는 더 이상 사용하지 않게 되었을 수도 있고, 혹은 해당 메소드에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 메소드를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.sast.q.kt.2929.example.0.dangerous": "라인 2: forbidden() 함수 호출을 금지했을 경우, 해당 함수의 사용을 검출합니다.",
  "rule.sast.q.kt.2929.example.0.safe": "라인 2: forbidden() 함수를 호출하지 않습니다.",
  "rule.sast.q.kt.2929.name": "금지된 함수 사용",
  "rule.sast.q.kt.2929.option.forbidden_method.description": "금지할 함수의 이름을 작성합니다.<br />예시) .*forbidden.*",
  "rule.sast.q.kt.2929.option.forbidden_method.name": "금지할 함수",
  "rule.sast.q.kt.7347.description": "지나치게 일반적인 예외(ex. Exception)를 단순히 던지면, 예외가 발생했을 때 정확한 원인을 파악하기 어렵습니다. 또한, 예외가 상위로 전파되었을 때도 추가적인 정보가 부족해 디버깅이 어려워질 수 있습니다.\n상황에 맞는 구체적인 예외를 던지고, 필요한 경우 원인 예외(cause)와 간결한 설명 메시지를 함께 제공합니다.",
  "rule.sast.q.kt.7347.example.0.dangerous": "라인 3: 광범위한 예외 객체를 던지고 있습니다.",
  "rule.sast.q.kt.7347.example.0.safe": "라인 3: 예외 객체를 던질 경우 구체적인 예외 클래스로 생성된 객체를 사용하도록 합니다.",
  "rule.sast.q.kt.7347.name": "지나치게 일반적인 예외 던짐",
  "rule.sast.q.kt.7348.description": "finally 블록에서 return을 사용하면, try/catch 블록에서 발생한 예외나 반환 값이 무시되어 예측 불가능한 동작이 발생할 수 있습니다. 또한 try를 표현식으로 사용할 때 finally에 불필요한 값이 있으면, 해당 값이 최종 결과처럼 보이는 혼동을 줄 수 있으므로 사용을 지양합니다.\nfinally 블록에서는 return이나 값 반환을 하지 않아야 합니다. 반환 결정과 예외 처리는 try/catch 블록에서 처리하도록 작성합니다.",
  "rule.sast.q.kt.7348.example.0.dangerous": "라인 7: finally 블록 내부에서 return을 사용하면, catch 절에서 던진 예외가 무시됩니다.",
  "rule.sast.q.kt.7348.example.0.safe": "라인 7: finally 블록 내부에 return을 사용하지 않으므로, catch 절에서 던진 예외가 정상적으로 호출자에게 전달됩니다.",
  "rule.sast.q.kt.7348.name": "finally 블록 내부에서 return 사용",
  "rule.sast.q.kt.7349.description": "Kotlin 코드에서 Java의 래퍼 클래스(Integer, Long 등) 생성자를 호출해 임시 인스턴스를 만든 뒤, toString() 메서드를 호출하거나 문자열로 연결하는 방식은 불필요한 인스턴스 생성을 유발합니다. 이로 인해 성능 저하와 메모리 낭비가 발생합니다.\nKotlin은 원시 타입과 래퍼 클래스를 구분하지 않으므로 별도의 래퍼 클래스를 생성할 필요가 없습니다. 따라서 값을 문자열로 변환할 때는 x.toString() 또는 Integer.toString(x)와 같은 정적 메서드를 사용해 불필요한 인스턴스 생성을 피해야 합니다.",
  "rule.sast.q.kt.7349.example.0.dangerous": "라인 2: 래퍼 클래스를 문자열로 변환할 때, 불필요한 임시 인스턴스를 생성해 성능 저하와 메모리 낭비가 발생합니다.",
  "rule.sast.q.kt.7349.example.0.safe": "라인 2: 래퍼 클래스를 문자열로 변환할 때, 정적 메서드를 사용해 불필요한 임시 인스턴스 생성을 피합니다.",
  "rule.sast.q.kt.7349.name": "불필요한 임시 인스턴스 생성",
  "rule.sast.q.kt.7350.description": "Kotlin에서 슈퍼 타입/서브 타입 관계가 아닌 타입을 as/as? 연산자로 캐스트 하면 런타임 예외(ClassCastException)가 발생하거나 항상 null을 반환합니다. 예를 들어 String을 Int로 변환할 때 as 연산자를 사용하면 런타임 예외가 발생합니다. 해당 체커는 이와 같이 성공할 수 없는 캐스트를 검출합니다.\n기본 타입을 변환할 때는 toInt(), toLong(), toDouble()과 같은 타입 변환 함수를 사용해야 합니다. 객체의 타입을 확인하는 경우에는 is 연산자를 사용합니다. is 연산자는 스마트 캐스트를 적용하므로, 불필요한 캐스트 없이 안전하게 타입을 판별할 수 있습니다.\n\n※ 스마트 캐스트는 컴파일러가 객체의 타입을 확인한 뒤 해당 타입으로 자동 변환하는 기능입니다.",
  "rule.sast.q.kt.7350.example.0.dangerous": "라인 2: String 타입을 Int 타입으로 캐스트하고 있습니다. 두 타입은 상속 관계가 아니므로 이 코드는 항상 실패하며, 실행할 경우 ClassCastException이 발생합니다.",
  "rule.sast.q.kt.7350.example.0.safe": "라인 2: 객체의 실제 타입을 확인하기 위해 is 연산자를 사용하고 있습니다. is 연산자를 사용하면 컴파일러가 스마트 캐스트를 적용하므로, 불필요한 캐스트 없이 안전하게 타입을 판별할 수 있습니다.",
  "rule.sast.q.kt.7350.name": "성공할 수 없는 캐스트",
  "rule.sast.q.kt.7365.description": "개발자의 실수로 잘못된 연산자를 사용하면 프로그램의 제어 흐름이 의도와 다르게 동작하는 문제가 발생할 수 있습니다. 이러한 오류는 오타나 연산자 의미에 대한 오해로 인해 발생하며, 조건식이 올바르게 평가되지 않아 예상치 못한 동작으로 이어질 수 있습니다.\n\nKotlin에서는 구조적 동등성(==)과 참조 동일성(===)의 혼동이 발생할 수 있습니다. 값 비교가 필요한 곳에서 === 연산자를 사용하거나, 참조 동일성을 확인해야 하는데 == 연산자를 사용하는 경우 프로그램이 의도하지 않은 동작을 수행할 수 있습니다.\n\n또한 in 연산자의 좌항이 문자열 리터럴인 경우 `admin` in role은 role.contains(`admin`)으로 동작하므로 `superadmin` 같은 값도 참으로 판정되어 검증 로직이 무시될 수 있습니다.\n프로그램을 개발할 때는 오타를 꼼꼼히 확인하고 연산자를 의도에 맞게 사용해야 합니다. Kotlin에서 in 연산자는 내부적으로 contains() 메서드로 변환되며, 좌항과 우항이 String 타입일 경우 부분 문자열 검색으로 동작합니다.\n\n따라서 검증 로직처럼 값의 정확성을 확인해야 하는 경우에는 in 연산자 사용을 피해야 합니다. 원래의 의도가 부분 문자열 검색이라면 contains() 메서드를 명시적으로 호출하고, 정확한 값 비교가 필요하다면 동등 연산자(==) 연산자를 사용하는 것이 안전합니다. 다만, == 연산자는 내부적으로 equals() 메서드를 호출하므로 클래스에서 이를 오버라이드하지 않았다면 참조 동일성 비교가 수행된다는 점을 고려해야 합니다.",
  "rule.sast.q.kt.7365.example.0.dangerous": "라인 2: 값 비교가 필요한 상황에서 참조 동일성 연산자(===)를 사용하고 있습니다. user.role이 “ADMIN”과 같은 문자열 값을 갖더라도 서로 다른 객체일 경우 조건이 false가 됩니다.",
  "rule.sast.q.kt.7365.example.0.safe": "라인 2: 값 비교가 필요한 상황에서 동등 연산자(==)를 사용해 사용자 역할 검증을 적절히 수행합니다.",
  "rule.sast.q.kt.7365.name": "잘못된 연산자 사용",
  "rule.sast.q.kt.7366.description": "조건식이 항상 참(True)이나 거짓(False)으로 평가되면 프로그램의 제어 흐름이 의도와 다르게 동작합니다. 항상 거짓인 경우 해당 분기문이 실행되지 않으므로 Dead Code가 되어 의도했던 로직이 수행되지 않습니다. 반대로 항상 참인 경우에는 다른 분기 경로가 전혀 실행되지 않아 오류 처리나 예외 대응이 무시될 수 있습니다. 이러한 문제는 주로 디버깅 목적으로 사용된 코드가 조건식에 남아 있거나, 개발자의 실수로 인해 발생할 수 있습니다.\n조건식에 디버깅 목적으로 사용된 상숫값이나 불리언 리터럴(true, false)은 디버깅이 끝나면 제거해야 합니다. 또한 논리 연산자(||, &&)를 조건식에 사용할 때 결과가 항상 참 또는 거짓으로 고정되지 않도록 확인하고 원래 의도에 맞는 조건식을 작성해야 합니다.",
  "rule.sast.q.kt.7366.example.0.dangerous": "라인 2: 조건식이 false로 설정되어 있어 분기문이 실행되지 않습니다.",
  "rule.sast.q.kt.7366.example.0.safe": "라인 2: 조건식이 변수 n의 값에 따라 참 또는 거짓으로 평가됩니다.",
  "rule.sast.q.kt.7366.name": "항상 참 또는 거짓으로 평가되는 조건식",
  "rule.sast.q.kt.7367.description": "연산자는 언어 규칙에 따라 우선순위가 평가되지만, 괄호 없이 작성된 복합 수식에서는 그 순서가 개발자가 의도한 것과 같다고 단정할 수 없습니다. 예를 들어, 인증이나 권한 검증 같은 중요한 조건식에서 서로 다른 우선순위를 가진 연산자를 괄호 없이 섞어 사용할 경우, 개발자의 의도와 다른 순서로 평가되어 예기치 못한 결과가 발생할 수 있습니다.\n프로그램의 안정성을 위해 서로 다른 우선순위를 가진 연산자를 복합 수식에 사용할 때는 괄호를 사용해서 연산 의도를 명확히 표현해야 합니다.",
  "rule.sast.q.kt.7367.example.0.dangerous": "라인 2: 괄호 없이 연산자 우선순위를 의존해 복합 수식을 작성했습니다.",
  "rule.sast.q.kt.7367.example.0.safe": "라인 2: 연산자 우선순위에 따라 올바른 값이 계산되더라도, 복합 수식에는 괄호를 사용하도록 합니다.",
  "rule.sast.q.kt.7367.name": "모호한 수식 우선순위",
  "rule.sast.q.kt.7368.description": "변수에 값을 할당했지만 사용하지 않으면 불필요한 코드가 남습니다. 이러한 코드는 프로그램 동작에는 직접적인 영향을 주지 않더라도 읽는 사람에게 혼란을 줄 수 있습니다. 그 결과 가독성과 유지 보수성이 떨어지고, 때로는 의도한 로직이 누락된 것으로 오해될 수도 있습니다.\n사용되지 않는 변수를 제거하고, 실제 로직에 필요한 값이라면 적절히 활용되도록 코드를 수정합니다.",
  "rule.sast.q.kt.7368.example.0.dangerous": "라인 2: tmp 변수에 test() 메서드의 반환 값이 할당되지만, 이후 어떤 구문에서도 사용되지 않습니다.",
  "rule.sast.q.kt.7368.example.0.safe": "라인 2: tmp 변수에 test() 메서드의 반환 값이 할당된 이후, process(tmp) 메서드 호출에서 사용됩니다.",
  "rule.sast.q.kt.7368.name": "변수에 값 할당 후 미사용",
  "rule.sast.q.kt.7375.description": "실행될 수 없는 코드(Dead Code)는 프로그램 실행 과정에서 절대 도달할 수 없는 구문을 의미합니다. 예를 들어 break나 return 뒤에 실행 코드가 이어지거나, throw로 예외를 던진 뒤에 남아 있는 구문 등이 이에 해당합니다. 또한 정의된 메서드가 한 번도 호출되지 않아 실제로 사용되지 않는 경우도 Dead Code로 볼 수 있습니다. 이러한 코드는 실제로 실행되지 않아 기능적으로 무의미하며, 소스 코드에 포함되어 있으면 다른 개발자에게 혼란을 주고 유지보수성을 떨어뜨릴 수 있습니다.\n코드를 작성할 때 불필요한 구문을 남기지 말고, 제어가 이미 종료된 뒤에는 실행 코드가 이어지지 않도록 해야 합니다. 예를 들어 break, continue, return, throw 구문이나 Nothing 타입을 반환하는 함수 호출 뒤에는 어떠한 코드도 실행될 수 없으므로 제거해야 합니다.",
  "rule.sast.q.kt.7375.example.0.dangerous": "라인 3: return 뒤에 println()이 있으므로 실행될 수 없는 코드입니다.",
  "rule.sast.q.kt.7375.example.0.safe": "라인 2: println()은 return 이전에 실행되므로 실행될 수 없는 코드가 아닙니다.",
  "rule.sast.q.kt.7375.name": "실행될 수 없는 코드",
  "rule.sast.q.kt.7384.description": "파일, 소켓, 데이터베이스 연결 등은 프로그램이 사용할 수 있는 유한한 자원입니다. 이러한 자원을 사용한 뒤 더 이상 필요하지 않을 때 명시적으로 해제하지 않으면 자원이 계속 점유된 상태로 남게 됩니다. JVM의 가비지 컬렉터는 메모리는 자동으로 회수하지만, 파일이나 소켓 같은 자원은 자동 해제를 보장하지 않습니다. 따라서, 할당된 자원이 해제되지 않고 누적되면 자원 고갈로 이어져 성능 저하나 서비스 거부(DoS)로 이어질 수 있습니다.\n한 메서드 안에서 할당한 자원은 메서드가 종료되기 전에 반드시 해제해야 합니다. 특히 이러한 자원은 사용 도중 예외가 발생할 수 있으므로, 사용 구간을 try 구문으로 감싸고 finally 블록에서 확실하게 해제하는 것이 안전합니다.\n\n또한 Kotlin에서는 Java의 try-with-resources와 유사하게 동작하는 use 확장 함수를 제공합니다. 이 함수를 사용하면 use 블록을 벗어날 때 자원이 자동으로 해제되므로, 예외 상황에서도 안정적으로 자원을 관리할 수 있습니다.",
  "rule.sast.q.kt.7384.example.0.dangerous": "라인 7: 자원을 할당받은 뒤 예외가 발생하면 close()가 호출되지 않아 자원이 해제되지 않습니다.",
  "rule.sast.q.kt.7384.example.0.safe": "라인 13: 자원을 할당받은 뒤 예외 발생 여부와 관계없이 finally 블록에서 항상 자원을 해제합니다.",
  "rule.sast.q.kt.7384.name": "자원 누수",
  "rule.sast.q.kt.7388.description": "프로그래밍 언어의 발전이나 특정 API의 결함으로 인해 더 이상 사용되지 않거나(deprecated) 유지 보수가 중단된 API들이 있습니다. 이러한 API를 사용할 경우 최신 환경에서 호환성 문제가 발생할 수 있으며, 만약 보안 결함이 존재했던 API라면 보안 취약점으로 이어질 수도 있습니다.\n\n해당 체커는 사용을 자제할 것이 권고되는 API를 사용하는 경우를 이슈로 검출합니다. 추가로 사용을 자제할 API 목록은 옵션으로 지정할 수 있습니다.\n더 이상 사용되지 않거나 유지 보수가 중단된 API를 제거하고, 다른 대체 API로 교체합니다.",
  "rule.sast.q.kt.7388.example.0.dangerous": "라인 4: 더 이상 사용되지 않는 Date 클래스가 사용되었습니다.",
  "rule.sast.q.kt.7388.example.0.safe": "라인 4: 더 이상 사용되지 않는 Date 클래스 대신 LocalDateTime 클래스를 사용해 현재 시각을 가져옵니다.",
  "rule.sast.q.kt.7388.name": "더 이상 사용되지 않는 API 사용",
  "rule.sast.q.kt.7391.description": "나눗셈에서 0을 제수로 사용하는 연산은 정의되어 있지 않습니다. 이러한 연산을 실행하면 런타임 예외(ArithmeticException)가 발생할 수 있으며, 예외를 적절히 처리하지 않은 경우 프로그램이 비정상 종료되거나 서비스 거부(DoS)로 이어질 수 있습니다.\n나눗셈을 수행하기 전에는 분모가 0인지 확인해야 합니다. 분모 값의 범위를 확신할 수 없다면, 연산 전에 제수가 0이 아닌지 검사하는 코드를 추가하도록 합니다.",
  "rule.sast.q.kt.7391.example.0.dangerous": "라인 2: 분모인 numRequests가 0이 아님을 확인하는 검사나 예외 처리가 없어, 0이 전달되면 프로그램이 비정상 종료될 수 있습니다.",
  "rule.sast.q.kt.7391.example.0.safe": "라인 2: 분모인 numRequests가 0인지 먼저 확인하고, 0일 경우 명시적으로 예외를 던져 잘못된 연산이 수행되지 않도록 합니다.",
  "rule.sast.q.kt.7391.name": "0으로 나누기",
  "rule.sast.q.kt.7402.description": "데이터베이스 연결 객체를 정적으로 선언하면 하나의 연결 인스턴스가 여러 스레드에서 동시에 사용될 가능성이 있습니다. Kotlin에서 object, companion object, 또는 파일 최상단(top-level)에 선언된 변수는 JVM으로 컴파일될 때 내부적으로 Java의 정적(static) 영역에 저장되거나, 정적 필드에 보관된 단일 인스턴스를 통해 전역적으로 공유됩니다. 따라서 이러한 위치에 java.sql.Connection 객체를 저장하면 프로그램 전역에서 동일한 연결이 공유됩니다. Connection 객체는 한 시점에 하나의 스레드에서만 사용해야 하며, 여러 스레드가 동시에 접근할 경우 경쟁 조건이 발생해 트랜잭션이 서로 간섭될 수 있습니다. 이로 인해 프로그램이 예기치 못한 동작을 일으키거나 데이터가 손상될 수 있습니다.\n데이터베이스 연결 객체를 object나 companion object와 같은 정적 구조에 선언하지 말고, 요청 또는 트랜잭션 단위로 관리해야 합니다. 또한 연결 객체는 매번 새로 생성하는 대신, 커넥션 풀(DataSource)을 사용해 필요할 때마다 풀에서 연결 객체를 획득하고 사용이 완료되면 반납하는 방식으로 관리합니다. 커넥션 풀은 각 스레드에 독립적인 연결 객체를 할당하기 때문에 동일한 연결 객체가 여러 스레드에서 동시에 사용되는 상황을 방지합니다. 이러한 방식은 경쟁 조건을 예방함과 동시에, 연결 객체 생성으로 인한 성능 저하를 최소화할 수 있습니다.",
  "rule.sast.q.kt.7402.example.0.dangerous": "라인 9: Connection 객체를 object 내부에서 생성하고 있습니다. object는 프로그램 전체에서 동일한 인스턴스를 공유하므로, 여러 스레드에서 해당 객체를 동시에 사용할 경우 경쟁 조건이 발생할 수 있습니다.",
  "rule.sast.q.kt.7402.example.0.safe": "라인 6: Connection 객체를 object 내부에 두지 않고, 커넥션 풀(DataSource)을 통해 요청 단위로 안전하게 연결을 관리합니다.",
  "rule.sast.q.kt.7402.name": "데이터베이스 연결 경쟁 조건",
  "rule.sast.q.kt.7430.description": "싱글톤 패턴은 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴입니다. 그러나 다중 스레드 환경에서 적절한 동기화 없이 구현하면 여러 스레드가 동시에 인스턴스를 생성할 수 있습니다. 이로 인해 하나의 인스턴스만 존재해야 하는 싱글톤의 보장 조건이 무너질 수 있습니다.\n다중 스레드 환경에서 싱글톤 패턴을 안전하게 구현하려면 인스턴스 생성 과정에 동기화를 적용해야 합니다. 일반적으로 synchronized 키워드를 사용하거나, 언어 차원에서 스레드 안전성을 보장하는 방식을 활용할 수 있습니다. Kotlin에서는 object 키워드를 사용해 이러한 동기화 과정을 자동으로 처리할 수 있습니다. 이 방식은 단일 인스턴스만 생성되도록 보장하며, 별도의 동기화 코드 없이도 안전하게 사용할 수 있습니다.",
  "rule.sast.q.kt.7430.example.0.dangerous": "라인 5: synchronized 키워드 없이 인스턴스를 생성하고 있습니다. 이 경우 다중 스레드 환경에서 여러 인스턴스가 생성될 수 있습니다.",
  "rule.sast.q.kt.7430.example.0.safe": "라인 1: Kotlin의 object 키워드는 언어 차원에서 단일 인스턴스 생성을 보장하므로, 별도의 동기화 코드가 없어도 안전하게 사용할 수 있습니다.",
  "rule.sast.q.kt.7430.name": "스레드 안전하지 않은 싱글톤의 사용",
  "rule.sast.q.objc.1880.description": "system 함수 사용 체커는 system() 함수를 호출하는 코드를 검출합니다.\nsystem() 함수를 통해 공격자는 임의의 쉘 스크립트 또는 실행 프로그램을 실행시킬 수 있습니다. 따라서 프로그램에서 예상하지 못한 동작이 발생하거나 공격자가 의도한 경로로 프로그램이 동작할 수 있습니다.\nsystem() 함수를 사용하지 않습니다.",
  "rule.sast.q.objc.1880.example.0.dangerous": "라인 2: system() 함수를 사용해서 파일을 삭제했습니다. 취약한 프로그램의 경우 관리자 권한을 사용하여 시스템을 조작할 수 있습니다.",
  "rule.sast.q.objc.1880.example.0.safe": "라인 3: unlink() 함수를 사용하여 파일을 삭제하므로 임의의 시스템 조작을 방지할 수 있습니다.",
  "rule.sast.q.objc.1880.name": "system 함수 사용",
  "rule.sast.q.objc.1880.option.system_function.description": "시스템 호출을 야기하는 함수명을 입력합니다.",
  "rule.sast.q.objc.1880.option.system_function.name": "시스템 호출 함수",
  "rule.sast.q.objc.1896.description": "안전하지 않은 권한 포기 체커는 잘못된 순서로 다수의 권한을 포기하는 코드를 검출합니다.\n사용자 권한을 설정하는 setuid() 함수와 그룹 권한을 설정하는 setgid() 함수의 순서에 따라 권한이 의도한 대로 설정되지 않을 수 있습니다.\n권한을 포기하기 위해 setuid() 함수를 호출하는 경우 사용자 권한이 낮아지게 됩니다. 하지만 setgid() 함수가 제대로 동작하려면 수퍼 사용자 권한이 필요합니다. 따라서 setuid() 함수를 먼저 호출하면 setgid() 함수를 사용하여 그룹 권한을 포기하는 작업을 제대로 수행할 수 없습니다. 이로 인해 공격자가 남겨진 그룹 권한을 이용할 가능성이 있습니다.\nsetgid() 함수를 먼저 호출한 후에 setuid() 함수를 호출해야 합니다.",
  "rule.sast.q.objc.1896.example.0.dangerous": "라인 1: 그룹 권한을 먼저 포기하지 않고 setuid()를 호출했습니다.",
  "rule.sast.q.objc.1896.example.0.safe": "라인 1: 그룹 권한을 먼저 포기한 후에 사용자 권한을 바꾸어야 합니다.",
  "rule.sast.q.objc.1896.name": "안전하지 않은 권한 포기",
  "rule.sast.q.objc.1901.description": "널 역참조 체커는 널 상수나 널이 할당된 변수를 역참조하는 경우를 검출합니다.\n널일 수도 있는 값을 검사 없이 역참조하면 프로그램 실행 중에 널 값 역참조 예외가 발생합니다. 프로그램 실행이 비정상적으로 종료될 수 있습니다.\n공격자는 널 값 역참조 예외로 발생하는 취약점을 사용하여 공격을 계획할 수 있습니다.\n변수가 널이 아니라는 보장이 없다면 해당 값을 역참조하기 전에 항상 널이 아닌지 확인해야 합니다.",
  "rule.sast.q.objc.1901.example.0.dangerous": "라인 3: 포인터 ptr이 가리키는 주소 값을 널로 지정했습니다.\n라인 5: 주소 값이 널인 ptr의 주소를 역참조하여 널 값 역참조 오류가 발생했습니다.",
  "rule.sast.q.objc.1901.example.0.safe": "라인 5: 함수로부터 넘어오는 인자나 외부로부터 입력된 값, 혹은 직접 지정한 값이라도 사용하기 전에 반드시 널값을 가지고 있는지 검사를 하도록 합니다.",
  "rule.sast.q.objc.1901.name": "널 역참조",
  "rule.sast.q.objc.1903.description": "중복 형식화된 문자열 체커는 이미 형식화된 문자열을 다시 한 번 형식 문자열로 사용하는 경우를 검출합니다.\n이미 형식화된 문자열을 다시 한 번 형식화 하면 형식 토큰의 해석이 복잡해지고 이로 인해 포맷 스트링 공격에 취약해질 수 있습니다.\n문자열 형식화는 한 번만 적용하도록 합니다. 형식 문자열로는 아예 문자열 상수만 사용하는 것이 안전합니다.",
  "rule.sast.q.objc.1903.example.0.dangerous": "라인 6: informativeTextWithFormat 인자로 [NSString stringWithFormat] 메시지의 반환 값을 전달합니다. 이 인자는 다시 형식화의 대상이 되므로 중복 형식화가 발생합니다.",
  "rule.sast.q.objc.1903.example.0.safe": "라인 6: 문자열 형식화는 한 번만 이루어지도록 자성합니다.",
  "rule.sast.q.objc.1903.name": "중복 형식화된 문자열",
  "rule.sast.q.objc.1903.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.q.objc.1903.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.q.objc.1903.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.q.objc.1903.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.q.objc.1903.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"add_header\")",
  "rule.sast.q.objc.1903.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.q.objc.1903.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.q.objc.1903.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.q.objc.1905.description": "CFArrayGetValueAtIndex에서의 버퍼 오버플로우 체커는 버퍼 크기를 벗어난 CFArrayRef 버퍼 접근을 검출합니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\nCFArrayGetValueAtIndex() 함수를 호출할 때 버퍼 크기에 맞는 접근 인자를 사용합니다.",
  "rule.sast.q.objc.1905.example.0.dangerous": "라인 4: 버퍼 크기가 0인 A의 첫 번째 요소에 접근하고 있습니다.",
  "rule.sast.q.objc.1905.example.0.safe": "라인 4: 충분한 버퍼 크기를 확보 후 접근하거나 접근 전 배열의 크기를 확인합니다.",
  "rule.sast.q.objc.1905.name": "CFArrayGetValueAtIndex에서의 버퍼 오버플로우",
  "rule.sast.q.objc.1907.description": "0으로 나누기 체커는 0으로 나누기를 수행하는 코드를 검출합니다.\n나누기는 0을 제수로 사용하는 것에 대해 정의되어 있지 않으므로 0으로 나누기 연산을 시도하면 CPU 수준에서 예외가 발생할 수 있습니다. 이로 인해 프로그램이 비정상적으로 종료되거나 DoS(Denial of Service)가 발생할 수 있습니다.\n나누기를 수행할 때 제수에 해당하는 두 번째 인자가 0일 가능성이 있는지 확인합니다. 두 번째 인자값의 범위에 대한 확신이 없다면 연산을 수행하기 전에 제수가 0이 아닌지 확인하는 코드를 추가하는 것이 좋습니다.",
  "rule.sast.q.objc.1907.example.0.dangerous": "라인 6: 0으로 나누기를 수행합니다.",
  "rule.sast.q.objc.1907.example.0.safe": "라인 6: 나누는 수가 0일 경우엔 나누지 않도록 미리 확인합니다.",
  "rule.sast.q.objc.1907.name": "0으로 나누기",
  "rule.sast.q.objc.1908.description": "부적절한 가변 길이 배열 크기 체커는 길이 표현식의 값이 정의되어 있지 않거나 0으로 정의된 VLA 선언을 검출합니다.\n정의되지 않은 값을 사용하면 예측할 수 없는 임의의 값이 들어갈 수 있으므로 항상 문제가 되며 길이가 항상 0인 가변 길이 배열은 무의미하므로 피하는 것이 좋습니다.\n가변 배열의 길이를 정하는 표현식은 반드시 0이 아닌 값으로 정의되어 있어야 합니다.",
  "rule.sast.q.objc.1908.example.0.dangerous": "라인 3: y값이 초기화되지 않았습니다.\n라인 7: x값이 0으로 초기화되었습니다.",
  "rule.sast.q.objc.1908.example.0.safe": "라인 3: 배열 길이를 나타내는 변수가 초기화되었습니다.\n라인 7: 배열 길이 표현식의 결과값이 0이 아닙니다.",
  "rule.sast.q.objc.1908.name": "부적절한 가변 길이 배열 크기",
  "rule.sast.q.objc.1917.description": "mktemp의 잘못된 사용 체커는 위험한 mktemp() 함수를 사용해 임시 파일을 생성하는 경우를 검출합니다.\nmktemp() 함수는 보안에 취약한 함수입니다. 임시 파일의 이름을 공격자가 예측 가능한 이름으로 생성하거나 임의의 프로그램이 접근 가능한 권한으로 생성하면 공격자가 임시 파일의 내용을 조작하여 프로그램에 오동작을 일으킬 수 있습니다.\nmktemp() 함수 대신 mkstemp() 함수를 사용합니다.",
  "rule.sast.q.objc.1917.example.0.dangerous": "라인 2: mktemp() 함수를 사용했습니다.",
  "rule.sast.q.objc.1917.example.0.safe": "라인 2: mkstemp() 함수를 사용합니다.",
  "rule.sast.q.objc.1917.name": "mktemp의 잘못된 사용",
  "rule.sast.q.objc.1918.description": "vfork의 잘못된 사용 체커는 위험한 vfork() 함수 호출을 검출합니다.\nvfork함수는 이식성과 보안성에 취약합니다. 정의되지 않는 동작 및 구현에 의존한 동작이 많기 때문에 서비스 거부 공격 취약점을 일으킬 수 있습니다.\nvfork() 함수 대신 fork() 함수를 사용하도록 합니다.",
  "rule.sast.q.objc.1918.example.0.dangerous": "라인 2: vfork() 함수를 사용했습니다. 이 경우 vfork() 함수와 execve() 함수 사이에 호출되는 setuid() 함수는 어떻게 동작할지 개발자가 예측하기 힘듭니다.",
  "rule.sast.q.objc.1918.example.0.safe": "라인 3: fork() 함수를 사용하십시오.",
  "rule.sast.q.objc.1918.name": "vfork의 잘못된 사용",
  "rule.sast.q.objc.1919.description": "CFArrayCreate의 잘못된 사용 체커는 CFArrayCreate() 함수로 배열을 만들 때 포인터 배열을 전달하지 않는 경우를 검출합니다.\n공식 문서에 정의된 바에 따르면 CFArrayCreate() 함수의 두 번째 인자 values로는 포인터 타입을 원소로 갖는 배열을 전달해야 합니다.\n포인터 배열을 전달하도록 수정합니다.",
  "rule.sast.q.objc.1919.example.0.dangerous": "라인 5: 배열 x의 원소가 포인터 타입이 아닙니다.\n라인 6: k가 배열이 아닙니다.",
  "rule.sast.q.objc.1919.example.0.safe": "라인 4: 배열 y의 원소가 포인터입니다.",
  "rule.sast.q.objc.1919.name": "CFArrayCreate의 잘못된 사용",
  "rule.sast.q.objc.1925.description": "getpw의 잘못된 사용 체커는 getpw() 함수 호출을 검출합니다.\ngetpw() 함수는 보안에 취약한 함수입니다.\ngetpw() 함수 대신 getpwuid() 함수를 사용하십시오.",
  "rule.sast.q.objc.1925.example.0.dangerous": "라인 3: getpw() 함수를 사용했습니다.",
  "rule.sast.q.objc.1925.example.0.safe": "라인 4: getpwuid() 함수를 사용하십시오.",
  "rule.sast.q.objc.1925.name": "getpw의 잘못된 사용",
  "rule.sast.q.objc.1926.description": "gets의 잘못된 사용 체커는 gets() 함수 호출을 검출합니다.\ngets() 함수는 보안에 취약한 함수입니다.\ngets() 함수 대신 fgets() 함수를 사용하십시오.",
  "rule.sast.q.objc.1926.example.0.dangerous": "라인 3: getpw() 함수를 사용했습니다.",
  "rule.sast.q.objc.1926.example.0.safe": "라인 3: fgets() 함수를 사용하십시오.",
  "rule.sast.q.objc.1926.name": "gets의 잘못된 사용",
  "rule.sast.q.objc.1927.description": "random의 잘못된 사용 체커는 random() 함수 호출을 검출합니다.\nrandom() 함수는 보안에 취약한 함수입니다.\nrandom() 함수 대신 arc4random() 함수를 사용하십시오.",
  "rule.sast.q.objc.1927.example.0.dangerous": "라인 2: random() 함수를 사용했습니다.",
  "rule.sast.q.objc.1927.example.0.safe": "라인 2: arc4random() 함수를 사용하십시오.",
  "rule.sast.q.objc.1927.name": "random의 잘못된 사용",
  "rule.sast.q.objc.1928.description": "strcpy의 잘못된 사용 체커는 strcpy() 함수 호출을 검출합니다.\nstrcpy() 함수는 보안에 취약한 함수입니다.\nstrcpy() 함수 대신 strncpy() 함수를 사용하십시오.",
  "rule.sast.q.objc.1928.example.0.dangerous": "라인 5: strcpy() 함수를 사용했습니다.",
  "rule.sast.q.objc.1928.example.0.safe": "라인 5: strncpy() 함수를 사용하십시오.",
  "rule.sast.q.objc.1928.name": "strcpy의 잘못된 사용",
  "rule.sast.q.objc.1930.description": "Unix API의 잘못된 사용 체커는 Unix 계열 운영 체제의 API 함수를 규약대로 사용하지 않은 경우를 검출합니다.\nAPI 함수를 규약에 맞게 사용하지 않으면 시스템에 의도하지 않은 영향을 미치거나 프로그램이 잘못된 동작을 할 수 있습니다.\nAPI 함수는 정해진 규약에 맞게 올바른 방법으로 호출합니다.",
  "rule.sast.q.objc.1930.example.0.dangerous": "라인 1: open() 함수의 2번째 인자로 O_CREAT 플래그를 전달할 경우에 3번째 인자가 필요합니다.\n라인 2: malloc() 함수를 통해 0바이트를 할당했습니다.",
  "rule.sast.q.objc.1930.example.0.safe": "라인 1: open() 함수를 바르게 사용합니다.\n라인 2: malloc() 함수를 바르게 사용합니다.",
  "rule.sast.q.objc.1930.name": "Unix API의 잘못된 사용",
  "rule.sast.q.objc.1976.description": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.\n프로그램이 무한 재귀 호출 상태에 빠지면 대부분 메모리나 스택 등의 리소스를 계속해서 할당받기 때문에 성능 저하 및 의도하지 않은 프로그램 종료를 일으킬 수 있습니다. 정적 분석을 통해서 무한 재귀 호출 혹은 무한 루프를 사전에 완벽하게 예방하는 것은 이론적으로 불가능합니다. 따라서 이 체커는 대표적인 특정 패턴이나 간단한 경우에 대해서만 검사가 가능합니다.\n재귀 호출 구문을 올바른 제어 구문 아래에 둡니다. 재귀 호출의 종료 조건을 제대로 지정할 자신이 없다면 재귀 호출 대신 반복문을 사용하여 같은 기능을 작성하는 것도 좋습니다.",
  "rule.sast.q.objc.1976.example.0.dangerous": "라인 2: 조건이 없는 재귀 호출 구문에 의해 무한 재귀 호출이 발생합니다.",
  "rule.sast.q.objc.1976.example.0.safe": "라인 2: 무한 재귀 호출에 빠지지 않도록 재귀 호출의 조건을 지정합니다.",
  "rule.sast.q.objc.1976.name": "무한 재귀 호출",
  "rule.sast.q.objc.1988.description": "안전하지 않은 권한 제어 체커는 seteuid() 함수를 사용한 루트 권한 획득을 검출합니다.\nseteuid() 함수의 인자로 0을 전달하면 루트 권한 획득을 시도하게 됩니다.\n루트 권한을 획득하면 예상하지 못한 정보 유출의 위험이 생깁니다.\n루트 권한 획득을 시도하지 않습니다.",
  "rule.sast.q.objc.1988.example.0.dangerous": "라인 5: seteuid() 함수의 인자로 0이 전달되었습니다.",
  "rule.sast.q.objc.1988.example.0.safe": "라인 8: root 권한 획들을 시도하지 않습니다.",
  "rule.sast.q.objc.1988.name": "안전하지 않은 권한 제어",
  "rule.sast.q.objc.1989.description": "안전하지 않은 권한 초기화 체커는 chroot() 함수 호출 후 seteuid() 함수 호출로 권한을 다시 초기화하지 않는 경우를 검출합니다.\n임시 권한 사용 후 권한을 원래대로 초기화하지 않으면 프로그램이 공격에 악용될 수 있습니다.\n임시 권한 사용이 끝나면 권한을 초기화합니다.",
  "rule.sast.q.objc.1989.example.0.dangerous": "라인 6: chroot() 함수가 호출되지만 후 seteuid() 함수가 호출되지 않습니다.",
  "rule.sast.q.objc.1989.example.0.safe": "라인 7: chroot() 함수를 사용한 후에 seteuid() 함수를 호출합니다.",
  "rule.sast.q.objc.1989.name": "안전하지 않은 권한 초기화",
  "rule.sast.q.objc.1990.description": "익명 LDAP 바인딩 사용 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.\nldap_simple_bind_s() 함수의 2, 3번째 인자가 널이면 익명 LDAP 바인딩이 수행되어 적절한 인증 없이 정보를 노출하게 됩니다.\n사용자 인증을 위한 별도의 작업을 수행하지 않고 익명 바인딩을 허용하면 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.\n사용자 이름과 비밀번호를 명시하여 LDAP 바인딩을 수행합니다.",
  "rule.sast.q.objc.1990.example.0.dangerous": "라인 5: ldap_simple_bind_s() 함수의 2,3번째 인자가 널입니다.",
  "rule.sast.q.objc.1990.example.0.safe": "라인 10: 올바르게 LDAP 인증을 처리합니다.",
  "rule.sast.q.objc.1990.name": "익명 LDAP 바인딩 사용",
  "rule.sast.q.objc.2895.description": "해제된 메모리 사용 체커는 해제된 메모리 블록을 다시 참조하는 코드를 검출합니다.\n해제된 메모리를 사용하면 비정상적인 값을 사용하여 시스템에도 비정상적인 상태가 발생할 수 있습니다.\n메모리를 사용하기 전에 해제되었는지를 확인합니다.",
  "rule.sast.q.objc.2895.example.0.dangerous": "라인 21: buf 메모리를 해제했습니다.\n라인 22: 해제한 메모리를 사용합니다.",
  "rule.sast.q.objc.2895.example.0.safe": "라인 21: 메모리는 반드시 해제 전에만 사용하도록 합니다.",
  "rule.sast.q.objc.2895.name": "해제된 메모리 사용",
  "rule.sast.q.objc.2901.description": "위험한 함수 사용 체커는 옵션에 지정된 위험하다고 알려진 함수를 사용하는 코드를 검출합니다.\n특정 라이브러리 함수는 보안 취약점에 노출되어 있습니다. 보안에 취약한 함수 대신 안전한 함수를 사용하도록 합니다.\n위험하다고 알려진 함수를 사용하지 않도록 합니다.",
  "rule.sast.q.objc.2901.example.0.dangerous": "라인 4: 위험한 함수인 strcpy() 함수를 사용했습니다.",
  "rule.sast.q.objc.2901.example.0.safe": "라인 4: 버퍼 오버플로우를 방지할 수 있는 strncpy() 함수를 사용하도록 합니다.",
  "rule.sast.q.objc.2901.name": "위험한 함수 사용",
  "rule.sast.q.objc.2901.option.dangerous_functions.description": "사용을 금지할 함수 목록을 적습니다.",
  "rule.sast.q.objc.2901.option.dangerous_functions.name": "금지 함수 목록",
  "rule.sast.q.objc.2902.description": "메모리 누수 체커는 더 이상 필요하지 않은 할당된 메모리를 해제하지 않는 코드를 검출합니다.\n메모리 누수는 형식이 잘못된 데이터의 부적절한 처리 또는 예상하지 못한 세션 중단에 의해 발생합니다. 따라서 시스템의 성능을 저하시키거나 서비스가 불가능한 상태로 이어질 수 있습니다.\n동적으로 할당된 메모리를 반드시 해제하도록 합니다. 특히 조건 검사를 수행하고 함수를 반환하기 전에 사용한 메모리를 해제하는 것을 누락하는 경우가 있습니다.",
  "rule.sast.q.objc.2902.example.0.dangerous": "라인 6: malloc()을 사용하여 buf 변수에 메모리를 할당했습니다.\n라인 9: buf 변수에 할당한 메모리를 해제 하지 않고 함수를 반환했습니다.",
  "rule.sast.q.objc.2902.example.0.safe": "라인 9: 할당된 메모리를 해제합니다. 함수를 반환하기 전에 할당된 메모리를 해제해야 합니다.",
  "rule.sast.q.objc.2902.name": "메모리 누수",
  "rule.sast.q.php.1682.description": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.\n프로그램이 무한 재귀 호출 상태에 빠지면 대부분 메모리나 스택 등의 리소스를 계속해서 할당받기 때문에 성능 저하 및 의도하지 않은 프로그램 종료를 일으킬 수 있습니다. 정적 분석을 통해서 무한 재귀 호출 혹은 무한 루프를 사전에 완벽하게 예방하는 것은 이론적으로 불가능합니다. 따라서 이 체커는 대표적인 특정 패턴이나 간단한 경우에 대해서만 검사가 가능합니다.\n재귀 호출 구문을 올바른 제어 구문 아래에 둡니다. 재귀 호출의 종료 조건을 제대로 지정할 자신이 없다면 같은 기능을 재귀 호출 대신 반복문을 사용해 작성하는 것을 고려해보는 것도 좋습니다.",
  "rule.sast.q.php.1682.example.0.dangerous": "라인 2: 재귀적으로 정의되는 함수의 경우, 재귀 호출이 조건문 혹은 반복문 블록 외부에서 일어나면 대부분 무한 재귀를 발생시킵니다.",
  "rule.sast.q.php.1682.example.0.safe": "라인 2: 모든 재귀 호출은 조건문이나 반복문 블록 안에서 이루어져야 합니다.",
  "rule.sast.q.php.1682.name": "무한 재귀 호출",
  "rule.sast.q.php.1684.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.q.php.1684.example.0.dangerous": "라인 3: catch 블록이 비어 있습니다.",
  "rule.sast.q.php.1684.example.0.safe": "라인 3: catch 블록에는 반드시 예외 처리 코드를 포함하도록 합니다.",
  "rule.sast.q.php.1684.name": "빈 catch 블록",
  "rule.sast.q.php.1685.description": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.\n지나치게 일반적인 예외 처리를 하게 되면 특별히 처리해야 하는 개별 예외를 적절히 처리하지 못할 뿐 아니라 이 지점에서 논리적으로 발생해서는 안되는 예외까지 처리하게 됩니다. 이러한 경우에 개발 및 검수 과정에서 발견되었어야 하는 설계 및 구현 상 결함이 발견되지 못한 채 배포 단계로 넘어가서 더 큰 문제의 원인이 될 수 있습니다.\n해당 코드 구역에서 발생할 수 있는 세부적인 예외들을 명시적으로 나눠서 처리하는 것이 좋습니다. 일반적인 예외를 처리하더라도 예측 가능한 세부적인 예외들을 먼저 처리한 후 마지막에 처리하도록 합니다. 이렇게 작성했을 때 실행 흐름이 일반적인 예외 처리 부분에 도달했다면 개발 과정에서 예측하지 못한 예외가 발생한 것이므로 조용히 넘어가지 않고 상황에 대한 상세한 기록을 남겨서 추후 결함을 수정할 수 있도록 합니다.",
  "rule.sast.q.php.1685.example.0.dangerous": "라인 3: 광범위한 예외 클래스를 사용하여 예외를 처리하고 있습니다.",
  "rule.sast.q.php.1685.example.0.safe": "라인 3: 상세한 예외 클래스를 사용하도록 합니다.",
  "rule.sast.q.php.1685.name": "지나치게 일반적인 예외 처리",
  "rule.sast.q.php.1685.option.overly_broad_exception.description": "지나치게 일반적인 예외들의 이름을 작성합니다.",
  "rule.sast.q.php.1685.option.overly_broad_exception.name": "지나치게 일반적인 예외",
  "rule.sast.q.php.1686.description": "널 역참조 체커는 널이 할당된 변수를 널 확인 없이 역참조하는 경우를 검출합니다.\n널 참조를 역참조하면 프로그램 실행 중에 널 포인터 예외가 발생하여 프로그램 실행이 비정상적으로 종료될 수 있습니다.\n공격자는 널 예외로 발생하는 취약점을 사용하여 후 공격을 계획할 수 있습니다.\n널일 수도 있는 값은 반드시 널인지 확인한 후 사용합니다.",
  "rule.sast.q.php.1686.example.0.dangerous": "라인 2: 널 변수에 대해 참조를 수행하고 있습니다.",
  "rule.sast.q.php.1686.example.0.safe": "라인 2: 널이 할당될 수 있는 변수를 참조하기 전에 널 검사를 수행합니다.",
  "rule.sast.q.php.1686.name": "널 역참조",
  "rule.sast.q.php.1687.description": "자원 누수 체커는 특정 리소스가 할당된 다음, 회수되지 않은 경우를 검출합니다.\n특히 파일, 그래픽, DB 링크 등의 리소스를 해제하지 않은 경우 프로그램이 종료되지 않는 한 해당 리소스를 재사용하지 못할 수 있습니다.\n시스템 성능이 저하되거나, 기능이 중단되거나, DoS(Denial of Service)가 발생하거나, 리소스를 획득하는 데 실패할 수 있습니다.\n한 메소드 안에서 할당받은 리소스는 그 메소드가 종료되기 전에 반드시 반환할 수 있도록 코드를 작성합니다.",
  "rule.sast.q.php.1687.example.0.dangerous": "라인 1: $var에 파일 리소스를 할당하고 사용하고 있지만 함수가 끝나는 시점에도 해제하지 않았습니다.",
  "rule.sast.q.php.1687.example.0.safe": "라인 4: 라인 1에서 할당된 리소스를 반드시 해제합니다.",
  "rule.sast.q.php.1687.name": "자원 누수",
  "rule.sast.q.php.1688.description": "해제된 자원 사용 체커는 리소스를 반환한 후에 다시 사용하는 경우를 검출합니다.\n파일 리소스를 반환한 후에 다시 사용하는 경우를 검출합니다. 리소스를 바르게 사용하는 순서는 다음과 같습니다. 1) 리소스를 엽니다. 2) 리소스로부터 데이터를 받아옵니다. 3) 리소스를 닫습니다.\n만약 리소스를 닫은 후에 데이터를 가지고 온다면 프로그램이 정상적으로 수행되지 않을 수 있습니다.\n반환한 리소스를 다시 사용하지 않도록 리소스 사용 및 해제를 올바른 순서로 처리합니다.",
  "rule.sast.q.php.1688.example.0.dangerous": "라인 5: 리소스를 해제한 뒤에 다시 fread()로 리소스에 접근을 수행합니다.",
  "rule.sast.q.php.1688.example.0.safe": "라인 5: 리소스는 모두 사용한 뒤에 마지막으로 해제하도록 합니다.",
  "rule.sast.q.php.1688.name": "해제된 자원 사용",
  "rule.sast.q.php.913.description": "금지된 함수 사용 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.\n호출을 금지할 함수는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 함수를 사용하지 않도록 금지해야 하는 경우가 있습니다. 예를 들어, 프로젝트 전체의 일관성을 유지하거나, 다른 방법을 통해 해당 함수를 더 이상 사용하지 않는 경우, 혹은 해당 함수에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 함수를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.sast.q.php.913.example.0.dangerous": "라인 2: forbidden() 함수의 호출이 금지되었다고 가정했을 때, 이 함수를 사용하고 있습니다.",
  "rule.sast.q.php.913.example.0.safe": "라인 2: 금지된 함수를 호출하지 않습니다.",
  "rule.sast.q.php.913.name": "금지된 함수 사용",
  "rule.sast.q.php.913.option.forbidden_function.description": "금지할 함수 이름을 작성합니다.<br />예시) .*forbidden.*",
  "rule.sast.q.php.913.option.forbidden_function.name": "금지할 함수",
  "rule.sast.q.py.2401.description": "하드코딩된 경로 구분자 체커는 하드코딩된 경로 구분 문자를 사용하는 경우를 검출합니다.\n하드코딩된 경로 구분자를 사용하면 다른 플랫폼에서 실행해야 할 때 이식성 문제를 일으킬 수 있습니다.\n하드코딩된 경로 구분자 대신 언어에서 제공하는 경로 구분자를 사용하거나, 별도 변수로 정의해서 사용합니다.",
  "rule.sast.q.py.2401.example.0.dangerous": "라인 3: UNIX용 파일 구분 문자 \"/\"를 직접 사용하고 있습니다. 윈도우즈 환경에서 실행할 경우 의도와 다른 동작을 할 수 있습니다.",
  "rule.sast.q.py.2401.example.0.safe": "라인 3: API가 제공하는 경로 구분 문자 변수 os.path.sep를 사용합니다.\n라인 4: API가 제공하는 경로 생성용 os.path.join() 함수를 사용합니다.",
  "rule.sast.q.py.2401.name": "하드코딩된 경로 구분자",
  "rule.sast.q.py.2401.option.file_separators.description": "하드코딩된 파일 구별자를 입력합니다.<br />예시) //",
  "rule.sast.q.py.2401.option.file_separators.name": "파일 구별자",
  "rule.sast.q.py.2401.option.path_consumer.description": "파일 경로를 사용하는 함수를 작성합니다.<br />예시) open:name:1",
  "rule.sast.q.py.2401.option.path_consumer.name": "경로 함수",
  "rule.sast.q.py.2841.description": "금지된 함수 사용 체커는 사용이 금지된 메소드를 호출하는 코드를 검출합니다.\n호출을 금지할 메소드는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 메소드를 사용하지 못하도록 해야 하는 경우가 있습니다. 프로젝트 전체의 일관성을 위해서일 수도 있고, 더 나은 다른 방법이 개발되어서 해당 메소드는 더 이상 사용하지 않게 되었을 수도 있고, 혹은 해당 메소드에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 메소드를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.sast.q.py.2841.example.0.dangerous": "라인 2: forbidden() 함수 호출을 금지했을 경우, 해당 함수를 검출합니다.",
  "rule.sast.q.py.2841.example.0.safe": "라인 2: forbidden() 함수를 호출하지 않습니다.",
  "rule.sast.q.py.2841.name": "금지된 함수 사용",
  "rule.sast.q.py.2841.option.forbidden_method.description": "금지할 함수의 이름을 작성합니다.<br />예시) .*forbidden.*",
  "rule.sast.q.py.2841.option.forbidden_method.name": "금지할 함수",
  "rule.sast.q.rust.5881.description": "Rust 언어로 개발할 때 컴파일러 옵션들을 설정하여, 소프트웨어의 안정성과 보안을 향상시킬 수 있습니다. `debug-assertions`와 `overflow-checks`는 Cargo의 설정 옵션으로, 각각 디버그 단언문의 활성화와 정수 오버플로우 체크를 제어합니다. 이러한 변수들을 오버라이드하면, 개발 중에 중요한 디버깅 정보나 오류 체크 기능이 손실될 수 있습니다. 이는 버그가 발생했을 때 문제를 찾고 수정하는 데 어려움을 발생시킬 수 있습니다.\nCargo.toml 파일 내의 [profile.dev] 및 [profile.test] 섹션에서 `debug-assertions`와 `overflow-checks` 변수에 대한 설정을 변경하지 않습니다. 이 변수들은 기본값을 유지하여 개발자가 디버깅과 오류 체크를 원활하게 수행할 수 있도록 합니다.",
  "rule.sast.q.rust.5881.example.0.dangerous": "라인 4, 8: overflow-checks가 false로 설정되어, 디버그 단언문이 무시됩니다.\n라인 5, 9: debug-assertions가 false로 설정되어, 정수 오버플로우가 발생해도 감지되지 않습니다.",
  "rule.sast.q.rust.5881.example.0.safe": "라인 4, 8: overflow-checks의 기본값이 true로 설정되어 있어 안전합니다.\n라인 5, 9: debug-assertions의 기본값이 true로 설정되어 있어 안전합니다.",
  "rule.sast.q.rust.5881.name": "부적절한 cargo 설정",
  "rule.sast.q.rust.5882.description": "unsafe 블록은 Rust에서 메모리 안전성을 보장하지 않기 때문에 가능한 피해야 합니다. 그러나, C 언어 함수를 사용, 임베디드 프로그래밍, 불가피한 경우에는 unsafe를 사용할 수 있습니다.\n특별한 경우에만 unsafe 블록을 사용하며, 반드시 적절한 이유와 함께 안전한 방법을 도입해야 합니다. 또한, 코드에서 unsafe 블록의 사용을 금지하기 위해 가능한 경우 #![forbid(unsafe_code)] 어트리뷰트를 추가하여야 합니다. 이러한 조치를 통해 코드의 안전성을 보장하고 관련된 보안 취약점을 예방할 수 있습니다.",
  "rule.sast.q.rust.5882.example.0.dangerous": "라인 1: #[forbid(unsafe_code)] 어트리뷰트가 사용되지 않아, 메모리 안전성을 보장하지 않기 때문에 위험합니다.\n라인 6: unsafe는 메모리 안전성을 보장하지 않기 때문에 위험합니다.",
  "rule.sast.q.rust.5882.example.0.safe": "라인 5: unsafe이 사용되었지만, 블록 내부에서 포인터 산술은 임베디드 프로그램으로 판단하여 허용합니다.",
  "rule.sast.q.rust.5882.name": "unsafe 사용 금지",
  "rule.sast.q.rust.5883.description": "산술 연산이 오버플로우를 발생시킬 가능성이 있을 때 특수화된 함수나 타입을 사용해야 합니다. 산술 연산 중 오버플로우가 발생하면 예기치 않은 결과를 초래할 수 있으며 이는 종종 보안 취약점으로 이어질 수 있습니다. 따라서, 오버플로우 가능성이 있는 산술 연산에서는 이를 적절히 처리해야 합니다.\n오버플로우가 발생할 가능성이 있는 산술 연산에 대해서는 overflowing_<op>, wrapping_<op> 메서드 또는 Wrapping 타입을 사용하여 명시적으로 오버플로우를 처리합니다. 오버플로우가 발생할 가능성이 있는 연산으로는 범위를 넘어서는 연산, 외부 입력에 대한 연산, 타입 캐스팅 후 연산 등이 있습니다.",
  "rule.sast.q.rust.5883.example.0.dangerous": "라인 5: 오버플로우가 발생할 가능성이 있는 산술 연산으로 인해 예기치 않은 결과가 발생할 수 있으므로 위험합니다.",
  "rule.sast.q.rust.5883.example.0.safe": "라인 5: 오버플로우가 발생할 가능성이 있는 산술 연산에 대해 wrapping_add()를 사용하여 처리했습니다.",
  "rule.sast.q.rust.5883.name": "잠재적 오버플로우 래핑",
  "rule.sast.q.rust.5884.description": "코드의 가독성을 향상시키고 에러 처리를 보다 명확하게 하기 위해 `?` 연산자를 사용하고, 더 이상 권장되지 않는 `try!` 매크로의 사용을 피해야 합니다. `try!` 매크로는 오래된 문법이며 `?` 연산자가 도입되면서 사용을 권장하지 않게 되었습니다. `try!` 매크로를 사용하는 것은 코드의 일관성을 해칠 뿐만 아니라 개발자들에게 혼동을 줄 수 있습니다.\n`try!`매크로를 `?` 연산자로 교체하면 코드의 가독성과 일관성을 향상시킬 수 있습니다.",
  "rule.sast.q.rust.5884.example.0.dangerous": "라인 4: 오래된 문법인 'try!' 매크로가 코드의 일관성과 가독성을 해칠 수 있기에 권장되지 않습니다.",
  "rule.sast.q.rust.5884.example.0.safe": "라인 4: `?` 연산자을 사용하여 코드의 가독성과 일관성을 향상시킬 수 있습니다.",
  "rule.sast.q.rust.5884.name": "try! 사용 금지",
  "rule.sast.q.rust.5885.description": "unwrap(), expect(), assert!()와 같이 Rust 프로그램을 패닉 상태로 만들고 예기치 않게 종료시킬 수 있는 함수와 매크로의 사용을 피해야 합니다. 패닉이 발생하면 리소스가 일관되지 않은 상태로 남을 수 있고, 데이터 손실이 발생하거나 제대로 처리되지 않을 때 취약점이 노출될 수 있습니다.\nunwrap(), expect(), assert!()를 사용하는 코드는 이들이 안전하게 사용될 수 있는 이유가 명확한 경우에만 허용해야 합니다. unwrap(), expect(), assert!()를 사용하는 대신 함수가 Result 혹은 Option 타입을 반환하도록 변경하여 호출자가 에러를 명시적으로 처리해야 합니다. 외부 코드(FFI)와의 상호 작용 중 안전하게 처리해야 하는 경우, `std::panic::catch_unwind` 또는 `std::panic` 모듈을 활용하여 패닉 상황을 관리해야 합니다.",
  "rule.sast.q.rust.5885.example.0.dangerous": "라인 4: 프로그램을 패닉 상태로 만들고 예기치 않게 종료시킬 수 있는 assert!() 매크로를 사용하여 위험합니다.",
  "rule.sast.q.rust.5885.example.0.safe": "라인 13: Result 혹은 Option 타입을 반환하는 함수의 사용으로 에러를 명시적으로 처리하여 안전합니다.",
  "rule.sast.q.rust.5885.name": "panic 유발 함수 금지",
  "rule.sast.q.rust.5886.description": "직접적인 배열 인덱싱은 잠재적으로 패닉을 일으킬 수 있으며 이는 런타임 중에 프로그램을 중단시킬 위험을 갖고 있습니다. 이를 위해 인덱스가 배열의 범위 내에 있는지 확실하게 확인하거나, 패닉 없이 Option을 반환하는 get 메소드를 사용해야 합니다.\n배열 인덱싱 전에 인덱스가 배열의 크기 내에 있는지 확인하고, 가능한 get 메소드를 사용하여 인덱스 접근을 안전하게 합니다. get 메소드는 유효하지 않은 인덱스에 대해 None을 반환하므로 패닉을 발생시키지 않습니다.",
  "rule.sast.q.rust.5886.example.0.dangerous": "라인 3: 인덱스가 배열의 범위 내에 위치하는지 명확하게 검증하지 않으면 이로 인해 잠재적으로 패닉이 발생할 수 있습니다.",
  "rule.sast.q.rust.5886.example.0.safe": "라인 3: 유효하지 않은 인덱스에 대해 None을 반환하는 get 메소드를 사용하여 안전합니다.",
  "rule.sast.q.rust.5886.name": "부적절한 배열 접근",
  "rule.sast.q.rust.5887.description": "나눗셈은 기본적인 연산으로 분모가 0인 경우에는 정의되지 않으며 대부분의 경우 이를 처리하기 위해 실행 시간 에러나 패닉을 발생시킵니다.\n`/` 연산자는 0으로 나누려고 할 때 패닉을 유발합니다. 이를 방지하기 위해 `checked_div` 메소드를 활용하거나 분모가 0인지 명시적으로 확인하는 것이 좋습니다.",
  "rule.sast.q.rust.5887.example.0.dangerous": "라인 5: 나눗셈에서 분모가 0인 경우, 이를 처리하기 위해 실행 시간 에러나 패닉을 발생할 수 있어 위험합니다.",
  "rule.sast.q.rust.5887.example.0.safe": "라인 5: 패닉 발생을 방지하는 `checked_div` 메소드를 사용하여 안전합니다.",
  "rule.sast.q.rust.5887.name": "0으로 나누기",
  "rule.sast.q.rust.5889.description": "`std::mem` 혹은 `core::mem` 모듈의 `forget` 함수는 객체의 소유권을 가져가고, 그 객체의 소멸자(destructor)가 호출되지 않게 합니다. 이는 메모리 누수의 원인이 될 수 있고 리소스가 제대로 해제되지 않을 가능성이 있기 때문에 안전성과 관련된 코드에서는 큰 문제를 일으킬 수 있습니다.\n`forget` 대신 `drop`을 사용하여 객체의 메모리를 안전하게 반환하고 소멸자를 호출해야 합니다. 객체의 소멸자 호출을 지연시키려면 `ManuallyDrop`을 사용하는 방법도 있습니다. 이는 소멸자 호출을 수동으로 제어하면서 메모리 누수를 방지합니다.",
  "rule.sast.q.rust.5889.example.0.dangerous": "라인 5: forget 함수는 객체의 소유권을 가져가고 소멸자가 호출되지 않게 합니다.",
  "rule.sast.q.rust.5889.example.0.safe": "라인 3: drop을 사용하여 객체의 메모리를 안전하게 반환하고 소멸자를 호출하여 안전합니다.",
  "rule.sast.q.rust.5889.name": "forget 사용 금지",
  "rule.sast.q.rust.5890.description": "Rust에서 Box::leak 같은 함수를 사용하면 의도적으로 메모리 누수를 발생시킬 수 있습니다. 이는 일부 특정 상황에서는 필요하다고 여겨질 수 있습니다. 그러나 제어되지 않은 메모리 누수는 시스템 리소스를 불필요하게 소모합니다.\nBox::leak과 같은 메모리 누수를 유발할 수 있는 함수의 사용은 최소화해야 합니다. 메모리 누수가 꼭 필요한 특별한 경우가 아니라면, 이런 함수를 사용하지 않는 것이 바람직합니다.",
  "rule.sast.q.rust.5890.example.0.dangerous": "라인 3: Box::leak 함수의 사용으로 의도적으로 메모리 누수를 발생하여 위험합니다.",
  "rule.sast.q.rust.5890.example.0.safe": "라인 5: main 함수가 종료될 때 자동으로 해제되어 안전합니다.",
  "rule.sast.q.rust.5890.name": "메모리 누수 방지",
  "rule.sast.q.rust.5891.description": "ManuallyDrop은 Rust에서 명시적으로 메모리를 관리하고 메모리 해제를 수동으로 제어할 수 있는 래퍼 타입입니다. 이는 소멸자를 명시적으로 호출하지 않고 소유권을 유지하면서 드랍이 발생하지 않도록 제어하는 경우에 사용합니다.\nManuallyDrop::new로 생성된 인스턴스는 명시적으로 ManuallyDrop::drop을 호출하여 메모리를 수동으로 해제하거나, ManuallyDrop::into_inner를 사용하여 원시 값을 추출하고 자동 메모리 관리를 활용해야 합니다.",
  "rule.sast.q.rust.5891.example.0.dangerous": "라인 4: ManuallyDrop::new로 생성된 인스턴스의 메모리를 해제를 하지 않아 위험합니다.",
  "rule.sast.q.rust.5891.example.0.safe": "라인 6: ManuallyDrop::new로 생성된 인스턴스를 ManuallyDrop::into_inner로 자동 메모리 관리하여 안전합니다.",
  "rule.sast.q.rust.5891.name": "부적절한 ManuallyDrop 해제",
  "rule.sast.q.rust.5892.description": "Rust의 특정 타입들은 into_raw를 통해 raw pointer로 변환될 수 있으며 이는 FFI (Foreign Function Interface) 바인딩과 같이 언어 간의 인터페이스에서 특히 유용합니다. 하지만 into_raw에 의해 변환된 원시 포인터가 적절히 처리되지 않으면 메모리 누수, 데이터 손상, 그리고 애플리케이션의 불안정성을 초래할 수 있습니다.\ninto_raw로 생성된 포인터는 반드시 from_raw를 호출하여 안전한 타입으로 다시 변환해야 합니다. 이 과정을 통해 메모리가 회수되어 다시 Rust의 안전한 관리 하에 들어옵니다.",
  "rule.sast.q.rust.5892.example.0.dangerous": "라인 5: into_raw로 생성된 포인터를 안전한 타입으로 다시 변환하지 않아 불안정성을 초래할 수 있습니다.",
  "rule.sast.q.rust.5892.example.0.safe": "라인 7: into_raw로 생성된 포인터를 from_raw를 호출하여 안전한 타입으로 변환하여 안전합니다.",
  "rule.sast.q.rust.5892.name": "부적절한 포인터 반환",
  "rule.sast.q.rust.5893.description": "Rust 1.38.0부터 deprecated된 std::mem::uninitialized 또는 std::mem::MaybeUninit 타입의 사용은 초기화되지 않은 메모리의 사용이나 드롭을 가능하게 하여 예측할 수 없는 동작과 메모리 안전 문제를 초래할 수 있습니다.\nstd::mem::uninitialized, std::mem::MaybeUninit 등과 같은 초기화되지 않은 메모리의 사용을 가능하게 하는 함수나 메서드의 사용을 피해야 합니다.",
  "rule.sast.q.rust.5893.example.0.dangerous": "라인 8: std::mem::MaybeUninit::uninit 사용은 메모리 안전 문제를 초래할 수 있기 때문에 위험합니다.",
  "rule.sast.q.rust.5893.example.0.safe": "라인 6: 선언된 구조체를 초기화하여 사용하여 안전합니다.",
  "rule.sast.q.rust.5893.name": "초기화되지 않은 메모리 사용",
  "rule.sast.q.rust.5895.description": "FFI(외부 함수 인터페이스)를 통해 다른 언어와 인터페이스 할 때 데이터 무결성을 유지하기 위해 데이터 타입의 호환성을 보장하는 것이 중요합니다. C-호환 타입은 메모리 내의 데이터 레이아웃이 C 언어의 레이아웃을 따르도록 보장하여 FFI 컨텍스트에서 예측 가능하고 상호 운용 가능하게 만들기 때문에 중요합니다.\nFFI에서 C-호환 타입과 호환되지 않는 타입을 잘 구분해서 사용해야 합니다.\n- C-호환 타입: 정수 또는 부동 소수점 기본 타입, repr(C)-주석이 달린 구조체, 하나의 variant이 있고 필드가 없는 variant만 있는 repr(C), repr(Int)-주석이 달린 열거형, 포인터\n- C-비호환 타입: 동적 크기 타입, 트레잇 객체, 필드가 있는 열거형, 튜플 (repr(C) 튜플 구조체는 가능합니다)",
  "rule.sast.q.rust.5895.example.0.dangerous": "라인 4: FFI에서 C-호환 타입과 호환되지 않는 타입을 사용하여 상호 운용에 어려움을 만듭니다.",
  "rule.sast.q.rust.5895.example.0.safe": "라인 5: repr(C) 어노테이션을 사용하여 메모리가 C언어 레이아웃을 따르도록 보장합니다.",
  "rule.sast.q.rust.5895.name": "호환되지 않은 타입 사용 금지",
  "rule.sast.q.swift.2354.description": "HTTP 프로토콜을 통한 전송 체커는 HTTP 프로토콜을 사용하여 데이터를 서버로 보내는 경우를 검출합니다.\nHTTP를 통해 전송된 모든 데이터는 평문으로 전송되므로 노출될 수 있습니다.\nhttps 프로토콜을 통한 전송을 수행합니다.",
  "rule.sast.q.swift.2354.example.0.dangerous": "라인 2: http 프로토콜을 사용하고 있습니다.",
  "rule.sast.q.swift.2354.example.0.safe": "라인 2: https 프로토콜을 사용하고 있습니다.",
  "rule.sast.q.swift.2354.name": "HTTP 프로토콜을 통한 전송",
  "rule.sast.q.swift.2908.description": "금지된 함수 사용 체커는 사용이 금지된 메소드를 호출하는 코드를 검출합니다.\n호출을 금지할 메소드는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 메소드를 사용하지 못하도록 해야 하는 경우가 있습니다. 프로젝트 전체의 일관성을 위해서일 수도 있고, 더 나은 다른 방법이 개발되어서 해당 메소드는 더 이상 사용하지 않게 되었을 수도 있고, 혹은 해당 메소드에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 메소드를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.sast.q.swift.2908.example.0.dangerous": "라인 2: forbidden() 함수 호출을 금지했을 경우, 해당 함수의 사용을 검출합니다.",
  "rule.sast.q.swift.2908.example.0.safe": "라인 2: forbidden() 함수를 호출하지 않습니다.",
  "rule.sast.q.swift.2908.name": "금지된 함수 사용",
  "rule.sast.q.swift.2908.option.forbidden_method.description": "금지할 함수의 이름을 작성합니다.<br />예시) .*forbidden.*",
  "rule.sast.q.swift.2908.option.forbidden_method.name": "금지할 함수",
  "rule.sast.q.swift.2914.description": "무한 재귀 호출 체커는 제대로 제어하지 못한 재귀 호출 함수를 무한히 반복하는 코드를 검출합니다.\n프로그램이 무한 재귀 호출 상태에 빠지면 대부분 메모리나 스택 등의 리소스를 계속해서 할당받기 때문에 성능 저하 및 의도하지 않은 프로그램 종료를 일으킬 수 있습니다. 정적 분석을 통해서 무한 재귀 호출 혹은 무한 루프를 사전에 완벽하게 예방하는 것은 이론적으로 불가능합니다. 따라서 이 체커는 대표적인 특정 패턴이나 간단한 경우에 대해서만 검사가 가능합니다.\n재귀 호출 구문을 올바른 제어 구문 아래에 둡니다. 재귀 호출의 종료 조건을 제대로 지정할 자신이 없다면 재귀 호출 대신 반복문을 사용하여 같은 기능을 작성하는 것도 좋습니다.",
  "rule.sast.q.swift.2914.example.0.dangerous": "라인 4: 조건이 없는 재귀 호출 구문에 의해 무한 재귀 호출이 발생합니다.",
  "rule.sast.q.swift.2914.example.0.safe": "라인 4: 무한 재귀 호출에 빠지지 않도록 재귀 호출의 조건을 지정합니다.",
  "rule.sast.q.swift.2914.name": "무한 재귀 호출",
  "rule.sast.q.unknown.3054.description": "활성화된 Android 매니페스트 내의 debuggable 옵션 체커는 Android 매니페스트 내의 debuggable 옵션을 활성화한 경우를 검출합니다.\nAndroid에서는 manifest에서 android:debuggable 속성을 true로 설정하여 애플리케이션을 디버깅할 수 있습니다. 해당 속성은 기본적으로 false로 설정되므로 비활성화되어 있지만, 애플리케이션의 개발 기간 중에는 디버깅을 돕기 위하여 속성을 true로 바꿀 수 있도록 허용합니다. 애플리케이션의 android:debuggable 속성이 true인 상태로 배포되면 사용자가 애플리케이션에 포함된 민감한 정보에 접근할 수 있고 소스 코드에 접근하지 않고도 앱을 디버깅할 수 있게 됩니다.\nandroid:debuggable 속성을 명시적으로 false로 설정하거나 삭제하여 애플리케이션 디버깅이 불가능하도록 해야 합니다.",
  "rule.sast.q.unknown.3054.example.0.dangerous": "라인 2: android:debuggable 속성이 true로 설정되어 애플리케이션이 디버그 가능한 상태로 배포되었습니다.",
  "rule.sast.q.unknown.3054.example.0.safe": "라인 2: android:debuggable 속성을 명시적으로 false로 설정하거나 삭제하여 애플리케이션 디버깅이 불가능하도록 해야 합니다.",
  "rule.sast.q.unknown.3054.name": "활성화된 Android 매니페스트 내의 debuggable 옵션",
  "rule.sast.q.unknown.970.description": "활성화된 Android 매니페스트 내의 sharedUserId 옵션 체커는 Android 매니페스트 내의 sharedUserId 옵션을 활성화한 경우를 검출합니다.\nAndroid 애플리케이션에서 android:sharedUserId를 사용하여 공유 ID를 설정하게 되면, 같은ID와 서명을 사용하여 다른 애플리케이션이 해당 애플리케이션의 정보를 접근할 수 있게 됩니다. 이는 보안에 문제가 발생할 수 있습니다.\n특별한 이유가 없다면 Android 매니페스트의 android:sharedUserId 옵션은 활성화하지 않도록 합니다.",
  "rule.sast.q.unknown.970.example.0.dangerous": "라인 6: android:sharedUserId 옵션을 활성화하여 공유 ID를 설정했습니다.",
  "rule.sast.q.unknown.970.example.0.safe": "라인 6: android:sharedUserId 옵션을 비활성화하도록 합니다.",
  "rule.sast.q.unknown.970.name": "활성화된 Android 매니페스트 내의 sharedUserId 옵션",
  "rule.sast.q.unknown.971.description": "활성화된 Android 매니페스트 내의 exported 옵션 체커는 Android 매니페스트 내의 exported 옵션을 활성화한 경우를 검출합니다.\nAndroid 애플리케이션에서 android:exported를 활성화하게 되면, 서비스나 액티비티 같은 구성 요소는 외부에서 인텐트를 전달하여 실행할 수가 있습니다. 이것은 외부 애플리케이션에 의해서 의도하지 않게 실행될 경우 보안에 문제가 발생할 수 있습니다. 단, BroadcastReceiver 클래스에서 로컬 브로드캐스트를 사용하여 리시버에 대한 액세스를 제한하는 경우, 해당 리시버 요소에서 발생한 알람은 오탐입니다.\n특별한 이유가 없다면 Android 매니페스트의 android:exported 옵션은 활성화하지 않도록 합니다.",
  "rule.sast.q.unknown.971.example.0.dangerous": "라인 7: android:exported 옵션을 활성화하여 외부에서 인텐트를 전달 및 실행할 수 있게 설정했습니다.",
  "rule.sast.q.unknown.971.example.0.safe": "라인 7: android:exported 옵션을 비활성화하도록 합니다.",
  "rule.sast.q.unknown.971.name": "활성화된 Android 매니페스트 내의 exported 옵션",
  "rule.sast.q.unknown.971.option.is_activity.description": "activity 엘리먼트를 검사합니다.",
  "rule.sast.q.unknown.971.option.is_activity.name": "activity 검사",
  "rule.sast.q.unknown.971.option.is_provider.description": "provider 엘리먼트를 검사합니다.",
  "rule.sast.q.unknown.971.option.is_provider.name": "provider 검사",
  "rule.sast.q.unknown.971.option.is_receiver.description": "receiver 엘리먼트를 검사합니다.",
  "rule.sast.q.unknown.971.option.is_receiver.name": "receiver 검사",
  "rule.sast.q.unknown.971.option.is_service.description": "service 엘리먼트를 검사합니다.",
  "rule.sast.q.unknown.971.option.is_service.name": "service 검사",
  "rule.sast.q.unknown.982.description": "소스 코드 내 계좌 정보 체커는 소스 코드 내에 계좌 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 계좌 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.982.example.0.dangerous": "라인 1~3: 소스 코드에서 계좌 정보를 작성했습니다.",
  "rule.sast.q.unknown.982.example.0.safe": "라인 1: 계좌 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.982.name": "소스 코드 내 계좌 정보",
  "rule.sast.q.unknown.982.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.982.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.982.option.rule.description": "계좌 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.982.option.rule.name": "계좌 정보 정규식",
  "rule.sast.q.unknown.983.description": "소스 코드 내 신용카드 정보 체커는 소스 코드 내에 신용 카드 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 신용 카드 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.983.example.0.dangerous": "라인 1: 소스 코드에서 신용 카드 정보를 작성했습니다.\n라인 2: 소스 코드에서 신용 카드 정보를 작성했습니다.",
  "rule.sast.q.unknown.983.example.0.safe": "라인 1: 신용 카드 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.983.name": "소스 코드 내 신용카드 정보",
  "rule.sast.q.unknown.983.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.983.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.983.option.rule.description": "신용카드 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.983.option.rule.name": "신용카드 정보 정규식",
  "rule.sast.q.unknown.984.description": "소스 코드 내 이메일 주소 체커는 소스 코드 내에 이메일 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 이메일 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.984.example.0.dangerous": "라인 1: 소스 코드에서 이메일 정보를 작성했습니다.",
  "rule.sast.q.unknown.984.example.0.safe": "라인 1: 이메일 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.984.name": "소스 코드 내 이메일 주소",
  "rule.sast.q.unknown.984.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.984.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.984.option.rule.description": "이메일 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.984.option.rule.name": "이메일 정보 정규식",
  "rule.sast.q.unknown.985.description": "소스 코드 내 외국인 등록번호 체커는 소스 코드 내에 외국인 등록 번호 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 외국인 등록 번호 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.985.example.0.dangerous": "라인 1: 소스 코드에서 외국인 등록 번호 정보를 작성했습니다.",
  "rule.sast.q.unknown.985.example.0.safe": "라인 1: 외국인 등록 번호 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.985.name": "소스 코드 내 외국인 등록번호",
  "rule.sast.q.unknown.985.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.985.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.985.option.rule.description": "외국인 등록 번호 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.985.option.rule.name": "외국인 등록 번호 정보 정규식",
  "rule.sast.q.unknown.986.description": "소스 코드 내 IP 정보 체커는 소스 코드 내에 IP 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 IP 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.986.example.0.dangerous": "라인 1: 소스 코드에서 IP 정보를 작성했습니다.",
  "rule.sast.q.unknown.986.example.0.safe": "라인 1: IP 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.986.name": "소스 코드 내 IP 정보",
  "rule.sast.q.unknown.986.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.986.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.986.option.rule.description": "IP 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.986.option.rule.name": "IP 정보 정규식",
  "rule.sast.q.unknown.987.description": "소스 코드 내 주민등록번호 체커는 소스 코드 내에 주민 등록 번호 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 주민 등록 번호 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.987.example.0.dangerous": "라인 1: 소스 코드에서 주민 등록 번호 정보를 작성했습니다.\n라인 2: 소스 코드에서 주민 등록 번호 정보를 작성했습니다.",
  "rule.sast.q.unknown.987.example.0.safe": "라인 1: 주민 등록 번호 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.987.name": "소스 코드 내 주민등록번호",
  "rule.sast.q.unknown.987.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.987.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.987.option.rule.description": "주민 등록 번호 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.987.option.rule.name": "주민 등록 번호 정보 정규식",
  "rule.sast.q.unknown.988.description": "소스 코드 내 여권 번호 체커는 소스 코드 내에 여권 번호 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 여권 번호 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.988.example.0.dangerous": "라인 1: 소스 코드에서 여권 번호 정보를 작성했습니다.\n라인 2: 소스 코드에서 여권 번호 정보를 작성했습니다.",
  "rule.sast.q.unknown.988.example.0.safe": "라인 1: 여권 번호 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.988.name": "소스 코드 내 여권 번호",
  "rule.sast.q.unknown.988.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.988.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.988.option.rule.description": "여권 번호 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.988.option.rule.name": "여권 번호 정보 정규식",
  "rule.sast.q.unknown.989.description": "소스 코드 내 전화 번호 체커는 소스 코드 내에 전화 번호 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 전화 번호 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.989.example.0.dangerous": "라인 1~3: 소스 코드에서 전화 번호 정보를 작성했습니다.",
  "rule.sast.q.unknown.989.example.0.safe": "라인 1: 전화 번호 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.989.name": "소스 코드 내 전화 번호",
  "rule.sast.q.unknown.989.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.989.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.989.option.rule.description": "전화 번호 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.989.option.rule.name": "전화 번호 정보 정규식",
  "rule.sast.q.unknown.990.description": "소스 코드 내 운전면허 정보 체커는 소스 코드 내에 운전 면허 번호 정보를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\n소스 코드에서 운전 면허 번호 정보를 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.990.example.0.dangerous": "라인 1: 소스 코드에서 운전 면허 정보를 작성했습니다.\n라인 2: 소스 코드에서 운전 면허 정보를 작성했습니다.",
  "rule.sast.q.unknown.990.example.0.safe": "라인 1: 운전 면허 정보를 소스 코드내에 작성하지 않도록 합니다.",
  "rule.sast.q.unknown.990.name": "소스 코드 내 운전면허 정보",
  "rule.sast.q.unknown.990.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.q.unknown.990.option.exclude_extension.name": "제외 확장자",
  "rule.sast.q.unknown.990.option.rule.description": "운전 면허 정보 정규식을 입력합니다.",
  "rule.sast.q.unknown.990.option.rule.name": "운전 면허 정보 정규식",
  "rule.sast.q.vbnet.1712.description": "금지된 함수 사용 체커는 사용이 금지된 함수를 호출하는 코드를 검출합니다.\n호출을 금지할 함수는 옵션으로 지정할 수 있습니다.\n각 프로젝트의 상황에 따라 특정한 함수를 사용하지 않도록 금지해야 하는 경우가 있습니다. 예를 들어, 프로젝트 전체의 일관성을 유지하거나, 다른 방법을 통해 해당 함수를 더 이상 사용하지 않는 경우, 혹은 해당 함수에 근본적인 결함이 존재하기 때문일 수도 있습니다.\n금지된 함수를 호출하지 않습니다. 의도한 동작 자체가 금지된 것이 아니라면 같은 동작을 허용된 다른 방식을 통해 구현하는 것을 검토해볼 필요가 있습니다.",
  "rule.sast.q.vbnet.1712.example.0.dangerous": "라인 2: 금지된 forbidden() 함수가 호출되었습니다.",
  "rule.sast.q.vbnet.1712.example.0.safe": "라인 2: 금지된 함수 forbidden()을 호출하지 않습니다.",
  "rule.sast.q.vbnet.1712.name": "금지된 함수 사용",
  "rule.sast.q.vbnet.1712.option.forbidden_function.description": "금지할 함수의 이름을 작성합니다.<br />예시) forbidden",
  "rule.sast.q.vbnet.1712.option.forbidden_function.name": "금지할 함수",
  "rule.sast.q.vbnet.1714.description": "빈 분기문 체커는 비어 있는 분기를 검출합니다.\n분기문이 비어 있는 경우 해당하는 조건에 대한 처리가 미비할 수 있습니다.\n분기문에 해당하는 조건을 처리하는 코드를 작성하십시오.",
  "rule.sast.q.vbnet.1714.example.0.dangerous": "라인 3: else 블록에서 아무런 조치를 취하고 있지 않습니다.",
  "rule.sast.q.vbnet.1714.example.0.safe": "라인 3: else 구문을 처리하거나, 필요 없을 경우 구문을 만들지 않도록 합니다. 이 예시에서는 처리할 필요가 없어 else를 제거했습니다.",
  "rule.sast.q.vbnet.1714.name": "빈 분기문",
  "rule.sast.sw.asp.1005.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot;로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트 리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.asp.1005.example.0.dangerous": "라인 4: 외부 입력 문자열을 필터링 없이 사용했습니다.",
  "rule.sast.sw.asp.1005.example.0.safe": "라인 4: 외부 입력 문자열에서 Replace() 메소드를 사용하여 \"<\"와 \">\"같이 HTML에서 스크립트 생성에 사용되는 모든 문자열을 \"&lt;\"와 \"&gt;\"로 변경합니다. 그러면 악의적인 스크립트가 수행될 위험성을 줄일 수 있습니다. 그러나 이러한 방법이 위험성을 완전히 제거했음을 의미하지는 않습니다.",
  "rule.sast.sw.asp.1005.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.asp.1009.description": "SQL 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 SQL 쿼리를 생성하기 위해 사용하는 코드를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.asp.1009.example.0.dangerous": "라인 5: 입력 데이터를 검사 없이 SQL 쿼리를 만드는 데 사용하여 SQL 삽입 공격의 위험이 있습니다.",
  "rule.sast.sw.asp.1009.example.0.safe": "라인 10: 사용자가 SQL 쿼리의 구조를 변경시키지 못하도록 매개 변수화된 문을 작성해야 합니다.",
  "rule.sast.sw.asp.1009.name": "SQL 삽입",
  "rule.sast.sw.asp.1590.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.asp.1590.example.0.dangerous": "라인 5: 외부 입력 문자열인 fileName이 검증 없이 프로세스가 실행할 파일 이름을 지정하는 데 사용되었습니다.",
  "rule.sast.sw.asp.1590.example.0.safe": "라인 4: 외부 입력 문자열에서 적절한 값이 사용되었는지 정규식을 사용하여 검증합니다.",
  "rule.sast.sw.asp.1590.name": "명령어 삽입",
  "rule.sast.sw.asp.1591.description": "LDAP 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 사용하는 코드를 검출합니다.\n웹 애플리케이션에서 신뢰할 수 없는 외부 입력을 검사하지 않고 사용하는 경우 공격자가 LDAP 명령문을 수정하여 부적절한 권한을 부여하고 의도하지 않은 동작을 실행할 수 있습니다. 따라서 신뢰할 수 없는 외부 입력 문자열을 사용하기 전에 검사해야 합니다.\n외부 입력값을 검사 없이 LDAP 쿼리문으로 사용하는 경우, LDAP 쿼리문이 실행될 때 공격자는 LDAP 쿼리문의 내용을 마음대로 변경할 수 있습니다.\n신뢰할 수 없는 외부 입력 문자열을 LDAP 쿼리문으로 사용하기 전에 검사해야 합니다.",
  "rule.sast.sw.asp.1591.example.0.dangerous": "라인 10: 외부 입력을 통해 전달된 값 loginName이 검증 없이 LDAP 쿼리를 생성하는 데 사용되었습니다.",
  "rule.sast.sw.asp.1591.example.0.safe": "라인 12: 정규식을 사용하여 외부 입력에 대한 검증을 수행합니다.",
  "rule.sast.sw.asp.1591.name": "LDAP 삽입",
  "rule.sast.sw.asp.1592.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회 공격의 위험이 있는 문자( \" / \\ .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.asp.1592.example.0.dangerous": "라인 6: 외부 입력으로 디렉토리 경로 문자열을 생성하는 경우, 공격자가 경로 조작을 통해 의도하지 않은 시스템 오작동을 발생시킬 수 있습니다.",
  "rule.sast.sw.asp.1592.example.0.safe": "라인 8: Replace 등의 메소드를 사용하여 외부 입력에서 위험 문자열(/, \\)을 제거하는 필터링을 수행합니다.",
  "rule.sast.sw.asp.1592.name": "경로 조작",
  "rule.sast.sw.asp.1593.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성할 때 사용되는 외부 입력값에 대해 적절한 검증 절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 됩니다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증 절차를 우회할 수 있습니다. 예를 들어 XQuery 문은 `username='local_user1'` 과 같이 작은 따옴표를 사용하여 username과 비교할 문자열을 구분합니다. 만약 외부에서 비교를 위해 삽입된 문자열에 작은 따옴표가 허용되는 경우 다음과 같은 문자열을 입력할 수 있습니다. `admin' or ''='` 위 문자열을 사용한 쿼리의 조건문은 다음과 같습니다. `username = 'admin' or ''=''`. 여기서 `''=''`은 언제나 true이므로 username 비교 자체를 우회할 수 있습니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "rule.sast.sw.asp.1593.example.0.dangerous": "라인 7: 외부 입력값 UserTextBox.Text 및 PwdTextBox.Text로 생성된 XQuery를 사용하여 검증 없이 XML 데이터에 접근하게 됩니다.",
  "rule.sast.sw.asp.1593.example.0.safe": "라인 10: 외부 입력으로 생성된 값의 경우 String.Replace 와 같은 메소드를 사용하여 위험한 문자열을 제거합니다.",
  "rule.sast.sw.asp.1593.name": "XQuery 삽입",
  "rule.sast.sw.asp.1594.description": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.\nHTTP 요청에 들어 있는 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(Carriage Return) 이나 LF(Line Feed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 사용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손(Cache Poisoning) 공격 등을 수행할 수 있습니다.\n요청 매개 변수의 값을 HTTP 응답 헤더(예, Set-Cookie 등)에 포함시킬 경우 CR, LF와 같은 개행문자를 제거해야 합니다.",
  "rule.sast.sw.asp.1594.example.0.dangerous": "라인 6: 외부 입력으로 생성된 값을 사용하여 HTTP 응답 헤더를 전달했습니다. ASP.NET 프레임워크를 사용할 경우 설정 파일 web.config에서 <httpRuntime enableHeaderChecking=\"false\"/>를 설정하면 해당 애플리케이션은 HTTP 분할 공격에 취약합니다.",
  "rule.sast.sw.asp.1594.example.0.safe": "라인 4: 줄 바꿈 문자인 문자열 '\\n' 및 '\\r'을 필터링합니다.",
  "rule.sast.sw.asp.1594.name": "HTTP 응답 분할",
  "rule.sast.sw.asp.1595.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\nXPath 쿼리문을 만들 때 외부 입력값을 적절한 검사 과정 없이 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 쿼리문의 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(`, [, ], /, =, @ 등) 및 쿼리 예약어를 필터링합니다.",
  "rule.sast.sw.asp.1595.example.0.dangerous": "라인 13: 요청을 통해 전달된 외부 입력 acctId가 검증 없이 XPath 쿼리를 생성하는 데 사용되었습니다.",
  "rule.sast.sw.asp.1595.example.0.safe": "라인 8: 직접 쿼리 문자열을 생성하는 대신 XPathExpression 객체를 사용하여 매개 변수를 지정하면 입력값을 검사할 수 있습니다.",
  "rule.sast.sw.asp.1595.name": "XPath 삽입",
  "rule.sast.sw.asp.1596.description": "자원 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스 식별자를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 대한 접근 혹은 식별을 허용할 경우에 입력값 조작을 통해 시스템이 보호하는 리소스에 임의로 접근할 수 있습니다. 리소스 삽입 약점을 사용하여 공격자는 리소스의 수정/삭제, 시스템 정보 누출, 시스템 리소스 간 충돌로 인한 서비스 장애 등을 발생시킬 수 있습니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 목록에서 선택하도록 합니다.",
  "rule.sast.sw.asp.1596.example.0.dangerous": "라인 10: 요청을 통해 전달된 외부 입력을 직접 소켓 연결에 사용했습니다.",
  "rule.sast.sw.asp.1596.example.0.safe": "라인 8: 입력값을 검사한 후에 사용하거나 안전한 목록에서 선택합니다.",
  "rule.sast.sw.asp.1596.name": "자원 삽입",
  "rule.sast.sw.asp.1597.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.asp.1597.example.0.dangerous": "라인 6: 외부로부터 받은 문자열 변수 URL으로 직접 아무런 검증 없이 연결하고 있습니다.",
  "rule.sast.sw.asp.1597.example.0.safe": "라인 9: 외부로부터 받은 문자열이 로컬 URL인지 확인해 줍니다. 예시와 같이 해당 작업을 해주는 메소드 IsLocalUri를 직접 구현하여 사용할 수도 있고, MVC 3 이상의 프레임워크를 사용한다면 System.Web.Mvc 네임스페이스에 정의되어 있는 Url.IsLocalUrl을 바로 사용해도 됩니다.",
  "rule.sast.sw.asp.1597.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.asp.1598.description": "민감한 정보의 일반 텍스트 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.\n사용자 또는 시스템의 중요 정보가 포함된 데이터를 평문으로 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있습니다.\n민감한 정보를 통신 채널을 통하여 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "rule.sast.sw.asp.1598.example.0.dangerous": "라인 19: 네트워크를 통해 비밀번호를 서버에 전송했습니다. 이 경우에 패킷 스니핑을 통하여 비밀번호가 노출될 수 있습니다.",
  "rule.sast.sw.asp.1598.example.0.safe": "라인 13: 네트워크를 통해 비밀번호를 서버에 전송하기 전에 암호화하는 것이 바람직합니다.",
  "rule.sast.sw.asp.1598.name": "민감한 정보의 일반 텍스트 전송",
  "rule.sast.sw.asp.1599.description": "에러 메시지를 통한 크로스 사이트 스크립팅 체커는 오류 메시지를 전송할 때 외부 입력과 함께 전송하는 경우를 검출합니다.\n오류 메시지에 외부 입력값을 포함시켜 전송할 경우 크로스 사이트 스크립트(XSS) 공격을 받을 수 있습니다. 공격자는 부적절한 스크립트를 수행하여 정보 유출 등의 공격을 발생시킬 수 있습니다.\n외부 입력을 오류 메시지에 직접 포함시키지 않아야 합니다.",
  "rule.sast.sw.asp.1599.example.0.dangerous": "라인 11: 외부 입력 변수 userInput을 오류 메시지 내용에 포함하고 있습니다. 외부 입력값이 전송될 경우 크로스 사이트 스크립트(XSS) 공격이 발생할 수 있습니다.",
  "rule.sast.sw.asp.1599.example.0.safe": "라인 10: 사용자 입력값을 오류 메시지 내용에 포함시키지 않습니다.",
  "rule.sast.sw.asp.1599.name": "에러 메시지를 통한 크로스 사이트 스크립팅",
  "rule.sast.sw.asp.1634.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.asp.1634.example.0.dangerous": "라인 8: Dns.GetHostByAddress() 메소드와 HostName 속성을 사용하여 도메인 이름을 가져옵니다.\n라인 10: 이 도메인 이름을 토대로 해당 사이트의 신뢰성 여부를 결정하고 있습니다. 그러나 공격자가 DNS 캐쉬 등을 조작하면 잘못된 신뢰성 정보를 얻을 수 있습니다.",
  "rule.sast.sw.asp.1634.example.0.safe": "라인 8: DNS 조회를 통해 호스트 이름을 비교하지 않고 IP 주소를 직접 비교하도록 수정합니다.",
  "rule.sast.sw.asp.1634.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.asp.1635.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하거나 같은 문자를 연속으로 여러 개 사용하지 않도록 설정할 수 있습니다. 한국인터넷진흥원 \"암호사용안내서\"의 비밀번호 설정 규칙을 참고할 수 있습니다.",
  "rule.sast.sw.asp.1635.example.0.dangerous": "라인 4: 사용자 계정을 생성할 때 입력으로 받은 Password.Text에 대해 충분히 강력한 비밀번호를 사용했는지 여부를 검사하지 않습니다.",
  "rule.sast.sw.asp.1635.example.0.safe": "라인 3: 정규식 등을 사용하여 입력으로 받은 비밀번호인 Password.Text에 대해 강력한 비밀번호를 사용했는지 여부를 검사합니다.\n라인 7: 비밀번호가 충분히 복잡하지 않은 경우 사용자 계정을 생성하지 않아야 합니다.",
  "rule.sast.sw.asp.1635.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.asp.1636.description": "영속적인 쿠키 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.\n대부분의 웹 프로그래밍 환경에서는 비지속적으로 쿠키를 생성합니다. 이러한 쿠키는 브라우저 메모리(디스크에 기록되지 않음)에만 상주하며 브라우저가 닫히면 사라집니다. 프로그래머는 미래의 특정 날짜까지 브라우저 세션에 대해 쿠키가 지속되도록 지정할 수 있습니다. 해당 쿠키는 디스크에 기록되고 브라우저 세션 및 장치 재시작에서도 유지됩니다. 지속적인 쿠키는 사이트와 상호 작용하는 사용자를 프로필하는 데 사용됩니다. 공격자는 해당 데이터를 통해 지속적인 쿠키에 포함된 추적 데이터의 개인 정보를 악용할 수 있습니다. 지속적인 쿠키의 경우 만료 시간이 길게 설정되어 해당 쿠키에 개인 정보가 저장되면 데이터를 도용할 수 있는 위험도 증가하게 됩니다.\n쿠키의 만료시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요 정보가 포함되지 않도록 설정해야 합니다.",
  "rule.sast.sw.asp.1636.example.0.dangerous": "라인 9: 입력인 UserInput.Text에서 전달받은 값을 통해 쿠기 만료 시간을 지정하고 있습니다.",
  "rule.sast.sw.asp.1636.example.0.safe": "라인 5: 적절한 상한선을 정하고 만료 시간이 그 선을 넘기지 않도록 합니다.",
  "rule.sast.sw.asp.1636.name": "영속적인 쿠키",
  "rule.sast.sw.asp.1638.description": "시스템 정보 노출 체커는 시스템 정보를 출력하는 경우를 검출합니다.\n시스템 관련 정보가 출력 스트림이나 로깅을 통해 새어나가는 경우 악의적인 공격의 대상이 될 수 있습니다.\n공격자는 노출된 오류 메시지를 보고 해당 시스템을 공격할 때 참고할 수 있습니다.\n시스템 정보가 노출되지 않도록 합니다.",
  "rule.sast.sw.asp.1638.example.0.dangerous": "라인 10: 쿠키 정보가 Console.WriteLine을 통해 출력되고 있습니다.",
  "rule.sast.sw.asp.1638.example.0.safe": "라인 10: 시스템 정보를 파일이나 화면으로 직접 출력하지 않도록 합니다.",
  "rule.sast.sw.asp.1638.name": "시스템 정보 노출",
  "rule.sast.sw.asp.1643.description": "신뢰할 수 없는 정규식 체커는 검증되지 않은 외부 입력이 포함된 정규식 문자열을 검출합니다.\n임의의 문자열을 정규식 패턴으로 사용하도록 선택하는 경우 문자열에 따라 성능이 저하될 수 있습니다. 이를 통해 DoS(Denial of Service) 등의 공격이 시도될 수 있습니다.\n정규식 생성에 직접 외부 입력을 사용하는 것을 자제하고 꼭 필요한 경우 정규식 특수 문자를 사용하지 못하도록 필터링하는 것이 좋습니다.",
  "rule.sast.sw.asp.1643.example.0.dangerous": "라인 4: 검증되지 않은 외부 입력값으로 정규식을 생성합니다.",
  "rule.sast.sw.asp.1643.example.0.safe": "라인 4: 외부 입력을 필터링한 후 정규식 생성에 사용합니다.",
  "rule.sast.sw.asp.1643.name": "신뢰할 수 없는 정규식",
  "rule.sast.sw.asp.1644.description": "제한되지 않은 파일 업로드 체커는 업로드하는 파일 타입과 크기를 제한하지 않는 경우를 검출합니다.\n서버 측에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드되어 해당 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부 명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있습니다.\n화이트리스트 방식으로 허용된 확장자만 업로드하도록 허용합니다. 업로드되는 파일을 저장할 때에는 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장합니다.",
  "rule.sast.sw.asp.1644.example.0.dangerous": "라인 19: 첨부 파일을 확인하지 않고 바로 저장합니다.",
  "rule.sast.sw.asp.1644.example.0.safe": "라인 19: 첨부 파일의 종류, 크기, 이름 등을 확인한 후 저장합니다.",
  "rule.sast.sw.asp.1644.name": "제한되지 않은 파일 업로드",
  "rule.sast.sw.asp.1856.description": "암호화 없이 비밀번호 저장 체커는 비밀번호를 암호화하지 않은 채로 외부에 저장한 경우를 검출합니다.\n외부에 저장된 비밀번호를 읽어들이여 후처리 없이 그대로 사용하는 것도 그 비밀번호가 암호화 없이 저장되어 있었다는 사실을 함의하므로 검출 대상이 됩니다.\n비밀번호를 외부 환경 파일에 저장하거나 통신 채널을 통하여 내보낼 때 암호화하지 않는 경우 인증 받지 않은 주체에 의해서 데이터 노출, 또는 스니핑이 발생할 수 있습니다.\n개인 정보(주민등록번호, 여권번호 등), 금융 정보(카드번호, 계좌번호 등), 비밀번호 등 중요 정보를 저장할 때는 반드시 암호화하여 저장해야 하며, 중요 정보를 읽거나 쓸 경우에 권한 인증 등을 통해 중요 정보에 접근하도록 해야 합니다. 특히 비밀번호는 암호화할 때 단방향 암호화 알고리즘을 사용해야 하고 그 중에서도 SHA-256 혹은 그 이상으로 안전한 알고리즘을 사용합니다.",
  "rule.sast.sw.asp.1856.example.0.dangerous": "라인 14: 비밀번호를 암호화나 해시 없이 파일에 저장합니다.",
  "rule.sast.sw.asp.1856.example.0.safe": "라인 14: 비밀번호를 SHA256으로 안전하게 해싱하여 저장합니다.",
  "rule.sast.sw.asp.1856.name": "암호화 없이 비밀번호 저장",
  "rule.sast.sw.c.72.description": "누락된 반환 값 검사 체커는 함수를 호출한 후에 반환값을 사용하지 않는 코드를 검출합니다.\n함수를 호출한 후에 반환된 값을 사용하지 않은 경우에 발생하는 오류입니다.\n반환값을 사용하지 않는 경우 프로그램에 예상하지 못한 동작이 발생할 수 있습니다. 일반적으로 프로그래머는 함수 호출에 실패하지 않을 것이라고 추측합니다. 그럼에도 불구하고 함수 호출이 실패하는 경우가 발생할 수 있으며 이로 인해 공격자에게 프로그램을 공격할 수 있는 기회를 제공합니다. 그리고 보안 위협이 발생할 수 있습니다.\n반환값을 사용하여 예외 처리와 같이 적절한 함수 후처리를 수행합니다.",
  "rule.sast.sw.c.72.example.0.dangerous": "라인 3 :scanf() 함수를 호출한 후에 반환된 값을 사용하지 않았습니다.",
  "rule.sast.sw.c.72.example.0.safe": "라인 3: scanf() 함수의 반환값을 사용하여 scanf() 함수가 성공했는지 여부를 판단합니다.",
  "rule.sast.sw.c.72.name": "누락된 반환 값 검사",
  "rule.sast.sw.c.72.option.function.description": "검출할 함수의 이름을 입력합니다.",
  "rule.sast.sw.c.72.option.function.name": "리턴 값을 무시하지 말아야 할 함수 목록",
  "rule.sast.sw.ccpp.1151.description": "안전하지 않은 파일 식별 체커는 한가지 방법으로만 파일을 식별하는 경우를 검출합니다.\n파일을 식별하기 위해 파일 이름, 생성 시간, 소유자 등 여러 가지 파일 속성을 확인합니다.\n파일 이름과 같이 한 가지 방법으로만 파일을 식별하는 경우 의도하지 않은 파일에 접근할 가능성이 있습니다. 이 경우 공격자는 사용자가 소유하고 있지 않은 파일에 접근할 수 있습니다. 따라서 보안 취약점이 발생할 수 있습니다.\n파일 속성을 확인하여 해당 파일을 식별한 후에 열도록 합니다.",
  "rule.sast.sw.ccpp.1151.example.0.dangerous": "라인 4: 이름으로만 파일을 식별했습니다. 만약 이 코드가 setuid-root 같은 프로그램에서 슈퍼 사용자 권한으로 동작한다면 공격자는 이 프로그램을 악용해 사용자가 소유하고 있지 않은 파일들을 포함해 권한 없는 파일들을 읽을 수 있습니다.",
  "rule.sast.sw.ccpp.1151.example.0.safe": "라인 4: fopen() 함수 대신 open() 함수를 사용합니다.\n라인 8: 파일을 열고 fstat() 함수를 사용하여 사용자 ID와 그룹 ID를 비교함으로써 사용자가 해당 파일에 대한 권한을 가지고 있는지를 식별합니다.",
  "rule.sast.sw.ccpp.1151.name": "안전하지 않은 파일 식별",
  "rule.sast.sw.ccpp.1152.description": "파일 생성 시 잘못된 권한 할당 체커는 접근 제한을 충분히 설정하지 않고 파일을 생성하는 경우를 검출합니다.\n적절한 접근 권한으로 파일을 생성하지 않으면 허가되지 않은 사용자가 파일에 접근할 수 있습니다. 따라서 보안 취약점이 발생할 수 있습니다.\n파일을 열 때 접근 권한도 함께 명시하도록 합니다.",
  "rule.sast.sw.ccpp.1152.example.0.dangerous": "라인 6: 파일을 생성하기 위해 open() 함수를 사용했습니다. 그러나 접근 권한을 명시하지 않았습니다.",
  "rule.sast.sw.ccpp.1152.example.0.safe": "라인 7: 파일을 열 때 접근 권한도 함께 명시하도록 합니다.",
  "rule.sast.sw.ccpp.1152.name": "파일 생성 시 잘못된 권한 할당",
  "rule.sast.sw.ccpp.1157.description": "중복된 환경 변수 이름 체커는 대소문자 구분이 없으면 동일한 이름으로 식별되는 환경 변수를 사용하는 수식을 검출합니다.\n여기서 환경 변수 이름은 getenv() 함수나 putenv() 함수로 전달되는 문자열을 의미합니다.\n환경 변수는 운영 체제 환경에 따라 대소문자를 구분하기도 하고 구분하지 않기도 합니다. 따라서 대소문자만 다르고 이름이 동일한 환경 변수는 경우에 따라 구분되지 않을 가능성이 높습니다.\n이식성을 보장하기 위해서 대소문자 구분이 없더라도 다른 이름으로 식별되도록 환경 변수 이름을 설정하도록 합니다.",
  "rule.sast.sw.ccpp.1157.example.0.dangerous": "라인 1: putenv() 함수에 환경 변수 값을 대입했습니다.\n라인 4: putenv() 함수에 환경 변수 값을 대입했습니다. 대소문자 구분이 없는 경우 라인 1에서 호출된 함수의 변수와 동일한 이름을 사용했습니다.",
  "rule.sast.sw.ccpp.1157.example.0.safe": "라인 4: 라인 1에 있는 환경 변수와 다른 이름을 사용하도록 합니다.",
  "rule.sast.sw.ccpp.1157.name": "중복된 환경 변수 이름",
  "rule.sast.sw.ccpp.1158.description": "환경 변수 포인터에 의존 체커는 메인 함수의 인자로 전달된 환경 변수 포인터에 의존하는 수식을 검출합니다.\n환경 변수 포인터에 의존하지 않도록 합니다. 뒤이어 오는 연산에 의해 무효화될 수 있기 때문입니다. 예를 들어 main 함수에서 세 번째 인자로 환경 변수에 관한 값이 전달될 경우 이에 의존하지 말도록 합니다.\n환경 변수 포인터에 의존하는 것은 뒤이어 오는 연산에 의해 무효화될 수 있으므로 안전하지 않습니다. 이 경우 유효하지 않은 값을 참조하게 될 가능성이 높습니다.\n환경 변수 포인터에 의존하지 않고 environ 변수와 같은 전역 변수를 참조하도록 합니다.",
  "rule.sast.sw.ccpp.1158.example.0.dangerous": "라인 2: setenv() 함수를 호출했습니다.\n라인 6: envp 포인터 변수에 접근했습니다. envp는 라인 2 이후로 더 이상 환경 변수를 참조하지 않습니다.",
  "rule.sast.sw.ccpp.1158.example.0.safe": "라인 7: 환경 변수에 접근해야 하는 경우 environ 전역 변수를 대신 사용하도록 합니다.",
  "rule.sast.sw.ccpp.1158.name": "환경 변수 포인터에 의존",
  "rule.sast.sw.ccpp.1160.description": "In-band 오류 표시자 사용 체커는 함수 인터페이스를 설계할 때 대역 내 오류 표시자를 사용하는 경우를 검출합니다.\n여기서 대역 내 오류 표시자(In-band Error Indicator)란 함수를 성공적으로 호출했을 때 반환할 수 없는 값을 오류 상황일 때 반환합니다. 대표적으로 C 표준의 EOF가 있습니다.\nC 라이브러리 함수에서 일반적으로 이 기법을 많이 사용하지만 권장되지는 않습니다. 특히 오류 값과 정상적인 값을 따로 처리하지 않으면 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n대역 내 오류 표시자 방식으로 함수 인터페이스를 설계하지 않도록 합니다.",
  "rule.sast.sw.ccpp.1160.example.0.dangerous": "라인 6: sprintf() 함수에 오류가 발생하면 -1을 반환하게 됩니다. 첫 호출에서 오류가 발생하면 count 변수가 -1이 되고, buf의 잘못된 메모리 영역에 접근하게 됩니다.",
  "rule.sast.sw.ccpp.1160.example.0.safe": "라인 1: 반환값이 오류 상태만 출력하도록 함수 인터페이스 설계를 변경합니다.",
  "rule.sast.sw.ccpp.1160.name": "In-band 오류 표시자 사용",
  "rule.sast.sw.ccpp.1168.description": "누락된 심볼릭 링크 검사 체커는 심볼릭 링크의 존재를 확인하지 않고 파일을 여는 경우를 검출합니다.\n파일을 열기 전에 심볼릭 링크의 존재를 확인하기 위해 open() 함수에서 O_NOFOLLOW 플래그를 설정해야 합니다.\n확장된 권한으로 취약점이 있는 프로그램을 실행하는 경우 공격자가 해당 코드를 악용하여 /etc/passwd 인증 파일에 대한 심볼릭 링크를 조작하고 암호 없는 루트 계정을 생성할 수 있습니다. 즉, 심볼릭 링크가 포함된 파일을 여는 동작은 보안에 매우 취약할 수 있습니다. 단, vxworks 등의 시스템에서는 해당 플래그가 존재하지 않으므로 오탐이 발생할 수 있습니다.\n항상 심볼릭 링크를 확인하고 파일을 열도록 합니다.",
  "rule.sast.sw.ccpp.1168.example.0.dangerous": "라인 4: 읽기 및 쓰기 권한으로 file_name 파일을 열었습니다. 만약 확장된 권한으로 해당 파일을 실행하면 공격자가 이 코드를 악용하여 /etc/passwd 인증 파일에 대한 심볼릭 링크를 조작하고 암호 없는 루트 계정을 만들 수 있습니다.",
  "rule.sast.sw.ccpp.1168.example.0.safe": "라인 4: O_NOFOLLOW 플래그를 설정하고 파일을 열도록 합니다. 해당 플래그를 설정한 상태에서는 심볼릭 링크가 포함된 file_name 파일을 여는 데 실패하게 됩니다.",
  "rule.sast.sw.ccpp.1168.name": "누락된 심볼릭 링크 검사",
  "rule.sast.sw.ccpp.1171.description": "putenv의 인자로 비 정적 변수 사용 체커는 putenv() 함수에 자동 변수 포인터를 인자로 전달하는 경우를 검출합니다.\n자동 변수를 버퍼로 가리키는 포인터를 putenv() 함수의 인자로 제공하는 것은 의도하지 않은 값을 버퍼가 취할 수 있게 됩니다. 또한 버퍼를 사용하는 방법에 따라 프로그램에서 의도하지 않은 동작이 발생하거나 공격자가 임의의 코드를 수행할 수 있습니다.\nputenv() 함수에는 정적 변수 포인터를 인자로 전달하도록 합니다.",
  "rule.sast.sw.ccpp.1171.example.0.dangerous": "라인 7: 자동 변수를 putenv() 함수의 인자로 사용했습니다.",
  "rule.sast.sw.ccpp.1171.example.0.safe": "라인 7: 정적 변수를 putenv() 함수의 인자로 사용합니다.",
  "rule.sast.sw.ccpp.1171.name": "putenv의 인자로 비 정적 변수 사용",
  "rule.sast.sw.ccpp.1172.description": "파일 지시자 경쟁 조건 체커는 파일 지시자와 fork() 함수를 동시에 사용하여 경쟁 조건이 발생하는 경우를 검출합니다.\n경쟁 조건이 발생하는 구체적인 상황은 다음과 같습니다. 파일을 연 후 이 파일에 대한 파일 지시자를 변수에 저장합니다. fork() 함수를 호출합니다. 앞서 저장한 파일 지시자를 부모와 자식에서 사용하면 파일 지시자가 공유됩니다.\nfork() 함수로 인해 부모와 자식에서 동일한 파일 지시자를 공유하게 되면 경쟁 조건이 발생합니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\nfork() 함수를 호출한 후에 자식 프로세스 내에서 파일 지시자를 닫고 다시 열도록 합니다.",
  "rule.sast.sw.ccpp.1172.example.0.dangerous": "라인 4: 파일을 열고 fd 변수에 파일 지시자를 저장했습니다.\n라인 11: fork() 함수를 호출했습니다. 이로 인해 경쟁 상태가 발생할 수 있습니다.",
  "rule.sast.sw.ccpp.1172.example.0.safe": "라인 28: fork() 함수를 호출한 경우 자식 프로세스 내에서 파일 지시자를 닫고 다시 열도록 합니다.",
  "rule.sast.sw.ccpp.1172.name": "파일 지시자 경쟁 조건",
  "rule.sast.sw.ccpp.1212.description": "시그널 핸들러의 잘못된 사용 체커는 운영 체제 환경으로 인해 시그널 핸들러를 유지시키는 데 실패하는 경우를 검출합니다.\n운영 체제에 따라 시그널 핸들러의 지속성과 작동 방식이 달라지므로 구현되는 세부적인 작동 방식을 이해해야 합니다,\n운영 체제에 따라 signal() 함수로 등록한 핸들러가 지속적으로 사용되기도 하고, 첫 번째 시그널만 처리한 후에 사라지기도 합니다. 후자의 경우에 대비하기 위해 핸들러 내부에서 signal() 함수로 스스로를 다시 등록하는 경우도 있지만 안전한 방법이 아닙니다. 핸들러가 호출된 직후와 signal() 함수로 스스로를 다시 등록하는 시점 사이에 틈이 있기 때문입니다. 따라서 두 시점 사이에 시그널이 발생하면 개발자가 의도하지 않은 기본 시그널 핸들러가 작동하게 됩니다.\n또한 시그널 핸들러를 지속적으로 사용하려면 안전한 방식을 사용해야 합니다.",
  "rule.sast.sw.ccpp.1212.example.0.dangerous": "라인 3: 시그널 핸들러를 지속하기 위해 내부에서 signal() 함수를 호출하여 리셋된 핸들러를 다시 등록했습니다. 그러나 핸들러 호출 시점과 signal() 작동 시점 사이에 레이스 윈도우가 존재합니다.",
  "rule.sast.sw.ccpp.1212.example.0.safe": "라인 4: Windows 환경에서는 대응 방안이 없지만, POSIX 환경에서는 플래그를 통해 시그널 핸들러의 지속 여부를 제어할 수 있습니다.",
  "rule.sast.sw.ccpp.1212.name": "시그널 핸들러의 잘못된 사용",
  "rule.sast.sw.ccpp.1214.description": "중단 가능한 시그널 핸들러 내에서 signal 함수 사용 체커는 인터럽트가 다시 발생 가능한 시그널을 핸들링하는 도중 signal() 함수를 호출하여 발생하는 경쟁 조건을 검출합니다.\n핸들러가 호출된 직후와 signal() 함수로 스스로를 다시 등록하는 시점 사이에 틈이 있기 때문입니다. 따라서 두 시점 사이에 시그널이 발생하면 개발자가 의도하지 않은 기본 시그널 핸들러가 작동하게 됩니다. 다시 발생한 인터럽트의 시점에 따라 의도와 다른 결과가 발생할 수 있으므로 경쟁 조건이 발생합니다.\n인터럽트가 다시 발생할 수 있는 시그널을 핸들링할 때에는 signal() 함수를 사용하지 않아야 합니다.",
  "rule.sast.sw.ccpp.1214.example.0.dangerous": "라인 2: 시그널 핸들러 내부에서 signal() 함수를 호출했습니다.",
  "rule.sast.sw.ccpp.1214.example.0.safe": "라인 2: 시그널 핸들러 내부에서 signal() 함수를 호출하지 않아야 합니다.",
  "rule.sast.sw.ccpp.1214.name": "중단 가능한 시그널 핸들러 내에서 signal 함수 사용",
  "rule.sast.sw.ccpp.1217.description": "라이브러리 경쟁 조건 체커는 다중 스레드 환경에서 사용하기에 안전하지 않은 라이브러리 함수를 호출한 경우를 검출합니다.\n라이브러리 함수 중에는 경쟁 조건에 대한 대비 없이 전역 변수를 사용하는 등 다중 스레드 환경에서 사용하기에 적합하지 않게 설계된 함수가 있습니다. 해당 함수를 다중 스레드 환경에서 사용하지 않도록 합니다.\n해당 함수를 사용하지 않습니다.",
  "rule.sast.sw.ccpp.1217.example.0.dangerous": "라인 5: strerror() 함수로 인해 다중 스레드 환경에서 문제가 발생할 수 있습니다.",
  "rule.sast.sw.ccpp.1217.example.0.safe": "라인 7: strerror_s() 함수는 경쟁 조건으로부터 안전한 함수입니다.",
  "rule.sast.sw.ccpp.1217.name": "라이브러리 경쟁 조건",
  "rule.sast.sw.ccpp.1318.description": "구조체 패딩으로 인한 정보 누출 체커는 구조체를 통해 값을 전달할 때 중요 정보가 누출될 수도 있는 구조체 내의 패딩 존재를 검출합니다.\n일반적으로 구조체에 속한 각 멤버 필드의 오프셋은 컴파일러에 따라 차이가 있지만 대부분 4바이트(32비트) 등의 규격화된 단위에 맞춰집니다. 개별 필드 타입의 크기가 이 규격에 맞지 않을 경우 중간에 의미 없는 패딩(Padding) 비트 영역을 넣어서 오프셋을 맞추게 됩니다. 이런 패딩이 존재하는 구조체의 각 필드에 값을 대입할 때 패딩 영역에 어떤 일이 일어나야 하는지는 언어 표준에 정의된 바가 없고 컴파일러에 따라 다르게 구현됩니다. 어떤 컴파일러는 패딩 영역의 값이 함께 바뀌도록 번역하고 어떤 컴파일러는 패딩 영역의 값을 유지하도록 번역합니다. 패딩의 값을 바꾸지 않는 컴파일러가 사용될 때에는 패딩 영역을 다루는 레지스터의 일부 값이 외부로 누출될 수 있어 위험합니다.\n패딩 영역을 통한 값 노출을 방지하는 방법은 여러 가지가 있습니다. 우선 구조체에 패딩이 생기지 않도록 하는 방법이 있는데, 컴파일러에 따라서 각 필드를 몇 바이트에 맞춰 정렬하는지, 패딩을 없애는 컴파일러 지시문이 존재하는지 등 패딩을 다루는 방법이 천차만별이므로 일괄적으로 적용하기는 어렵습니다. 특정 컴파일러만 사용하여 이식성을 고려할 필요가 없는 프로젝트에서는 패딩을 없애는 것도 한 방법이 될 수 있습니다. 그 외에는 중요 정보를 다루는 영역에 저장된 구조체에 담긴 값을 신뢰할 수 없는 외부 영역으로 복사할 때 구조체의 각 필드를 통째로 복사하는 대신 구조체 안의 값을 패딩이 없는 버퍼에 압축하여 저장한 후 이 버퍼를 통해 값을 전달하는 방식을 사용할 수 있습니다.",
  "rule.sast.sw.ccpp.1318.example.0.dangerous": "라인 11: memset() 함수를 호출하여 메모리의 패딩 영역을 초기화했습니다.\n라인 13: 하지만 char 타입의 필드에 값을 쓸 때 32비트 레지스터의 값을 통째로 메모리에 쓸지, 상위 3 바이트의 패딩 영역의 값은 변경하지 않고 하위 1바이트 값만 메모리에 쓸지는 컴파일러마다 그 구현이 다릅니다. 컴파일러 구현에 따라 상위 3바이트의 레지스터에 담겨있는 정보가 노출될 수 있습니다.",
  "rule.sast.sw.ccpp.1318.example.0.safe": "라인 4: 특정 컴파일러를 사용하는 프로젝트의 경우 해당 컴파일러의 패딩 관련 스펙을 확인한 후에 구조체에 패딩 바이트를 명시적으로 선언하여 문제를 해결할 수 있습니다.",
  "rule.sast.sw.ccpp.1318.name": "구조체 패딩으로 인한 정보 누출",
  "rule.sast.sw.ccpp.1404.description": "누락된 문자열 길이 제한 체커는 포맷 스트링을 통해 생성되는 문자열의 크기를 제한하지 않는 경우를 검출합니다.\n포맷 스트링을 통해 생성되는 문자열의 크기를 제한하지 않으면 임의의 긴 문자열을 버퍼에 저장하려고 시도하게 될 수 있습니다. 이로 인해 버퍼 오버플로우가 발생했습니다.\n포맷 스트링을 사용할 때 생성될 문자열의 길이를 제한해야 합니다.",
  "rule.sast.sw.ccpp.1404.example.0.dangerous": "라인 5: 문자열의 최대 길이를 제한하지 않았습니다. filename에 버퍼 오버플로우가 발생할 수 있습니다.\n라인 6: 문자열의 최대 길이를 지나치게 길게 설정했습니다. buf에 버퍼 오버플로우가 발생할 수 있습니다.\n라인 7: 문자열의 최대 길이를 제한하지 않았습니다. msg에 버퍼 오버플로우가 발생할 수 있습니다.\n라인 8: 문자열의 최대 길이를 제한하지 않았습니다. buf에 버퍼 오버플로우가 발생할 수 있습니다.",
  "rule.sast.sw.ccpp.1404.example.0.safe": "라인 5: 적절한 문자열 길이 제한을 지정하도록 합니다.\n라인 6: 적절한 문자열 길이 제한을 지정하도록 합니다.",
  "rule.sast.sw.ccpp.1404.name": "누락된 문자열 길이 제한",
  "rule.sast.sw.ccpp.1416.description": "디스크에 민감한 정보 저장 체커는 메모리에 남아 있이던 중요 정보가 의도하지 않게 디스크에 기록되어 외부로 노출되는 경우를 검출합니다.\n프로그램이 비정상적으로 종료되면 그 원인을 알 수 있게 주요 메모리의 상태가 디스크에 기록되도록 설정되어 있을 수 있습니다. 이렇게 설정된 상태에서 메모리에 중요 정보를 기록했다가 미처 정리하기 전에 어떤 이유로든 프로그램이 비정상적으로 종료되면 중요 정보가 디스크를 통해 노출될 수 있습니다.\n중요 정보는 메모리에 최대한 짧은 시간동안 유지될 수 있게 사용이 끝나는 즉시 메모리에서 정리하도록 합니다. 또한 사고로 인해 중요 정보가 메모리에 남아 있는 상태에서 프로그램이 비정상 종료 되더라도 메모리 덤프가 일어나지 않도록 설정을 변경합니다.",
  "rule.sast.sw.ccpp.1416.example.0.dangerous": "라인 7: memset_s() 함수로 중요 정보가 저장된 메모리를 정리하려 하지만, 이 함수의 동작이 완료되기 전에 프로그램이 비정상적으로 종료되면 변수 secret의 정보가 메모리 덤프를 통해 노출됩니다.",
  "rule.sast.sw.ccpp.1416.example.0.safe": "라인 5: setrlimit() 함수를 사용해 메모리 덤프가 일어나지 않도록 조정합니다. 이 방법은 POSIX 환경에서만 적용됩니다.",
  "rule.sast.sw.ccpp.1416.name": "디스크에 민감한 정보 저장",
  "rule.sast.sw.ccpp.1416.option.target_var_name.description": "검출 대상 변수 이름을 지정합니다.<br />예시) secret",
  "rule.sast.sw.ccpp.1416.option.target_var_name.name": "검출 대상 변수 이름",
  "rule.sast.sw.ccpp.1710.description": "윈도우 함수 사용 권한 위반 체커는 윈도우 함수 CreateProcess*(), RegCreateKey*(), SHRegCreate*(), SHRegOpen*() 등을 사용할 때 권한에 유의 하지 않고 사용하는 경우를 검출합니다.\n윈도우 함수 CreateProcess*(), RegCreateKey*(), SHRegCreate*(), SHRegOpen*() 등의 사용에 유의하십시오. `CreateProcess`로 시작하는 윈도우 함수는 실행 경로를 따옴표로 감싸지 않으면 잘못된 바이너리를 실행할 위험성이 있습니다. `RegCreateKey`로 시작하는 윈도우 함수는 HKEY_LOCAL_MACHINE 대신 HKEY_CURRENT_USER를 사용해야 합니다. `SHRegCreate`로 시작하는 윈도우 함수는 SHREGSET_HKLM 대신 SHREGSET_HKCU를 사용해야 합니다.\n함수가 빈 칸을 파싱하면 악성 바이너리가 실행될 수 있습니다.\n윈도우 함수를 사용할 때 함수별 유의사항을 지켜서 사용하도록 합니다.",
  "rule.sast.sw.ccpp.1710.example.0.dangerous": "라인 6: SHREGSET_HKLM을 사용했습니다.\n라인 10: 빈 칸이 있는 경로 \"C:\\Program Files\\GoodApp\"을 따옴표로 감싸지 않았습니다. 이 경우 Program.exe가 존재한다면 해당 바이너리가 실행될 수 있습니다.\n라인 15: HKEY_LOCAL_MACHINE을 사용했습니다.",
  "rule.sast.sw.ccpp.1710.example.0.safe": "라인 6: SHREGSET_HKCU를 사용해야 합니다.\n라인 10: 빈 칸이 있는 경로 \"C:\\Program Files\\GoodApp\"을 따옴표로 감쌌습니다.\n라인 15: HKEY_CURRENT_USER을 사용해야 합니다.",
  "rule.sast.sw.ccpp.1710.name": "윈도우 함수 사용 권한 위반",
  "rule.sast.sw.ccpp.1732.description": "취약한 해시 체커는 보안성이 약한 해시 알고리즘을 사용한 경우를 검출합니다.\n보안성이 약한 해시 알고리즘은 MD2, MD5, SHA1입니다.\n표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 해시 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다. MD5와 같은 오래된 알고리즘의 경우에는 레인보우 테이블과 같은 방법으로 간단히 해시를 무력화할 수 있습니다.\n보안성이 뛰어난 해시 알고리즘을 사용해야 합니다.",
  "rule.sast.sw.ccpp.1732.example.0.dangerous": "라인 1: CryptCreateHash 함수가 MD2알고리즘을 사용하여 해시를 암호화하고 있습니다. MD2 알고리즘은 안전하지 않은 알고리즘이기 때문에 사용하지 말아야 합니다.",
  "rule.sast.sw.ccpp.1732.example.0.safe": "라인 1: SHA-512 알고리즘을 사용하여 해시를 암호화하고 있습니다.",
  "rule.sast.sw.ccpp.1732.name": "취약한 해시",
  "rule.sast.sw.ccpp.1733.description": "부적절한 암호화 체커는 암호화에 필요한 함수들의 호출이 누락된 경우를 검출합니다.\n이 규칙에서 암호화에 필요한 함수들은 다음과 같습니다. 또한 이 함수들을 정해진 순서대로 호출해야 합니다. CryptAcquireContext(); CryptCreatehash(); CryptHasData();\n암호화에 필요한 함수들의 호출이 누락되면 정상적으로 암호화가 이루어지지 않습니다. 따라서 보안 취약점이 발생할 수 있습니다.\n암호화에 필요한 함수들을 누락하지 않고 전부 호출하도록 합니다.",
  "rule.sast.sw.ccpp.1733.example.0.dangerous": "라인 5: CryptCreateHash() 함수의 호출없이 CryptHashData() 함수를 호출했습니다.",
  "rule.sast.sw.ccpp.1733.example.0.safe": "라인 5: CryptHashData() 함수 호출 이전에 CryptCreateHash() 함수를 호출해야 합니다.",
  "rule.sast.sw.ccpp.1733.name": "부적절한 암호화",
  "rule.sast.sw.ccpp.181.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\n해당 오류는 난수를 생성하기 위해 보안에 취약한 rand() 함수를 사용하거나 난수 생성 함수를 호출하기 전에 seeding 함수를 호출하지 않는 경우에 발생합니다. 또한 random() 함수를 호출하지만 srandom() 함수를 호출하는 구문이 존재하거나 CryptGenRandom() 함수를 호출하지만 CryptAcquireContext() 함수를 호출하는 구문이 존재하지 않는 경우에도 발생합니다.\nrandom() 함수는 주로 통신 보안 프로토콜을 암호화하기 위해 사용합니다. random() 함수를 호출할 때 srandom() 함수를 호출하지 않으면 동일한 난수를 계속해서 생성합니다. 따라서 보안에 취약하기 때문에 srandom() 함수를 사용하는 것이 좋습니다.\n암호학적으로 충분히 안전한 방식을 사용하여 예측 불가능한 난수를 생성해야 합니다.",
  "rule.sast.sw.ccpp.181.example.0.dangerous": "라인 4: 프로그램을 여러 번 실행했을 때 얻는 결과값이 같기 때문에 문제가 발생했습니다. 또한 srand() 함수를 호출하여 결과값을 변경할 수 있지만 범위가 작기 때문에 암호화에 사용하기 어렵습니다.",
  "rule.sast.sw.ccpp.181.example.0.safe": "라인 2: srand() 함수 대신 srandom() 함수를 사용하면 보안적으로 안전한 임의의 수를 얻을 수 있습니다.\n라인 4: rand() 함수 대신 random() 함수를 사용하면 보안적으로 안전한 임의의 수를 얻을 수 있습니다.",
  "rule.sast.sw.ccpp.181.name": "부적절한 난수 생성",
  "rule.sast.sw.ccpp.181.option.targets.description": "랜덤 함수와 랜덤 시드 함수를 설정합니다. (랜덤함수),(랜덤시드함수) 형태로 정의하십시오. 공백은 허용하지 않습니다.",
  "rule.sast.sw.ccpp.181.option.targets.name": "랜덤 함수와 시드 함수",
  "rule.sast.sw.ccpp.184.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.sw.ccpp.184.example.0.dangerous": "라인 2: 디버깅 목적으로 사용된 main() 함수가 남아 있으며 printf() 함수를 통해서 정보가 출력되었습니다.",
  "rule.sast.sw.ccpp.184.example.0.safe": "라인 2: 디버깅 목적으로 사용한 main()으로 시작하는 코드를 삭제해야 합니다.",
  "rule.sast.sw.ccpp.184.name": "남은 디버그 코드",
  "rule.sast.sw.ccpp.184.option.debug_string.description": "디버그를 나타내는 문자열을 작성합니다.<br />예시) debug",
  "rule.sast.sw.ccpp.184.option.debug_string.name": "디버그 의미 문자열",
  "rule.sast.sw.ccpp.184.option.print_function.description": "출력에 사용되는 함수 이름을 작성합니다.<br />예시) printf",
  "rule.sast.sw.ccpp.184.option.print_function.name": "출력 함수",
  "rule.sast.sw.ccpp.184.option.target_func.description": "대상 함수를 설정합니다.",
  "rule.sast.sw.ccpp.184.option.target_func.name": "대상 함수",
  "rule.sast.sw.ccpp.1841.description": "동일 핸들러에 여러 개의 시그널 할당 체커는 하나의 시그널 핸들러에 여러 시그널이 연결된 경우를 검출합니다.\n이 경우 소프트웨어가 예상하지 못하게 종료될 수 있습니다.\n하나의 시그널 핸들러에는 하나의 시그널만 연결해야 합니다.",
  "rule.sast.sw.ccpp.1841.example.0.dangerous": "라인 1: 시그널 핸들러 handler()가 정의되었습니다.\n라인 5: SIGUSR1 시그널을 핸들러에 연결했습니다.\n라인 6: SIGUSR2 시그널도 핸들러에 연결했습니다.",
  "rule.sast.sw.ccpp.1841.example.0.safe": "라인 8: 하나의 시그널은 하나의 핸들러에만 연결해야 합니다.",
  "rule.sast.sw.ccpp.1841.name": "동일 핸들러에 여러 개의 시그널 할당",
  "rule.sast.sw.ccpp.1851.description": "OAEP 없는 RSA 사용 체커는 OAEP를 사용하지 않고 RSA 암호화 알고리즘을 사용한 경우를 검출합니다.\nOAEP를 사용하지 않고 RSA 암호화 알고리즘을 사용하지 마십시오.\n이 경우 공격자가 복호화를 좀더 쉽게 할 수 있습니다.\nRSA 암호화 알고리즘을 사용할 때는 반드시 OAEP를 사용합니다.",
  "rule.sast.sw.ccpp.1851.example.0.dangerous": "라인 1: CryptEncrypt()를 호출하면서 OAEP를 사용하지 않았습니다.",
  "rule.sast.sw.ccpp.1851.example.0.safe": "라인 1: OAEP를 사용해서 CryptEncrypt()를 호출했습니다.",
  "rule.sast.sw.ccpp.1851.name": "OAEP 없는 RSA 사용",
  "rule.sast.sw.ccpp.1861.description": "힙 검사 체커는 릴리즈 전 힙 메모리를 깨끗하게 삭제하지 않은 경우를 검출합니다.\n암호와 같은 민감한 데이터나 암호화된 키 값을 메모리에서 지우지 않았을 때, 공격자는 메모리 덤프 혹은 다른 방법을 사용하는 `힙 인스펙션` 공격을 통해 해당 값을 얻어낼 수 있습니다.\n릴리즈 전 힙 메모리를 깨끗하게 삭제해야 합니다.",
  "rule.sast.sw.ccpp.1861.example.0.dangerous": "라인 1: 비밀번호로 사용될 변수 password 가 선언되었습니다.\n라인 4: LogonUserA() 함수에서 암호로 password의 값을 사용했습니다.\n라인 20: 힙 메모리를 깨끗하게 삭제하지 않고 free() 함수를 호출했습니다.",
  "rule.sast.sw.ccpp.1861.example.0.safe": "라인 19: SecureZeroMemory() 함수로 힙의 내용을 파악할 수 없도록 깨끗하게 삭제했습니다.",
  "rule.sast.sw.ccpp.1861.name": "힙 검사",
  "rule.sast.sw.ccpp.1861.option.prevent_functions.description": "아래 결함 생성 함수를 호출하기 전에 호출하면 결함으로 처리하지 않는 함수입니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "rule.sast.sw.ccpp.1861.option.prevent_functions.name": "결함 방지 함수",
  "rule.sast.sw.ccpp.1861.option.sink_functions.description": "결함 방지 함수를 호출하지 않고 호출할 경우 결함이 발생하는 함수힙니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "rule.sast.sw.ccpp.1861.option.sink_functions.name": "결함 생성 함수",
  "rule.sast.sw.ccpp.1861.option.source_functions.description": "중요한 정보(패스워드)가 담긴 변수를 사용한 함수를 설정합니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "rule.sast.sw.ccpp.1861.option.source_functions.name": "중요한 정보가 담긴 변수를 사용한 함수",
  "rule.sast.sw.ccpp.1881.description": "switch 구문 경쟁 조건 체커는 스위치(switch)문의 평가 식의 결과값이 실행 중 변할 위험이 있는 경우를 검출합니다.\n스위치(switch)문의 평가 식의 결과값이 실행 중 변할 수 있습니다.\n실행 중 값이 변하면 예측하지 못한 결과가 나타날 수 있습니다.\nswitch 문에서 평가 값으로 사용하려고 하는 값을 별도 변수에 저장한 후 사용합니다.",
  "rule.sast.sw.ccpp.1881.example.0.dangerous": "라인 9: switch 문의 평가식만 보면 언제나 0과 1이기 때문에 default 절에 도달하지 않습니다. 하지만 st_ctime % 2 가 1이면 첫 번째 case 가 수행되는데, 시간이 변해서 st_ctime %2 가 0이 될 경우 두 번째 case 가 수행됩니다.",
  "rule.sast.sw.ccpp.1881.example.0.safe": "라인 8: sb->st_ctime의 값을 별도의 변수에 저장 후 이 변수를 사용해야 합니다.",
  "rule.sast.sw.ccpp.1881.name": "switch 구문 경쟁 조건",
  "rule.sast.sw.ccpp.1915.description": "부적절한 포인터 확장 체커는 포인터의 연산이 정확하지 않게 수행되는 경우를 검출합니다.\n포인터의 연산이 정확히 수행되도록 보장해야 합니다. 포인터 연산 시 개발자가 의도하지 않게 포인터가 잘못된 주소를 가리킬 수 있습니다.\n만약 잘못된 메모리 주소를 읽으면 정보 누출(Information leak)이 발생할 수 있습니다. 만약 잘못된 주소를 읽으면 허용되지 않는 구간에 쓰기 연산을 함으로서 버퍼 오버플로우를 발생시킬 수 있습니다.\n포인터 연산을 올바르게 수행하도록 합니다.",
  "rule.sast.sw.ccpp.1915.example.0.dangerous": "라인 9: 프로그래머는 buf의 크기만큼 포인터의 위치를 이동하려고 의도했으나, 실제로는 buf의 데이터형인 int의 크기와 buf의 크기의 곱 만큼 이동합니다. 이 예제에서는 80이 아니라 320만큼 이동합니다.(32비트 머신 기준)",
  "rule.sast.sw.ccpp.1915.example.0.safe": "라인 9: sizeof를 사용하지 말고 포인터 연산을 수행합니다.",
  "rule.sast.sw.ccpp.1915.name": "부적절한 포인터 확장",
  "rule.sast.sw.ccpp.1944.description": "불충분한 암호화 키 지수 체커는 비대칭 키 RSA 사용 시 공개 키 지수가 65537이 아닌 경우를 검출합니다.\nRSA(Rivest Shamir Adleman) 비대칭 암호 알고리즘을 사용할 때 공개 키의 지수는 가급적 2 ^ 16 + 1, 즉, 65537 (16진수 기준 0x10001)로 하는 것이 좋습니다. 이 값은 공개 키 암호화 연산이나 서명 검증 시 공개 키에 의한 연산을 최적화하기 위한 수입니다. 물론 반드시 이 값을 사용해야 하는 것은 아니지만 이 값은 알고리즘의 보안성과 속도를 최적화하기 위한 수로 이 값에 대한 사용을 권장합니다.\n비대칭 키 RSA 사용 시 공개 키 지수의 값을 65537로 입력합니다.",
  "rule.sast.sw.ccpp.1944.example.0.dangerous": "라인 13: 공개 키 지수로서 13을 사용했습니다. 이 경우 비록 빠른 연산은 가능하지만 보안성이 낮습니다.",
  "rule.sast.sw.ccpp.1944.example.0.safe": "라인 13: 보안성과 연산 속도 면에서 최적화된 65537을 사용하도록 합니다.",
  "rule.sast.sw.ccpp.1944.name": "불충분한 암호화 키 지수",
  "rule.sast.sw.ccpp.1962.description": "잘못된 조건으로 인한 동적 할당 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.1962.example.0.dangerous": "라인 2: buf에 동적 할당한 메모리를 대입했습니다. buf의 크기는 10입니다.\n라인 3: scanf() 함수로 idx의 값을 입력했습니다.\n라인 5: idx의 크기가 0~10 사이인지 비교했습니다.\n라인 6: 라인 5의 조건에 의해 idx의 값이 10일 수 있습니다. 이로 인해 버퍼 오버플로우가 발생했습니다.",
  "rule.sast.sw.ccpp.1962.example.0.safe": "라인 5: idx의 크기가 0~9 사이인지 비교합니다.\n라인 6: 라인 5의 조건에 의해 정해진 범위 내로만 배열의 접근이 이루어집니다.",
  "rule.sast.sw.ccpp.1962.name": "잘못된 조건으로 인한 동적 할당 버퍼 오버플로우",
  "rule.sast.sw.ccpp.1963.description": "동적 할당 버퍼 언더플로우 체커는 메모리에서 객체의 유효 범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.1963.example.0.dangerous": "라인 2: 함수 인자값을 -20으로 대입했습니다.\n라인 6: buf[]의 인덱스 값을 -10으로 대입하여 오류가 발생했습니다.",
  "rule.sast.sw.ccpp.1963.example.0.safe": "라인 7: 버퍼의 인덱스는 항상 0보다 크고 버퍼 크기보다 작아야 하므로 인자값을 설정할 때 주의가 필요합니다.",
  "rule.sast.sw.ccpp.1963.name": "동적 할당 버퍼 언더플로우",
  "rule.sast.sw.ccpp.1964.description": "잘못된 조건으로 인한 동적 할당 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.1964.example.0.dangerous": "라인 2: x가 -20보다 작은지를 비교했습니다.\n라인 3: foo2() 함수에 인자값을 대입했습니다.\n라인 7: str[]의 인덱스 값이 -20보다 작게 설정되어 오류가 발생했습니다.",
  "rule.sast.sw.ccpp.1964.example.0.safe": "라인 2: 버퍼의 인덱스는 항상 0보다 크거나 버퍼 크기보다 작아야 합니다. str[]의 인덱스 크기는 총 11이므로(널 제외) n의 크기가 0~10이 되도록 설정해야 합니다.",
  "rule.sast.sw.ccpp.1964.name": "잘못된 조건으로 인한 동적 할당 버퍼 언더플로우",
  "rule.sast.sw.ccpp.1986.description": "파일 이름 TOCTOU 경쟁 조건 체커는 파일 이름을 통한 파일 상태 확인과 실제 파일 사용 사이의 시간 차로 인해 발생하는 경쟁 조건을 검출합니다.\n이미 열린 파일의 이름을 가지고 또 다시 파일에 관한 함수 chown(), stat(), chmod(), remove() 함수 등이 호출되는 경우를 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n파일 포인터 또는 파일 기술자를 사용할 경우에 의도하지 않은 파일을 접근하게 되는 문제를 줄일 수 있습니다. chown(), stat(), chmod() 함수보다는 경쟁 조건 문제가 발생하지 않는 fchown(), fstat(), fchmod()를 사용하여 파일에 대한 연산을 수행하도록 합니다.",
  "rule.sast.sw.ccpp.1986.example.0.dangerous": "라인 8: chmod()에서 파일 이름을 사용하여 문제가 발생했습니다.",
  "rule.sast.sw.ccpp.1986.example.0.safe": "라인 8: 파일 이름 대신 파일 디스크립터와 더불어 fchmod()를 더불어 사용하여 같은 파일에 접근할 수 있도록 합니다.",
  "rule.sast.sw.ccpp.1986.name": "파일 이름 TOCTOU 경쟁 조건",
  "rule.sast.sw.ccpp.2007.description": "잘못된 umask 인자 체커는 umask() 함수에 잘못된 값을 인자로 전달하는 경우를 검출합니다.\n구체적으로는 umask 인자의 길이가 077 이상의 값이 들어오는 경우를 검출합니다.\nchmod 명령의 인자 양식과 umask 명령의 인자 양식이 비슷하지만 정반대로 해석되어 혼동하기 쉽기 때문에 검출합니다. chmod 명령에서는 7이 모든 것(읽기, 쓰기, 실행)을 허용하는 것, 0이 모든 것을 금지함을 의미합니다. 하지만 umask 명령에서는 거꾸로 7이 모든 것을 금지, 0이 모든 것을 허용을 의미합니다. 또한 chmod 명령이 3자리 8진수를 인자로 받는 것과 달리, umask 명령은 2자리 8진수를 인자로 받습니다. Python의 umask() 함수는 OS의 umask 명령과 같은 방식으로 작동하므로 인자도 같은 형태로 전달해야 합니다.\numask() 함수의 용법에 맞는 2자리 8진수를 인자를 전달합니다.",
  "rule.sast.sw.ccpp.2007.example.0.dangerous": "라인 3: umask() 함수를 올바르지 않은 인사를 사용하여 호출했습니다.",
  "rule.sast.sw.ccpp.2007.example.0.safe": "라인 3: umask를 올바른 인자를 사용하여 호출하도록 합니다.",
  "rule.sast.sw.ccpp.2007.name": "잘못된 umask 인자",
  "rule.sast.sw.ccpp.210.description": "정렬된 메모리의 재할당 체커는 aligned_alloc() 함수로 할당된 메모리를 realloc() 함수로 재할당하는 코드를 검출합니다.\naligned_alloc() 함수로 반환하는 메모리 정렬은 realloc() 함수에서 재할당하는 메모리 정렬과 다릅니다. 그러므로 예상하지 못한 동작이 발생할 수 있습니다.\naligned_alloc() 함수로 할당된 메모리를 realloc() 함수로 재할당하지 않도록 합니다.",
  "rule.sast.sw.ccpp.210.example.0.dangerous": "라인 5: ptr의 메모리 정렬을 4096바이트로 설정했습니다.\n라인 8: 정렬이 다른 메모리를 ptr에 할당하기 때문에 문제가 발생했습니다.",
  "rule.sast.sw.ccpp.210.example.0.safe": "라인 8: 메모리 정렬을 일치시키고 다른 크기의 메모리를 할당합니다. 이후 memcpy() 함수로 이전 메모리 값을 가져와서 문제를 해결합니다.",
  "rule.sast.sw.ccpp.210.name": "정렬된 메모리의 재할당",
  "rule.sast.sw.ccpp.214.description": "시스템 함수 호출 명령어 삽입 체커는 사용자 입력을 인자로 전달하는 exec 시스템 함수를 호출할 때 해당 인자에 `--` 문자열이 포함되지 않는 코드를 검출합니다.\n`--` 문자열을 사용하지 않으면 공격자가 임의의 옵션을 통해 명령어 삽입 공격을 수행할 수 있습니다.\nexec 시스템 함수를 호출할 때 사용자 입력을 인자로 전달하면 해당 인자에 `--` 문자열을 포함하도록 합니다.",
  "rule.sast.sw.ccpp.214.example.0.dangerous": "라인 7: login 명령어에서 getenv() 함수를 호출할 때 \"--\" 문자열을 누락했습니다.",
  "rule.sast.sw.ccpp.214.example.0.safe": "라인 6 : `--` 문자열을 포함시켜서 다른 명령어의 옵션을 사용하지 못하도록 방지할 수 있습니다. 그러면 다른 명령어의 옵션을 사용하여 `USER` 정보에 침투할 수 없게 됩니다.",
  "rule.sast.sw.ccpp.214.name": "시스템 함수 호출 명령어 삽입",
  "rule.sast.sw.ccpp.216.description": "누락된 널 종료 문자 체커는 수식에서 널로 끝나지 않는 문자열을 생성하거나 사용하게 되는 코드를 검출합니다.\n예를 들어, strncpy(dst, src, size) 함수에서 src의 크기가 size보다 큰 경우 dst의 결과 버퍼가 널로 끝나지 않을 수 있습니다.\n문자가 널로 끝나지 않으면 끝을 알 수 없으므로 표준 문자열 함수의 인자로 안전하게 사용할 수 없습니다. 따라서 예상하지 못한 값이 발생할 수 있습니다.\n수식 내에서 문자열이 널로 끝나도록 충분한 주의를 기울여야 합니다.\n예를 들어, strncpy() 함수에서 두 번째 인자의 크기가 세 번째 인자와 같거나 작아야 합니다.",
  "rule.sast.sw.ccpp.216.example.0.dangerous": "라인 3: dst의 크기보다 큰 src를 복사하여 널 문자가 상실되었습니다.",
  "rule.sast.sw.ccpp.216.example.0.safe": "라인 4: src의 크기와 널을 검사한 후에 strcpy()로 복사합니다.",
  "rule.sast.sw.ccpp.216.name": "누락된 널 종료 문자",
  "rule.sast.sw.ccpp.217.description": "제한 없는 입력의 잘못된 사용 체커는 사용자 외부 입력 데이터를 스택 배열에 저장하는 수식을 검출합니다.\n외부 입력 데이터를 스택 배열에 저장하는 수식인 strcat() 함수에서는 사용자 입력 데이터를 두 번째 인자로 사용하고, 지역 변수 배열을 첫 번째 인자로 사용합니다.\n지역 변수로 선언한 배열은 스택 영역에 고정적인 크기로 선언되는 버퍼입니다. 따라서 외부 입력 데이터가 버퍼 크기를 벗어나서 저장되면 버퍼 오버플로우가 발생할 수 있습니다. 버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n외부 입력 데이터를 스택 배열에 저장하는 대신 크기를 지정할 수 있는 동적 할당된 버퍼에 저장하도록 합니다. 그러면 외부 입력 데이터의 크기에 상관없이 버퍼 오버플로우가 발생하지 않고 데이터를 저장할 수 있습니다. 단, 외부 입력 데이터 이상의 크기를 버퍼에 동적으로 할당해야 합니다.",
  "rule.sast.sw.ccpp.217.example.0.dangerous": "라인 5: strcat() 함수를 사용하여 외부 입력 데이터인 argv 변수의 내용을 스택 배열인 cmdline 변수에 저장했습니다.",
  "rule.sast.sw.ccpp.217.example.0.safe": "라인 9: realloc() 함수를 사용하여 외부 입력 데이터의 크기에 맞춰 동적 할당한 버퍼를 cmdline 변수에 대입합니다.\n라인 13: 외부 입력 데이터를 cmdline에 복사합니다.",
  "rule.sast.sw.ccpp.217.name": "제한 없는 입력의 잘못된 사용",
  "rule.sast.sw.ccpp.2252.description": "함수의 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2252.example.0.dangerous": "라인 1: buf1 배열을 크기 100으로 선언했습니다.\n라인 2: buf2 배열을 크기 200으로 선언했습니다.\n라인 4: memcpy() 함수 때문에 범위를 벗어난 복사를 수행했습니다. 복사한 범위는 buf2의 크기인 200이지만 복사된 buf1의 크기는 100입니다.",
  "rule.sast.sw.ccpp.2252.example.0.safe": "라인 4: 복사한 범위를 buf1의 크기인 100으로 전달합니다.",
  "rule.sast.sw.ccpp.2252.name": "함수의 버퍼 오버플로우",
  "rule.sast.sw.ccpp.2253.description": "잘못된 조건으로 인한 함수의 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2253.example.0.dangerous": "라인 2: y 배열을 크기 100으로 선언했습니다.\n라인 3: n이 sizeof(y) + 100보다 크면 반환합니다. 즉, n이 sizeof(y)보다 큰 값인 경우에도 라인 4를 실행하게 됩니다.\n라인 4: n의 크기가 y 배열의 크기인 100보다 클 수 있습니다.",
  "rule.sast.sw.ccpp.2253.example.0.safe": "라인 3: 라인 4에서 복사하는 범위를 벗어나지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.ccpp.2253.name": "잘못된 조건으로 인한 함수의 버퍼 오버플로우",
  "rule.sast.sw.ccpp.2254.description": "함수의 필드 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2254.example.0.dangerous": "라인 1: node 구조체를 정의했습니다.\n라인 2: ch 배열 필드를 정의했습니다. 배열의 크기는 100입니다.\n라인 7: x->ch의 인덱스를 200으로 접근했습니다. 이것은 배열의 크기를 벗어납니다.",
  "rule.sast.sw.ccpp.2254.example.0.safe": "라인 7: x->ch의 인덱스를 100보다 작은 값으로 접근합니다.",
  "rule.sast.sw.ccpp.2254.name": "함수의 필드 버퍼 오버플로우",
  "rule.sast.sw.ccpp.2255.description": "잘못된 조건으로 인한 함수의 필드 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2255.example.0.dangerous": "라인 1: node 구조체를 선언했습니다.\n라인 2: node 구조체의 필드인 ch 배열을 크기 100으로 선언했습니다.\n라인 7: n의 값이 300보다 큰 경우 해당 값을 반환했습니다.\n라인 8: n의 크기가 ch 배열의 크기인 100보다 클 수 있습니다.",
  "rule.sast.sw.ccpp.2255.example.0.safe": "라인 7: 라인 8에서 복사하는 범위를 벗어나지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.ccpp.2255.name": "잘못된 조건으로 인한 함수의 필드 버퍼 오버플로우",
  "rule.sast.sw.ccpp.2256.description": "함수의 동적 할당 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2256.example.0.dangerous": "라인 1: buf1 포인터를 크기 100으로 동적 할당했습니다.\n라인 2: buf2 포인터를 크기 200으로 동적 할당했습니다.\n라인 4: memcpy() 함수 때문에 범위를 벗어난 복사를 수행했습니다. 복사한 범위는 buf2의 크기인 200이지만 복사된 buf1의 크기는 100입니다.",
  "rule.sast.sw.ccpp.2256.example.0.safe": "라인 4: 복사한 범위를 buf1의 크기인 100으로 전달합니다.",
  "rule.sast.sw.ccpp.2256.name": "함수의 동적 할당 버퍼 오버플로우",
  "rule.sast.sw.ccpp.2257.description": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2257.example.0.dangerous": "라인 2: 변수 y에 100의 크기만큼 동적 할당한 값을 대입했습니다.\n라인 3: n 값이 sizeof(y)에 100을 더한 값보다 큰지를 비교했습니다.\n라인 4: 라인 3의 조건문으로 인해 memcpy()에서 y의 크기보다 큰 값을 복사했으므로 버퍼 오버플로우가 발생할 수 있습니다.",
  "rule.sast.sw.ccpp.2257.example.0.safe": "라인 3: 값이 복사되는 버퍼의 범위를 넘지 않도록 조건문을 설정합니다.",
  "rule.sast.sw.ccpp.2257.name": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 오버플로우",
  "rule.sast.sw.ccpp.2258.description": "함수의 필드 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2258.example.0.dangerous": "라인 8: 라인 13에 의해 memset() 함수의 세 번째 인자 값의 계산 결과는 -10입니다. 음수의 메모리 영역에 접근하게 됩니다.\n라인 12: n 값이 -20이 됩니다.\n라인 13: type_under() 함수를 호출했습니다. 인자값은 -20입니다.",
  "rule.sast.sw.ccpp.2258.example.0.safe": "라인 13: n 값이 라인8 에서 음수가 되지 않도록 초기화합니다.",
  "rule.sast.sw.ccpp.2258.name": "함수의 필드 버퍼 언더플로우",
  "rule.sast.sw.ccpp.2259.description": "잘못된 조건으로 인한 함수의 필드 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2259.example.0.dangerous": "라인 8: n이 0 이상인 경우 해당 값을 반환했습니다.\n라인 9: memset() 함수의 세 번째 인자값이 0보다 작게 됩니다. 음수의 메모리 영역에 접근하게 됩니다.",
  "rule.sast.sw.ccpp.2259.example.0.safe": "라인 8: 라인 9에서 n 값이 음수가 되지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.ccpp.2259.name": "잘못된 조건으로 인한 함수의 필드 버퍼 언더플로우",
  "rule.sast.sw.ccpp.226.description": "누락된 작업 디렉토리 변경 체커는 chroot() 함수로 루트 디렉토리를 변경한 후에 chdir() 함수로 디렉토리를 수정하지 않는 코드를 검출합니다.\nchroot() 함수는 프로그램이 특정 디렉토리를 파일 시스템의 루트 디렉토리로 인지하도록 제한하는 함수입니다. 동시에 프로그램의 작업 디렉토리를 변경하지 않으면 상대 경로를 통해 다른 디렉토리로 접근할 수 있습니다.\nchroot() 함수로 루트 디렉토리를 변경한 후에 chdir() 함수로 이동할 디렉토리를 수정하지 않으면 원하지 않는 결과가 발생할 수 있습니다.",
  "rule.sast.sw.ccpp.226.example.0.dangerous": "라인 5: chroot() 함수만 사용되었고, 작업 디렉토리를 변경하지 않았기 때문에 오류로 검출되었습니다.",
  "rule.sast.sw.ccpp.226.example.0.safe": "라인 6: chdir(\"/\") 함수를 사용하여 현재 디렉토리를 새로운 루트 디렉토리의 하위 디렉토리로 수정해야 합니다.",
  "rule.sast.sw.ccpp.226.name": "누락된 작업 디렉토리 변경",
  "rule.sast.sw.ccpp.226.option.function_target_begin_call_function.description": "분석을 시작할 특정 함수 호출을 설정합니다.",
  "rule.sast.sw.ccpp.226.option.function_target_begin_call_function.name": "분석을 시작할 특정 함수 호출",
  "rule.sast.sw.ccpp.226.option.should_be_call_param.description": "필수 호출 파라미터를 설정합니다.",
  "rule.sast.sw.ccpp.226.option.should_be_call_param.name": "필수 호출 파라미터 설정",
  "rule.sast.sw.ccpp.2260.description": "함수의 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2260.example.0.dangerous": "라인 3: 라인 7에 의해 memset() 함수의 세 번째 인자 값의 계산 결과는 -10입니다. 음수의 메모리 영역에 접근하게 됩니다.\n라인 7: n 값이 -20이 됩니다.\n라인 8: under_function() 함수를 호출했습니다. 인자값은 -20입니다.",
  "rule.sast.sw.ccpp.2260.example.0.safe": "라인 8: n 값이 라인3 에서 음수가 되지 않도록 초기화합니다.",
  "rule.sast.sw.ccpp.2260.name": "함수의 버퍼 언더플로우",
  "rule.sast.sw.ccpp.2261.description": "잘못된 조건으로 인한 함수의 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2261.example.0.dangerous": "라인 3: n이 0 이상인 경우 해당 값을 반환했습니다.\n라인 4: memset() 함수의 세 번째 인자값이 0보다 작게 됩니다. 음수의 메모리 영역에 접근하게 됩니다.",
  "rule.sast.sw.ccpp.2261.example.0.safe": "라인 3: 라인 4에서 n 값이 음수가 되지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.ccpp.2261.name": "잘못된 조건으로 인한 함수의 버퍼 언더플로우",
  "rule.sast.sw.ccpp.2262.description": "함수의 동적 할당 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2262.example.0.dangerous": "라인 3: 라인 8에 의해 memset() 함수의 세 번째 인자 값이 -10입니다. 음수의 메모리 영역에 접근하게 됩니다.\n라인 8: n 값이 -20입니다.\n라인 9: under_function() 함수를 호출했습니다. 인자값은 -20입니다.",
  "rule.sast.sw.ccpp.2262.example.0.safe": "라인 9: 라인 3에서 n 값이 음수가 되지 않도록 초기화합니다.",
  "rule.sast.sw.ccpp.2262.name": "함수의 동적 할당 버퍼 언더플로우",
  "rule.sast.sw.ccpp.2263.description": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.2263.example.0.dangerous": "라인 3: n이 0 이상인 경우 해당 값을 반환했습니다.\n라인 4: memset() 함수의 세 번째 인자값이 0보다 작게 됩니다. 음수의 메모리 영역에 접근하게 됩니다.",
  "rule.sast.sw.ccpp.2263.example.0.safe": "라인 3: 라인 4에서 n 값이 음수가 되지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.ccpp.2263.name": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 언더플로우",
  "rule.sast.sw.ccpp.227.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.ccpp.227.example.0.dangerous": "라인 6: gethostbyaddr() 함수를 사용하여 DNS명을 획득했습니다.\n라인 8: DNS명을 검증하지 않고 Client를 확인하였기 때문에 오류로 검출했습니다.",
  "rule.sast.sw.ccpp.227.example.0.safe": "라인 2: DNS명 대신 IP 주소로 Client를 확인합니다.",
  "rule.sast.sw.ccpp.227.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.ccpp.227.option.dns_decision_function.description": "DNS를 인자로 이용하여 보안 결정을 수행하는 함수 이름을 작성합니다.<br />예시) strcmp",
  "rule.sast.sw.ccpp.227.option.dns_decision_function.name": "DNS를 이용한 보안 결정 함수",
  "rule.sast.sw.ccpp.227.option.dns_lookup_function.description": "DNS lookup을 수행하는 함수 이름을 작성합니다.<br />예시) gethostbyaddr",
  "rule.sast.sw.ccpp.227.option.dns_lookup_function.name": "DNS Lookup 함수",
  "rule.sast.sw.ccpp.229.description": "멀티스레드 프로그램 내에서 getlogin 함수 사용 체커는 다중 스레드 환경에서 사용자 계정을 가져오기 위해 getlogin() 함수를 사용하는 코드를 검출합니다.\n옵션에서 다중 스레드 환경에서 사용하지 말아야 할 함수를 설정할 수 있습니다.\ngetlogin() 함수는 호출된 스레드의 사용자 이름을 반환합니다. 해당 함수를 다중 스레드 환경에서 사용하는 경우 사용자 이름이 다른 스레드에 의해 변환되어 반환될 수 있습니다.\n다중 스레드 환경에서 getlogin() 함수를 사용하지 않습니다.",
  "rule.sast.sw.ccpp.229.example.0.dangerous": "라인 3: 다른 스레드에 의해 반환 값이 변경될 수 있는 getlogin() 함수를 사용했습니다.",
  "rule.sast.sw.ccpp.229.example.0.safe": "라인 4: 다중 스레드 환경에서 안전한 getlogin_r() 함수를 사용합니다.",
  "rule.sast.sw.ccpp.229.name": "멀티스레드 프로그램 내에서 getlogin 함수 사용",
  "rule.sast.sw.ccpp.229.option.function_should_not_be_used.description": "금지 함수를 설정합니다.",
  "rule.sast.sw.ccpp.229.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.sw.ccpp.230.description": "하드코드된 비밀번호 체커는 하드코딩된 비밀번호가 SQLConnect() 함수에 포함되어 있는 경우를 검출합니다.\n옵션에서 하드코딩된 비밀번호 형식을 지정할 수 있습니다.\n소스 내부에 작성된 비밀번호를 사용하여 외부와 통신하거나 내부에서 인증 받는 동작은 위험합니다. 관리자는 공격자가 시스템에 접근하여 정보를 유출하는 행위를 발견하기 어렵습니다. 뿐만 아니라 비밀번호를 변경하여 재배포하는 작업도 수행해야 합니다.\n비밀번호를 SQLConnect() 함수 내부에 작성하지 않도록 합니다.",
  "rule.sast.sw.ccpp.230.example.0.dangerous": "라인 6: 하드코딩된 \"pwd\"가 포함되므로 오류로 검출했습니다.",
  "rule.sast.sw.ccpp.230.example.0.safe": "라인 6: 암호를 외부에서 취득하도록 변경해하고, 암호화를 사용하여 관리해야 합니다.",
  "rule.sast.sw.ccpp.230.name": "하드코드된 비밀번호",
  "rule.sast.sw.ccpp.230.option.call_param_target_in_function.description": "암호가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 명) 형식으로 작성합니다.<br />예시) 6:SQLConnect",
  "rule.sast.sw.ccpp.230.option.call_param_target_in_function.name": "대상 함수 및 인자",
  "rule.sast.sw.ccpp.230.option.password_variable_name.description": "비밀번호로 사용되는 변수 이름을 작성합니다.<br />예시) password",
  "rule.sast.sw.ccpp.230.option.password_variable_name.name": "비밀번호 변수 이름",
  "rule.sast.sw.ccpp.231.description": "하드코드된 사용자 이름 체커는 하드코딩된 사용자 계정이 SQLConnect() 함수에 포함되어 있는 코드를 검출합니다.\n소스 내부에 작성된 사용자 계정을 사용하여 외부와 통신하거나 내부에서 인증 받는 동작은 위험합니다. 관리자는 공격자가 시스템에 접근하여 정보를 유출하는 행위를 발견하기 어렵습니다. 뿐만 아니라 사용자 계정이나 비밀번호를 변경하여 재배포하는 작업도 수행해야 합니다.\n사용자 계정을 SQLConnect() 함수 내부에 작성하지 않도록 합니다.",
  "rule.sast.sw.ccpp.231.example.0.dangerous": "라인 9: 하드코딩된 사용자 계정을 검증 없이 사용했습니다.",
  "rule.sast.sw.ccpp.231.example.0.safe": "라인 9: 사용자 계정과 암호를 검증한 후에 사용해야 합니다.",
  "rule.sast.sw.ccpp.231.name": "하드코드된 사용자 이름",
  "rule.sast.sw.ccpp.231.option.call_param_target_in_function.description": "검출 대상 함수와 인자의 인덱스를 적습니다. 예) SQLConnect의 4번째 인자 = 4:SQLConnect",
  "rule.sast.sw.ccpp.231.option.call_param_target_in_function.name": "대상 함수와 인자 인덱스",
  "rule.sast.sw.ccpp.232.description": "취약한 암호화 알고리즘 체커는 단순한 암호화 알고리즘으로 비밀번호를 암호화하는 코드를 검출합니다.\n구체적으로, SQLConnect() 함수의 6번째 인자로 전달되는 비밀번호에서 취약한 암호화 알고리즘을 사용하는 경우입니다. 권장하는 암호화 모듈은 RSA_private_decrypt() 함수 혹은 RSA_private_decrypt_assign() 함수입니다.\n지나치게 간단한 암호화 함수를 사용할 경우 비밀번호가 노출될 가능성이 있습니다.\n취약한 암호화 알고리즘으로 비밀번호를 암호화하지 않도록 합니다.",
  "rule.sast.sw.ccpp.232.example.0.dangerous": "라인 9: 암호화가 아닌 단순 인코딩 알고리즘을 사용하여 비밀번호를 암호화했습니다.",
  "rule.sast.sw.ccpp.232.example.0.safe": "라인 7: 취약한 암호화 알고리즘 대신 RSA 암호화 알고리즘을 사용합니다.",
  "rule.sast.sw.ccpp.232.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.ccpp.232.option.call_param_target_in_function.description": "키가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 이름) 형식으로 작성합니다.<br />예시) 1:RSA_generate_key",
  "rule.sast.sw.ccpp.232.option.call_param_target_in_function.name": "대상 함수 및 인자",
  "rule.sast.sw.ccpp.232.option.need_function.description": "권장 암호화 모듈을 설정합니다. <br />방법) [param index]:[function name]  <br />param index : -1  - assign      ex) passwd = function();<br />0   - all         parameter가 1인 경우만 사용가능<br />1~  - index       ex) function(test, passwd);",
  "rule.sast.sw.ccpp.232.option.need_function.name": "권장 암호화 모듈",
  "rule.sast.sw.ccpp.233.description": "안전하지 않은 권한 제어 체커는 seteuid() 함수를 사용하여 사용자에게 높은 권한을 부여하는 코드를 검출합니다.\n사용자가 상위 권한을 갖게 되면 정보가 유출될 가능성이 발생합니다.\nseteuid() 함수를 사용하여 권한을 부여하지 않도록 합니다.",
  "rule.sast.sw.ccpp.233.example.0.dangerous": "라인 4: seteuid(0) 함수를 호출하여 최상위 권한을 획득하므로 오류로 검출되었습니다.\n라인 7: 현재 프로세스의 유효 사용자 UID를 획득하여 권한을 떨어뜨립니다.",
  "rule.sast.sw.ccpp.233.example.0.safe": "라인 4: 가능한 사용자 권한을 높이지 않고 접근 가능한 리소스만 사용하도록 합니다.",
  "rule.sast.sw.ccpp.233.name": "안전하지 않은 권한 제어",
  "rule.sast.sw.ccpp.233.option.call_param_target_in_function.description": "호출 함수와 필수 파라미터를 설정합니다.",
  "rule.sast.sw.ccpp.233.option.call_param_target_in_function.name": "호출 함수와 필수 파라미터 설정",
  "rule.sast.sw.ccpp.234.description": "안전하지 않은 권한 초기화 체커는 높은 권한을 부여하여 작업을 수행한 후에 해당 권한을 회수하지 않는 코드를 검출합니다.\n분석 대상 함수 및 함수 사용 순서를 옵션에 지정할 수 있습니다.\n작업을 수행한 후에 작업에 필요한 권한을 회수하지 않으면 공격자가 쉽게 접근할 수 있을 뿐만 아니라 사용자가 권한을 오용할 수도 있습니다.\n작업을 위해 상승된 권한은 작업을 수행한 후에 회수되어야 합니다.",
  "rule.sast.sw.ccpp.234.example.0.dangerous": "라인 4: 최상위 권한을 부여하고 작업 후에 권한을 회수하지 않았으므로 오류로 검출되었습니다.",
  "rule.sast.sw.ccpp.234.example.0.safe": "라인 8: chroot() 함수를 사용한 후에 seteuid() 함수를 호출하여 권한을 회수합니다.",
  "rule.sast.sw.ccpp.234.name": "안전하지 않은 권한 초기화",
  "rule.sast.sw.ccpp.234.option.function_target.description": "대상 함수를 설정합니다.",
  "rule.sast.sw.ccpp.234.option.function_target.name": "대상 함수",
  "rule.sast.sw.ccpp.234.option.function_used_order.description": "함수 사용 순서를 설정합니다.",
  "rule.sast.sw.ccpp.234.option.function_used_order.name": "함수 사용 순서",
  "rule.sast.sw.ccpp.235.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키를 사용하는 코드를 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 사용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.ccpp.235.example.0.dangerous": "라인 4: 키의 길이가 512비트로 짧기 때문에 오류로 검출했습니다.",
  "rule.sast.sw.ccpp.235.example.0.safe": "라인 4: 키의 길이를 최소한 2048비트 이상으로 설정하여 사용합니다.",
  "rule.sast.sw.ccpp.235.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.ccpp.235.option.call_param_target_in_function.description": "키가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 이름) 형식으로 작성합니다.<br />예시) 1:RSA_generate_key",
  "rule.sast.sw.ccpp.235.option.call_param_target_in_function.name": "대상 함수 및 인자",
  "rule.sast.sw.ccpp.235.option.min_value.description": "암호화 알고리즘 사용 시 허용할 최소 키 길이를 입력합니다.<br />예시) 1024",
  "rule.sast.sw.ccpp.235.option.min_value.name": "최소 키 길이",
  "rule.sast.sw.ccpp.236.description": "부적절한 RSA 패딩 체커는 RSA 알고리즘을 사용할 때 부적절한 패딩 방식을 사용하는 코드를 검출합니다.\n패딩 옵션에서 RSA를 패딩 없이 사용하는 RSA_NO_PADDING을 전달하지 않도록 합니다.\n적절한 RSA 패딩을 사용할 경우 더 안전한 암호화가 수행되기 때문에 권장 사항에 맞춰서 일정 수준 이상의 패딩을 사용해야 합니다.\nOAEP 방식을 사용하는 것이 좋습니다.",
  "rule.sast.sw.ccpp.236.example.0.dangerous": "라인 4: 보안에 취약한 RSA_NO_PADDING을 사용했기 때문에 오류로 검출했습니다.",
  "rule.sast.sw.ccpp.236.example.0.safe": "라인 4: RSA_NO_PADDING 대신 다른 인자를 사용하여 암호화를 강화해야 합니다.",
  "rule.sast.sw.ccpp.236.name": "부적절한 RSA 패딩",
  "rule.sast.sw.ccpp.236.option.call_param_should_not_be_name.description": "함수 호출 시 사용하지 말아야 할 매크로를 설정합니다.",
  "rule.sast.sw.ccpp.236.option.call_param_should_not_be_name.name": "사용하지 말아야 할 매크로",
  "rule.sast.sw.ccpp.236.option.call_param_target_in_function.description": "키가 사용되는 대상 함수 를 작성합니다.",
  "rule.sast.sw.ccpp.236.option.call_param_target_in_function.name": "대상 함수",
  "rule.sast.sw.ccpp.237.description": "하드코드된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.\n소스 코드에서 고정된 솔트 값을 사용하는 경우 모든 개발자에게 솔트가 노출될 뿐만 아니라 일단 애플리케이션을 운영하기 시작하면 수정하기가 어려워집니다. 또한 공격자가 솔트 값을 아는 경우 애플리케이션에 대한 `레인보우 테이블`을 계산하여 해싱된 값을 더 쉽게 확인할 수 있습니다.\n암호학적으로 안전한 방식으로 무작위로 생성되어 예측하기 어려운 솔트를 사용하거나 솔트를 외부 입력을 통해 전달하는 것이 좋습니다.",
  "rule.sast.sw.ccpp.237.example.0.dangerous": "라인 4: 하드코딩된 솔트 xp를 사용했습니다.",
  "rule.sast.sw.ccpp.237.example.0.safe": "라인 3: 솔트 값을 매번 변경할 수 있도록 변경해야 합니다.",
  "rule.sast.sw.ccpp.237.name": "하드코드된 솔트",
  "rule.sast.sw.ccpp.237.option.call_param_target_in_function.description": "Salt가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 명) 형식으로 작성합니다.<br />예시) 2:crypt",
  "rule.sast.sw.ccpp.237.option.call_param_target_in_function.name": "대상 함수 및 인자",
  "rule.sast.sw.ccpp.237.option.excluded_expr.description": "제외할 Salt값의 문자열을 작성합니다. <br />예시) safe",
  "rule.sast.sw.ccpp.237.option.excluded_expr.name": "제외할 Salt값 문자열",
  "rule.sast.sw.ccpp.237.option.target_expr.description": "검출할 Salt값의 문자열을 작성합니다. 값이 입력되지 않을 경우 모든 상수 Salt에 대해서 오류를 검출합니다.<br />예시) salt",
  "rule.sast.sw.ccpp.237.option.target_expr.name": "검출할 Salt값 문자열",
  "rule.sast.sw.ccpp.238.description": "취약한 비밀번호 암호화 알고리즘 체커는 안전하지 않은 암호화 알고리즘을 사용하는 코드를 검출합니다.\n해당 오류는 다음과 같은 취약한 암호화 알고리즘을 사용하는 경우에 발생합니다. RC2, RC4, RC5, RC6, MD4, MD5, SHA1, DES.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 암호화 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.ccpp.238.example.0.dangerous": "라인 4: EVP_des_ecb() 함수는 취약한 DES 알고리즘을 사용했습니다.",
  "rule.sast.sw.ccpp.238.example.0.safe": "라인 4: 안전한 3-DES, AES 암호화 알고리즘을 사용합니다.",
  "rule.sast.sw.ccpp.238.name": "취약한 비밀번호 암호화 알고리즘",
  "rule.sast.sw.ccpp.238.option.crypt_string.description": "암호화를 나타내는 문자열을 입력합니다.<br />예시) crypt.*",
  "rule.sast.sw.ccpp.238.option.crypt_string.name": "암호화 의미 문자열",
  "rule.sast.sw.ccpp.238.option.decrypt_string.description": "복호화를 나타내는 문자열을 입력합니다.<br />예시) decrypt.*",
  "rule.sast.sw.ccpp.238.option.decrypt_string.name": "복호화 의미 문자열",
  "rule.sast.sw.ccpp.238.option.risky_algorithm.description": "위험한 암호화 알고리즘 함수 이름을 작성합니다.<br />예시) EVP_des_ecb",
  "rule.sast.sw.ccpp.238.option.risky_algorithm.name": "위험한 암호화 알고리즘",
  "rule.sast.sw.ccpp.238.option.risky_algorithm_id.description": "취약한 암호화 알고리즘 ID를 입력합니다.<br />예시) DES",
  "rule.sast.sw.ccpp.238.option.risky_algorithm_id.name": "취약한 암호화 알고리즘 ID",
  "rule.sast.sw.ccpp.238.option.safe_algorithm.description": "안전한 암호화 알고리즘 함수 이름을 작성합니다.<br />예시) EVP_aes_128_cbc",
  "rule.sast.sw.ccpp.238.option.safe_algorithm.name": "안전한 암호화 알고리즘",
  "rule.sast.sw.ccpp.239.description": "동일 포트에 여러 개의 바인딩 체커는 여러 개의 서비스에서 하나의 포트를 사용하는 코드를 검출합니다.\n다수의 서비스가 하나의 포트를 사용하는 경우 전달되는 패킷을 도난 당하거나 도용 당할 가능성이 있습니다.\n여러 서비스가 동일한 포트를 사용하지 않도록 합니다.",
  "rule.sast.sw.ccpp.239.example.0.dangerous": "라인 9: 소켓 옵션에서 SO_REUSSEADDR을 사용하도록 설정했습니다.\n라인 12: 서버 주소 값으로 INADDR_ANY을 사용했습니다.\n라인 14: SO_REUSSEADDR, INADDR_ANY을 사용하는 경우 여러 개의 소켓이 바인딩될 수 있습니다.",
  "rule.sast.sw.ccpp.239.example.0.safe": "라인 9: 소켓 옵션에서 SO_REUSEADDR과 INADDR_ANY를 같이 사용하지 않도록 합니다.",
  "rule.sast.sw.ccpp.239.name": "동일 포트에 여러 개의 바인딩",
  "rule.sast.sw.ccpp.240.description": "중요한 리소스에 대한 잘못된 권한 할당 체커는 사용자에게 읽기 또는 수정 권한을 잘못 부여하는 코드를 검출합니다.\n사용자 권한을 잘못 부여하는 경우 시스템 정보가 노출되거나 권한의 오용으로 인해 시스템이 잘못 동작할 수 있습니다.\n권한을 부여하는 도중 시스템 정보가 노출되지 않도록 주의해야 합니다.",
  "rule.sast.sw.ccpp.240.example.0.dangerous": "라인 1: umask(0)를 사용하여 모든 사용자에게 읽기 및 쓰기 권한을 부여했습니다.",
  "rule.sast.sw.ccpp.240.example.0.safe": "라인 1: umask()를 사용하여 권한을 설정할 때 올바른 권한을 설정하도록 합니다.",
  "rule.sast.sw.ccpp.240.name": "중요한 리소스에 대한 잘못된 권한 할당",
  "rule.sast.sw.ccpp.240.option.access_function.description": "민감한 정보에 접근하는 함수 이름을 작성합니다.<br />예시) open",
  "rule.sast.sw.ccpp.240.option.access_function.name": "민감한 정보 접근 함수",
  "rule.sast.sw.ccpp.242.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 해당 취약점으로 인해 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.ccpp.242.example.0.dangerous": "라인 8: SQL 쿼리문을 처리하지 않고 그대로 사용했습니다. \"name' OR 'a'='a\" 와 같은 문자열을 입력하는 경우 WHERE 절은 항상 true입니다.",
  "rule.sast.sw.ccpp.242.example.0.safe": "라인 6: SQL 쿼리문에 변형이 발생하지 않도록 처리 과정을 거쳐서 삽입하도록 합니다.\n라인 7: 라인 6과 같습니다.",
  "rule.sast.sw.ccpp.242.name": "SQL 삽입",
  "rule.sast.sw.ccpp.242.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) makeSecureString",
  "rule.sast.sw.ccpp.242.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.ccpp.242.option.param_on_sql_injection.description": "모든 인자가 위험한 값을 가질 수 있다고 여깁니다. 따라서, 많은 이슈가 발생할 수 있습니다.",
  "rule.sast.sw.ccpp.242.option.param_on_sql_injection.name": "인자는 모두 위험",
  "rule.sast.sw.ccpp.242.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) SQLExecDirect",
  "rule.sast.sw.ccpp.242.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.242.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.242.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.243.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자(`, /, \\, .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.ccpp.243.example.0.dangerous": "라인 2: \"reportName\" 파일 이름이 외부 입력에 의해 결정되었습니다. 따라서 임의의 파일에서 작업할 수 있습니다.",
  "rule.sast.sw.ccpp.243.example.0.safe": "라인 3: 외부 입력값으로 파일 경로를 설정하지 않도록 합니다.",
  "rule.sast.sw.ccpp.243.name": "경로 조작",
  "rule.sast.sw.ccpp.243.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) unlink",
  "rule.sast.sw.ccpp.243.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.243.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.243.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.244.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n예를 들어, strpbrk() 함수를 사용하여 추가적인 검증 없이 system 명령어를 입력하는 경우입니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.ccpp.244.example.0.dangerous": "라인 6: 외부로부터 명령어를 전달 받았습니다.\n라인 10: 외부에서 받은 명령어를 적절한 처리 없이 사용했습니다. 예를 들어, \"file_name.txt; rm -rf\" 와 같은 명령어를 삽입하는 경우 해당 디렉토리에 있는 모든 파일이 삭제될 위험이 있습니다.",
  "rule.sast.sw.ccpp.244.example.0.safe": "라인 7: 명령어에 삽입 공격에 사용되는 위험한 문자가 포함되어 있는지 strpbrk() 함수로 확인하고 해당 명령어를 사용합니다.",
  "rule.sast.sw.ccpp.244.name": "명령어 삽입",
  "rule.sast.sw.ccpp.244.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) strpbrk",
  "rule.sast.sw.ccpp.244.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.ccpp.244.option.sink_call.description": "민감한 정보가 포함되었을 경우 위험한 함수 명을 작성합니다.<br />예시) system",
  "rule.sast.sw.ccpp.244.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.244.option.sink_call_any.description": "소켓에서 민감한 정보가 올 경우 위험한 함수 이름을 작성합니다.<br />예시) execl",
  "rule.sast.sw.ccpp.244.option.sink_call_any.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.244.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.244.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.245.description": "LDAP 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 LDAP 쿼리문을 검출합니다.\n공격자가 외부 입력을 통해서 의도하지 않은 LDAP(Lightweight Directory Access Protocol) 명령어를 수행할 수 있습니다. 즉, 웹 애플리케이션이 사용자가 제공한 입력을 올바르게 처리하지 못하면 공격자가 LDAP 명령문의 구성을 바꿀 수 있습니다. 이로 인해 프로세스가 명령을 실행한 컴포넌트와 동일한 권한을 가지고 동작하게 됩니다.\nDN(Distinguished Name)과 필터에 사용되는 사용자 입력값에는 특수문자가 포함되지 않도록 특수문자를 제거해야 합니다. 만약 특수문자를 허용해야 하는 경우라면 특수문자(=, +, <, >, #, ;, \\ 등 )가 실행 명령이 아닌 일반문자로 인식되도록 처리합니다.",
  "rule.sast.sw.ccpp.245.example.0.dangerous": "라인 2: 적절한 처리 없이 LDAP 쿼리문을 생성했습니다. '|' 과 같은 문자열을 사용하는 경우 모든 항목을 볼 수 있습니다.",
  "rule.sast.sw.ccpp.245.example.0.safe": "라인 2: 외부 입력이 아닌 LDAP 쿼리문을 사용합니다.",
  "rule.sast.sw.ccpp.245.name": "LDAP 삽입",
  "rule.sast.sw.ccpp.245.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) ldap_search_ext_s",
  "rule.sast.sw.ccpp.245.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.245.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.245.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.246.description": "자원 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스 식별자를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 대한 접근 혹은 식별을 허용할 경우에 입력값 조작을 통해 시스템이 보호하는 리소스에 임의로 접근할 수 있습니다. 리소스 삽입 약점을 사용하여 공격자는 리소스의 수정/삭제, 시스템 정보 누출, 시스템 리소스 간 충돌로 인한 서비스 장애 등을 발생시킬 수 있습니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 리스트에서 선택되도록 합니다.",
  "rule.sast.sw.ccpp.246.example.0.dangerous": "라인 2: getenv() 함수를 통해 외부에서 포트 번호를 전달 받았습니다. 임의적인 포트 번호를 사용하여 소켓을 생성할 수 있습니다.\n라인 6: strncpy() 함수를 통해 buf에 외부 포트 번호를 복사했습니다.\n라인 7: connect() 함수에서 buf 값을 사용했습니다.",
  "rule.sast.sw.ccpp.246.example.0.safe": "라인 9: 지정된 포트 번호를 사용하도록 합니다.",
  "rule.sast.sw.ccpp.246.name": "자원 삽입",
  "rule.sast.sw.ccpp.246.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) connect",
  "rule.sast.sw.ccpp.246.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.246.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.246.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.247.description": "시스템 혹은 구성 설정의 외부 제어 체커는 적절한 처리 없이 외부 입력값을 sethostid() 함수의 인자로 직접 사용하는 코드를 검출합니다.\n외부에서 시스템 설정을 변경하는 경우 시스템의 오작동 또는 시스템 데이터의 악의적인 삭제 등의 결과를 일으킬 수 있습니다.\nsethostid() 함수의 인자에 외부 입력값을 직접 사용하지 않도록 합니다.",
  "rule.sast.sw.ccpp.247.example.0.dangerous": "라인 2: sethostid() 함수를 사용하여 현재 시스템의 호스트 ID를 변경했습니다. 임의의 사용자가 호스트 ID를 이용하여 시스템의 설정을 변경할 수 있습니다.",
  "rule.sast.sw.ccpp.247.example.0.safe": "라인 2: sethostid() 함수의 인자에 외부 입력값을 직접 사용하지 않도록 합니다.",
  "rule.sast.sw.ccpp.247.name": "시스템 혹은 구성 설정의 외부 제어",
  "rule.sast.sw.ccpp.247.option.sink_call.description": "민감한 정보를 포함할 경우 위험한 함수 이름을 작성합니다.<br />예시) sethostid",
  "rule.sast.sw.ccpp.247.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.247.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.247.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.248.description": "안전하지 않은 직접 객체 참조 체커는 외부 입력 경로를 사용하여 라이브러리를 불러오거나 명령을 실행하는 코드를 검출합니다.\n외부 입력 경로로 라이브러리를 사용하는 경우 잘못된 라이브러리를 불러오거나 악의적인 명령을 수행할 가능성이 있습니다.\n외부 입력 경로로 라이브러리를 불러오지 않도록 합니다.",
  "rule.sast.sw.ccpp.248.example.0.dangerous": "라인 3: getenv() 함수에서 외부 입력 경로를 통해 라이브러리를 사용합니다.",
  "rule.sast.sw.ccpp.248.example.0.safe": "라인 3: 절대 경로를 통해 라이브러리를 사용합니다.",
  "rule.sast.sw.ccpp.248.name": "안전하지 않은 직접 객체 참조",
  "rule.sast.sw.ccpp.248.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) dlopen",
  "rule.sast.sw.ccpp.248.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.248.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.248.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.251.description": "주석문 안의 비밀번호 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.ccpp.251.example.0.dangerous": "라인 1: 주석문에 비밀번호 정보가 password 라고 명시되어 있기 때문에 오류로 검출했습니다.\n라인 2: 주석문에 비밀번호 정보가 passwd 라고 명시되어 있기 때문에 오류로 검출했습니다.",
  "rule.sast.sw.ccpp.251.example.0.safe": "라인 1: 주석문에 비밀번호를 작성하지 않도록 합니다.",
  "rule.sast.sw.ccpp.251.name": "주석문 안의 비밀번호",
  "rule.sast.sw.ccpp.251.option.allowed_max_word_length.description": "단일 단어의 최대 길이를 작성합니다.<br />예시) 40",
  "rule.sast.sw.ccpp.251.option.allowed_max_word_length.name": "허용할 최대 연속 단어 길이",
  "rule.sast.sw.ccpp.251.option.check_header.description": "옵션을 사용하는 경우 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.sast.sw.ccpp.251.option.check_header.name": "헤더 파일 분석 여부",
  "rule.sast.sw.ccpp.251.option.check_password_only.description": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "rule.sast.sw.ccpp.251.option.check_password_only.name": "비밀번호 문자열 단독 검출 여부",
  "rule.sast.sw.ccpp.251.option.consecutive_word_expr.description": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.<br />예시) [a-zA-Z0-9]+",
  "rule.sast.sw.ccpp.251.option.consecutive_word_expr.name": "검출할 연속 단어 형식",
  "rule.sast.sw.ccpp.251.option.fixed_key_length.description": "고정 길이 문자열을 입력합니다.",
  "rule.sast.sw.ccpp.251.option.fixed_key_length.name": "고정 길이",
  "rule.sast.sw.ccpp.251.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.ccpp.251.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.ccpp.251.option.using_fixed_key_length.description": "옵션을 사용하는 경우, 고정 길이의 문자열을 검출합니다.",
  "rule.sast.sw.ccpp.251.option.using_fixed_key_length.name": "고정 길이 검출 여부",
  "rule.sast.sw.ccpp.252.description": "부적절한 인증 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.\n사용자 인증을 위한 별도의 작업을 수행하지 않고 익명 바인딩을 허용하면 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.\n사용자 이름과 비밀번호를 명시하여 LDAP 바인딩을 수행합니다.",
  "rule.sast.sw.ccpp.252.example.0.dangerous": "라인 8: 사용자 인증 없이 LDAP 검색을 시도했습니다. 사용자의 로그인 정보와 인자로 전달되는 username을 비교하는 검증 과정이 없기 때문에 타인의 정보를 볼 수 있습니다.",
  "rule.sast.sw.ccpp.252.example.0.safe": "라인 7: LDAP을 검색하기 전에 username을 인증하고, username이 로그인 정보와 일치하는지 검증합니다.",
  "rule.sast.sw.ccpp.252.name": "부적절한 인증",
  "rule.sast.sw.ccpp.252.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 입력합니다.<br />예시) strcmp",
  "rule.sast.sw.ccpp.252.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.ccpp.252.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) system",
  "rule.sast.sw.ccpp.252.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.252.option.source_variable.description": "민감한 정보를 포함한 변수 이름을 작성합니다.<br />예시) username",
  "rule.sast.sw.ccpp.252.option.source_variable.name": "민감한 정보 변수",
  "rule.sast.sw.ccpp.253.description": "비밀번호의 일반 텍스트 저장 체커는 비밀번호를 암호화하지 않고 저장하는 코드를 검출합니다.\n사용자 및 시스템 중요 정보를 처리하는 과정에서 해당 정보를 평문으로 저장하는 경우 공격자에게 해당 정보가 노출될 수 있습니다.\n비밀번호는 높은 수준의 암호화 알고리즘을 통해 생성되고 관리되어야 합니다.",
  "rule.sast.sw.ccpp.253.example.0.dangerous": "라인 9: 파일에서 비밀번호를 읽어 옵니다.\n라인 19: DB에 접속할 때 비밀번호를 암호화하지 않은 채로 직접 연결하고 있습니다.",
  "rule.sast.sw.ccpp.253.example.0.safe": "라인 12: 외부에서 입력한 비밀번호를 검증한 후에 사용해야 합니다.\n라인 20: 비밀번호를 검증한 후에 연결합니다.",
  "rule.sast.sw.ccpp.253.name": "비밀번호의 일반 텍스트 저장",
  "rule.sast.sw.ccpp.253.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) verify",
  "rule.sast.sw.ccpp.253.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.ccpp.253.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) SQLConnect",
  "rule.sast.sw.ccpp.253.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.253.option.source_variable.description": "민감한 정보를 포함한 변수 이름을 작성합니다.<br />예시) passwd",
  "rule.sast.sw.ccpp.253.option.source_variable.name": "민감한 정보 변수",
  "rule.sast.sw.ccpp.254.description": "하드코드된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역산하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코딩하여 코드를 작성하는 방법도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코딩하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "rule.sast.sw.ccpp.254.example.0.dangerous": "라인 12: 암호화된 키를 상수로 직접 비교하고 있습니다.",
  "rule.sast.sw.ccpp.254.example.0.safe": "라인 16: 암호화되어 저장된 암호를 적절한 검증 과정을 거쳐서 얻어오는 별도의 모듈을 작성하고, 이를 암호화된 스트링과 비교하도록 코드가 작성되어야 합니다.",
  "rule.sast.sw.ccpp.254.name": "하드코드된 암호화 키",
  "rule.sast.sw.ccpp.254.option.sink_call_with_constant.description": "이 목록에 있는 함수들의 인자로 민감한 정보가 들어오고 하나의 인자라도 상수 값을 가지면 위험하다고 여깁니다.<br />예시) strcmp",
  "rule.sast.sw.ccpp.254.option.sink_call_with_constant.name": "상수 인자를 갖는 민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.254.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />예시) crypt",
  "rule.sast.sw.ccpp.254.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.254.option.source_variable.description": "민감한 정보가 포함된 변수 명을 작성합니다.<br />예시) cryptokey*",
  "rule.sast.sw.ccpp.254.option.source_variable.name": "민감한 정보 변수",
  "rule.sast.sw.ccpp.2832.description": "오염된 값의 위험한 사용 체커는 오염된 값을 검사 없이 위험한 방식으로 사용한 경우 이슈를 검출합니다.\n이 때 위험한 방식이란 오염된 값을 위험한 함수의 인자로 사용하거나 배열의 인덱스, 반복문의 제어 변수로 사용하는 것 등을 의미합니다. 단 위험한 함수의 인자로 포인터 타입을 사용할 경우에는, 객체 자체가 오염된 것은 문제되지 않으며 포인터 타입의 오프셋이 오염된 경우를 위험한 사용 방식으로 간주합니다.\n오염된 값을 위험한 방식으로 사용할 경우 보안상 취약점이 발생하거나 프로그램이 정상적으로 동작하지 않을 수 있습니다.\n오염된 값을 위험한 방식으로 사용하지 않도록 합니다. 구체적으로는 오염된 값의 범위를 검사하거나 적절한 필터 함수를 호출하여 값을 안전하게 만든 뒤 사용하도록 합니다.",
  "rule.sast.sw.ccpp.2832.example.0.dangerous": "라인 16: 오염된 값을 위험한 방식으로 사용했습니다.",
  "rule.sast.sw.ccpp.2832.example.0.safe": "라인 15: 오염된 값을 안전하게 검사한 뒤 사용하도록 합니다.",
  "rule.sast.sw.ccpp.2832.name": "오염된 값의 위험한 사용",
  "rule.sast.sw.ccpp.2832.option.clear_call.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.",
  "rule.sast.sw.ccpp.2832.option.clear_call.name": "외부 정보 필터 함수",
  "rule.sast.sw.ccpp.2832.option.clear_compare.description": "조건문에서 정수값의 범위 비교로 외부 정보를 필터하는지 여부를 결정합니다.",
  "rule.sast.sw.ccpp.2832.option.clear_compare.name": "비교로 외부 정보 필터 검사",
  "rule.sast.sw.ccpp.2832.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.ccpp.2832.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.ccpp.2937.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.ccpp.2937.example.0.dangerous": "라인 5: Qstring 타입인 변수 link가 외부 입력에 의해 결정됩니다.\n라인 6: 변수 link에 대해 별도의 검사 없이 url로 사용되고 있습니다.",
  "rule.sast.sw.ccpp.2937.example.0.safe": "라인 10: urlchecker() 메서드를 통해서 변수 link를 검사합니다.\n라인 21: 검증된 link를 통해 url을 엽니다.",
  "rule.sast.sw.ccpp.2937.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.ccpp.2937.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) urlchecker",
  "rule.sast.sw.ccpp.2937.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.ccpp.2937.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.ccpp.2937.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.ccpp.2937.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.2937.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.2938.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성할 때 사용되는 외부 입력값에 대해 적절한 검증 절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 됩니다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증 절차를 우회할 수 있습니다.\n예를 들어 XQuery 문은 `username='local_user1'`과 같이 작은 따옴표를 사용하여 username과 비교할 문자열을 구분합니다. 만약 외부에서 비교를 위해 삽입된 문자열에 작은 따옴표가 허용되는 경우 다음과 같은 문자열을 입력할 수 있습니다.\n`'admin' or ''=''`\n위 문자열을 사용한 쿼리의 조건문은 다음과 같습니다.\n`username = 'admin' or ''=''`\n`''=''`은 언제나 true이므로 username 비교 자체를 우회할 수 있습니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "rule.sast.sw.ccpp.2938.example.0.dangerous": "라인 7: 외부에서 입력된 name, id 값으로 쿼리가 준비됩니다.\n라인 10: 외부에서 입력된 name, id, salary 값으로 쿼리가 실행됩니다.",
  "rule.sast.sw.ccpp.2938.example.0.safe": "라인 5: urlchecker() 메서드를 통해서 외부 입력 값을 검사합니다.\n라인 20: 검사한 외부 입력 값으로 쿼리를 준비합니다.\n라인 23: 검사한 외부 입력 값으로 쿼리를 실행합니다.",
  "rule.sast.sw.ccpp.2938.name": "XQuery 삽입",
  "rule.sast.sw.ccpp.2938.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) urlchecker",
  "rule.sast.sw.ccpp.2938.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.ccpp.2938.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.ccpp.2938.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.ccpp.2938.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.2938.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.2939.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\n외부 입력값을 적절한 검사 과정 없이 XPath 쿼리문 생성을 위한 문자열로 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(`, [, ], /, =, @ 등) 및 쿼리 예약어 필터링을 수행하고 매개 변수화된 쿼리문을 지원하는 XQuery를 사용해야 합니다.",
  "rule.sast.sw.ccpp.2939.example.0.dangerous": "라인 3: QString 타입인 변수 temp가 외부 입력에 의해 결정됩니다.\n라인 5: 외부에서 입력된 값이 setQuery() 메서드에서 바로 사용됩니다.",
  "rule.sast.sw.ccpp.2939.example.0.safe": "라인 5: urlchecker() 메서드를 통해서 query를 검사합니다.\n라인 17: 검증된 temp를 통해 Query를 설정합니다.",
  "rule.sast.sw.ccpp.2939.name": "XPath 삽입",
  "rule.sast.sw.ccpp.2939.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) urlchecker",
  "rule.sast.sw.ccpp.2939.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.ccpp.2939.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.ccpp.2939.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.ccpp.2939.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.2939.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.ccpp.294.description": "일치하지 않는 자원 해제 방법 체커는 리소스의 할당과 해제가 서로 일치하는 함수로 처리하지 않은 경우를 검출합니다.\n여기서 리소스는 파일과 핸들, 소켓 등을 의미합니다.\n리소스 할당 및 해제 시 대상 리소스 타입과 맞지 않는 함수를 사용하면 해당 리소스가 해제되지 않습니다. 이와 같이 해제되지 않은 리소스로 인해 리소스 및 메모리 누수가 발생할 수 있습니다. 이를 사용해 공격자가 의도적으로 DoS(Denial of service) 공격을 하기 위하여 리소스 풀을 고갈시킬 수 있습니다. 리소스 및 메모리 누수는 시스템의 성능을 저하시키는 원인으로 치명적인 영향을 미칠 수 있습니다.\n리소스 할당 및 해제 시 대상 리소스 타입에 맞는 함수를 사용하도록 합니다. 구체적으로는 다음과 같은 할당 및 해제 함수를 사용합니다. 파일 리소스는 fopen() 함수로 할당하고 fclose() 함수로 해제하도록 합니다. 핸들 리소스는 CreateFile() 함수로 할당하고 CloseHandle() 함수로 해제하도록 합니다. 소켓 리소스는 open() 함수로 할당하고 close() 함수로 해제하도록 합니다.",
  "rule.sast.sw.ccpp.294.example.0.dangerous": "라인 5: CreateFile() 함수를 사용하여 핸들 리소스를 할당 받았습니다.\n라인 13: fclose() 함수로 리소스를 닫았습니다. 하지만 핸들 리소스는 CloseHandle() 함수로 닫아야 합니다.",
  "rule.sast.sw.ccpp.294.example.0.safe": "라인 13: CloseHandle() 함수로 파일 리소스를 해제하도록 합니다.",
  "rule.sast.sw.ccpp.294.name": "일치하지 않는 자원 해제 방법",
  "rule.sast.sw.ccpp.2940.description": "영속적인 쿠키 체커는 민감한 데이터를 지닌 쿠키의 지속 시간을 길게 설정한 코드를 검출합니다.\n대부분의 웹 프로그래밍 환경에서는 비지속적으로 쿠키를 생성합니다. 이러한 쿠키는 디스크에 기록되지 않고 브라우저 메모리에만 상주하며 브라우저가 닫히면 사라집니다. 프로그래머는 미래의 특정 날짜까지 브라우저 세션에서 쿠키가 지속되도록 지정할 수 있습니다. 이렇게 설정된 쿠키는 디스크에 기록되고 브라우저 세션 및 장치 재시작에서도 유지됩니다. 지속적인 쿠키는 사이트와 상호 작용하는 사용자를 프로필하는 데 사용됩니다. 공격자는 해당 데이터를 통해 지속적인 쿠키에 포함된 추적 데이터의 개인 정보를 악용할 수 있습니다. 지속적인 쿠키의 경우 만료 시간이 길게 설정되어 해당 쿠키에 개인 정보가 저장되면 데이터를 도용할 수 있는 위험도 증가하게 됩니다. addDays(), addMonths(), addYears() 메서드의 사용을 금지합니다.\n쿠키의 만료 시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요 정보가 포함되지 않도록 설정해야 합니다. addSecs(), addMSecs() 메서드를 사용하는 경우 옵션에 지정된 범위 내의 인자 값을 넣어야 합니다.",
  "rule.sast.sw.ccpp.2940.example.0.dangerous": "라인 9: addYears() 메서드를 사용했습니다.\n라인 10: addSecs() 메서드 인자 값이 옵션에 지정된 값보다 높습니다.",
  "rule.sast.sw.ccpp.2940.example.0.safe": "라인 9: addYears() 메서드를 사용하지 않도록 합니다.\n라인 10: addSecs() 메서드 인자 값이 지정된 값 범위 내에 있습니다.",
  "rule.sast.sw.ccpp.2940.name": "영속적인 쿠키",
  "rule.sast.sw.ccpp.2940.option.max_time.description": "허용 시간(초)을 설정합니다.",
  "rule.sast.sw.ccpp.2940.option.max_time.name": "허용 시간(초)",
  "rule.sast.sw.ccpp.2944.description": "부적절한 XML 외부 엔터티 참조 체커는 XML 파싱 라이브러리를 사용하면서 외부 엔터티를 사용하도록 허용하는 코드를 검출합니다.\n구체적으로는 외부 엔터티를 사용하도록 허용하는 함수를 호출하거나 해당 함수의 인자 값을 사용하는 경우를 가리킵니다.\nXML 라이브러리를 사용하는 동시에 외부 엔터티를 사용하도록 허용하는 경우 공격자가 권한이 없는 파일이나 보안 상 중요한 파일에 접근할 수 있게 됩니다. 이와 같이 외부 엔터티에 접근할 경우 SSRF(Server Side Request Forgery) 와 같은 취약점이 발생할 수 있습니다.\n따라서 외부 엔터티를 사용하도록 허용하는 함수를 호출하거나 해당 함수의 인자 값을 사용하지 않도록 합니다.",
  "rule.sast.sw.ccpp.2944.example.0.dangerous": "라인 3: setCreateEntityReferenceNodes() 함수의 인자를 false로 설정했습니다. XXE 공격에 취약해집니다.\n라인 4: setDisableDefaultEntityResolution() 함수의 인자를 false로 설정했습니다. XXE 공격에 취약해집니다.",
  "rule.sast.sw.ccpp.2944.example.0.safe": "라인 3: setCreateEntityReferenceNodes() 함수의 인자를 true로 설정하도록 합니다.\n라인 4: setDisableDefaultEntityResolution() 함수의 인자를 true로 설정하도록 합니다.",
  "rule.sast.sw.ccpp.2944.name": "부적절한 XML 외부 엔터티 참조",
  "rule.sast.sw.ccpp.2953.description": "취약한 서버 인증서 검증 체커는 인증서를 적절하게 검증하지 않는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다. 만약 서버 인증서 검증이 적절하게 이루어지지 않으면 보안 상 문제가 발생할 수 있습니다.\n라이브러리에서 제공하는 기본적인 인증서 유효성 검사 기능이 동작할 수 있도록 인증서 검증 함수에 적절한 인자 값을 사용하도록 합니다.",
  "rule.sast.sw.ccpp.2953.example.0.dangerous": "라인 7: curl_easy_setopt() 함수를 호출할 때 두 번째 인자 값을 CURLOPT_SSL_VERIFYPEER 로 설정하고 세 번째 인자 값을 0으로 설정했습니다. 따라서 제대로 인증서 검증이 이루어지지 않았습니다.",
  "rule.sast.sw.ccpp.2953.example.0.safe": "라인 7: 세 번째 인자 값을 1로 설정하도록 합니다.",
  "rule.sast.sw.ccpp.2953.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.ccpp.2955.description": "반환 주소 수정에 의한 코드 삽입 체커는 함수의 반환 주소를 바꿔치기 할 수 있는 코드를 검출합니다.\n구체적으로 다음과 같습니다. 지역 변수를 선언하여 스택 영역에 버퍼를 할당하는 경우 외부 입력값이 언더플로우를 발생시키고 이로 인해 함수의 반환 주소를 다른 값으로 변경하게 됩니다.\n공격자가 함수의 반환 주소를 변경하는 등 실행 흐름을 제어할 수 있게 되면 비정상적인 동작이 발생할 수 있습니다. 따라서 보안 상 다른 공격의 시발점이 될 수 있습니다.\n외부 입력값을 통해 스택 영역에 언더플로우가 발생하고, 이로 인해 반환 주소가 변경되지 않도록 합니다. 예를 들어, 오프셋 값을 검사하거나, 입력 받은 값을 스택 영역이 아닌 힙 영역에 저장하여 해당 문제를 방지할 수 있습니다.",
  "rule.sast.sw.ccpp.2955.example.0.dangerous": "라인 7: var 값이 -1이고 var2 값이 공격자의 코드가 위치한 주소인 경우 코드 삽입 공격이 발생할 수 있습니다.",
  "rule.sast.sw.ccpp.2955.example.0.safe": "라인 7: var 값의 크기를 검사하여 언더플로우가 발생하지 않도록 코드를 수정합니다.",
  "rule.sast.sw.ccpp.2955.name": "반환 주소 수정에 의한 코드 삽입",
  "rule.sast.sw.ccpp.296.description": "누락된 로그인 제어 체커는 로그인 시도 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n이 때 로그인 루틴의 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 로그인 루틴이 호출되기 전 로그인 시도를 반복문에서 제어합니다. 다만 조건문이 언제나 참인 경우 로그인 시도를 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 비교 연산자를 사용하고 있습니다.\n로그인 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 로그인에 성공할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.ccpp.296.example.0.dangerous": "라인 2: 로그인 루틴을 로그인 시도 횟수 제한 없이 호출했습니다.",
  "rule.sast.sw.ccpp.296.example.0.safe": "라인 3: 로그인 루틴을 로그인 시도 횟수를 제한하는 방식으로 호출합니다.",
  "rule.sast.sw.ccpp.296.name": "누락된 로그인 제어",
  "rule.sast.sw.ccpp.296.option.authentification_functions.description": "로그인 함수 이름을 적습니다.",
  "rule.sast.sw.ccpp.296.option.authentification_functions.name": "로그인 함수 이름",
  "rule.sast.sw.ccpp.296.option.loop_inside_target_function.description": "옵션을 사용하는 경우, 제어되지 않은 루프 안에서 함수 호출을 탐지합니다.",
  "rule.sast.sw.ccpp.296.option.loop_inside_target_function.name": "제어 안된 루프 안에서 함수 호출을 탐지",
  "rule.sast.sw.ccpp.296.option.target_function_inside_loop.description": "옵션을 사용하는 경우, 함수 안에 있는 제어 안된 루프를 탐지합니다.",
  "rule.sast.sw.ccpp.296.option.target_function_inside_loop.name": "함수 안에 있는 제어 안된 루프를 탐지",
  "rule.sast.sw.ccpp.297.description": "누락된 인증 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.\n호출이 필요한 인증 제어 루틴의 이름과 제어 루틴을 호출해야 하는 함수의 이름은 옵션으로 입력할 수 있습니다.\n인증 제어 루틴을 호출하지 않으면 허용되지 않은 사용자가 권한을 획득할 수 있습니다.\n반드시 인증 제어 루틴을 적절한 위치에서 호출해야 합니다.",
  "rule.sast.sw.ccpp.297.example.0.dangerous": "라인 1: authentication() 함수를 지정한 함수라고 가정했을 때, 함수에서 인증 제어 루틴을 호출하지 않았습니다.",
  "rule.sast.sw.ccpp.297.example.0.safe": "라인 2: control() 함수를 인증 제어 루틴이라고 가정했을 때, 이 함수를 authentication() 함수에서 호출합니다.",
  "rule.sast.sw.ccpp.297.name": "누락된 인증",
  "rule.sast.sw.ccpp.297.option.target_callee.description": "검증에 사용하는 함수 목록을 적습니다.",
  "rule.sast.sw.ccpp.297.option.target_callee.name": "검증에 사용하는 함수 목록",
  "rule.sast.sw.ccpp.297.option.target_caller.description": "검증 상태 확인이 필요한 함수 목록을 적습니다.",
  "rule.sast.sw.ccpp.297.option.target_caller.name": "검증 상태 확인이 필요한 함수 목록",
  "rule.sast.sw.ccpp.298.description": "누락된 비밀번호 복구 제어 체커는 비밀번호 복구 시도 횟수를 제한하기 위한 로직을 구현하지 않은 경우를 검출합니다.\n이 때 비밀번호 복구 루틴의 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 비밀번호 복구 루틴이 호출되기 전 비밀번호 복구 시도를 반복문에서 제어합니다. 다만 조건문이 언제나 참인 경우 비밀번호 복구 시도를 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 비교 연산자를 사용하고 있습니다.\n비밀번호 복구 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 비밀번호를 변경할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 비밀번호 복구 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.ccpp.298.example.0.dangerous": "라인 2: 비밀번호 복구 루틴을 비밀번호 복구 시도 횟수 제한 없이 호출했습니다.",
  "rule.sast.sw.ccpp.298.example.0.safe": "라인 3: 비밀번호 복구 루틴을 비밀번호 복구 시도 횟수를 제한하는 방식으로 호출합니다.",
  "rule.sast.sw.ccpp.298.name": "누락된 비밀번호 복구 제어",
  "rule.sast.sw.ccpp.298.option.authentification_functions.description": "비밀번호 복원 함수 이름을 적습니다.",
  "rule.sast.sw.ccpp.298.option.authentification_functions.name": "비밀번호 복원 함수 이름",
  "rule.sast.sw.ccpp.298.option.loop_inside_target_function.description": "옵션을 사용하는 경우, 제어되지 않은 루프 안에서 함수 호출을 탐지합니다.",
  "rule.sast.sw.ccpp.298.option.loop_inside_target_function.name": "제어 안된 루프 안에서 함수 호출을 탐지",
  "rule.sast.sw.ccpp.298.option.target_function_inside_loop.description": "옵션을 사용하는 경우, 함수 안에 있는 제어 안된 루프를 탐지합니다.",
  "rule.sast.sw.ccpp.298.option.target_function_inside_loop.name": "함수 안에 있는 제어 안된 루프를 탐지",
  "rule.sast.sw.ccpp.3061.description": "주요 보안 정보 및 차량 정보의 평문 전송 체커는 주요 보안 정보, 혹은 차량 정보를 암호화나 무결성 검증 없이 평문으로 전송하는 경우를 검출합니다.\n공개 키 알고리즘에 적용되는 개인 키나 대칭 키 알고리즘에 적용되는 비밀 키 등과 같은 주요 보안 정보는 절대로 제어기 외부에 평문의 형태로 전송되거나 노출되어서는 안됩니다. 개인 키는 소유한 개체 자신이 직접 생성하고 보관해야 하며, 비밀 키를 분배할 때에는 반드시 암호문의 형태로 전송되어야 합니다. 암호문을 생성하는 방법은 AES, TDES와 같은 블록 암호화 알고리즘과 RSA, ECC와 같은 비대칭 키 암호화 알고리즘을 적용할 수 있습니다. 만약 암호문을 생성할 수 없는 상황이라면 유/무선 네트워크가 아닌 직접적인 물리적 연결(예: USB, JTAG)을 통해 보안 정보를 전달해야 합니다. 또한 소유 중인 주요 보안 정보는 USB 메모리, SD 카드와 같은 외부 저장매체에 평문의 형태로 보관되어서는 안되며, 외부 저장매체에 보안 정보를 저장해야 한다면 반드시 쉽게 알아낼 수 없는 형태로 보관되어야 합니다.\n\n보안 정보와 마찬가지로, 차량 내의 민감한 정보, 공격자에 의해 악용될 수 있는 정보는 모두 무결성이 보존되어야 합니다. 무결성이 보장되지 않은 주행 관련 민감한 정보가 공격자에 의해 변조 및 악용될 경우 치명적인 사고를 유발할 수도 있습니다. 무결성을 보존하기 위해서는 MAC과 같은 인증 정보가 추가되거나 메시지와 해시 값을 암호화하는 형태로 외부에 전송되어야 하며, 해당 정보의 접근 권한을 가진 개체만이 메시지 인증과 무결성을 검증할 수 있어야 합니다.\n민감한 정보가 노출되는 경우 정보의 외부 유출뿐만 아니라 향후 릴레이 공격이나 무차별 대입 공격 등에 취약하게 만들 수 있습니다.\n민감한 정보를 암호화하거나 무결성 검증을 진행한 후 전달하도록 합니다.",
  "rule.sast.sw.ccpp.3061.example.0.dangerous": "라인 9: 개인 키의 내용을 평문의 형태로 제어기 외부에 전송했습니다.\n라인 27: 속도 데이터와 같이 차량의 치명적인 주요 정보를 외부에 평문 형태로 전송했습니다.",
  "rule.sast.sw.ccpp.3061.example.0.safe": "라인 21: 평문이 아닌 암호문의 형태로 전송합니다.\n라인 60: MAC을 사용하여 무결성을 확보합니다.",
  "rule.sast.sw.ccpp.3061.name": "주요 보안 정보 및 차량 정보의 평문 전송",
  "rule.sast.sw.ccpp.3061.option.clear_call.description": "암호화 혹은 무결성 검증 함수",
  "rule.sast.sw.ccpp.3061.option.clear_call.name": "평문 정보를 안전하게 암호화 하거나 무결성을 검증하는 함수 이름을 입력합니다.",
  "rule.sast.sw.ccpp.3062.description": "낮은 보안 강도의 암호화 알고리즘 사용 체커는 권장되는 보안 강도를 만족하지 않는 암호화 알고리즘이나 해시 함수를 사용하는 코드를 검출합니다.\n대칭 키(비밀 키) 기반 암호 알고리즘이나 해시 함수를 사용할 경우에는 보안 강도가 112-bit 이상을 만족하도록 권장합니다. 그리고 비대칭 키 암호 알고리즘을 사용할 경우에는 보안성 강화를 위해 가급적 보안 강도 112-bit 이상을 만족하는 키 사이즈를 사용하도록 권장합니다.\n권장되는 보안 강도를 만족하지 않으면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n암호화 알고리즘이 충분한 보안 강도를 유지할 수 있도록 사용 규칙을 준수합니다.",
  "rule.sast.sw.ccpp.3062.example.0.dangerous": "라인 5: 두개의 키가 동일한 2TDEA를 사용하고 있으며 이 경우 보안 강도가 80-bit이므로 권장되는 보안 강도인 112-bit 이상을 만족하지 못합니다.\n라인 15: 전처리 구문 EscRsa_KEY_BYTES의 값이 RSA 1024 비트를 사용하도록 선언되었습니다.",
  "rule.sast.sw.ccpp.3062.example.0.safe": "라인 6: 권장 보안 강도를 만족하는 3TDEA를 사용하도록 합니다.\n라인 16: 전처리 구문 EscRsa_KEY_BYTES의 값이 RSA 2048 비트를 사용할 수 있도록 선언합니다.",
  "rule.sast.sw.ccpp.3062.name": "낮은 보안 강도의 암호화 알고리즘 사용",
  "rule.sast.sw.ccpp.3063.description": "MAC 생성 시 누락된 메시지 식별 값 체커는 MAC을 생성할 때 메시지 식별 값을 포함시키지 않아 공격자가 인증 값을 재사용할 수 있는 경우를 검출합니다.\nMAC 태그는 메시지의 인증과 무결성을 보장하기 위해 메시지 값과 비밀 키를 사용하여 생성됩니다. 만약 공격자가 해당 메시지와 MAC 값을 중간에 가로채 그대로 전송하게 된다면 정상 개체처럼 인증을 우회할 수 있게 됩니다. 이러한 재사용 공격을 막기 위해서는 동일한 메시지라도 다른 MAC 값이 생성될 수 있도록 메시지를 식별할 수 있는 값이 메시지와 함께 포함되어 MAC을 생성해야 합니다.\n공격자가 도청 후 해당 인증 값을 재사용하여 수신자로 하여금 비정상 동작을 수행하도록 유도할 수 있습니다.\nMAC을 생성할 때 기본 텍스트에 타임스탬프나 랜덤 값 등을 포함합니다. 이 방법을 사용하여 동일한 메시지에 대해 매번 다른 MAC을 생성할 수 있습니다.",
  "rule.sast.sw.ccpp.3063.example.0.dangerous": "라인 25: 재사용 공격을 방어할 수 있는 식별값(예: 타임스탬프 등)을 사용하고 있지 않기 때문에 공격자는 생성된 MAC을 포함하는 메시지를 가로채서 나중에 그대로 재사용할 수 있습니다.",
  "rule.sast.sw.ccpp.3063.example.0.safe": "라인 7: MAC을 생성할 때 현재 시간 정보를 통해 생성한 값을 포함함으로써 재사용 공격에 대응합니다.",
  "rule.sast.sw.ccpp.3063.name": "MAC 생성 시 누락된 메시지 식별 값",
  "rule.sast.sw.ccpp.3067.description": "문법적으로 애매한 선언 체커는 작성된 코드가 표현식인지 혹은 선언문인지 해석하기 애매한 경우를 검출합니다.\n프로그래머가 문법적으로 애매한 선언을 작성하면 컴파일러는 코드가 표현식인지 혹은 선언문인지 해석하기 어려울 수 있습니다. 애매한 선언을 방지하기 위해 선언문은 중괄호 초기화(braced-init-list)를 사용하거나, 주위에 의미 없는 괄호를 제거하거나, `=`을 사용하여 초기화함으로써 명확하게 표기해야 합니다. 또한 호출인지 변수 선언인지 애매할 수 있는 함수 스타일 형변환(예: MyClass(3), int(10))을 사용하지 않도록 합니다.\n코드를 잘못 해석하여 의도하지 않은 동작을 발생시킬 수 있습니다.\n변수 선언 다음에 불필요한 괄호를 없애거나 중괄호 초기화(braced-init_list)를 사용하도록 합니다.",
  "rule.sast.sw.ccpp.3067.example.0.dangerous": "라인 8: Widget 객체를 반환하는 함수 포인터인지 Widget 클래스 객체 선언인지 문법적으로 애매합니다.",
  "rule.sast.sw.ccpp.3067.example.0.safe": "라인 8: 변수 선언 다음에 괄호를 없애면 함수 선언 대신 변수 선언의 구문이 됩니다.\n라인 9: 지역 변수를 직접 초기화하는 중괄호 초기화(braced-init-list)를 사용합니다.",
  "rule.sast.sw.ccpp.3067.name": "문법적으로 애매한 선언",
  "rule.sast.sw.ccpp.3072.description": "정적 범위의 객체 선언에서 발생하는 처리되지 않는 예외 체커는 객체를 함수 블록 범위 혹은 생성자 내에 선언하지 않고 정적 혹은 스레드 존속 범위에 선언했을 때, 처리되지 않는 예외가 발생하는 코드를 검출합니다.\nC++에서 모든 예외를 처리할 수는 없습니다. 특히 정적 범위에 있는 객체들의 생성자에서 발생한 예외는 function-try-block에서 catch할 수 없습니다. 객체를 함수 블록 범위 혹은 생성자 내에 선언하지 않고 정적 범위에 선언했을 때에는 처리되지 않는 예외를 발생시켜서는 안됩니다.\n정적 범위에서 생성되는 객체 O가 존재하고, O가 생성될 때 호출되는 함수 목록 F가 있을 때 함수 목록 F 중 아래 조건을 모두 만족하지 않는 함수 G가 포함된다면 객체 O가 생성되는 위치를 검출합니다.\nnoexcept 키워드를 사용하여 선언됩니다.\nnoexcept(true) 키워드를 사용하여 선언됩니다.",
  "rule.sast.sw.ccpp.3072.example.0.dangerous": "라인 2: HAEBMBE_S의 생성자에서 예외가 발생할 수 있습니다.\n라인 5: HAEBMBE_F() 함수에서 예외가 발생할 수 있습니다.\n라인 7: 정적 범위에서 globalS 객체를 생성할 때 S의 생성자에 의해 처리되지 않은 예외가 발생할 수 있습니다.\n라인 8: 정적 범위에서 i 변수를 초기화 때 함수 f()에 의해 처리되지 않은 예외가 발생할 수 있습니다.",
  "rule.sast.sw.ccpp.3072.example.0.safe": "라인 8: globalS() 함수가 처음으로 호출될 때 S의 생성자가 호출되며 이 때 객체 생성 중에 발생하는 예외를 감지할 수 있습니다.\n라인 15: HAEBMBE_F_helper() 함수 내에서 HAEBMBE_F() 함수를 호출하며 이 때 발생하는 예외를 처리하여 로그 메시지를 남기고 프로그램을 종료합니다.",
  "rule.sast.sw.ccpp.3072.name": "정적 범위의 객체 선언에서 발생하는 처리되지 않는 예외",
  "rule.sast.sw.ccpp.3077.description": "범위 밖에 있는 열거 값 캐스팅 체커는 열거 값이 범위 내에 있는지 확인하지 않고 열거 값으로 캐스팅을 수행하는 코드를 검출합니다.\nC++에서 열거형은 기본 유형이 고정되는 범위가 있는 열거형(scoped enumeration)과 기본 유형이 고정되기도 고정되지 않기도 하는 범위가 없는 열거형(unscoped enumeration)의 두 가지 형태를 가지고 있습니다. 일반적으로 열거형으로 선언된 값은 4바이트 크기 이하의 정수형 타입 내에서 명시적으로 할당되는 값을 가장 잘 표현할 수 있는 자료형으로 지정되게 되며, 정수 또는 열거형의 값은 명시적으로 열거형으로 변환될 수 있습니다.\n값을 열거형으로 캐스팅하기 전에 값의 범위를 확인해야 합니다.",
  "rule.sast.sw.ccpp.3077.example.0.dangerous": "라인 7: 값 intVar의 범위를 검사하지 않고 범위가 없는 열거형 EnumType으로 캐스팅을 수행했습니다.",
  "rule.sast.sw.ccpp.3077.example.0.safe": "라인 7: 변환을 수행하기 전에 열거형으로 표현될 수 있는 값인지 사전에 검사를 수행합니다.",
  "rule.sast.sw.ccpp.3077.name": "범위 밖에 있는 열거 값 캐스팅",
  "rule.sast.sw.ccpp.33.description": "버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.33.example.0.dangerous": "라인 2: 정수형 데이터 10개의 배열 buf를 선언했습니다. (인덱스는 0부터 9까지 접근 가능)\n라인 3: for 구문을 사용하여 인덱스 i를 10까지 증가시켰습니다.\n라인 6: 값이 10인 i를 인덱스로 buf에 접근하여 버퍼 오버플로우가 발생했습니다.",
  "rule.sast.sw.ccpp.33.example.0.safe": "라인 5: i의 값이 0보다 크거나 같고 10보다 작다는 조건을 추가하여 잘못된 접근을 방지합니다.\n라인 6: i의 값이 10이기 때문에 이 코드는 실행되지 않습니다.",
  "rule.sast.sw.ccpp.33.name": "버퍼 오버플로우",
  "rule.sast.sw.ccpp.34.description": "잘못된 조건으로 인한 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 잘못된 조건 계산으로 인덱스 범위를 결정합니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.34.example.0.dangerous": "라인 2: 정수형 데이터 10개의 배열 buf를 선언했습니다. (인덱스는 0부터 9까지 접근 가능)\n라인 3: scanf 구문을 사용하여 인덱스 idx의 값을 전달 받았습니다.\n라인 5: 조건에서 0~9 이외의 값 10인 인덱스 idx로 buf에 접근하여 버퍼 오버플로우 오류가 발생했습니다.",
  "rule.sast.sw.ccpp.34.example.0.safe": "라인 5: 조건을 수정하여 idx 값이 10이 되지 않도록 설정합니다.",
  "rule.sast.sw.ccpp.34.name": "잘못된 조건으로 인한 버퍼 오버플로우",
  "rule.sast.sw.ccpp.351.description": "잘못된 조건으로 인한 필드 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 잘못된 조건 계산으로 인덱스 범위를 결정합니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.351.example.0.dangerous": "라인 6: n이 50보다 작은지를 비교했습니다.\n라인 7: type.b의 인덱스로 n-1 값을 사용했습니다. 이 값은 라인 6의 조건에 따라 50보다 작은 값입니다. 하지만 n-1의 값이 40보다 크거가 같을 경우 버퍼 오버플로우가 발생합니다.",
  "rule.sast.sw.ccpp.351.example.0.safe": "라인 6: type.b의 인덱스로 사용하는 n-1의 값이 항상 40보다 작도록 비교문을 작성합니다.",
  "rule.sast.sw.ccpp.351.name": "잘못된 조건으로 인한 필드 버퍼 오버플로우",
  "rule.sast.sw.ccpp.352.description": "필드 버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 경우를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.352.example.0.dangerous": "라인 2: type_static 구조체의 a 배열 크기를 100으로 선언했습니다.\n라인 6: foo2() 함수에 인덱스 값 98을 대입했습니다.\n라인 10: type_static.a의 인덱스로 index + 5 값을 사용했습니다. 이로 인해 버퍼 오버플로우가 발생했습니다.",
  "rule.sast.sw.ccpp.352.example.0.safe": "라인 6: foo2() 함수에 인덱스 값 20을 대입합니다.\n라인 10: 인덱스의 범위를 제한하여 배열의 범위를 벗어난 접근이 일어나지 않도록 방지합니다.",
  "rule.sast.sw.ccpp.352.name": "필드 버퍼 오버플로우",
  "rule.sast.sw.ccpp.36.description": "범위 지정 복사로 인한 버퍼 오버플로우 체커는 memcpy(), strncpy()와 같이 범위 지정을 통해 메모리에서 특정 크기의 데이터를 복사하는 함수를 잘못 사용한 코드를 검출합니다.\n검출되는 복사 함수는 다음과 같습니다. memset(), bzero(), memcpy(), strncat(), wcsncat(), strncpy(), wcsncpy().\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.36.example.0.dangerous": "라인 1: buf1 배열을 크기 100으로 선언했습니다.\n라인 2: buf2 배열을 크기 200으로 선언했습니다.\n라인 4: memcpy() 함수 때문에 범위를 벗어난 복사를 수행했습니다. 복사한 범위는 buf2의 크기인 200이지만 복사된 buf1의 크기는 100입니다.",
  "rule.sast.sw.ccpp.36.example.0.safe": "라인 4: 복사한 범위를 buf1의 크기인 100으로 전달합니다.",
  "rule.sast.sw.ccpp.36.name": "범위 지정 복사로 인한 버퍼 오버플로우",
  "rule.sast.sw.ccpp.375.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.ccpp.375.example.0.dangerous": "라인 1: 외부 입력값을 cookieName 변수에 저장했습니다.\n라인 2: 외부 입력값을 data 변수에 저장했습니다.\n라인 4: cgiHeaderCookieSetString() 함수에서 외부 입력값들을 사용했습니다. 이 값들은 사용하기 전까지 문자 변환이 이루어지지 않았습니다.",
  "rule.sast.sw.ccpp.375.example.0.safe": "라인 4: cookieName 변수의 값을 적절하게 변환합니다.\n라인 5: data 변수의 값을 적절하게 변환합니다.\n라인 7: cgiHeaderCookieSetString() 함수에서 적절하게 변환한 외부 입력값을 사용합니다.",
  "rule.sast.sw.ccpp.375.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.ccpp.376.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하거나 같은 문자를 연속으로 여러 개 사용하지 않도록 설정할 수 있습니다. 한국인터넷진흥원 \"암호사용안내서\"의 비밀번호 설정 규칙을 참고할 수 있습니다.",
  "rule.sast.sw.ccpp.376.example.0.dangerous": "라인 3: pwd 변수에 저장된 비밀번호 값에 대한 검증을 수행하지 않았습니다.\n라인 4: 검증되지 않은 비밀번호를 SQL 연결에 사용했습니다.",
  "rule.sast.sw.ccpp.376.example.0.safe": "라인 4: 조건절에서 pwd변수에 대한 적절한 검증을 수행합니다.\n라인 5: 검증된 비밀번호를 SQL 연결에 사용하도록 합니다.",
  "rule.sast.sw.ccpp.376.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.ccpp.376.option.connect_function.description": "취약한 패스워드를 검사하기 위해 Connection 함수 이름 및 패스워드 파라미터 위치를 작성합니다. (함수_이름|패스워드_파라미터_위치).",
  "rule.sast.sw.ccpp.376.option.connect_function.name": "SQL Connection 함수 이름",
  "rule.sast.sw.ccpp.377.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n중요 정보를 솔트(Salt) 없이 해싱하여 저장하면 공격자는 레인보우 테이블과 같은 방법으로 해시값을 미리 계산하여 원래 값을 찾을 수 있게 됩니다.\n특히 비밀번호와 같은 중요 정보를 해싱하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "rule.sast.sw.ccpp.377.example.0.dangerous": "라인 4: 솔트 값을 입력하는 인자가 널 포인터로 입력되었습니다. 솔트 없이 해시 함수를 실행했습니다.",
  "rule.sast.sw.ccpp.377.example.0.safe": "라인 4: 적절한 솔트 값을 인자에 입력하도록 합니다.",
  "rule.sast.sw.ccpp.377.name": "솔트 없는 해시 사용",
  "rule.sast.sw.ccpp.377.option.hash_function.description": "솔트가 입력되었는지 검사하기 위해 해시 함수 이름 및 솔트 파라미터 위치를 작성합니다. (해시함수|솔트파라미터위치)",
  "rule.sast.sw.ccpp.377.option.hash_function.name": "해시 함수 이름",
  "rule.sast.sw.ccpp.378.description": "누락된 로그인 횟수 제한 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n이 때 ID와 비밀번호 변수의 식별을 위한 루틴 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 로그인 루틴이 호출되기 전 로그인 시도를 반복문에서 제어합니다. 다만 조건문이 횟수 제한이 없는 경우 로그인 입력을 적절하게 제어하지 않는다고 판단합니다. 반복문의 비교 구문에서 대소 비교 연산자를 사용하고 있습니다.\n로그인 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 로그인에 성공할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.ccpp.378.example.0.dangerous": "라인 1: 로그인 정보를 재 입력받는 횟수가 제한을 가지지 않았습니다.",
  "rule.sast.sw.ccpp.378.example.0.safe": "라인 2: 로그인 입력 횟수에 제한을 두도록 합니다.",
  "rule.sast.sw.ccpp.378.name": "누락된 로그인 횟수 제한",
  "rule.sast.sw.ccpp.378.option.id_regex.description": "ID 형태의 이름을 가진 변수 식별을 위해 정규식을 작성합니다.",
  "rule.sast.sw.ccpp.378.option.id_regex.name": "ID 정규식",
  "rule.sast.sw.ccpp.378.option.pwd_regex.description": "패스워드 형태의 이름을 가진 변수 식별을 위해 정규식을 작성합니다.",
  "rule.sast.sw.ccpp.378.option.pwd_regex.name": "패스워드 정규식",
  "rule.sast.sw.ccpp.379.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "rule.sast.sw.ccpp.379.example.0.dangerous": "라인 3: access() 함수와 open() 함수를 호출하는 사이에 리소스의 상태가 변경될 수 있습니다.",
  "rule.sast.sw.ccpp.379.example.0.safe": "라인 3: open() 함수를 사용하여 모드를 지정합니다.\n라인 5: chmod() 함수 대신 fchmod() 함수와 함께 open() 함수의 파일 디스크립터를 그대로 사용합니다.",
  "rule.sast.sw.ccpp.379.name": "TOCTOU 경쟁 조건",
  "rule.sast.sw.ccpp.380.description": "누락된 반환 값 검사 체커는 반환 값을 사용하지 않거나 반환 값을 검사했으나 아무런 방어 코드도 넣지 않은 경우를 검출합니다.\n옵션에서 검사할 대상 함수를 지정할 수 있습니다.\n반환된 값을 사용하지 않거나 반환 값 검사 후 방어 코드를 넣지 않는 것은 프로그램이 기대하지 않은 행동을 할 수 있습니다. 일반적으로 프로그래머는 함수 호출에 실패하지 않을 것이라고 추측합니다. 그럼에도 불구하고 함수 호출이 실패하는 경우가 발생할 수 있으며 이로 인해 공격자에게 프로그램을 공격할 수 있는 기회를 제공합니다. 그리고 보안 위협이 발생할 수 있습니다.\n반드시 대상 함수들의 반환 값을 검사하고 방어 코드를 추가하도록 합니다.",
  "rule.sast.sw.ccpp.380.example.0.dangerous": "라인 2: 반환 값을 확인하지 않았습니다.\n라인 3: fputs()의 반환 값을 확인했으나 어떠한 방어코드도 넣지 않았습니다.",
  "rule.sast.sw.ccpp.380.example.0.safe": "라인 3: 반환 값을 확인한 후 오류를 대처할 수 있는 코드를 작성합니다.",
  "rule.sast.sw.ccpp.380.name": "누락된 반환 값 검사",
  "rule.sast.sw.ccpp.380.option.target_grp1.description": "호출 후, if 구문으로 리턴 값을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "rule.sast.sw.ccpp.380.option.target_grp1.name": "리턴 값 검사 대상 함수",
  "rule.sast.sw.ccpp.380.option.target_grp2.description": "호출 후, if 구문으로 errno을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "rule.sast.sw.ccpp.380.option.target_grp2.name": "errno 발생 함수",
  "rule.sast.sw.ccpp.381.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.\n프로그램의 자동 업데이트와 같은 상황에서 코드에 대한 암호화된 서명을 사용하지 않고 코드를 다운로드하면 위험합니다. 웹 서버에서 실행될 수 있는 위험한 형식의 파일을 원격지로부터 다운로드하여, 코드의 출처나 무결성 검사 없이 클라이언트에서 실행하는 경우 공격자가 의도하는 행위를 수행할 수 있습니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "rule.sast.sw.ccpp.381.example.0.dangerous": "라인 5: 반환 값으로 파일의 무결성을 확인하지 않았습니다.",
  "rule.sast.sw.ccpp.381.example.0.safe": "라인 6: 반환 값을 검사하여 무결성을 확인한 후 파일에 쓰도록 합니다.",
  "rule.sast.sw.ccpp.381.name": "무결성 검사 없는 코드 다운로드",
  "rule.sast.sw.ccpp.382.description": "신뢰할 수 없는 입력에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.\n개발자들은 흔히 쿠키, 환경 변수 또는 히든 필드와 같은 입력값이 조작될 수 없다고 가정합니다. 하지만 공격자는 다양한 방법을 통해 이러한 입력값들을 변경할 수 있고 조작된 내용은 탐지되지 않을 수 있습니다. 이러한 입력값(쿠키, 환경 변수, 히든 필드 등)에 기반하여 인증이나 인가와 같은 보안 결정을 수행하는 경우 공격자는 해당 값을 조작하여 애플리케이션의 보안을 우회할 수 있으므로 외부 사용자에 의한 입력값을 신뢰해서는 안됩니다.\n상태 정보나 민감한 데이터, 사용자 세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행합니다. 또한 보안 설계 관점에서 신뢰할 수 없는 입력값이 애플리케이션 내부로 들어올 수 있는 지점을 파악해야 하며, 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토해야 합니다.",
  "rule.sast.sw.ccpp.382.example.0.dangerous": "라인 1: 보안적으로 안전하지 않은 값을 외부에서 가져왔습니다.\n라인 2: 안전하지 않은 값으로 검증을 수행했습니다.",
  "rule.sast.sw.ccpp.382.example.0.safe": "라인 1: 보안적으로 안전한 곳에서 값을 가져옵니다.\n라인 2: 안전한 값으로 검증을 수행하도록 합니다.",
  "rule.sast.sw.ccpp.382.name": "신뢰할 수 없는 입력에 의존한 보안 결정",
  "rule.sast.sw.ccpp.382.option.gather_function.description": "외부에서 값을 받아오는 함수 및 리턴 값, 혹은 파라미터 위치를 입력합니다.(함수이름|파라미터 위치), 파라미터 위치 값이 0일 경우 리턴값으로 인식합니다.",
  "rule.sast.sw.ccpp.382.option.gather_function.name": "외부에서 값을 받아오는 함수",
  "rule.sast.sw.ccpp.382.option.security_variable_regex.description": "보안기능 결정에 사용하는 변수의 정규식을 입력합니다. 입력값 검증을 수행하는 조건절 블록에서 해당 변수들이 사용된 경우에 결함을 검출합니다.",
  "rule.sast.sw.ccpp.382.option.security_variable_regex.name": "보안기능 결정에 사용하는 변수",
  "rule.sast.sw.ccpp.382.option.verification_function.description": "입력값을 검증하는 함수 이름을 입력합니다. 외부에서 값을 받아오는 함수에서의 리턴값이나 지정한 파라미터 위치에 사용된 변수가 조건절 및 해당 함수에서 사용된 경우을 파악합니다.",
  "rule.sast.sw.ccpp.382.option.verification_function.name": "입력값을 검증하는 함수",
  "rule.sast.sw.ccpp.62.description": "잘못된 조건으로 인한 필드 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼를 벗어난 메모리 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.62.example.0.dangerous": "라인 6: index인 n-1 값이 0보다 작거나 같으므로 언더런 오류가 발생했습니다.",
  "rule.sast.sw.ccpp.62.example.0.safe": "라인 6: 버퍼의 인덱스는 항상 0보다 크고 버퍼 크기보다 작아야 하므로 조건문에 포함시켜서 문제를 해결합니다.",
  "rule.sast.sw.ccpp.62.name": "잘못된 조건으로 인한 필드 버퍼 언더플로우",
  "rule.sast.sw.ccpp.63.description": "필드 버퍼 언더플로우 체커는 메모리에서 객체의 유효범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.63.example.0.dangerous": "라인 5: 함수 인자값을 -10으로 대입했습니다.\n라인 8: type.a[]의 index 값을 -5로 대입하여 오류가 발생했습니다.",
  "rule.sast.sw.ccpp.63.example.0.safe": "라인 8: 버퍼의 인덱스는 항상 0보다 크고 버퍼 크기보다 작아야 하므로 인자값을 설정할 때 주의가 필요합니다.",
  "rule.sast.sw.ccpp.63.name": "필드 버퍼 언더플로우",
  "rule.sast.sw.ccpp.64.description": "버퍼 언더플로우 체커는 메모리에서 객체의 유효범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.64.example.0.dangerous": "라인 2: 함수 인자값을 -20으로 대입했습니다.\n라인 6: buf[]의 인덱스 값을 -10으로 대입하여 오류가 발생했습니다.",
  "rule.sast.sw.ccpp.64.example.0.safe": "라인 6: 버퍼의 인덱스는 항상 0보다 크고 버퍼 크기보다 작아야 하므로 인자값을 설정할 때 주의가 필요합니다.",
  "rule.sast.sw.ccpp.64.name": "버퍼 언더플로우",
  "rule.sast.sw.ccpp.6477.description": "alloca()는 스택에 메모리를 할당하므로 반복문 내에서 잘못 사용하면 스택 오버플로우나 예기치 않은 동작이 발생할 수 있습니다.\n반복문 내에서 alloca()와 같은 스택 메모리 할당 함수를 사용하지 않습니다. 필요한 경우, 반복문 외부에서 메모리를 미리 할당하거나 힙 메모리를 사용하여 메모리를 관리해야 합니다.",
  "rule.sast.sw.ccpp.6477.example.0.dangerous": "라인 6: 반복문 내에 alloca()가 호출되어 위험합니다.",
  "rule.sast.sw.ccpp.6477.example.0.safe": "라인 5: 반복문 내에 alloca()를 호출하지 않아 안전합니다.",
  "rule.sast.sw.ccpp.6477.name": "부적절한 순차 메모리 할당",
  "rule.sast.sw.ccpp.65.description": "잘못된 조건으로 인한 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼를 벗어난 메모리 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.ccpp.65.example.0.dangerous": "라인 2: x가 -20보다 작은지를 비교했습니다.\n라인 3: foo2() 함수에 인자값을 대입했습니다.\n라인 7: str[]의 인덱스 값이 -20보다 작게 설정되어 오류가 발생했습니다.",
  "rule.sast.sw.ccpp.65.example.0.safe": "라인 2 :버퍼의 인덱스는 항상 0보다 크거나 버퍼 크기보다 작아야 합니다. str[]의 인덱스 크기는 총 11이므로(널 제외) n의 크기가 0~10이 되도록 설정해야 합니다.",
  "rule.sast.sw.ccpp.65.name": "잘못된 조건으로 인한 버퍼 언더플로우",
  "rule.sast.sw.ccpp.67.description": "포맷 스트링 삽입 체커는 포맷 명세와 실제 인자의 타입이 일치하지 않는 코드를 검출합니다.\nC 프로그램에서 사용하는 포맷 명세는 아래와 같습니다. int 타입: d, i unsigned int 타입: u double 타입: f, F, e, E, g, G, a, A unsigned int 타입: x, X, o char 포인터 혹은 문자열 타입: s char 타입: c void 포인터 타입: p Length 필드 정보는 아래와 같습니다. hh: char 타입을 int 타입으로 promote h: short 타입을 int 타입으로 promote l: 정수형인 경우 long 타입을 예상하거나 floating point 타입의 경우 double 타입을 예상함 정수형인 경우 long 타입을 예상하거나 floating point 타입의 경우 double 타입을 예상함\n포맷 스트링 문제로 인해 프로그램의 정보가 노출되거나 외부로부터 공격 받을 수 있는 위험이 있습니다. 예를 들어 printf() 함수에서 포맷 명세와 인자 타입을 형식에 맞게 사용하는 경우 문제가 발생하지 않습니다. 하지만 상호간의 형식이 맞춰져 있지 않았을 경우 메모리 상의 내용이 노출될 수 있습니다. 또한 노출된 메모리 영역에 다른 코드를 삽입할 수 있으므로 보안 문제가 발생할 수 있습니다.\n포맷 스트링과 나중에 입력하는 인자 타입이 일치하도록 해당 포맷 스트링을 변경하거나 인자의 타입을 변경해야 합니다.",
  "rule.sast.sw.ccpp.67.example.0.dangerous": "라인 4: 문자열 buf의 포맷 스트링은 \"%s\"입니다. 정수 포맷 스트링인 \"%d\"를 사용했으므로 오류로 검출되었습니다.",
  "rule.sast.sw.ccpp.67.example.0.safe": "라인 4: 일치하는 포맷 스트링을 사용하여 문제를 해결합니다.",
  "rule.sast.sw.ccpp.67.name": "포맷 스트링 삽입",
  "rule.sast.sw.ccpp.67.option.proframe_targets.description": "number_s 타입의 포맷스트링을 검사할 함수를 작성합니다.",
  "rule.sast.sw.ccpp.67.option.proframe_targets.name": "Proframe 분석시 분석 대상 함수.",
  "rule.sast.sw.ccpp.67.option.targets.description": "아래 목록에 존재하는 함수에 대하여만 검사합니다.",
  "rule.sast.sw.ccpp.67.option.targets.name": "검사 대상 string format함수",
  "rule.sast.sw.ccpp.75.description": "시스템 정보 노출 체커는 프로그램의 중요한 내부 정보가 오류 메시지와 같은 수단을 통해 노출되는 코드를 검출합니다.\n오류 메시지를 통해 환경, 사용자, 관련 데이터 등 프로그램 내부 정보가 외부로 노출되는 경우 printf() 함수와 fprintf() 함수에서 알람이 발생합니다.\n오류 발생 시 오류 내용이나 프로그램 정보를 출력하면 공격자가 프로그램의 구조를 파악할 수 있습니다. 또한 환경 변수 내용을 출력하면 공격자가 환경 변수에 정의된 정보를 수집할 수 있습니다. 따라서 오류 메시지는 디버그할 경우에만 출력하는 것이 좋습니다.\nprintf() 함수와 fprintf() 함수를 사용할 때 정보가 노출되지 않도록 주의해야 합니다.",
  "rule.sast.sw.ccpp.75.example.0.dangerous": "라인 2: 환경 변수의 경로 정보를 대입하므로 해당 정보를 노출할 위험이 있습니다.\n라인 3: 환경 변수의 경로 정보를 노출시켜 공격자에게 해당 정보를 제공하게 됩니다.",
  "rule.sast.sw.ccpp.75.example.0.safe": "라인 3: fprint() 함수를 사용하는 구문을 제거합니다. 디버그하는 경우에만 오류 메시지 관련 함수를 사용하도록 제한해야 합니다.",
  "rule.sast.sw.ccpp.75.name": "시스템 정보 노출",
  "rule.sast.sw.ccpp.75.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) printf",
  "rule.sast.sw.ccpp.75.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.ccpp.75.option.source_call.description": "민감한 정보를 입력받는 함수 명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.ccpp.75.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.1151.description": "안전하지 않은 파일 식별 체커는 한가지 방법으로만 파일을 식별하는 경우를 검출합니다.\n파일을 식별하기 위해 파일 이름, 생성 시간, 소유자 등 여러 가지 파일 속성을 확인합니다.\n파일 이름과 같이 한 가지 방법으로만 파일을 식별하는 경우 의도하지 않은 파일에 접근할 가능성이 있습니다. 이 경우 공격자는 사용자가 소유하고 있지 않은 파일에 접근할 수 있습니다. 따라서 보안 취약점이 발생할 수 있습니다.\n파일 속성을 확인하여 해당 파일을 식별한 후에 열도록 합니다.",
  "rule.sast.sw.cpp.1151.example.0.dangerous": "라인 4: 이름으로만 파일을 식별했습니다. 만약 이 코드가 setuid-root 같은 프로그램에서 슈퍼 사용자 권한으로 동작한다면 공격자는 이 프로그램을 악용해 사용자가 소유하고 있지 않은 파일들을 포함해 권한 없는 파일들을 읽을 수 있습니다.",
  "rule.sast.sw.cpp.1151.example.0.safe": "라인 4: fopen() 함수 대신 open() 함수를 사용합니다.\n라인 8: 파일을 열고 fstat() 함수를 사용하여 사용자 ID와 그룹 ID를 비교함으로써 사용자가 해당 파일에 대한 권한을 가지고 있는지를 식별합니다.",
  "rule.sast.sw.cpp.1151.name": "안전하지 않은 파일 식별",
  "rule.sast.sw.cpp.1152.description": "파일 생성 시 잘못된 권한 할당 체커는 접근 제한을 충분히 설정하지 않고 파일을 생성하는 경우를 검출합니다.\n적절한 접근 권한으로 파일을 생성하지 않으면 허가되지 않은 사용자가 파일에 접근할 수 있습니다. 따라서 보안 취약점이 발생할 수 있습니다.\n파일을 열 때 접근 권한도 함께 명시하도록 합니다.",
  "rule.sast.sw.cpp.1152.example.0.dangerous": "라인 6: 파일을 생성하기 위해 open() 함수를 사용했습니다. 그러나 접근 권한을 명시하지 않았습니다.",
  "rule.sast.sw.cpp.1152.example.0.safe": "라인 7: 파일을 열 때 접근 권한도 함께 명시하도록 합니다.",
  "rule.sast.sw.cpp.1152.name": "파일 생성 시 잘못된 권한 할당",
  "rule.sast.sw.cpp.1157.description": "중복된 환경 변수 이름 체커는 대소문자 구분이 없으면 동일한 이름으로 식별되는 환경 변수를 사용하는 수식을 검출합니다.\n여기서 환경 변수 이름은 getenv() 함수나 putenv() 함수로 전달되는 문자열을 의미합니다.\n환경 변수는 운영 체제 환경에 따라 대소문자를 구분하기도 하고 구분하지 않기도 합니다. 따라서 대소문자만 다르고 이름이 동일한 환경 변수는 경우에 따라 구분되지 않을 가능성이 높습니다.\n이식성을 보장하기 위해서 대소문자 구분이 없더라도 다른 이름으로 식별되도록 환경 변수 이름을 설정하도록 합니다.",
  "rule.sast.sw.cpp.1157.example.0.dangerous": "라인 1: putenv() 함수에 환경 변수 값을 대입했습니다.\n라인 4: putenv() 함수에 환경 변수 값을 대입했습니다. 대소문자 구분이 없는 경우 라인 1에서 호출된 함수의 변수와 동일한 이름을 사용했습니다.",
  "rule.sast.sw.cpp.1157.example.0.safe": "라인 4: 라인 1에 있는 환경 변수와 다른 이름을 사용하도록 합니다.",
  "rule.sast.sw.cpp.1157.name": "중복된 환경 변수 이름",
  "rule.sast.sw.cpp.1158.description": "환경 변수 포인터에 의존 체커는 메인 함수의 인자로 전달된 환경 변수 포인터에 의존하는 수식을 검출합니다.\n환경 변수 포인터에 의존하지 않도록 합니다. 뒤이어 오는 연산에 의해 무효화될 수 있기 때문입니다. 예를 들어 main 함수에서 세 번째 인자로 환경 변수에 관한 값이 전달될 경우 이에 의존하지 말도록 합니다.\n환경 변수 포인터에 의존하는 것은 뒤이어 오는 연산에 의해 무효화될 수 있으므로 안전하지 않습니다. 이 경우 유효하지 않은 값을 참조하게 될 가능성이 높습니다.\n환경 변수 포인터에 의존하지 않고 environ 변수와 같은 전역 변수를 참조하도록 합니다.",
  "rule.sast.sw.cpp.1158.example.0.dangerous": "라인 2: setenv() 함수를 호출했습니다.\n라인 6: envp 포인터 변수에 접근했습니다. envp는 라인 2 이후로 더 이상 환경 변수를 참조하지 않습니다.",
  "rule.sast.sw.cpp.1158.example.0.safe": "라인 7: 환경 변수에 접근해야 하는 경우 environ 전역 변수를 대신 사용하도록 합니다.",
  "rule.sast.sw.cpp.1158.name": "환경 변수 포인터에 의존",
  "rule.sast.sw.cpp.1160.description": "In-band 오류 표시자 사용 체커는 함수 인터페이스를 설계할 때 대역 내 오류 표시자를 사용하는 경우를 검출합니다.\n여기서 대역 내 오류 표시자(In-band Error Indicator)란 함수를 성공적으로 호출했을 때 반환할 수 없는 값을 오류 상황일 때 반환합니다. 대표적으로 C 표준의 EOF가 있습니다.\nC 라이브러리 함수에서 일반적으로 이 기법을 많이 사용하지만 권장되지는 않습니다. 특히 오류 값과 정상적인 값을 따로 처리하지 않으면 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n대역 내 오류 표시자 방식으로 함수 인터페이스를 설계하지 않도록 합니다.",
  "rule.sast.sw.cpp.1160.example.0.dangerous": "라인 6: sprintf() 함수에 오류가 발생하면 -1을 반환하게 됩니다. 첫 호출에서 오류가 발생하면 count 변수가 -1이 되고, buf의 잘못된 메모리 영역에 접근하게 됩니다.",
  "rule.sast.sw.cpp.1160.example.0.safe": "라인 1: 반환값이 오류 상태만 출력하도록 함수 인터페이스 설계를 변경합니다.",
  "rule.sast.sw.cpp.1160.name": "In-band 오류 표시자 사용",
  "rule.sast.sw.cpp.1168.description": "누락된 심볼릭 링크 검사 체커는 심볼릭 링크의 존재를 확인하지 않고 파일을 여는 경우를 검출합니다.\n파일을 열기 전에 심볼릭 링크의 존재를 확인하기 위해 open() 함수에서 O_NOFOLLOW 플래그를 설정해야 합니다.\n확장된 권한으로 취약점이 있는 프로그램을 실행하는 경우 공격자가 해당 코드를 악용하여 /etc/passwd 인증 파일에 대한 심볼릭 링크를 조작하고 암호 없는 루트 계정을 생성할 수 있습니다. 즉, 심볼릭 링크가 포함된 파일을 여는 동작은 보안에 매우 취약할 수 있습니다. 단, vxworks 등의 시스템에서는 해당 플래그가 존재하지 않으므로 오탐이 발생할 수 있습니다.\n항상 심볼릭 링크를 확인하고 파일을 열도록 합니다.",
  "rule.sast.sw.cpp.1168.example.0.dangerous": "라인 4: 읽기 및 쓰기 권한으로 file_name 파일을 열었습니다. 만약 확장된 권한으로 해당 파일을 실행하면 공격자가 이 코드를 악용하여 /etc/passwd 인증 파일에 대한 심볼릭 링크를 조작하고 암호 없는 루트 계정을 만들 수 있습니다.",
  "rule.sast.sw.cpp.1168.example.0.safe": "라인 4: O_NOFOLLOW 플래그를 설정하고 파일을 열도록 합니다. 해당 플래그를 설정한 상태에서는 심볼릭 링크가 포함된 file_name 파일을 여는 데 실패하게 됩니다.",
  "rule.sast.sw.cpp.1168.name": "누락된 심볼릭 링크 검사",
  "rule.sast.sw.cpp.1171.description": "putenv의 인자로 비 정적 변수 사용 체커는 putenv() 함수에 자동 변수 포인터를 인자로 전달하는 경우를 검출합니다.\n자동 변수를 버퍼로 가리키는 포인터를 putenv() 함수의 인자로 제공하는 것은 의도하지 않은 값을 버퍼가 취할 수 있게 됩니다. 또한 버퍼를 사용하는 방법에 따라 프로그램에서 의도하지 않은 동작이 발생하거나 공격자가 임의의 코드를 수행할 수 있습니다.\nputenv() 함수에는 정적 변수 포인터를 인자로 전달하도록 합니다.",
  "rule.sast.sw.cpp.1171.example.0.dangerous": "라인 7: 자동 변수를 putenv() 함수의 인자로 사용했습니다.",
  "rule.sast.sw.cpp.1171.example.0.safe": "라인 7: 정적 변수를 putenv() 함수의 인자로 사용합니다.",
  "rule.sast.sw.cpp.1171.name": "putenv의 인자로 비 정적 변수 사용",
  "rule.sast.sw.cpp.1172.description": "파일 지시자 경쟁 조건 체커는 파일 지시자와 fork() 함수를 동시에 사용하여 경쟁 조건이 발생하는 경우를 검출합니다.\n경쟁 조건이 발생하는 구체적인 상황은 다음과 같습니다. 파일을 연 후 이 파일에 대한 파일 지시자를 변수에 저장합니다. fork() 함수를 호출합니다. 앞서 저장한 파일 지시자를 부모와 자식에서 사용하면 파일 지시자가 공유됩니다.\nfork() 함수로 인해 부모와 자식에서 동일한 파일 지시자를 공유하게 되면 경쟁 조건이 발생합니다. 따라서 의도하지 않은 결과가 발생할 수 있습니다.\nfork() 함수를 호출한 후에 자식 프로세스 내에서 파일 지시자를 닫고 다시 열도록 합니다.",
  "rule.sast.sw.cpp.1172.example.0.dangerous": "라인 4: 파일을 열고 fd 변수에 파일 지시자를 저장했습니다.\n라인 11: fork() 함수를 호출했습니다. 이로 인해 경쟁 상태가 발생할 수 있습니다.",
  "rule.sast.sw.cpp.1172.example.0.safe": "라인 28: fork() 함수를 호출한 경우 자식 프로세스 내에서 파일 지시자를 닫고 다시 열도록 합니다.",
  "rule.sast.sw.cpp.1172.name": "파일 지시자 경쟁 조건",
  "rule.sast.sw.cpp.1212.description": "시그널 핸들러의 잘못된 사용 체커는 운영 체제 환경으로 인해 시그널 핸들러를 유지시키는 데 실패하는 경우를 검출합니다.\n운영 체제에 따라 시그널 핸들러의 지속성과 작동 방식이 달라지므로 구현되는 세부적인 작동 방식을 이해해야 합니다,\n운영 체제에 따라 signal() 함수로 등록한 핸들러가 지속적으로 사용되기도 하고, 첫 번째 시그널만 처리한 후에 사라지기도 합니다. 후자의 경우에 대비하기 위해 핸들러 내부에서 signal() 함수로 스스로를 다시 등록하는 경우도 있지만 안전한 방법이 아닙니다. 핸들러가 호출된 직후와 signal() 함수로 스스로를 다시 등록하는 시점 사이에 틈이 있기 때문입니다. 따라서 두 시점 사이에 시그널이 발생하면 개발자가 의도하지 않은 기본 시그널 핸들러가 작동하게 됩니다.\n또한 시그널 핸들러를 지속적으로 사용하려면 안전한 방식을 사용해야 합니다.",
  "rule.sast.sw.cpp.1212.example.0.dangerous": "라인 3: 시그널 핸들러를 지속하기 위해 내부에서 signal() 함수를 호출하여 리셋된 핸들러를 다시 등록했습니다. 그러나 핸들러 호출 시점과 signal() 작동 시점 사이에 레이스 윈도우가 존재합니다.",
  "rule.sast.sw.cpp.1212.example.0.safe": "라인 4: Windows 환경에서는 대응 방안이 없지만, POSIX 환경에서는 플래그를 통해 시그널 핸들러의 지속 여부를 제어할 수 있습니다.",
  "rule.sast.sw.cpp.1212.name": "시그널 핸들러의 잘못된 사용",
  "rule.sast.sw.cpp.1214.description": "중단 가능한 시그널 핸들러 내에서 signal 함수 사용 체커는 인터럽트가 다시 발생 가능한 시그널을 핸들링하는 도중 signal() 함수를 호출하여 발생하는 경쟁 조건을 검출합니다.\n핸들러가 호출된 직후와 signal() 함수로 스스로를 다시 등록하는 시점 사이에 틈이 있기 때문입니다. 따라서 두 시점 사이에 시그널이 발생하면 개발자가 의도하지 않은 기본 시그널 핸들러가 작동하게 됩니다. 다시 발생한 인터럽트의 시점에 따라 의도와 다른 결과가 발생할 수 있으므로 경쟁 조건이 발생합니다.\n인터럽트가 다시 발생할 수 있는 시그널을 핸들링할 때에는 signal() 함수를 사용하지 않아야 합니다.",
  "rule.sast.sw.cpp.1214.example.0.dangerous": "라인 2: 시그널 핸들러 내부에서 signal() 함수를 호출했습니다.",
  "rule.sast.sw.cpp.1214.example.0.safe": "라인 2: 시그널 핸들러 내부에서 signal() 함수를 호출하지 않아야 합니다.",
  "rule.sast.sw.cpp.1214.name": "중단 가능한 시그널 핸들러 내에서 signal 함수 사용",
  "rule.sast.sw.cpp.1217.description": "라이브러리 경쟁 조건 체커는 다중 스레드 환경에서 사용하기에 안전하지 않은 라이브러리 함수를 호출한 경우를 검출합니다.\n라이브러리 함수 중에는 경쟁 조건에 대한 대비 없이 전역 변수를 사용하는 등 다중 스레드 환경에서 사용하기에 적합하지 않게 설계된 함수가 있습니다. 해당 함수를 다중 스레드 환경에서 사용하지 않도록 합니다.\n해당 함수를 사용하지 않습니다.",
  "rule.sast.sw.cpp.1217.example.0.dangerous": "라인 5: strerror() 함수로 인해 다중 스레드 환경에서 문제가 발생할 수 있습니다.",
  "rule.sast.sw.cpp.1217.example.0.safe": "라인 7: strerror_s() 함수는 경쟁 조건으로부터 안전한 함수입니다.",
  "rule.sast.sw.cpp.1217.name": "라이브러리 경쟁 조건",
  "rule.sast.sw.cpp.1318.description": "구조체 패딩으로 인한 정보 누출 체커는 구조체를 통해 값을 전달할 때 중요 정보가 누출될 수도 있는 구조체 내의 패딩 존재를 검출합니다.\n일반적으로 구조체에 속한 각 멤버 필드의 오프셋은 컴파일러에 따라 차이가 있지만 대부분 4바이트(32비트) 등의 규격화된 단위에 맞춰집니다. 개별 필드 타입의 크기가 이 규격에 맞지 않을 경우 중간에 의미 없는 패딩(Padding) 비트 영역을 넣어서 오프셋을 맞추게 됩니다. 이런 패딩이 존재하는 구조체의 각 필드에 값을 대입할 때 패딩 영역에 어떤 일이 일어나야 하는지는 언어 표준에 정의된 바가 없고 컴파일러에 따라 다르게 구현됩니다. 어떤 컴파일러는 패딩 영역의 값이 함께 바뀌도록 번역하고 어떤 컴파일러는 패딩 영역의 값을 유지하도록 번역합니다. 패딩의 값을 바꾸지 않는 컴파일러가 사용될 때에는 패딩 영역을 다루는 레지스터의 일부 값이 외부로 누출될 수 있어 위험합니다.\n패딩 영역을 통한 값 노출을 방지하는 방법은 여러 가지가 있습니다. 우선 구조체에 패딩이 생기지 않도록 하는 방법이 있는데, 컴파일러에 따라서 각 필드를 몇 바이트에 맞춰 정렬하는지, 패딩을 없애는 컴파일러 지시문이 존재하는지 등 패딩을 다루는 방법이 천차만별이므로 일괄적으로 적용하기는 어렵습니다. 특정 컴파일러만 사용하여 이식성을 고려할 필요가 없는 프로젝트에서는 패딩을 없애는 것도 한 방법이 될 수 있습니다. 그 외에는 중요 정보를 다루는 영역에 저장된 구조체에 담긴 값을 신뢰할 수 없는 외부 영역으로 복사할 때 구조체의 각 필드를 통째로 복사하는 대신 구조체 안의 값을 패딩이 없는 버퍼에 압축하여 저장한 후 이 버퍼를 통해 값을 전달하는 방식을 사용할 수 있습니다.",
  "rule.sast.sw.cpp.1318.example.0.dangerous": "라인 11: memset() 함수를 호출하여 메모리의 패딩 영역을 초기화했습니다.\n라인 13: 하지만 char 타입의 필드에 값을 쓸 때 32비트 레지스터의 값을 통째로 메모리에 쓸지, 상위 3 바이트의 패딩 영역의 값은 변경하지 않고 하위 1바이트 값만 메모리에 쓸지는 컴파일러마다 그 구현이 다릅니다. 컴파일러 구현에 따라 상위 3바이트의 레지스터에 담겨있는 정보가 노출될 수 있습니다.",
  "rule.sast.sw.cpp.1318.example.0.safe": "라인 4: 특정 컴파일러를 사용하는 프로젝트의 경우 해당 컴파일러의 패딩 관련 스펙을 확인한 후에 구조체에 패딩 바이트를 명시적으로 선언하여 문제를 해결할 수 있습니다.",
  "rule.sast.sw.cpp.1318.name": "구조체 패딩으로 인한 정보 누출",
  "rule.sast.sw.cpp.1404.description": "누락된 문자열 길이 제한 체커는 포맷 스트링을 통해 생성되는 문자열의 크기를 제한하지 않는 경우를 검출합니다.\n포맷 스트링을 통해 생성되는 문자열의 크기를 제한하지 않으면 임의의 긴 문자열을 버퍼에 저장하려고 시도하게 될 수 있습니다. 이로 인해 버퍼 오버플로우가 발생했습니다.\n포맷 스트링을 사용할 때 생성될 문자열의 길이를 제한해야 합니다.",
  "rule.sast.sw.cpp.1404.example.0.dangerous": "라인 5: 문자열의 최대 길이를 제한하지 않았습니다. filename에 버퍼 오버플로우가 발생할 수 있습니다.\n라인 6: 문자열의 최대 길이를 지나치게 길게 설정했습니다. buf에 버퍼 오버플로우가 발생할 수 있습니다.\n라인 7: 문자열의 최대 길이를 제한하지 않았습니다. msg에 버퍼 오버플로우가 발생할 수 있습니다.\n라인 8: 문자열의 최대 길이를 제한하지 않았습니다. buf에 버퍼 오버플로우가 발생할 수 있습니다.",
  "rule.sast.sw.cpp.1404.example.0.safe": "라인 5: 적절한 문자열 길이 제한을 지정하도록 합니다.\n라인 6: 적절한 문자열 길이 제한을 지정하도록 합니다.",
  "rule.sast.sw.cpp.1404.name": "누락된 문자열 길이 제한",
  "rule.sast.sw.cpp.1416.description": "디스크에 민감한 정보 저장 체커는 메모리에 남아 있이던 중요 정보가 의도하지 않게 디스크에 기록되어 외부로 노출되는 경우를 검출합니다.\n프로그램이 비정상적으로 종료되면 그 원인을 알 수 있게 주요 메모리의 상태가 디스크에 기록되도록 설정되어 있을 수 있습니다. 이렇게 설정된 상태에서 메모리에 중요 정보를 기록했다가 미처 정리하기 전에 어떤 이유로든 프로그램이 비정상적으로 종료되면 중요 정보가 디스크를 통해 노출될 수 있습니다.\n중요 정보는 메모리에 최대한 짧은 시간동안 유지될 수 있게 사용이 끝나는 즉시 메모리에서 정리하도록 합니다. 또한 사고로 인해 중요 정보가 메모리에 남아 있는 상태에서 프로그램이 비정상 종료 되더라도 메모리 덤프가 일어나지 않도록 설정을 변경합니다.",
  "rule.sast.sw.cpp.1416.example.0.dangerous": "라인 7: memset_s() 함수로 중요 정보가 저장된 메모리를 정리하려 하지만, 이 함수의 동작이 완료되기 전에 프로그램이 비정상적으로 종료되면 변수 secret의 정보가 메모리 덤프를 통해 노출됩니다.",
  "rule.sast.sw.cpp.1416.example.0.safe": "라인 5: setrlimit() 함수를 사용해 메모리 덤프가 일어나지 않도록 조정합니다. 이 방법은 POSIX 환경에서만 적용됩니다.",
  "rule.sast.sw.cpp.1416.name": "디스크에 민감한 정보 저장",
  "rule.sast.sw.cpp.1416.option.target_var_name.description": "검출 대상 변수 이름을 지정합니다.<br />예시) secret",
  "rule.sast.sw.cpp.1416.option.target_var_name.name": "검출 대상 변수 이름",
  "rule.sast.sw.cpp.1709.description": "누락된 입력 길이 검증 체커는 입력 받을 수 있는 문자열의 최대 버퍼 크기를 설정하지 않은 cin 입력 연산자 호출을 검출합니다.\ncin 은 C++에서 콘솔로부터 사용자의 입력을 받아들일 때 사용하는 표준 라이브러리입니다.\ncin으로 입력받은 문자열이 버퍼의 길이보다 클 경우 버퍼오버플로우 취약점이 발생할 수 있습니다.\ncin 클래스의 width 메소드를 호출하여 사용자가 입력할 수 있는 문자열의 최대값을 지정합니다.",
  "rule.sast.sw.cpp.1709.example.0.dangerous": "라인 3: 사용자가 입력할 수 있는 문자열의 최대값을 지정하지 않고 cin의 입력 연산자를 사용했습니다.",
  "rule.sast.sw.cpp.1709.example.0.safe": "라인 3: width() 메소드를 호출하여 사용자가 입력할 수 있는 문자열의 최대값을 지정합니다.",
  "rule.sast.sw.cpp.1709.name": "누락된 입력 길이 검증",
  "rule.sast.sw.cpp.1710.description": "윈도우 함수 사용 권한 위반 체커는 윈도우 함수 CreateProcess*(), RegCreateKey*(), SHRegCreate*(), SHRegOpen*() 등을 사용할 때 권한에 유의 하지 않고 사용하는 경우를 검출합니다.\n윈도우 함수 CreateProcess*(), RegCreateKey*(), SHRegCreate*(), SHRegOpen*() 등의 사용에 유의하십시오. \"CreateProcess\"로 시작하는 윈도우 함수는 실행 경로를 따옴표로 감싸지 않으면 잘못된 바이너리를 실행할 위험성이 있습니다. \"RegCreateKey\"로 시작하는 윈도우 함수는 HKEY_LOCAL_MACHINE 대신 HKEY_CURRENT_USER를 사용해야 합니다. \"SHRegCreate\"로 시작하는 윈도우 함수는 SHREGSET_HKLM 대신 SHREGSET_HKCU를 사용해야 합니다.\n함수가 빈 칸을 파싱하면 악성 바이너리가 실행될 수 있습니다.\n윈도우 함수를 사용할 때 함수 별 유의사항을 지켜 사용합니다.",
  "rule.sast.sw.cpp.1710.example.0.dangerous": "라인 6: SHREGSET_HKLM을 사용했습니다.\n10: 빈 칸이 있는 경로 \"C:\\Program Files\\GoodApp\"을 따옴표로 감싸지 않았습니다. 이 경우 Program.exe가 존재한다면 해당 바이너리가 실행될 수 있습니다.\n15: HKEY_LOCAL_MACHINE을 사용했습니다.",
  "rule.sast.sw.cpp.1710.example.0.safe": "라인 6: SHREGSET_HKCU를 사용해야 합니다.\n10: 빈 칸이 있는 경로 \"C:\\Program Files\\GoodApp\"을 따옴표로 감쌌습니다.\n15: HKEY_CURRENT_USER을 사용해야 합니다.",
  "rule.sast.sw.cpp.1710.name": "윈도우 함수 사용 권한 위반",
  "rule.sast.sw.cpp.1732.description": "취약한 해시 체커는 보안성이 약한 해시 알고리즘을 사용한 경우를 검출합니다.\n보안성이 약한 해시 알고리즘은 MD2, MD5, SHA1입니다.\n표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 해시 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다. MD5와 같은 오래된 알고리즘의 경우에는 레인보우 테이블과 같은 방법으로 간단히 해시를 무력화할 수 있습니다.\n보안성이 뛰어난 해시 알고리즘을 사용해야 합니다.",
  "rule.sast.sw.cpp.1732.example.0.dangerous": "라인 1: CryptCreateHash 함수가 MD2알고리즘을 사용하여 해시를 암호화하고 있습니다. MD2 알고리즘은 안전하지 않은 알고리즘이기 때문에 사용하지 말아야 합니다.",
  "rule.sast.sw.cpp.1732.example.0.safe": "라인 1: SHA-512 알고리즘을 사용하여 해시를 암호화하고 있습니다.",
  "rule.sast.sw.cpp.1732.name": "취약한 해시",
  "rule.sast.sw.cpp.1733.description": "부적절한 암호화 체커는 암호화에 필요한 함수들의 호출이 누락된 경우를 검출합니다.\n이 규칙에서 암호화에 필요한 함수들은 다음과 같습니다. 또한 이 함수들을 정해진 순서대로 호출해야 합니다. CryptAcquireContext(); CryptCreatehash(); CryptHasData();\n암호화에 필요한 함수들의 호출이 누락되면 정상적으로 암호화가 이루어지지 않습니다. 따라서 보안 취약점이 발생할 수 있습니다.\n암호화에 필요한 함수들을 누락하지 않고 전부 호출하도록 합니다.",
  "rule.sast.sw.cpp.1733.example.0.dangerous": "라인 5: CryptCreateHash() 함수의 호출없이 CryptHashData() 함수를 호출했습니다.",
  "rule.sast.sw.cpp.1733.example.0.safe": "라인 5: CryptHashData() 함수 호출 이전에 CryptCreateHash() 함수를 호출해야 합니다.",
  "rule.sast.sw.cpp.1733.name": "부적절한 암호화",
  "rule.sast.sw.cpp.181.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\n해당 오류는 난수를 생성하기 위해 보안에 취약한 rand() 함수를 사용하거나 난수 생성 함수를 호출하기 전에 seeding 함수를 호출하지 않는 경우에 발생합니다. 또한 random() 함수를 호출하지만 srandom() 함수를 호출하는 구문이 존재하거나 CryptGenRandom() 함수를 호출하지만 CryptAcquireContext() 함수를 호출하는 구문이 존재하지 않는 경우에도 발생합니다.\nrandom() 함수는 주로 통신 보안 프로토콜을 암호화하기 위해 사용합니다. random() 함수를 호출할 때 srandom() 함수를 호출하지 않으면 동일한 난수를 계속해서 생성합니다. 따라서 보안에 취약하기 때문에 srandom() 함수를 사용하는 것이 좋습니다.\n암호학적으로 충분히 안전한 방식을 사용하여 예측 불가능한 난수를 생성해야 합니다.",
  "rule.sast.sw.cpp.181.example.0.dangerous": "라인 4: 프로그램을 여러 번 실행했을 때 얻는 결과값이 같기 때문에 문제가 발생했습니다. 또한 srand() 함수를 호출하여 결과값을 변경할 수 있지만 범위가 작기 때문에 암호화에 사용하기 어렵습니다.",
  "rule.sast.sw.cpp.181.example.0.safe": "라인 2: srand() 함수 대신 srandom() 함수를 사용하면 보안적으로 안전한 임의의 수를 얻을 수 있습니다.\n라인 4: rand() 함수 대신 random() 함수를 사용하면 보안적으로 안전한 임의의 수를 얻을 수 있습니다.",
  "rule.sast.sw.cpp.181.name": "부적절한 난수 생성",
  "rule.sast.sw.cpp.181.option.targets.description": "랜덤 함수와 랜덤 시드 함수를 설정합니다. (랜덤함수),(랜덤시드함수) 형태로 정의하십시오. 공백은 허용하지 않습니다.",
  "rule.sast.sw.cpp.181.option.targets.name": "랜덤 함수와 시드 함수",
  "rule.sast.sw.cpp.184.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.sw.cpp.184.example.0.dangerous": "라인 2: 디버깅 목적으로 사용된 main() 함수가 남아 있으며 printf() 함수를 통해서 정보가 출력되었습니다.",
  "rule.sast.sw.cpp.184.example.0.safe": "라인 2: 디버깅 목적으로 사용한 main()으로 시작하는 코드를 삭제해야 합니다.",
  "rule.sast.sw.cpp.184.name": "남은 디버그 코드",
  "rule.sast.sw.cpp.184.option.debug_string.description": "디버그를 나타내는 문자열을 작성합니다.<br />예시) debug",
  "rule.sast.sw.cpp.184.option.debug_string.name": "디버그 의미 문자열",
  "rule.sast.sw.cpp.184.option.print_function.description": "출력에 사용되는 함수 이름을 작성합니다.<br />예시) printf",
  "rule.sast.sw.cpp.184.option.print_function.name": "출력 함수",
  "rule.sast.sw.cpp.184.option.target_func.description": "대상 함수를 설정합니다.",
  "rule.sast.sw.cpp.184.option.target_func.name": "대상 함수",
  "rule.sast.sw.cpp.1841.description": "동일 핸들러에 여러 개의 시그널 할당 체커는 하나의 시그널 핸들러에 여러 시그널이 연결된 경우를 검출합니다.\n이 경우 소프트웨어가 예상하지 못하게 종료될 수 있습니다.\n하나의 시그널 핸들러에는 하나의 시그널만 연결해야 합니다.",
  "rule.sast.sw.cpp.1841.example.0.dangerous": "라인 1: 시그널 핸들러 handler()가 정의되었습니다.\n라인 5: SIGUSR1 시그널을 핸들러에 연결했습니다.\n라인 6: SIGUSR2 시그널도 핸들러에 연결했습니다.",
  "rule.sast.sw.cpp.1841.example.0.safe": "라인 8: 하나의 시그널은 하나의 핸들러에만 연결해야 합니다.",
  "rule.sast.sw.cpp.1841.name": "동일 핸들러에 여러 개의 시그널 할당",
  "rule.sast.sw.cpp.1851.description": "OAEP 없는 RSA 사용 체커는 OAEP를 사용하지 않고 RSA 암호화 알고리즘을 사용한 경우를 검출합니다.\nOAEP를 사용하지 않고 RSA 암호화 알고리즘을 사용하지 마십시오.\n이 경우 공격자가 복호화를 좀더 쉽게 할 수 있습니다.\nRSA 암호화 알고리즘을 사용할 때는 반드시 OAEP를 사용합니다.",
  "rule.sast.sw.cpp.1851.example.0.dangerous": "라인 1: CryptEncrypt()를 호출하면서 OAEP를 사용하지 않았습니다.",
  "rule.sast.sw.cpp.1851.example.0.safe": "라인 1: OAEP를 사용해서 CryptEncrypt()를 호출했습니다.",
  "rule.sast.sw.cpp.1851.name": "OAEP 없는 RSA 사용",
  "rule.sast.sw.cpp.1861.description": "힙 검사 체커는 릴리즈 전 힙 메모리를 깨끗하게 삭제하지 않은 경우를 검출합니다.\n암호와 같은 민감한 데이터나 암호화된 키 값을 메모리에서 지우지 않았을 때, 공격자는 메모리 덤프 혹은 다른 방법을 사용하는 '힙 인스펙션' 공격을 통해 해당 값을 얻어낼 수 있습니다.\n릴리즈 전 힙 메모리를 깨끗하게 삭제해야 합니다.",
  "rule.sast.sw.cpp.1861.example.0.dangerous": "라인 1: 비밀번호로 사용될 변수 password 가 선언되었습니다.\n라인 4: LogonUserA() 함수에서 암호로 password의 값을 사용했습니다.\n라인 20: 힙 메모리를 깨끗하게 삭제하지 않고 free() 함수를 호출했습니다.",
  "rule.sast.sw.cpp.1861.example.0.safe": "라인 19: SecureZeroMemory() 함수로 힙의 내용을 파악할 수 없도록 깨끗하게 삭제했습니다.",
  "rule.sast.sw.cpp.1861.name": "힙 검사",
  "rule.sast.sw.cpp.1861.option.prevent_functions.description": "아래 결함 생성 함수를 호출하기 전에 호출하면 결함으로 처리하지 않는 함수입니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "rule.sast.sw.cpp.1861.option.prevent_functions.name": "결함 방지 함수",
  "rule.sast.sw.cpp.1861.option.sink_functions.description": "결함 방지 함수를 호출하지 않고 호출할 경우 결함이 발생하는 함수힙니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "rule.sast.sw.cpp.1861.option.sink_functions.name": "결함 생성 함수",
  "rule.sast.sw.cpp.1861.option.source_functions.description": "중요한 정보(패스워드)가 담긴 변수를 사용한 함수를 설정합니다. \"함수명|파라미터 인덱스\" 형태로 정의하며 인덱스는 1부터 시작합니다.",
  "rule.sast.sw.cpp.1861.option.source_functions.name": "중요한 정보가 담긴 변수를 사용한 함수",
  "rule.sast.sw.cpp.1872.description": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.\nstd::exception 타입과 같이 지나치게 일반적인 예외를 처리하는 catch 문을 검출합니다.\n지나치게 일반적인 예외 처리를 하게 되면 특별히 처리해야 하는 개별 예외를 적절히 처리하지 못할 뿐 아니라 이 지점에서 논리적으로 발생해서는 안되는 예외까지 처리하게 됩니다. 이러한 경우에 개발 및 검수 과정에서 발견되었어야 하는 설계 및 구현 상 결함이 발견되지 못한 채 배포 단계로 넘어가서 더 큰 문제의 원인이 될 수 있습니다.\n해당 코드 구역에서 발생할 수 있는 세부적인 예외들을 명시적으로 나눠서 처리하는 것이 좋습니다. 일반적인 예외를 처리하더라도 예측 가능한 세부적인 예외들을 먼저 처리한 후 마지막에 처리하도록 합니다. 이렇게 작성했을 때 실행 흐름이 일반적인 예외 처리 부분에 도달했다면 개발 과정에서 예측하지 못한 예외가 발생한 것이므로 조용히 넘어가지 않고 상황에 대한 상세한 기록을 남겨서 추후 결함을 수정할 수 있도록 합니다.",
  "rule.sast.sw.cpp.1872.example.0.dangerous": "라인 5: std::exception 타입 예외를 처리합니다. 이 타입은 지나치게 일반적인 예외 클래스로 다른 모든 예외 클래스가 이 클래스를 상속합니다.",
  "rule.sast.sw.cpp.1872.example.0.safe": "라인 5: 더 구체적인 예외 타입을 처리하도록 합니다.",
  "rule.sast.sw.cpp.1872.name": "지나치게 일반적인 예외 처리",
  "rule.sast.sw.cpp.1881.description": "switch 구문 경쟁 조건 체커는 스위치(switch)문의 평가 식의 결과값이 실행 중 변할 위험이 있는 경우를 검출합니다.\n스위치(switch)문의 평가 식의 결과값이 실행 중 변할 수 있습니다.\n실행 중 값이 변하면 예측하지 못한 결과가 나타날 수 있습니다.\nswitch 문에서 평가 값으로 사용하려고 하는 값을 별도 변수에 저장한 후 사용합니다.",
  "rule.sast.sw.cpp.1881.example.0.dangerous": "라인 9: switch 문의 평가식만 보면 언제나 0과 1이기 때문에 default 절에 도달하지 않습니다. 하지만 st_ctime % 2 가 1이면 첫 번째 case 가 수행되는데, 시간이 변해서 st_ctime %2 가 0이 될 경우 두 번째 case 가 수행됩니다.",
  "rule.sast.sw.cpp.1881.example.0.safe": "라인 8: sb->st_ctime의 값을 별도의 변수에 저장 후 이 변수를 사용해야 합니다.",
  "rule.sast.sw.cpp.1881.name": "switch 구문 경쟁 조건",
  "rule.sast.sw.cpp.1915.description": "부적절한 포인터 확장 체커는 포인터의 연산이 정확하지 않게 수행되는 경우를 검출합니다.\n포인터의 연산이 정확히 수행되도록 보장해야 합니다. 포인터 연산 시 개발자가 의도하지 않게 포인터가 잘못된 주소를 가리킬 수 있습니다.\n만약 잘못된 메모리 주소를 읽으면 정보 누출(Information leak)이 발생할 수 있습니다. 만약 잘못된 주소를 읽으면 허용되지 않는 구간에 쓰기 연산을 함으로서 버퍼 오버플로우를 발생시킬 수 있습니다.\n포인터 연산을 올바르게 수행하도록 합니다.",
  "rule.sast.sw.cpp.1915.example.0.dangerous": "라인 9: 프로그래머는 buf의 크기만큼 포인터의 위치를 이동하려고 의도했으나, 실제로는 buf의 데이터형인 int의 크기와 buf의 크기의 곱 만큼 이동합니다. 이 예제에서는 80이 아니라 320만큼 이동합니다.(32비트 머신 기준)",
  "rule.sast.sw.cpp.1915.example.0.safe": "라인 9: sizeof를 사용하지 말고 포인터 연산을 수행합니다.",
  "rule.sast.sw.cpp.1915.name": "부적절한 포인터 확장",
  "rule.sast.sw.cpp.1944.description": "불충분한 암호화 키 지수 체커는 비대칭 키 RSA 사용 시 공개 키 지수가 65537이 아닌 경우를 검출합니다.\nRSA(Rivest Shamir Adleman) 비대칭 암호 알고리즘을 사용할 때 공개 키의 지수는 가급적 2 ^ 16 + 1, 즉, 65537 (16진수 기준 0x10001)로 하는 것이 좋습니다. 이 값은 공개 키 암호화 연산이나 서명 검증 시 공개 키에 의한 연산을 최적화하기 위한 수입니다. 물론 반드시 이 값을 사용해야 하는 것은 아니지만 이 값은 알고리즘의 보안성과 속도를 최적화하기 위한 수로 이 값에 대한 사용을 권장합니다.\n비대칭 키 RSA 사용 시 공개 키 지수의 값을 65537로 입력합니다.",
  "rule.sast.sw.cpp.1944.example.0.dangerous": "라인 13: 공개 키 지수로서 13을 사용했습니다. 이 경우 비록 빠른 연산은 가능하지만 보안성이 낮습니다.",
  "rule.sast.sw.cpp.1944.example.0.safe": "라인 13: 보안성과 연산 속도 면에서 최적화된 65537을 사용하도록 합니다.",
  "rule.sast.sw.cpp.1944.name": "불충분한 암호화 키 지수",
  "rule.sast.sw.cpp.1962.description": "잘못된 조건으로 인한 동적 할당 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.1962.example.0.dangerous": "라인 2: buf에 동적 할당한 메모리를 대입했습니다. buf의 크기는 10입니다.\n라인 3: scanf() 함수로 idx의 값을 입력했습니다.\n라인 5: idx의 크기가 0~10 사이인지 비교했습니다.\n라인 6: 라인 5의 조건에 의해 idx의 값이 10일 수 있습니다. 이로 인해 버퍼 오버플로우가 발생했습니다.",
  "rule.sast.sw.cpp.1962.example.0.safe": "라인 5: idx의 크기가 0~9 사이인지 비교합니다.\n라인 6: 라인 5의 조건에 의해 정해진 범위 내로만 배열의 접근이 이루어집니다.",
  "rule.sast.sw.cpp.1962.name": "잘못된 조건으로 인한 동적 할당 버퍼 오버플로우",
  "rule.sast.sw.cpp.1963.description": "동적 할당 버퍼 언더플로우 체커는 메모리에서 객체의 유효 범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.1963.example.0.dangerous": "라인 2: 함수 인자값을 -20으로 대입했습니다.\n라인 6: buf[]의 인덱스 값을 -10으로 대입하여 오류가 발생했습니다.",
  "rule.sast.sw.cpp.1963.example.0.safe": "라인 7: 버퍼의 인덱스는 항상 0보다 크고 버퍼 크기보다 작아야 하므로 인자값을 설정할 때 주의가 필요합니다.",
  "rule.sast.sw.cpp.1963.name": "동적 할당 버퍼 언더플로우",
  "rule.sast.sw.cpp.1964.description": "잘못된 조건으로 인한 동적 할당 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.1964.example.0.dangerous": "라인 2: x가 -20보다 작은지를 비교했습니다.\n라인 3: foo2() 함수에 인자값을 대입했습니다.\n라인 7: str[]의 인덱스 값이 -20보다 작게 설정되어 오류가 발생했습니다.",
  "rule.sast.sw.cpp.1964.example.0.safe": "라인 2 :버퍼의 인덱스는 항상 0보다 크거나 버퍼 크기보다 작아야 합니다. str[]의 인덱스 크기는 총 11이므로(널 제외) n의 크기가 0~10이 되도록 설정해야 합니다.",
  "rule.sast.sw.cpp.1964.name": "잘못된 조건으로 인한 동적 할당 버퍼 언더플로우",
  "rule.sast.sw.cpp.1986.description": "파일 이름 TOCTOU 경쟁 조건 체커는 파일 이름을 통한 파일 상태 확인과 실제 파일 사용 사이의 시간 차로 인해 발생하는 경쟁 조건을 검출합니다.\n이미 열린 파일의 이름을 가지고 또 다시 파일에 관한 함수 chown(), stat(), chmod(), remove() 함수 등이 호출되는 경우를 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n파일 포인터 또는 파일 기술자를 사용할 경우에 의도하지 않은 파일을 접근하게 되는 문제를 줄일 수 있습니다. chown(), stat(), chmod() 함수보다는 경쟁 조건 문제가 발생하지 않는 fchown(), fstat(), fchmod()를 사용하여 파일에 대한 연산을 수행하도록 합니다.",
  "rule.sast.sw.cpp.1986.example.0.dangerous": "라인 8: chmod()에서 파일 이름을 사용하여 문제가 발생했습니다.",
  "rule.sast.sw.cpp.1986.example.0.safe": "라인 8: 파일 이름 대신 파일 디스크립터와 더불어 fchmod()를 더불어 사용하여 같은 파일에 접근할 수 있도록 합니다.",
  "rule.sast.sw.cpp.1986.name": "파일 이름 TOCTOU 경쟁 조건",
  "rule.sast.sw.cpp.2005.description": "public 메소드에 의해 반환된 private 컬렉션 체커는 private이 아닌 메소드에서 private으로 선언된 배열 또는 컬렉션 타입 필드의 객체가 그대로 반환되는 경우를 검출합니다.\nprivate으로 선언된 컬렉션 객체나 포인터 객체를 public 메소드에서 그대로 반환하면 객체 주소 값이 외부로 공개되어 외부에서 임의로 내용을 수정할 수 있게 됩니다.\nprivate로 선언된 컬렉션 객체를 public 메소드를 통해서 통째로 반환하지 않도록 합니다. 필요한 경우 복사본을 생성하여 반환하거나 접근 및 수정을 제어하는 별도의 public 메소드를 선언하여 사용해야 합니다.",
  "rule.sast.sw.cpp.2005.example.0.dangerous": "라인 6: 포인터 타입의 private 필드를 public 메소드에서 반환했습니다.",
  "rule.sast.sw.cpp.2005.example.0.safe": "라인 7: 포인터 타입의 private 필드를 복사하여 반환합니다.",
  "rule.sast.sw.cpp.2005.name": "public 메소드에 의해 반환된 private 컬렉션",
  "rule.sast.sw.cpp.2006.description": "외부 데이터를 private 컬렉션에 저장 체커는 외부에서 접근 가능한 컬렉션 객체나 포인터 객체를 private 컬렉션이나 포인터 필드에 저장하는 경우를 검출합니다.\npublic 필드 변수 혹은 public 메소드에서 인자로 전달된 변수에 담긴 컬렉션 객체나 포인터 객체는 외부에서 접근 가능합니다.\n외부에서 접근 가능한 컬렉션 객체나 포인터 객체를 private으로 선언된 컬렉션 필드에 저장하면 private 컬렉션을 외부에서 접근할 수 있게 되어 접근 제어가 실질적으로 이루어 지지 않습니다. 사용자 정보 또는 외부에 노출하면 안되는 정보가 노출될 수 있습니다. 따라서 보안 상 치명적인 문제가 될 수 있습니다.\nprivate 컬렉션 이나 포인터 필드에는 클래스 내부에서 직접 생성한 객체만을 저장합니다. 외부의 데이터를 필드에 전달해야 할 때는 객체를 직접 저장하지 말고 각 원소의 값을 별도로 복사하여 저장합니다.",
  "rule.sast.sw.cpp.2006.example.0.dangerous": "라인 6: 포인터 타입의 private 필드를 public 메소드에서 대입했습니다.",
  "rule.sast.sw.cpp.2006.example.0.safe": "라인 6: 포인터 타입의 private 필드에 복사한 값을 대입합니다.",
  "rule.sast.sw.cpp.2006.name": "외부 데이터를 private 컬렉션에 저장",
  "rule.sast.sw.cpp.2007.description": "잘못된 umask 인자 체커는 umask() 함수에 잘못된 값을 인자로 전달하는 경우를 검출합니다.\n구체적으로는 umask 인자의 길이가 077 이상의 값이 들어오는 경우를 검출합니다.\nchmod 명령의 인자 양식과 umask 명령의 인자 양식이 비슷하지만 정반대로 해석되어 혼동하기 쉽기 때문에 검출합니다. chmod 명령에서는 7이 모든 것(읽기, 쓰기, 실행)을 허용하는 것, 0이 모든 것을 금지함을 의미합니다. 하지만 umask 명령에서는 거꾸로 7이 모든 것을 금지, 0이 모든 것을 허용을 의미합니다. 또한 chmod 명령이 3자리 8진수를 인자로 받는 것과 달리, umask 명령은 2자리 8진수를 인자로 받습니다. Python의 umask() 함수는 OS의 umask 명령과 같은 방식으로 작동하므로 인자도 같은 형태로 전달해야 합니다.\numask() 함수의 용법에 맞는 2자리 8진수를 인자를 전달합니다.",
  "rule.sast.sw.cpp.2007.example.0.dangerous": "라인 3: umask() 함수를 올바르지 않은 인사를 사용하여 호출했습니다.",
  "rule.sast.sw.cpp.2007.example.0.safe": "라인 3: umask를 올바른 인자를 사용하여 호출하도록 합니다.",
  "rule.sast.sw.cpp.2007.name": "잘못된 umask 인자",
  "rule.sast.sw.cpp.2008.description": "외부 데이터를 private 필드에 저장 체커는 외부에서 접근 가능한 객체를 private 필드에 저장하는 경우를 검출합니다.\npublic 필드 변수 혹은 public 메소드에서 인자로 전달된 변수에 담긴 객체는 외부에서 접근 가능합니다.\n외부에서 접근 가능한 객체를 private으로 선언된 필드에 저장하면 private 컬렉션을 외부에서 접근할 수 있게 되어 접근 제어가 실질적으로 이루어 지지 않습니다. 사용자 정보 또는 외부에 노출하면 안되는 정보가 노출될 수 있습니다. 따라서 보안 상 치명적인 문제가 될 수 있습니다.\nprivate 필드에는 클래스 내부에서 직접 생성한 객체만을 저장합니다. 혹은 private 메소드를 통해서 값을 저장하도록 합니다.",
  "rule.sast.sw.cpp.2008.example.0.dangerous": "라인 6: public 메소드에서 private 필드를 직접 대입했습니다.",
  "rule.sast.sw.cpp.2008.example.0.safe": "라인 9: private 필드를 대입하는 private 메소드를 호출합니다.",
  "rule.sast.sw.cpp.2008.name": "외부 데이터를 private 필드에 저장",
  "rule.sast.sw.cpp.2009.description": "중요 public 변수 체커는 클래스에서 public으로 선언한 중요한 필드를 검출합니다.\n일반적으로 필드는 private으로 선언합니다. 하지만 특별한 경우에 외부에서 직접 접근할 수 있는 중요한 필드를 public으로 선언하는 경우가 있습니다. 이때 모든 public 필드가 중요한 필드는 아닙니다. 이 체커는 중요한 필드를 판별하기 위해 필드의 이름을 옵션으로 지정할 수 있습니다.\n객체지향 관점에서 보았을 때, 필드는 기본적으로 private으로 선언하는 것이 좋습니다. 이 체커는 예외적으로 public 필드를 선언해야 하는 경우, 중요한 필드는 public으로 선언하지 못하도록 제약을 걸 수 있습니다.\npublic으로 선언한 중요한 필드는 반드시 private으로 선언합니다.",
  "rule.sast.sw.cpp.2009.example.0.dangerous": "라인 4: 중요한 필드를 public으로 선언했습니다.",
  "rule.sast.sw.cpp.2009.example.0.safe": "라인 3: 중요한 필드를 private으로 선언합니다.",
  "rule.sast.sw.cpp.2009.name": "중요 public 변수",
  "rule.sast.sw.cpp.2009.option.variable_name.description": "변수 이름을 정규식으로 작성할 수 있습니다.",
  "rule.sast.sw.cpp.2009.option.variable_name.name": "검출할 변수 이름",
  "rule.sast.sw.cpp.210.description": "정렬된 메모리의 재할당 체커는 aligned_alloc() 함수로 할당된 메모리를 realloc() 함수로 재할당하는 코드를 검출합니다.\naligned_alloc() 함수로 반환하는 메모리 정렬은 realloc() 함수에서 재할당하는 메모리 정렬과 다릅니다. 그러므로 예상하지 못한 동작이 발생할 수 있습니다.\naligned_alloc() 함수로 할당된 메모리를 realloc() 함수로 재할당하지 않도록 합니다.",
  "rule.sast.sw.cpp.210.example.0.dangerous": "라인 5: ptr의 메모리 정렬을 4096바이트로 설정했습니다.\n라인 8: 정렬이 다른 메모리를 ptr에 할당하기 때문에 문제가 발생했습니다.",
  "rule.sast.sw.cpp.210.example.0.safe": "라인 8: 메모리 정렬을 일치시키고 다른 크기의 메모리를 할당합니다. 이후 memcpy() 함수로 이전 메모리 값을 가져와서 문제를 해결합니다.",
  "rule.sast.sw.cpp.210.name": "정렬된 메모리의 재할당",
  "rule.sast.sw.cpp.214.description": "시스템 함수 호출 명령어 삽입 체커는 사용자 입력을 인자로 전달하는 exec 시스템 함수를 호출할 때 해당 인자에 \"--\" 문자열이 포함되지 않는 코드를 검출합니다.\n\"--\" 문자열을 사용하지 않으면 공격자가 임의의 옵션을 통해 명령어 삽입 공격을 수행할 수 있습니다.\nexec 시스템 함수를 호출할 때 사용자 입력을 인자로 전달하면 해당 인자에 \"--\" 문자열을 포함하도록 합니다.",
  "rule.sast.sw.cpp.214.example.0.dangerous": "라인 7: login 명령어에서 getenv() 함수를 호출할 때 \"--\" 문자열을 누락했습니다.",
  "rule.sast.sw.cpp.214.example.0.safe": "라인 6 : \"--\" 문자열을 포함시켜서 다른 명령어의 옵션을 사용하지 못하도록 방지할 수 있습니다. 그러면 다른 명령어의 옵션을 사용하여 \"USER\" 정보에 침투할 수 없게 됩니다.",
  "rule.sast.sw.cpp.214.name": "시스템 함수 호출 명령어 삽입",
  "rule.sast.sw.cpp.216.description": "누락된 널 종료 문자 체커는 수식에서 널로 끝나지 않는 문자열을 생성하거나 사용하게 되는 코드를 검출합니다.\n예를 들어, strncpy(dst, src, size) 함수에서 src의 크기가 size보다 큰 경우 dst의 결과 버퍼가 널로 끝나지 않을 수 있습니다.\n문자가 널로 끝나지 않으면 끝을 알 수 없으므로 표준 문자열 함수의 인자로 안전하게 사용할 수 없습니다. 따라서 예상하지 못한 값이 발생할 수 있습니다.\n수식 내에서 문자열이 널로 끝나도록 충분한 주의를 기울여야 합니다.\n예를 들어, strncpy() 함수에서 두 번째 인자의 크기가 세 번째 인자와 같거나 작아야 합니다.",
  "rule.sast.sw.cpp.216.example.0.dangerous": "라인 3: dst의 크기보다 큰 src를 복사하여 널 문자가 상실되었습니다.",
  "rule.sast.sw.cpp.216.example.0.safe": "라인 4: src의 크기와 널을 검사한 후에 strcpy()로 복사합니다.",
  "rule.sast.sw.cpp.216.name": "누락된 널 종료 문자",
  "rule.sast.sw.cpp.217.description": "제한 없는 입력의 잘못된 사용 체커는 사용자 외부 입력 데이터를 스택 배열에 저장하는 수식을 검출합니다.\n외부 입력 데이터를 스택 배열에 저장하는 수식인 strcat() 함수에서는 사용자 입력 데이터를 두 번째 인자로 사용하고, 지역 변수 배열을 첫 번째 인자로 사용합니다.\n지역 변수로 선언한 배열은 스택 영역에 고정적인 크기로 선언되는 버퍼입니다. 따라서 외부 입력 데이터가 버퍼 크기를 벗어나서 저장되면 버퍼 오버플로우가 발생할 수 있습니다. 버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n외부 입력 데이터를 스택 배열에 저장하는 대신 크기를 지정할 수 있는 동적 할당된 버퍼에 저장하도록 합니다. 그러면 외부 입력 데이터의 크기에 상관없이 버퍼 오버플로우가 발생하지 않고 데이터를 저장할 수 있습니다. 단, 외부 입력 데이터 이상의 크기를 버퍼에 동적으로 할당해야 합니다.",
  "rule.sast.sw.cpp.217.example.0.dangerous": "라인 5: strcat() 함수를 사용하여 외부 입력 데이터인 argv 변수의 내용을 스택 배열인 cmdline 변수에 저장했습니다.",
  "rule.sast.sw.cpp.217.example.0.safe": "라인 9: realloc() 함수를 사용하여 외부 입력 데이터의 크기에 맞춰 동적 할당한 버퍼를 cmdline 변수에 대입합니다.\n라인 13: 외부 입력 데이터를 cmdline에 복사합니다.",
  "rule.sast.sw.cpp.217.name": "제한 없는 입력의 잘못된 사용",
  "rule.sast.sw.cpp.2252.description": "함수의 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2252.example.0.dangerous": "라인 1: buf1 배열을 크기 100으로 선언했습니다.\n라인 2: buf2 배열을 크기 200으로 선언했습니다.\n라인 4: memcpy() 함수 때문에 범위를 벗어난 복사를 수행했습니다. 복사한 범위는 buf2의 크기인 200이지만 복사된 buf1의 크기는 100입니다.",
  "rule.sast.sw.cpp.2252.example.0.safe": "라인 4: 복사한 범위를 buf1의 크기인 100으로 전달합니다.",
  "rule.sast.sw.cpp.2252.name": "함수의 버퍼 오버플로우",
  "rule.sast.sw.cpp.2253.description": "잘못된 조건으로 인한 함수의 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2253.example.0.dangerous": "라인 2: y 배열을 크기 100으로 선언했습니다.\n라인 3: n이 sizeof(y) + 100보다 크면 반환합니다. 즉, n이 sizeof(y)보다 큰 값인 경우에도 라인 4를 실행하게 됩니다.\n라인 4: n의 크기가 y 배열의 크기인 100보다 클 수 있습니다.",
  "rule.sast.sw.cpp.2253.example.0.safe": "라인 3: 라인 4에서 복사하는 범위를 벗어나지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.cpp.2253.name": "잘못된 조건으로 인한 함수의 버퍼 오버플로우",
  "rule.sast.sw.cpp.2254.description": "함수의 필드 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2254.example.0.dangerous": "라인 1: node 구조체를 정의했습니다.\n라인 2: ch 배열 필드를 정의했습니다. 배열의 크기는 100입니다.\n라인 7: x->ch의 인덱스를 200으로 접근했습니다. 이것은 배열의 크기를 벗어납니다.",
  "rule.sast.sw.cpp.2254.example.0.safe": "라인 7: x->ch의 인덱스를 100보다 작은 값으로 접근합니다.",
  "rule.sast.sw.cpp.2254.name": "함수의 필드 버퍼 오버플로우",
  "rule.sast.sw.cpp.2255.description": "잘못된 조건으로 인한 함수의 필드 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2255.example.0.dangerous": "라인 1: node 구조체를 선언했습니다.\n라인 2: node 구조체의 필드인 ch 배열을 크기 100으로 선언했습니다.\n라인 7: n의 값이 300보다 큰 경우 해당 값을 반환했습니다.\n라인 8: n의 크기가 ch 배열의 크기인 100보다 클 수 있습니다.",
  "rule.sast.sw.cpp.2255.example.0.safe": "라인 7: 라인 8에서 복사하는 범위를 벗어나지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.cpp.2255.name": "잘못된 조건으로 인한 함수의 필드 버퍼 오버플로우",
  "rule.sast.sw.cpp.2256.description": "함수의 동적 할당 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2256.example.0.dangerous": "라인 1: buf1 포인터를 크기 100으로 동적 할당했습니다.\n라인 2: buf2 포인터를 크기 200으로 동적 할당했습니다.\n라인 4: memcpy() 함수 때문에 범위를 벗어난 복사를 수행했습니다. 복사한 범위는 buf2의 크기인 200이지만 복사된 buf1의 크기는 100입니다.",
  "rule.sast.sw.cpp.2256.example.0.safe": "라인 4: 복사한 범위를 buf1의 크기인 100으로 전달합니다.",
  "rule.sast.sw.cpp.2256.name": "함수의 동적 할당 버퍼 오버플로우",
  "rule.sast.sw.cpp.2257.description": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽고 쓰는 함수를 호출하거나 인자를 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2257.example.0.dangerous": "라인 2: 변수 y에 100의 크기만큼 동적 할당한 값을 대입했습니다.\n라인 3: n 값이 sizeof(y)에 100을 더한 값보다 큰지를 비교했습니다.\n라인 4: 라인 3의 조건문으로 인해 memcpy()에서 y의 크기보다 큰 값을 복사했으므로 버퍼 오버플로우가 발생할 수 있습니다.",
  "rule.sast.sw.cpp.2257.example.0.safe": "라인 3: 값이 복사되는 버퍼의 범위를 넘지 않도록 조건문을 설정합니다.",
  "rule.sast.sw.cpp.2257.name": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 오버플로우",
  "rule.sast.sw.cpp.2258.description": "함수의 필드 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2258.example.0.dangerous": "라인 8: 라인 13에 의해 memset() 함수의 세 번째 인자 값의 계산 결과는 -10입니다. 음수의 메모리 영역에 접근하게 됩니다.\n라인 12: n 값이 -20이 됩니다.\n라인 13: type_under() 함수를 호출했습니다. 인자값은 -20입니다.",
  "rule.sast.sw.cpp.2258.example.0.safe": "라인 13: n 값이 라인8 에서 음수가 되지 않도록 초기화합니다.",
  "rule.sast.sw.cpp.2258.name": "함수의 필드 버퍼 언더플로우",
  "rule.sast.sw.cpp.2259.description": "잘못된 조건으로 인한 함수의 필드 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2259.example.0.dangerous": "라인 8: n이 0 이상인 경우 해당 값을 반환했습니다.\n라인 9: memset() 함수의 세 번째 인자값이 0보다 작게 됩니다. 음수의 메모리 영역에 접근하게 됩니다.",
  "rule.sast.sw.cpp.2259.example.0.safe": "라인 8: 라인 9에서 n 값이 음수가 되지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.cpp.2259.name": "잘못된 조건으로 인한 함수의 필드 버퍼 언더플로우",
  "rule.sast.sw.cpp.226.description": "누락된 작업 디렉토리 변경 체커는 chroot() 함수로 루트 디렉토리를 변경한 후에 chdir() 함수로 디렉토리를 수정하지 않는 코드를 검출합니다.\nchroot() 함수는 프로그램이 특정 디렉토리를 파일 시스템의 루트 디렉토리로 인지하도록 제한하는 함수입니다. 동시에 프로그램의 작업 디렉토리를 변경하지 않으면 상대 경로를 통해 다른 디렉토리로 접근할 수 있습니다.\nchroot() 함수로 루트 디렉토리를 변경한 후에 chdir() 함수로 이동할 디렉토리를 수정하지 않으면 원하지 않는 결과가 발생할 수 있습니다.",
  "rule.sast.sw.cpp.226.example.0.dangerous": "라인 5: chroot() 함수만 사용되었고, 작업 디렉토리를 변경하지 않았기 때문에 오류로 검출되었습니다.",
  "rule.sast.sw.cpp.226.example.0.safe": "라인 6: chdir(\"/\") 함수를 사용하여 현재 디렉토리를 새로운 루트 디렉토리의 하위 디렉토리로 수정해야 합니다.",
  "rule.sast.sw.cpp.226.name": "누락된 작업 디렉토리 변경",
  "rule.sast.sw.cpp.226.option.function_target_begin_call_function.description": "분석을 시작할 특정 함수 호출을 설정합니다.",
  "rule.sast.sw.cpp.226.option.function_target_begin_call_function.name": "분석을 시작할 특정 함수 호출",
  "rule.sast.sw.cpp.226.option.should_be_call_param.description": "필수 호출 파라미터를 설정합니다.",
  "rule.sast.sw.cpp.226.option.should_be_call_param.name": "필수 호출 파라미터 설정",
  "rule.sast.sw.cpp.2260.description": "함수의 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2260.example.0.dangerous": "라인 3: 라인 7에 의해 memset() 함수의 세 번째 인자 값의 계산 결과는 -10입니다. 음수의 메모리 영역에 접근하게 됩니다.\n라인 7: n 값이 -20이 됩니다.\n라인 8: under_function() 함수를 호출했습니다. 인자값은 -20입니다.",
  "rule.sast.sw.cpp.2260.example.0.safe": "라인 8: n 값이 라인3 에서 음수가 되지 않도록 초기화합니다.",
  "rule.sast.sw.cpp.2260.name": "함수의 버퍼 언더플로우",
  "rule.sast.sw.cpp.2261.description": "잘못된 조건으로 인한 함수의 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2261.example.0.dangerous": "라인 3: n이 0 이상인 경우 해당 값을 반환했습니다.\n라인 4: memset() 함수의 세 번째 인자값이 0보다 작게 됩니다. 음수의 메모리 영역에 접근하게 됩니다.",
  "rule.sast.sw.cpp.2261.example.0.safe": "라인 3: 라인 4에서 n 값이 음수가 되지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.cpp.2261.name": "잘못된 조건으로 인한 함수의 버퍼 언더플로우",
  "rule.sast.sw.cpp.2262.description": "함수의 동적 할당 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2262.example.0.dangerous": "라인 3: 라인 8에 의해 memset() 함수의 세 번째 인자 값이 -10입니다. 음수의 메모리 영역에 접근하게 됩니다.\n라인 8: n 값이 -20입니다.\n라인 9: under_function() 함수를 호출했습니다. 인자값은 -20입니다.",
  "rule.sast.sw.cpp.2262.example.0.safe": "라인 9: 라인 3에서 n 값이 음수가 되지 않도록 초기화합니다.",
  "rule.sast.sw.cpp.2262.name": "함수의 동적 할당 버퍼 언더플로우",
  "rule.sast.sw.cpp.2263.description": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 언더플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 함수 호출을 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 함수 호출 및 인자값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 동적 할당한 메모리입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 함수를 사용할 때 조건을 잘 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.2263.example.0.dangerous": "라인 3: n이 0 이상인 경우 해당 값을 반환했습니다.\n라인 4: memset() 함수의 세 번째 인자값이 0보다 작게 됩니다. 음수의 메모리 영역에 접근하게 됩니다.",
  "rule.sast.sw.cpp.2263.example.0.safe": "라인 3: 라인 4에서 n 값이 음수가 되지 않도록 if 문의 조건을 설정합니다.",
  "rule.sast.sw.cpp.2263.name": "잘못된 조건으로 인한 함수의 동적 할당 버퍼 언더플로우",
  "rule.sast.sw.cpp.227.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.cpp.227.example.0.dangerous": "라인 6: gethostbyaddr() 함수를 사용하여 DNS명을 획득했습니다.\n라인 8: DNS명을 검증하지 않고 Client를 확인하였기 때문에 오류로 검출했습니다.",
  "rule.sast.sw.cpp.227.example.0.safe": "라인 2: DNS명 대신 IP 주소로 Client를 확인합니다.",
  "rule.sast.sw.cpp.227.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.cpp.227.option.dns_decision_function.description": "DNS를 인자로 이용하여 보안 결정을 수행하는 함수 이름을 작성합니다.<br />예시) strcmp",
  "rule.sast.sw.cpp.227.option.dns_decision_function.name": "DNS를 이용한 보안 결정 함수",
  "rule.sast.sw.cpp.227.option.dns_lookup_function.description": "DNS lookup을 수행하는 함수 이름을 작성합니다.<br />예시) gethostbyaddr",
  "rule.sast.sw.cpp.227.option.dns_lookup_function.name": "DNS Lookup 함수",
  "rule.sast.sw.cpp.229.description": "멀티스레드 프로그램 내에서 getlogin 함수 사용 체커는 다중 스레드 환경에서 사용자 계정을 가져오기 위해 getlogin() 함수를 사용하는 코드를 검출합니다.\n옵션에서 다중 스레드 환경에서 사용하지 말아야 할 함수를 설정할 수 있습니다.\ngetlogin() 함수는 호출된 스레드의 사용자 이름을 반환합니다. 해당 함수를 다중 스레드 환경에서 사용하는 경우 사용자 이름이 다른 스레드에 의해 변환되어 반환될 수 있습니다.\n다중 스레드 환경에서 getlogin() 함수를 사용하지 않습니다.",
  "rule.sast.sw.cpp.229.example.0.dangerous": "라인 3: 다른 스레드에 의해 반환 값이 변경될 수 있는 getlogin() 함수를 사용했습니다.",
  "rule.sast.sw.cpp.229.example.0.safe": "라인 4: 다중 스레드 환경에서 안전한 getlogin_r() 함수를 사용합니다.",
  "rule.sast.sw.cpp.229.name": "멀티스레드 프로그램 내에서 getlogin 함수 사용",
  "rule.sast.sw.cpp.229.option.function_should_not_be_used.description": "금지 함수를 설정합니다.",
  "rule.sast.sw.cpp.229.option.function_should_not_be_used.name": "사용 금지 함수",
  "rule.sast.sw.cpp.230.description": "하드코드된 비밀번호 체커는 하드코딩된 비밀번호가 SQLConnect() 함수에 포함되어 있는 경우를 검출합니다.\n옵션에서 하드코딩된 비밀번호 형식을 지정할 수 있습니다.\n소스 내부에 작성된 비밀번호를 사용하여 외부와 통신하거나 내부에서 인증 받는 동작은 위험합니다. 관리자는 공격자가 시스템에 접근하여 정보를 유출하는 행위를 발견하기 어렵습니다. 뿐만 아니라 비밀번호를 변경하여 재배포하는 작업도 수행해야 합니다.\n비밀번호를 SQLConnect() 함수 내부에 작성하지 않도록 합니다.",
  "rule.sast.sw.cpp.230.example.0.dangerous": "라인 6: 하드코딩된 \"pwd\"가 포함되므로 오류로 검출했습니다.",
  "rule.sast.sw.cpp.230.example.0.safe": "라인 6: 암호를 외부에서 취득하도록 변경해하고, 암호화를 사용하여 관리해야 합니다.",
  "rule.sast.sw.cpp.230.name": "하드코드된 비밀번호",
  "rule.sast.sw.cpp.230.option.call_param_target_in_function.description": "암호가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수명) 형식으로 작성합니다.<br />예시) 6:SQLConnect",
  "rule.sast.sw.cpp.230.option.call_param_target_in_function.name": "대상 함수 및 인자",
  "rule.sast.sw.cpp.230.option.password_variable_name.description": "비밀번호로 사용되는 변수 이름을 작성합니다.<br />예시) password",
  "rule.sast.sw.cpp.230.option.password_variable_name.name": "비밀번호 변수 이름",
  "rule.sast.sw.cpp.231.description": "하드코드된 사용자 이름 체커는 하드코딩된 사용자 계정이 SQLConnect() 함수에 포함되어 있는 코드를 검출합니다.\n소스 내부에 작성된 사용자 계정을 사용하여 외부와 통신하거나 내부에서 인증 받는 동작은 위험합니다. 관리자는 공격자가 시스템에 접근하여 정보를 유출하는 행위를 발견하기 어렵습니다. 뿐만 아니라 사용자 계정이나 비밀번호를 변경하여 재배포하는 작업도 수행해야 합니다.\n사용자 계정을 SQLConnect() 함수 내부에 작성하지 않도록 합니다.",
  "rule.sast.sw.cpp.231.example.0.dangerous": "라인 9: 하드코딩된 사용자 계정을 검증 없이 사용했습니다.",
  "rule.sast.sw.cpp.231.example.0.safe": "라인 9: 사용자 계정과 암호를 검증한 후에 사용해야 합니다.",
  "rule.sast.sw.cpp.231.name": "하드코드된 사용자 이름",
  "rule.sast.sw.cpp.231.option.call_param_target_in_function.description": "검출 대상 함수와 인자의 인덱스를 적습니다. 예) SQLConnect의 4번째 인자 = 4:SQLConnect",
  "rule.sast.sw.cpp.231.option.call_param_target_in_function.name": "대상 함수와 인자 인덱스",
  "rule.sast.sw.cpp.232.description": "취약한 암호화 알고리즘 체커는 단순한 암호화 알고리즘으로 비밀번호를 암호화하는 코드를 검출합니다.\n구체적으로, SQLConnect() 함수의 6번째 인자로 전달되는 비밀번호에서 취약한 암호화 알고리즘을 사용하는 경우입니다. 권장하는 암호화 모듈은 RSA_private_decrypt() 함수 혹은 RSA_private_decrypt_assign() 함수입니다.\n지나치게 간단한 암호화 함수를 사용할 경우 비밀번호가 노출될 가능성이 있습니다.\n취약한 암호화 알고리즘으로 비밀번호를 암호화하지 않도록 합니다.",
  "rule.sast.sw.cpp.232.example.0.dangerous": "라인 9: 암호화가 아닌 단순 인코딩 알고리즘을 사용하여 비밀번호를 암호화했습니다.",
  "rule.sast.sw.cpp.232.example.0.safe": "라인 7: 취약한 암호화 알고리즘 대신 RSA 암호화 알고리즘을 사용합니다.",
  "rule.sast.sw.cpp.232.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.cpp.232.option.call_param_target_in_function.description": "키가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 이름) 형식으로 작성합니다.<br />예시) 1:RSA_generate_key",
  "rule.sast.sw.cpp.232.option.call_param_target_in_function.name": "대상 함수 및 인자",
  "rule.sast.sw.cpp.232.option.need_function.description": "권장 암호화 모듈을 설정합니다. <br />방법) [param index]:[function name]  <br />param index : -1  - assign      ex) passwd = function();<br />0   - all         parameter가 1인 경우만 사용가능<br />1~  - index       ex) function(test, passwd);",
  "rule.sast.sw.cpp.232.option.need_function.name": "권장 암호화 모듈",
  "rule.sast.sw.cpp.233.description": "안전하지 않은 권한 제어 체커는 seteuid() 함수를 사용하여 사용자에게 높은 권한을 부여하는 코드를 검출합니다.\n사용자가 상위 권한을 갖게 되면 정보가 유출될 가능성이 발생합니다.\nseteuid() 함수를 사용하여 권한을 부여하지 않도록 합니다.",
  "rule.sast.sw.cpp.233.example.0.dangerous": "라인 4: seteuid(0) 함수를 호출하여 최상위 권한을 획득하므로 오류로 검출되었습니다.\n라인 7: 현재 프로세스의 유효 사용자 UID를 획득하여 권한을 떨어뜨립니다.",
  "rule.sast.sw.cpp.233.example.0.safe": "라인 4: 가능한 사용자 권한을 높이지 않고 접근 가능한 리소스만 사용하도록 합니다.",
  "rule.sast.sw.cpp.233.name": "안전하지 않은 권한 제어",
  "rule.sast.sw.cpp.233.option.call_param_target_in_function.description": "호출 함수와 필수 파라미터를 설정합니다.",
  "rule.sast.sw.cpp.233.option.call_param_target_in_function.name": "호출 함수와 필수 파라미터 설정",
  "rule.sast.sw.cpp.234.description": "안전하지 않은 권한 초기화 체커는 높은 권한을 부여하여 작업을 수행한 후에 해당 권한을 회수하지 않는 코드를 검출합니다.\n분석 대상 함수 및 함수 사용 순서를 옵션에 지정할 수 있습니다.\n작업을 수행한 후에 작업에 필요한 권한을 회수하지 않으면 공격자가 쉽게 접근할 수 있을 뿐만 아니라 사용자가 권한을 오용할 수도 있습니다.\n작업을 위해 상승된 권한은 작업을 수행한 후에 회수되어야 합니다.",
  "rule.sast.sw.cpp.234.example.0.dangerous": "라인 4: 최상위 권한을 부여하고 작업 후에 권한을 회수하지 않았으므로 오류로 검출되었습니다.",
  "rule.sast.sw.cpp.234.example.0.safe": "라인 8: chroot() 함수를 사용한 후에 seteuid() 함수를 호출하여 권한을 회수합니다.",
  "rule.sast.sw.cpp.234.name": "안전하지 않은 권한 초기화",
  "rule.sast.sw.cpp.234.option.function_target.description": "대상 함수를 설정합니다.",
  "rule.sast.sw.cpp.234.option.function_target.name": "대상 함수",
  "rule.sast.sw.cpp.234.option.function_used_order.description": "함수 사용 순서를 설정합니다.",
  "rule.sast.sw.cpp.234.option.function_used_order.name": "함수 사용 순서",
  "rule.sast.sw.cpp.235.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키를 사용하는 코드를 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 사용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.cpp.235.example.0.dangerous": "라인 4: 키의 길이가 512비트로 짧기 때문에 오류로 검출했습니다.",
  "rule.sast.sw.cpp.235.example.0.safe": "라인 4: 키의 길이를 최소한 2048비트 이상으로 설정하여 사용합니다.",
  "rule.sast.sw.cpp.235.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.cpp.235.option.call_param_target_in_function.description": "키가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수 이름) 형식으로 작성합니다.<br />예시) 1:RSA_generate_key",
  "rule.sast.sw.cpp.235.option.call_param_target_in_function.name": "대상 함수 및 인자",
  "rule.sast.sw.cpp.235.option.min_value.description": "암호화 알고리즘 사용 시 허용할 최소 키 길이를 입력합니다.<br />예시) 1024",
  "rule.sast.sw.cpp.235.option.min_value.name": "최소 키 길이",
  "rule.sast.sw.cpp.236.description": "부적절한 RSA 패딩 체커는 RSA 알고리즘을 사용할 때 부적절한 패딩 방식을 사용하는 코드를 검출합니다.\n패딩 옵션에서 RSA를 패딩 없이 사용하는 RSA_NO_PADDING을 전달하지 않도록 합니다.\n적절한 RSA 패딩을 사용할 경우 더 안전한 암호화가 수행되기 때문에 권장 사항에 맞춰서 일정 수준 이상의 패딩을 사용해야 합니다.\nOAEP 방식을 사용하는 것이 좋습니다.",
  "rule.sast.sw.cpp.236.example.0.dangerous": "라인 4: 보안에 취약한 RSA_NO_PADDING을 사용했기 때문에 오류로 검출했습니다.",
  "rule.sast.sw.cpp.236.example.0.safe": "라인 4: RSA_NO_PADDING 대신 다른 인자를 사용하여 암호화를 강화해야 합니다.",
  "rule.sast.sw.cpp.236.name": "부적절한 RSA 패딩",
  "rule.sast.sw.cpp.236.option.call_param_should_not_be_name.description": "함수 호출 시 사용하지 말아야 할 매크로를 설정합니다.",
  "rule.sast.sw.cpp.236.option.call_param_should_not_be_name.name": "사용하지 말아야 할 매크로",
  "rule.sast.sw.cpp.236.option.call_param_target_in_function.description": "키가 사용되는 대상 함수 를 작성합니다.",
  "rule.sast.sw.cpp.236.option.call_param_target_in_function.name": "대상 함수",
  "rule.sast.sw.cpp.237.description": "하드코드된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.\n소스 코드에서 고정된 솔트 값을 사용하는 경우 모든 개발자에게 솔트가 노출될 뿐만 아니라 일단 애플리케이션을 운영하기 시작하면 수정하기가 어려워집니다. 또한 공격자가 솔트 값을 아는 경우 애플리케이션에 대한 \"레인보우 테이블\"을 계산하여 해싱된 값을 더 쉽게 확인할 수 있습니다.\n암호학적으로 안전한 방식으로 무작위로 생성되어 예측하기 어려운 솔트를 사용하거나 솔트를 외부 입력을 통해 전달하는 것이 좋습니다.",
  "rule.sast.sw.cpp.237.example.0.dangerous": "라인 4: 하드코딩된 솔트 xp를 사용했습니다.",
  "rule.sast.sw.cpp.237.example.0.safe": "라인 3: 솔트 값을 매번 변경할 수 있도록 변경해야 합니다.",
  "rule.sast.sw.cpp.237.name": "하드코드된 솔트",
  "rule.sast.sw.cpp.237.option.call_param_target_in_function.description": "Salt가 사용되는 대상 함수 및 인자 위치를 작성합니다. (인자 위치):(함수명) 형식으로 작성합니다.<br />예시) 2:crypt",
  "rule.sast.sw.cpp.237.option.call_param_target_in_function.name": "대상 함수 및 인자",
  "rule.sast.sw.cpp.237.option.excluded_expr.description": "제외할 Salt값의 문자열을 작성합니다. <br />예시) safe",
  "rule.sast.sw.cpp.237.option.excluded_expr.name": "제외할 Salt값 문자열",
  "rule.sast.sw.cpp.237.option.target_expr.description": "검출할 Salt값의 문자열을 작성합니다. 값이 입력되지 않을 경우 모든 상수 Salt에 대해서 오류를 검출합니다.<br />예시) salt",
  "rule.sast.sw.cpp.237.option.target_expr.name": "검출할 Salt값 문자열",
  "rule.sast.sw.cpp.238.description": "취약한 비밀번호 암호화 알고리즘 체커는 안전하지 않은 암호화 알고리즘을 사용하는 코드를 검출합니다.\n해당 오류는 다음과 같은 취약한 암호화 알고리즘을 사용하는 경우에 발생합니다. RC2, RC4, RC5, RC6, MD4, MD5, SHA1, DES.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 암호화 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.cpp.238.example.0.dangerous": "라인 4: EVP_des_ecb() 함수는 취약한 DES 알고리즘을 사용했습니다.",
  "rule.sast.sw.cpp.238.example.0.safe": "라인 4: 안전한 3-DES, AES 암호화 알고리즘을 사용합니다.",
  "rule.sast.sw.cpp.238.name": "취약한 비밀번호 암호화 알고리즘",
  "rule.sast.sw.cpp.238.option.crypt_string.description": "암호화를 나타내는 문자열을 입력합니다.<br />예시) crypt.*",
  "rule.sast.sw.cpp.238.option.crypt_string.name": "암호화 의미 문자열",
  "rule.sast.sw.cpp.238.option.decrypt_string.description": "복호화를 나타내는 문자열을 입력합니다.<br />예시) decrypt.*",
  "rule.sast.sw.cpp.238.option.decrypt_string.name": "복호화 의미 문자열",
  "rule.sast.sw.cpp.238.option.risky_algorithm.description": "위험한 암호화 알고리즘 함수 이름을 작성합니다.<br />예시) EVP_des_ecb",
  "rule.sast.sw.cpp.238.option.risky_algorithm.name": "위험한 암호화 알고리즘",
  "rule.sast.sw.cpp.238.option.risky_algorithm_id.description": "취약한 암호화 알고리즘 ID를 입력합니다.<br />예시) DES",
  "rule.sast.sw.cpp.238.option.risky_algorithm_id.name": "취약한 암호화 알고리즘 ID",
  "rule.sast.sw.cpp.238.option.safe_algorithm.description": "안전한 암호화 알고리즘 함수 이름을 작성합니다.<br />예시) EVP_aes_128_cbc",
  "rule.sast.sw.cpp.238.option.safe_algorithm.name": "안전한 암호화 알고리즘",
  "rule.sast.sw.cpp.239.description": "동일 포트에 여러 개의 바인딩 체커는 여러 개의 서비스에서 하나의 포트를 사용하는 코드를 검출합니다.\n다수의 서비스가 하나의 포트를 사용하는 경우 전달되는 패킷을 도난 당하거나 도용 당할 가능성이 있습니다.\n여러 서비스가 동일한 포트를 사용하지 않도록 합니다.",
  "rule.sast.sw.cpp.239.example.0.dangerous": "라인 9: 소켓 옵션에서 SO_REUSSEADDR을 사용하도록 설정했습니다.\n라인 12: 서버 주소 값으로 INADDR_ANY을 사용했습니다.\n라인 14: SO_REUSSEADDR, INADDR_ANY을 사용하는 경우 여러 개의 소켓이 바인딩될 수 있습니다.",
  "rule.sast.sw.cpp.239.example.0.safe": "라인 9: 소켓 옵션에서 SO_REUSEADDR과 INADDR_ANY를 같이 사용하지 않도록 합니다.",
  "rule.sast.sw.cpp.239.name": "동일 포트에 여러 개의 바인딩",
  "rule.sast.sw.cpp.240.description": "중요한 리소스에 대한 잘못된 권한 할당 체커는 사용자에게 읽기 또는 수정 권한을 잘못 부여하는 코드를 검출합니다.\n사용자 권한을 잘못 부여하는 경우 시스템 정보가 노출되거나 권한의 오용으로 인해 시스템이 잘못 동작할 수 있습니다.\n권한을 부여하는 도중 시스템 정보가 노출되지 않도록 주의해야 합니다.",
  "rule.sast.sw.cpp.240.example.0.dangerous": "라인 1: umask(0)를 사용하여 모든 사용자에게 읽기 및 쓰기 권한을 부여했습니다.",
  "rule.sast.sw.cpp.240.example.0.safe": "라인 1: umask()를 사용하여 권한을 설정할 때 올바른 권한을 설정하도록 합니다.",
  "rule.sast.sw.cpp.240.name": "중요한 리소스에 대한 잘못된 권한 할당",
  "rule.sast.sw.cpp.240.option.access_function.description": "민감한 정보에 접근하는 함수 이름을 작성합니다.<br />예시) open",
  "rule.sast.sw.cpp.240.option.access_function.name": "민감한 정보 접근 함수",
  "rule.sast.sw.cpp.242.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 해당 취약점으로 인해 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.cpp.242.example.0.dangerous": "라인 8: SQL 쿼리문을 처리하지 않고 그대로 사용했습니다. \"name' OR 'a'='a\" 와 같은 문자열을 입력하는 경우 WHERE 절은 항상 true입니다.",
  "rule.sast.sw.cpp.242.example.0.safe": "라인 6: SQL 쿼리문에 변형이 발생하지 않도록 처리 과정을 거쳐서 삽입하도록 합니다.\n라인 7: 라인 6과 같습니다.",
  "rule.sast.sw.cpp.242.name": "SQL 삽입",
  "rule.sast.sw.cpp.242.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) makeSecureString",
  "rule.sast.sw.cpp.242.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.cpp.242.option.param_on_sql_injection.description": "모든 인자가 위험한 값을 가질 수 있다고 여깁니다. 따라서, 많은 이슈가 발생할 수 있습니다.",
  "rule.sast.sw.cpp.242.option.param_on_sql_injection.name": "인자는 모두 위험",
  "rule.sast.sw.cpp.242.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) SQLExecDirect",
  "rule.sast.sw.cpp.242.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.242.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.242.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.243.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자(\", /, , .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.cpp.243.example.0.dangerous": "라인 2: \"reportName\" 파일 이름이 외부 입력에 의해 결정되었습니다. 따라서 임의의 파일에서 작업할 수 있습니다.",
  "rule.sast.sw.cpp.243.example.0.safe": "라인 3: 외부 입력값으로 파일 경로를 설정하지 않도록 합니다.",
  "rule.sast.sw.cpp.243.name": "경로 조작",
  "rule.sast.sw.cpp.243.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) unlink",
  "rule.sast.sw.cpp.243.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.243.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.243.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.244.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n예를 들어, strpbrk() 함수를 사용하여 추가적인 검증 없이 system 명령어를 입력하는 경우입니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.cpp.244.example.0.dangerous": "라인 6: 외부로부터 명령어를 전달 받았습니다.\n라인 10: 외부에서 받은 명령어를 적절한 처리 없이 사용했습니다. 예를 들어, \"file_name.txt; rm -rf\" 와 같은 명령어를 삽입하는 경우 해당 디렉토리에 있는 모든 파일이 삭제될 위험이 있습니다.",
  "rule.sast.sw.cpp.244.example.0.safe": "라인 7: 명령어에 삽입 공격에 사용되는 위험한 문자가 포함되어 있는지 strpbrk() 함수로 확인하고 해당 명령어를 사용합니다.",
  "rule.sast.sw.cpp.244.name": "명령어 삽입",
  "rule.sast.sw.cpp.244.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) strpbrk",
  "rule.sast.sw.cpp.244.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.cpp.244.option.sink_call.description": "민감한 정보가 포함되었을 경우 위험한 함수 명을 작성합니다.<br />예시) system",
  "rule.sast.sw.cpp.244.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.244.option.sink_call_any.description": "소켓에서 민감한 정보가 올 경우 위험한 함수 이름을 작성합니다.<br />예시) execl",
  "rule.sast.sw.cpp.244.option.sink_call_any.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.244.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.244.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.245.description": "LDAP 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 LDAP 쿼리문을 검출합니다.\n공격자가 외부 입력을 통해서 의도하지 않은 LDAP(Lightweight Directory Access Protocol) 명령어를 수행할 수 있습니다. 즉, 웹 애플리케이션이 사용자가 제공한 입력을 올바르게 처리하지 못하면 공격자가 LDAP 명령문의 구성을 바꿀 수 있습니다. 이로 인해 프로세스가 명령을 실행한 컴포넌트와 동일한 권한을 가지고 동작하게 됩니다.\nDN(Distinguished Name)과 필터에 사용되는 사용자 입력값에는 특수문자가 포함되지 않도록 특수문자를 제거해야 합니다. 만약 특수문자를 허용해야 하는 경우라면 특수문자(=, +, <, >, #, ;, \\ 등 )가 실행 명령이 아닌 일반문자로 인식되도록 처리합니다.",
  "rule.sast.sw.cpp.245.example.0.dangerous": "라인 2: 적절한 처리 없이 LDAP 쿼리문을 생성했습니다. '|' 과 같은 문자열을 사용하는 경우 모든 항목을 볼 수 있습니다.",
  "rule.sast.sw.cpp.245.example.0.safe": "라인 2: 외부 입력이 아닌 LDAP 쿼리문을 사용합니다.",
  "rule.sast.sw.cpp.245.name": "LDAP 삽입",
  "rule.sast.sw.cpp.245.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) ldap_search_ext_s",
  "rule.sast.sw.cpp.245.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.245.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.245.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.246.description": "자원 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스 식별자를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 대한 접근 혹은 식별을 허용할 경우에 입력값 조작을 통해 시스템이 보호하는 리소스에 임의로 접근할 수 있습니다. 리소스 삽입 약점을 사용하여 공격자는 리소스의 수정/삭제, 시스템 정보 누출, 시스템 리소스 간 충돌로 인한 서비스 장애 등을 발생시킬 수 있습니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 리스트에서 선택되도록 합니다.",
  "rule.sast.sw.cpp.246.example.0.dangerous": "라인 2: getenv() 함수를 통해 외부에서 포트 번호를 전달 받았습니다. 임의적인 포트 번호를 사용하여 소켓을 생성할 수 있습니다.\n라인 6: strncpy() 함수를 통해 buf에 외부 포트 번호를 복사했습니다.\n라인 7: connect() 함수에서 buf 값을 사용했습니다.",
  "rule.sast.sw.cpp.246.example.0.safe": "라인 9: 지정된 포트 번호를 사용하도록 합니다.",
  "rule.sast.sw.cpp.246.name": "자원 삽입",
  "rule.sast.sw.cpp.246.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) connect",
  "rule.sast.sw.cpp.246.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.246.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.246.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.247.description": "시스템 혹은 구성 설정의 외부 제어 체커는 적절한 처리 없이 외부 입력값을 sethostid() 함수의 인자로 직접 사용하는 코드를 검출합니다.\n외부에서 시스템 설정을 변경하는 경우 시스템의 오작동 또는 시스템 데이터의 악의적인 삭제 등의 결과를 일으킬 수 있습니다.\nsethostid() 함수의 인자에 외부 입력값을 직접 사용하지 않도록 합니다.",
  "rule.sast.sw.cpp.247.example.0.dangerous": "라인 2: sethostid() 함수를 사용하여 현재 시스템의 호스트 ID를 변경했습니다. 임의의 사용자가 호스트 ID를 이용하여 시스템의 설정을 변경할 수 있습니다.",
  "rule.sast.sw.cpp.247.example.0.safe": "라인 2: sethostid() 함수의 인자에 외부 입력값을 직접 사용하지 않도록 합니다.",
  "rule.sast.sw.cpp.247.name": "시스템 혹은 구성 설정의 외부 제어",
  "rule.sast.sw.cpp.247.option.sink_call.description": "민감한 정보를 포함할 경우 위험한 함수 이름을 작성합니다.<br />예시) sethostid",
  "rule.sast.sw.cpp.247.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.247.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.247.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.248.description": "안전하지 않은 직접 객체 참조 체커는 외부 입력 경로를 사용하여 라이브러리를 불러오거나 명령을 실행하는 코드를 검출합니다.\n외부 입력 경로로 라이브러리를 사용하는 경우 잘못된 라이브러리를 불러오거나 악의적인 명령을 수행할 가능성이 있습니다.\n외부 입력 경로로 라이브러리를 불러오지 않도록 합니다.",
  "rule.sast.sw.cpp.248.example.0.dangerous": "라인 3: getenv() 함수에서 외부 입력 경로를 통해 라이브러리를 사용합니다.",
  "rule.sast.sw.cpp.248.example.0.safe": "라인 3: 절대 경로를 통해 라이브러리를 사용합니다.",
  "rule.sast.sw.cpp.248.name": "안전하지 않은 직접 객체 참조",
  "rule.sast.sw.cpp.248.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) dlopen",
  "rule.sast.sw.cpp.248.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.248.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.248.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.251.description": "주석문 안의 비밀번호 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.cpp.251.example.0.dangerous": "라인 1: 주석문에 비밀번호 정보가 password 라고 명시되어 있기 때문에 오류로 검출했습니다.\n라인 2: 주석문에 비밀번호 정보가 passwd 라고 명시되어 있기 때문에 오류로 검출했습니다.",
  "rule.sast.sw.cpp.251.example.0.safe": "라인 1: 주석문에 비밀번호를 작성하지 않도록 합니다.",
  "rule.sast.sw.cpp.251.name": "주석문 안의 비밀번호",
  "rule.sast.sw.cpp.251.option.allowed_max_word_length.description": "단일 단어의 최대 길이를 작성합니다.<br />예시) 40",
  "rule.sast.sw.cpp.251.option.allowed_max_word_length.name": "허용할 최대 연속 단어 길이",
  "rule.sast.sw.cpp.251.option.check_header.description": "옵션을 사용하는 경우 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.sast.sw.cpp.251.option.check_header.name": "헤더 파일 분석 여부",
  "rule.sast.sw.cpp.251.option.check_password_only.description": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "rule.sast.sw.cpp.251.option.check_password_only.name": "비밀번호 문자열 단독 검출 여부",
  "rule.sast.sw.cpp.251.option.consecutive_word_expr.description": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.<br />예시) [a-zA-Z0-9]+",
  "rule.sast.sw.cpp.251.option.consecutive_word_expr.name": "검출할 연속 단어 형식",
  "rule.sast.sw.cpp.251.option.fixed_key_length.description": "고정 길이 문자열을 입력합니다.",
  "rule.sast.sw.cpp.251.option.fixed_key_length.name": "고정 길이",
  "rule.sast.sw.cpp.251.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.cpp.251.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.cpp.251.option.using_fixed_key_length.description": "옵션을 사용하는 경우, 고정 길이의 문자열을 검출합니다.",
  "rule.sast.sw.cpp.251.option.using_fixed_key_length.name": "고정 길이 검출 여부",
  "rule.sast.sw.cpp.252.description": "부적절한 인증 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.\n사용자 인증을 위한 별도의 작업을 수행하지 않고 익명 바인딩을 허용하면 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.\n사용자 이름과 비밀번호를 명시하여 LDAP 바인딩을 수행합니다.",
  "rule.sast.sw.cpp.252.example.0.dangerous": "라인 8: 사용자 인증 없이 LDAP 검색을 시도했습니다. 사용자의 로그인 정보와 인자로 전달되는 username을 비교하는 검증 과정이 없기 때문에 타인의 정보를 볼 수 있습니다.",
  "rule.sast.sw.cpp.252.example.0.safe": "라인 7: LDAP을 검색하기 전에 username을 인증하고, username이 로그인 정보와 일치하는지 검증합니다.",
  "rule.sast.sw.cpp.252.name": "부적절한 인증",
  "rule.sast.sw.cpp.252.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 입력합니다.<br />예시) strcmp",
  "rule.sast.sw.cpp.252.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.cpp.252.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) system",
  "rule.sast.sw.cpp.252.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.252.option.source_variable.description": "민감한 정보를 포함한 변수 이름을 작성합니다.<br />예시) username",
  "rule.sast.sw.cpp.252.option.source_variable.name": "민감한 정보 변수",
  "rule.sast.sw.cpp.253.description": "비밀번호의 일반 텍스트 저장 체커는 비밀번호를 암호화하지 않고 저장하는 코드를 검출합니다.\n사용자 및 시스템 중요 정보를 처리하는 과정에서 해당 정보를 평문으로 저장하는 경우 공격자에게 해당 정보가 노출될 수 있습니다.\n비밀번호는 높은 수준의 암호화 알고리즘을 통해 생성되고 관리되어야 합니다.",
  "rule.sast.sw.cpp.253.example.0.dangerous": "라인 9: 파일에서 비밀번호를 읽어 옵니다.\n라인 19: DB에 접속할 때 비밀번호를 암호화하지 않은 채로 직접 연결하고 있습니다.",
  "rule.sast.sw.cpp.253.example.0.safe": "라인 12: 외부에서 입력한 비밀번호를 검증한 후에 사용해야 합니다.\n라인 20: 비밀번호를 검증한 후에 연결합니다.",
  "rule.sast.sw.cpp.253.name": "비밀번호의 일반 텍스트 저장",
  "rule.sast.sw.cpp.253.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) verify",
  "rule.sast.sw.cpp.253.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.cpp.253.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) SQLConnect",
  "rule.sast.sw.cpp.253.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.253.option.source_variable.description": "민감한 정보를 포함한 변수 이름을 작성합니다.<br />예시) passwd",
  "rule.sast.sw.cpp.253.option.source_variable.name": "민감한 정보 변수",
  "rule.sast.sw.cpp.254.description": "하드코드된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역산하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코딩하여 코드를 작성하는 방법도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코딩하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "rule.sast.sw.cpp.254.example.0.dangerous": "라인 12: 암호화된 키를 상수로 직접 비교하고 있습니다.",
  "rule.sast.sw.cpp.254.example.0.safe": "라인 16: 암호화되어 저장된 암호를 적절한 검증 과정을 거쳐서 얻어오는 별도의 모듈을 작성하고, 이를 암호화된 스트링과 비교하도록 코드가 작성되어야 합니다.",
  "rule.sast.sw.cpp.254.name": "하드코드된 암호화 키",
  "rule.sast.sw.cpp.254.option.sink_call_with_constant.description": "이 목록에 있는 함수들의 인자로 민감한 정보가 들어오고 하나의 인자라도 상수 값을 가지면 위험하다고 여깁니다.<br />예시) strcmp",
  "rule.sast.sw.cpp.254.option.sink_call_with_constant.name": "상수 인자를 갖는 민감한 정보 노출 함수",
  "rule.sast.sw.cpp.254.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />예시) crypt",
  "rule.sast.sw.cpp.254.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.254.option.source_variable.description": "민감한 정보가 포함된 변수 이름을 작성합니다.<br />예시) cryptokey*",
  "rule.sast.sw.cpp.254.option.source_variable.name": "민감한 정보 변수",
  "rule.sast.sw.cpp.2832.description": "오염된 값의 위험한 사용 체커는 오염된 값을 검사 없이 위험한 방식으로 사용한 경우 이슈를 검출합니다.\n이 때 위험한 방식이란 오염된 값을 위험한 함수의 인자로 사용하거나 배열의 인덱스, 반복문의 제어 변수로 사용하는 것 등을 의미합니다. 단 위험한 함수의 인자로 포인터 타입을 사용할 경우에는, 객체 자체가 오염된 것은 문제되지 않으며 포인터 타입의 오프셋이 오염된 경우를 위험한 사용 방식으로 간주합니다.\n오염된 값을 위험한 방식으로 사용할 경우 보안상 취약점이 발생하거나 프로그램이 정상적으로 동작하지 않을 수 있습니다.\n오염된 값을 위험한 방식으로 사용하지 않도록 합니다. 구체적으로는 오염된 값의 범위를 검사하거나 적절한 필터 함수를 호출하여 값을 안전하게 만든 뒤 사용하도록 합니다.",
  "rule.sast.sw.cpp.2832.example.0.dangerous": "라인 16: 오염된 값을 위험한 방식으로 사용했습니다.",
  "rule.sast.sw.cpp.2832.example.0.safe": "라인 15: 오염된 값을 안전하게 검사한 뒤 사용하도록 합니다.",
  "rule.sast.sw.cpp.2832.name": "오염된 값의 위험한 사용",
  "rule.sast.sw.cpp.2832.option.clear_call.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.",
  "rule.sast.sw.cpp.2832.option.clear_call.name": "외부 정보 필터 함수",
  "rule.sast.sw.cpp.2832.option.clear_compare.description": "조건문에서 정수값의 범위 비교로 외부 정보를 필터하는지 여부를 결정합니다.",
  "rule.sast.sw.cpp.2832.option.clear_compare.name": "비교로 외부 정보 필터 검사",
  "rule.sast.sw.cpp.2832.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.cpp.2832.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.cpp.293.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.sw.cpp.293.example.0.dangerous": "라인 6: catch 문에 적절한 예외 처리 구문이 없어서 오류로 검출했습니다.",
  "rule.sast.sw.cpp.293.example.0.safe": "라인 6: catch 문에 적절한 예외 처리 구문이 삽입되어야 합니다.",
  "rule.sast.sw.cpp.293.name": "빈 catch 블록",
  "rule.sast.sw.cpp.2936.description": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드하도록 허용하는 코드를 검출합니다.\n서버 측에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드되어 해당 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부 명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있습니다.\n화이트리스트 방식으로 허용된 확장자만 업로드하도록 허용합니다. 업로드되는 파일을 저장할 때에는 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장합니다.",
  "rule.sast.sw.cpp.2936.example.0.dangerous": "라인 5: \"reportName\" 파일 이름이 외부 입력에 의해 결정되었습니다. 따라서 임의의 파일에서 작업할 수 있습니다.",
  "rule.sast.sw.cpp.2936.example.0.safe": "라인 5: 외부 입력값으로 파일 경로를 설정하지 않도록 합니다.",
  "rule.sast.sw.cpp.2936.name": "제한되지 않은 파일 업로드",
  "rule.sast.sw.cpp.2936.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.cpp.2936.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.cpp.2936.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.2936.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.2937.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.cpp.2937.example.0.dangerous": "라인 5: Qstring 타입인 변수 link가 외부 입력에 의해 결정됩니다.\n라인 6: 변수 link에 대해 별도의 검사 없이 url로 사용되고 있습니다.",
  "rule.sast.sw.cpp.2937.example.0.safe": "라인 10: urlchecker() 메서드를 통해서 변수 link를 검사합니다.\n라인 21: 검증된 link를 통해 url을 엽니다.",
  "rule.sast.sw.cpp.2937.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.cpp.2937.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) urlchecker",
  "rule.sast.sw.cpp.2937.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.cpp.2937.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.cpp.2937.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.cpp.2937.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.2937.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.2938.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성할 때 사용되는 외부 입력값에 대해 적절한 검증 절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 됩니다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증 절차를 우회할 수 있습니다.\n예를 들어, XQuery 문은 `username='local_user1'`과 같이 작은 따옴표를 사용하여 username과 비교할 문자열을 구분합니다. 만약 외부에서 비교를 위해 삽입된 문자열에 작은 따옴표가 허용되는 경우 다음과 같은 문자열을 입력할 수 있습니다.\n`'admin' or ''=''`\n위 문자열을 사용한 쿼리의 조건문은 다음과 같습니다.\n`username = 'admin' or ''=''`\n`''=''`은 언제나 true이므로 username 비교 자체를 우회할 수 있습니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "rule.sast.sw.cpp.2938.example.0.dangerous": "라인 7: 외부에서 입력된 name, id 값으로 쿼리가 준비됩니다.\n라인 10: 외부에서 입력된 name, id, salary 값으로 쿼리가 실행됩니다.",
  "rule.sast.sw.cpp.2938.example.0.safe": "라인 5: urlchecker() 메서드를 통해서 외부 입력 값을 검사합니다.\n라인 20: 검사한 외부 입력 값으로 쿼리를 준비합니다.\n라인 23: 검사한 외부 입력 값으로 쿼리를 실행합니다.",
  "rule.sast.sw.cpp.2938.name": "XQuery 삽입",
  "rule.sast.sw.cpp.2938.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) urlchecker",
  "rule.sast.sw.cpp.2938.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.cpp.2938.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.cpp.2938.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.cpp.2938.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.2938.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.2939.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\n외부 입력값을 적절한 검사 과정 없이 XPath 쿼리문 생성을 위한 문자열로 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(\", [, ], /, =, @ 등) 및 쿼리 예약어 필터링을 수행하고 매개 변수화된 쿼리문을 지원하는 XQuery를 사용해야 합니다.",
  "rule.sast.sw.cpp.2939.example.0.dangerous": "라인 3: QString 타입인 변수 temp가 외부 입력에 의해 결정됩니다.\n라인 5: 외부에서 입력된 값이 setQuery() 메서드에서 바로 사용됩니다.",
  "rule.sast.sw.cpp.2939.example.0.safe": "라인 5: urlchecker() 메서드를 통해서 query를 검사합니다.\n라인 17: 검증된 temp를 통해 Query를 설정합니다.",
  "rule.sast.sw.cpp.2939.name": "XPath 삽입",
  "rule.sast.sw.cpp.2939.option.clear_call.description": "보안을 위해 민감한 정보를 검사하는 함수 이름을 작성합니다.<br />예시) urlchecker",
  "rule.sast.sw.cpp.2939.option.clear_call.name": "민감한 정보 검사 함수",
  "rule.sast.sw.cpp.2939.option.sink_call.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.cpp.2939.option.sink_call.name": "외부 정보 사용 함수",
  "rule.sast.sw.cpp.2939.option.source_call.description": "민감한 정보를 입력 받는 함수 이름을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.2939.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cpp.294.description": "일치하지 않는 자원 해제 방법 체커는 리소스의 할당과 해제가 서로 일치하는 함수로 처리하지 않은 경우를 검출합니다.\n여기서 리소스는 파일과 핸들, 소켓 등을 의미합니다.\n리소스 할당 및 해제 시 대상 리소스 타입과 맞지 않는 함수를 사용하면 해당 리소스가 해제되지 않습니다. 이와 같이 해제되지 않은 리소스로 인해 리소스 및 메모리 누수가 발생할 수 있습니다. 이를 사용해 공격자가 의도적으로 DoS(Denial of service) 공격을 하기 위하여 리소스 풀을 고갈시킬 수 있습니다. 리소스 및 메모리 누수는 시스템의 성능을 저하시키는 원인으로 치명적인 영향을 미칠 수 있습니다.\n리소스 할당 및 해제 시 대상 리소스 타입에 맞는 함수를 사용하도록 합니다. 구체적으로는 다음과 같은 할당 및 해제 함수를 사용합니다. 파일 리소스는 fopen() 함수로 할당하고 fclose() 함수로 해제하도록 합니다. 핸들 리소스는 CreateFile() 함수로 할당하고 CloseHandle() 함수로 해제하도록 합니다. 소켓 리소스는 open() 함수로 할당하고 close() 함수로 해제하도록 합니다.",
  "rule.sast.sw.cpp.294.example.0.dangerous": "라인 5: CreateFile() 함수를 사용하여 핸들 리소스를 할당 받았습니다.\n라인 13: fclose() 함수로 리소스를 닫았습니다. 하지만 핸들 리소스는 CloseHandle() 함수로 닫아야 합니다.",
  "rule.sast.sw.cpp.294.example.0.safe": "라인 13: CloseHandle() 함수로 파일 리소스를 해제하도록 합니다.",
  "rule.sast.sw.cpp.294.name": "일치하지 않는 자원 해제 방법",
  "rule.sast.sw.cpp.2940.description": "영속적인 쿠키 체커는 민감한 데이터를 지닌 쿠키의 지속 시간을 길게 설정한 코드를 검출합니다.\n대부분의 웹 프로그래밍 환경에서는 비지속적으로 쿠키를 생성합니다. 이러한 쿠키는 디스크에 기록되지 않고 브라우저 메모리에만 상주하며 브라우저가 닫히면 사라집니다. 프로그래머는 미래의 특정 날짜까지 브라우저 세션에서 쿠키가 지속되도록 지정할 수 있습니다. 이렇게 설정된 쿠키는 디스크에 기록되고 브라우저 세션 및 장치 재시작에서도 유지됩니다. 지속적인 쿠키는 사이트와 상호 작용하는 사용자를 프로필하는 데 사용됩니다. 공격자는 해당 데이터를 통해 지속적인 쿠키에 포함된 추적 데이터의 개인 정보를 악용할 수 있습니다. 지속적인 쿠키의 경우 만료 시간이 길게 설정되어 해당 쿠키에 개인 정보가 저장되면 데이터를 도용할 수 있는 위험도 증가하게 됩니다. addDays(), addMonths(), addYears() 메서드의 사용을 금지합니다.\n쿠키의 만료 시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요 정보가 포함되지 않도록 설정해야 합니다. addSecs(), addMSecs() 메서드를 사용하는 경우 옵션에 지정된 범위 내의 인자 값을 넣어야 합니다.",
  "rule.sast.sw.cpp.2940.example.0.dangerous": "라인 9: addYears() 메서드를 사용했습니다.\n라인 10: addSecs() 메서드 인자 값이 옵션에 지정된 값보다 높습니다.",
  "rule.sast.sw.cpp.2940.example.0.safe": "라인 9: addYears() 메서드를 사용하지 않도록 합니다.\n라인 10: addSecs() 메서드 인자 값이 지정된 값 범위 내에 있습니다.",
  "rule.sast.sw.cpp.2940.name": "영속적인 쿠키",
  "rule.sast.sw.cpp.2940.option.max_time.description": "허용 시간(초)을 설정합니다.",
  "rule.sast.sw.cpp.2940.option.max_time.name": "허용 시간(초)",
  "rule.sast.sw.cpp.2944.description": "부적절한 XML 외부 엔터티 참조 체커는 XML 파싱 라이브러리를 사용하면서 외부 엔터티를 사용하도록 허용하는 코드를 검출합니다.\n구체적으로는 외부 엔터티를 사용하도록 허용하는 함수를 호출하거나 해당 함수의 인자 값을 사용하는 경우를 가리킵니다.\nXML 라이브러리를 사용하는 동시에 외부 엔터티를 사용하도록 허용하는 경우 공격자가 권한이 없는 파일이나 보안 상 중요한 파일에 접근할 수 있게 됩니다. 이와 같이 외부 엔터티에 접근할 경우 SSRF(Server Side Request Forgery) 와 같은 취약점이 발생할 수 있습니다.\n따라서 외부 엔터티를 사용하도록 허용하는 함수를 호출하거나 해당 함수의 인자 값을 사용하지 않도록 합니다.",
  "rule.sast.sw.cpp.2944.example.0.dangerous": "라인 3: setCreateEntityReferenceNodes() 함수의 인자를 false로 설정했습니다. XXE 공격에 취약해집니다.\n라인 4: setDisableDefaultEntityResolution() 함수의 인자를 false로 설정했습니다. XXE 공격에 취약해집니다.",
  "rule.sast.sw.cpp.2944.example.0.safe": "라인 3: setCreateEntityReferenceNodes() 함수의 인자를 true로 설정하도록 합니다.\n라인 4: setDisableDefaultEntityResolution() 함수의 인자를 true로 설정하도록 합니다.",
  "rule.sast.sw.cpp.2944.name": "부적절한 XML 외부 엔터티 참조",
  "rule.sast.sw.cpp.2953.description": "취약한 서버 인증서 검증 체커는 인증서를 적절하게 검증하지 않는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다. 만약 서버 인증서 검증이 적절하게 이루어지지 않으면 보안 상 문제가 발생할 수 있습니다.\n라이브러리에서 제공하는 기본적인 인증서 유효성 검사 기능이 동작할 수 있도록 인증서 검증 함수에 적절한 인자 값을 사용하도록 합니다.",
  "rule.sast.sw.cpp.2953.example.0.dangerous": "라인 7: curl_easy_setopt() 함수를 호출할 때 두 번째 인자 값을 CURLOPT_SSL_VERIFYPEER 로 설정하고 세 번째 인자 값을 0으로 설정했습니다. 따라서 제대로 인증서 검증이 이루어지지 않았습니다.",
  "rule.sast.sw.cpp.2953.example.0.safe": "라인 7: 세 번째 인자 값을 1로 설정하도록 합니다.",
  "rule.sast.sw.cpp.2953.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.cpp.2955.description": "반환 주소 수정에 의한 코드 삽입 체커는 함수의 반환 주소를 바꿔치기 할 수 있는 코드를 검출합니다.\n구체적으로 다음과 같습니다. 지역 변수를 선언하여 스택 영역에 버퍼를 할당하는 경우 외부 입력값이 언더플로우를 발생시키고 이로 인해 함수의 반환 주소를 다른 값으로 변경하게 됩니다.\n공격자가 함수의 반환 주소를 변경하는 등 실행 흐름을 제어할 수 있게 되면 비정상적인 동작이 발생할 수 있습니다. 따라서 보안 상 다른 공격의 시발점이 될 수 있습니다.\n외부 입력값을 통해 스택 영역에 언더플로우가 발생하고, 이로 인해 반환 주소가 변경되지 않도록 합니다. 예를 들어, 오프셋 값을 검사하거나, 입력 받은 값을 스택 영역이 아닌 힙 영역에 저장하여 해당 문제를 방지할 수 있습니다.",
  "rule.sast.sw.cpp.2955.example.0.dangerous": "라인 7: var 값이 -1이고 var2 값이 공격자의 코드가 위치한 주소인 경우 코드 삽입 공격이 발생할 수 있습니다.",
  "rule.sast.sw.cpp.2955.example.0.safe": "라인 7: var 값의 크기를 검사하여 언더플로우가 발생하지 않도록 코드를 수정합니다.",
  "rule.sast.sw.cpp.2955.name": "반환 주소 수정에 의한 코드 삽입",
  "rule.sast.sw.cpp.296.description": "누락된 로그인 제어 체커는 로그인 시도 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n이 때 로그인 루틴의 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 로그인 루틴이 호출되기 전 로그인 시도를 반복문에서 제어합니다. 다만 조건문이 언제나 참인 경우 로그인 시도를 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 비교 연산자를 사용하고 있습니다.\n로그인 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 로그인에 성공할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.cpp.296.example.0.dangerous": "라인 2: 로그인 루틴을 로그인 시도 횟수 제한 없이 호출했습니다.",
  "rule.sast.sw.cpp.296.example.0.safe": "라인 3: 로그인 루틴을 로그인 시도 횟수를 제한하는 방식으로 호출합니다.",
  "rule.sast.sw.cpp.296.name": "누락된 로그인 제어",
  "rule.sast.sw.cpp.296.option.authentification_functions.description": "로그인 함수 이름을 적습니다.",
  "rule.sast.sw.cpp.296.option.authentification_functions.name": "로그인 함수 이름",
  "rule.sast.sw.cpp.296.option.loop_inside_target_function.description": "옵션을 사용하는 경우, 제어되지 않은 루프 안에서 함수 호출을 탐지합니다.",
  "rule.sast.sw.cpp.296.option.loop_inside_target_function.name": "제어 안된 루프 안에서 함수 호출을 탐지",
  "rule.sast.sw.cpp.296.option.target_function_inside_loop.description": "옵션을 사용하는 경우, 함수 안에 있는 제어 안된 루프를 탐지합니다.",
  "rule.sast.sw.cpp.296.option.target_function_inside_loop.name": "함수 안에 있는 제어 안된 루프를 탐지",
  "rule.sast.sw.cpp.297.description": "누락된 인증 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.\n호출이 필요한 인증 제어 루틴의 이름과 제어 루틴을 호출해야 하는 함수의 이름은 옵션으로 입력할 수 있습니다.\n인증 제어 루틴을 호출하지 않으면 허용되지 않은 사용자가 권한을 획득할 수 있습니다.\n반드시 인증 제어 루틴을 적절한 위치에서 호출해야 합니다.",
  "rule.sast.sw.cpp.297.example.0.dangerous": "라인 1: authentication() 함수를 지정한 함수라고 가정했을 때, 함수에서 인증 제어 루틴을 호출하지 않았습니다.",
  "rule.sast.sw.cpp.297.example.0.safe": "라인 2: control() 함수를 인증 제어 루틴이라고 가정했을 때, 이 함수를 authentication() 함수에서 호출합니다.",
  "rule.sast.sw.cpp.297.name": "누락된 인증",
  "rule.sast.sw.cpp.297.option.target_callee.description": "검증에 사용하는 함수 목록을 적습니다.",
  "rule.sast.sw.cpp.297.option.target_callee.name": "검증에 사용하는 함수 목록",
  "rule.sast.sw.cpp.297.option.target_caller.description": "검증 상태 확인이 필요한 함수 목록을 적습니다.",
  "rule.sast.sw.cpp.297.option.target_caller.name": "검증 상태 확인이 필요한 함수 목록",
  "rule.sast.sw.cpp.298.description": "누락된 비밀번호 복구 제어 체커는 비밀번호 복구 시도 횟수를 제한하기 위한 로직을 구현하지 않은 경우를 검출합니다.\n이 때 비밀번호 복구 루틴의 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 비밀번호 복구 루틴이 호출되기 전 비밀번호 복구 시도를 반복문에서 제어합니다. 다만 조건문이 언제나 참인 경우 비밀번호 복구 시도를 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 비교 연산자를 사용하고 있습니다.\n비밀번호 복구 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 비밀번호를 변경할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 비밀번호 복구 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.cpp.298.example.0.dangerous": "라인 2: 비밀번호 복구 루틴을 비밀번호 복구 시도 횟수 제한 없이 호출했습니다.",
  "rule.sast.sw.cpp.298.example.0.safe": "라인 3: 비밀번호 복구 루틴을 비밀번호 복구 시도 횟수를 제한하는 방식으로 호출합니다.",
  "rule.sast.sw.cpp.298.name": "누락된 비밀번호 복구 제어",
  "rule.sast.sw.cpp.298.option.authentification_functions.description": "비밀번호 복원 함수 이름을 적습니다.",
  "rule.sast.sw.cpp.298.option.authentification_functions.name": "비밀번호 복원 함수 이름",
  "rule.sast.sw.cpp.298.option.loop_inside_target_function.description": "옵션을 사용하는 경우, 제어되지 않은 루프 안에서 함수 호출을 탐지합니다.",
  "rule.sast.sw.cpp.298.option.loop_inside_target_function.name": "제어 안된 루프 안에서 함수 호출을 탐지",
  "rule.sast.sw.cpp.298.option.target_function_inside_loop.description": "옵션을 사용하는 경우, 함수 안에 있는 제어 안된 루프를 탐지합니다.",
  "rule.sast.sw.cpp.298.option.target_function_inside_loop.name": "함수 안에 있는 제어 안된 루프를 탐지",
  "rule.sast.sw.cpp.3061.description": "주요 보안 정보 및 차량 정보의 평문 전송 체커는 주요 보안 정보, 혹은 차량 정보를 암호화나 무결성 검증 없이 평문으로 전송하는 경우를 검출합니다.\n공개 키 알고리즘에 적용되는 개인 키나 대칭 키 알고리즘에 적용되는 비밀 키 등과 같은 주요 보안 정보는 절대로 제어기 외부에 평문의 형태로 전송되거나 노출되어서는 안됩니다. 개인 키는 소유한 개체 자신이 직접 생성하고 보관해야 하며, 비밀 키를 분배할 때에는 반드시 암호문의 형태로 전송되어야 합니다. 암호문을 생성하는 방법은 AES, TDES와 같은 블록 암호화 알고리즘과 RSA, ECC와 같은 비대칭 키 암호화 알고리즘을 적용할 수 있습니다. 만약 암호문을 생성할 수 없는 상황이라면 유/무선 네트워크가 아닌 직접적인 물리적 연결(예: USB, JTAG)을 통해 보안 정보를 전달해야 합니다. 또한 소유 중인 주요 보안 정보는 USB 메모리, SD 카드와 같은 외부 저장매체에 평문의 형태로 보관되어서는 안되며, 외부 저장매체에 보안 정보를 저장해야 한다면 반드시 쉽게 알아낼 수 없는 형태로 보관되어야 합니다.\n\n보안 정보와 마찬가지로, 차량 내의 민감한 정보, 공격자에 의해 악용될 수 있는 정보는 모두 무결성이 보존되어야 합니다. 무결성이 보장되지 않은 주행 관련 민감한 정보가 공격자에 의해 변조 및 악용될 경우 치명적인 사고를 유발할 수도 있습니다. 무결성을 보존하기 위해서는 MAC과 같은 인증 정보가 추가되거나 메시지와 해시 값을 암호화하는 형태로 외부에 전송되어야 하며, 해당 정보의 접근 권한을 가진 개체만이 메시지 인증과 무결성을 검증할 수 있어야 합니다.\n민감한 정보가 노출되는 경우 정보의 외부 유출뿐만 아니라 향후 릴레이 공격이나 무차별 대입 공격 등에 취약하게 만들 수 있습니다.\n민감한 정보를 암호화하거나 무결성 검증을 진행한 후 전달하도록 합니다.",
  "rule.sast.sw.cpp.3061.example.0.dangerous": "라인 9: 개인 키의 내용을 평문의 형태로 제어기 외부에 전송했습니다.\n라인 27: 속도 데이터와 같이 차량의 치명적인 주요 정보를 외부에 평문 형태로 전송했습니다.",
  "rule.sast.sw.cpp.3061.example.0.safe": "라인 21: 평문이 아닌 암호문의 형태로 전송합니다.\n라인 60: MAC을 사용하여 무결성을 확보합니다.",
  "rule.sast.sw.cpp.3061.name": "주요 보안 정보 및 차량 정보의 평문 전송",
  "rule.sast.sw.cpp.3061.option.clear_call.description": "암호화 혹은 무결성 검증 함수",
  "rule.sast.sw.cpp.3061.option.clear_call.name": "평문 정보를 안전하게 암호화 하거나 무결성을 검증하는 함수 이름을 입력합니다.",
  "rule.sast.sw.cpp.3062.description": "낮은 보안 강도의 암호화 알고리즘 사용 체커는 권장되는 보안 강도를 만족하지 않는 암호화 알고리즘이나 해시 함수를 사용하는 코드를 검출합니다.\n대칭 키(비밀 키) 기반 암호 알고리즘이나 해시 함수를 사용할 경우에는 보안 강도가 112-bit 이상을 만족하도록 권장합니다. 그리고 비대칭 키 암호 알고리즘을 사용할 경우에는 보안성 강화를 위해 가급적 보안 강도 112-bit 이상을 만족하는 키 사이즈를 사용하도록 권장합니다.\n권장되는 보안 강도를 만족하지 않으면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n암호화 알고리즘이 충분한 보안 강도를 유지할 수 있도록 사용 규칙을 준수합니다.",
  "rule.sast.sw.cpp.3062.example.0.dangerous": "라인 5: 두개의 키가 동일한 2TDEA를 사용하고 있으며 이 경우 보안 강도가 80-bit이므로 권장되는 보안 강도인 112-bit 이상을 만족하지 못합니다.\n라인 15: 전처리 구문 EscRsa_KEY_BYTES의 값이 RSA 1024 비트를 사용하도록 선언되었습니다.",
  "rule.sast.sw.cpp.3062.example.0.safe": "라인 6: 권장 보안 강도를 만족하는 3TDEA를 사용하도록 합니다.\n라인 16: 전처리 구문 EscRsa_KEY_BYTES의 값이 RSA 2048 비트를 사용할 수 있도록 선언합니다.",
  "rule.sast.sw.cpp.3062.name": "낮은 보안 강도의 암호화 알고리즘 사용",
  "rule.sast.sw.cpp.3063.description": "MAC 생성 시 누락된 메시지 식별 값 체커는 MAC을 생성할 때 메시지 식별 값을 포함시키지 않아 공격자가 인증 값을 재사용할 수 있는 경우를 검출합니다.\nMAC 태그는 메시지의 인증과 무결성을 보장하기 위해 메시지 값과 비밀 키를 사용하여 생성됩니다. 만약 공격자가 해당 메시지와 MAC 값을 중간에 가로채 그대로 전송하게 된다면 정상 개체처럼 인증을 우회할 수 있게 됩니다. 이러한 재사용 공격을 막기 위해서는 동일한 메시지라도 다른 MAC 값이 생성될 수 있도록 메시지를 식별할 수 있는 값이 메시지와 함께 포함되어 MAC을 생성해야 합니다.\n공격자가 도청 후 해당 인증 값을 재사용하여 수신자로 하여금 비정상 동작을 수행하도록 유도할 수 있습니다.\nMAC을 생성할 때 기본 텍스트에 타임스탬프나 랜덤 값 등을 포함합니다. 이 방법을 사용하여 동일한 메시지에 대해 매번 다른 MAC을 생성할 수 있습니다.",
  "rule.sast.sw.cpp.3063.example.0.dangerous": "라인 25: 재사용 공격을 방어할 수 있는 식별값(예: 타임스탬프 등)을 사용하고 있지 않기 때문에 공격자는 생성된 MAC을 포함하는 메시지를 가로채서 나중에 그대로 재사용할 수 있습니다.",
  "rule.sast.sw.cpp.3063.example.0.safe": "라인 7: MAC을 생성할 때 현재 시간 정보를 통해 생성한 값을 포함함으로써 재사용 공격에 대응합니다.",
  "rule.sast.sw.cpp.3063.name": "MAC 생성 시 누락된 메시지 식별 값",
  "rule.sast.sw.cpp.3067.description": "문법적으로 애매한 선언 체커는 작성된 코드가 표현식인지 혹은 선언문인지 해석하기 애매한 경우를 검출합니다.\n프로그래머가 문법적으로 애매한 선언을 작성하면 컴파일러는 코드가 표현식인지 혹은 선언문인지 해석하기 어려울 수 있습니다. 애매한 선언을 방지하기 위해 선언문은 중괄호 초기화(braced-init-list)를 사용하거나, 주위에 의미 없는 괄호를 제거하거나, \"=\"을 사용하여 초기화함으로써 명확하게 표기해야 합니다. 또한 호출인지 변수 선언인지 애매할 수 있는 함수 스타일 형변환(예: MyClass(3), int(10))을 사용하지 않도록 합니다.\n코드를 잘못 해석하여 의도하지 않은 동작을 발생시킬 수 있습니다.\n변수 선언 다음에 불필요한 괄호를 없애거나 중괄호 초기화(braced-init_list)를 사용하도록 합니다.",
  "rule.sast.sw.cpp.3067.example.0.dangerous": "라인 8: Widget 객체를 반환하는 함수 포인터인지 Widget 클래스 객체 선언인지 문법적으로 애매합니다.",
  "rule.sast.sw.cpp.3067.example.0.safe": "라인 8: 변수 선언 다음에 괄호를 없애면 함수 선언 대신 변수 선언의 구문이 됩니다.\n라인 9: 지역 변수를 직접 초기화하는 중괄호 초기화(braced-init-list)를 사용합니다.",
  "rule.sast.sw.cpp.3067.name": "문법적으로 애매한 선언",
  "rule.sast.sw.cpp.3068.description": "예외 안정성을 보장하지 않는 코드 체커는 프로그램이 예외에 의해 종료되는 경우 프로그램에 비정상적인 영향을 줄 가능성이 존재하는 코드를 검출합니다.\n에러와 예외 상황을 적절하게 처리하는 것은 소프트웨어에서 필수적이며 예외가 발생했을 때 프로그램에 비정상적인 영향을 끼칠 수 있는 가능성은 사전에 제거되어야 합니다. 이러한 비정상적인 영향을 피하는 코드를 \"예외 안전성\"을 보장한다고 표현합니다. 예외 안전성은 다음과 같이 세 가지로 나뉩니다:\n\n강한 예외 안정성: 기본 예외 안정성을 보장하는 동시에 예외에 의해 작업이 종료되었을 때 프로그램 상태에 관찰 가능한 영향이 발생하지 않습니다.\n기본 예외 안정성: 프로그램이 예외에 의해 종료되었을 때 리소스 누수를 방지하고 프로그램 상태를 변하지 않게 합니다.\n예외 안전성 없음: 강한 예외 안정성과 기본 예외 안정성을 모두 보장하지 않습니다.\n예외 처리를 사용하여 프로그램의 종료를 제어하거나 예외 상황으로부터 복구를 수행하지 않고 프로그램 상태가 변한다면 보안 취약점이 발생할 수 있습니다.\n지역 변수가 아닌 변수의 값이 예외가 발생할 수 있는 시점 이후에 변경될 수 있도록 코드를 수정합니다.",
  "rule.sast.sw.cpp.3068.example.0.dangerous": "라인 17: new 연산자를 통해 array 객체에 메모리를 할당했습니다. 이 때 예외가 발생할 수 있습니다.\n라인 18: 예외가 발생하게 되면 도달하지 못하고 클래스의 상태가 변경된 채로 남게 됩니다.",
  "rule.sast.sw.cpp.3068.example.0.safe": "라인 14, 18: 객체의 상태를 바꾸기 전에 tmp 변수에 new 연산자로 메모리를 할당하고 메모리 할당이 성공한 경우에만 객체의 상태를 변경합니다.",
  "rule.sast.sw.cpp.3068.name": "예외 안정성을 보장하지 않는 코드",
  "rule.sast.sw.cpp.3069.description": "누락된 예외 처리 체커는 함수에서 예외가 발생하지만 이를 처리하지 않은 코드를 검출합니다.\n의도치 않은 예외가 발생하는 경우 예외를 반드시 발견하고 처리해야 합니다.\n예외를 적절히 처리하지 않는 경우 시스템 충돌, 민감한 정보 노출 및 의도하지 않은 동작으로 이어질 수 있습니다.\n예외를 던지는지 알기 힘든 함수 등을 호출할 때 예외 처리 구문 안쪽에 위치하도록 코드를 수정합니다.",
  "rule.sast.sw.cpp.3069.example.0.dangerous": "라인 6: _alloca() 함수로 공간을 할당할 수 없는 경우 스택 오버플로우 예외가 발생합니다.",
  "rule.sast.sw.cpp.3069.example.0.safe": "라인 5, 15: __try-__except 블록을 사용하여 의도치 않은 예외를 처리합니다.",
  "rule.sast.sw.cpp.3069.name": "누락된 예외 처리",
  "rule.sast.sw.cpp.3070.description": "이동한 객체의 재사용 체커는 이동한 객체에 의존하여 이를 재사용하는 코드를 검출합니다.\n표준 템플릿 라이브러리에서 제공하는 많은 타입들은 std::move() 함수를 통해 객체를 이동시킵니다. 이동 작업(이동 초기화 또는 이동 할당)이 이루어지고 나서 객체의 값은 대부분 유효하긴 하지만 지정되지 않은 상태로 남게 됩니다. 객체가 이동된 상태이면 해당 객체 인스턴스에서 안전하게 수행할 수 있는 작업은 기존에 가지고 있던 전제 조건과 상관 없는 작업뿐입니다. 왜냐하면 이동된 상태의 객체는 기존의 전제 조건을 충족하고 있는지 여부 자체를 알 수 없는 상태이기 때문입니다.\n이동 후에도 객체가 유효한 상태에 있다고 하여 이를 사용하면 지정되지 않은 동작을 초래할 수 있습니다.\n이동한 객체를 재사용하지 않도록 합니다.",
  "rule.sast.sw.cpp.3070.example.0.dangerous": "라인 10: s를 이동시키지만 다음 반복 주기에서 이동된 객체를 다시 참조했습니다.",
  "rule.sast.sw.cpp.3070.example.0.safe": "라인 8: 각 반복 주기마다 객체를 초기화하여 이동된 객체를 다시 참조하지 않도록 합니다.",
  "rule.sast.sw.cpp.3070.name": "이동한 객체의 재사용",
  "rule.sast.sw.cpp.3071.description": "적절하지 않은 객체를 대상으로 하는 메모리 지정 new 연산 체커는 충분한 공간이 있는지 확인되지 않았거나 적절하게 정렬되지 않은 객체에 대해 메모리 지정 new (Placement new) 연산이 수행되는 코드를 검출합니다.\n주어진 타입에 new 표현식이 새로 호출될 때 전역의 기본 new 연산자는 충분한 저장 공간을 할당하려고 시도하고, 성공할 경우 적절한 포인터를 반환합니다. 하지만 이와 달리 메모리 지정 new(Placement new) 연산자는 객체를 생성할 충분한 공간이 있는지 확인하지 않고 주어진 포인터를 호출자에게 반환합니다.\n따라서 적절하게 정렬되지 않은 객체에 대해 메모리 지정 new 연산자를 사용하면 정의되지 않은 동작이 발생합니다. 또한 필요한 공간보다 작은 공간을 할당하게 되면 실제 할당된 공간을 벗어난 메모리 영역에 대해 초기화가 이루어지게 되어 정의되지 않은 동작이 발생합니다.\n메모리 지정 new 연산을 사용할 때 충분한 버퍼의 공간을 할당하도록 합니다. 또한 버퍼를 적절하게 정렬할 수 있도록 alignas 와 같은 선언 지정자를 사용하도록 합니다.",
  "rule.sast.sw.cpp.3071.example.0.dangerous": "라인 4: 충분한 공간이 할당되지 않아 sizeof(short) < sizeof(long) 인 아키텍처에서는 정의되지 않은 동작이 발생합니다.\n라인 8: 충분한 크기의 buffer가 구성되었으나 적절하게 정렬되지 않았습니다.",
  "rule.sast.sw.cpp.3071.example.0.safe": "라인 4: 충분한 버퍼 공간을 할당합니다. 또한 alignas 선언 지정자를 사용하여 buffer가 long으로 정렬되도록 합니다.",
  "rule.sast.sw.cpp.3071.name": "적절하지 않은 객체를 대상으로 하는 메모리 지정 new 연산",
  "rule.sast.sw.cpp.3072.description": "정적 범위의 객체 선언에서 발생하는 처리되지 않는 예외 체커는 객체를 함수 블록 범위 혹은 생성자 내에 선언하지 않고 정적 혹은 스레드 존속 범위에 선언했을 때, 처리되지 않는 예외가 발생하는 코드를 검출합니다.\nC++에서 모든 예외를 처리할 수는 없습니다. 특히 정적 범위에 있는 객체들의 생성자에서 발생한 예외는 function-try-block에서 catch할 수 없습니다. 객체를 함수 블록 범위 혹은 생성자 내에 선언하지 않고 정적 범위에 선언했을 때에는 처리되지 않는 예외를 발생시켜서는 안됩니다.\n정적 범위에서 생성되는 객체 O가 존재하고, O가 생성될 때 호출되는 함수 목록 F가 있을 때 함수 목록 F 중 아래 조건을 모두 만족하지 않는 함수 G가 포함된다면 객체 O가 생성되는 위치를 검출합니다.\nnoexcept 키워드를 사용하여 선언됩니다.\nnoexcept(true) 키워드를 사용하여 선언됩니다.",
  "rule.sast.sw.cpp.3072.example.0.dangerous": "라인 2: HAEBMBE_S의 생성자에서 예외가 발생할 수 있습니다.\n라인 5: HAEBMBE_F() 함수에서 예외가 발생할 수 있습니다.\n라인 7: 정적 범위에서 globalS 객체를 생성할 때 S의 생성자에 의해 처리되지 않은 예외가 발생할 수 있습니다.\n라인 8: 정적 범위에서 i 변수를 초기화 때 함수 f()에 의해 처리되지 않은 예외가 발생할 수 있습니다.",
  "rule.sast.sw.cpp.3072.example.0.safe": "라인 8: globalS() 함수가 처음으로 호출될 때 S의 생성자가 호출되며 이 때 객체 생성 중에 발생하는 예외를 감지할 수 있습니다.\n라인 15: HAEBMBE_F_helper() 함수 내에서 HAEBMBE_F() 함수를 호출하며 이 때 발생하는 예외를 처리하여 로그 메시지를 남기고 프로그램을 종료합니다.",
  "rule.sast.sw.cpp.3072.name": "정적 범위의 객체 선언에서 발생하는 처리되지 않는 예외",
  "rule.sast.sw.cpp.3073.description": "존재하지 않는 멤버에 접근하는 멤버-포인터 연산자 체커는 존재하지 않는 멤버에 멤버-포인터 연산자를 사용하여 접근하는 코드를 검출합니다.\n멤버-포인터 연산자 .와 ->는 객체 또는 함수를 기본 객체의 멤버처럼 가져오는데 사용됩니다. C++ 표준에는 멤버-포인터 연산자에 대해 다음과 같이 명시되어 있습니다:\nE1.*E2에서 E1은 객체 표현식이라고 불린다. 만약 E1의 동적 타입이 E2가 가리키고 있는 멤버를 포함하고 있지 않다면, 정의되지 않은 동작을 야기한다.\n피연산자가 멤버 값에 대해 널 포인터를 가지고 있으면 정의되지 않은 동작을 야기한다.\n따라서 첫 번째 피연산자의 동적 타입이 두 번째 피연산자가 참조하는 멤버를 포함하지 않거나 두 번째 피연산자가 null 포인터를 가지고 있으면 멤버 포인터 연산자를 사용할 수 없습니다.\n첫 번째 피연산자의 동적 객체가 두 번째 피연산자의 멤버 변수 및 함수를 가지고 있지 않다면 정의되지 않은 동작이 발생할 수 있습니다.\n존재하지 않는 멤버에 대해 연산자를 사용하지 않도록 합니다.",
  "rule.sast.sw.cpp.3073.example.0.dangerous": "라인 14: D::g에서 멤버-포인터 객체를 가져오지만 업캐스트를 통해 B::*로 변환되었습니다.\n라인 15: B 클래스 객체에서 g를 호출했습니다. B에 g 함수가 정의되어 있지 않으므로 정의되지 않은 동작이 발생합니다.",
  "rule.sast.sw.cpp.3073.example.0.safe": "라인 15: 부모 클래스 대신 실제로 D::g 가 존재하는 D 클래스의 객체 및 메소드를 사용하도록 합니다.",
  "rule.sast.sw.cpp.3073.name": "존재하지 않는 멤버에 접근하는 멤버-포인터 연산자",
  "rule.sast.sw.cpp.3077.description": "범위 밖에 있는 열거 값 캐스팅 체커는 열거 값이 범위 내에 있는지 확인하지 않고 열거 값으로 캐스팅을 수행하는 코드를 검출합니다.\nC++에서 열거형은 기본 유형이 고정되는 범위가 있는 열거형(scoped enumeration)과 기본 유형이 고정되기도 고정되지 않기도 하는 범위가 없는 열거형(unscoped enumeration)의 두 가지 형태를 가지고 있습니다. 일반적으로 열거형으로 선언된 값은 4바이트 크기 이하의 정수형 타입 내에서 명시적으로 할당되는 값을 가장 잘 표현할 수 있는 자료형으로 지정되게 되며, 정수 또는 열거형의 값은 명시적으로 열거형으로 변환될 수 있습니다.\n값을 열거형으로 캐스팅하기 전에 값의 범위를 확인해야 합니다.",
  "rule.sast.sw.cpp.3077.example.0.dangerous": "라인 7: 값 intVar의 범위를 검사하지 않고 범위가 없는 열거형 EnumType으로 캐스팅을 수행했습니다.",
  "rule.sast.sw.cpp.3077.example.0.safe": "라인 7 :변환을 수행하기 전에 열거형으로 표현될 수 있는 값인지 사전에 검사를 수행합니다.",
  "rule.sast.sw.cpp.3077.name": "범위 밖에 있는 열거 값 캐스팅",
  "rule.sast.sw.cpp.33.description": "버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.33.example.0.dangerous": "라인 2: 정수형 데이터 10개의 배열 buf를 선언했습니다. (인덱스는 0부터 9까지 접근 가능)\n라인 3: for 구문을 사용하여 인덱스 i를 10까지 증가시켰습니다.\n라인 6: 값이 10인 i를 인덱스로 buf에 접근하여 버퍼 오버플로우가 발생했습니다.",
  "rule.sast.sw.cpp.33.example.0.safe": "라인 5: i의 값이 0보다 크거나 같고 10보다 작다는 조건을 추가하여 잘못된 접근을 방지합니다.\n라인 6: i의 값이 10이기 때문에 이 코드는 실행되지 않습니다.",
  "rule.sast.sw.cpp.33.name": "버퍼 오버플로우",
  "rule.sast.sw.cpp.34.description": "잘못된 조건으로 인한 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 잘못된 조건 계산으로 인덱스 범위를 결정합니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.34.example.0.dangerous": "라인 2: 정수형 데이터 10개의 배열 buf를 선언했습니다. (인덱스는 0부터 9까지 접근 가능)\n라인 3: scanf 구문을 사용하여 인덱스 idx의 값을 전달 받았습니다.\n라인 5: 조건에서 0~9 이외의 값 10인 인덱스 idx로 buf에 접근하여 버퍼 오버플로우 오류가 발생했습니다.",
  "rule.sast.sw.cpp.34.example.0.safe": "라인 5: 조건을 수정하여 idx 값이 10이 되지 않도록 설정합니다.",
  "rule.sast.sw.cpp.34.name": "잘못된 조건으로 인한 버퍼 오버플로우",
  "rule.sast.sw.cpp.351.description": "잘못된 조건으로 인한 필드 버퍼 오버플로우 체커는 잘못된 조건으로 인해 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 잘못된 조건 계산으로 인덱스 범위를 결정합니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.351.example.0.dangerous": "라인 6: n이 50보다 작은지를 비교했습니다.\n라인 7: type.b의 인덱스로 n-1 값을 사용했습니다. 이 값은 라인 6의 조건에 따라 50보다 작은 값입니다. 하지만 n-1의 값이 40보다 크거가 같을 경우 버퍼 오버플로우가 발생합니다.",
  "rule.sast.sw.cpp.351.example.0.safe": "라인 6: type.b의 인덱스로 사용하는 n-1의 값이 항상 40보다 작도록 비교문을 작성합니다.",
  "rule.sast.sw.cpp.351.name": "잘못된 조건으로 인한 필드 버퍼 오버플로우",
  "rule.sast.sw.cpp.352.description": "필드 버퍼 오버플로우 체커는 할당된 버퍼의 영역을 벗어난 메모리에 값을 쓰거나 읽는 경우를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위를 벗어나는 메모리 주소의 값을 읽어옵니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.352.example.0.dangerous": "라인 2: type_static 구조체의 a 배열 크기를 100으로 선언했습니다.\n라인 6: foo2() 함수에 인덱스 값 98을 대입했습니다.\n라인 10: type_static.a의 인덱스로 index + 5 값을 사용했습니다. 이로 인해 버퍼 오버플로우가 발생했습니다.",
  "rule.sast.sw.cpp.352.example.0.safe": "라인 6: foo2() 함수에 인덱스 값 20을 대입합니다.\n라인 10: 인덱스의 범위를 제한하여 배열의 범위를 벗어난 접근이 일어나지 않도록 방지합니다.",
  "rule.sast.sw.cpp.352.name": "필드 버퍼 오버플로우",
  "rule.sast.sw.cpp.36.description": "범위 지정 복사로 인한 버퍼 오버플로우 체커는 memcpy(), strncpy()와 같이 범위 지정을 통해 메모리에서 특정 크기의 데이터를 복사하는 함수를 잘못 사용한 코드를 검출합니다.\n검출되는 복사 함수는 다음과 같습니다. memset(), bzero(), memcpy(), strncat(), wcsncat(), strncpy(), wcsncpy().\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리로부터 특정 크기의 데이터를 복사하는 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.36.example.0.dangerous": "라인 1: buf1 배열을 크기 100으로 선언했습니다.\n라인 2: buf2 배열을 크기 200으로 선언했습니다.\n라인 4: memcpy() 함수 때문에 범위를 벗어난 복사를 수행했습니다. 복사한 범위는 buf2의 크기인 200이지만 복사된 buf1의 크기는 100입니다.",
  "rule.sast.sw.cpp.36.example.0.safe": "라인 4: 복사한 범위를 buf1의 크기인 100으로 전달합니다.",
  "rule.sast.sw.cpp.36.name": "범위 지정 복사로 인한 버퍼 오버플로우",
  "rule.sast.sw.cpp.375.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트 리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.cpp.375.example.0.dangerous": "라인 1: 외부 입력값을 cookieName 변수에 저장했습니다.\n라인 2: 외부 입력값을 data 변수에 저장했습니다.\n라인 4: cgiHeaderCookieSetString() 함수에서 외부 입력값들을 사용했습니다. 이 값들은 사용하기 전까지 문자 변환이 이루어지지 않았습니다.",
  "rule.sast.sw.cpp.375.example.0.safe": "라인 4: cookieName 변수의 값을 적절하게 변환합니다.\n라인 5: data 변수의 값을 적절하게 변환합니다.\n라인 7: cgiHeaderCookieSetString() 함수에서 적절하게 변환한 외부 입력값을 사용합니다.",
  "rule.sast.sw.cpp.375.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.cpp.376.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하거나 같은 문자를 연속으로 여러 개 사용하지 않도록 설정할 수 있습니다. 한국인터넷진흥원 \"암호사용안내서\"의 비밀번호 설정 규칙을 참고할 수 있습니다.",
  "rule.sast.sw.cpp.376.example.0.dangerous": "라인 3: pwd 변수에 저장된 비밀번호 값에 대한 검증을 수행하지 않았습니다.\n라인 4: 검증되지 않은 비밀번호를 SQL 연결에 사용했습니다.",
  "rule.sast.sw.cpp.376.example.0.safe": "라인 4: 조건절에서 pwd변수에 대한 적절한 검증을 수행합니다.\n라인 5: 검증된 비밀번호를 SQL 연결에 사용하도록 합니다.",
  "rule.sast.sw.cpp.376.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.cpp.376.option.connect_function.description": "취약한 패스워드를 검사하기 위해 Connection 함수명 및 패스워드 파라미터 위치를 작성합니다. (함수명|패스워드파라미터 위치) 형식으로 작성합니다.",
  "rule.sast.sw.cpp.376.option.connect_function.name": "SQL Connection 함수 이름",
  "rule.sast.sw.cpp.377.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n중요 정보를 솔트(Salt) 없이 해싱하여 저장하면 공격자는 레인보우 테이블과 같은 방법으로 해시값을 미리 계산하여 원래 값을 찾을 수 있게 됩니다.\n특히 비밀번호와 같은 중요 정보를 해시하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "rule.sast.sw.cpp.377.example.0.dangerous": "라인 4: 솔트 값을 입력하는 인자가 널 포인터로 입력되었습니다. 솔트 없이 해시 함수를 실행했습니다.",
  "rule.sast.sw.cpp.377.example.0.safe": "라인 4: 적절한 솔트 값을 인자에 입력하도록 합니다.",
  "rule.sast.sw.cpp.377.name": "솔트 없는 해시 사용",
  "rule.sast.sw.cpp.377.option.hash_function.description": "솔트가 입력되었는지 검사하기 위해 해시 함수 이름 및 솔트 파라미터 위치를 작성합니다. (해시 함수|솔트 파라미터 위치)",
  "rule.sast.sw.cpp.377.option.hash_function.name": "해시 함수 이름",
  "rule.sast.sw.cpp.378.description": "누락된 로그인 횟수 제한 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n이 때 ID와 비밀번호 변수의 식별을 위한 루틴 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 로그인 루틴이 호출되기 전 로그인 시도를 반복문에서 제어합니다. 다만 조건문이 횟수 제한이 없는 경우 로그인 입력을 적절하게 제어하지 않는다고 판단합니다. 반복문의 비교 구문에서 대소 비교 연산자를 사용하고 있습니다.\n로그인 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 로그인에 성공할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.cpp.378.example.0.dangerous": "라인 1: 로그인 정보를 재 입력받는 횟수가 제한을 가지지 않았습니다.",
  "rule.sast.sw.cpp.378.example.0.safe": "라인 2: 로그인 입력 횟수에 제한을 두도록 합니다.",
  "rule.sast.sw.cpp.378.name": "누락된 로그인 횟수 제한",
  "rule.sast.sw.cpp.378.option.id_regex.description": "ID 형태의 이름을 가진 변수 식별을 위해 정규식을 작성합니다.",
  "rule.sast.sw.cpp.378.option.id_regex.name": "ID 정규식",
  "rule.sast.sw.cpp.378.option.pwd_regex.description": "패스워드 형태의 이름을 가진 변수 식별을 위해 정규식을 작성합니다.",
  "rule.sast.sw.cpp.378.option.pwd_regex.name": "패스워드 정규식",
  "rule.sast.sw.cpp.379.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "rule.sast.sw.cpp.379.example.0.dangerous": "라인 3: access() 함수와 open() 함수를 호출하는 사이에 리소스의 상태가 변경될 수 있습니다.",
  "rule.sast.sw.cpp.379.example.0.safe": "라인 3: open() 함수를 사용하여 모드를 지정합니다.\n라인 5: chmod() 함수 대신 fchmod() 함수와 함께 open() 함수의 파일 디스크립터를 그대로 사용합니다.",
  "rule.sast.sw.cpp.379.name": "TOCTOU 경쟁 조건",
  "rule.sast.sw.cpp.380.description": "누락된 반환 값 검사 체커는 반환 값을 사용하지 않거나 반환 값을 검사했으나 아무런 방어 코드도 넣지 않은 경우를 검출합니다.\n옵션에서 검사할 대상 함수를 지정할 수 있습니다.\n반환된 값을 사용하지 않거나 반환 값 검사 후 방어 코드를 넣지 않는 것은 프로그램이 기대하지 않은 행동을 할 수 있습니다. 일반적으로 프로그래머는 함수 호출에 실패하지 않을 것이라고 추측합니다. 그럼에도 불구하고 함수 호출이 실패하는 경우가 발생할 수 있으며 이로 인해 공격자에게 프로그램을 공격할 수 있는 기회를 제공합니다. 그리고 보안 위협이 발생할 수 있습니다.\n반드시 대상 함수들의 반환 값을 검사하고 방어 코드를 추가하도록 합니다.",
  "rule.sast.sw.cpp.380.example.0.dangerous": "라인 2: 반환 값을 확인하지 않았습니다.\n라인 3: fputs()의 반환 값을 확인했으나 어떠한 방어코드도 넣지 않았습니다.",
  "rule.sast.sw.cpp.380.example.0.safe": "라인 3: 반환 값을 확인한 후 오류를 대처할 수 있는 코드를 작성합니다.",
  "rule.sast.sw.cpp.380.name": "누락된 반환 값 검사",
  "rule.sast.sw.cpp.380.option.target_grp1.description": "호출 후, if 구문으로 리턴 값을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "rule.sast.sw.cpp.380.option.target_grp1.name": "리턴 값 검사 대상 함수",
  "rule.sast.sw.cpp.380.option.target_grp2.description": "호출 후, if 구문으로 errno을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "rule.sast.sw.cpp.380.option.target_grp2.name": "errno 발생 함수",
  "rule.sast.sw.cpp.381.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.\n프로그램의 자동 업데이트와 같은 상황에서 코드에 대한 암호화된 서명을 사용하지 않고 코드를 다운로드하면 위험합니다. 웹 서버에서 실행될 수 있는 위험한 형식의 파일을 원격지로부터 다운로드하여, 코드의 출처나 무결성 검사 없이 클라이언트에서 실행하는 경우 공격자가 의도하는 행위를 수행할 수 있습니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "rule.sast.sw.cpp.381.example.0.dangerous": "라인 5: 반환 값으로 파일의 무결성을 확인하지 않았습니다.",
  "rule.sast.sw.cpp.381.example.0.safe": "라인 6: 반환 값을 검사하여 무결성을 확인한 후 파일에 쓰도록 합니다.",
  "rule.sast.sw.cpp.381.name": "무결성 검사 없는 코드 다운로드",
  "rule.sast.sw.cpp.382.description": "신뢰할 수 없는 입력에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.\n개발자들은 흔히 쿠키, 환경 변수 또는 히든 필드와 같은 입력값이 조작될 수 없다고 가정합니다. 하지만 공격자는 다양한 방법을 통해 이러한 입력값들을 변경할 수 있고 조작된 내용은 탐지되지 않을 수 있습니다. 이러한 입력값(쿠키, 환경 변수, 히든 필드 등)에 기반하여 인증이나 인가와 같은 보안 결정을 수행하는 경우 공격자는 해당 값을 조작하여 애플리케이션의 보안을 우회할 수 있으므로 외부 사용자에 의한 입력값을 신뢰해서는 안됩니다.\n상태 정보나 민감한 데이터, 사용자 세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행합니다. 또한 보안 설계 관점에서 신뢰할 수 없는 입력값이 애플리케이션 내부로 들어올 수 있는 지점을 파악해야 하며, 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토해야 합니다.",
  "rule.sast.sw.cpp.382.example.0.dangerous": "라인 1: 보안적으로 안전하지 않은 값을 외부에서 가져왔습니다.\n라인 2: 안전하지 않은 값으로 검증을 수행했습니다.",
  "rule.sast.sw.cpp.382.example.0.safe": "라인 1: 보안적으로 안전한 곳에서 값을 가져옵니다.\n라인 2: 안전한 값으로 검증을 수행하도록 합니다.",
  "rule.sast.sw.cpp.382.name": "신뢰할 수 없는 입력에 의존한 보안 결정",
  "rule.sast.sw.cpp.382.option.gather_function.description": "외부에서 값을 받아오는 함수 및 리턴 값, 혹은 파라미터 위치를 입력합니다.(함수 이름|파라미터 위치), 파라미터 위치 값이 0일 경우 리턴값으로 인식합니다.",
  "rule.sast.sw.cpp.382.option.gather_function.name": "외부에서 값을 받아오는 함수",
  "rule.sast.sw.cpp.382.option.security_variable_regex.description": "보안기능 결정에 사용하는 변수의 정규식을 입력합니다. 입력값 검증을 수행하는 조건절 블록에서 해당 변수들이 사용된 경우에 결함을 검출합니다.",
  "rule.sast.sw.cpp.382.option.security_variable_regex.name": "보안기능 결정에 사용하는 변수",
  "rule.sast.sw.cpp.382.option.verification_function.description": "입력값을 검증하는 함수 이름을 입력합니다. 외부에서 값을 받아오는 함수에서의 리턴값이나 지정한 파라미터 위치에 사용된 변수가 조건절 및 해당 함수에서 사용된 경우를 파악합니다.",
  "rule.sast.sw.cpp.382.option.verification_function.name": "입력값을 검증하는 함수",
  "rule.sast.sw.cpp.62.description": "잘못된 조건으로 인한 필드 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼를 벗어난 메모리 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.62.example.0.dangerous": "라인 6: index인 n-1 값이 0보다 작거나 같으므로 언더런 오류가 발생했습니다.",
  "rule.sast.sw.cpp.62.example.0.safe": "라인 6: 버퍼의 인덱스는 항상 0보다 크고 버퍼 크기보다 작아야 하므로 조건문에 포함시켜서 문제를 해결합니다.",
  "rule.sast.sw.cpp.62.name": "잘못된 조건으로 인한 필드 버퍼 언더플로우",
  "rule.sast.sw.cpp.63.description": "필드 버퍼 언더플로우 체커는 메모리에서 객체의 유효범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자는 클래스 혹은 구조체의 필드입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.63.example.0.dangerous": "라인 5: 함수 인자값을 -10으로 대입했습니다.\n라인 8: type.a[]의 index 값을 -5로 대입하여 오류가 발생했습니다.",
  "rule.sast.sw.cpp.63.example.0.safe": "라인 8: 버퍼의 인덱스는 항상 0보다 크고 버퍼 크기보다 작아야 하므로 인자값을 설정할 때 주의가 필요합니다.",
  "rule.sast.sw.cpp.63.name": "필드 버퍼 언더플로우",
  "rule.sast.sw.cpp.64.description": "버퍼 언더플로우 체커는 메모리에서 객체의 유효범위 이전 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.64.example.0.dangerous": "라인 2: 함수 인자값을 -20으로 대입했습니다.\n라인 6: buf[]의 인덱스 값을 -10으로 대입하여 오류가 발생했습니다.",
  "rule.sast.sw.cpp.64.example.0.safe": "라인 6: 버퍼의 인덱스는 항상 0보다 크고 버퍼 크기보다 작아야 하므로 인자값을 설정할 때 주의가 필요합니다.",
  "rule.sast.sw.cpp.64.name": "버퍼 언더플로우",
  "rule.sast.sw.cpp.6477.description": "alloca()는 스택에 메모리를 할당하므로 반복문 내에서 잘못 사용하면 스택 오버플로우나 예기치 않은 동작이 발생할 수 있습니다.\n반복문 내에서 alloca()와 같은 스택 메모리 할당 함수를 사용하지 않습니다. 필요한 경우, 반복문 외부에서 메모리를 미리 할당하거나 힙 메모리를 사용하여 메모리를 관리해야 합니다.",
  "rule.sast.sw.cpp.6477.example.0.dangerous": "라인 6: 반복문 내에 alloca()가 호출되어 위험합니다.",
  "rule.sast.sw.cpp.6477.example.0.safe": "라인 5: 반복문 내에 alloca()를 호출하지 않아 안전합니다.",
  "rule.sast.sw.cpp.6477.name": "부적절한 순차 메모리 할당",
  "rule.sast.sw.cpp.6478.description": "싱글톤 패턴은 클래스의 인스턴스가 하나만 존재하도록 보장하지만, 멀티 스레드 환경에서 동기화 없이 사용하면 여러 개의 인스턴스가 생성될 수 있습니다. 이는 데이터 무결성을 해치고 예기치 않은 동작을 초래할 수 있습니다.\n싱글톤 패턴을 멀티 스레드 환경에서 사용할 때는 동기화 메커니즘을 적용하여 인스턴스가 하나만 생성되도록 보장해야 합니다. 이를 위해 표준 라이브러리에서 제공하는 std::mutex, std::lock, std::lock_guard, std::unique_lock, std::call_once 등을 사용할 수 있습니다.",
  "rule.sast.sw.cpp.6478.example.0.dangerous": "라인 11: static 메소드 내에 동기화 라이브러리가 사용되지 않았기 때문에 위험합니다.",
  "rule.sast.sw.cpp.6478.example.0.safe": "라인 13: static 메소드 내에 call_once()를 사용하여 동기화를 하여 안전합니다.",
  "rule.sast.sw.cpp.6478.name": "싱글톤 패턴에서 동기화 없는 멀티 스레드 사용",
  "rule.sast.sw.cpp.65.description": "잘못된 조건으로 인한 버퍼 언더플로우 체커는 잘못된 조건으로 인해 할당된 버퍼를 벗어난 메모리 영역을 읽거나 쓰는 코드를 검출합니다.\n구체적으로는 다음과 같은 상황을 가리킵니다. 정해진 범위의 메모리 주소 이전 영역을 읽고 쓰는 값을 사용했습니다. 잘못된 조건으로 인자값의 범위를 결정합니다. 문제가 된 인자가 지역 변수입니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n버퍼에 값을 쓰거나 읽을 때 적절한 조건을 설정하여 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.cpp.65.example.0.dangerous": "라인 2: x가 -20보다 작은지를 비교했습니다.\n라인 3: foo2() 함수에 인자값을 대입했습니다.\n라인 7: str[]의 인덱스 값이 -20보다 작게 설정되어 오류가 발생했습니다.",
  "rule.sast.sw.cpp.65.example.0.safe": "라인 2 :버퍼의 인덱스는 항상 0보다 크거나 버퍼 크기보다 작아야 합니다. str[]의 인덱스 크기는 총 11이므로(널 제외) n의 크기가 0~10이 되도록 설정해야 합니다.",
  "rule.sast.sw.cpp.65.name": "잘못된 조건으로 인한 버퍼 언더플로우",
  "rule.sast.sw.cpp.67.description": "포맷 스트링 삽입 체커는 포맷 명세와 실제 인자의 타입이 일치하지 않는 코드를 검출합니다.\nC 프로그램에서 사용하는 포맷 명세는 아래와 같습니다. int 타입: d, i unsigned int 타입: u double 타입: f, F, e, E, g, G, a, A unsigned int 타입: x, X, o char 포인터 혹은 문자열 타입: s char 타입: c void 포인터 타입: p Length 필드 정보는 아래와 같습니다. hh: char 타입을 int 타입으로 promote h: short 타입을 int 타입으로 promote l: 정수형인 경우 long 타입을 예상하거나 floating point 타입의 경우 double 타입을 예상함 정수형인 경우 long 타입을 예상하거나 floating point 타입의 경우 double 타입을 예상함\n포맷 스트링 문제로 인해 프로그램의 정보가 노출되거나 외부로부터 공격 받을 수 있는 위험이 있습니다. 예를 들어 printf() 함수에서 포맷 명세와 인자 타입을 형식에 맞게 사용하는 경우 문제가 발생하지 않습니다. 하지만 상호간의 형식이 맞춰져 있지 않았을 경우 메모리 상의 내용이 노출될 수 있습니다. 또한 노출된 메모리 영역에 다른 코드를 삽입할 수 있으므로 보안 문제가 발생할 수 있습니다.\n포맷 스트링과 나중에 입력하는 인자 타입이 일치하도록 해당 포맷 스트링을 변경하거나 인자의 타입을 변경해야 합니다.",
  "rule.sast.sw.cpp.67.example.0.dangerous": "라인 4: 문자열 buf의 포맷 스트링은 \"%s\"입니다. 정수 포맷 스트링인 \"%d\"를 사용했으므로 오류로 검출되었습니다.",
  "rule.sast.sw.cpp.67.example.0.safe": "라인 4: 일치하는 포맷 스트링을 사용하여 문제를 해결합니다.",
  "rule.sast.sw.cpp.67.name": "포맷 스트링 삽입",
  "rule.sast.sw.cpp.67.option.proframe_targets.description": "number_s 타입의 포맷스트링을 검사할 함수를 작성합니다.",
  "rule.sast.sw.cpp.67.option.proframe_targets.name": "Proframe 분석시 분석 대상 함수.",
  "rule.sast.sw.cpp.67.option.targets.description": "아래 목록에 존재하는 함수에 대하여만 검사합니다.",
  "rule.sast.sw.cpp.67.option.targets.name": "검사 대상 string format함수",
  "rule.sast.sw.cpp.75.description": "시스템 정보 노출 체커는 프로그램의 중요한 내부 정보가 오류 메시지와 같은 수단을 통해 노출되는 코드를 검출합니다.\n오류 메시지를 통해 환경, 사용자, 관련 데이터 등 프로그램 내부 정보가 외부로 노출되는 경우 printf() 함수와 fprintf() 함수에서 알람이 발생합니다.\n오류 발생 시 오류 내용이나 프로그램 정보를 출력하면 공격자가 프로그램의 구조를 파악할 수 있습니다. 또한 환경 변수 내용을 출력하면 공격자가 환경 변수에 정의된 정보를 수집할 수 있습니다. 따라서 오류 메시지는 디버그할 경우에만 출력하는 것이 좋습니다.\nprintf() 함수와 fprintf() 함수를 사용할 때 정보가 노출되지 않도록 주의해야 합니다.",
  "rule.sast.sw.cpp.75.example.0.dangerous": "라인 2: 환경 변수의 경로 정보를 대입하므로 해당 정보를 노출할 위험이 있습니다.\n라인 3: 환경 변수의 경로 정보를 노출시켜 공격자에게 해당 정보를 제공하게 됩니다.",
  "rule.sast.sw.cpp.75.example.0.safe": "라인 3: fprint() 함수를 사용하는 구문을 제거합니다. 디버그하는 경우에만 오류 메시지 관련 함수를 사용하도록 제한해야 합니다.",
  "rule.sast.sw.cpp.75.name": "시스템 정보 노출",
  "rule.sast.sw.cpp.75.option.sink_call.description": "민감한 정보가 포함된 경우 위험한 함수 이름을 작성합니다.<br />예시) printf",
  "rule.sast.sw.cpp.75.option.sink_call.name": "민감한 정보 노출 함수",
  "rule.sast.sw.cpp.75.option.source_call.description": "민감한 정보를 입력받는 함수명을 작성합니다.<br />예시) getenv",
  "rule.sast.sw.cpp.75.option.source_call.name": "민감한 정보 입력 함수",
  "rule.sast.sw.cs.1633.description": "하드코드된 사용자 이름과 비밀번호 체커는 암호에 해당하는 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.\n소스 내부에 작성된 사용자 계정을 사용하여 외부와 통신하거나 내부에서 인증 받는 동작은 위험합니다. 관리자는 공격자가 시스템에 접근하여 정보를 유출하는 행위를 발견하기 어렵습니다. 뿐만 아니라 비밀번호를 변경하여 재배포하는 작업도 수행해야 합니다.\n하드코딩된 사용자 이름과 비밀번호를 사용하지 않습니다.",
  "rule.sast.sw.cs.1633.example.0.dangerous": "라인 6: System.Data.SqlClient.SqlConnection에서 하드코딩된 상수 문자열을 데이터베이스를 연결하는데 사용했습니다.",
  "rule.sast.sw.cs.1633.example.0.safe": "라인 6: 하드코딩된 상수 문자열 대신 ConfigurationManager를 통해 설정 파일로부터 해당 정보를 불러오도록 수정합니다.",
  "rule.sast.sw.cs.1633.name": "하드코드된 사용자 이름과 비밀번호",
  "rule.sast.sw.cs.1639.description": "파일 이름 및 경로에 사용된 비 아스키 문자 체커는 파일 이름과 경로에 ASCII 코드에 포함되지 않는 문자를 사용한 경우를 검출합니다.\n최근의 운영 체제에서는 잘 일어나지 않는 일이지만, 시스템 환경에 따라서는 파일 경로에 ASCII를 벗어난 문자가 사용되면 시스템이 오작동 하거나 파일에 접근할 수 없게 되는 등의 문제가 생길 수 있으므로 주의가 필요합니다. 또한 특수문자가 포함된 파일 이름에 명령줄 인터페이스를 통해 접근하려고 할 때 이 파일의 경로가 명령어의 정상적인 해독을 방해하여 공격에 활용될 수도 있습니다.\n파일 시스템에 접근할 때 경로에 이상한 문자가 포함되어 있지 않다는 것이 보장되어야 합니다.",
  "rule.sast.sw.cs.1639.example.0.dangerous": "라인 4: 파일 이름에 ASCII 문자가 아닌 문자를 사용했습니다.",
  "rule.sast.sw.cs.1639.example.0.safe": "라인 4: 파일 이름에 ASCII 문자의 부분집합만 사용합니다.",
  "rule.sast.sw.cs.1639.name": "파일 이름 및 경로에 사용된 비 아스키 문자",
  "rule.sast.sw.cs.1640.description": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.\n정수형 변수가 표현할 수 있는 정수의 범위를 초과하게 될 경우 오버플로우가 발생하여 음수 또는 예상하지 못한 결과값을 얻을 수 있습니다. 예상하지 못한 결과값을 사용하여 메모리를 할당하거나 반복문의 조건을 작성하는 경우 보안 취약점이 발생합니다.\n언어 및 플랫폼에 따라 정수형의 범위를 확인하고 사용하도록 합니다. 정수형 변수를 연산에 사용하는 경우 먼저 결과값의 범위를 확인하도록 합니다. 외부 입력값을 동적 메모리 할당에 사용하는 경우 변수가 적절한 범위 내에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.cs.1640.example.0.dangerous": "라인 5: 외부 입력(args[0])을 사용하여 동적으로 계산한 값을 배열의 크기(size)를 결정하는 데 사용하고 있습니다. 만일 외부 입력으로부터 계산된 값(size)이 오버플로우에 의해 음수값이 되면 배열의 크기가 음수가 되어 코드에 문제가 발생할 수 있습니다.",
  "rule.sast.sw.cs.1640.example.0.safe": "라인 4: 배열의 인덱스로 사용되는 외부 입력값은 그 값의 크기를 검사하는 문장이 필요합니다.",
  "rule.sast.sw.cs.1640.name": "정수 오버플로우",
  "rule.sast.sw.cs.1641.description": "누락된 XML 검증 체커는 외부로부터 생성된 XML 문서를 검증 없이 사용하는 경우를 검출합니다.\n외부로부터 생성된 XML 문서를 검증 없이 사용하는 경우 이를 사용한 공격이 이뤄질 수 있습니다. XML 입력의 경우 XML 스키마 또는 DTD에 대한 검증이 필요합니다.\n외부로부터 생성된 XML 문서를 검증하고 사용합니다.",
  "rule.sast.sw.cs.1641.example.0.dangerous": "라인 8: 생성된 XML에 대해서 XML 스키마 또는 DTD에 대한 검증이 이뤄지지 않았습니다.",
  "rule.sast.sw.cs.1641.example.0.safe": "라인 8: XmlDocument.Validate() 메소드 등을 사용하여 생성된 XML 입력의 스키마 또는 DTD를 검증 과정을 거쳐줍니다.",
  "rule.sast.sw.cs.1641.name": "누락된 XML 검증",
  "rule.sast.sw.cs.1645.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n중요 정보를 솔트(Salt) 없이 해싱하여 저장하면 공격자는 레인보우 테이블과 같은 방법으로 해시값을 미리 계산하여 원래 값을 찾을 수 있게 됩니다.\n특히 비밀번호와 같은 중요 정보를 해싱하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "rule.sast.sw.cs.1645.example.0.dangerous": "라인 1: 비밀번호 저장 시 솔트 없이 비밀번호에 대한 해시값을 얻고 있습니다.",
  "rule.sast.sw.cs.1645.example.0.safe": "라인 1: 비밀번호와 솔트를 해시 함수의 입력으로 해시값을 계산하여 사용합니다.",
  "rule.sast.sw.cs.1645.name": "솔트 없는 해시 사용",
  "rule.sast.sw.cs.1844.description": "private 배열에 저장된 public 데이터 체커는 외부에서 접근 가능한 배열 객체를 private 배열 필드 변수에 저장하는 경우를 검출합니다.\n외부에서 접근 가능한 배열 객체를 private으로 선언된 배열 필드 변수에 저장하면 private 배열을 외부에서 접근할 수 있게 되어 접근 제어가 실질적으로 이루어 지지 않습니다. 사용자 정보 또는 외부에 노출하면 안되는 정보가 노출될 수 있습니다. 따라서 보안 상 치명적인 문제가 될 수 있습니다.\nprivate 배열 필드 변수에는 클래스 내부에서 직접 생성한 배열만을 저장합니다. 외부의 데이터를 배열에 전달해야 할 때는 배열 객체를 직접 저장하지 말고 각 원소의 값을 별도로 복사하여 저장합니다.",
  "rule.sast.sw.cs.1844.example.0.dangerous": "라인 10: userRoles 필드는 private으로 선언되어 있습니다.\n라인 14: public으로 선언된 setUserRoles() 메소드를 통해 외부의 배열 객체가 할당되면 userRoles 배열에 외부에서 임의로 접근 가능해집니다.",
  "rule.sast.sw.cs.1844.example.0.safe": "라인 15: 배열 객체 자체를 대입하는 대신 배열의 각 원소 내용을 복사합니다.",
  "rule.sast.sw.cs.1844.name": "private 배열에 저장된 public 데이터",
  "rule.sast.sw.cs.1845.description": "public 메소드에 의해 반환된 private 컬렉션 체커는 private이 아닌 메소드에서 private으로 선언된 배열 또는 컬렉션 타입 필드의 객체가 그대로 반환되는 경우를 검출합니다.\nprivate으로 선언된 컬렉션 객체를 public 메소드에서 그대로 반환하면 객체 주소 값이 외부로 공개되어 외부에서 임의로 내용 수정이 가능해집니다.\nprivate로 선언된 컬렉션 객체를 public 메소드를 통해서 통째로 반환하지 않도록 합니다. 필요한 경우 복사본을 생성하여 반환하거나 접근 및 수정을 제어하는 별도의 public 메소드를 선언하여 사용해야 합니다.",
  "rule.sast.sw.cs.1845.example.0.dangerous": "라인 18: private 필드 colors와 secureName이 각기 라인 18과 23에서 public 메소드에 의해 반환됩니다.",
  "rule.sast.sw.cs.1845.example.0.safe": "라인 18: colors와 secureName의 복사본을 만들어 반환하면 외부에서 조작하는 것을 방지할 수 있습니다.",
  "rule.sast.sw.cs.1845.name": "public 메소드에 의해 반환된 private 컬렉션",
  "rule.sast.sw.cs.1846.description": "이름에 기반한 타입 검사 체커는 한 객체의 타입을 클래스 이름 기반으로 판단하는 경우를 검출합니다.\n만일 공격자가 동일한 이름의 클래스를 삽입하거나 동일한 이름의 클래스가 여럿 존재하는 경우 해당 프로그램이 오동작을 일으킬 가능성이 있습니다.\n클래스 이름 문자열 대신 Type 객체와 같은 다른 방법으로 비교합니다.",
  "rule.sast.sw.cs.1846.example.0.dangerous": "라인 12: \"someThing.Special\" 이라는 클래스 이름 문자열로 타입을 확인하고 있습니다.",
  "rule.sast.sw.cs.1846.example.0.safe": "라인 12: 클래스 이름 문자열 대신 Type 객체와 같은 다른 방법으로 비교합니다.",
  "rule.sast.sw.cs.1846.name": "이름에 기반한 타입 검사",
  "rule.sast.sw.cs.1847.description": "부적절한 인증 체커는 사용자 인증 후 모든 실행 경로에 대해 적절하게 접근 제어를 수행하지 않는 코드를 검출합니다.\n프로그램이 모든 가능한 실행 경로에 대해서 접근 제어를 검사하지 않거나 불완전하게 검사하는 경우, 공격자는 접근 가능한 실행 경로를 통해 정보를 유출할 수 있습니다.\n애플리케이션이 제공하는 정보와 기능을 역할에 따라 배분함으로써 공격자에게 노출되는 공격 노출면(Attack Surface)을 최소화하고 사용자의 권한에 따른 ACL(Access Control List)을 관리하여 정보 유출을 최소화해야 합니다.",
  "rule.sast.sw.cs.1847.example.0.dangerous": "라인 8: 사용자 제한을 두어야 하는 메소드를 그대로 모든 사용자에게 노출시키고 있습니다.",
  "rule.sast.sw.cs.1847.example.0.safe": "라인 7: ASP.NET MVC 뷰에 대한 액세스를 제한하려면 AuthorizeAttribute 클래스를 사용하여 뷰를 렌더링하는 동작 메소드에 대한 액세스를 제한해야 합니다.",
  "rule.sast.sw.cs.1847.name": "부적절한 인증",
  "rule.sast.sw.cs.1847.option.authz_needed_class.description": "사용자 권한 확인이 필요한 클래스의 이름들을 적습니다.",
  "rule.sast.sw.cs.1847.option.authz_needed_class.name": "사용자 권한 확인 필요 클래스 이름",
  "rule.sast.sw.cs.1847.option.authz_needed_method.description": "사용자 권한 확인이 필요한 메소드의 이름들을 적습니다.",
  "rule.sast.sw.cs.1847.option.authz_needed_method.name": "사용자 권한 확인 필요 메소드 이름",
  "rule.sast.sw.cs.1847.option.custom_authz_attribute.description": "사용자가 정의한 권한 속성이 있는 경우 적어 줍니다.",
  "rule.sast.sw.cs.1847.option.custom_authz_attribute.name": "사용자 정의 권한 속성",
  "rule.sast.sw.cs.1848.description": "누락된 로그인 제어 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\nID와 비밀번호 변수의 식별을 위한 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음 로직이 구현되어 있는지를 검사합니다. 로그인 루틴이 호출되기 전 로그인 시도를 반복문에서 제어합니다. 다만 조건문이 횟수 제한이 없는 경우 로그인 입력을 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 대소 비교 연산자를 사용하고 있습니다.\n로그인 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 로그인에 성공할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.cs.1848.example.0.dangerous": "라인 14: OnLoginError에서 로그인 오류가 발생해도 아무런 조치를 하지 않고 있습니다.",
  "rule.sast.sw.cs.1848.example.0.safe": "라인 19: LoginErrors가 3번 초과로 발생할 경우 PasswordRecovertUrl로 재연결하도록 합니다.",
  "rule.sast.sw.cs.1848.name": "누락된 로그인 제어",
  "rule.sast.sw.cs.1848.option.login_classes.description": "로그인 관리 기능을 담당하는 클래스 이름을 적습니다.",
  "rule.sast.sw.cs.1848.option.login_classes.name": "로그인 관리 클래스 이름",
  "rule.sast.sw.cs.1848.option.login_error_event_handlers.description": "로그인 에러 이벤트 핸들러 명을 적습니다.",
  "rule.sast.sw.cs.1848.option.login_error_event_handlers.name": "로그인 에러 이벤트 핸들러",
  "rule.sast.sw.cs.1849.description": "중요 기능에 대해 누락된 인증 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.\n검사할 중요 기능과 필요한 인증 제어 방식을 옵션으로 지정할 수 있습니다.\n적절한 인증 과정이 없이 중요 정보(계좌이체 정보, 개인 정보 등)를 열람 또는 변경하거나 상당한 리소스를 소모하는 작업을 수행하면 위험할 수 있습니다. 클라이언트의 보안 검사를 우회하여 서버에 접근하지 못하도록 설계하고, 은행 계좌이체 등 중요한 페이지는 재인증을 적용해야 합니다. 또한 안전하다고 검증된 라이브러리나 프레임워크(OpenSSL이나 ESAPI의 보안 기능 등)를 사용하는 것도 중요합니다.\n중요 기능에 접근하기 전 인증 과정을 거칩니다.",
  "rule.sast.sw.cs.1849.example.0.dangerous": "라인 16: 재인증 과정이 없습니다.",
  "rule.sast.sw.cs.1849.example.0.safe": "라인 16: 재인증 로직이 추가되었습니다.",
  "rule.sast.sw.cs.1849.name": "중요 기능에 대해 누락된 인증",
  "rule.sast.sw.cs.1849.option.authentication_functions.description": "인증을 수행하는 함수들을 적어 주십시오.",
  "rule.sast.sw.cs.1849.option.authentication_functions.name": "인증 함수들",
  "rule.sast.sw.cs.1849.option.critical_functions.description": "인증없이 실행될 경우 위험한 함수들을 적어 주십시오.",
  "rule.sast.sw.cs.1849.option.critical_functions.name": "인증 취약 함수들",
  "rule.sast.sw.cs.1850.description": "주석문 안의 비밀번호 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n옵션에 지정된 비밀번호에 대한 정보가 주석문에 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성된 후에는 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.cs.1850.example.0.dangerous": "라인 13: 주석문에 사용자가 옵션 파일에 지정한 민감한 정보인 \"password\"가 존재합니다.",
  "rule.sast.sw.cs.1850.example.0.safe": "라인 13: 주석에서 비밀번호를 삭제합니다.",
  "rule.sast.sw.cs.1850.name": "주석문 안의 비밀번호",
  "rule.sast.sw.cs.1850.option.sensitive_data.description": "중요 정보 패턴을 적어 주십시오.",
  "rule.sast.sw.cs.1850.option.sensitive_data.name": "중요 정보 패턴",
  "rule.sast.sw.cs.1852.description": "XSLT 삽입 체커는 검증되지 않은 XSL 스타일 시트를 사용한 XSL 변환 명령 실행을 검출합니다.\n검증되지 않은 XSL 변환 명령을 그대로 수행하면 공격자가 파일 시스템에서 임의의 파일에 접근하거나, 공격자가 의도한 스크립트를 사용자의 웹브라우저에서 실행시킬 수 있습니다.\n신뢰할 수 있는 XSL 스타일 시트만을 변환에 사용합니다.",
  "rule.sast.sw.cs.1852.example.0.dangerous": "라인 18: 외부 입력으로 지정된 스타일 시트를 변환에 사용했습니다.",
  "rule.sast.sw.cs.1852.example.0.safe": "라인 18: 미리 준비된, 신뢰할 수 있는 스타일 시트만 변환에 사용합니다.",
  "rule.sast.sw.cs.1852.name": "XSLT 삽입",
  "rule.sast.sw.cs.1853.description": "세션 간 데이터 누출 체커는 다중 스레드 환경에서 IHttpHandler 인터페이스를 구현하는 클래스에 필드 변수가 사용되는 경우를 검출합니다.\nHttp 처리기는 다중 스레드 환경에서 수행되므로 IHttpHandler 인터페이스의 하위 클래스에서 멤버 필드에 정보를 저장하면 이 정보에 대한 경쟁 조건이 발생할 수 있습니다.\n가급적 IHttpHandler 인터페이스의 하위 클래스에 멈버 필드를 선언하여 정보를 저장하지 않도록 하고 최대한 지역 변수를 선언하여 사용해야 합니다.",
  "rule.sast.sw.cs.1853.example.0.dangerous": "라인 11: 다중 스레드 환경에서 IHttpHandler를 구현하는 클래스에 정보를 저장하는 필드가 포함되지 않도록 해야 합니다.",
  "rule.sast.sw.cs.1853.example.0.safe": "라인 14: 다중 스레드 환경에서는 싱글톤 객체 필드에 경쟁 조건이 발생할 수 있습니다. 따라서 다중 스레드 환경에서 IHttpHandler를 구현하는 클래스에 정보를 저장하는 필드가 포함되지 않도록 하여 다른 세션에서 해당 세션의 테이터를 접근할 수 없도록 해야 합니다. 맴버 필드를 선언하는 대신 필요한 경우 지역 변수나 세션 변수(Session Variable)를 선언해서 사용해야 합니다.",
  "rule.sast.sw.cs.1853.name": "세션 간 데이터 누출",
  "rule.sast.sw.cs.1855.description": "하드코드된 암호화 키 체커는 소스 코드 내에서 하드코딩된 암호화 키를 사용하는 경우를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역산하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코딩하여 코드를 작성하는 수도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코딩하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "rule.sast.sw.cs.1855.example.0.dangerous": "라인 10: CreateEncryptor 메소드에 하드코딩된 상수 배열을 암호화 키로 전달하고 있습니다.",
  "rule.sast.sw.cs.1855.example.0.safe": "라인 12: 안전하게 자동생성된 키를 사용합니다.",
  "rule.sast.sw.cs.1855.name": "하드코드된 암호화 키",
  "rule.sast.sw.cs.1857.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.\n프로그램의 자동 업데이트와 같은 상황에서 코드에 대한 암호화된 서명을 사용하지 않고 코드를 다운로드하면 위험합니다. 웹 서버에서 실행될 수 있는 위험한 형식의 파일을 원격지로부터 다운로드하여, 코드의 출처나 무결성 검사 없이 클라이언트에서 실행하는 경우 공격자가 의도하는 행위를 수행할 수 있습니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "rule.sast.sw.cs.1857.example.0.dangerous": "라인 3: 로드되는 코드의 무결성을 확인할 수 없어 해당 코드가 올바르게 로딩되었는지 보장할 수 없습니다.",
  "rule.sast.sw.cs.1857.example.0.safe": "라인 10: 클래스를 로드하기 전 \"strong-named assembly\"를 실행하여 코드가 변조되지 않았음을 확인합니다.",
  "rule.sast.sw.cs.1857.name": "무결성 검사 없는 코드 다운로드",
  "rule.sast.sw.cs.1858.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "rule.sast.sw.cs.1858.example.0.dangerous": "라인 3: 파일을 Exists() 함수를 호출한 후 삭제 작업을 수행하고 있습니다. 파일의 접근 시점이 다릅니다.",
  "rule.sast.sw.cs.1858.example.0.safe": "라인 6: Exist() 함수 대신 반환 값을 참조하거나 예외로 파일을 검사합니다.",
  "rule.sast.sw.cs.1858.name": "TOCTOU 경쟁 조건",
  "rule.sast.sw.cs.1859.description": "중요한 리소스에 대한 잘못된 권한 할당 체커는 설정 파일, 실행 파일, 라이브러리 등을 SW 관리자가 아닌 사용자가 읽고 쓸 수 있는 코드를 검출합니다.\nDirectorySecurity.AddAccessRule() 메소드 등을 잘못 사용하면, 설정 파일, 실행파일, 라이브러리 등을 SW 관리자외의 사용자가 읽고 쓰기가 가능하도록 권한을 부여하는 위험한 결과를 초래할 수 있습니다.\nSW가 중요한 보안 관련 리소스에 대하여 읽기 또는 수정하기 권한을 의도하지 않게 허가할 경우, 권한을 갖지 않은 사용자가 해당 리소스를 사용하게 됩니다.\n중요한 리소스에 대해서는 특정 사용자에게만 권한을 부여하도록 수정합니다.",
  "rule.sast.sw.cs.1859.example.0.dangerous": "라인 10: 모든 사용자에게 중요 파일을 다룰 수 있는 모든 권한을 부여하고 있습니다.",
  "rule.sast.sw.cs.1859.example.0.safe": "라인 10: 중요한 리소스에 대해서는 특정 사용자에게만 권한을 부여하도록 수정합니다.",
  "rule.sast.sw.cs.1859.name": "중요한 리소스에 대한 잘못된 권한 할당",
  "rule.sast.sw.cs.2213.description": "취약한 직렬화 생성 허용 체커는 특정 어셈블리 내에서 일반 생성자의 보안 요구사항이 직렬화 생성자에는 적용되지 않은 경우를 검출합니다.\nSystem.Runtime.Serialization.ISerializable 인터페이스를 상속하면 사용자 정의 직렬화를 구현하게 됩니다. 부분 신뢰 호출자를 허용(AllowPartiallyTrustedCaller)하는 어셈블리 내에서 사용자 정의 직렬화 구현 클래스를 작성할 때, 사용자 정의 직렬화 생성자와 일반 생성자 사이에 보안 요구사항을 일치시켜야 합니다.\n직렬화 생성자도 객체를 생성하고 초기화하는 작업을 하므로 일반적인 생성자에 어떤 보안 요구사항이 적용되어 있다면 같은 조건을 직렬화 생성자에서도 확인해야 합니다. 그렇지 않으면 권한이 없어서 일반적인 생성자로는 객체 성성을 할 수 없는 상황에서 우회적으로 이 타입의 객체를 생성하는 것이 가능해집니다.\n객체 생성에 필요한 모든 보안 상의 요구 조건을 직렬화 생성자에도 동일하게 적용시킵니다.",
  "rule.sast.sw.cs.2213.example.0.dangerous": "라인 16: 일반 생성자에 특정한 권한 요구사항을 부여했습니다.\n라인 23: 일반 생성자에 부여된 조건이 직렬화 생성자에는 부여되지 않아서 권한 우회가 가능해집니다.",
  "rule.sast.sw.cs.2213.example.0.safe": "라인 22: 일반 생성자에 부여된 조건이 직렬화 생성자에도 적용됩니다.",
  "rule.sast.sw.cs.2213.name": "취약한 직렬화 생성 허용",
  "rule.sast.sw.cs.2691.description": "비어 있는 비밀번호 체커는 비밀번호를 초기화할 때 빈 값을 지정하는 경우를 검출합니다.\n시스템의 보안은 비밀번호에 의지합니다. 비밀번호가 빈 값이면, 시스템이 취약해집니다.\n비밀번호를 빈 값으로 지정하지 않습니다.",
  "rule.sast.sw.cs.2691.example.0.dangerous": "라인 15: 함수 NetworkCredential()의 인자 초기화 벡터가 빈 값입니다.\n라인 20: vuln_myCred의 비밀번호를 비어있는 값으로 초기화했습니다.",
  "rule.sast.sw.cs.2691.example.0.safe": "라인 15: NetworkCredential()의 인자를 외부에서 불러온 비밀번호로 사용합니다.",
  "rule.sast.sw.cs.2691.name": "비어 있는 비밀번호",
  "rule.sast.sw.cs.2692.description": "하드코딩된 HMAC 비밀 키 체커는 HMAC의 비밀 키가 하드코드 되었있는 경우를 검출합니다.\n소스 코드에 접근 권한이 있는 사람이 HMAC의 비밀 키를 알 수 있습니다. 비밀 키가 유출되면, HMAC 함수가 취약해집니다.\nHMAC 비밀 키를 하드코딩하지 않도록 합니다.",
  "rule.sast.sw.cs.2692.example.0.dangerous": "라인 17: HMAC의 비밀값 'key'가 하드코드 되었습니다.\n라인 18: HMAC의 비밀값 'key'가 하드코드 되었습니다.",
  "rule.sast.sw.cs.2692.example.0.safe": "라인 15: HMAC의 비밀 키를 외부에서 불러온 값을 사용합니다.",
  "rule.sast.sw.cs.2692.name": "하드코딩된 HMAC 비밀 키",
  "rule.sast.sw.cs.2692.option.hmac_algorithm.description": "검출할 HMAC 알고리즘을 입력합니다.",
  "rule.sast.sw.cs.2692.option.hmac_algorithm.name": "HMAC 알고리즘.",
  "rule.sast.sw.cs.2693.description": "하드코딩된 초기화 벡터 체커는 초기화 벡터 값이 하드코딩되어 있는 경우를 검출합니다.\n초기화 벡터는 암호학적 임의 난수 생성기를 통해 생성해야 합니다. 하드코딩된 IV를 사용한 암호문은 쉽게 추측할 수 있고 '사전 공격'에 취약합니다.\n초기화 벡터를 하드코딩하지 않습니다.",
  "rule.sast.sw.cs.2693.example.0.dangerous": "라인 12: 암호 알고리즘 클래스 'rijn'의 비밀값 'key'가 하드코드 되었습니다.",
  "rule.sast.sw.cs.2693.example.0.safe": "라인 12: IV 값으로 외부에서 불러온 값을 사용합니다.",
  "rule.sast.sw.cs.2693.name": "하드코딩된 초기화 벡터",
  "rule.sast.sw.cs.2696.description": "비어 있는 HMAC 비밀 키 체커는 HMAC 함수를 사용할 때 비밀 키가 비어 있는 값인 경우를 검출합니다.\nHMAC의 암호학적 강도는 비밀 키의 크기에 비례합니다. 비밀 키가 비어 있으면, HMAC 함수의 보안을 약화시킵니다.\nHMAC 비밀 키가 비어 있지 않도록 합니다.",
  "rule.sast.sw.cs.2696.example.0.dangerous": "라인 25: HMAC의 비밀값 'key'가 비어 있습니다.\n라인 26: HMAC의 비밀값 'key'가 비어 있습니다.",
  "rule.sast.sw.cs.2696.example.0.safe": "라인 23: HMAC의 비밀 키를 외부에서 불러온 값을 사용합니다.",
  "rule.sast.sw.cs.2696.name": "비어 있는 HMAC 비밀 키",
  "rule.sast.sw.cs.2696.option.hmac_algorithm.description": "검출할 HMAC 알고리즘을 입력합니다.",
  "rule.sast.sw.cs.2696.option.hmac_algorithm.name": "HMAC 알고리즘.",
  "rule.sast.sw.cs.2701.description": "빈 비밀번호로 키 파생 함수 사용 체커는 암호 기반 키 파생 함수를 빈 비밀번호로 사용하는 경우를 검출합니다.\n암호 기반 키 파생 함수(PBKDF)를 빈 비밀번호로 사용하면 생성되는 키가 오직 솔트에 의해서만 결정됩니다. 이렇게 키를 생성하면 결과물의 엔트로피가 낮아지기 때문에 공격자가 예측 가능한 키가 생성될 수 있습니다.\n암호 기반 키 파생 함수를 사용할 때 항상 비밀번호를 전달해야 합니다.",
  "rule.sast.sw.cs.2701.example.0.dangerous": "라인 15: 암호 기반 키 파생 함수 클래스 Rfc2898DeriveBytes 객체를 생성할 때 전달하는 비밀번호가 빈 값입니다.",
  "rule.sast.sw.cs.2701.example.0.safe": "라인 15: 키 파생 함수 객체를 생성할 때 적절한 암호를 전달합니다.",
  "rule.sast.sw.cs.2701.name": "빈 비밀번호로 키 파생 함수 사용",
  "rule.sast.sw.cs.2702.description": "하드코딩된 비밀번호로 키 파생 함수 사용 체커는 암호 기반 키 파생 함수에 사용되는 비밀번호가 하드코딩된 경우를 검출합니다.\n암호 기반 키 파생 함수(PBKDF)를 하드코딩된 비밀번호로 사용할 경우 프로젝트에 참여하는 모든 개발자가 이를 볼 수 있어 키가 노출될 가능성이 높아집니다.\n암호 기반 키 파생 함수를 사용할 때 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다.",
  "rule.sast.sw.cs.2702.example.0.dangerous": "라인 17: 암호 기반 키 파생 함수 클래스 Rfc2898DeriveBytes 객체를 생성할 때 전달하는 비밀번호가 하드코딩되었습니다.",
  "rule.sast.sw.cs.2702.example.0.safe": "라인 11: 키 파생 함수 객체를 생성할 때 외부에서 불러온 비밀번호를 사용합니다.",
  "rule.sast.sw.cs.2702.name": "하드코딩된 비밀번호로 키 파생 함수 사용",
  "rule.sast.sw.cs.2703.description": "안전하지 않은 DLL 사용 체커는 검증되지 않은 DLL을 적재하는 경우를 검출합니다.\n안전한 dll의 목록을 옵션으로 미리 지정할 수 있습니다.\ndll 파일에는 다른 언어로 작성되었거나 검증되지 않은 소스 코드로부터 생성된 기계 코드가 포함되어 있습니다. 따라서 분석 도구가 지원하지 않는 언어로 작성된 DLL을 사용하거거나 DLL의 원본 소스 코드에 접근할 수 없는 경우 안전을 보장할 수 없습니다.\n이미 검증이 끝난 dll 파일만 사용합니다. 검증된 dll 파일은 체커 옵션에 등록하면 됩니다.",
  "rule.sast.sw.cs.2703.example.0.dangerous": "라인 8: 검증되지 않은 yourdll.dll 파일이 적재되었습니다.",
  "rule.sast.sw.cs.2703.example.0.safe": "라인 9: 검증된 user32.dll 파일을 적재합니다.",
  "rule.sast.sw.cs.2703.name": "안전하지 않은 DLL 사용",
  "rule.sast.sw.cs.2703.option.exception_dll.description": "예외처리할 DLL을 입력하세요.",
  "rule.sast.sw.cs.2703.option.exception_dll.name": "예외처리할 DLL",
  "rule.sast.sw.cs.2704.description": "누락된 헤더 검사 체커는 헤더 검사 기능이 꺼져있는 경우를 검출합니다.\n헤더 검사 기능을 끄면 애플리케이션이 헤더 변조 공격에 취약해집니다. EnableHeaderChecking 플래그를 거짓으로 설정하지 마십시오.\nEnableHeaderChecking 플래그를 참으로 설정합니다.",
  "rule.sast.sw.cs.2704.example.0.dangerous": "라인 15: EnableHeaderChecking 플래그가 거짓으로 설정되었습니다.",
  "rule.sast.sw.cs.2704.example.0.safe": "라인 7: EnableHeaderCheking을 true로 설정합니다. 해당 속성의 기본값이 true이기 때문에 굳이 true로 설정하지 않더라도 해당 속성을 아예 건드리지 않으면 됩니다.",
  "rule.sast.sw.cs.2704.name": "누락된 헤더 검사",
  "rule.sast.sw.cs.2705.description": "EnableViewStateMac 속성 비활성화 체커는 EnableViewStateMac 속성을 false로 설정하는 경우를 검출합니다.\n해당 속성은 웹 페이지가 클라이언트에서 다시 로드될 때 ASP.NET에서 페이지의 뷰 상태에 대해 MAC(Machine Authentication Check)를 확인해야 하는지 여부를 설정하는 플래그입니다. MSDN에서 보안 상 해당 속성을 false로 두지 말 것을 권장합니다.(https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.page.enableviewstatemac)\nEnableViewStateMac 속성에 true를 대입하지 않도록 합니다.",
  "rule.sast.sw.cs.2705.example.0.dangerous": "라인 17: EnableViewStateMac 플래그가 false로 설정되었습니다.\n라인 19: EnableViewStateMac 플래그가 false로 설정되었습니다.",
  "rule.sast.sw.cs.2705.example.0.safe": "라인 7: EnableViewStateMac을 true로 설정합니다. 해당 속성의 기본값이 true이기 때문에 굳이 true로 설정하지 않더라도 해당 속성을 아예 건드리지 않으면 됩니다.",
  "rule.sast.sw.cs.2705.name": "EnableViewStateMac 속성 비활성화",
  "rule.sast.sw.cs.2708.description": "쉬운 솔트 값 사용 체커는 솔트 값을 쉽게 유추할 수 있는 경우를 검출합니다.\nRfc2898DeriveBytes는 PBKDF2의 구현체입니다. 솔트 값이 쉽게 추측된다면, 공격자는 레인보우 테이블을 이용하여 비밀번호를 유추할 수 있습니다. 이 체커는 솔트 값이 비밀번호와 같아 쉽게 추측될 수 있는 상황을 탐지합니다.\n솔트 값이 쉽게 추측된다면, 공격자는 레인보우 테이블을 이용하여 비밀번호를 유추할 수 있습니다.\n솔트 값을 유추하기 어렵게 지정합니다.",
  "rule.sast.sw.cs.2708.example.0.dangerous": "라인 18: 솔트와 비밀번호의 값이 같습니다.\n라인 19: 솔트와 비밀번호의 값이 같습니다.",
  "rule.sast.sw.cs.2708.example.0.safe": "라인 15: 솔트와 비밀번호의 값을 다르게 사용합니다.",
  "rule.sast.sw.cs.2708.name": "쉬운 솔트 값 사용",
  "rule.sast.sw.cs.2710.description": "반복 횟수가 적은 키 파생 함수 사용 체커는 해시 반복 횟수가 충분하지 않은 경우를 검출합니다.\n반복 횟수가 충분하지 않다면, PBKDF2는 비밀번호 해시의 엔트로피를 보장할 수 없습니다. 보안을 위해서 10,000번 이상이 권장됩니다.\n해시 반복 횟수를 충분하게 사용합니다.",
  "rule.sast.sw.cs.2710.example.0.dangerous": "라인 17: 해시 반복 횟수가 충분하지 않습니다.\n라인 20: Rfc2898DeriveBytes 생성자의 3번째 인자에 들어간 해시 반복 횟수가 충분하지 않습니다.",
  "rule.sast.sw.cs.2710.example.0.safe": "라인 15: 해시 반복 횟수를 10000보다 큰 값으로 설정합니다.",
  "rule.sast.sw.cs.2710.name": "반복 횟수가 적은 키 파생 함수 사용",
  "rule.sast.sw.cs.2710.option.iter_num.description": "최소 반복 횟수를 입력하세요.",
  "rule.sast.sw.cs.2710.option.iter_num.name": "최소 반복 횟수",
  "rule.sast.sw.cs.2712.description": "부적절한 RSA 패딩 체커는 RAS 알고리즘 사용 시 부적절한 패딩 방식을 사용하는 경우를 검출합니다.\nRSACryptoServiceProvider 클래스를 사용할 때 OAEP 패딩 없이 암호화를 하면 취약합니다. Encrypt(Byte[], Boolean) 메소드를 사용한다면 두 번째 인자로 false를 전달하면 안됩니다.\n적절한 RSA 패딩을 사용할 경우 더 안전한 암호화가 수행되기 때문에 권장 사항에 맞춰서 일정 수준 이상의 패딩을 사용해야 합니다.\nOAEP 방식을 사용하는 것이 좋습니다.",
  "rule.sast.sw.cs.2712.example.0.dangerous": "라인 44: RSACryptoServiceProvider 인스턴스 'RSA'의 'Encrpyt()'의 두 번째 매개 변수를 false로 실행합니다.",
  "rule.sast.sw.cs.2712.example.0.safe": "라인 3: RSACryptoServiceProvider 인스턴스 'RSA'의 'Encrpyt()'의 두 번째 매개 변수를 true로 설정합니다.",
  "rule.sast.sw.cs.2712.name": "부적절한 RSA 패딩",
  "rule.sast.sw.cs.2714.description": "익명 LDAP 바인딩 사용 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.\nDirectoryEntry()의 매개 변수가 3개 미만이면 익명 LDAP 바인딩이 됩니다.\n사용자 인증을 위한 별도의 작업을 수행하지 않고 익명 바인딩을 허용하면 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.\n사용자 이름과 비밀번호를 명시하여 LDAP 바인딩을 수행합니다.",
  "rule.sast.sw.cs.2714.example.0.dangerous": "라인 12: 클라이언트에 LDAP 익명 연결을 시도하는 코드가 있을 경우, 서버에서 LDAP 익명 접근을 허용하고 있을 수 있습니다. 따라서 공격자가 LDAP 디렉토리에 접근하지 못하도록 서버 설정을 변경해야 합니다.",
  "rule.sast.sw.cs.2714.example.0.safe": "라인 12: LDAP 서버 내에서 익명 접근을 허용하지 않을 경우, 클라이언트에서 익명으로 LDAP 접근하는 코드는 의미가 없어지므로 삭제합니다.",
  "rule.sast.sw.cs.2714.name": "익명 LDAP 바인딩 사용",
  "rule.sast.sw.cs.2721.description": "HttpOnly가 아닌 쿠키 체커는 HttpOnly 속성을 부여하지 않은 쿠키 사용을 검출합니다.\n해당 속성을 활성화하지 않으면 스크립트의 쿠키 접근을 방지하지 못해 공격자가 손쉽게 쿠키에 접근할 수 있습니다.\n쿠키를 항상 HttpOnly 속성을 활성화하여 사용합니다.",
  "rule.sast.sw.cs.2721.example.0.dangerous": "라인 19: HttpCookie 인스턴스 'vulnCookie'의 HttpOnly 속성이 참이 아닙니다.",
  "rule.sast.sw.cs.2721.example.0.safe": "라인 19: 쿠키의 HttpOnly 속성을 true로 변경합니다.",
  "rule.sast.sw.cs.2721.name": "HttpOnly가 아닌 쿠키",
  "rule.sast.sw.cs.2722.description": "광범위 도메인을 허용하는 쿠키 사용 체커는 광범위 도메인을 대상으로 하는 쿠키를 사용하는 코드를 검출합니다.\n개발자는 쿠키를 `.example.com`과 같은 기본 도메인 전반에 걸쳐 활성화되도록 설정하기도 합니다. 이 경우 기본 도메인 및 모든 하위 도메인의 모든 웹 애플리케이션에 쿠키가 노출됩니다. 쿠키는 흔히 세션 식별자와 같은 민감한 정보를 전하기 때문에 애플리케이션 전반에서 쿠키를 공유하면 한 애플리케이션의 취약점이 다른 애플리케이션을 손상시킬 수 있습니다.\n쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.cs.2722.example.0.dangerous": "라인 18: HttpCookie 인스턴스 'vulnCookie'의 도메인이 너무 넓게 설정되어 있습니다.\n라인 23: 사용자가 금지한 도메인을 사용했습니다.",
  "rule.sast.sw.cs.2722.example.0.safe": "라인 13: 도메인의 길이가 3 이상 되도록 설정합니다.",
  "rule.sast.sw.cs.2722.name": "광범위 도메인을 허용하는 쿠키 사용",
  "rule.sast.sw.cs.2722.option.broad_custom_domain.description": "추가로 검출하고 싶은 도메인을 입력하세요.",
  "rule.sast.sw.cs.2722.option.broad_custom_domain.name": "추가로 검출하고 싶은 도메인",
  "rule.sast.sw.cs.2722.option.exception_domain.description": "예외 처리하고 싶은 도메인을 입력하세요",
  "rule.sast.sw.cs.2722.option.exception_domain.name": "예외 처리하고 싶은 도메인",
  "rule.sast.sw.cs.2723.description": "광범위 경로를 허용하는 쿠키 사용 체커는 최상위 경로로 지정된 쿠키를 사용하는 코드를 검출합니다.\n개발자는 흔히 루트 컨텍스트 경로(`/`)에서 접근할 수 있도록 쿠키를 설정합니다. 그러면 도메인의 모든 웹 애플리케이션에 대해 쿠키가 노출됩니다. 쿠키는 흔히 세션 식별자와 같은 민감한 정보를 전하기 때문에 애플리케이션 전반에서 쿠키를 공유하면 한 애플리케이션의 취약점이 다른 애플리케이션을 손상시킬 수 있습니다.\n쿠키의 허용 경로를 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.cs.2723.example.0.dangerous": "라인 18: HttpCookie 인스턴스 'vulnCookie'의 도메인이 너무 넓게 설정되어 있습니다.",
  "rule.sast.sw.cs.2723.example.0.safe": "라인 18: 쿠키의 도메인을 좀 더 세부적으로 설정합니다.",
  "rule.sast.sw.cs.2723.name": "광범위 경로를 허용하는 쿠키 사용",
  "rule.sast.sw.cs.2723.option.path_pattern.description": "경로 패턴(깊이 등)을 입력하세요.",
  "rule.sast.sw.cs.2723.option.path_pattern.name": "경로 패턴(깊이 등).",
  "rule.sast.sw.cs.2724.description": "ECB 모드로 암호화 알고리즘 사용 체커는 암호화할 때 ECB 모드를 사용하는 경우를 검출합니다.\nECB 모드는 동일한 일반 텍스트 블록에 대해 같은 암호화 텍스트를 생성하므로 본질적으로 취약합니다.\nCBC나 CFB와 같은 안전한 모드를 사용합니다.",
  "rule.sast.sw.cs.2724.example.0.dangerous": "라인 26: AesCryptoServiceProvider 인스턴스 'aes'의 모드가 ECB 모드로 설정됩니다.",
  "rule.sast.sw.cs.2724.example.0.safe": "라인 2: AesCryptoServiceProvider 인스턴스 'aes'의 모드를 CBC나 CFB와 같은 안전한 모드로 설정합니다.",
  "rule.sast.sw.cs.2724.name": "ECB 모드로 암호화 알고리즘 사용",
  "rule.sast.sw.cs.2724.option.sym_crypto_class.description": "대칭 알고리즘을 입력하세요.",
  "rule.sast.sw.cs.2724.option.sym_crypto_class.name": "대칭 알고리즘.",
  "rule.sast.sw.cs.2724.option.vuln_mode.description": "취약한 모드를 입력하세요.",
  "rule.sast.sw.cs.2724.option.vuln_mode.name": "취약한 모드.",
  "rule.sast.sw.cs.2725.description": "불충분한 전자 서명 키 길이 체커는 전자 서명을 위한 키의 크기가 옵션에 지정한 길이보다 작을 경우를 검출합니다.\n전자 서명의 암호학적 강도는 키의 크기와 비례합니다. 키의 크기가 충분하지 않으면 전자 서명의 취약해집니다.\n충분한 길이의 전자 서명 키를 사용하도록 합니다.",
  "rule.sast.sw.cs.2725.example.0.dangerous": "라인 14: DSACryptoServiceProvider 인스턴스 'DSAalg_0'의 키의 길이가 충분하지 않습니다.\n라인 15: DSACryptoServiceProvider 인스턴스 'DSAalg_1'의 키의 길이가 충분하지 않습니다.",
  "rule.sast.sw.cs.2725.example.0.safe": "라인 14: DSACryptoServiceProvider 인스턴스의 키의 길이를 1024보다 긴 값으로 설정합니다.",
  "rule.sast.sw.cs.2725.name": "불충분한 전자 서명 키 길이",
  "rule.sast.sw.cs.2725.option.minimum_key_size.description": "최소 키 길이를 입력하세요.",
  "rule.sast.sw.cs.2725.option.minimum_key_size.name": "최소 키 길이",
  "rule.sast.sw.cs.2725.option.weak_encryption.description": "대상 암호 알고리즘을 입력하세요.",
  "rule.sast.sw.cs.2725.option.weak_encryption.name": "대상 암호 알고리즘.",
  "rule.sast.sw.cs.2726.description": "UI가 그려지는 동안 민감한 정보 노출 체커는 UI가 그려지는 동안 민감한 정보가 노출된 경우를 검출합니다.\n비밀번호와 같은 민감한 정보는 UI가 그려질 때 숨겨져야 합니다. 예를 들어서, 비밀번호의 경우 [DataType(DataType.Password)] 속성이 명시되지 않으면, 비밀번호가 숨겨지지 않아 UI에서 보여집니다. 옵션 파일을 수정해서 민감한 정보와 패턴을 수정할 수 있습니다.\n민감한 정보가 UI가 그려지는 동안 노출되지 않도록 합니다.",
  "rule.sast.sw.cs.2726.example.0.dangerous": "라인 26: 민감한 정보 'pw'가 숨겨지지 않았습니다.\n라인 30: 민감한 정보 'ConfirmPassword'가 숨겨지지 않았습니다.",
  "rule.sast.sw.cs.2726.example.0.safe": "라인 17: 비밀번호와 같이 민감한 정보는 DataType.Password로 설정합니다.",
  "rule.sast.sw.cs.2726.name": "UI가 그려지는 동안 민감한 정보 노출",
  "rule.sast.sw.cs.2726.option.sensitive_property_pattern.description": "민감한 특성 패턴을 입력하세요.",
  "rule.sast.sw.cs.2726.option.sensitive_property_pattern.name": "민감한 특성 패턴.",
  "rule.sast.sw.cs.2737.description": "하드코딩된 대칭 키 알고리즘 비밀 키 체커는 소스 코드 내에 하드코딩되어 사용되는 대칭 키 중 비밀 키를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 비밀 키를 사용할 경우 암호화된 정보가 유출되면 이를 사용해 원본 정보를 알아낼 수 있습니다. 소스 코드에 비밀 키를 하드코드 하면 프로젝트에 참여하는 모든 개발자가 이를 볼 수 있어 비밀 키가 노출될 가능성이 높아집니다. 특히 많은 사람이 접속하는 웹 서비스에 사용되는 비밀 키가 노출되면 접속하는 사용자의 정보가 대량으로 유출될 수 있어 더욱 위험합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다.",
  "rule.sast.sw.cs.2737.example.0.dangerous": "라인 26: 대칭 암호 알고리즘 클래스 'aes'의 비밀 키 'Key'에 하드코딩된 비밀 키 'KeyArray'가 할당되었습니다.",
  "rule.sast.sw.cs.2737.example.0.safe": "라인 26: AES 알고리즘의 비밀 키로 외부에서 불러온 값을 사용합니다.",
  "rule.sast.sw.cs.2737.name": "하드코딩된 대칭 키 알고리즘 비밀 키",
  "rule.sast.sw.cs.2737.option.sym_crypto_class.description": "대칭 암호 알고리즘를 입력하세요.",
  "rule.sast.sw.cs.2737.option.sym_crypto_class.name": "대칭 암호 알고리즘.",
  "rule.sast.sw.cs.2797.description": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.\n프로그램 코드 내부에 하드코딩된 비밀번호를 포함하고 이를 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 관리자 정보가 노출될 수 있으므로 위험합니다.\n비밀번호는 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.",
  "rule.sast.sw.cs.2797.example.0.dangerous": "라인 15: 문자열을 인자로 ChangePassword() 메소드를 사용하여 MembershipUser 객체의 비밀번호를 설정합니다.",
  "rule.sast.sw.cs.2797.example.0.safe": "라인 16: 외부에서 불러온 값을 인자로 ChangePassword() 메소드를 사용하여 MembershipUser 객체의 비밀번호를 설정합니다.",
  "rule.sast.sw.cs.2797.name": "하드코딩된 비밀번호",
  "rule.sast.sw.cs.2797.option.candidate_class.description": "비밀번호를 사용하는 클래스 이름을 작성합니다.",
  "rule.sast.sw.cs.2797.option.candidate_class.name": "비밀번호를 사용하는 클래스",
  "rule.sast.sw.cs.2797.option.method.description": "비밀번호를 설정하는 메소드 이름을 작성합니다.",
  "rule.sast.sw.cs.2797.option.method.name": "비밀번호를 설정하는 메소드",
  "rule.sast.sw.cs.2798.description": "하드코딩된 비밀번호 비교 체커는 비밀번호를 하드코딩된 문자열과 비교하는 코드를 검출합니다.\n소스 코드에 접근 권한이 있는 사람은 비밀번호를 획득할 수 있습니다.\n비밀번호를 하드코딩된 문자열과 비교하지 않습니다.",
  "rule.sast.sw.cs.2798.example.0.dangerous": "라인 11: 하드코딩된 비밀번호 req_password를 비교합니다.",
  "rule.sast.sw.cs.2798.example.0.safe": "라인 10: 외부에서 비밀번호를 불러옵니다.\n라인 11: 입력 받은 값과 외부에서 불러온 비밀번호를 비교하여 password.ini 파일에 접근할 수 없는 사용자는 비밀번호를 알 수 없도록 합니다.",
  "rule.sast.sw.cs.2798.name": "하드코딩된 비밀번호 비교",
  "rule.sast.sw.cs.2799.description": "예외 정보 노출 체커는 예외를 처리할 때 예외 정보를 출력하는 코드를 검출합니다.\n스택 정보 등 시스템 정보가 유출될 수 있습니다.\n공격자는 스택 정보와 같은 시스템 정보를 활용하여 취약점을 찾아내고 공격할 수 있습니다.\n예외 정보를 출력하지 않도록 합니다.",
  "rule.sast.sw.cs.2799.example.0.dangerous": "라인 17: 예외 처리 중에 예외 정보를 출력합니다.\n라인 18: 예외 처리 중에 예외 정보를 출력합니다.",
  "rule.sast.sw.cs.2799.example.0.safe": "라인 17: 예외를 직접 출력하는 것이 아니라 로그 파일에 따로 기록합니다.",
  "rule.sast.sw.cs.2799.name": "예외 정보 노출",
  "rule.sast.sw.cs.2976.description": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 검출합니다.\n코드를 동적으로 실행하는 애플리케이션의 경우 코드를 구성하는 데 사용되는 외부 제공 값을 확인해야 합니다. 그렇게 하지 않으면, 공격자가 임의의 코드를 실행할 수 있습니다. 만약 공격자가 임의의 코드를 실행하게 된다면, 중요한 정보에 접근하여 수정하거나 이득을 얻는 등 심각한 공격이 발생할 수 있습니다. 전체 시스템에 액세스하지 못하도록 완화 전략으로써 허용된 값을 화이트리스트로 작성하거나 안전 유형으로 캐스팅을 수행하도록 합니다.\nServletRequest.getParameter() 메소드를 통해 받은 외부 입력 값을 별도로 정의된 검증 메소드를 통해서 확인해야 합니다.",
  "rule.sast.sw.cs.2976.example.0.dangerous": "라인 3: 외부 입력값이 변수의 값으로 전달됩니다.\n라인 7: 외부 입력으로 오염된 객체가 CompileAssemblyFromSource 함수의 2번째 인자로 전달되어 공격자가 임의의 코드를 실행시킬 수 있습니다.",
  "rule.sast.sw.cs.2976.example.0.safe": "라인 3: 외부 입력값이 변수의 값으로 전달됩니다.\n라인 6: 외부 입력으로 오염된 객체가 안전한지 확인합니다.\n라인 9: 안전한 경우 CompileAssemblyFromSource 함수를 실행시킵니다.",
  "rule.sast.sw.cs.2976.name": "동적 코드 조작 취약점",
  "rule.sast.sw.cs.2978.description": "취약한 XML 변환 보안 체커는 별도의 보안 옵션을 지정하지 않고 XML 파서를 바로 사용한 경우를 검출합니다.\nXML 외부 엔터티 또는 XSLT 외부 엔터티(XXE) 취약성은 외부 DTD 및 DTD 엔터티를 모두 허용한 상태로 XML 파서를 생성하는 경우에 발생할 수 있습니다. 공격자가 외부 데이터를 제어하게 되면 파서가 위치한 장치에서 기밀 데이터의 공개, 서비스 거부, 서버 측 요청 위조, 포트 스캐닝 등의 문제가 발생하거나 시스템에도 영향을 미칠 수 있습니다. C#의 경우 동일한 함수를 사용하더라도 .Net Framework 버전에 따라 취약점이 존재하지 않을 가능성도 있으므로, 반드시 사용 전에 체커 세부 옵션을 조정하여 사용 중인 .Net Framework 버전을 기입한 후 사용하시길 바랍니다.\n.Net Framework 4.5.2 이상 기준\n- System.Xml.XmlDocument.XmlResolver의 값으로 XmlUrlResolver 타입 금지\n- System.Xml.XmlTextReader.XmlResolver의 값으로 XmlUrlResolver 타입 금지\n- XmlReader.Create 함수의 2번째 인자에 XmlReaderSettings을 사용하여 DtdProcessing.Parse와 XmlUrlResolver 전달 금지\n\n.Net Framework 4.5.2 미만 기준\n- 별도의 설정 없이 XmlDocument, XmlTextReader, XPathDocument 함수 사용 금지",
  "rule.sast.sw.cs.2978.example.0.dangerous": "라인 4: XmlDocument.XmlResolver 속성에 XmlUrlResolver을 할당했습니다.",
  "rule.sast.sw.cs.2978.example.0.safe": "라인 3: XmlDocument 클래스에 XmlUrlResolver를 사용하지 않습니다.",
  "rule.sast.sw.cs.2978.name": "취약한 XML 변환 보안",
  "rule.sast.sw.cs.2978.option._net_version.description": ".Net Framework 버전을 작성합니다.",
  "rule.sast.sw.cs.2978.option._net_version.name": ".Net 버전",
  "rule.sast.sw.cs.2979.description": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 코드를 검출합니다.\n공개 웹 서버에서 작동하는 서비스가 외부 입력이 포함된 URL을 제대로 확인하지 않고 접속을 시도하면 이 URL이 외부로 공개되지 않는 내부 전용 서버를 가리킬 때에도 접속을 시도하게 됩니다. 내부 서버는 이 요청이 동일한 내부 웹 서버로부터 전달된 것이므로 정상적으로 응답을 보낼 것입니다. 자신이 접속할 수 있는 웹 서버에 이러한 취약점이 존재한다는 사실을 공격자가 알게 되면 해당 웹 서버를 통해 자신에게 접속 권한이 없는 내부망의 서버에 요청을 보낼 수 있습니다. 이를 통해 외부로 노출되어서는 안되는 중요 정보가 노출될 수 있습니다.\n외부 입력을 포함하는 URL에 접속하려고 시도할 때 적절한 검증을 수행하도록 합니다.",
  "rule.sast.sw.cs.2979.example.0.dangerous": "라인 3: 외부 입력값이 변수의 값으로 전달됩니다.\n라인 5: 외부 입력으로 오염된 객체가 WebRequest.Create 함수의 1번째 인자로 전달되어 공격자가 내부망 서버에 임의의 요청을 보낼 수 있습니다.",
  "rule.sast.sw.cs.2979.example.0.safe": "라인 3: 외부 입력값이 변수의 값으로 전달됩니다.\n라인 7: 외부 입력으로 오염된 객체가 안전한지 확인합니다.\n라인 9: 안전한 경우 WebRequest.Create 함수를 실행시킵니다.",
  "rule.sast.sw.cs.2979.name": "서버측 요청 변조",
  "rule.sast.sw.cs.2980.description": "부적절한 서명 체커는 전자 서명을 포함하는 파일을 사용할 때 서명을 확인하지 않는 코드를 검출합니다.\n사용자가 전자 서명을 확인하지 않고 사용하는 경우 위변조된 파일을 통해 의도하지 않은 URL에 접근하거나 악성 코드에 감염될 수 있습니다.\n또한 암호 알고리즘으로 서명하지 않고 JWT로 토큰을 생성하는 경우 공격자는 이를 위조하여 사용자로 위장할 수 있습니다.\nJwtDecoder 클래스에서 Decode 함수의 세 번째 인자인 verify를 true로 설정하고, JwtBuilder 클래스에서 MustVerifySignature 함수의 세 번째 인자인 verify도 true로 설정하도록 합니다.",
  "rule.sast.sw.cs.2980.example.0.dangerous": "라인 10: JwtDecoder 클래스에서 Decode 함수의 3번째 인자를 false로 설정했습니다.\n라인 16: 별도의 서명 없이 JwtBuilder 클래스를 사용했습니다.",
  "rule.sast.sw.cs.2980.example.0.safe": "라인 10: JwtDecoder 클래스에서 Decode 함수의 3번째 인자를 true로 설정합니다.\n라인 16: JwtBuilder 클래스에서 MustVerifySignature 함수를 사용하여 서명합니다.",
  "rule.sast.sw.cs.2980.name": "부적절한 서명",
  "rule.sast.sw.cs.2981.description": "취약한 서버 인증서 검증 체커는 SSL/TLS 세션을 생성할 때 X.509 인증서의 유효성을 검사하지 않고 모든 인증서를 신뢰하는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다.\nServicePointManager.ServerCertificateValidationCallback에 부착된 콜백 함수가 항상 true값을 반환하지 않도록 설정합니다.",
  "rule.sast.sw.cs.2981.example.0.dangerous": "라인 5: 반환값이 true이므로 유효성 검사 없이 모든 인증서를 SSL/TLS 인증서로 생성했습니다.",
  "rule.sast.sw.cs.2981.example.0.safe": "라인 6: 특정 조건을 만족하는 경우에만 SSL/TLS 인증서를 생성합니다.\n라인 14: 특정 조건을 만족하는 경우에만 SSL/TLS 인증서를 생성합니다.",
  "rule.sast.sw.cs.2981.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.cs.2982.description": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 메소드를 사용하는 코드를 검출합니다.\n객체를 직렬화하여 저장하거나 전송하고, 필요한 경우 다시 역직렬화하여 사용함으로써 객체의 상태를 유지할 수 있습니다. 하지만 신뢰할 수 없는 데이터를 별도의 보호 없이 바로 역직렬화하는 경우 공격자가 악의적으로 객체 또는 변수를 추가하여 악성 코드를 실행시킬 수 있습니다.\nBinaryFormatter, NetDataContractSerializer, SoapFormatter, JavaScriptSerializer, LosFormatter 클래스 등을 사용하여 역직렬화하는 경우 화이트리스트를 작성하거나 mac 주소를 확인하도록 합니다.",
  "rule.sast.sw.cs.2982.example.0.dangerous": "라인 7: 역직렬화에 허용된 값을 화이트리스트로 작성하지 않고 BinaryFormatter 클래스의 Deserialize 함수를 사용했습니다.",
  "rule.sast.sw.cs.2982.example.0.safe": "라인 19: 역직렬화에 허용된 값을 화이트리스트로 작성하여 특정 타입만 역직렬화합니다.",
  "rule.sast.sw.cs.2982.name": "신뢰할 수 없는 데이터의 역직렬화",
  "rule.sast.sw.cs.6535.description": "크로스 사이트 요청 위조는 특정 웹 사이트에 대해서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격을 말합니다.\nASP.NET에서는 사용자 입력이 포함된 POST 요청의 경우, CSRF 공격을 방지하기 위해 `@Html.AntiForgeryToken()`을 사용해야 합니다.",
  "rule.sast.sw.cs.6535.example.0.dangerous": "라인 1: 폼 내에 CSRF 방지 토큰이 사용되지 않아 CSRF 공격에 취약합니다.",
  "rule.sast.sw.cs.6535.example.0.safe": "라인 3: CSRF 방지 토큰을 사용하여 사용자 입력을 안전하게 처리할 수 있습니다.",
  "rule.sast.sw.cs.6535.name": "크로스 사이트 요청 위조",
  "rule.sast.sw.cs.941.description": "NullPointerException 예외 처리 체커는 NullReferenceException을 catch하는 경우를 검출합니다.\nNullReferenceException 예외를 처리한다는 것은 프로그램 내에 널 포인터 역참조가 생기는 근본적인 오류를 해결하지 않았을 가능성이 있음을 의미합니다.\nNullReferenceException 예외를 catch하기 보다는 NullReferenceException 예외가 발생할 수도 있도록 만드는 근본적인 원인을 제거하는 것이 좋습니다.",
  "rule.sast.sw.cs.941.example.0.dangerous": "라인 5: NullReferenceException을 catch하고 있습니다.",
  "rule.sast.sw.cs.941.example.0.safe": "라인 4: NullReferenceException을 catch하지 않습니다.\n라인 7: 널 포인터 예외가 생기는 근본적인 원인을 수정합니다.",
  "rule.sast.sw.cs.941.name": "NullPointerException 예외 처리",
  "rule.sast.sw.cs.942.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.sw.cs.942.example.0.dangerous": "라인 5: catch 블록에서 오류를 포착하고 있지만 아무런 조치를 취하고 있지 않습니다.",
  "rule.sast.sw.cs.942.example.0.safe": "라인 5: 예외를 포착한 후 각각의 예외사항에 대하여 적절하게 처리하도록 합니다.",
  "rule.sast.sw.cs.942.name": "빈 catch 블록",
  "rule.sast.sw.cs.943.description": "HtmlInputHidden 사용 체커는 HtmlInputHidden 객체를 생성하는 경우를 검출합니다.\nHtmlInputHidden 객체를 생성하면 공격자가 숨겨진 폼 필드에 접근하여 값을 읽거나 조작할 수 있으므로 이를 생성하지 않는 것이 안전합니다. HtmlInputHidden 객체를 통해 공격자가 숨겨진 폼 필드에 접근하여 값을 읽거나 조작할 수 있습니다.\nHtmlInputHidden 객체를 생성하지 않도록 합니다.",
  "rule.sast.sw.cs.943.example.0.dangerous": "라인 3: HtmlInputHidden 객체를 생성했습니다.",
  "rule.sast.sw.cs.943.example.0.safe": "라인 3: 숨겨진 폼 필드를 생성하지 않습니다.",
  "rule.sast.sw.cs.943.name": "HtmlInputHidden 사용",
  "rule.sast.sw.cs.944.description": "시스템 정보 노출 체커는 catch 구문에서 시스템 정보를 출력하는 경우를 검출합니다.\n공격자는 노출된 오류 메시지를 보고 해당 시스템을 공격할 때 참고할 수 있습니다.\n시스템 정보가 노출되지 않도록 합니다.",
  "rule.sast.sw.cs.944.example.0.dangerous": "라인 5: Console.WriteLine() 함수로 프로그램 내부 정보가 유출됩니다.",
  "rule.sast.sw.cs.944.example.0.safe": "라인 5: 내부 정보를 출력하지 않도록 합니다.",
  "rule.sast.sw.cs.944.name": "시스템 정보 노출",
  "rule.sast.sw.cs.944.option.sink_class.description": "보안에 취약한 로그 클래스를 작성합니다.<br />예시) Console",
  "rule.sast.sw.cs.944.option.sink_class.name": "취약한 로그 클래스",
  "rule.sast.sw.cs.944.option.sink_method.description": "보안에 취약한 로그 메소드를 작성합니다.<br />예시) WriteLine",
  "rule.sast.sw.cs.944.option.sink_method.name": "취약한 로그 메소드",
  "rule.sast.sw.cs.949.description": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.\n가장 상위 예외를 사용하여 catch하는 것을 자제해야 합니다.\n지나치게 일반적인 예외 처리를 하게 되면 특별히 처리해야 하는 개별 예외를 적절히 처리하지 못할 뿐 아니라 이 지점에서 논리적으로 발생해서는 안되는 예외까지 처리하게 됩니다. 이러한 경우에 개발 및 검수 과정에서 발견되었어야 하는 설계 및 구현 상 결함이 발견되지 못한 채 배포 단계로 넘어가서 더 큰 문제의 원인이 될 수 있습니다.\n해당 코드 구역에서 발생할 수 있는 세부적인 예외들을 명시적으로 나눠서 처리하는 것이 좋습니다. 일반적인 예외를 처리하더라도 예측 가능한 세부적인 예외들을 먼저 처리한 후 마지막에 처리하도록 합니다. 이렇게 작성했을 때 실행 흐름이 일반적인 예외 처리 부분에 도달했다면 개발 과정에서 예측하지 못한 예외가 발생한 것이므로 조용히 넘어가지 않고 상황에 대한 상세한 기록을 남겨서 추후 결함을 수정할 수 있도록 합니다.",
  "rule.sast.sw.cs.949.example.0.dangerous": "라인 3: 가장 상위 Exception으로 처리하고 있습니다.",
  "rule.sast.sw.cs.949.example.0.safe": "라인 3: 각 예외 상황에 대한 처리 방법을세분화 합니다.",
  "rule.sast.sw.cs.949.name": "지나치게 일반적인 예외 처리",
  "rule.sast.sw.cs.950.description": "안전하지 않은 로깅 체커는 금지된 메소드를 사용하여 로그를 남기는 경우를 검출합니다.\nConsole.WriteLine() 등의 메소드를 로그 출력 목적으로 사용해선 안됩니다. 사용 금지할 메소드는 옵션으로 지정할 수 있습니다.\n콘솔을 통해 로그를 출력하면 오랫동안 많은 로그를 남기며 실행되는 프로그램에서 문제가 생겼을 때 로그를 통해 원인을 파악하기 번거로워지고 로그에 대한 접근 권한을 관리하기도 어렵습니다.\n로그는 로그 기록을 목적으로 설계된 라이브러리를 통해 출력합니다.",
  "rule.sast.sw.cs.950.example.0.dangerous": "라인 3: Console.WriteLine() 메소드로 로그를 출력합니다.",
  "rule.sast.sw.cs.950.example.0.safe": "라인 3: 해당 메소드로는 로그를 출력하지 않도록 합니다.",
  "rule.sast.sw.cs.950.name": "안전하지 않은 로깅",
  "rule.sast.sw.cs.950.option.logging_method.description": "보안에 취약한 로그 메소드를 작성합니다.<br />예시) WriteLine",
  "rule.sast.sw.cs.950.option.logging_method.name": "취약한 로그 메소드",
  "rule.sast.sw.cs.952.description": "취약한 해시 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.\n표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 해시 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것이라고 예상되는 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다. MD5와 같은 오래된 알고리즘의 경우에는 레인보우 테이블과 같은 방법으로 간단히 해시를 무력화할 수 있습니다.\n자신만의 해시 알고리즘을 개발하는 것은 위험합니다. 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 MD5, SHA-1 등의 알고리즘 대신 SHA-256, SHA-512 등의 안전한 알고리즘을 사용합니다. 또한 예측 불가능한 솔트를 함께 사용하여 공격을 어렵게 만들어야 합니다.",
  "rule.sast.sw.cs.952.example.0.dangerous": "라인 3: 안전하지 않은 암호화 해시 알고리즘 SHA-1을 사용했습니다.",
  "rule.sast.sw.cs.952.example.0.safe": "라인 3: 안전한 암호화 해시 알고리즘 SHA-256을 사용합니다.",
  "rule.sast.sw.cs.952.name": "취약한 해시",
  "rule.sast.sw.cs.952.option.weak_cryptographic_hash.description": "보안이 취약한 해시 클래스 이름을 작성합니다.<br />Example) MD5CryptoServiceProvider",
  "rule.sast.sw.cs.952.option.weak_cryptographic_hash.name": "보안 취약 해시 클래스",
  "rule.sast.sw.cs.953.description": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘을 사용하는 코드를 검출합니다.\nDES와 같은 암호화 알고리즘은 더 이상 안전하지 않습니다.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 컴퓨터의 성능이 향상되는 경우 오래된 몇몇 암호화 알고리즘이 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것이라고 예상되는 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.cs.953.example.0.dangerous": "라인 3: 안전하지 않은 암호화 알고리즘 DES를 사용했습니다.",
  "rule.sast.sw.cs.953.example.0.safe": "라인 3: 안전한 암호화 알고리즘 AES를 사용합니다.",
  "rule.sast.sw.cs.953.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.cs.953.option.weak_encryption.description": "보안이 취약한 암호화 클래스 이름을 작성합니다.<br />예시) DESCryptoServiceProvider",
  "rule.sast.sw.cs.953.option.weak_encryption.name": "보안 취약 암호화 클래스",
  "rule.sast.sw.cs.954.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키를 사용하는 코드를 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 통해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.cs.954.example.0.dangerous": "라인 3: 암호화 알고리즘의 키 크기가 지나치게 짧습니다.",
  "rule.sast.sw.cs.954.example.0.safe": "라인 3: 암호화할 때 충분한 키 크기를 지정해 줍니다.",
  "rule.sast.sw.cs.954.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.cs.954.option.minimum_key_size.description": "안전한 키 사이즈의 최소값을 입력합니다.<br />예시) 1024",
  "rule.sast.sw.cs.954.option.minimum_key_size.name": "최소 키 사이즈",
  "rule.sast.sw.cs.954.option.weak_encryption.description": "보안이 취약한 암호화 클래스 이름을 작성합니다.<br />예시) RSACryptoServiceProvider",
  "rule.sast.sw.cs.954.option.weak_encryption.name": "보안 취약 암호화 클래스",
  "rule.sast.sw.cs.958.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\nSystem.Random 객체를 생성하고 Next 메소드를 호출하면 예측 가능한 난수가 생성되기 때문에 안전하게 예측불가능한 난수를 생성해야 합니다.\n예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하게 됩니다. 일반적으로 언어마다 기본 제공되는 통계적 PRNG(유사 난수 생성기) 방식을 사용하면 생성될 난수를 공격자가 쉽게 예측 가능하며, 시드를 잘 설정하는 것만으로는 안전을 보장할 수 없습니다.\n암호학적으로 충분히 안전한 방식을 사용하여 예측 불가능한 난수를 생성해야 합니다. System.Security.Cryptography.RNGCryptoServiceProvider 객체를 사용하여 예측할 수 없는 난수를 생성합니다.",
  "rule.sast.sw.cs.958.example.0.dangerous": "라인 4: 예측 가능한 System.Random 객체로 암호를 생성했습니다.",
  "rule.sast.sw.cs.958.example.0.safe": "라인 4: System.Security.Cryptography.RNGCryptoServiceProvider 객체를 사용하여 암호를 생성합니다.",
  "rule.sast.sw.cs.958.name": "부적절한 난수 생성",
  "rule.sast.sw.dart.6457.description": "소스 코드 내에 하드코드된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.\nAPI 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "rule.sast.sw.dart.6457.example.0.dangerous": "라인 5: API 키 값이 하드코딩되어 있으므로 위험합니다.",
  "rule.sast.sw.dart.6457.example.0.safe": "라인 6: API 키 값을 .env 파일을 활용하여 안전하게 관리합니다.",
  "rule.sast.sw.dart.6457.name": "하드코드된 API 키",
  "rule.sast.sw.dart.6458.description": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.\n사용자 이름과 비밀번호를 URL에 포함시키지 않고 보다 안전한 인증 방법을 사용해야 합니다. 예를 들어, OAuth 또는 환경 변수를 통한 자격 증명 관리와 같은 방법이 있습니다.",
  "rule.sast.sw.dart.6458.example.0.dangerous": "라인 7: 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 하드코딩되어 위험합니다.",
  "rule.sast.sw.dart.6458.example.0.safe": "라인 8: 사용자 이름과 비밀번호를 포함하는 기본 인증 정보를 .env 파일을 사용하여 안전하게 관리합니다.",
  "rule.sast.sw.dart.6458.name": "하드코드된 인증 정보",
  "rule.sast.sw.dart.6459.description": "소스 코드 내에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.\n이메일 주소가 코드 내에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "rule.sast.sw.dart.6459.example.0.dangerous": "라인 8: 이메일 정보가 하드코딩되어 위험합니다.",
  "rule.sast.sw.dart.6459.example.0.safe": "라인 9: 이메일 정보를 사용자 입력으로 사용하여 안전합니다.",
  "rule.sast.sw.dart.6459.name": "하드코드된 이메일 주소",
  "rule.sast.sw.dart.6460.description": "소스 코드나 주석 내에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.\n소스 코드에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "rule.sast.sw.dart.6460.example.0.dangerous": "라인 4: IP 정보가 하드코딩되어 위험합니다.",
  "rule.sast.sw.dart.6460.example.0.safe": "라인 5: IP 값을 .env 파일을 활용하여 안전하게 관리합니다.",
  "rule.sast.sw.dart.6460.name": "하드코드된 IP 주소",
  "rule.sast.sw.dart.6462.description": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다. 하지만 해시 함수인 MD5나 SHA1의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다.\nMD5와 SHA1의 단점을 극복하기 위해 사용되는 함수는 다양하게 존재합니다. SHA2, SHA3 혹은 비교적 최신의 안전한 알고리즘인 Bcrypt, Blake2, Argon2, PBKDF2, Scrypt 등을 사용하여 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.dart.6462.example.0.dangerous": "라인 9: 무작위 대입 공격에 취약한 해시 함수를 사용하므로 위험합니다.",
  "rule.sast.sw.dart.6462.example.0.safe": "라인 8: 비교적 최근에 만들어진 안전한 해시 함수를 사용하므로 안전합니다.",
  "rule.sast.sw.dart.6462.name": "취약한 해시",
  "rule.sast.sw.dart.6463.description": "암호학적으로 안전하지 않은 난수 생성기는 예측 가능한 값들을 생성할 수 있으며, 이는 보안 취약점으로 이어질 수 있습니다.\n최신 언어들은 대부분 안전한 난수 방법을 제공합니다. 보통은 보안을 생각하여 만든 난수가 아니라 보다 안전한 난수 방법을 사용하여 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.dart.6463.example.0.dangerous": "라인 10: 예측 가능한 난수 생성 함수 Random()을 사용했기 때문에 위험합니다.",
  "rule.sast.sw.dart.6463.example.0.safe": "라인 10: 예측이 어려운 난수 생성 함수 Random.secure()을 사용했기 때문에 안전합니다.",
  "rule.sast.sw.dart.6463.name": "취약한 난수",
  "rule.sast.sw.dart.6464.description": "취약한 암호화 알고리즘은 공격자에게 데이터를 해독할 수 있는 기회를 제공할 수 있습니다. 예전에는 해독하는데 몇 십 억년이 걸릴 것이라고 예상되던 알고리즘이 지금은 며칠이나 몇 시간 내에 해독되기도 합니다. RC2, DES, Blowfish 등의 알고리즘이 여기에 해당됩니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하며, 학계 및 업계에서 이미 검증된 표준화된 알고리즘을 사용하도록 합니다. 기존에 취약하다고 알려진 암호화 알고리즘을 대신하여 AES, RSA, ECC 등의 안전한 암호화 알고리즘을 사용하도록 합니다.",
  "rule.sast.sw.dart.6464.example.0.dangerous": "라인 16: 암호화 과정에서 취약한 암호화 알고리즘인 DES가 사용되었으므로 위험합니다.",
  "rule.sast.sw.dart.6464.example.0.safe": "라인 16: 암호화 과정에서 안전한 암호화 알고리즘인 AES가 사용되어 안전합니다.",
  "rule.sast.sw.dart.6464.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.dart.6465.description": "RSA 암호화는 공개키 암호화 방식 중 하나로, 키의 길이에 따라 암호의 강도가 달라집니다. 현재, 대부분의 상황에서 적절하다고 간주되는 키 길이는 2048 bits입니다. 현재의 컴퓨팅 능력으로는 이를 깨트리는 것이 실질적으로 불가능하기 때문입니다.\nRSA 키 길이는 2048 bits 이상을 사용하는 것이 좋습니다. 가장 권장하는 길이이고, 3072 bits 또는 4096 bits 등을 사용하는 것이 더 안전하지만 키 길이가 길어질수록 암복호화에 필요한 컴퓨팅 리소스가 증가합니다.",
  "rule.sast.sw.dart.6465.example.0.dangerous": "라인 12: RSA 키 길이가 2048 bits 보다 작으므로 위험합니다.",
  "rule.sast.sw.dart.6465.example.0.safe": "라인 12: RSA 키 길이가 2048 bits 이상으로 설정되었기 때문에 안전합니다.",
  "rule.sast.sw.dart.6465.name": "충분하지 않은 RSA 암호화 키 길이",
  "rule.sast.sw.dart.6491.description": "주석문 내에 하드코드된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.\nAPI 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "rule.sast.sw.dart.6491.example.0.dangerous": "라인 2: 주석문 내에 API 키 값이 존재하므로 위험합니다.",
  "rule.sast.sw.dart.6491.example.0.safe": "라인 1-4: 주석문 내에 API 키 값이 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.dart.6491.name": "주석문 안의 API 키",
  "rule.sast.sw.dart.6492.description": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.\n사용자 이름과 비밀번호를 URL에 포함시키지 않고 보다 안전한 인증 방법을 사용해야 합니다. 예를 들어, OAuth 또는 환경 변수를 통한 자격 증명 관리와 같은 방법이 있습니다.",
  "rule.sast.sw.dart.6492.example.0.dangerous": "라인 4: 주석문 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.dart.6492.example.0.safe": "라인 2-16: 주석문 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.dart.6492.name": "주석문 안의 인증 정보",
  "rule.sast.sw.dart.6493.description": "주석문에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.\n이메일 주소가 주석문에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "rule.sast.sw.dart.6493.example.0.dangerous": "라인 3: 주석문 내 이메일 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.dart.6493.example.0.safe": "라인 2-7: 주석문 내 이메일 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.dart.6493.name": "주석문 안의 이메일 주소",
  "rule.sast.sw.dart.6494.description": "주석문에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.\n주석문에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "rule.sast.sw.dart.6494.example.0.dangerous": "라인 3: 주석문 내에 IP 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.dart.6494.example.0.safe": "라인 2-7: 주석문 내에 IP 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.dart.6494.name": "주석문 안의 IP 주소",
  "rule.sast.sw.go.5860.description": "Go 언어의 html/template 패키지는 HTML 템플릿을 생성하고 처리하는 데 사용되는 유용한 도구입니다. 이 패키지는 HTML 이스케이프 기본적으로 처리하여 크로스 사이트 스크립트(XSS) 공격을 방지하도록 도와줍니다. 그러나 html/template 패키지의 `template.HTML`와 `template.HTMLAttr`이라는 두 가지 특수한 함수는 HTML 이스케이프 처리가 되지 않습니다. 이 함수들에 검증되지 않은 외부 입력 값이 포함된다면 XSS 공격에 취약하게 됩니다.\n직접 문자열에서 특수 문자(&, <, >, `, `)를 HTML 엔터티로 변환해도 되지만 html 패키지에는 `EscapeString`이라는 이스케이프 함수를 제공합니다. 사용자 입력을 직접 넘기는 것은 피해야 하지만 꼭 필요한 경우`EscapeString` 함수로 이스케이프 하여 사용해야 합니다.",
  "rule.sast.sw.go.5860.example.0.dangerous": "라인 3: 외부 입력값이 이스케이프 처리 없이 template.HTML()에 사용되어 위험합니다.",
  "rule.sast.sw.go.5860.example.0.safe": "라인 3: 외부 입력값을 HTMLEscapeString()로 이스케이프 처리하여 안전합니다.",
  "rule.sast.sw.go.5860.name": "크로스 사이트 스크립트(HTML)",
  "rule.sast.sw.go.5860.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.go.5860.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.go.5860.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.go.5860.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.go.5860.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.go.5860.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.go.5860.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"openConnection\")",
  "rule.sast.sw.go.5860.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.go.5860.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.go.5860.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.go.5861.description": "Go 언어의 `html/template` 패키지에는 `template.JS`와 `template.JSStr`라는 함수가 있습니다. 이 함수는 문자열을 JavaScript 코드로 간주하는데, 이 때문에 크로스 사이트 스크립트(XSS) 공격의 위험이 있습니다. 이 함수들은 템플릿 내에서 JavaScript 코드로 해석되기 때문에, 사용자 입력을 검증하지 않고 변환하면 사용자가 공격 코드를 주입할 수 있습니다.\nXSS 위험을 방지하려면 사용자 입력을 이스케이프 처리해야 합니다. 하지만 `html/template` 패키지의 `html.EscapeString` 등의 함수는 `template.JS` 함수에는 올바른 이스케이프 처리를 수행하지 않습니다. 사용자 입력을 직접 넘기는 것은 피해야 하지만 꼭 필요한 경우 `JSEscape`나 `JSEscapeString` 등으로 이스케이프하여 사용해야 합니다.",
  "rule.sast.sw.go.5861.example.0.dangerous": "라인 3: 외부값이 template.JS() 안에 들어가 위험합니다.",
  "rule.sast.sw.go.5861.example.0.safe": "라인 3: 외부값을 template.JSEscapeString()으로 escape 처리 하여 안전합니다.",
  "rule.sast.sw.go.5861.name": "크로스 사이트 스크립트(JS)",
  "rule.sast.sw.go.5861.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.go.5861.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.go.5861.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.go.5861.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.go.5861.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.go.5861.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.go.5861.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"openConnection\")",
  "rule.sast.sw.go.5861.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.go.5861.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.go.5861.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.go.5862.description": "Go 언어에서는 `text/template`와 `html/template` 두 개의 템플릿 엔진을 제공합니다. `text/template` 패키지는 HTML 이스케이프 기능을 제공하지 않습니다. 사용자 입력이 HTML 콘텐츠로 직접 삽입될 때, 이스케이프 되지 않은 HTML 태그나 스크립트 코드는 공격자가 악성 스크립트를 주입하는 데 사용될 수 있습니다. `text/template`를 사용해 웹 애플리케이션에서 HTML을 생성하면, 개발자가 직접 모든 동적 콘텐츠를 이스케이프 해야 하므로 XSS 공격에 쉽게 노출될 수 있습니다.\n`html/template` 패키지는 웹 응용 프로그램에서 HTML 콘텐츠를 안전하게 생성하기 위하여 HTML 이스케이프 기능을 추가로 제공합니다. HTML 이스케이프는 웹 애플리케이션에서 매우 중요합니다. 이 때문에 웹 애플리케이션에서는 가능한 `html/template` 패키지를 사용하는 것이 좋습니다.",
  "rule.sast.sw.go.5862.example.0.dangerous": "라인 1: text/template 패키지를 사용하여 데이터가 이스케이프 되지 않습니다.",
  "rule.sast.sw.go.5862.example.0.safe": "라인 2: text/template 대신 html/template를 사용하여 안전합니다.",
  "rule.sast.sw.go.5862.name": "크로스 사이트 스크립트(template)",
  "rule.sast.sw.go.5863.description": "Go 언어에서 `template.CSS`나 `template.Srcset` 등의 이스케이프를 하지 않는 함수를 사용하면 크로스 사이트 스크립트(XSS) 공격에 노출됩니다. 사용자 입력값을 직접 전달하는 것은 매우 위험합니다. 사용자 입력값은 공격자가 예측할 수 없는 방식으로 변경될 수 있으므로, 이를 바탕으로 CSS를 생성하는 등의 행위는 해커에게 공격 벡터를 제공하는 것과 마찬가지입니다.\nCSS는 미리 정의된 스타일을 사용해야 합니다. 이를 통해 사용자 입력에 의해 CSS가 동적으로 변경되는 것을 방지할 수 있습니다. Srcset의 경우 `template.HTML`으로 대체해서 사용하는 방법이 있지만 이 경우에도 사용자의 입력값이 포함되는 것은 최대한 피해야 합니다.",
  "rule.sast.sw.go.5863.example.0.dangerous": "라인 4: 외부 입력값이 이스케이프 처리 없이 template.CSS()에 사용되었으므로 위험합니다.",
  "rule.sast.sw.go.5863.example.0.safe": "라인 4: template.CSS()에 사전에 정의된 문자열이 사용되었으므로 안전합니다.",
  "rule.sast.sw.go.5863.example.1.dangerous": "라인 4: 외부 입력값이 이스케이프 처리 없이 template.Srcset()에 사용되어 위험합니다.",
  "rule.sast.sw.go.5863.example.1.safe": "라인 4: template.Srcset()에 사전에 정의된 문자열이 들어가 안전합니다.",
  "rule.sast.sw.go.5863.name": "크로스 사이트 스크립트(etc.)",
  "rule.sast.sw.go.5863.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.go.5863.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.go.5863.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.go.5863.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.go.5863.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.go.5863.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.go.5863.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"openConnection\")",
  "rule.sast.sw.go.5863.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.go.5863.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.go.5863.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.go.5864.description": "Go 언어의 `template.URL`는 안전하다고 간주되는 URL을 생성합니다. 하지만 사용자 입력값이 포함될 경우, 공격자가 조작된 URL을 생성하여 사용자를 위험한 사이트로 이동시키거나 스크립트를 실행시킬 수 있습니다.\nURL에 사용자의 입력값이 포함되지 않는 것이 좋습니다. 하지만 필요한 경우 사용자 입력을 이스케이프 처리해야 합니다. Go 언어는 다양한 이스케이프 함수를 제공합니다. `html/template` 패키지의 `URLQueryEscaper`를 사용하거나 `net/url` 패키지의 `QueryEscape`,  `PathEscape` 등을 통해 URL을 안전하게 사용할 수 있습니다.",
  "rule.sast.sw.go.5864.example.0.dangerous": "라인 4: 외부 입력값이 이스케이프 처리 없이 template.URL()에 사용되어 위험합니다.",
  "rule.sast.sw.go.5864.example.0.safe": "라인 4: 외부 입력값을 URLQueryEscaper()로 이스케이프 처리하여 안전합니다.",
  "rule.sast.sw.go.5864.name": "크로스 사이트 스크립트(URL)",
  "rule.sast.sw.go.5864.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.go.5864.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.go.5864.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.go.5864.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.go.5864.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.go.5864.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.go.5864.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.go.5864.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.go.5864.option.url_taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"openConnection\")",
  "rule.sast.sw.go.5864.option.url_taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.go.5865.description": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.\nSQL 인젝션 공격을 방어하는 가장 효과적인 방법은 사전에 정의된 정적 쿼리문을 사용하거나 바인딩 하는 것입니다. 사용자의 입력이 들어갈 수 있는 쿼리문에는 데이터 베이스에 맞는 바인딩 문자(`?`, `$`, `:`, ...)를 반드시 사용해야 합니다.",
  "rule.sast.sw.go.5865.example.0.dangerous": "라인 6: 외부 입력값이 바인딩 처리 없이 쿼리문에 사용되어 위험합니다.",
  "rule.sast.sw.go.5865.example.0.safe": "라인 6: 외부 입력값이 바인딩 처리 후 쿼리문에 사용되어 안전합니다.",
  "rule.sast.sw.go.5865.name": "SQL 삽입",
  "rule.sast.sw.go.5865.option.custom_taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"openConnection\")",
  "rule.sast.sw.go.5865.option.custom_taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.go.5865.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.go.5865.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.go.5865.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.go.5865.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.go.5865.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.go.5865.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.go.5865.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.go.5865.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.go.5866.description": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 사용자의 비밀번호를 저장하는 등에 사용됩니다. 하지만 해시 함수인 MD5나 SHA의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다.\nMD5와 SHA의 단점을 극복하기 위해 사용되는 함수는 다양하게 존재합니다. Go에서는 비교적 최신 알고리즘인 Blake2, Argon2, PBKDF2, Scrypt 등을 사용하면 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.go.5866.example.0.dangerous": "라인 1: 취약한 해시인 md5를 사용하여 위험합니다.",
  "rule.sast.sw.go.5866.example.0.safe": "라인 1: 안전한 해시인 black2b를 사용했습니다.",
  "rule.sast.sw.go.5866.name": "취약한 해시",
  "rule.sast.sw.go.5867.description": "취약한 난수 알고리즘을 사용하면 결과값이 예측 가능하여 생기는 보안약점입니다. 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능합니다.\nGo 언어의 `math/rand` 패키지의 경우 보안을 생각하여 만든 난수가 아니라 위험합니다. 보다 안전한 `crypto/rand`을 사용하여 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.go.5867.example.0.dangerous": "라인 1: math/rand을 사용하여 위험합니다.",
  "rule.sast.sw.go.5867.example.0.safe": "라인 1: crypto/rand을 사용하여 안전합니다.",
  "rule.sast.sw.go.5867.name": "취약한 난수",
  "rule.sast.sw.go.5868.description": "응용 프로그램이 민감한 정보를 포함하는 오류 메시지를 생성해 외부에 제공하면 공격자의 악성 행위로 이어질 수 있습니다. 예외 발생 시 오류 내용을 그대로 출력하는 경우, 프로그램 내부 구조를 쉽게 파악할 수 있습니다.\nGo에서 `error`는 인터페이스 타입입니다. `error` 타입의 내용을 사용자에게 그대로 출력하는 것은 위험합니다. 표준 출력, HTTP 응답 등 사용자에게 출력되는 정보의 경우 `error`타입의 오류 결과가 아닌 사전에 정의된 내용을 전달해야 합니다.",
  "rule.sast.sw.go.5868.example.0.dangerous": "라인 4: 출력문에 error 타입이 들어가 중요 정보가 노출될 수 있습니다.",
  "rule.sast.sw.go.5868.example.0.safe": "라인 4: 출력문에 사전에 정의된 문자열이 들어가 안전합니다.",
  "rule.sast.sw.go.5868.name": "오류 메시지 정보 노출",
  "rule.sast.sw.go.5869.description": "웹 애플리케이션을 개발할 때에는 쿠키 설정을 올바르게 관리하는 것이 중요합니다. 잘못된 쿠키 설정은 Session hijacking, XSS, CSRF와 같은 보안약점을 유발합니다. 이를 막기 위해 보안 쿠키 플래그인 Secure, HttpOnly, SameSite를 적절하게 설정해야 합니다.\n\n1. Secure: 쿠키가 HTTPS 프로토콜을 통해서만 전송되도록 설정합니다. 이는 중간자 공격에 의한 쿠키 정보의 노출을 방지합니다.\n2. HttpOnly: 쿠키가 JavaScript를 통해 접근할 수 없게 설정합니다. 이는 XSS 공격으로부터 쿠키를 보호합니다.\n3. SameSite: 사이트 간 요청에서 쿠키가 전송되는 것을 제한합니다. 이는 CSRF 공격을 방지합니다.\nGo 언어에서는 `net/http` 패키지의 `http.SetCookie` 함수를 사용하여 보안 쿠키 플래그를 설정할 수 있습니다. `Secure`와 `HttpOnly` 플래그는 항상 `true`로 설정해야 하고, `SameSite`는 `Lax` 이상을 사용하는 것이 안전합니다.",
  "rule.sast.sw.go.5869.example.0.dangerous": "라인 8: 보안 쿠키 플래그가 선언되지 않아 여러 취약점에 노출됩니다.",
  "rule.sast.sw.go.5869.example.0.safe": "라인 11: Cookie 값에 Secure, HttpOnly, SameSite 값이 안전하게 설정되어 있습니다.",
  "rule.sast.sw.go.5869.name": "부적절한 쿠키 플래그 설정",
  "rule.sast.sw.go.5870.description": "Go 언어에서 `unsafe`, `testing` 등 특정 상황에서 필요할 수 있지만, 제한된 상황에서만 사용되는 패키지가 있습니다. `unsafe`는 메모리 안전성을 우회할 가능성이 생기고, `testing`는 테스트 환경에서만 적합하기 때문에 프로덕션 코드에서는 사용하지 않는 등의 문제가 있습니다.\n특수한 상황이 아니라면 아래의 패키지는 사용하지 않는 것이 좋습니다.\n- Unsafe, Testing, net/http/cgi",
  "rule.sast.sw.go.5870.example.0.dangerous": "라인 2: unsafe 패키지를 사용하여 취약점이 생길 수 있습니다.\n라인 3: testing 패키지는 테스트 시에만 사용해야 합니다.",
  "rule.sast.sw.go.5870.example.0.safe": "라인 2: unsafe 패키지를 사용하지 않아 안전합니다.\n라인 3: testing 패키지를 사용하지 않아 안전합니다.",
  "rule.sast.sw.go.5870.name": "취약한 패키지",
  "rule.sast.sw.go.5871.description": "하드코딩된 비밀번호는 보안 약점을 유발하는 일반적인 실수 중 하나입니다. 하드코딩이란, 소스 코드 내부에 고정된 값을 직접 입력하는 것을 말하며, 비밀번호를 직접 코드에 작성하는 것은 비밀번호가 유출되거나 다양한 환경 대응의 어려움 등의 문제를 초래할 수 있습니다.\n비밀번호를 코드 내부에 직접 적지 않고, 환경 변수를 이용하거나 설정 파일, 데이터베이스, 별도의 비밀 관리 시스템(AWS Secrets Manager, HashiCorp Vault 등)을 이용하는 방법도 있습니다.",
  "rule.sast.sw.go.5871.example.0.dangerous": "라인 2: 변수에 비밀번호로 추정되는 데이터가 들어갔습니다.",
  "rule.sast.sw.go.5871.example.0.safe": "라인 2: 비밀번호로 추정되는 변수에 정적으로 식별할 수 없는 데이터가 들어가 안전합니다.",
  "rule.sast.sw.go.5871.name": "하드코드된 비밀번호",
  "rule.sast.sw.go.5872.description": "IP 주소로 `0.0.0.0`을 사용하면, 시스템의 모든 네트워크 인터페이스에서 들어오는 모든 연결 요청을 수신하겠다는 것을 의미합니다. 일반적으로 서버는 특정 네트워크 인터페이스에서만 연결을 받아들이는 것이 좋습니다. 그렇지 않으면, 예상치 못한 네트워크 인터페이스에서 들어오는 연결 요청을 받아들일 수 있어, 해커가 이를 이용해 공격을 시도할 수 있습니다.\n서버를 구성할 때는 각 네트워크 인터페이스에서 어떤 연결을 받아들일 것인지를 `0.0.0.0` 대신 명확한 IP 주소를 정해야 합니다.",
  "rule.sast.sw.go.5872.example.0.dangerous": "라인 1: 네트워크 인터페이스에서 들어오는 모든 연결 요청을 수신하여 위험합니다",
  "rule.sast.sw.go.5872.example.0.safe": "라인 1: 특정 IP의 연결 요청만 수신하여 안전합니다",
  "rule.sast.sw.go.5872.name": "부적절한 네트워크 설정",
  "rule.sast.sw.go.5873.description": "ssh.InsecureIgnoreHostKey()는 SSH 클라이언트가 서버와의 연결을 설정할 때, 서버의 공개 키를 확인하지 않도록 하는 함수입니다. SSH 연결을 설정할 때, 보통 클라이언트는 처음 연결하는 서버의 공개 키를 저장하고, 그 후의 연결에서 이 키를 사용하여 서버의 신원을 확인합니다. 공개 키를 확인하지 않으면 이 과정에서 중간자 공격(Man-in-the-middle attack)이 발생할 수 있습니다.\nssh.InsecureIgnoreHostKey()를 사용하면, 클라이언트는 서버의 공개 키를 확인하지 않고 어떤 서버와도 연결할 수 있게 됩니다. 따라서, 실제 서비스에서는 절대로 ssh.InsecureIgnoreHostKey() 함수를 사용해서는 안 됩니다. 보안을 위해, ssh.InsecureIgnoreHostKey() 대신 ssh.FixedHostKey() 등을 사용하여 서버의 호스트 키를 검증하거나, 사용자에게 서버의 공개 키를 확인하도록 하는 등의 방법을 사용해야 합니다.",
  "rule.sast.sw.go.5873.example.0.dangerous": "라인 10: InsecureIgnoreHostKey()를 사용하여 중간자 공격이 발생할 수 있습니다.",
  "rule.sast.sw.go.5873.example.0.safe": "라인 10: InsecureIgnoreHostKey()를 사용하지 않아 서버를 검증하는 로직이 필요합니다.",
  "rule.sast.sw.go.5873.name": "부적절한 SSH 키 설정",
  "rule.sast.sw.go.5874.description": "외부 사용자로부터 입력받은 데이터를 그대로 URL로 사용하는 것은 위험합니다. 이로 인해 악의적인 요청이 전송되어 서버사이드 요청 위조와 같은 문제가 생길 수 있습니다. 이는 공격자가 서버로 하여금 내부 네트워크에 대한 요청을 보내도록 조작하는 보안 약점입니다.\n`net/url` 패키지는 URL을 파싱하고 유효성을 검사하는 기능을 제공합니다. 이를 통해 사용자 입력이 유효한 URL 형식인지 확인할 수 있습니다. 하지만 이 방법으로 완전히 안전하다고 보장할 수는 없기 때문에 적절한 필터링을 함께 사용하는 것이 좋습니다. 허용된 도메인만 사용하도록 화이트리스트를 작성하는 방식도 좋은 방법입니다.",
  "rule.sast.sw.go.5874.example.0.dangerous": "라인 4: 외부 입력값이 http.get()에 검증 없이 사용되어 위험합니다.",
  "rule.sast.sw.go.5874.example.0.safe": "라인 8: 외부 입력값을 사전에 정의한 주소인지 검증 후에 사용하여 안전합니다.",
  "rule.sast.sw.go.5874.name": "서버사이드 요청 위조",
  "rule.sast.sw.go.5874.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.go.5874.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.go.5874.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.go.5874.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.go.5874.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.go.5874.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.go.5874.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"openConnection\")",
  "rule.sast.sw.go.5874.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.go.5874.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.go.5874.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.go.5875.description": "Go 언어에서 문자열을 정수로 변환할 때는 주로 `strconv.Atoi`와 `strconv.ParseInt` 두 가지 함수를 사용합니다. `strconv.Atoi`는 문자열을 int 타입으로 변환합니다. Go 언어의 int 타입은 시스템에 따라 크기가 다르며, 32비트 시스템에서는 int32, 64비트 시스템에서는 int64로 동작합니다. 따라서 문자열을 int로 변환한 후, 이를 다시 작은 범위의 정수 타입으로 변환하려고 하면 오버플로우가 발생할 수 있습니다.\n`strconv.ParseInt`는 문자열을 지정한 크기의 정수로 변환합니다. 이 함수의 두 번째 매개변수로 변환할 정수의 범위를 비트 단위로 지정할 수 있습니다. 이렇게 하면 변환 후의 정수가 지정한 범위 내에 있음을 보장할 수 있습니다. 만약 변환하려는 값이 지정한 범위를 벗어나면 함수는 에러를 반환합니다.",
  "rule.sast.sw.go.5875.example.0.dangerous": "라인 3: strconv.Atoi()는 시스템에 따라 크기가 변하여 오버플로 위험이 있습니다.",
  "rule.sast.sw.go.5875.example.0.safe": "라인 3: strconv.ParseInt()로 사전에 변환할 크기를 정해두어 안전합니다.",
  "rule.sast.sw.go.5875.name": "정수형 변환 과정의 오버플로우",
  "rule.sast.sw.go.5876.description": "Slowloris는 서버에 느리게 요청을 보내어, 서버의 동시 연결 수를 소비하고 다른 사용자의 접근을 막는 공격입니다. 이 공격은 일부분만 전송된 요청으로 서버의 연결을 계속 열려 있게 만들어, 서버가 새로운 연결을 수용하지 못하도록 만듭니다.\nSlowloris 공격을 방어하기 위한 방법은 서버가 각 연결에 대해 데이터를 받는 데 걸리는 시간에 제한을 두는 것입니다. 이를 위해 Go의 HTTP 서버에서는 ReadTimeout 또는 ReadHeaderTimeout 설정 등을 사용할 수 있습니다. 이런 타임아웃 설정을 사용하면, 서버는 데이터를 천천히 보내는 클라이언트에 의해 너무 오래 유지되는 연결을 방지할 수 있습니다.",
  "rule.sast.sw.go.5876.example.0.dangerous": "라인 1: http.Server 구조체에 Timeout을 설정을 하지 않아 위험합니다.",
  "rule.sast.sw.go.5876.example.0.safe": "라인 4-6: http.Server 구조체에 Timeout을 설정했기 때문에 안전합니다.",
  "rule.sast.sw.go.5876.name": "Slowloris 공격",
  "rule.sast.sw.go.5877.description": "부적절한 파일 권한 설정은 운영체제가 파일에 대한 액세스를 제어하는 방법에 따라 시스템의 보안에 심각한 위협이 될 수 있습니다. 파일이나 디렉터리를 생성할 때, 그에 대한 적절한 권한 설정이 이루어지지 않으면 공격자가 그 파일이나 디렉터리를 이용하여 시스템을 공격하거나 민감한 데이터를 훔치는 등의 악의적인 행동을 취할 수 있습니다.\n파일이나 디렉터리를 생성할 때는 항상 그 파일이나 디렉터리에 대한 적절한 권한 설정이 이루어져야 합니다. 이러한 문제를 피하기 위해, 개발자들은 파일이나 디렉터리를 생성할 때 \"최소 권한 원칙\"을 따르는 것이 좋습니다. 특히 777, 666와 같이 광범위한 권한 설정을 피하는 것이 좋습니다.",
  "rule.sast.sw.go.5877.example.0.dangerous": "라인 3: 광범위한 권한을 설정하여 위험합니다.",
  "rule.sast.sw.go.5877.example.0.safe": "라인 3: 제한된 권한을 설정하여 안전합니다.",
  "rule.sast.sw.go.5877.name": "부적절한 권한 설정",
  "rule.sast.sw.go.5878.description": "경로 조작은 사용자가 애플리케이션에서 예상하지 못한 파일에 액세스하거나 수정할 수 있는 취약점입니다. 이는 사용자 입력을 제한 없이 파일 경로로 사용했을 때 발생할 수 있습니다. 사용자 입력을 그대로 파일 경로로 사용하는 것은 매우 위험합니다. 가능한 한 사용자 입력을 파일 경로로 사용하지 않아야 합니다. 반드시 사용해야 하는 경우라면, 사용자 입력에 대한 철저한 검증이 필요합니다.\nGo 언어에서는 filepath.Join()을 사용하거나 filepath.Clean()를 통해 `.` 혹은 `..` 등을 제거하는 등 안전하게 경로를 사용할 수 있습니다.",
  "rule.sast.sw.go.5878.example.0.dangerous": "라인 3: 함수에 외부 입력값이 필터링 없이 사용되었으므로 경로 조작에 노출될 수 있습니다.",
  "rule.sast.sw.go.5878.example.0.safe": "라인 3: filepath.Clean()를 통해 외부 입력값을 필터링하므로 안전합니다.",
  "rule.sast.sw.go.5878.name": "경로 조작",
  "rule.sast.sw.go.5878.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.go.5878.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.go.5878.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.go.5878.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.go.5878.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.go.5878.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.go.5878.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"openConnection\")",
  "rule.sast.sw.go.5878.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.go.5878.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.go.5878.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.go.5879.description": "`InsecureSkipVerify` 옵션은 클라이언트가 서버의 SSL/TLS 인증서를 검증하지 않도록 설정하는 것입니다. 이 옵션을 사용하면 서버의 인증서에 대한 검증을 하지 않기 때문에 중간자 공격이나 인증서 변조 등의 취약점이 생길 수 있습니다.\n`InsecureSkipVerify`의 기본값은 `false`이므로 선언하지 않으면 기본적으로 안전합니다.",
  "rule.sast.sw.go.5879.example.0.dangerous": "라인 2: InsecureSkipVerify를 사용하여 인증서를 검증하지 않기 때문에 위험합니다.",
  "rule.sast.sw.go.5879.example.0.safe": "라인 2: InsecureSkipVerify을 사용하지 않으므로 인증서를 검증하기 때문에 안전합니다.",
  "rule.sast.sw.go.5879.name": "부적절한 TLS 설정",
  "rule.sast.sw.go.5880.description": "RSA 암호화는 공개키 암호화 방식 중 하나로, 키의 길이에 따라 암호의 강도가 달라집니다. 현재, 대부분의 상황에서 적절하다고 간주되는 키 길이는 2048 bits입니다. 현재의 컴퓨팅 능력으로는 이를 깨트리는 것이 실질적으로 불가능하기 때문입니다.\nRSA 키 길이는 2048 bits 이상을 사용하는 것이 좋습니다. 가장 권장하는 길이이고, 3072 bits 또는 4096 bits 등을 사용하는 것이 더 안전하지만 키 길이가 길어질수록 암복호화에 필요한 컴퓨팅 리소스가 증가합니다.",
  "rule.sast.sw.go.5880.example.0.dangerous": "라인 3: RSA 키를 1024 bits로 설정하여 위험합니다.",
  "rule.sast.sw.go.5880.example.0.safe": "라인 3: RSA 키를 권장 길이인 2048 bits로 설정하여 안전합니다.",
  "rule.sast.sw.go.5880.name": "충분하지 않은 RSA 암호화 키 길이",
  "rule.sast.sw.html.899.description": "비밀번호 노출 체커는 GET 방식으로 비밀번호를 전송한 경우를 검출합니다.\nGET 메소드는 보안에 민감한 데이터를 전송하지 않는다고 가정하기 때문에 GET으로 전달된 내용은 로그에 남거나 캐시에 저장되는 등 외부로 쉽게 노출될 수 있습니다.\n비밀번호와 같이 보안에 민감한 데이터는 POST 방식으로 전달해야 합니다.",
  "rule.sast.sw.html.899.example.0.dangerous": "라인 1: 표기된 것처럼 비밀번호가 GET 메소드를 통해 전송되고 있습니다.",
  "rule.sast.sw.html.899.example.0.safe": "라인 1: POST 방식으로 비밀번호를 전송하여 더 안전합니다.",
  "rule.sast.sw.html.899.name": "비밀번호 노출",
  "rule.sast.sw.html.900.description": "다른 사이트의 스크립트 포함 체커는 HTML 내에서 외부 사이트의 스크립트를 포함한 경우를 검출합니다.\n서비스를 제공하는 사이트에서 직접 관리하는 JavaScript가 아닌 다른 사이트에서 제공하는 JavaScript를 사용할 경우 악의적인 스크립트가 전달되어 보안 문제가 발생할 수 있습니다.\nJavaScript에서 포함하는 스크립트의 경우 서비스를 제공하는 사이트에서 관리하는 JavaScript만을 사용하도록 합니다.",
  "rule.sast.sw.html.900.example.0.dangerous": "라인 1: 다른 사이트의 JavaScript 코드를 사용했습니다.",
  "rule.sast.sw.html.900.example.0.safe": "라인 1: 현재 사이트에서 직접 관리하는 스크립트를 사용합니다.",
  "rule.sast.sw.html.900.name": "다른 사이트의 스크립트 포함",
  "rule.sast.sw.html.981.description": "비밀번호 필드에 적용된 자동완성 체커는 HTML 폼의 비밀번호 필드가 autocomplete 속성으로 지정된 경우를 검출합니다.\nHTML의 폼 필드 중 비밀번호 타입 필드의 autocomplete 속성이 on으로 켜져 있으면 보안에 위험이 될 수 있습니다.\n비밀번호 타입 필드의 autocomplete 속성을 off로 지정합니다.",
  "rule.sast.sw.html.981.example.0.dangerous": "라인 4: password 필드에 autocomplete 속성이 on으로 되어 있습니다.",
  "rule.sast.sw.html.981.example.0.safe": "라인 4: password필드의 autocomplete 속성을 off로 지정합니다.",
  "rule.sast.sw.html.981.name": "비밀번호 필드에 적용된 자동완성",
  "rule.sast.sw.java.1454.description": "제한 없이 컬렉션에 추가 체커는 컬렉션 관련 클래스에 삽입 메소드를 호출하면 검출 합니다.\n컬렉션 관련 클래스를 잘못 다루면 힙 영역 메모리를 고갈 시킬 수 있습니다. While 문에서 정수로 제한 값이 정해지지 않은 상황에서 컬렉션 관련 클래스에 삽입 메소드를 호출할 경우를 검출합니다.\nWhile 문에서 collection 의 크기를 증가 시키는 메소드를 호출하면 안됩니다.",
  "rule.sast.sw.java.1454.example.0.dangerous": "라인 16: while 문에서 collection의 크기를 증가시키는 메소드가 호출되었습니다.",
  "rule.sast.sw.java.1454.example.0.safe": "라인 31: 크기가 정해져 있는 for 문에서 해당 메소드를 호출했습니다.",
  "rule.sast.sw.java.1454.name": "제한 없이 컬렉션에 추가",
  "rule.sast.sw.java.1454.option.exclude_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1454.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1454.option.exclude_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1454.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1454.option.exclude_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1454.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1454.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1454.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1454.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1454.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1454.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1454.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1454.option.method_name.description": "Collection 을 추가하는 메소드를 입력합니다.",
  "rule.sast.sw.java.1454.option.method_name.name": "Collection 증가 메소드",
  "rule.sast.sw.java.1454.option.type_name.description": "Collection 타입을 입력합니다.",
  "rule.sast.sw.java.1454.option.type_name.name": "Collection 타입",
  "rule.sast.sw.java.1455.description": "반복문 내에서의 컬렉션 항목 삭제 체커는 Loop 에서 컬렉션의 아이템을 삭제하면 검출합니다.\n반복 처리가 진행되는 동안에는 Iteration.remove() 메소드를 호출하는 것 이외의 방법으로 반복자가 가리키는 컬렉션을 수정하면 정의되지 않는 동작이 발생합니다.\n반복문 안에서 컬렉션의 아이템을 삭제하지 않도록 합니다.",
  "rule.sast.sw.java.1455.example.0.dangerous": "라인 11: Collection 아이템을 반복문 내에서 삭제할 경우를 검출합니다.",
  "rule.sast.sw.java.1455.example.0.safe": "라인 11: Iterator 를 사용하여 아이템을 삭제해야 합니다.",
  "rule.sast.sw.java.1455.name": "반복문 내에서의 컬렉션 항목 삭제",
  "rule.sast.sw.java.1455.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1455.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1455.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1455.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1455.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1455.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1455.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1455.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1455.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1455.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1455.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1455.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1455.option.iterator_type_name.description": "Iterator 타입 종류를 작성합니다.",
  "rule.sast.sw.java.1455.option.iterator_type_name.name": "Iterator 타입 이름",
  "rule.sast.sw.java.1455.option.method_name.description": "Collection 삭제 메소드 이름을 작성합니다.",
  "rule.sast.sw.java.1455.option.method_name.name": "Collection 삭제 메소드",
  "rule.sast.sw.java.1455.option.type_name.description": "Collection 타입 종류를 작성합니다.",
  "rule.sast.sw.java.1455.option.type_name.name": "Collection 타입 이름",
  "rule.sast.sw.java.1456.description": "비 정적 직렬화 가능 내부 클래스 체커는 내부 클래스가 Serializable 을 구현할 때 정적 내부 클래스가 아니면 검출합니다.\n정적이 아닌 내부 클래스에 serialPersistentFields 를 설정할 수 없습니다.\n직렬화를 위해서는 정적 내부 클래스로 선언해야 합니다.",
  "rule.sast.sw.java.1456.example.0.dangerous": "라인 3: Static이 아닌 내부 클래스의 직렬화를 시도했습니다.",
  "rule.sast.sw.java.1456.example.0.safe": "라인 3: static 내부 클래스를 직렬화 하도록 합니다.",
  "rule.sast.sw.java.1456.name": "비 정적 직렬화 가능 내부 클래스",
  "rule.sast.sw.java.1456.option.class_type_name.description": "Serializable 타입 이름을 작성합니다.",
  "rule.sast.sw.java.1456.option.class_type_name.name": "Serializable 타입 이름",
  "rule.sast.sw.java.1456.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1456.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1456.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1456.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1456.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1456.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1456.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1456.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1456.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1456.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1456.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1456.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1459.description": "부적절한 Externalizable 인터페이스의 구현 체커는 Externalizable 을 구현하는 클래스에서 특정 메소드를 호출할 때 synchronize 블록이 없는 경우를 검출합니다.\nreadExternal() 또는 writeExternal() 메소드를 구현할 때 public으로 구현되기 때문에 외부로 노출됩니다.\nreadExternal() 또는 writeExternal() 메소드에서 직렬화 또는 역직렬화 메소드를 호출하려면 synchronized 블록을 사용하여 프로그램을 실행할 때 다른 클래스 정보를 덮어쓰지 않도록 합니다. synchronized 블록에서는 if 문을 사용하여 경쟁 조건이 발생한 경우도 고려해야 합니다.",
  "rule.sast.sw.java.1459.example.0.dangerous": "라인 2: 역직렬화 메소드 호출이 외부에 노출되고 있습니다.",
  "rule.sast.sw.java.1459.example.0.safe": "라인 7: 외부에 노출된 역직렬화 메소드 호출은 synchronized 블록 내에서 호출되도록 합니다.",
  "rule.sast.sw.java.1459.name": "부적절한 Externalizable 인터페이스의 구현",
  "rule.sast.sw.java.1459.option.call_name.description": "직렬화 및 역직렬화 메소드 이름을 작성합니다.",
  "rule.sast.sw.java.1459.option.call_name.name": "직렬화 및 역직렬화 메소드",
  "rule.sast.sw.java.1459.option.call_type.description": "직렬화 및 역직렬화 클래스 타입 이름을 작성합니다.",
  "rule.sast.sw.java.1459.option.call_type.name": "직렬화 및 역직렬화 클래스 타입",
  "rule.sast.sw.java.1459.option.method_name.description": "Externalizable 구현 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1459.option.method_name.name": "Externalizable 구현 메소드",
  "rule.sast.sw.java.1460.description": "AccessController.doPrivileged 내 신뢰할 수 없는 입력 체커는 AccessController.doPrivileged() 메소드에서 외부 값이 검증 없이 사용되면 검출합니다.\n외부 값에 대해 검증 없이 사용될 경우 공격자가 시스템에 존재하는 파일에 접근할 수 있습니다.\n권한이 부여된 블록에서 유효성이 확인되지 않았거나 신뢰할 수 없는 데이터를 이용해 연산하면 안됩니다.",
  "rule.sast.sw.java.1460.example.0.dangerous": "라인 10: 외부 입력값인 filename에 대해 검증 없이 AccessController.doPrivileged() 메소드 내에서 사용되었습니다.",
  "rule.sast.sw.java.1460.example.0.safe": "라인 16: 외부 입력 값에 대해 cleanAFilenameAndPath() 메소드에서 검증 후 사용하도록 합니다.",
  "rule.sast.sw.java.1460.name": "AccessController.doPrivileged 내 신뢰할 수 없는 입력",
  "rule.sast.sw.java.1460.option.method_name.description": "doPrivileged 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1460.option.method_name.name": "doPrivileged 메소드",
  "rule.sast.sw.java.1460.option.type_name.description": "AccessController 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1460.option.type_name.name": "AccessController 클래스",
  "rule.sast.sw.java.1464.description": "클래스 초기화 시 순환 체커는 생성자 내에 필드 멤버의 연산을 할 때 필드 멤버와 instance 생성의 순서가 잘 못 되면 검출 합니다.\n초기화 cycle 은 예상치 못한 결과를 초래합니다. instance 가 생성될 때와 해당 인스턴스에서 사용되는 멤버 변수는 생성 순서와 연산 순서에 따라 다른 결과가 나옵니다.\n생성자 내에 필드 멤버의 연산할 때 필드 멤버와 instance 생성의 순서를 잘 확인해야 합니다.",
  "rule.sast.sw.java.1464.example.0.dangerous": "라인 3: Cycle 멤버 변수가 선언되어 초기화될 때 deposit의 값은 정해지지 않아 있습니다. 따라서 원치 않은 결과를 얻을 수 있습니다.",
  "rule.sast.sw.java.1464.example.0.safe": "라인 4: Cycle 멤버 변수가 선언되기 전에 생성자에서 사용될 변수가 초기화돼야 합니다.",
  "rule.sast.sw.java.1464.name": "클래스 초기화 시 순환",
  "rule.sast.sw.java.1465.description": "클래스 간 초기화 시 순환 체커는 클래스 내에 초기화 순환이 있으면 검출합니다.\n초기화 순환은 예상치 못한 결과를 초래합니다. 또한 내부 클래스 순환 문제가 발생하는 클래스의 소스코드를 비교해 볼 때는 확인 가능하지만 하나의 클래스의 코드만 볼 때는 확인하기 어렵습니다. 또한, 정적 멤버 변수가 초기화 순서에 의해 값이 달라질 수 있습니다.\n정적 멤버 변수에 대해서 내부 클래스 순환을 제거해야 합니다.",
  "rule.sast.sw.java.1465.example.0.dangerous": "라인 2: static final 변수는 초기화될 경우 변경이 되지 않습니다. 초기화 cycle 이 해당 변수들에서 발생할 경우 초기화 순서에 따라 값이 달라질 수 있습니다.\n라인 6: 위와 내용이 같습니다.\n라인 11: 위와 내용이 같습니다.",
  "rule.sast.sw.java.1465.example.0.safe": "라인 2: 초기화 순환을 없애도록 합니다.",
  "rule.sast.sw.java.1465.name": "클래스 간 초기화 시 순환",
  "rule.sast.sw.java.1465.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1465.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1465.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1465.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1465.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1465.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1465.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1465.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1465.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1465.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1465.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1465.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1467.description": "비 final 반복문 인덱스 체커는 for-each문 내에 사용된 루프변수에 final 한정자가 없으면 검출합니다.\nfor-each 문에서 루프 변수를 수정하는 것은 허용되지 않습니다. 따라서 명시적으로 루프 변수에 final 을 붙여 줘서 프로그래머가 의도치 않는 프로그래밍을 하지 않도록 합니다.\nfor-each문의 루프 변수에 final 한정자를 사용해야 합니다.",
  "rule.sast.sw.java.1467.example.0.dangerous": "라인 3: for-each 문에서 루프 변수에 final 한정자가 쓰이지 않았습니다.",
  "rule.sast.sw.java.1467.example.0.safe": "라인 3: for-each 문에서 루프 변수에 final 한정자를 부여하여 변수가 수정되는 것을 방지합니다.",
  "rule.sast.sw.java.1467.name": "비 final 반복문 인덱스",
  "rule.sast.sw.java.1467.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1467.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1467.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1467.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1467.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1467.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1467.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1467.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1470.description": "assert 구문 내 수식 체커는 Assert 문에서 메소드를 호출하거나 incremental, assignment 문을 사용하면 검출합니다.\nAssert 문은 반영 또는 미반영을 할 수 있습니다. 메소드를 호출하거나 incremental, assignment 문을 사용할 경우 다음 실행 되는 문장에 영향을 미치게 됩니다. Assert 문 반영 시에는 영향을 미치는 코드가 정상적으로 동작을 하지만 미반영 시켰을 때 동작을 않게 됩니다.\nAssert 구문내에 직접적으로 메소드를 호출하는 것보다 불린 형 변수에 반환 값을 할당하여 Assert 구문에 사용해야 합니다.",
  "rule.sast.sw.java.1470.example.0.dangerous": "라인 6: assert 문에서 메소드를 호출했습니다.\n라인 7: assert 문에서 assignment 문을 사용했습니다.",
  "rule.sast.sw.java.1470.example.0.safe": "라인 7: assert 문이 프로그램 실행 흐름에 영향을 주지 않도록 변경합니다.",
  "rule.sast.sw.java.1470.name": "assert 구문 내 수식",
  "rule.sast.sw.java.1470.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1470.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1470.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1470.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1470.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1470.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1470.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1470.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1473.description": "형변환 시 정밀성 손실 체커는 float 형 변수를 int 또는 long 형으로 cast하거나, double 형 변수를 long 형으로 cast하는 경우를 이슈를 검출합니다.\nfloat 형 변수를 int 또는 long 형으로 cast 할 경우, double 형 변수를 long 형으로 cast 할 경우 LSB(Least significant bits) 가 손실 될 수 있기 때문에 cast 를 하지 않아야 합니다.\n정수형 타입에서 부동소수점 타입으로 형변환 시 주의해야 합니다.",
  "rule.sast.sw.java.1473.example.0.dangerous": "라인 4: float 형 변수를 int 형으로 형변환을 수행했습니다.\n라인 8: double 형 변수를 long 형으로 형변환을 수행했습니다.",
  "rule.sast.sw.java.1473.example.0.safe": "라인 4: double 형 변수는 int 형으로 형변환은 허용합니다.",
  "rule.sast.sw.java.1473.name": "형변환 시 정밀성 손실",
  "rule.sast.sw.java.1473.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1473.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1473.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1473.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1473.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1473.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1473.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1473.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1474.description": "원시 타입 컬렉션 사용 체커는 원시 타입의 컬렉션에서 메소드를 호출하면 이슈를 검출합니다.\n원시 타입의 컬렉션을 사용하면 Java 컴파일러는 unchecked warning 상태로 컴파일을 합니다. 해당 warning 은 잠재적인 오류를 발생할 수 있기 때문에 수정해야 합니다.\n컬렉션의 인수 타입을 원시 타입으로 잡지 않도록 합니다.",
  "rule.sast.sw.java.1474.example.0.dangerous": "라인 6: List item 의 형을 지정하지 않았습니다. 컴파일 타임에 형이 정해지지 않아서 런타임에 맞지 않는 형의 객체가 들어올 경우 오류가 발생합니다.",
  "rule.sast.sw.java.1474.example.0.safe": "라인 6: List item 의 형을 지정하여 사용하도록 합니다.",
  "rule.sast.sw.java.1474.name": "원시 타입 컬렉션 사용",
  "rule.sast.sw.java.1474.option.type_name.description": "Raw collection 타입 이름을 입력합니다.",
  "rule.sast.sw.java.1474.option.type_name.name": "Raw collection 타입",
  "rule.sast.sw.java.1475.description": "안전하지 않은 변할 수 있는 클래스 체커는 생성자 인자 값으로 변경 가능한 값을 받아 필드 값으로 할당하는 경우 이슈를 검출합니다.\n생성자 받은 인자 값으로 그대로 필드에 할당하면, 신뢰하지 않는 코드가 신뢰하는 코드의 필드 값을 변경할 수 있습니다.\n복사된 값을 필드에 저장할 수 있도록 하는 복사 생성자를 사용해야 합니다.",
  "rule.sast.sw.java.1475.example.0.dangerous": "라인 4: 생성자에서 date 필드에 레퍼런스를 할당하여 외부에서 date 값이 변경될 경우 date 값도 변경될 수 있습니다.",
  "rule.sast.sw.java.1475.example.0.safe": "라인 5: date 필드 값이 외부에 영향을 받지 않게 하기 위해 복사 생성자를 사용합니다.",
  "rule.sast.sw.java.1475.name": "안전하지 않은 변할 수 있는 클래스",
  "rule.sast.sw.java.1475.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1475.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1475.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1475.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1475.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1475.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1475.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1475.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1476.description": "민감한 클래스 상속 체커는 중요한 클래스를 상속하고 Cloneable을 구현하는 클래스의 하위 클래스에서 clone() 메소드를 구현하는 경우 이슈를 검출합니다.\nJava 에서 객체를 복사하는 방법은 공격자가 현재 존재하는 객체의 메모리 상태를 복사하여 새로운 인스턴스를 클래스의 생성자를 실행하지 않고 만들 수 있게 허용하고 있습니다. 중요한 클래스의 정보가 노출, 변경될 수 있습니다.\n중요하고 민감한 클래스는 반드시 final 클래스이거나 final clone 메소드를 사용하여 clone 되는 것을 방지해야 합니다.",
  "rule.sast.sw.java.1476.example.0.dangerous": "라인 7: 민감한 클래스를 상속하면서 Cloneable 을 구현 하는 클래스에서 민감한 클래스를 clone 할 경우 중요 정보가 노출될 수 있습니다.",
  "rule.sast.sw.java.1476.example.0.safe": "라인 7: 민감한 클래스는 상속할 때 clone 으로 복사 될 수 있지 않게 합니다.",
  "rule.sast.sw.java.1476.name": "민감한 클래스 상속",
  "rule.sast.sw.java.1476.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1476.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1476.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1476.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1476.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1476.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1476.option.implement_list.description": "분석 대상 상속 클래스 이름을 작성합니다.",
  "rule.sast.sw.java.1476.option.implement_list.name": "분석 대상 상속 클래스",
  "rule.sast.sw.java.1476.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1476.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1476.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1476.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1476.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1476.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1476.option.method_names.description": "분석 대상 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1476.option.method_names.name": "분석 대상 메소드",
  "rule.sast.sw.java.1476.option.throw_names.description": "분석 대상 예외 처리 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1476.option.throw_names.name": "분석 대상 예외처리 클래스",
  "rule.sast.sw.java.1484.description": "로그 삽입 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.\n사용자 입력을 검증 없이 그대로 로그에 출력하면 로그 내용에 공격자가 임의의 내용을 삽입하여 로그를 확인하는 보안 담당자 등을 헷갈리게 만들 수 있습니다. 이렇게 조작된 로그를 통해 잘못된 의사 결정이 이루어지면 그 결과를 공격에 활용할 수 있습니다.\n로그에 출력하기 전에 외부 입력값을 검사합니다. 특히 줄 바꿈 문자는 제거하는 것이 좋습니다.",
  "rule.sast.sw.java.1484.example.0.dangerous": "라인 2: 로그에 외부 입력이 그대로 출력됩니다.\n라인 4: 로그에 외부 입력이 그대로 출력됩니다.",
  "rule.sast.sw.java.1484.example.0.safe": "라인 1: 외부 입력값의 형태를 먼저 확인하고 로그를 출력합니다.",
  "rule.sast.sw.java.1484.name": "로그 삽입",
  "rule.sast.sw.java.1484.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1484.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1484.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1484.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1485.description": "안전하지 않은 ZipInputStream에서의 파일 추출 체커는 신뢰할 수 없는 압축 파일을 해제할 때 파일 크기와 이름을 확인하지 않는 경우를 검출합니다.\n압축 해제된 파일을 저장할 이름으로 압축 파일 내의 파일 이름을 그대로 사용한다면 공격자가 이 파일 이름을 통해 파일 시스템에 예상하지 못한 영향을 미칠 수 있습니다. 또한 지나치게 큰 파일을 크기 검증 없이 압축 해제하면 파일 시스템에 과도한 부하를 주거나 디스크를 가득 채울 수 있습니다.\n파일의 압축을 해제하고 결과를 저장하기 전에 이름과 크기를 확인합니다.",
  "rule.sast.sw.java.1485.example.0.dangerous": "라인 14: 압축 파일 이름을 그대로 출력할 파일 이름으로 사용하고 있습니다.\n라인 16: 파일의 크기를 확인하지 않고 그대로 파일 시스템에 출력합니다.",
  "rule.sast.sw.java.1485.example.0.safe": "라인 33: 해제할 파일 이름을 검증한 후 사용합니다.\n라인 36: 해제할 파일의 최대 크기를 제한합니다.",
  "rule.sast.sw.java.1485.name": "안전하지 않은 ZipInputStream에서의 파일 추출",
  "rule.sast.sw.java.1485.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1485.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1485.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1485.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1486.description": "파일 이름 및 경로에 사용된 비 아스키 문자 체커는 파일 이름과 경로에 ASCII 코드에 포함되지 않는 문자를 사용한 경우를 검출합니다.\n최근의 운영 체제에서는 잘 일어나지 않는 일이지만, 시스템 환경에 따라서는 파일 경로에 ASCII를 벗어난 문자가 사용되면 시스템이 오작동하거나 파일에 접근할 수 없게 되는 등의 문제가 생길 수 있으므로 주의가 필요합니다. 또한 특수문자가 포함된 파일 이름에 커맨드 라인 인터페이스를 통해 접근하려고 할 때 이 파일의 경로가 명령어의 정상적인 해독을 방해하여 공격에 활용될 수도 있습니다.\n파일 시스템에 접근할 때 경로에 이상한 문자가 포함되어 있지 않다는 것이 보장되어야 합니다.",
  "rule.sast.sw.java.1486.example.0.dangerous": "라인 1: 파일 경로에 ASCII가 아닌 문자가 포함되어 있습니다.",
  "rule.sast.sw.java.1486.example.0.safe": "라인 1: 평범함 문자를 사용하여 파일 이름을 짓습니다.",
  "rule.sast.sw.java.1486.name": "파일 이름 및 경로에 사용된 비 아스키 문자",
  "rule.sast.sw.java.1486.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1486.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1486.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1486.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1488.description": "신뢰할 수 없는 정규식 체커는 검증되지 않은 외부 입력이 포함된 정규식 문자열을 검출합니다.\n임의의 문자열을 정규식 패턴 검사기로 변환할 수 있도록 허용하면 프로그램 성능을 극도로 저하시키는 패턴을 생성 시킬 수도 있습니다. 이를 통해 DoS(Denial of Service) 등의 공격이 시도될 수 있습니다.\n정규식 생성에 직접 외부 입력을 사용하는 것을 자제하고 꼭 필요한 경우 정규식 특수 문자를 사용하지 못하도록 필터링하는 것이 좋습니다.",
  "rule.sast.sw.java.1488.example.0.dangerous": "라인 47: 검증되지 않은 외부 입력값으로 정규식을 생성합니다.",
  "rule.sast.sw.java.1488.example.0.safe": "라인 8: 외부 입력을 필터링 한 후 정규식 생성에 사용합니다.",
  "rule.sast.sw.java.1488.name": "신뢰할 수 없는 정규식",
  "rule.sast.sw.java.1488.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1488.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1488.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1488.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1489.description": "입력 검증에 사용된 비 문자 체커는 입력 문자열을 검증하기 전에 정상 문자열이 아닌 것을 제거하지 않은 경우를 검출합니다.\n문자열 내에서 특정 부분 문자열을 걸러내야 하는 경우 이런 필터링을 하기 전에 미리 비 문자 제거를 수행해야 합니다. 예를 들어 <script>와 같은 문자열을 제거해야 하는 상황에서 <scri??pt> 와 같이 중간에 비 문자가 섞여있다면, 입력 검증을 먼저 수행하고 비 문자 제거를 나중에 할 경우에 해당 부분 문자열을 찾아내지 못한 채 통과시키게 됩니다.\n비 문자 제거를 수행할 예정이라면 문자열 검증을 하기 전에 비 문자 제거를 먼저 수행해야 합니다.",
  "rule.sast.sw.java.1489.example.0.dangerous": "라인 6: 정규식 검사에 잘못된 문자값이 전달됩니다.",
  "rule.sast.sw.java.1489.example.0.safe": "라인 5: 정규식 검사에 문자열을 전달하기 전에 잘못된 문자값을 미리 제거합니다.",
  "rule.sast.sw.java.1489.name": "입력 검증에 사용된 비 문자",
  "rule.sast.sw.java.1489.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1489.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1489.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1489.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1491.description": "누락된 실수 입력에 대한 NaN 검사 체커는 부동 소수점을 가질 수 있는 외부 입력값을 적절하게 검사하지 않는 코드를 검사합니다.\n부동 소수점(Floating-Point)은 실수를 표현하는 방법 중 하나입니다. 이 부동 소수점은 양의 무한대, 음의 무한대, NaN(Not a Number) 값을 가질 수 있습니다. 신뢰할 수 없는 외부 입력값이 Double.valueOf 함수의 인자로 사용되는 경우, 사용자가 NaN 값을 입력할 가능성이 있습니다. 이로 인해 개발자가 의도하지 않은 동작이 발생할 수 있습니다.\nDouble.isNaN 함수를 통해 외부 입력값 val 변수에 대해 유효성 검사를 수행합니다.",
  "rule.sast.sw.java.1491.example.0.dangerous": "라인 6: 신뢰할 수 없는 사용자 입력을 Double.valueOf 함수의 인자로 사용했습니다. 반환값에 NaN이 포함될 수 있습니다.\n라인 11: val 변수가 NaN 값인 경우 예외가 발생합니다.",
  "rule.sast.sw.java.1491.example.0.safe": "라인 6: 신뢰할 수 없는 사용자 입력을 Double.valueOf 함수의 인자로 사용했습니다. 반환값에 NaN이 포함될 수 있습니다.\n라인 11: Double.isNaN() 함수를 통해 외부 입력값 val 변수에 대해 유효성 검사를 수행합니다.",
  "rule.sast.sw.java.1491.name": "누락된 실수 입력에 대한 NaN 검사",
  "rule.sast.sw.java.1491.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1491.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1491.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1491.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1492.description": "부동 소수점 값의 문자열 표현과 비교 체커는 double이나 float 값을 문자열로 변환하여 다른 문자열과 비교하는 경우를 검출합니다.\n실수 값을 문자열 표현을 통해 비교하거나 검사하면 안됩니다. 실수 값은 개발자가 예측한 값과 다르게 출력될 수 있습니다. 예를 들어 0.001 이 0.0010 으로 출력될 수 있습니다. 또한 실수 값이 연산을 거친 값이라면 누적된 오차 때문에 생각과 다른 값이 되어 있을 수 있습니다.\n두 부동 소수점 값이 같은지 비교하고 싶다면 두 값의 차가 미리 정해둔 충분히 작은 값 이내인지 확인하는 방식으로 비교해야 합니다. 만약 10진법으로 정확한 값을 갖는 실수를 표현하고 싶다면 BigDecimal 클래스를 사용합니다.",
  "rule.sast.sw.java.1492.example.0.dangerous": "라인 3: double 값을 문자열로 변환하여 0.001 문자열과 비교합니다.",
  "rule.sast.sw.java.1492.example.0.safe": "라인 3: 10진법으로 정확히 표현된 실수값을 사용 및 비교하고 싶다면 BigDecimal 클래스를 사용합니다.",
  "rule.sast.sw.java.1492.name": "부동 소수점 값의 문자열 표현과 비교",
  "rule.sast.sw.java.1492.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1492.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1492.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1492.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1493.description": "위험한 다운캐스팅 체커는 확인 없이 정수값을 표현범위가 줄어드는 방향으로 캐스팅하는 경우를 검출합니다.\n정수값을 다운캐스팅하면 각 타입의 표현 범위에 따라 값의 상위 비트가 임의로 잘려나갈 수 있습니다. 이 결과를 그대로 사용하면 예상하지 못한 오동작을 일으킬 수 있습니다.\n정수값을 다운캐스팅하기 전에 대상 타입의 표현 범위 안에 들어갈 수 있는 값인지 확인해야 합니다. 만약 다운캐스팅을 통해 상위 비트를 잘라내고자 하는 의도가 뚜렷하다면 다운캐스팅을 하기 전에 비트 연산을 통해 상위 비트를 먼저 제거한 후 캐스팅 해야 의도를 더 명확히 드러낼 수 있습니다.",
  "rule.sast.sw.java.1493.example.0.dangerous": "라인 8: 확인 없이 다운캐스팅하여 int 타입 128이던 값이 byte 타입 -128로 변경되었습니다.",
  "rule.sast.sw.java.1493.example.0.safe": "라인 4: 값의 범위에 따라 캐스팅 여부를 결정합니다.",
  "rule.sast.sw.java.1493.name": "위험한 다운캐스팅",
  "rule.sast.sw.java.1494.description": "변할 수 있는 입력 및 내부 구성 요소의 직접 사용 체커는 변할 수 있는(mutable) 객체에 내부의 구성 요소를 저장하고 반환하기 전에 구성 요소의 복사본을 생성하지 않는 코드를 검출합니다.\n내부의 구성 요소의 mutable 객체에는 List, ArrayList, HashMap, Date 및 배열 등이 있습니다. 내부 구성 요소의 mutable 객체인 경우 유효성을 검사하는 시점과 사용되는 시점 사이에 상태가 변할 수 있습니다. 이러한 시점 차이로 인해 공격자는 TOCTOU(Time-of-check, Time-of-user)를 이용하는 경쟁 조건(Race Condition) 공격을 수행할 수 있습니다.\n내부 구성 요소의 mutable 객체인 cookie의 복사본을 생성하여 유효성 검사나 함수 호출에 사용함으로써 인자값이 외부에 의해 변경되지 않도록 합니다.",
  "rule.sast.sw.java.1494.example.0.dangerous": "라인 3: HttpCookie 클래스의 cookie는 내부 구성 요소의 mutable 객체입니다.\n라인 9: hasExpired 함수를 호출하여 cookie 객체에 대해 만료되었는지 확인했습니다.\n라인 14: doLogic 함수 호출의 인자로 사용되기 전에 공격자가 cookie 객체의 유효기간을 만료시킬 위험이 있습니다.",
  "rule.sast.sw.java.1494.example.0.safe": "라인 3: HttpCookie 클래스의 cookie는 내부 구성 요소의 mutable 객체입니다.\n라인 9: 내부 구성 요소의 mutable 객체인 cookie의 복사본을 생성하여 유효성 검사나 함수 호출에 사용함으로써 인자값이 외부에 의해 변경되지 않도록 합니다.",
  "rule.sast.sw.java.1494.name": "변할 수 있는 입력 및 내부 구성 요소의 직접 사용",
  "rule.sast.sw.java.1494.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1494.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1494.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1494.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1496.description": "입출력 버퍼에 대해 차단된 외부 프로세스 체커는 입출력 버퍼를 제대로 관리하지 않아서 멈출 수도 있는 외부 프로세스 사용을 검출합니다.\n외부 프로세스가 표준 입력 스트림으로부터 입력이 들어오기를 무한정 기다리는 프로그램일 경우에 표준 입력 스트림을 파이프로 제공해주지 않으면 프로세스가 대기 상태에 빠질 수 있습니다. 또한 외부 프로세스의 오류 혹은 출력 스트림이 가득찰 때 적절히 비워줄 수 없다면 역시 프로세스가 대기 상태에 빠질 수 있습니다. 이런 고려 없이 외부 프로세스를 생성하면 예상하지 못한 예외가 발생하거나 서비스 거부(Denial of Service) 공격의 대상이 될 수 있습니다.\nredirectErrorStream() 등의 메소드를 통해 각종 입출력 버퍼를 자동 연결하고 적절히 처리해줍니다.",
  "rule.sast.sw.java.1496.example.0.dangerous": "라인 5: exitValue() 메소드를 호출했습니다. 아직 종료되지 않은 프로세스에 대해 이 메소드를 호출하면 IllegalThreadStateException 예외가 발생합니다. 또한 출력 버퍼들을 제대로 관리하지 않고 있습니다.",
  "rule.sast.sw.java.1496.example.0.safe": "라인 5: redirectErrorStream(true) 메소드를 호출하여 오류 스트림과 출력 스트림을 합칩니다.\n라인 7: 합쳐진 오류 및 출력 스트림에 접근합니다.\n라인 9: 스트림에서 값을 꺼내와서 가득차지 않도록 만들어줍니다.",
  "rule.sast.sw.java.1496.name": "입출력 버퍼에 대해 차단된 외부 프로세스",
  "rule.sast.sw.java.1496.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1496.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1496.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1496.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1497.description": "부적절한 write 인자의 정수 값 체커는 0 에서 255 에 속하지 않은 정수값을 write 메소드를 사용하여 출력하는 경우를 검출합니다.\nOutputStream.write() 메소드는 int 타입의 32비트 정수를 인자로 받지만 공식 문서에 따르면 하위 8비트만을 출력하고 상위 24비트는 무시합니다. 이 사실을 명확히 인지하고 메소드를 사용해야 합니다. 0에서 255의 범위를 넘어서는 정수값을 전달했다면 상위 비트가 버려지는 것을 모르고 사용했을 가능성이 높으며, 출력해야 할 값을 출력하지 않았기 때문에 예상 밖의 문제가 생길 수 있습니다.\nwrite() 메소드에는 항상 0에서 255까지의 정수값만 전달합니다. 범위를 넘어서는 정수에서 하위 8비트만을 출력하는 것이 의도라면 비트 연산을 통해 하위 8비트만을 먼저 선택한 후 그 값을 전달하여 의도를 명확히 하는 것이 좋습니다.",
  "rule.sast.sw.java.1497.example.0.dangerous": "라인 4: 외부 입력을 범위 검사 없이 write() 메소드로 직접 전달합니다. 범위를 넘어서는 값이 전달될 수 있습니다.",
  "rule.sast.sw.java.1497.example.0.safe": "라인 5: 범위를 넘어서는 값에 대해 별도로 예외 처리합니다.",
  "rule.sast.sw.java.1497.name": "부적절한 write 인자의 정수 값",
  "rule.sast.sw.java.1497.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1497.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1497.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1497.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1498.description": "신뢰할 수 없는 파일 링크 사용 체커는 파일 경로가 일반 파일이 아닌 링크 파일인지 확인하지 않고 접근하는 경우를 검출합니다.\n링크된 파일에 접근하면 실제로는 다른 파일에 접근하게 될 수 있습니다. 만약 공격자가 원래 접근하려던 파일을 링크 파일로 바꿔두고 공격자가 의도한 다른 파일에 접근하도록 만들어두면 이로 인해 프로그램이 오동작을 일으킬 수 있습니다.\n파일에 접근하기 전에 링크 여부를 확인하고 의도하지 않은 링크 파일임이 확인되면 작동을 중단합니다.",
  "rule.sast.sw.java.1498.example.0.dangerous": "라인 3: 신뢰할 수 없는 경로의 파일에 직접 접근합니다.",
  "rule.sast.sw.java.1498.example.0.safe": "라인 4: 파일에 접근하기 전에 해당 파일의 링크 여부를 확인합니다.",
  "rule.sast.sw.java.1498.name": "신뢰할 수 없는 파일 링크 사용",
  "rule.sast.sw.java.1498.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1498.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1498.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1498.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1499.description": "잘못된 직렬화 순서 체커는 객체를 직렬화할 때 서명, 봉인, 출력의 순서로 작업하지 않는 경우를 검출합니다.\n서명과 봉인 없이 출력하면 변조의 위험이 있습니다. 봉인을 먼저 하고 그 다음 서명을 해도 역시 서명자의 진위 여부를 확신할 수 없어 위험합니다. 따라서 정확한 순서에 따라 직렬화를 진행해야 합니다.\n서명, 봉인, 출력의 순서로 직렬화합니다.",
  "rule.sast.sw.java.1499.example.0.dangerous": "라인 14: 대상 데이터를 봉인합니다.\n라인 21: 봉인된 데이터를 기반으로 서명합니다. 순서가 잘못되었습니다.",
  "rule.sast.sw.java.1499.example.0.safe": "라인 9: 서명을 먼저 진행합니다.\n라인 21: 서명된 데이터를 봉인합니다. 이제 수신자가 이 데이터를 신뢰할 수 있습니다.",
  "rule.sast.sw.java.1499.name": "잘못된 직렬화 순서",
  "rule.sast.sw.java.1500.description": "직렬화 도중 발생하는 메모리 및 자원 누수 체커는 다른 직렬화된 객체에 대한 참조가 없는 데이터를 직렬화할 때 이전에 작성된 java.io.ObjectOutputStream 객체가 이후에 다시 사용되는 코드를 검출합니다.\njava.io.ObjectOutputStream 객체는 스트림에 작성된 각 객체에 대한 참조를 유지함으로써 각 객체가 스트림에 한 번만 기록되도록 합니다. 이전에 작성된 객체가 이후에 스트림에 다시 기록되면 객체의 내용이 바뀌지 않는 경우라도 기존의 스트림에 작성된 객체에 대한 참조로 대체됩니다. 여기서 기존에 직렬화된 객체를 추적하기 위해 참조 테이블을 사용하며 해당 참조 테이블은 이전에 직렬화된 객체의 가비지 콜렉션을 방해하게 됩니다.\n쓰기 작업 후에 java.io.ObjectOutputStream.reset() 메소드를 통해 출력 스트림을 재설정하여 내부 객체 캐시를 삭제합니다.",
  "rule.sast.sw.java.1500.example.0.dangerous": "라인 16: readSensorData() 메소드는 호출될 때마다 새로 생성된 SensorData 객체를 반환합니다.\n라인 17: java.io.ObjectOutputStream은 이전에 기록된 객체의 캐시를 유지하고 관리합니다. 또한 모든 SensorData 객체가 가비지 컬렉션될 때까지 유지됩니다.",
  "rule.sast.sw.java.1500.example.0.safe": "라인 11: 쓰기 작업 후에 java.io.ObjectOutputStream.reset() 메소드를 통해 출력 스트림을 재설정하여 내부 객체 캐시를 지웁니다. 결과적으로 캐시는 이전에 기록에 사용된 객체에 대한 참조를 더 이상 유지하지 않습니다.",
  "rule.sast.sw.java.1500.name": "직렬화 도중 발생하는 메모리 및 자원 누수",
  "rule.sast.sw.java.1502.description": "기본 자동 서명 인증 사용 체커는 서명이 올바른지 추가로 확인을 수행하지 않고 기본 자동 서명 확인 프로세스만 사용하는 코드를 검출합니다.\nJava는 플랫폼 독립적 배포를 위해 일반적으로 JAR 형식으로 파일을 패키지화합니다. JAR 파일은 EJB (Enterprise Java Bean), MIDlet (J2ME) 및 Weblogic Server J2EE 응용 프로그램을 배포하는 데 선호하는 형식입니다. 또한 Java Web Start가 제공하는 포인트 앤 클릭 설치 방식 또한 패키징을 위해 JAR을 사용합니다. 추가적으로 필요한 경우 공급 업체가 JAR 파일에 서명을 하기도 합니다. 그러나 서명은 코드의 진위성만 보장할 뿐 코드의 보안을 보장하지 않으며 클라이언트 코드는 코드 서명을 제대로 검사하지 못할 수도 있습니다. 예를 들어, URLClassLoader 클래스 및 서브 클래스와 java.util.jar 클래스의 인스턴스는 서명된 JAR 파일의 서명을 자동으로 확인합니다. 물론 프로그래머가 구현한 사용자 정의 클래스 로더에는 이러한 검사가 없을 수 있습니다. 하지만 URLClassLoader의 경우에도 자동 확인은 무결성 검사만을 수행합니다. 이 검사는 공개 키의 유효성을 검증하지 않고 JAR에 포함된 공개 키를 사용하기 때문에 로드된 클래스를 인증하는 데 실패할 수 있습니다.\njava.security.cert.Certificate.verify 함수를 사용하여 서명을 확인한 후 사용합니다.",
  "rule.sast.sw.java.1502.example.0.dangerous": "라인 50: 클래스를 로드한 후 별도의 인증 없이 바로 클래스를 사용했습니다.",
  "rule.sast.sw.java.1502.example.0.safe": "라인 6: 클래스를 로드한 후 사용하기 전에 별도의 서명을 먼저 확인합니다.",
  "rule.sast.sw.java.1502.name": "기본 자동 서명 인증 사용",
  "rule.sast.sw.java.1503.description": "readInt 메소드 반환 값의 부적절한 사용 체커는 long 타입의 변수에 readInt() 메소드의 반환 값을 `0xFFFFFFFFL` 마스킹 없이 사용하면 이슈를 검출합니다.\n항상 데이터가 부호가 있는 수를 다루는 경우 MSB(most significant bit)를 부호 bit로 사용합니다. 32 bit unsigned 데이터에서 MSB는 부호 비트가 아니지만 부호가 있는 수를 다루는 경우에는 부호 비트로 사용되어 사용자가 원하는 데이터로 사용되지 않는 경우가 발생합니다.\nlong 타입의 변수에 readInt() 메소드의 반환 값을 `0xFFFFFFFF` 마스킹 처리합니다.",
  "rule.sast.sw.java.1503.example.0.dangerous": "라인 3: long 형으로 반환 할 때 readInt() 메소드 호출 후 마스킹 없이 반환했습니다.",
  "rule.sast.sw.java.1503.example.0.safe": "라인 3: MSB 마스킹 후 해당 data 를 반환했습니다.",
  "rule.sast.sw.java.1503.name": "readInt 메소드 반환 값의 부적절한 사용",
  "rule.sast.sw.java.1503.option.method_name.description": "readInt() 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1503.option.method_name.name": "readInt() 명",
  "rule.sast.sw.java.1503.option.type_name.description": "readInt() 메소드를 호출할 수 있는 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1503.option.type_name.name": "readInt() 메소드 포함 클래스",
  "rule.sast.sw.java.1504.description": "생성자 내에서의 예외 생성 체커는 생성자 내에서 예외를 생성하면 이슈를 검출합니다.\n생성자 내에서 예외를 발생시킬 경우 부분적으로 초기화될 수 있습니다. 또한 외부에서 상속할 경우 instance의 참조가 intercept 당할 수 있습니다.\n클래스를 final로 선언되어 있거나, finalize() 메소드를 final로 오버라이딩 하거나, 옵션에 기재된 이름을 갖는 initialized flag를 선언합니다.",
  "rule.sast.sw.java.1504.example.0.dangerous": "라인 4: 생성자 내에서 예외를 throw 문이 사용되었습니다.",
  "rule.sast.sw.java.1504.example.0.safe": "라인 1: final class 로 만들어 외부에서 상속하지 못하도록 막습니다.",
  "rule.sast.sw.java.1504.name": "생성자 내에서의 예외 생성",
  "rule.sast.sw.java.1504.option.initialized_flag.description": "생성자가 정상적으로 생성되어 있는지 확인하는 flag 의 이름을 입력합니다.",
  "rule.sast.sw.java.1504.option.initialized_flag.name": "생성자 생성 확인 flag",
  "rule.sast.sw.java.1505.description": "부적절한 키 객체 간 비교 체커는 key.equals() 메소드로 암호 키를 비교하면 이슈를 검출합니다.\njava.security.Key 객체를 비교할 때 단순히 객체만 비교해서는 정확한 비교를 할 수 없습니다. 정확한 비교를 위해서 키의 인코딩 정보를 포함 하여 private 키 등 사용하는 키 객체에서 사용하는 정보들을 각각 비교해야 합니다.\n암호 키 비교시 key.getEncoded() 메소드의 호출이 메소드 내에 있어야 합니다.",
  "rule.sast.sw.java.1505.example.0.dangerous": "라인 3: key1 와 key2 의 객체 비교할 경우 정확한 비교가 이루어 지지 않습니다.",
  "rule.sast.sw.java.1505.example.0.safe": "라인 3: 객체 비교 이외에 key 가 갖고 있는 속성들을 비교하여 동일 여부를 판단합니다.",
  "rule.sast.sw.java.1505.name": "부적절한 키 객체 간 비교",
  "rule.sast.sw.java.1505.option.method_name.description": "equals() 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1505.option.method_name.name": "equals() 메소드",
  "rule.sast.sw.java.1505.option.safe_method.description": "각각의 속성을 비교하는 메소드를 입력합니다.",
  "rule.sast.sw.java.1505.option.safe_method.name": "속성 비교 메소드",
  "rule.sast.sw.java.1505.option.type_name.description": "Key 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1505.option.type_name.name": "Key 클래스",
  "rule.sast.sw.java.1506.description": "부적절한 URL 비교 체커는 URL.equals() 메소드를 호출하면 이슈를 검출합니다.\n가상 호스팅은 같은 컴퓨터에서 같은 ip 주소를 갖을 수 있게 합니다. URL 객체를 equals() 메소드로 비교할 경우 다른 URL 이지만 같은 ip 주소를 갖을 경우 같은 객체라고 판단합니다. 따라서 제대로된 비교를 할 수 없게 됩니다.\nURL 객체를 비교할 때 URL.equals() 메소드를 사용하지 않습니다.",
  "rule.sast.sw.java.1506.example.0.dangerous": "라인 4: URL 객체의 instance 를 비교했습니다.",
  "rule.sast.sw.java.1506.example.0.safe": "라인 4: 실제 비교하고 싶은 URL 주소를 비교합니다.",
  "rule.sast.sw.java.1506.name": "부적절한 URL 비교",
  "rule.sast.sw.java.1506.option.method_names.description": "equals() 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1506.option.method_names.name": "equals() 메소드",
  "rule.sast.sw.java.1506.option.throw_names.description": "URL 예외 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1506.option.throw_names.name": "URL 예외 클래스",
  "rule.sast.sw.java.1506.option.type_names.description": "URL 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1506.option.type_names.name": "URL 클래스",
  "rule.sast.sw.java.1508.description": "예외에 대한 부적절한 복원 체커는 try 블록에서 예외를 throw하고, 그 아래에서 필드에 값을 할당하는 경우 이슈를 검출합니다.\ntry 블록에서 throw문 이후에 필드에 값을 할당하면 예외가 발생했을 때 적용이 되지 않습니다. 예외가 throw된 이후에 필드 값 변경은 catch 블록, 혹은 finally 블록에서 이루어져야 합니다.\nthrow 문 이전에 필드 값을 할당하는 구문을 사용합니다.",
  "rule.sast.sw.java.1508.example.0.dangerous": "라인 26-28: try 블록 내에서 throw 문 이후에 필드 값을 할당하는 구문이 사용되었습니다.",
  "rule.sast.sw.java.1508.example.0.safe": "라인 30-32: throw 문 이전에 필드 값을 할당하는 구문을 사용합니다.",
  "rule.sast.sw.java.1508.name": "예외에 대한 부적절한 복원",
  "rule.sast.sw.java.1509.description": "같은 스레드 풀 사용 체커는 스레드 풀을 사용할 때 같은 풀을 사용하여 sub-task 를 수행하는 경우 이슈를 검출합니다.\n스레드 풀 내에서 모든 스레드가 사용 중일 경우에 다른 작업들은 멈추게 됩니다. 같은 풀에서 sub-task 를 사용하게 될 경우 sub-task 가 완료되기 전에 상위 task 들이 멈추게 되는 현상이 발생 하기 때문에 상위 task 와 동일한 스레드 풀을 사용하지 않도록 합니다.\n스레드 풀을 사용 시 같은 풀을 사용하여 sub-task 수행하면 안됩니다.",
  "rule.sast.sw.java.1509.example.0.dangerous": "라인 21: ValidateInput 클래스 내부에 같은 pool 을 사용하여 thread 를 실행 하고 있습니다.",
  "rule.sast.sw.java.1509.example.0.safe": "라인 8: ValidateInput 클래스를 pool 내에서 직접 실행하도록 수정합니다.",
  "rule.sast.sw.java.1509.name": "같은 스레드 풀 사용",
  "rule.sast.sw.java.1509.option.method_name.description": "Thread pool에 있는 thread를 실행하는 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1509.option.method_name.name": "Thread pool 실행 메소드",
  "rule.sast.sw.java.1509.option.type_name.description": "Thread pool 에 있는 thread 를 실행 하는 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1509.option.type_name.name": "Thread pool 실행 클래스",
  "rule.sast.sw.java.1510.description": "재 초기화 되지 않은 ThreadLocal 타입 필드 체커는 ThreadLocal 타입의 필드를 가진 클래스에 대해서 execute() 메소드를 수행할 때, try-finally 블록을 사용하지 않으면 검출합니다.\nThreadLocal의 클래스에 대해서는 finally 블록 안에서 재 초기화를 수행해 주어야 합니다. 대상 execute 메소드를 옵션으로 입력받으며, 재 초기화 함수 역시 옵션으로 입력받습니다.\nThreadLocal의 클래스에 대해서는 finally 블록 안에서 재 초기화를 수행해 주어야 합니다.",
  "rule.sast.sw.java.1510.example.0.dangerous": "라인 35: fianlly 문이 없을 뿐만 아니라 thread 를 실행 후 해당 클래스에 대한 재 초기화 구문이 없습니다.",
  "rule.sast.sw.java.1510.example.0.safe": "라인 17: Thread 를 실행 후 해당 클래스를 초기화 할 수 있는 구문을 삽입합니다.",
  "rule.sast.sw.java.1510.name": "재 초기화 되지 않은 ThreadLocal 타입 필드",
  "rule.sast.sw.java.1510.option.executor_method.description": "Executor 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1510.option.executor_method.name": "Executor 클래스",
  "rule.sast.sw.java.1510.option.method_names.description": "분석 대상 오버라이드 메소드 이름을 입력하세요.",
  "rule.sast.sw.java.1510.option.method_names.name": "분석 대상 오버라이드 메소드",
  "rule.sast.sw.java.1510.option.reinitializer_method.description": "재 초기화 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1510.option.reinitializer_method.name": "재 초기화 메소드",
  "rule.sast.sw.java.1510.option.type_names.description": "분석 대상 클래스 타입 이름을 입력하세요.",
  "rule.sast.sw.java.1510.option.type_names.name": "분석 대상 클래스 타입",
  "rule.sast.sw.java.1511.description": "부분적으로 초기화 된 객체 체커는 스레드 내부에서 생성될 때 부분적으로 초기화 되어 사용될 수 있는 객체가 있으면 검출합니다.\n멀티스레드 환경에서 공유 개체가 부분적 초기화 가능성이 있으면, 의도하지 않은 결과가 나올 수 있습니다. 옵션으로 초기화 메소드 이름을 전달 받으며, synchronized로 선언되어 있지 않는 초기화 메소드 내에서 사용된 필드 중 final이나 volatile이 아닌 필드가 존재하면 해당 초기화 메소드를 오류로 검출합니다.\n초기화 메소드를 synchronized로 선언하거나, 초기화 메소드 내에서 사용된 필드를 final이나 volatile로 선언합니다.",
  "rule.sast.sw.java.1511.example.0.dangerous": "라인 8: 필드 멤버 변수를 초기화 하는 메소드가 사용되었습니다. 초기화 메소드가 synchronized가 아니며 필드가 final 혹은 volatile가 아닙니다.",
  "rule.sast.sw.java.1511.example.0.safe": "라인 8: synchronized 를 사용하여 초기화 하도록 수정했습니다.",
  "rule.sast.sw.java.1511.name": "부분적으로 초기화 된 객체",
  "rule.sast.sw.java.1511.option.initializer_method.description": "객체를 초기화하는 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1511.option.initializer_method.name": "초기화 메소드",
  "rule.sast.sw.java.1524.description": "읽기 시 반환 값의 부적절한 사용 체커는 InputStream.read() 메소드의 반환 값을 정수형 변수로 받지 않고 -1 과 비교하면 검출합니다.\nInputStream 클래스의 read() 메소드의 반환 값의 타입은 int 타입입니다. 반환 값의 타입을 변환할 경우 입력 스트림의 끝이 아닌 부분에서 읽기 작업이 종료될 수 있습니다.\nInputStream.read()의 반환 값을 정수형 변수로 받아서 처리해야 합니다.",
  "rule.sast.sw.java.1524.example.0.dangerous": "라인 6: read() 메소드의 반환 값을 byte 형으로 비교하여 검출했습니다.",
  "rule.sast.sw.java.1524.example.0.safe": "라인 7: read() 메소드의 반환 값을 int 형으로 비교하도록 합니다.",
  "rule.sast.sw.java.1524.name": "읽기 시 반환 값의 부적절한 사용",
  "rule.sast.sw.java.1524.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1524.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1524.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1524.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1524.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1524.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1524.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1524.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1524.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1524.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1524.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1524.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1524.option.method_name.description": "읽기 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1524.option.method_name.name": "읽기 메소드",
  "rule.sast.sw.java.1524.option.type_name.description": "입력을 담당하는 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1524.option.type_name.name": "입력 클래스",
  "rule.sast.sw.java.1525.description": "불완전한 정적 초기화 블록 체커는 불완전하게 초기화될 수 있는 정적 필드가 있으면 검출합니다.\n정적 초기자 내에서 초기화가 이루어지더라도 불완전하게 초기화 될 가능성이 있습니다. 정적 필드를 final로 선언하면 Null일 가능성이 있는 값을 허용하지만 Null이 아닌 값이 완전히 초기화된 개체를 참조한다는 것을 보장합니다.\n정적 필드들은 final로 선언되어야 합니다.",
  "rule.sast.sw.java.1525.example.0.dangerous": "라인 5: 정적 초기자 내에서 예외가 발생하여 초기화를 하지 못 할 경우가 발생합니다.",
  "rule.sast.sw.java.1525.example.0.safe": "라인 2: stock 멤버 변수에 final 을 붙이거나 catch 문 다음에 finally 문 내에서 초기화를 하도록 수정합니다.",
  "rule.sast.sw.java.1525.name": "불완전한 정적 초기화 블록",
  "rule.sast.sw.java.1527.description": "시스템 환경 변수 사용 체커는 System.getEnv() 메소드를 호출하면 검출합니다.\n환경 변수 값은 플랫폼마다 다를 수 있습니다. 예를 들어 윈도우 시스템에서는 USERNAME이 사용자 이름을 가져오는데 유닉스 시스템에서는 USER가 사용자 이름을 가져오는 환경 변수로 사용됩니다. 또한 공격자가 특정 환경 변수를 어떠한 값으로 설정한 후 프로그램을 실행할 수 있게 합니다.\nSystem.getEnv() 메소드를 호출하지 않도록 합니다.",
  "rule.sast.sw.java.1527.example.0.dangerous": "라인 5: System.getenv() 를 호출했습니다.\n라인 9: 위와 같습니다.",
  "rule.sast.sw.java.1527.example.0.safe": "라인 5: System.getenv() 메소드는 위험하기 때문에 사용을 금지합니다.\n라인 9: 위와 같습니다.",
  "rule.sast.sw.java.1527.name": "시스템 환경 변수 사용",
  "rule.sast.sw.java.1527.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1527.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1527.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1527.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1527.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1527.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1527.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1527.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1527.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1527.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1527.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1527.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1527.option.method_name.description": "getenv() 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1527.option.method_name.name": "getenv 메소드",
  "rule.sast.sw.java.1527.option.type_name.description": "System 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1527.option.type_name.name": "System 클래스",
  "rule.sast.sw.java.1528.description": "ReflectPermission 사용 체커는 java.lang.ReflectPermission을 사용하여 권한을 얻으면 검출합니다.\nReflectPermission에서 suppressAccessChecks 권한 이름을 사용할 시 모든 클래스에 있는 필드에 접근할 수 있게 됩니다. 그럴 경우 private, protected의 필드가 노출될 수 있습니다.\njava.lang.ReflectPermission을 사용하여 권한을 얻지 않도록 합니다.",
  "rule.sast.sw.java.1528.example.0.dangerous": "라인 5: ReflectionPermission 을 사용하여 권한을 획득했습니다.",
  "rule.sast.sw.java.1528.example.0.safe": "라인 5: ReflectionPermission 을 사용하여 권한 획득을 하지 않도록 수정합니다.",
  "rule.sast.sw.java.1528.name": "ReflectPermission 사용",
  "rule.sast.sw.java.1528.option.class_type_name.description": "Thread 타입 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.class_type_name.name": "Thread 타입",
  "rule.sast.sw.java.1528.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1528.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1528.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1528.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1528.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1528.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1528.option.method_name.description": "add 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.method_name.name": "add 메소드",
  "rule.sast.sw.java.1528.option.type_name.description": "PermissionCollection 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1528.option.type_name.name": "PermissionCollection 클래스",
  "rule.sast.sw.java.1532.description": "클래스 이름 비교 체커는 클래스 이름으로 클래스를 비교하는 코드를 검출합니다.\n클래스 이름을 사용하여 클래스를 비교하면 두 객체가 같지 않은 경우에도 동일한 클래스로 간주될 수 있습니다. 따라서 클래스를 비교하기 위해 클래스 객체가 아닌 클래스 이름을 비교하면 안됩니다.\n클래스 이름으로 클래스를 비교하지 않도록 합니다.",
  "rule.sast.sw.java.1532.example.0.dangerous": "라인 3: 클래스 이름을 비교했습니다.",
  "rule.sast.sw.java.1532.example.0.safe": "라인 3: 클래스 이름이 아닌 클래스 자체를 비교합니다.",
  "rule.sast.sw.java.1532.name": "클래스 이름 비교",
  "rule.sast.sw.java.1532.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1532.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1532.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1532.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1532.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1532.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1532.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1532.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1532.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1532.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1532.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1532.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1533.description": "assert 구문 내에서 파라미터 사용 체커는 메소드의 인자를 assert 구문에 사용하면 검출합니다.\nassert 문을 사용하여 메소드의 인자를 검증 할 경우 예외 처리에 대해 검증 할 수 없기 때문에 사용하지 않을 것을 권고합니다.\nassertion을 사용하여 public 메소드의 인수를 검증하지 않아야 합니다.",
  "rule.sast.sw.java.1533.example.0.dangerous": "라인 3: 메소드 인자인 x가 assert 문 내에 사용되었습니다.\n라인 4: 메소드 인자인 y가 assert 문 내에 사용되었습니다.",
  "rule.sast.sw.java.1533.example.0.safe": "라인 5: assert 문내에 메소드의 인자를 넣지 않도록 합니다.",
  "rule.sast.sw.java.1533.name": "assert 구문 내에서 파라미터 사용",
  "rule.sast.sw.java.1533.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1533.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1533.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1533.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1533.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1533.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1533.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1533.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1533.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1533.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1533.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1533.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1535.description": "final 한정자 없는 중요 public 메소드 체커는 지정한 메소드가 public 이지만 final 이 아니면 검출합니다.\n중요한 정보를 처리하는 메소드일 경우 악의적인 메소드 오버라이딩을 막기 위해 private이나 final 로 선언해야 합니다.\n중요한 정보를 처리하는 메소드는 private이나 final 로 선언해야 합니다.",
  "rule.sast.sw.java.1535.example.0.dangerous": "라인 2: 중요한 작업을 하는 메소드 이름을 readSensitiveFile 이라고 가정할 때 해당 메소드는 final 로 선언해야 합니다.",
  "rule.sast.sw.java.1535.example.0.safe": "라인 2: 중요 메소드는 final 로 선언 하여 override 가 되지 않도록 막습니다.",
  "rule.sast.sw.java.1535.name": "final 한정자 없는 중요 public 메소드",
  "rule.sast.sw.java.1535.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1535.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1535.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1535.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1535.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1535.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1535.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1535.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1535.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1535.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1535.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1535.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1535.option.type_names.description": "분석 포함 변수의 타입 이름을 작성합니다.",
  "rule.sast.sw.java.1535.option.type_names.name": "분석 포함 변수의 타입 이름",
  "rule.sast.sw.java.1536.description": "메소드 접근성 증가 체커는 메소드가 protected 한정자를 갖지만 하위 클래스에서 public으로 오버라이딩하면 검출합니다.\n오버라이딩한 메소드의 접근성을 확장할 경우 악의적인 하위 클래스가 해당 메소드에 접근할 가능성이 있습니다.\n오버라이드가 되지 않도록 final로 선언합니다.",
  "rule.sast.sw.java.1536.example.0.dangerous": "라인 2: doLogic() 메소드는 Sub 클래스에서 public 으로 오버라이드 되었습니다.",
  "rule.sast.sw.java.1536.example.0.safe": "라인 2: 오버라이드가 되지 않도록 final 로 선언합니다.",
  "rule.sast.sw.java.1536.name": "메소드 접근성 증가",
  "rule.sast.sw.java.1536.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1536.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1536.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1536.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1536.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1536.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1536.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1536.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1536.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1536.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1536.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1536.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1537.description": "clone 메소드 내 오버라이딩 가능한 메소드 호출 체커는 clone() 메소드에서 오버라이딩이 가능한 메소드가 호출되면 검출합니다.\n오버라이딩이 가능한 메소드는 공격자가 상속관계를 통해 공격을 할 수 있습니다. 또한 오버라이딩이 가능한 메소드는 외부의 영향을 많이 받습니다. 따라서 clone() 메소드에 대한 기능이 오버라이딩이능한 메소드에 의해 변경될 수 있습니다.\nclone() 메소드에서 오버라이딩이 가능한 메소드가 호출되지 않도록 합니다.",
  "rule.sast.sw.java.1537.example.0.dangerous": "라인 17: Sub 클래스에서 clone() 메소드 내에 오버라이드가 가능한 메소드인 doSomething() 메소드가 호출되었습니다.",
  "rule.sast.sw.java.1537.example.0.safe": "라인 24: 오버라이드가 되지 않도록 final 로 선언 하도록 수정했습니다.",
  "rule.sast.sw.java.1537.name": "clone 메소드 내 오버라이딩 가능한 메소드 호출",
  "rule.sast.sw.java.1537.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1537.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1537.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1537.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1537.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1537.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1537.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1537.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1538.description": "public 정적 메소드 오버라이딩 체커는 상속하는 클래스에 오버라이딩 메소드가 public 정적이면 검출 합니다.\n오버라이딩 하는 메소드가 public 정적일 경우에 다른 인스턴스를 생성하여 메소드를 호출할지라도 같은 결과값을 얻게 됩니다. 따라서 상속하는 클래스에 오버라이딩 메소드가 public static 인 경우를 검출합니다. 단, 클래스가 직접 메소드를 호출할 경우는 예외가 됩니다. (public static 가능)\n상속하는 클래스에 오버라이딩 메소드가 public static 이면 안됩니다.",
  "rule.sast.sw.java.1538.example.0.dangerous": "라인 2: 오버라이드 메소드가 public static 으로 선언 되었습니다.\n라인 8: 위와 같습니다.",
  "rule.sast.sw.java.1538.example.0.safe": "라인 2: 오버라이드 하는 메소드에 static 을 삭제했습니다.\n라인 8: 오버라이드 하는 메소드에 static 을 삭제했습니다.",
  "rule.sast.sw.java.1538.name": "public 정적 메소드 오버라이딩",
  "rule.sast.sw.java.1538.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1538.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1538.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1538.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1538.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1538.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1538.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1538.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1538.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1538.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1538.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1538.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1540.description": "finally 블록 내에서 처리되지 않은 예외 체커는 메소드에서 생성한 예외 들에 대한 예외처리를 하지 않으면 검출합니다.\nFinally 블록에서도 예외가 발생할 수 있습니다. 예외가 발생하면, 이후 코드가 실행되지 않습니다.\nFinally 블록에서 호출한 메소드가 예외를 생성할 경우 반드시 예외처리를 해주어야 합니다.",
  "rule.sast.sw.java.1540.example.0.dangerous": "라인 10: BufferedReader 의 close() 메소드는 IOException 을 throws 하기 때문에 예외 처리를 해주어야 합니다.",
  "rule.sast.sw.java.1540.example.0.safe": "라인 11: 해당 메소드의 예외 처리를 합니다.",
  "rule.sast.sw.java.1540.name": "finally 블록 내에서 처리되지 않은 예외",
  "rule.sast.sw.java.1540.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1540.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1540.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1540.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1540.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1540.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1540.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1540.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1540.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1540.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1540.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1540.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1541.description": "비 volatile 스레드 간 공유 필드 체커는 run() 메소드에 있는 필드의 타입이 primitive 이며 volatile 이 아니면 검출합니다.\n스레드 간 공유하는 필드 변수가 volatile 로 선언되지 않았을 경우 스레드 간 정보 공유가 되지 않을 수 있습니다.\nrun() 메소드에 있는 필드의 타입이 primitive 이며 volatile 이여야 합니다.",
  "rule.sast.sw.java.1541.example.0.dangerous": "라인 2: Thread 들 끼리 공유 될 수 있는 변수가 volatile 없이 사용되었습니다.\n라인 3: 위와 같습니다.",
  "rule.sast.sw.java.1541.example.0.safe": "라인 2: 해당 변수들을 선언할 때 volatile 을 사용합니다.\n라인 3: 위와 같습니다.",
  "rule.sast.sw.java.1541.name": "비 volatile 스레드 간 공유 필드",
  "rule.sast.sw.java.1541.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1541.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1541.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1541.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1541.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1541.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1541.option.implement_list.description": "Runnable 인터페이스 명을 입력합니다.",
  "rule.sast.sw.java.1541.option.implement_list.name": "Runnable 인터페이스",
  "rule.sast.sw.java.1541.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1541.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1541.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1541.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1541.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1541.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1541.option.thread_list.description": "Thread 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1541.option.thread_list.name": "Thread 클래스",
  "rule.sast.sw.java.1541.option.type_name.description": "공유가 될 수 있는 변수 타입 이름을 입력합니다.",
  "rule.sast.sw.java.1541.option.type_name.name": "공유 변수 타입",
  "rule.sast.sw.java.1544.description": "스레드 안전하지 않은 메소드 체인 체커는 스레드 안전하지 않은 메소드 체이닝 패턴을 검출합니다.\n메소드 체인 패턴을 사용할 때 , 메소드 체인은 원자적 특성을 갖고 있지 않습니다 . 따라서 , 메소드 체인과 관련된 메소드 호출자는 체인이 원자 단위가 될 수 있도록 보장해야 합니다.\n메소드 체이닝 패턴은 중첩된 정적 클래스에서 사용되어야 스레드 안전합니다.",
  "rule.sast.sw.java.1544.example.0.dangerous": "라인 1: Thread-safe 하지 않은 method chaining 패턴을 사용했습니다.",
  "rule.sast.sw.java.1544.example.0.safe": "라인 1: Static builder 를 사용하여 Thread-safe 하도록 수정 합니다.",
  "rule.sast.sw.java.1544.name": "스레드 안전하지 않은 메소드 체인",
  "rule.sast.sw.java.1544.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1544.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1544.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1544.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1544.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1544.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1544.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1544.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1544.option.include_method.description": "분석 대상 호출되는 메소드 이름을 작성해 주세요.",
  "rule.sast.sw.java.1544.option.include_method.name": "분석 대상 호출되는 메소드 이름",
  "rule.sast.sw.java.1544.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1544.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1544.option.method_name.description": "검출 대상 메소드 이름을 작성해주세요.",
  "rule.sast.sw.java.1544.option.method_name.name": "검출 대상 메소드",
  "rule.sast.sw.java.1545.description": "비 원자적 데이터 타입 사용 체커는 멀티 스레드 환경에서 공유 변수에 대한 복합 연산을 수행할 때, 해당 공유 변수에 대해서 원자성(Atomic)이 보장되지 않는 코드를 검출합니다.\n멀티 스레드 환경에서는 공유 변수에 대한 원자성이 보장되어야 합니다. 공유 변수에 대해 원자성이 보장되지 않는 경우, 각 스레드에 예기치 않는 결과가 반환될 수 있습니다. 원자성이 보장되지 않을 수 있는 경우 중 하나는, 공유 변수에 대해 복합 연산(*=, /=, %=, +=, -=, <<=, >>=, >>>=, ^=, |=)을 수행하고 해당 변수를 반환하는 경우입니다.\nprivate 멤버 변수를 복합 연산자의 피연산자로 사용하고 동일한 변수를 외부로 반환하는 경우 관련된 메서드를 모두 synchronized로 명시해야 합니다.",
  "rule.sast.sw.java.1545.example.0.dangerous": "라인 5: 일반 메서드에서 private 멤버 변수를 복합 연산자의 피연산자로 사용했습니다.\n라인 9: 일반 메서드에서 private 멤버 변수를 반환했습니다.",
  "rule.sast.sw.java.1545.example.0.safe": "라인 5: synchronized 메서드에서 private 멤버 변수를 복합 연산자의 피연산자로 사용합니다.\n라인 9: synchronized 메서드에서 private 멤버 변수를 반환합니다.",
  "rule.sast.sw.java.1545.name": "비 원자적 데이터 타입 사용",
  "rule.sast.sw.java.1545.option.excluded_class.description": "이슈 검출 없이 검사에서 제외할 클래스 이름을 입력합니다<br />예시) .*Dto",
  "rule.sast.sw.java.1545.option.excluded_class.name": "제외 클래스",
  "rule.sast.sw.java.1545.option.excluded_method.description": "이슈 검출 없이 검사에서 제외할 메소드 이름을 입력합니다.<br />예시) .*Dto",
  "rule.sast.sw.java.1545.option.excluded_method.name": "제외 메소드",
  "rule.sast.sw.java.1545.option.excluded_package.description": "이슈 검출 없이 검사에서 제외할 패키지 이름을 입력합니다.<br />예시) .*dto",
  "rule.sast.sw.java.1545.option.excluded_package.name": "제외 패키지",
  "rule.sast.sw.java.1547.description": "잠금 인스턴스로 재사용 가능한 객체 사용 체커는 재사용 가능한 객체를 synchronized의 잠금 객체로 사용하면 검출합니다\n재사용이 가능한 객체를 잠금 객체로 사용할 경우 내부 혹은 외부 악의적인 코드에서 잘 못 값이 변한다면 무한 대기 상태 공격의 위험이 있습니다.\n재사용 가능한 객체를 synchronized의 잠금 객체로 사용하지 않습니다.",
  "rule.sast.sw.java.1547.example.0.dangerous": "라인 7: 재사용 가능한 타입을 lock 으로 사용했습니다.",
  "rule.sast.sw.java.1547.example.0.safe": "라인 7: 재사용이 불가능 타입을 lock 으로 사용합니다.",
  "rule.sast.sw.java.1547.name": "잠금 인스턴스로 재사용 가능한 객체 사용",
  "rule.sast.sw.java.1547.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1547.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1547.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1547.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1547.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1547.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1547.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1547.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1547.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1547.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1547.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1547.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1547.option.type_name.description": "재사용 가능한 타입을 입력합니다.",
  "rule.sast.sw.java.1547.option.type_name.name": "재사용 가능한 타입",
  "rule.sast.sw.java.1548.description": "동기화 시 클래스 객체 사용 체커는 Synchronize 블락에서 getClass() 메소드를 잠금 객체로 사용하면 검출합니다.\ngetClass() 메소드는 해당 클래스 객체를 가져옵니다. 프로그래머는 getClass() 메소드가 하위 클래스에서 상위 클래스를 가져와서 상위 클래스가 동기화될 것이라고 생각하는 경우가 있습니다. 해당 경우는 하위 클래스가 동기화에 사용되기 때문에 프로그래머의 의도와 다르게 사용될 수 있습니다.\nSynchronize 블락에서 getClass() 메소드를 잠금 객체로 사용하면 안 됩니다.",
  "rule.sast.sw.java.1548.example.0.dangerous": "라인 6: getClass() 메소드를 lock 객체로 사용했습니다.",
  "rule.sast.sw.java.1548.example.0.safe": "라인 5: .class 로 클래스 자체를 lock 으로 사용하도록 합니다.\n라인 12: 위와 같습니다.",
  "rule.sast.sw.java.1548.name": "동기화 시 클래스 객체 사용",
  "rule.sast.sw.java.1548.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1548.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1548.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1548.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1548.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1548.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1548.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1548.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1548.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1548.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1548.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1548.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1548.option.method_name.description": "getClass() 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1548.option.method_name.name": "getClass() 메소드",
  "rule.sast.sw.java.1549.description": "잠금 인스턴스로 상위 수준 동시성 객체 사용 체커는 Lock 혹은 Condition 인터페이스를 구현한 객체를 이용해 내재된 잠금 방식으로 동기화 처리를 하면 검출합니다.\n해당 클래스의 객체를 상위 수준 동시성 객체라고 하며 클래스 고유 잠금을 사용하여 동기화할 경우 일관성 없는 잠금 정책 때문에 프로그래머가 의도치 않은 행동을 할 수 있습니다.\n인터페이스가 제공하는 높은 수준의 잠금장치 (high level locking facilities) 방식을 사용해야 한다",
  "rule.sast.sw.java.1549.example.0.dangerous": "라인 5: Lock 인터페이스를 구현한 ReentrantLock 의 인스턴스를 synchronized 블록의 lock 으로 사용했습니다.",
  "rule.sast.sw.java.1549.example.0.safe": "라인 5: synchronized 블록이 아닌 lock 과 unlock 을 사용합니다.",
  "rule.sast.sw.java.1549.name": "잠금 인스턴스로 상위 수준 동시성 객체 사용",
  "rule.sast.sw.java.1549.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1549.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1549.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1549.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1549.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1549.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1549.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1549.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1549.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1549.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1549.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1549.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1549.option.type_name.description": "Lock 또는 Condition을 구현한 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1549.option.type_name.name": "Lock 또는 Condition 구현 클래스",
  "rule.sast.sw.java.1550.description": "다른 컬렉션으로부터 초기화 체커는 다른 컬렉션에서 가져온 값으로 초기화되면 검출합니다.\nSet 으로 선언한 변수를 synchronized 블락에서 잠금 객체로 사용 할 때 다른 컬렉션에서 가져온 값으로 초기화 될 경우를 검출 합니다. 보통 컬렉션을 상속하는 Map 과 같은 자료 구조 클래스에서 backing 컬렉션을 사용할 때 잠금 정책을 접근 가능한 컬렉션에 대해서 정해야 합니다. 예를 들어 Map 에서 keySet 을 뽑아 반복문 등에서 사용할 때 해당 Map 에 접근 가능 하도록 할 경우 동기화 정책이 깨지게 됩니다.\n멀티 스레드 환경에서 backing 컬렉션을 사용할 경우 접근하는 컬렉션이 어떤 것인지 확인 후 동기화 해당 컬렉션에 대해 잠금을 사용해야 합니다.",
  "rule.sast.sw.java.1550.example.0.dangerous": "라인 15: mapView 의 key set 인 setView 가 synchronized 블록의 lock 으로 사용되었습니다.",
  "rule.sast.sw.java.1550.example.0.safe": "라인 15: 원래의 collection 인 mapView 를 synchronized 블록의 lock 으로 사용합니다.",
  "rule.sast.sw.java.1550.name": "다른 컬렉션으로부터 초기화",
  "rule.sast.sw.java.1550.option.method_name.description": "keySet() 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1550.option.method_name.name": "keySet() 메소드",
  "rule.sast.sw.java.1550.option.type_name.description": "검출할 컬렉션 이름",
  "rule.sast.sw.java.1550.option.type_name.name": "컬렉션 이름",
  "rule.sast.sw.java.1551.description": "비 동기화 정적 필드 체커는 정적 필드가 synchronized 블록 안에 정의되지 않으면 검출합니다.\n외부 코드가 접근할 수 있는 public 메소드에서 수정 가능한 정적 필드는 스레드 안전하지 않기 때문에 동기화를 해주어야 합니다.\n정적 필드가 synchronized 블록 안에 정의되도록 합니다.",
  "rule.sast.sw.java.1551.example.0.dangerous": "라인 4: public 메소드 내에 필드 값이 사용되었습니다.",
  "rule.sast.sw.java.1551.example.0.safe": "라인 7: synchronized 블록 내에 필드 값을 사용하도록 합니다.",
  "rule.sast.sw.java.1551.name": "비 동기화 정적 필드",
  "rule.sast.sw.java.1551.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1551.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1551.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1551.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1551.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1551.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1551.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1551.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1551.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1551.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1551.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1551.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1553.description": "교착 상태 체커는 synchronized 블록 내에 동일한 클래스로 또 한번 잠금을 사용하면 검출합니다.\n설정하고 해제하는 잠금이 같은 순서로 진행되면 deadlock이 발생할 수 있습니다.\nsynchronized 블록 내에 동일한 클래스로 두 번 이상 잠금 하지 않습니다.",
  "rule.sast.sw.java.1553.example.0.dangerous": "라인 11: 두 개의 synchronized 블록에서 this 와 ba 가 같을 경우 deadlock 이 발생합니다.",
  "rule.sast.sw.java.1553.example.0.safe": "라인 17: lock 이 같은 인스턴스인지 확인 후 synchronized 블록의 lock으로 사용합니다.",
  "rule.sast.sw.java.1553.name": "교착 상태",
  "rule.sast.sw.java.1555.description": "잠금 중 대기 체커는 Synchronized 선언한 메소드 내부에 스레드를 멈추게 하는 메소드가 호출되면 검출합니다.\nSynchronized 선언한 메소드에서 스레드를 멈추게 하는 Thread.sleep() 메소드를 호출 할 경우 다른 스레드에서 해당 메소드를 사용할 수 없으므로 성능에 심각한 영향을 줍니다.\nsynchronized 메소드 내에서 Thread 를 멈추게 하는 메소드가 호출되면 안됩니다.",
  "rule.sast.sw.java.1555.example.0.dangerous": "라인 5: synchronized 메소드 내에 Thread 를 멈추게 하는 메소드가 호출되었습니다.",
  "rule.sast.sw.java.1555.example.0.safe": "라인 5: 조건문 내에 Thread 를 대기하는 메소드를 호출하도록 수정합니다.",
  "rule.sast.sw.java.1555.name": "잠금 중 대기",
  "rule.sast.sw.java.1555.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1555.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1555.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1555.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1555.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1555.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1555.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1555.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1555.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1555.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1555.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1555.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1555.option.method_name.description": "Thread 대기 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1555.option.method_name.name": "Thread 대기 메소드",
  "rule.sast.sw.java.1555.option.type_name.description": "Thread 대기 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1555.option.type_name.name": "Thread 대기 클래스",
  "rule.sast.sw.java.1559.description": "무한 대기 스레드 체커는 Volatile flag 또는 Thread.interrupted 메소드와 함께 파일 I/O 메소드를 While 문 표현식에 사용하면 이슈를 검출합니다.\nVolatile flag 또는 Thread.interrupted 메소드와 함께 파일 I/O 메소드를 While 문 표현식에 사용하였을 경우 검출합니다. 해당 flag 또는 Thread.interrupted 에 의해 네트워크 입출력이 종료되지 않기 때문에 스레드가 영구적으로 지연될 수 있습니다.\nVolatile flag 또는 Thread.interrupted 메소드와 함께 파일 I/O 메소드를 While 문 표현식에 사용하지 않도록 합니다.",
  "rule.sast.sw.java.1559.example.0.dangerous": "라인 14: Thread.interrupted() 메소드와 readLine() 메소드가 While 문 표현식에 사용되었습니다.",
  "rule.sast.sw.java.1559.example.0.safe": "라인 15: Thread 를 interrupt 하는 것이 아닌 socket 을 종료하는 것으로 수정합니다.",
  "rule.sast.sw.java.1559.name": "무한 대기 스레드",
  "rule.sast.sw.java.1559.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1559.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1559.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1559.option.file_io_list.description": "File I/O 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.file_io_list.name": "File I/O 메소드 이름",
  "rule.sast.sw.java.1559.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1559.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1559.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1559.option.method_name.description": "Interrupted 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.method_name.name": "Interrupted 메소드",
  "rule.sast.sw.java.1559.option.type_name.description": "Thread 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1559.option.type_name.name": "Thread 클래스",
  "rule.sast.sw.java.1560.description": "갑작스러운 스레드 종료 체커는 Thread.stop() 메소드를 호출하면 검출합니다.\n스레드를 멈추기 위해 Thread.stop() 을 사용하곤 합니다. 하지만 내부 결함에 의해 폐지하려는 메소드 중 하나이기 때문에 사용을 금지합니다.\n스레드를 멈추기 위해 Thread.stop() 메소드를 사용하는 대신 Thread.interrupt() 메소드를 사용해야 합니다.",
  "rule.sast.sw.java.1560.example.0.dangerous": "라인 7: Thread.stop() 을 호출했습니다.",
  "rule.sast.sw.java.1560.example.0.safe": "라인 7: Thread.stop() 대신에 thread.interrupt() 를 사용합니다.",
  "rule.sast.sw.java.1560.name": "갑작스러운 스레드 종료",
  "rule.sast.sw.java.1560.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1560.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1560.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1560.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1560.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1560.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1560.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1560.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1560.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1560.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1560.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1560.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1560.option.method_name.description": "Thread 클래스를 포함한 정지 메소드 이름을 입력합니다. <br> 예시) java.lang.Thread.stop",
  "rule.sast.sw.java.1560.option.method_name.name": "Thread 정지 메소드",
  "rule.sast.sw.java.1561.description": "스레드 풀의 미사용 체커는 메시지 별 스레드 패턴에서 스레드 풀을 사용하지 않으면 검출 합니다.\n요청에 의한 메시지를 전달 할 때 스레드를 생성 하는 패턴이 메시지 별 스레드 패턴입니다. 스레드 풀을 사용하지 않고 해당 패턴을 사용하게 된다면 스레드가 자원을 할당 받지 못하는 경우가 발생합니다.\n메시지 별 스레드 패턴을 사용할 때는 스레드 풀을 사용해야 합니다.",
  "rule.sast.sw.java.1561.example.0.dangerous": "라인 5: Thread per message 패턴에서 thread pool 의 크기를 정하지 않고 thread 를 수행하도록 구현되었습니다.",
  "rule.sast.sw.java.1561.example.0.safe": "라인 8: Thread pool 의 크기를 설정 후 해당 pool 의 크기 만큼 thread 가 실행 되도록 수정합니다.",
  "rule.sast.sw.java.1561.name": "스레드 풀의 미사용",
  "rule.sast.sw.java.1561.option.executor_method_name.description": "Thread 실행 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1561.option.executor_method_name.name": "Thread 실행 메소드",
  "rule.sast.sw.java.1561.option.executor_type_name.description": "Thread 실행 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1561.option.executor_type_name.name": "Thread 실행 클래스",
  "rule.sast.sw.java.1561.option.socket_type_name.description": "Socket 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1561.option.socket_type_name.name": "Socket 클래스",
  "rule.sast.sw.java.1561.option.thread_pool_method_name.description": "Thread pool 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1561.option.thread_pool_method_name.name": "Thread pool 메소드",
  "rule.sast.sw.java.1562.description": "동기화 블록 내 중단할 수 없는 스레드 체커는 스레드를 상속하거나 Runnable 을 구현하는 클래스 에서 synchronized 블록을 사용할 때 Thread.interrupted() 메소드를 호출 하지 않으면 검출합니다.\n스레드를 중지 시키기 위해서는 Thread.interrupted() 메소드를 사용해야 한다. 특히 synchronized 블록에서 작업을 수행 할 때 해당 작업이 오래 걸릴 경우 스레드를 종료해야하는 상황이 발생합니다. 스레드가 Thread.interrupted() 메소드에 의해 종료되지 않을 경우 스레드 풀이 종료되지 않아 서비스 거부가 발생합니다.\n스레드를 상속하거나 Runnable 을 구현하는 클래스에서 synchronized 블록을 사용할 때 Thread.interrupted() 메소드를 호출해야 합니다.",
  "rule.sast.sw.java.1562.example.0.dangerous": "라인 16: run() 메소드 내에 synchronized 블록 내에 Thread.interrupted() 메소드 호출이 없습니다.",
  "rule.sast.sw.java.1562.example.0.safe": "라인 13: Thread.interrupted() 메소드 호출을 통해 Thread 가 interrupt 상태 인지 확인합니다.",
  "rule.sast.sw.java.1562.name": "동기화 블록 내 중단할 수 없는 스레드",
  "rule.sast.sw.java.1562.option.class_type_name.description": "Thread 클래스 또는 인터페이스 명을 입력합니다.",
  "rule.sast.sw.java.1562.option.class_type_name.name": "Thread 클래스 또는 인터페이스",
  "rule.sast.sw.java.1562.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1562.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1562.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1562.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1562.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1562.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1562.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1562.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1562.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1562.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1562.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1562.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1562.option.method_name.description": "Interrupt 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1562.option.method_name.name": "Interrupt 메소드",
  "rule.sast.sw.java.1562.option.type_name.description": "Thread 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1562.option.type_name.name": "Thread 클래스",
  "rule.sast.sw.java.1563.description": "부적절한 스레드 풀 생성 체커는 스레드 풀 객체 생성으로 Executors.newFixedThreadPool() 메소드를 사용하면 검출 합니다.\n예외 처리를 할 수 없는 스레드 풀 객체에서 스레드를 생성하여 실행시킬 경우 예외가 발생하게 되면 예외가 발생한 여부를 확인할 수 없어 예외 처리가 힘들게 됩니다. 따라서 예외를 처리할 수 있는 스레드 풀 객체를 생성해야 합니다. 스레드 풀 인스턴스를 생성할 때 생성자의 인자로 예외를 따로 관리할 수 있는 ThreadFactory 타입의 인자를 넣었을 경우는 예외입니다.\n스레드 풀 객체 생성으로 Executors.newFixedThreadPool() 메소드를 사용하지 않거나, ThreadFactory 인자를 넣어서 사용해야 합니다.",
  "rule.sast.sw.java.1563.example.0.dangerous": "라인 4: ThreadFactory 타입의 인자 없이 스레드 풀이 사용되었습니다. 해당 스레드에서는 예외가 throw 하기 때문에 ThreadFactory 타입의 인자를 넣어줘야합니다.",
  "rule.sast.sw.java.1563.example.0.safe": "라인 4: 스레드에서 발생한 예외를 처리할 수 있는 ThreadFactory 타입의 인자를 스레드 풀에 넣어 줍니다.",
  "rule.sast.sw.java.1563.name": "부적절한 스레드 풀 생성",
  "rule.sast.sw.java.1563.option.call_base_type.description": "실행 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.call_base_type.name": "실행 클래스",
  "rule.sast.sw.java.1563.option.call_method_name.description": "스레드 풀 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.call_method_name.name": "스레드 풀 메소드",
  "rule.sast.sw.java.1563.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1563.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1563.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1563.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1563.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1563.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1563.option.target_method.description": "실행 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1563.option.target_method.name": "실행 메소드",
  "rule.sast.sw.java.1564.description": "생성자 내에서의 스레드 실행 체커는 생성자 내에서 스레드 실행 메소드가 호출되면 검출합니다.\nthis 참조자가 생성자 호출이 끝나지 않은 상태에서 탈출한 경우 다른 스레드들은 초기화되지 않았거나 (uninitialized) 혹은 부분적으로 초기화된 상태 (partially initialized의 this 참조자를 참조하게 됩니다. 따라서, 프로그램은 this 참조자가 객체 생성자 내에서 탈출하도록 하면 안 됩니다.\nthis 참조자가 객체 생성자 내에서 탈출하지 않도록 합니다.",
  "rule.sast.sw.java.1564.example.0.dangerous": "라인 2: 생성자 내에서 스레드 실행 메소드가 호출되었습니다.",
  "rule.sast.sw.java.1564.example.0.safe": "라인 2: 생성자가 아닌 메소드에서 실행 메소드가 호출하도록 수정했습니다.",
  "rule.sast.sw.java.1564.name": "생성자 내에서의 스레드 실행",
  "rule.sast.sw.java.1564.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1564.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1564.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1564.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1564.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1564.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1564.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1564.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1564.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1564.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1564.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1564.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1564.option.method_name.description": "Thread가 실행될 때 수행하는 메소드 이름을 입력합니다. <br> 예시) run",
  "rule.sast.sw.java.1564.option.method_name.name": "Thread 실행 메소드",
  "rule.sast.sw.java.1564.option.type_name.description": "Thread 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1564.option.type_name.name": "Thread 클래스",
  "rule.sast.sw.java.1565.description": "초기화 전 게시 체커는 특정 클래스에서 초기화 전에 인스턴스에 publish 하면 검출합니다.\n객체가 생성될 때 this 참조를 다른 필드 변수가 초기화 되기 전에 할 경우 다른 스레드에서 부분 초기화된 객체를 참조할 수 있습니다. 안전하게 초기화를 마친 후에 객체의 참조를 열람할 수 있도록 해야 합니다. 해당 규칙은 특정 클래스에서 초기화 전에 인스턴스에 publish 할 경우를 검출합니다. 또한 초기화 후에 객체를 publish 할 경우에 인스턴스가 static volatile 이 아닐 경우를 검출합니다.\n특정 클래스에서 초기화 전에 인스턴스에 publish 하면 안 됩니다. 그리고 초기화 후에 객체를 publish 할 경우에 인스턴스가 static volatile 이어야 합니다.",
  "rule.sast.sw.java.1565.example.0.dangerous": "라인 9: volatile 이 아닌 클래스가 초기화되기 전에 다른 필드가 초기화 되었습니다.",
  "rule.sast.sw.java.1565.example.0.safe": "라인 9: 외부에서 변수에 접근 할 수 없도록 public 이 아니면서 volatile 한정자를 사용합니다.",
  "rule.sast.sw.java.1565.name": "초기화 전 게시",
  "rule.sast.sw.java.1565.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1565.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1565.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1565.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1565.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1565.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1565.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1565.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1565.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1565.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1565.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1565.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1566.description": "정적 초기화 블록 내에서 스레드 생성 체커는 클래스가 초기화 되기 전에 스레드가 사용되면 검출합니다.\n클래스 초기화 중에 백그라운드 스레드가 돌아가면 클래스 초기화에서 순환과 교착 상태가 발생할 수 있습니다. 따라서 프로그램은 모든 스레드를 시작하기 전에 클래스 초기화가 완료되었는지 확인해야 합니다.\n클래스의 초기화를 확인하고 스레드가 시작되어야 합니다.",
  "rule.sast.sw.java.1566.example.0.dangerous": "라인 6: static 초기화 블록에서 thread 를 생성하고 실행하고 있습니다.",
  "rule.sast.sw.java.1566.example.0.safe": "라인 3: ThreadLocal 을 사용하여 각각의 thread 마다 유일한 connection 인스턴스를 갖을 수 있게 합니다.",
  "rule.sast.sw.java.1566.name": "정적 초기화 블록 내에서 스레드 생성",
  "rule.sast.sw.java.1566.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1566.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1566.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1566.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1566.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1566.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1566.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1566.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1566.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1566.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1566.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1566.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1566.option.type_name.description": "Thread 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1566.option.type_name.name": "Thread 클래스",
  "rule.sast.sw.java.1567.description": "File 인스턴스에 대한 delete의 잘못된 사용 체커는 파일 객체의 인스턴스에서 delete() 메소드를 단독으로 호출하면 검출합니다.\n파일 연산 메소드 중 delete() 메소드는 실패할 시 예외를 발생시키지 않습니다. 예외가 발생하지 않을 경우 오류의 원인을 파악하기 어렵게 됩니다. 따라서 delete() 메소드의 반환 값을 검사하여 성공 / 실패의 경우에 대해 적절한 처리를 해야 합니다.\n파일 객체의 인스턴스에서 delete() 메소드를 단독으로 호출하지 않도록 합니다.",
  "rule.sast.sw.java.1567.example.0.dangerous": "라인 2: file.delete() 의 반환 값을 확인 하지 않습니다.",
  "rule.sast.sw.java.1567.example.0.safe": "라인 2: 파일의 삭제 유무를 확인합니다.",
  "rule.sast.sw.java.1567.name": "File 인스턴스에 대한 delete의 잘못된 사용",
  "rule.sast.sw.java.1567.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1567.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1567.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1567.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1567.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1567.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1567.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1567.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1567.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1567.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1567.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1567.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1567.option.method_name.description": "Delete 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1567.option.method_name.name": "Delete 메소드",
  "rule.sast.sw.java.1567.option.type_name.description": "File 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1567.option.type_name.name": "File 클래스",
  "rule.sast.sw.java.1568.description": "deleteOnExit의 잘못된 사용 체커는 createTempFile() 메소드를 호출한 후에 deleteOnExit() 메소드를 호출하는 경우 이슈를 검출합니다.\n프로세스 간 데이터 공유 및 프로그램에서 사용할 데이터를 임시적으로 저장하기 위해 임시 파일을 사용합니다. 임시 파일이 삭제되지 않고 저장될 경우 공격자가 접근하여 변경 또는 교체하여 공격자가 원하는 파일을 프로그램을 통해 실행할 수 있게 됩니다. 따라서 임시 파일을 만든 후 반드시 작업 종료하기 전에 임시 파일을 삭제해야 합니다.\ncreateTempFile() 메소드를 호출한 후에 deleteOnExit() 메소드를 호출하지 않도록 합니다.",
  "rule.sast.sw.java.1568.example.0.dangerous": "라인 13: deleteOnExit() 메소드는 정상적으로 JVM(Java Virtual Machine) 이 종료 되었을 경우에만 해당 파일을 삭제합니다.",
  "rule.sast.sw.java.1568.example.0.safe": "라인 6-8: Java 7 에서 try-with-resources 생성자로 파일을 열 경우 예외가 발생하면 파일을 자동으로 닫습니다. 그리고 DELETE_ON_CLOSE 옵션을 사용하면 close 동시에 파일을 삭제하기 때문에 임시 파일을 삭제할 수 있습니다.",
  "rule.sast.sw.java.1568.name": "deleteOnExit의 잘못된 사용",
  "rule.sast.sw.java.1568.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1568.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1568.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1568.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1568.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1568.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1568.option.source_method_name.description": "임시 파일 생성 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.source_method_name.name": "임시 파일 생성 메소드",
  "rule.sast.sw.java.1568.option.target_method_name.description": "임시 파일 삭제 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.target_method_name.name": "임시 파일 삭제 메소드",
  "rule.sast.sw.java.1568.option.type_name.description": "File 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1568.option.type_name.name": "File 클래스",
  "rule.sast.sw.java.1569.description": "버퍼 노출 체커는 duplicate() 메소드를 통해 CharBuffer 형의 값을 복사하면 이슈를 검출합니다.\nBuffer 클래스에서는 wrap() 메소드를 통해 기본 데이터 타입의 데이터를 Buffer 객체로 변환해줍니다. 또한 duplicate() 메소드를 통해 Buffer 객체를 복사하기 때문에 해당 객체의 데이터 값을 변경할 가능성이 있습니다. 따라서 해당 객체의 wrap() 또는 duplicate() 메소드를 사용할 때 asReadOnlyBuffer() 메소드를 같이 호출하여 데이터 값이 변경되지 않도록 합니다.\nduplicate() 메소드를 통해 CharBuffer 형의 값을 복사하지 않도록 합니다.",
  "rule.sast.sw.java.1569.example.0.dangerous": "라인 10: duplicate() 메소드는 CharBuffer 를 복사합니다. 하지만 getBufferCopy() 메소드의 반환 값으로 반환이 될 경우 반환 값을 수정할 수 있습니다.",
  "rule.sast.sw.java.1569.example.0.safe": "라인 10: CharBuffer 읽기 전용 버퍼를 반환합니다.",
  "rule.sast.sw.java.1569.name": "버퍼 노출",
  "rule.sast.sw.java.1569.option.method_name.description": "검출 대상 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1569.option.method_name.name": "검출 대상 메소드",
  "rule.sast.sw.java.1569.option.type_name.description": "검출 대상 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1569.option.type_name.name": "검출 대상 클래스",
  "rule.sast.sw.java.1570.description": "누락된 읽기 길이 인자 체커는 read() 메소드의 인자가 byte[] 일 때 길이 관련 인자가 없으면 검출합니다.\nread() 메소드에 byte[] 인자만 존재할 경우 배열에 데이터를 충분히 채우기 전에 읽기를 그만 둘 수 있습니다. 따라서 read() 메소드의 반환 값을 검사하여 배열 전체를 채우지 않은 경우를 처리해야 합니다.\nread() 메소드에서 byte[] 로 값을 저장할 때 offset 위치를 지정하여 값을 저장해야 합니다.",
  "rule.sast.sw.java.1570.example.0.dangerous": "라인 5: read() 메소드에서 byte[] 로 값을 저장할 때 정확한 크기를 지정하지 않습니다.",
  "rule.sast.sw.java.1570.example.0.safe": "라인 7: read() 메소드에서 byte[] 로 값을 저장할 때 offset 위치를 지정하여 값을 저장합니다.",
  "rule.sast.sw.java.1570.name": "누락된 읽기 길이 인자",
  "rule.sast.sw.java.1570.option.data_type.description": "read() 메소드 반환 값 타입을 입력합니다.",
  "rule.sast.sw.java.1570.option.data_type.name": "read() 메소드 반환 값 타입",
  "rule.sast.sw.java.1570.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1570.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1570.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1570.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1570.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1570.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1570.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1570.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1570.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1570.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1570.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1570.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1570.option.method_name.description": "검출 대상 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1570.option.method_name.name": "검출 대상 메소드",
  "rule.sast.sw.java.1570.option.type_name.description": "검출 대상 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1570.option.type_name.name": "검출 대상 클래스",
  "rule.sast.sw.java.1573.description": "빅 엔디안 전용 메소드 사용 체커는 Big endian으로만 읽기/쓰기 가능한 메소드들을 호출하면 이슈를 검출합니다.\n서로 다른 플랫폼에서 데이터를 주고 받을 때 endian 이 다를 경우가 발생 합니다. 호환성 있는 데이터 사용을 위해서 endian 를 맞춰야 합니다. Big endian 으로만 읽기/쓰기 가능한 메소드들을 호출하면 문제가 발생할 수 있습니다.\nBig endian 으로만 읽기/쓰기 가능한 메소드들을 호출하지 않도록 합니다.",
  "rule.sast.sw.java.1573.example.0.dangerous": "라인 8: Big endian 만 읽을 수 있는 readInt() 메소드를 호출했습니다. Little-endian 데이터가 big-endian 으로 읽힐 수 있습니다.",
  "rule.sast.sw.java.1573.example.0.safe": "라인 8: DataInputStream 으로 정보를 가져올 때 바이트 순서를 맞춥니다.",
  "rule.sast.sw.java.1573.name": "빅 엔디안 전용 메소드 사용",
  "rule.sast.sw.java.1573.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1573.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1573.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1573.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1573.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1573.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1573.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1573.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1573.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1573.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1573.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1573.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1573.option.method_name.description": "검출 대상 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1573.option.method_name.name": "검출 대상 메소드",
  "rule.sast.sw.java.1573.option.type_name.description": "Stream 관련 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1573.option.type_name.name": "Stream 클래스",
  "rule.sast.sw.java.1577.description": "직렬화 된 클래스의 필드 노출 체커는 필드가 private transient가 아니면 검출합니다.\n클래스가 직렬화되면 중요한 정보를 갖는 멤버 변수의 값이 외부로 노출될 수 있습니다.\n직렬화되는 클래스의 멤버 변수가 private transient로 선언되면 중요한 데이터가 직렬화되는 것을 방지할 수 있습니다.",
  "rule.sast.sw.java.1577.example.0.dangerous": "라인 2: 직렬화되는 클래스의 멤버 변수가 외부에 노출될 수 있습니다.\n라인 3: 직렬화되는 클래스의 멤버 변수가 외부에 노출될 수 있습니다.",
  "rule.sast.sw.java.1577.example.0.safe": "라인 2: private transient를 사용하여 직렬화되는 클래스의 멤버 변수의 값이 직렬화되지 않도록 합니다.",
  "rule.sast.sw.java.1577.name": "직렬화 된 클래스의 필드 노출",
  "rule.sast.sw.java.1577.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1577.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1577.option.exclude_field.description": "분석에서 제외할 필드 이름을 입력합니다.",
  "rule.sast.sw.java.1577.option.exclude_field.name": "분석 제외 필드",
  "rule.sast.sw.java.1577.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1577.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1577.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1577.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1577.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1577.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1577.option.include_field.description": "분석에 포함할 필드 이름을 입력합니다.",
  "rule.sast.sw.java.1577.option.include_field.name": "분석 포함 필드",
  "rule.sast.sw.java.1577.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1577.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1577.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1577.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1578.description": "부적절한 Serializable 인터페이스의 구현 체커는 Serializable 구현 메소드 들을 오버라이딩 하지 않았거나 예외를 생성하지 않으면 검출합니다.\n부모 클래스가 Serializable 을 구현할 때 자식 클래스의 writeObject(), readObject(), readObjectNoData() 메소드들을 검사합니다. 해당 메소드들은 반드시 NotSerializableException을 throw 해야 합니다. 해당 메소드들에 대한 구현을 하지 못하도록 해야 하위 클래스에서 악의적으로 오버라이딩 하는 것을 막을 수 있습니다.\n자식 클래스의 writeObject(), readObject(), readObjectNoData() 메소드들을 오버라이딩 해야 하며 NotSerializableException을 throw 해야 합니다.",
  "rule.sast.sw.java.1578.example.0.dangerous": "라인 1: SensitiveClass 클래스의 상위 클래스 Number가 Serializable 을 구현하고 있습니다.\n라인 5: SensitiveClass 클래스도 Serializable 구현 메소드를 오버라이드 해야 합니다.",
  "rule.sast.sw.java.1578.example.0.safe": "라인 5: SensitiveClass 클래스가 직렬화하는 것을 막기 위해서 Serializable 메소드 구현 시 NotSerializableException 을 throw 하도록 구현합니다.",
  "rule.sast.sw.java.1578.name": "부적절한 Serializable 인터페이스의 구현",
  "rule.sast.sw.java.1578.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1578.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1578.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1578.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1578.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1578.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1578.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1578.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1578.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1578.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1578.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1578.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1578.option.method_name.description": "Serializable 구현 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1578.option.method_name.name": "Serializable 구현 메소드",
  "rule.sast.sw.java.1578.option.throws_list.description": "Throws 예외 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1578.option.throws_list.name": "Throws 예외",
  "rule.sast.sw.java.1579.description": "readObject 메소드 내 오버라이딩 가능한 메소드 호출 체커는 readObject() 메소드 내에 오버라이딩하는 메소드 호출이 있으면 검출합니다.\nreadObject() 메소드에서 재정의 가능한 메소드 호출은 객체가 완전히 초기화되기 전에 객체의 상태에 대한 접근을 오버라이딩 메서드에 제공할 수 있습니다.\nreadObject() 메소드에서 재정의 가능한 메소드에 대한 호출을 제거합니다. 호출을 제거할 수 없는 경우 메소드를 private 또는 final로 선언합니다.",
  "rule.sast.sw.java.1579.example.0.dangerous": "라인 7: readObject() 메소드 내에 오버라이드가 가능한 메소드가 호출되었습니다.",
  "rule.sast.sw.java.1579.example.0.safe": "라인 7: readObject() 메소드에서는 오버라이드가 될 수 없는 메소드를 호출합니다.",
  "rule.sast.sw.java.1579.name": "readObject 메소드 내 오버라이딩 가능한 메소드 호출",
  "rule.sast.sw.java.1579.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1579.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1579.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1579.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1579.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1579.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1579.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1579.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1579.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1579.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1579.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1579.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1581.description": "누락된 권한 검사 체커는 지정한 메소드 내에 보안 검사를 하는 메소드를 호출하지 않는 경우를 이슈로 검출합니다.\n중요한 데이터를 연산하는 메소드에서는 항상 보안 검사를 하는 메소드를 호출해야 합니다. 옵션에서 지정한 메소드 내에 보안 검사를 하는 메소드 호출이 있는지를 확인합니다. 또한 보안 검사하는 메소드 내에 지정한 메소드 이름을 호출하지 않은 경우도 검출합니다.\n중요한 작업을 수행할 때 보안 검사 후에 작업이 진행되도록 합니다.",
  "rule.sast.sw.java.1581.example.0.dangerous": "라인 4: 데이터 삭제를 할 때 권한 검사가 이루어지지 않았습니다.",
  "rule.sast.sw.java.1581.example.0.safe": "라인 5: 중요한 작업 수행 시 보안 검사 후 작업이 진행 되도록 합니다.",
  "rule.sast.sw.java.1581.name": "누락된 권한 검사",
  "rule.sast.sw.java.1581.option.allow_security_call.description": "필수로 호출해야 하는 보안 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.allow_security_call.name": "필수 보안 메소드",
  "rule.sast.sw.java.1581.option.class_type.description": "민감한 정보를 담는 자료 구조의 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.class_type.name": "민감한 정보를 담는 자료구조의 클래스",
  "rule.sast.sw.java.1581.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1581.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1581.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1581.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1581.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1581.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1581.option.security_type.description": "SecurityManager 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.security_type.name": "SecurityManager 클래스",
  "rule.sast.sw.java.1581.option.target_method_name.description": "검출 대상에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1581.option.target_method_name.name": "검출 대상에 포함할 메소드",
  "rule.sast.sw.java.1582.description": "리플렉션 사용 체커는 클래스, 메소드, 필드에 접근 권한을 설정할 수 있는 reflection을 사용하면 이슈를 검출합니다.\nReflection은 Java 프로그램 자체적으로 분석과 수정이 가능하게 합니다. 하지만 이러한 기능은 접근 권한을 무시하고 프로그램 내에 있는 데이터에 접근할 수 있기 때문에 사용하지 않을 것을 권장합니다.\n접근 권한을 무시하고 프로그램 내에 있는 데이터에 접근할 수 있는 reflection을 사용하지 않습니다.",
  "rule.sast.sw.java.1582.example.0.dangerous": "라인 8: 외부에서 접근이 가능한 public 메소드에 reflection 기능을 하는 메소드 호출을 금지합니다.",
  "rule.sast.sw.java.1582.example.0.safe": "라인 5: 라인 Reflection 기능을 사용할 경우 외부에서 접근할 수 없도록 private 또는 final 로 선언합니다.",
  "rule.sast.sw.java.1582.name": "리플렉션 사용",
  "rule.sast.sw.java.1582.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1582.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1582.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1582.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1582.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1582.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1582.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1582.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1582.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1582.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1582.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1582.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1582.option.method_name.description": "검출 대상 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1582.option.method_name.name": "검출 대상 메소드",
  "rule.sast.sw.java.1582.option.type_name.description": "검출 대상 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1582.option.type_name.name": "검출 대상 클래스",
  "rule.sast.sw.java.1583.description": "getPermissions 메소드에 누락된 부모 클래스 메소드 호출 체커는 URLClassLoader 를 상속받은 클래스의 getPermissions 오버라이딩 함수에서 super.getPermissions 를 호출하지 않으면 검출합니다.\ngetPermission() 메소드를 오버라이딩 할 때 상위 클래스의 getPermission() 메소드 호출을 하지 않을 경우 시스템 권한 정책을 반영할 수 없습니다.\ngetPermission() 메소드를 오버라이딩 할 때 상위 클래스의 getPermission() 메소드를 호출해야 합니다.",
  "rule.sast.sw.java.1583.example.0.dangerous": "라인 3: getPermission() 메소드를 override 하는 메소드 내에 상위 getPermissions() 메소드 호출이 없습니다.",
  "rule.sast.sw.java.1583.example.0.safe": "라인 3: URLClassLoader 클래스의 getPermission() 메소드를 호출합니다.",
  "rule.sast.sw.java.1583.name": "getPermissions 메소드에 누락된 부모 클래스 메소드 호출",
  "rule.sast.sw.java.1583.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.1583.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.1583.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.1583.option.extends_name.description": "상속하는 ClassLoader 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.extends_name.name": "상속 ClassLoader 클래스",
  "rule.sast.sw.java.1583.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.1583.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.1583.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.include_package.name": "분석 포함 패키지",
  "rule.sast.sw.java.1583.option.method_name.description": "검출 대상 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.method_name.name": "검출 대상 메소드",
  "rule.sast.sw.java.1583.option.type_name.description": "검출 대상 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.1583.option.type_name.name": "검출 대상 클래스",
  "rule.sast.sw.java.1584.description": "신뢰할 수 없는 클래스 import 체커는 신뢰할 수 없는 코드를 사용하는 경우를 검출합니다.\nJava SE 6 이상에서 권한 있는 코드는 AccessController 메커니즘을 사용하거나, 사용자가 신뢰하는 소유자(혹은 공급자)의 서명이 필요합니다. 그러나 권한이 부여된 코드가 다른 패키지의 코드를 직접 혹은 간접적으로 호출하는 경우, 공격자는 권한이 부여된 코드를 악성 코드와 연결할 수 있으며 간접적으로 잘못된 동작이 발생할 수 있습니다. 이러한 공격을 mix-and-match 공격이라 부릅니다. 권한 있는 코드는 신뢰할 수 없는 컨테이너에 있는 클래스를 사용할 수 있습니다. 이 때 공격자는 신뢰할 수 없는 컨테이너 클래스를 악의적인 클래스로 바꿀 수 있으며 이 경우 신뢰할 수 있는 코드가 잘못된 결과를 수신하고 악의적인 코드가 실행될 수 있습니다.\n신뢰할 수 있는 클래스만 import하여 사용할 수 있도록 합니다.",
  "rule.sast.sw.java.1584.example.0.dangerous": "라인 1: 신뢰하지 않는 import 문을 추가했습니다.",
  "rule.sast.sw.java.1584.example.0.safe": "라인 1: 신뢰하는 import 문만 추가하도록 수정합니다.",
  "rule.sast.sw.java.1584.name": "신뢰할 수 없는 클래스 import",
  "rule.sast.sw.java.1584.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.1584.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.1584.option.trust_list.description": "신뢰할 수 있는 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.1584.option.trust_list.name": "신뢰할 수 있는 패키지",
  "rule.sast.sw.java.1586.description": "누락된 실수 입력에 대한 무한대 검사 체커는 부동 소수점을 가질 수 있는 외부 입력값을 적절하게 검사하지 않는 코드를 검사합니다.\n부동 소수점(Floating-Point)은 실수를 표현하는 방법 중 하나입니다. 이 부동 소수점은 양의 무한대, 음의 무한대, NaN(Not a Number) 값을 가질 수 있습니다. 신뢰할 수 없는 외부 입력값이 Double.valueOf 함수의 인자로 사용되는 경우, 사용자가 무한대 값을 입력할 가능성이 있습니다. 이로 인해 개발자가 의도하지 않은 동작이 발생할 수 있습니다.\n외부 입력 값 val 변수에 대해 Double.isInfinite() 함수를 통해 유효성 검사를 수행합니다.",
  "rule.sast.sw.java.1586.example.0.dangerous": "라인 6: 신뢰할 수 없는 사용자 입력을 Double.valueOf 함수의 인자로 사용했습니다. 반환값은 양의 무한대, 음의 무한대를 가질 수 있습니다.\n라인 11: val 변수가 무한대 값인 경우 예외가 발생합니다.",
  "rule.sast.sw.java.1586.example.0.safe": "라인 6: 신뢰할 수 없는 사용자 입력을 Double.valueOf 함수의 인자로 사용했습니다. 반환값은 양의 무한대, 음의 무한대를 가질 수 있습니다.\n라인 11: 외부 입력 값 val 변수에 대해 Double.isInfinite() 함수를 통해 유효성 검사를 수행합니다.",
  "rule.sast.sw.java.1586.name": "누락된 실수 입력에 대한 무한대 검사",
  "rule.sast.sw.java.1586.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1586.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1586.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1586.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1788.description": "요청의 속성을 통한 크로스 사이트 스크립팅 체커는 외부에서 전달된 요청에 부여된 속성값을 검증 없이 HTML 출력에 사용하는 경우를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.java.1788.example.0.dangerous": "라인 13: 외부 입력값이 들어있는 name을 특별한 처리 과정 없이 결과 페이지 생성에 사용하고 있습니다. 만약 악의적인 공격자가 name 값에 다음 아래의 스크립트를 넣으면, 희생자의 권한으로 attack.jsp 코드가 수행하며 희생자의 쿠키 정보 유출 등의 피해를 주게 됩니다. (예 : <script>URL = \"http://devil.com/attack.jsp\";</script>)",
  "rule.sast.sw.java.1788.example.0.safe": "라인 13: replaceAll() 메소드를 사용하여 외부 입력 문자열에서 \"<\"와 \">\"같은 HTML 스크립트 생성에 사용되는 모든 문자열을 \"&lt;\"와 \"&gt;\"로 변경함으로써 악의적인 스크립트 수행의 위험성을 줄일 수 있습니다. 그러나 이러한 방법이 위험성을 완전히 제거했음을 의미하지는 않습니다. 그 외에도 여러 가지 방법으로 이 공격을 방지할 수 있습니다.",
  "rule.sast.sw.java.1788.name": "요청의 속성을 통한 크로스 사이트 스크립팅",
  "rule.sast.sw.java.1788.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1788.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1788.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1788.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1877.description": "신뢰 범위 위반 체커는 신뢰할 수 없는 데이터와 신뢰할 수 있는 데이터가 섞여있는 경우를 검출합니다.\n세션 값이나 속성에 신뢰할 수 없는 외부 입력을 전달하는 것이 한 예입니다.\n신뢰할 수 없는 데이터와 신뢰할 수 있는 데이터가 혼재하면, 프로그래머가 신뢰할 수 없는 데이터를 실수로 신뢰하여 사용할 수 있습니다. 신뢰할 수 있는 데이터의 경계는 하나의 선으로 생각해볼 수 있습니다. 선의 한쪽에서는 데이터를 신뢰하지 않습니다. 다른 한쪽은 신뢰할 수 있다고 생각합니다. 데이터를 검증하는 것은 이 경계를 넘어가기 위함입니다. 신뢰할 수 없는 데이터 쪽에서 신뢰할 수 있는 쪽으로 넘어가기 위해 데이터 검증을 사용하는 것입니다. Trust boundary violation은 신뢰할 수 있는 쪽과 신뢰할 수 없는 쪽의 경계가 흐려질때 발생합니다. 이런 경우는 신뢰할 수 있는 데이터와 신뢰할 수 없는 데이터가 같은 데이터 구조체에 혼재되는 경우 흔하게 발생합니다.\n신뢰할 수 있는 데이터만 모여있는 저장 공간은 특별히 관리합니다. 그 공간에 외부 입력을 저장할 때는 검증을 거친 후에만 저장하도록 합니다.",
  "rule.sast.sw.java.1877.example.0.dangerous": "라인 12: request의 쿠키를 통해 전달된 신뢰할 수 없는 값을 바로 세션에 저장합니다.",
  "rule.sast.sw.java.1877.example.0.safe": "라인 12: 외부 값이 원하는 데이터 형식에 맞는지 검사후 사용합니다.",
  "rule.sast.sw.java.1877.name": "신뢰 범위 위반",
  "rule.sast.sw.java.1877.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1877.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1877.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1877.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.1983.description": "예측 가능한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\n예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하게 됩니다. 일반적으로 언어마다 기본 제공되는 통계적 PRNG(유사 난수 생성기) 방식을 사용하면 생성될 난수를 공격자가 쉽게 예측 가능하며, 시드를 잘 설정하는 것만으로는 안전을 보장할 수 없습니다.\n암호학적으로 충분히 안전한 방식을 사용하여 예측 불가능한 난수를 생성해야 합니다. SecureRandom 클래스로 안전한 난수를 생성할 수 있습니다.",
  "rule.sast.sw.java.1983.example.0.dangerous": "라인 2: java.lang.Math 클래스의 random() 메소드는 시드를 재설정할 수 없기 때문에 위험합니다. 또한 시드 재설정이 가능한 java.util.Random 클래스도 여전히 위험합니다.",
  "rule.sast.sw.java.1983.example.0.safe": "라인 6: java.security.SecureRandom 클래스를 통해 직접 시드를 설정하면 java.util.Random을 사용하는 것보다 강력한 예측 불가 난수를 생성할 수 있습니다.",
  "rule.sast.sw.java.1983.name": "예측 가능한 난수 생성",
  "rule.sast.sw.java.1983.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.1983.option.allowed_random.description": "용법 검사 대상 Random 메소드 이름을 입력합니다. 예시) java.util.Random.nextBoolean",
  "rule.sast.sw.java.1983.option.allowed_random.name": "검사 대상 Random 메소드",
  "rule.sast.sw.java.1983.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.1983.option.forbidden_random.description": "금지할 Random 메소드 이름을 입력합니다. 예시) Math.random",
  "rule.sast.sw.java.1983.option.forbidden_random.name": "금지된 Random 메소드",
  "rule.sast.sw.java.1983.option.forbidden_seed_argument_call.description": "금지 seed 인자 메소드 이름을 입력합니다. 예시) Integer.valueOf",
  "rule.sast.sw.java.1983.option.forbidden_seed_argument_call.name": "금지 seed 인자 메소드",
  "rule.sast.sw.java.1983.option.is_check_util_random.description": "java.util.Random 검사 여부를 설정합니다. 예시) true",
  "rule.sast.sw.java.1983.option.is_check_util_random.name": "java.util.Random 검사 유무",
  "rule.sast.sw.java.1983.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.1983.option.random_key_class.description": "자체 랜덤 키 생성 시 요소로 사용될 수 있는 클래스 이름을 입력합니다. 예시) java.util.Date",
  "rule.sast.sw.java.1983.option.random_key_class.name": "자체 랜덤 키 생성 요소 클래스",
  "rule.sast.sw.java.1983.option.random_seed.description": "Random seed 메소드 이름을 입력합니다. 예시) java.util.Random.setSeed",
  "rule.sast.sw.java.1983.option.random_seed.name": "Random seed 메소드",
  "rule.sast.sw.java.1983.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.2834.description": "박스형 프리미티브의 값 비교 금지 체커는 객체형 타입인 변수가 equality 연산자의 피연산자로 사용되는 경우를 검출합니다.\n박스형 프리미티브(객체형)는 ==와 != 연산자를 사용하여 직접 비교할 수 없습니다. 객체형 간의 == 혹은 != 연산은 비교가 아니라 레퍼런스의 비교입니다. 래퍼런스 비교임에도 불구하고 캐싱을 수행하기 때문에 일부 범위에서는 예상하지 못한 결과가 나오게 됩니다.\n박스형 프리미티브(객체형)는 ==와 != 연산자를 사용하여 비교하지 않고, equals() 메소드를 사용하여 비교하도록 합니다.",
  "rule.sast.sw.java.2834.example.0.dangerous": "라인 5: Integer 타입 변수인 i1과 i2를 == 연산자로 비교했습니다.\n라인 6: Integer 타입 변수인 i1과 i2를 != 연산자로 비교했습니다.\n라인 20: ArrayList 첫 번째 인텍스의 데이터와 두 번째 인덱스의 데이터를 == 연산자로 비교했습니다.",
  "rule.sast.sw.java.2834.example.0.safe": "라인 5: == 연산자 대신 equals() 메소드를 사용하여 비교합니다.\n라인 6: != 연산자 대신 equals() 메소드를 사용하여 비교합니다.\n라인 20: == 연산자 대신 equals() 메소드를 사용하여 비교합니다.",
  "rule.sast.sw.java.2834.name": "박스형 프리미티브의 값 비교 금지",
  "rule.sast.sw.java.2834.option.boxed_type.description": "검출할 boxed primitive 타입을 설정합니다.",
  "rule.sast.sw.java.2834.option.boxed_type.name": "boxed primitive 타입",
  "rule.sast.sw.java.2835.description": "공유되는 immutable 객체의 가시성 보장 체커는 synchronized로 선언되어 있지 않는 특정 메소드에 final이나 volatile이 아닌 필드가 사용되는 경우를 검출합니다.\n멀티스레드 환경에서 immutable 객체의 공유 참조형 값을 업데이트하는 경우 모든 스레드가 업데이트된 값을 반영할 수 있는 것은 아닙니다. 예를 들어, 프로그래머는 immutable 객체를 가리키고 있는 필드를 포함하는 클래스가 immutable 하면서 스레드에서 안전하다고 착각할 수 있습니다. 하지만 공유 객체가 immutable 이더라도 공유 객체에 접근하기 위해 사용되는 참조가 mutable 인 경우 업데이트된 내용이 반영되지 않을 수 있습니다. 따라서 동기화된 프로그램에서도 공유 객체에 접근할 때 사용하는 참조를 동기화해야 합니다. 즉, 모든 스레드가 공유한 immutable 및 mutable 객체에 대한 가시성을 갖도록 함으로써 해당 객체를 참조할 수 있어야 합니다. 이 경우, immutable 객체는 멀티스레드 내에서 안전하게 공유될 수 있는 반면 mutable 객체는 참조가 완전히 생성(fully-constructed)되기 전에 가시성을 가지는 문제가 발생할 수 있습니다.\nsynchronized로 선언되어 있지 않는 메소드에 final이나 volatile이 아닌 필드를 사용하지 않도록 합니다.",
  "rule.sast.sw.java.2835.example.0.dangerous": "라인 18: Help 클래스는 immutable 클래스이지만, DangerousFoo 클래스의 setHelper() 메소드에서 mutable helper 필드 변수를 반환하여 다른 곳에서 helper 필드를 참조할 수 있도록 했습니다.",
  "rule.sast.sw.java.2835.example.0.safe": "라인 18: 다른 스레드에서 불완전한 상태의 Helper 참조를 사용하는 것을 방지하기 위해 Foo 클래스의 메소드를 동기화합니다.",
  "rule.sast.sw.java.2835.name": "공유되는 immutable 객체의 가시성 보장",
  "rule.sast.sw.java.2835.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.2835.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.2835.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.2835.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.2835.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.2835.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.2835.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.2835.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.2835.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.2835.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.2835.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.2835.option.include_package.name": "분석 포함 페키지",
  "rule.sast.sw.java.2836.description": "Socket 클래스 사용 금지 체커는 java.net.Socket 혹은 java.net.ServerSocket 클래스를 사용하는 경우를 검출합니다.\n안전하지 않은 커뮤니케이션 채널을 통해 민감한 데이터를 전송할 때는 java.net.Socket 클래스가 아닌 javax.net.ssl.SSLSocket 클래스를 사용해야 합니다. SSLSocket 클래스는 SSL/TLS(Secure Sockets Layer/Transport Layer Security)와 같은 시큐리티 프로토콜을 제공하여 채널이 도청이나 악의적인 조작 공격에 취약하지 않도록 만듭니다.\njava.net.Socket 혹은 java.net.ServerSocket 클래스 대신 javax.net.ssl.SSLSocket 클래스를 사용하도록 합니다.",
  "rule.sast.sw.java.2836.example.0.dangerous": "라인 3: java.net.ServerSocket를 사용했습니다.\n라인 6: java.net.Socket를 사용했습니다.\n라인 30: java.net.Socket를 사용했습니다.",
  "rule.sast.sw.java.2836.example.0.safe": "라인 3: javax.net.ssl.SSLServerSocket를 사용합니다.\n라인 7: javax.net.ssl.SSLSocket를 사용합니다.\n라인 31: javax.net.ssl.SSLSocket를 사용합니다.",
  "rule.sast.sw.java.2836.name": "Socket 클래스 사용 금지",
  "rule.sast.sw.java.2836.option.target_api.description": "분석 대상 클래스 타입을 입력합니다.",
  "rule.sast.sw.java.2836.option.target_api.name": "분석 대상 클래스 타입",
  "rule.sast.sw.java.2942.description": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 이슈를 검출합니다.\n코드를 동적으로 실행하는 애플리케이션의 경우 코드를 구성하는 데 사용되는 외부 제공 값을 확인해야 합니다. 그렇게 하지 않으면, 공격자가 임의의 코드를 실행할 수 있습니다. 만약 공격자가 임의의 코드를 실행하게 된다면, 중요한 정보에 접근하여 수정하거나 이득을 얻는 등 심각한 공격이 발생할 수 있습니다. 전체 시스템에 액세스하지 못하도록 완화 전략으로써 허용된 값을 화이트리스트로 작성하거나 안전 유형으로 캐스팅을 수행하도록 합니다.\nServletRequest.getParameter() 메소드를 통해 받은 외부 입력 값을 별도로 정의된 검증 메소드를 통해서 확인해야 합니다.",
  "rule.sast.sw.java.2942.example.0.dangerous": "라인 8: 라인 4에서 생성된 변수 input을 별도의 검증 없이 ScriptEngine.eval() 메소드의 인자 값으로 사용했습니다.",
  "rule.sast.sw.java.2942.example.0.safe": "라인 4: 외부 입력 값인 input 변수를 검증 후 사용합니다.",
  "rule.sast.sw.java.2942.name": "동적 코드 조작 취약점",
  "rule.sast.sw.java.2942.option.class_type.description": "외부 입력 값을 사용하는 클래스 이름을 설정합니다.",
  "rule.sast.sw.java.2942.option.class_type.name": "외부 입력 값을 사용하는 클래스",
  "rule.sast.sw.java.2942.option.filter_method.description": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.<br />예시) whiteList",
  "rule.sast.sw.java.2942.option.filter_method.name": "외부 입력 값 검증 메소드",
  "rule.sast.sw.java.2942.option.filter_set.name": "filter_set",
  "rule.sast.sw.java.2942.option.request_method.description": "외부 입력 값을 획득하는 메소드 이름을 입력합니다.<br />예시) javax.servlet.http.HttpServletRequest.getParameter",
  "rule.sast.sw.java.2942.option.request_method.name": "외부 입력 값 획득 메소드",
  "rule.sast.sw.java.2942.option.target_method_name.description": "외부 입력 값을 사용하는 클래스의 메소드를 설정합니다.",
  "rule.sast.sw.java.2942.option.target_method_name.name": "외부 입력 값을 사용하는 클래스의 메소드",
  "rule.sast.sw.java.2943.description": "확인되지 않은 SpEL 식 체커는 외부 입력 값을 확인하지 않고 SpelExpression을 생성하는 데 사용한 코드를 검출합니다.\nSpEL(Spring Expression Language)은 런타임 시 개체 그래프를 쿼리하고 조작하도록 지원하는 강력한 표현 언어입니다. 확인되지 않은 식을 평가하도록 허용하면 공격자가 임의의 코드를 실행할 수 있게 됩니다\nSpelExpression을 생성하는 데 사용되는 외부 입력 값을 별도로 정의된 검증 메소드를 통해서 확인해야 합니다.",
  "rule.sast.sw.java.2943.example.0.dangerous": "라인 5: 라인 3에서 생성된 변수 expression 을 별도의 검증 없이 SpelExpressionParser.parseRaw() 메소드의 인자 값으로 사용했습니다.\n라인 6: SpelExpressionParser.parseRaw() 메소드의 인자 값을 검증하지 않고 사용했습니다.",
  "rule.sast.sw.java.2943.example.0.safe": "라인 11: 외부 입력 값인 expression 변수를 검증 후 사용합니다.",
  "rule.sast.sw.java.2943.name": "확인되지 않은 SpEL 식",
  "rule.sast.sw.java.2943.option.class_type.description": "외부 입력 값을 사용하는 클래스 이름을 설정합니다.",
  "rule.sast.sw.java.2943.option.class_type.name": "외부 입력 값을 사용하는 클래스",
  "rule.sast.sw.java.2943.option.filter_method.description": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.<br />예시) whiteList",
  "rule.sast.sw.java.2943.option.filter_method.name": "외부 입력 값 검증 메소드",
  "rule.sast.sw.java.2943.option.filter_set.name": "filter_set",
  "rule.sast.sw.java.2943.option.request_method.description": "외부 입력 값을 획득하는 메소드 이름을 입력합니다.<br />예시) javax.servlet.http.HttpServletRequest.getParameter",
  "rule.sast.sw.java.2943.option.request_method.name": "외부 입력 값 획득 메소드",
  "rule.sast.sw.java.2943.option.target_method_name.description": "외부 입력 값을 사용하는 클래스의 메소드를 설정합니다.",
  "rule.sast.sw.java.2943.option.target_method_name.name": "외부 입력 값을 사용하는 클래스의 메소드",
  "rule.sast.sw.java.2945.description": "확인되지 않은 OGNL 식 체커는 외부 입력 값을 확인하지 않고 객체를 생성하는 데 사용한 코드를 검출합니다.\nOGNL(Object-Graph Navigation Language)은 Java용 오픈소스 EL(표현 언어)이며, 이를 통해 Struts 2 Value Stack 컨텍스트의 EL 식을 평가할 수 있습니다. 확인되지 않은 식을 Value Stack과 비교하여 평가할 수 있게 하면 공격자가 접근하여 시스템 변수를 수정하거나 임의의 코드를 실행할 수 있게 됩니다.\nOgnl.parseExpression() 메소드로 객체를 생성하는 데 사용한 외부 입력 값을 별도로 선언된 검증 메소드를 통해 확인해야 합니다.",
  "rule.sast.sw.java.2945.example.0.dangerous": "라인 4: 라인 3에서 생성된 변수 expression 을 별도의 검증 없이 Ognl.parseExpression() 메소드의 인자 값으로 사용했습니다.\n라인 5: Ognl.parseExpression() 메소드의 인자 값을 검증하지 않고 사용했습니다.",
  "rule.sast.sw.java.2945.example.0.safe": "라인 10: 외부 입력 값인 expression 변수를 검증 후 사용합니다.",
  "rule.sast.sw.java.2945.name": "확인되지 않은 OGNL 식",
  "rule.sast.sw.java.2945.option.class_type.description": "외부 입력 값을 사용하는 클래스 이름을 설정합니다.",
  "rule.sast.sw.java.2945.option.class_type.name": "외부 입력 값을 사용하는 클래스",
  "rule.sast.sw.java.2945.option.filter_method.description": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.<br />예시) whiteList",
  "rule.sast.sw.java.2945.option.filter_method.name": "외부 입력 값 검증 메소드",
  "rule.sast.sw.java.2945.option.filter_set.name": "filter_set",
  "rule.sast.sw.java.2945.option.request_method.description": "외부 입력 값을 획득하는 메소드 이름을 입력합니다.<br />예시) javax.servlet.http.HttpServletRequest.getParameter",
  "rule.sast.sw.java.2945.option.request_method.name": "외부 입력 값 획득 메소드",
  "rule.sast.sw.java.2945.option.target_method_name.description": "외부 입력 값을 사용하는 클래스의 메소드를 설정합니다.",
  "rule.sast.sw.java.2945.option.target_method_name.name": "외부 입력 값을 사용하는 클래스의 메소드",
  "rule.sast.sw.java.2946.description": "취약한 XML 변환 보안 체커는 별도의 보안 옵션을 지정하지 않고 XML 파서를 바로 사용한 경우를 검출합니다.\nXML 외부 엔터티 또는 XSLT 외부 엔터티(XXE) 취약성은 javax.xml.transform.Transformer가 보안 처리를 수행하지 않고 생성되거나, 외부 DTD 및 DTD 엔터티를 허용한 상태로 XML 파서를 사용하는 경우에 발생할 수 있습니다. 공격자가 외부 데이터를 제어하게 되면 파서가 위치한 장치에서 기밀 데이터의 공개, 서비스 거부, 서버 측 요청 위조, 포트 스캐닝 등의 문제가 발생하거나 시스템에도 영향을 미칠 수 있습니다.\nTransformer 객체를 생성하기 전에 외부 DTD 및 DTD 엔터티를 모두 사용하지 않도록 설정해야 합니다.",
  "rule.sast.sw.java.2946.example.0.dangerous": "라인 3: TransformerFactory 객체에 보안 옵션을 설정하지 않고 Transformer 객체를 생성했습니다.\n라인 5: TransformerFactory 객체에 보안 옵션을 설정하지 않고 Transformer 객체를 생성했습니다.",
  "rule.sast.sw.java.2946.example.0.safe": "라인 3: TransformerFactory 객체를 생성합니다.\n라인 3: TransformerFactory 옵션을 설정합니다.\n라인 4: TransformerFactory 옵션을 설정합니다.\n라인 7: 보안 옵션이 설정된 TransformerFactory 객체를 통해서 Transformer를 생성합니다.",
  "rule.sast.sw.java.2946.name": "취약한 XML 변환 보안",
  "rule.sast.sw.java.2947.description": "취약한 서버 인증서 검증 체커는 X509TrustManager 클래스를 상속한 자식 클래스에서 오버라이드 함수를 재정의하지 않거나 예외를 throw하지 않는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다.\n해당 인증서의 유효성을 제어하지 않는 방식으로 X509TrustManager 를 구현한 경우 문제가 발생할 수 있습니다. X509TrustManager 인터페이스를 구현하여 인증서에 대한 유효성 검사를 수행해야 합니다.",
  "rule.sast.sw.java.2947.example.0.dangerous": "라인 4: 오버라이드된 checkServerTrusted() 메소드를 구현하지 않고, 예외를 throw하지 않았습니다.",
  "rule.sast.sw.java.2947.example.0.safe": "라인 4: checkServerTrusted() 메소드가 비어 있지 않도록 구현합니다.\n라인 15: CertificateException을 throw 합니다.",
  "rule.sast.sw.java.2947.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.java.2948.description": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 경우를 검출합니다.\n공개 웹 서버에서 작동하는 서비스가 외부 입력이 포함된 URL을 제대로 확인하지 않고 접속을 시도하면 이 URL이 외부로 공개되지 않는 내부 전용 서버를 가리킬 때에도 접속을 시도하게 됩니다. 내부 서버는 이 요청이 동일한 내부 웹 서버로부터 전달된 것이므로 정상적으로 응답을 보낼 것입니다. 공격자는 자신이 접속할 수 있는 웹 서버에 이런 취약점이 존재한다는 사실을 알게되면 이 취약한 웹 서버를 통해 자신에게 접속 권한이 없는 내부망의 서버에 요청을 보낼 수 있습니다. 이를 통해 외부로 노출되어서는 안되는 중요 정보가 노출될 수 있습니다.\n외부 입력을 포함하는 URL에 접속하려고 시도할 때 적절한 검증을 수행하도록 합니다.",
  "rule.sast.sw.java.2948.example.0.dangerous": "라인 2: 변수 url을 초기화하는 인자 값으로 외부 입력 값을 사용했습니다.",
  "rule.sast.sw.java.2948.example.0.safe": "라인 3: 외부 입력 값인 str 변수를 검증 후 사용하도록 합니다.",
  "rule.sast.sw.java.2948.name": "서버측 요청 변조",
  "rule.sast.sw.java.2948.option.class_type.description": "외부 입력 값을 사용하는 클래스 이름을 설정합니다.",
  "rule.sast.sw.java.2948.option.class_type.name": "외부 입력 값을 사용하는 클래스",
  "rule.sast.sw.java.2948.option.filter_method.description": "외부 입력 값을 검증하는 메소드 이름을 입력합니다.<br />예시) whiteList",
  "rule.sast.sw.java.2948.option.filter_method.name": "외부 입력 값 검증 메소드",
  "rule.sast.sw.java.2948.option.filter_set.name": "filter_set",
  "rule.sast.sw.java.2948.option.request_method.description": "외부 입력 값을 획득하는 메소드 이름을 입력합니다.<br />예시) javax.servlet.http.HttpServletRequest.getParameter",
  "rule.sast.sw.java.2948.option.request_method.name": "외부 입력 값 획득 메소드",
  "rule.sast.sw.java.2957.description": "안전하지 않은 Jackson 역직렬화 체커는 Jackson 라이브러리를 통해서 역직렬화를 구현하거나, 민감한 데이터를 신뢰할 수 없는 출처에서 가져오는 코드를 검출합니다.\nJackson은 Java에서 객체를 직렬화하거나 역직렬화하는 데 사용하는 오픈소스 프레임워크입니다. Java에서는 xml과 json 형식의 문자열을 직렬화하고 역직렬화하는 기능을 지원합니다. 공격자는 ObjectMapper 를 역직렬화하기 전에 enableDefaultTyping을 호출하여 서버에서 임의의 코드를 실행할 수 있습니다.\n@JsonTypeInfo(use = Id.CLASS) 혹은 @JsonTypeInfo(use = Id.MINIMAL_CLASS) 대신 @JsonTypeInfo(use = Id.NAME) 을 사용하도록 합니다. 또한 ObjectMapper 를 역직렬화하기 전에 enableDefaultTyping을 호출하지 않도록 합니다. Jackson 2.7.10 이상 혹은 Jackson 2.8.9 이상 버전을 사용해야 합니다. enableDefaultTyping() 호출을 검출할지 여부를 옵션으로 설정할 수 있습니다.",
  "rule.sast.sw.java.2957.example.0.dangerous": "라인 3: @JsonTypeInfo(use = Id.CLASS)를 사용했습니다.\n라인 7: @JsonTypeInfo(use = Id.MINIMAL_CLASS)를 사용했습니다.\n라인 12: ObjectMapper.enableDefaultTyping() 메소드를 호출했습니다.",
  "rule.sast.sw.java.2957.example.0.safe": "라인 3: @JsonTypeInfo(use = Id.NAME)을 사용합니다.\n라인 7: @JsonTypeInfo(use = Id.NAME)을 사용합니다.\n라인 12: ObjectMapper.enableDefaultTyping() 메소드 호출을 제거하거나 라이브러리 버전을 업그레이드하도록 합니다.",
  "rule.sast.sw.java.2957.name": "안전하지 않은 Jackson 역직렬화",
  "rule.sast.sw.java.2957.option.target_method_switch.description": "enableDefaultTyping() 메소드의 검출 여부를 설정합니다.",
  "rule.sast.sw.java.2957.option.target_method_switch.name": "enableDefaultTyping() 메소드 검출 설정",
  "rule.sast.sw.java.2958.description": "안전하지 않은 XStream 역직렬화 체커는 XStream.fromXML() 메소드를 호출하는 코드를 검출합니다.\n런타임 시 사용자가 제어하는 XML 문서를 역직렬화하는 경우 공격자가 서버에서 악성 코드를 실행할 수 있습니다.\nXStream 역직렬화 취약점이 발생하지 않도록 라이브러리를 업그레이드해야 합니다. Xstream 버전 1.46 이하는 해당 문제에 취약합니다. Xstream 1.47 이상 버전을 사용해야 합니다. Struts 를 사용하는 경우 2.3.34 혹은 2.5.13 이상 버전으로 업그레이드해야 합니다. 라이브러리를 업그레이드한 후 옵션에서 XStream.fromXML() 메소드 호출을 검출하지 않도록 변경하여 검출된 이슈에서 제외할 수 있습니다.",
  "rule.sast.sw.java.2958.example.0.dangerous": "라인 5: XStream.fromXML() 메소드를 호출했습니다.",
  "rule.sast.sw.java.2958.example.0.safe": "라인 5: Struts 와 XStream의 버전을 확인하고 사용하도록 합니다.",
  "rule.sast.sw.java.2958.name": "안전하지 않은 XStream 역직렬화",
  "rule.sast.sw.java.2958.option.target_method_switch.description": "fromXML() 메소드의 검출 여부를 설정합니다.",
  "rule.sast.sw.java.2958.option.target_method_switch.name": "fromXML() 메소드 검출 설정",
  "rule.sast.sw.java.2972.description": "Android에서 안전하지 않은 호스트 이름 확인 체커는 HostnameVerifier 인터페이스에서 verify 함수의 리턴값을 true로만 작성한 코드를 검출합니다.\n인증서가 잘 구성되고 서명되었으며 신뢰 체인을 따르더라도 프로그램이 예상하고 있는 사이트가 아닌 다른 사이트의 인증서일 가능성이 있습니다.\nAndroid에서 HostnameVerifier 인터페이스의 verify 함수 반환값이 항상 true이면 호스트 이름이 잘못된 경우에도 모든 인증서를 수락하기 때문에 공격자가 중간자 공격을 수행할 수 있습니다.\nHostnameVerifier의 verify 함수를 사용할 때 인증서를 올바르게 확인한 경우에만 true를 반환하도록 합니다.",
  "rule.sast.sw.java.2972.example.0.dangerous": "라인 12: 호스트의 이름을 확인하지 않고 항상 true를 반환했습니다.",
  "rule.sast.sw.java.2972.example.0.safe": "라인 19: 호스트의 이름이 올바른지 확인합니다.\n라인 20: 호스트의 이름이 올바른 경우에만 true를 반환합니다.\n라인 22: 호스트의 이름이 올바르지 않은 경우 false를 반환합니다.",
  "rule.sast.sw.java.2972.name": "Android에서 안전하지 않은 호스트 이름 확인",
  "rule.sast.sw.java.30.description": "공격자가 소프트웨어의 의도된 동작을 변경하도록 임의 코드를 삽입하여 소프트웨어가 비정상적으로 동작하도록 하는 보안약점을 말합니다.\n`eval()`과 같이 동적으로 코드를 실행하는 함수를 사용하여 사용자의 입력 값에 코드가 포함되는 것을 허용할 경우, 공격자는 개발자가 의도하지 않은 코드를 실행하여 권한 탈취, 인증 우회, 시스템 명령어 실행 등을 수행할 수 있습니다.\n동적 코드 실행 함수인 `eval()`을 사용하지 않는 것이 안전합니다. 꼭 필요하다면 정규식을 통해 입력한 특수문자를 필터링한 후에 사용합니다.",
  "rule.sast.sw.java.30.example.0.dangerous": "라인 10: GET 방식으로 외부에서 전달 받은 src 값을 eval 함수로 실행하므로 위험합니다.",
  "rule.sast.sw.java.30.example.0.safe": "라인 4: 정규식을 이용하여 src 값에 특수문자를 입력하면 예외를 발생시키므로 안전합니다.",
  "rule.sast.sw.java.30.name": "코드 삽입",
  "rule.sast.sw.java.3015.description": "유효성 검사 전 문자열 정규화 필요 체커는 신뢰할 수 없는 외부 입력값에 대한 유효성을 검사하기 전에 문자열을 정규화(Normalize)하지 않은 코드를 검출합니다.\n유니코드로 다양한 문자열을 표현할 수 있습니다. 예를 들면 `<` 문자를 `\\uFE64`로 지정합니다. 따라서 문자열을 정규화하여 통일된 값으로 변환하지 않고 유효성을 검사하는 경우 공격자가 유효성 검사를 우회하는 입력값을 전달하여 임의의 동작을 실행할 수 있습니다.\n신뢰할 수 없는 외부 입력값에 대해 유효성을 검사할 경우, 문자열을 정규화(Normalize)한 후 유효성을 검사합니다.",
  "rule.sast.sw.java.3015.example.0.dangerous": "라인 2: 외부에서 입력한 값을 s 변수에 전달했습니다.\n라인 5: 별도의 정규화 과정 없이 외부에서 전달 받은 값의 유효성을 검사했습니다. 따라서 공격자가 임의의 코드를 실행시키는 등의 동작을 수행할 수 있습니다.",
  "rule.sast.sw.java.3015.example.0.safe": "라인 2: 외부에서 입력한 값을 s 변수에 전달합니다.\n라인 4: 외부에서 전달 받은 값을 정규화하여 해석할 수 있는 값으로 통일시킵니다.",
  "rule.sast.sw.java.3015.name": "유효성 검사 전 문자열 정규화 필요",
  "rule.sast.sw.java.3015.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.3015.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.3015.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.3015.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.3016.description": "XML 삽입 방지 체커는 XML 문서에 신뢰할 수 없는 외부 입력 값이 사용되는 경우에, 입력 값에 대한 적절한 필터링이 수행되지 않는 코드를 검출합니다.\nXML(eXtensible Markup Language)은 데이터를 저장하고 전달할 목적으로 설계된 언어입니다. 이 XML 문서에 외부 입력값을 사용하는 경우, 해당 값에 대한 적절한 필터링을 수행하지 않는다면 공격자가 데이터 조작을 위한 XML 태그를 삽입할 수 있습니다.\n신뢰할 수 없는 외부 입력값 userInput 변수를 부호 없는 정수 타입으로 변환함으로써 XML 태그를 삽입할 수 없도록 합니다.",
  "rule.sast.sw.java.3016.example.0.dangerous": "라인 9: XML에 저장할 변수에 신뢰할 수 없는 외부 입력값 userInput을 아무런 필터링 없이 사용했습니다.",
  "rule.sast.sw.java.3016.example.0.safe": "라인 9: 신뢰할 수 없는 외부 입력값 userInput 변수를 부호 없는 정수 타입으로 변환함으로써 XML 태그를 삽입할 수 없도록 합니다.",
  "rule.sast.sw.java.3016.name": "XML 삽입 방지",
  "rule.sast.sw.java.3016.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.3016.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.3016.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.3016.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.3018.description": "동일 데이터에 비트 연산과 산술 연산의 동시 수행 금지 체커는 동일한 데이터에 대해 산술 연산과 비트 연산이 동시에 수행되는 코드를 검출합니다.\n<<, >>, &, ^ 등이 사용되는 비트 연산의 경우, 주로 산술 값에 대해 섣부른 최적화(premature optimization)를 적용하는 형태로 사용됩니다. 비트 연산과 산술 연산을 한 데이터에 동시에 수행하는 경우 컴파일에 문제는 없지만, 코드의 가독성과 이식성이 떨어집니다.\n따라서 비트 연산과 산술 연산을 한 데이터에 수행하지 않고, 산술 연산자만을 사용하여 코드의 가독성을 높여야 합니다.",
  "rule.sast.sw.java.3018.example.0.dangerous": "라인 3: 변수 x에 대해서 산술 연산과 비트 연산을 함께 수행했습니다.\n라인 8: 변수 y에 x의 비트 연산 결과를 할당했습니다.\n라인 9: 변수 y는 x의 비트 연산 결과이므로 비트 연산과 산술 연산이 함께 수행된 것과 같습니다.",
  "rule.sast.sw.java.3018.example.0.safe": "라인 3: 산술 연산자만 사용해서 코드의 가독성을 높입니다.",
  "rule.sast.sw.java.3018.name": "동일 데이터에 비트 연산과 산술 연산의 동시 수행 금지",
  "rule.sast.sw.java.3019.description": "시프트(Shift) 연산자의 올바른 사용 체커는 외부 입력값을 시프트 연산에 사용할 때 적절한 검증 과정이 생략된 코드를 검출합니다.\n산술 시프트 연산의 대상이 되는 변수(연산자의 좌측)의 타입보다 큰 값을 이동거리(연산자의 우측)로 사용하는 경우, 의미 없는 연산이 될 수 있습니다. 예를 들면 산술 시프트 연산의 대상 변수의 자료형이 int 인 경우, 이동거리의 범위는 0 에서 63 사이의 값이어야 합니다. 산술 시프트 연산의 대상이 되는 변수의 자료형보다 큰 값을 이동거리로 사용하는 경우, 개발자가 의도하지 않은 동작이 수행될 수 있습니다.\n외부 입력값을 시프트 연산에 사용하기 전에 적절한 값인지 검증해야 합니다.",
  "rule.sast.sw.java.3019.example.0.dangerous": "라인 3: 외부 입력값 param을 검증 없이 시프트 연산에 사용했습니다.",
  "rule.sast.sw.java.3019.example.0.safe": "라인 3: 외부 입력 값 param이 적절한지 검증합니다.\n라인 6: 검증된 param을 시프트 연산에서 사용합니다.",
  "rule.sast.sw.java.3019.name": "시프트(Shift) 연산자의 올바른 사용",
  "rule.sast.sw.java.3020.description": "메서드 인수의 유효성 검사 필요 체커는 외부 입력값을 적절한 검증 없이 멤버 변수에 할당하는 코드를 검출합니다.\n메서드의 인수는 호출된 메서드 내에서 유효성 검사를 수행하거나, 메서드를 호출하기 전에 유효성 검사를 수행해야 합니다. 두 경우 모두에서 유효성을 검사하는 것보다 한 쪽에서만 유효성 검사를 하는 것이 일반적입니다. 유효성 검사를 수행하지 않고 인수를 사용하는 경우, 의도치 않은 동작이 발생할 수 있습니다. 해당 체커는 메서드 내부에서 인수에 대한 유효성 검사의 수행 여부를 검사하므로 메서드를 호출하기 전에 적절하게 유효성 검사를 수행한다면 예외로 처리할 수 있습니다.\n외부 입력값을 멤버 변수에 할당할 때는 적절하게 검증한 후에 할당해야 합니다.",
  "rule.sast.sw.java.3020.example.0.dangerous": "라인 5: 외부 입력값 state를 별도의 검증 없이 멤버 객체 myState에 할당했습니다.",
  "rule.sast.sw.java.3020.example.0.safe": "라인 5: 외부 입력 값 state를 검증합니다.\n라인 8: 검증된 state를 멤버 객체에 할당합니다.",
  "rule.sast.sw.java.3020.name": "메서드 인수의 유효성 검사 필요",
  "rule.sast.sw.java.3020.option.excluded_class.description": "오류를 검출하지 않고 제외할 클래스 명을 작성합니다.<br />예시) .*Dto",
  "rule.sast.sw.java.3020.option.excluded_class.name": "제외 클래스",
  "rule.sast.sw.java.3020.option.excluded_method.description": "오류를 검출하지 않고 제외할 메소드 이름을 작성합니다.<br />예시) .*Dto",
  "rule.sast.sw.java.3020.option.excluded_method.name": "제외 메소드",
  "rule.sast.sw.java.3020.option.excluded_package.description": "오류를 검출하지 않고 제외할 패키지 이름을 작성합니다.<br />예시) .*dto",
  "rule.sast.sw.java.3020.option.excluded_package.name": "제외 패키지",
  "rule.sast.sw.java.3021.description": "불완전한 validate 메서드 정의 체커는 특정 클래스를 상속 받는 클래스에서 validate 메서드를 정의하지 않거나 잘못 정의하는 코드를 검출합니다.\n다음 클래스를 상속 받을 때 validate 메서드를 정의하지 않거나, 정의된 validate 메서드 안에서 super.validate 메서드를 호출하여 유효성을 검사하지 않으면 결과적으로 취약점이 발생할 수 있습니다. 상속 클래스 항목은 `org.apache.struts.validator.ValidatorForm`, `org.apache.struts.validator.ValidatorActionForm`, `org.apache.struts.validator.DynaValidatorForm`, `org.apache.struts.validator.DynaValidatorActionForm` 등 모두 네 개입니다.\n다음과 같은 네 개의 클래스를 상속 받는 클래스에서는 validate 메서드를 정의하고, 정의된 validate 메서드 안에서는 super.validate 메서드를 호출해야 합니다.\n`org.apache.struts.validator.ValidatorForm`, `org.apache.struts.validator.ValidatorActionForm`, `org.apache.struts.validator.DynaValidatorForm`, `org.apache.struts.validator.DynaValidatorActionForm`.",
  "rule.sast.sw.java.3021.example.0.dangerous": "라인 1: org.apache.struts.validator.ValidatorForm 클래스를 상속 받았습니다.\n라인 9: validate 메서드를 정의했지만, 메서드 내에서 super.validate 메서드를 호출하지 않았습니다.",
  "rule.sast.sw.java.3021.example.0.safe": "라인 10: validate 메서드 내에서 super.validate 메서드를 호출함으로써 유효성을 검증합니다.",
  "rule.sast.sw.java.3021.name": "불완전한 validate 메서드 정의",
  "rule.sast.sw.java.3022.description": "Validation 클래스 상속 금지 체커는 클래스가 ActionForm 또는 DynaActionForm 클래스를 상속 받는 코드를 검출합니다.\nForm Bean이 Validator 프레임워크의 ActionForm 서브 클래스를 확장하지 않습니다. 따라서 애플리케이션이 입력을 충분히 검증하지 않는 다른 취약점에 노출될 수 있습니다.\nActionForm 또는 DynaActionForm 클래스를 상속 받지 않아야 합니다. 스트럿츠 밸리데이터를 사용하려면 ValidatorForm, ValidatorActionForm, DynaValidatorActionForm 및 DynaValidatorForm 중 하나의 양식을 확장하도록 합니다. 스트럿츠 밸리데이터가 앞서 언급한 클래스에서 validate() 메소드를 구현하여 애플리케이션에 연결되기 때문에 해당 클래스 중 하나를 확장해야 합니다.",
  "rule.sast.sw.java.3022.example.0.dangerous": "라인 3: ActionForm 클래스를 상속 받았습니다.",
  "rule.sast.sw.java.3022.example.0.safe": "라인 3: ActionForm 클래스 대신 ValidatorForm 클래스를 상속 받아 사용해야 합니다.",
  "rule.sast.sw.java.3022.name": "Validation 클래스 상속 금지",
  "rule.sast.sw.java.3023.description": "동기화 기본 요소 사용 주의 체커는 EJB 규격에서 synchronized 메서드를 사용하는 코드를 검출합니다.\nEJB(Enterprise JavaBeans) 규격에서 synchronized 키워드를 사용하여 동기화를 수행하면 품질 저하가 발생하게 됩니다. EJB 규격 사용 여부는 javax.ejb.SessionBean 상속 여부로 판단합니다.\nEJB 규격에서 synchronized 키워드를 사용하지 않습니다.",
  "rule.sast.sw.java.3023.example.0.dangerous": "라인 5-6: synchronized 메서드를 사용했습니다.",
  "rule.sast.sw.java.3023.example.0.safe": "라인 5-6: synchronized 메서드 대신 일반 메서드를 사용합니다.",
  "rule.sast.sw.java.3023.name": "동기화 기본 요소 사용 주의",
  "rule.sast.sw.java.3029.description": "단일 바이트 혹은 문자 스트림에 여러 개의 버퍼 래퍼 생성 체커는 Scanner 및 BufferedInputStream과 같은 Non-blocking I/O를 지원하는 객체에 두 개 이상의 래퍼를 만들어 사용하는 코드를 검출합니다.\nScanner 및 BufferedInputStream과 같은 Java 입력 클래스는 기본 입력 스트림을 버퍼링하여 빠른 Non-Blocking I/O를 지원합니다. 그러나 프로그램에서 입력 스트림을 비롯하여 다수의 래퍼를 사용하고 래퍼의 미리보기(look-ahead)를 허용한 경우 예상치 못한 동작이 발생할 수 있습니다.\n\nNon-Blocking I/O를 지원하는 입력 스트림은 일반적으로 이러한 영향을 받기 쉽습니다. 입력 스트림에는 버퍼링된 래퍼가 둘 이상 존재하지 않도록 하고, 스트림당 하나의 래퍼만 만들며, 래퍼가 필요한 메소드에 인수로 전달하거나 클래스 변수로 선언하여 사용해야 합니다. 마찬가지로 다수의 래퍼 때문에 출력 문자열이 의도치 않은 순서로 출력될 수 있으므로 출력 스트림에 두 개 이상의 버퍼링된 래퍼가 없어야 합니다. 예를 들어, javax.servlet.ServletResponse는 웹 서블릿에 의해 생성된 응답을 보관하는 PrintWriter 혹은 OutputStream의 생성을 허용하지만 둘 중 하나만 사용해야 하며 둘 다 사용해서는 안됩니다.\nScanner 및 BufferedInputStream과 같은 Java 입력 클래스의 인자가 System.in인 경우 메서드 내에서 호출하지 않도록 합니다.",
  "rule.sast.sw.java.3029.example.0.dangerous": "라인 3: BufferedInputStream을 사용하여 버퍼링된 모든 래퍼는 안전하지 않습니다. 이러한 조건은 스캐너를 사용할 때 악용될 수 있습니다.",
  "rule.sast.sw.java.3029.example.0.safe": "라인 2: System.in에 대해 하나의 BufferedInputStream을 만들고 사용해야 합니다. 여기서는 메소드를 클래스 변수로 선언하여 하나의 BufferedInputStream에 접근할 수 있도록 보장합니다.",
  "rule.sast.sw.java.3029.name": "단일 바이트 혹은 문자 스트림에 여러 개의 버퍼 래퍼 생성",
  "rule.sast.sw.java.3029.option.stream_list.description": "검출할 분석 대상을 입력합니다.",
  "rule.sast.sw.java.3029.option.stream_list.name": "분석 대상",
  "rule.sast.sw.java.3042.description": "Java 표준 라이브러리의 공용 식별자 재사용 체커는 표준 라이브러리의 공용 식별자와 동일하게 클래스나 인터페이스의 식별자를 정의하는 코드를 검출합니다.\n\"Java Language Specification (JLS)\"의 \"6.3.2, Obscured Declarations [JLS 2005]\"에 명시된 바와 같이, 커스텀 타입의 Vector는 `java.util.Vector`의 클래스 이름을 가릴(shadow) 수 있으며, 이로 인해 예상치 않은 동작이 발생할 수 있습니다. 잘 정의된 import 문은 이러한 문제를 해결할 수도 있습니다. 하지만 재사용된 이름을 다른 패키지에서 가져온 경우 `type-import-on-demand` 선언을 사용하면 프로그래머가 어떤 정의를 사용하려는 것인지 의도를 파악하기가 어려울 수 있습니다.\n또한 오류가 발생할 수 있는 일반적 관행 중 하나가 코드를 작성한 후 import 문을 생성하는 것입니다. 이 오류는 종종 IDE가 import 문을 자동으로 포함하면서 발생하기도 하는데, 이로 인해 이름과 관련해서 더 많은 모호성이 생길 수 있습니다.\n추가적으로 Java의 include 경로에 있는 타입보다 커스텀 타입이 먼저 발견되면 더 이상 검색이 수행되지 않으므로 잘못된 타입이 자동으로 채택될 수 있습니다.\n클래스나 인터페이스의 식별자를 표준 라이브러리의 공용 식별자와 동일하게 정의하지 않도록 합니다.\n식별자 리스트는 `rt.jar` 내부에서 참고할 수 있습니다.",
  "rule.sast.sw.java.3042.example.0.dangerous": "라인 1: Java 표준 라이브러리에 포함된 java.util.Vector 클래스의 이름을 재사용하는 클래스를 구현했습니다.",
  "rule.sast.sw.java.3042.example.0.safe": "라인 1: 클래스에 다른 이름을 사용하여 Java 표준 라이브러리 클래스의 이름을 가리지 않도록 합니다.",
  "rule.sast.sw.java.3042.name": "Java 표준 라이브러리의 공용 식별자 재사용",
  "rule.sast.sw.java.3046.description": "Java 런타임 오류 메시지를 통한 정보 노출 체커는 민감한 정보가 런타임 오류 메시지를 통해 노출되는 코드를 검출합니다.\n대부분의 경우 공격자는 처리되지 않은 예외 오류를 발생시키는 조건을 이용하여 시스템에 무단으로 접근할 수 있습니다.\n공격자는 런타임 오류 메시지에서 개발자가 의도하지 않은 메시지 정보를 습득하여 시스템에 무단으로 접근할 수 있습니다.\n출력되는 오류 메시지에서 파일 경로에 대한 정보가 표시되지 않도록 합니다.",
  "rule.sast.sw.java.3046.example.0.dangerous": "라인 5: linuxPath 변수에 리눅스 파일 경로가 포함되었습니다.\n라인 5: DEFAULT_FILE_PATH 변수에 윈도우 파일 경로가 포함되었습니다.\n라인 18: linuxPath 변수가 출력됩니다. 보안에 취약합니다.\n라인 19: inputFilePath 변수가 출력됩니다. 보안에 취약합니다.\n라인 20: inputFilePath 변수가 출력됩니다. 보안에 취약합니다.",
  "rule.sast.sw.java.3046.example.0.safe": "라인 18: 파일 경로가 출력되는 부분을 삭제합니다.",
  "rule.sast.sw.java.3046.name": "Java 런타임 오류 메시지를 통한 정보 노출",
  "rule.sast.sw.java.3046.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3046.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3046.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3046.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3046.option.target_pattern.description": "분석할 경로를 입력합니다",
  "rule.sast.sw.java.3046.option.target_pattern.name": "분석 경로",
  "rule.sast.sw.java.3047.description": "로그에 민감한 정보 기록 체커는 개인 식별 정보 같은 민감한 정보를 로그에 기록하는 코드를 검출합니다.\n민감한 데이터를 로그에 기록하면 개인 정보 보호, 개인 정보 수집에 대한 법률의 제한, 내부자의 데이터 노출에 대한 가능성과 같은 문제가 발생할 수 있습니다.\n로깅은 디버깅이나 사고 대응에 필수적입니다. 그럼에도 불구하고 민감한 데이터를 기록하면 개인 정보 보호, 개인 정보 수집에 대한 법률의 제한, 내부자의 데이터 노출에 대한 가능성 등 여러 가지 문제가 발생할 수 있습니다. 예를 들어, 암호화되지 않은 신용카드 번호를 로그 파일로 유출하면 PCI DSS 규정을 위반할 수 있습니다. 결과적으로, 로그에는 민감한 데이터가 포함되어 있어서는 안되며 특히 법으로 금지되어 있는 경우에는 더욱 그렇습니다. 신용 카드 번호와 같은 기타 정보는 암호화된 형식으로만 로그에 포함될 수 있으며 패스워드와 같은 정보는 절대로 기록되지 말아야 합니다.\n로그에 IP 주소, 사용자 이름 및 암호, 전자 메일 주소, 신용 카드 번호 및 사회 보장 번호와 같은 개인 식별 정보를 기록할 경우 해당 라인을 삭제합니다.",
  "rule.sast.sw.java.3047.example.0.dangerous": "라인 10: 서버에 보안 예외가 발생할 경우 원격 클라이언트의 IP 주소를 기록했습니다. 이 데이터를 이용하여 사용자의 브라우징 습관에 대한 프로필을 작성하는 등 오용될 수 있기 때문에 많은 국가에서 법적으로 제한하고 있습니다. 따라서 로그에는 IP 주소가 포함될 수 없으며 IP 주소가 누출될 수 있으므로 SecurityExcepton에 대한 정보가 없어야 합니다.\n라인 18: 기본적으로 INFO, WARNING 및 SERVER 수준은 최종 사용자 및 시스템 관리자가 접근할 수 있는 콘솔에 메시지를 출력합니다. 따라서 이 코드는 부적절한 코드입니다.",
  "rule.sast.sw.java.3047.example.0.safe": "라인 10: MyExceptionReporter에 의해 암묵적으로 실행되는 로그를 제외하고 보안 예외를 로그에 기록하지 않습니다.\n라인 24: 승객 나이 정보 passengerAge를 FINEST 수준으로 기록하여 콘솔에 표시되지 않도록 합니다. 따라서 승객의 나이 정보는 시스템 로그 파일에는 표시되지만 콘솔에는 표시되지 않습니다.",
  "rule.sast.sw.java.3047.name": "로그에 민감한 정보 기록",
  "rule.sast.sw.java.3047.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.3047.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.3047.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.3047.option.sensitive_variable.description": "민감한 변수 이름을 입력합니다.",
  "rule.sast.sw.java.3047.option.sensitive_variable.name": "민감한 변수 이름",
  "rule.sast.sw.java.3047.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.3051.description": "응답이 커밋된 서블릿의 작업 수행 체커는 서블릿의 응답이 커밋된 후 특정 동작이 수행되는 코드를 검출합니다.\n웹 서블릿이 클라이언트로부터 요청을 받으면 적절한 응답을 생성해야 합니다. 이 과정에서 Java의 HttpServlet은 HttpServletResponse 객체를 제공하여 적절한 응답을 만듭니다. 이 응답은 getOutputStream() 메소드가 제공하는 출력 스트림이나 getWriter()가 제공하는 Writer를 사용하여 생성될 수 있으며 상태 코드와 HTML 헤더가 전송된 경우 응답이 커밋됩니다. 응답이 커밋된 후에는 다른 데이터가 응답에 추가될 수 있지만 일부 동작은 실행이 불가능합니다. 예를 들어, 인코딩의 경우 HTML 헤더에 포함되어 있기 때문에 커밋된 후에는 문자 인코딩을 변경할 수 없습니다\n검출 대상 메서드는 다음과 같습니다.\njavax.servlet.http.HttpServletResponse.sendError(int)\njavax.servlet.http.HttpServletResponse.sendError(int, java.lang.String)\njavax.servlet.http.HttpServletResponse.sendRedirect(java.lang.String)\njavax.servlet.http.HttpServletResponse.setDateHeader(java.lang.String,long)\njavax.servlet.http.HttpServletResponse.setHeader(java.lang.String,java.lang.String)\njavax.servlet.http.HttpServletResponse.setIntHeader(java.lang.String,int)\njavax.servlet.http.HttpServletResponse.setStatus(int)\njavax.servlet.http.HttpServletResponse.setStatus(int,java.lang.String)\njava.io.PrintWriter.flush()\njava.io.PrintWriter.append() \njava.io.PrintWriter.format() \njava.io.PrintWriter.print() \njava.io.PrintWriter.printf() \njava.io.PrintWriter.println() \njava.io.PrintWriter.write()\njavax.servlet.ServletOutputStream.flush()\njavax.servlet.ServletOutputStream.print()\njavax.servlet.ServletOutputStream.println()\njava.io.PrintWriter.flush()나 javax.servlet.ServletOutputStream.flush() 를 호출한 후 특정 메서드를 호출하지 않도록 합니다.",
  "rule.sast.sw.java.3051.example.0.dangerous": "라인 10: 스트림에 대해서 flush() 메서드를 호출한 후에 IOException이 발생합니다. 따라서 catch 절이 실행될 때 스트림이 커밋되면서 sendError() 작업이 IllegalStateException을 발생시킵니다.\n라인 11: flush() 메서드를 호출한 후에 또다시 flush() 메서드를 호출했습니다.",
  "rule.sast.sw.java.3051.example.0.safe": "라인 6: sendError() 메소드는 출력을 겹쳐 쓸 수 있으므로 출력 스트림이나 writer가 생성되기 전에 사용해야 합니다.\n라인 13: 또한 출력 스트림 혹은 writer가 생성되면 유효한 HTML과 함께 오류가 출력되도록 합니다.\n라인 15: flush() 메소드를 finally 절에서 한 번만 호출하도록 합니다.",
  "rule.sast.sw.java.3051.name": "응답이 커밋된 서블릿의 작업 수행",
  "rule.sast.sw.java.3051.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3051.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3051.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3051.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3052.description": "Android에서 민감한 정보 로그 기록 체커는 외부에서 가져온 데이터를 로그에 출력하는 경우를 검출합니다.\nAndroid는 앱이 로그 정보를 출력하고 로그 출력 정보를 얻을 수 있는 기능을 제공합니다. 앱은 android.util.Log 클래스를 사용하여 로그 출력 정보를 내보낼 수 있습니다. 또한 애플리케이션은 logcat 명령어를 실행하여 로그 출력 정보를 얻을 수 있습니다. Android 4.0 이전에는 READ_LOGS 권한이 있는 애플리케이션의 경우 다른 모든 애플리케이션의 로그 출력을 얻을 수 있었습니다. 그러나 Android 4.1 이후에는 READ_LOGS 권한이 있는 애플리케이션이라도 다른 애플리케이션에서 로그 출력 정보를 가져올 수 없습니다. 하지만 PC에 Android 디바이스를 연결하면 다른 애플리케이션의 로그 출력을 가져올 수 있습니다. 따라서 애플리케이션은 민감한 정보를 로그에 출력하지 않도록 해야 합니다.\n\n다음 메소드에서 지정된 대상 파라미터의 값이 아래 조건을 만족하는 경우를 검출합니다\nandroid.util.Log.d(java.lang.String,java.lang.String): 2번째 파라미터\nandroid.util.Log.e(java.lang.String,java.lang.String): 2번째 파라미터\nandroid.util.Log.i(java.lang.String,java.lang.String): 2번째 파라미터\nandroid.util.Log.v(java.lang.String,java.lang.String): 2번째 파라미터\nandroid.util.Log.w(java.lang.String,java.lang.String): 2번째 파라미터\nandroid.util.Log.wtf(java.lang.String,java.lang.String): 2번째 파라미터\nandroid.util.Log.println(int,java.lang.String,java.lang.String): 3번째 파라미터\n체커 옵션에서 지정한 허용 메소드 혹은 허용 변수가 아닌 외부 데이터 값을 사용하여 로그를 출력하지 않도록 합니다.",
  "rule.sast.sw.java.3052.example.0.dangerous": "라인 2: 민감한 정보인 Facebook 액세스 토큰을 로그에 평문 형태로 출력했습니다.",
  "rule.sast.sw.java.3052.example.0.safe": "라인 1: 로그에 출력되는 정보 중 민감한 정보를 제거합니다.",
  "rule.sast.sw.java.3052.name": "Android에서 민감한 정보 로그 기록",
  "rule.sast.sw.java.3052.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3052.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3052.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3052.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3052.option.include_method.description": "로그에 반환 값의 출력을 허용할 함수 FQN을 입력합니다.",
  "rule.sast.sw.java.3052.option.include_method.name": "로그에 반환 값의 출력을 허용할 함수 FQN",
  "rule.sast.sw.java.3052.option.include_variable.description": "로그에 값 출력을 허용할 변수 이름을 입력합니다.",
  "rule.sast.sw.java.3052.option.include_variable.name": "로그에 값 출력을 허용할 변수 이름",
  "rule.sast.sw.java.3053.description": "컨텐트 프로바이더를 통한 파일 교환 전 정규화 누락 체커는 컨텐트 프로바이더를 통해 파일을 교환하기 전에 파일 이름을 정규화하지 않는 코드를 검출합니다.\n컨텐트 프로바이더 android.content.ContentProvider 클래스는 openFile() 메소드를 통해 다른 애플리케이션이 애플리케이션 데이터에 접근할 수 있는 기능을 제공합니다. 그러나 클래스의 구현에 따라 openFile() 메소드를 사용할 때 디렉토리 순회 취약점이 발생할 수 있습니다. 그러므로 컨텐트 프로바이더를 통해 파일을 교환할 때에는 파일의 경로를 사용하기 전에 정규화해야 합니다.\n컨텐트 프로바이더를 통한 파일 교환 전 File.getCanonicalPath()를 사용해서 파일의 경로를 정규화해야 합니다.",
  "rule.sast.sw.java.3053.example.0.dangerous": "라인 4: Uri.getLastPathSegment() 메소드는 내부적으로 Uri.getPathSegment()를 호출합니다. Uri.getPathSegments() 메소드는 \"/\" 분할자를 사용하여 path를 세그먼트를 나눕니다. 그러나 경로가 URL 인코딩되어 있다면 분할자 문자는 \"/\" 대신 \"%2F\" 가 되고, Uri.getLastPathSegment() 메소드는 경로의 마지막 세그먼트를 올바르게 반환하지 못할 수 있습니다.",
  "rule.sast.sw.java.3053.example.0.safe": "라인 6: 파일 객체를 만든 후 java.util.File.getCanonicalPath() 함수를 호출하여 경로를 정규화한 뒤 허용된 경로가 포함되어 있는지 확인합니다.",
  "rule.sast.sw.java.3053.name": "컨텐트 프로바이더를 통한 파일 교환 전 정규화 누락",
  "rule.sast.sw.java.3053.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3053.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3053.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3053.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3055.description": "유효성 검사 전 정규화 누락 체커는 경로에 대해 유효성을 검증하기 전에 파일 이름을 정규화하지 않은 코드를 검출합니다.\njava.io.File 클래스의 경로는 절대 경로이거나 상대 경로일 수 있습니다. 절대 경로는 파일을 찾는데 다른 정보가 필요 없다는 점에서 완전합니다. 대조적으로 상대 경로는 다른 경로 이름에서 가져온 정보의 관점에서 해석되어야 합니다. 절대 혹은 상대 경로 이름에는 기호 (소프트) 링크, 하드 링크, 바로 가기, 그림자, 별칭과 같은 파일 링크가 포함될 수 있습니다. 이러한 파일 링크는 파일의 유효성 검사 작업을 수행하기 전에 검사되어야 합니다. 또한 운영 체제 및 파일 시스템별 명명 규칙에 따라 유효성 검사가 어려울 수 있습니다. 파일 이름을 정규화하면 경로 이름을 보다 쉽게 검증할 수 있습니다. 결과적으로 유효성을 검사하기 전에 모든 경로 이름을 완전히 확인하거나 정규화해야 합니다.\n경로에 대해 유효성을 검증하기 전에 파일 이름을 정규화합니다.",
  "rule.sast.sw.java.3055.example.0.dangerous": "라인 5: 유효성 검사 후 정규화를 수행하여 검증의 효과가 없습니다.",
  "rule.sast.sw.java.3055.example.0.safe": "라인 6: 신뢰할 수 없는 사용자 입력에서 파일 이름을 가져오지만, 정규화한 뒤 허용된 안전한 경로 이름 목록을 기준으로 유효성을 검사합니다.",
  "rule.sast.sw.java.3055.name": "유효성 검사 전 정규화 누락",
  "rule.sast.sw.java.3055.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.3055.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.3055.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.3055.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.3056.description": "Geolocation API의 사용 전 사용자 권한 확인 누락 체커는 Geolocation API를 사용하여 사용자의 위치 정보를 얻을 때 사용자의 권한을 확인하지 않는 코드를 검출합니다.\nGeolocation API는 웹 브라우저가 사용자 장치의 지리적 위치 정보에 접근할 수 있도록 허용합니다. 해당 API의 사양에서는 다음과 같이 사용자 에이전트가 사용자의 허가 없이 웹사이트에 위치 정보를 전송하는 것을 금지하고 있습니다.\n\"사용자 에이전트는 사용자의 허가 없이 웹사이트에 위치 정보를 전송하면 안됩니다. 사용자 에이전트는 아래에 설명된 것처럼 사용자와의 신뢰 관계가 미리 지정되어 있지 않으면 사용자 인터페이스를 통해 허가를 받아야 합니다. 사용자 인터페이스를 통해 얻은 권한은 취소가 가능해야 하며 사용자 에이전트는 복구된 권한을 따라야 합니다. \"\n위의 내용을 준수하기 위해서는 사용자의 위치 정보를 웹사이트에 전송하기 위해서 유저 인터페이스를 통해 미리 권한을 얻어야만 합니다.\nsuper.onGeolocationPermissionsShowPrompt() 호출과 android.webkit.GeolocationPermissions.Callback.invoke() 호출 사이에 실행 가능한 코드가 존재하지 않는 경우를 검출합니다.\nsuper.onGeolocationPermissionsShowPrompt() 호출과 android.webkit.GeolocationPermissions.Callback.invoke() 호출 사이에 실행 가능한 코드를 넣어 사용자의 권한을 확인해야 합니다.",
  "rule.sast.sw.java.3056.example.0.dangerous": "라인 3: 위치 정보를 사용자의 권한 요청 없이 전달했습니다.",
  "rule.sast.sw.java.3056.example.0.safe": "라인 6: Geolocation의 사용자 설정이 활성화된 경우 사용자의 권한을 묻는 화면이 표시됩니다.",
  "rule.sast.sw.java.3056.name": "Geolocation API의 사용 전 사용자 권한 확인 누락",
  "rule.sast.sw.java.3056.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3056.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3056.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3056.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3057.description": "XML 외부 엔터티 공격 체커는 외부 엔터티에 대한 참조를 포함하는 XML 입력이 부적절하게 구성된 XML 파서에 의해 처리되는 코드를 검출합니다.\n엔터티 선언은 일반적으로 사용되는 텍스트나 특수문자에 대한 바로가기(shortcut)를 정의하며, 내부 또는 외부 엔터티를 정의할 수 있습니다. 내부 엔터티의 경우 엔터티의 내용이 선언에 제공되며, 외부 엔터티의 경우 내용이 URI(Uniform Resource Identifier)로 지정됩니다. 엔터티는 파싱될 수도 있고 되지 않을 수도 있습니다. 파싱된 엔터티의 내용은 대체 텍스트라고 부릅니다. 파싱되지 않은 엔터티는 텍스트일 수도 있고 아닐 수도 있습니다. 만약 텍스트인 경우 XML일 수도 있고 아닐 수도 있습니다.\n\n파싱된 엔터티는 엔터티 참조를 사용하여 이름으로 호출되며, 파싱되지 않은 엔터티는 이름으로 호출됩니다. \"XML W3C Recommendation, 4.4.3절, Included If Validating\" [W3C 2008]에 따르면, XML 프로세서가 파싱된 엔터티에 대한 참조를 인식하면 문서의 유효성을 검사하기 위해 프로세스는 반드시 대체 텍스트를 포함해야 합니다. 만약 엔터티가 외부이고 프로세서가 XML 문서의 유효성을 검사하려 하지 않을 경우 프로세서는 엔터티의 대체 텍스트를 포함할 수도 그렇지 않을 수도 있습니다.\n\n외부 엔터티의 대체 텍스트 포함은 선택 사항(optional)이므로, 모든 XML 프로세서가 유효성 검사 중 외부 엔터티 공격에 취약하지는 않습니다. XML 외부 엔터티(XXE, XML eXternal Entity) 공격은 외부 엔터티에 대한 참조를 포함하는 XML 입력이 부적절하게 구성된 XML 파서에 의해 처리될 때 발생합니다.\n`javax.xml.parsers.SAXParser.parse()`를 사용하지 않거나 `org.xml.sax.XMLReader.parse()`를 사용할 경우 사전에 `org.xml.sax.XMLReader.setEntityResolver()`를 호출해서 사용해야 합니다.",
  "rule.sast.sw.java.3057.example.0.dangerous": "라인 6: javax.xml.parsers.SAXParser.parse()를 호출했습니다.\n라인 12: org.xml.sax.XMLReader.setEntityResolver()를 호출하지 않고 org.xml.sax.XMLReader.parser()를 호출했습니다.",
  "rule.sast.sw.java.3057.example.0.safe": "라인 12: XMLReader.parser()를 호출하기 전에 XMLReader.setEntityResolver()를 호출하여 유효성을 검사합니다. 취약한 SAXParser.parse()를 호출하지 않습니다.",
  "rule.sast.sw.java.3057.name": "XML 외부 엔터티 공격",
  "rule.sast.sw.java.3057.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3057.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3057.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3057.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3058.description": "equals 내에서 변할 수 있는 필드 사용 체커는 객체를 비교하는 메소드를 실행할 때 변경 가능한 필드를 사용하는 코드를 검출합니다.\n일부 필드가 변경 가능(mutable)한 경우에도 java.lang.Object.equals()는 변경 불가능(immutable) 상태에서만 객체를 비교해야 합니다. 이 규칙을 위반하면 콜렉션에서 순서가 일치하지 않을 수 있습니다.\nequals() 내에서 final 필드를 사용해야 합니다.",
  "rule.sast.sw.java.3058.example.0.dangerous": "라인 20: 변경 가능한 필드 name을 사용했습니다.",
  "rule.sast.sw.java.3058.example.0.safe": "라인 17: 변경 불가능한 필드를 사용합니다.",
  "rule.sast.sw.java.3058.name": "equals 내에서 변할 수 있는 필드 사용",
  "rule.sast.sw.java.3058.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3058.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3058.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3058.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3060.description": "직렬화할 수 없는 객체의 세션 저장 체커는 직렬화할 수 없는 객체를 세션에 저장하는 코드를 검출합니다.\nJ2EE 애플리케이션은 애플리케이션 신뢰성과 성능을 향상시키기 위해 여러 가지 JVM을 사용할 수 있습니다. 다수의 JVM이 최종 사용자에게 단일 애플리케이션으로 표시되도록 하기 위해 J2EE 컨테이너는 다수의 JVM에서 javax.servlet.http.HttpSession 객체를 복제하여 각 JVM이 애플리케이션 플로우를 방해하지 않도록 조치를 취할 수 있습니다. 이는 모든 세션 데이터를 직렬화하고 JVM 간에 세션을 복제할 수 있는 경우에만 가능합니다.\n아래 두 메서드의 두 번째 인자의 타입이 java.io.Serializable 인터페이스를 상속 받지 않는 경우를 검출합니다.\n`javax.servlet.http.HttpSession.setAttribute(java.lang.String,java.lang.Object)`\n`javax.servlet.http.HttpSession.putValue(java.lang.String,java.lang.Object)`\n직렬화 대상 객체의 타입이 java.io.Serializable 인터페이스를 상속 받도록 합니다.",
  "rule.sast.sw.java.3060.example.0.dangerous": "라인 5: 직렬화할 수 없는 DataGlob 객체인 this를 javax.servlet.http.HttpSession 객체에 저장했습니다.",
  "rule.sast.sw.java.3060.example.0.safe": "라인 1: 세션에 저장되는 객체는 반드시 직렬화할 수 있어야 합니다.",
  "rule.sast.sw.java.3060.name": "직렬화할 수 없는 객체의 세션 저장",
  "rule.sast.sw.java.3060.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3060.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3060.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3060.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3064.description": "래핑되지 않은 네이티브 메소드 체커는 네이티브 메소드의 접근 제한자가 private로 선언된 경우 래퍼 메소드를 거치지 않고 직접 호출되는 코드를 검출합니다.\n네이티브 메소드는 C와 C++ 언어로 작성되며 Java 코드 내에 정의됩니다. 이러한 확장을 통해 네이티브 메소드 코드는 Java에만 종속적이지 않고 유연성과 이식성을 갖습니다. 네이티브 메소드는 플랫폼에 관련된 작업을 수행하고, 기존 라이브러리 코드와의 인터페이스 및 프로그램 성능을 향상시키기 위해 사용됩니다. 네이티브 메소드의 래퍼(wrapper) 메소드를 정의하면, 네이티브 코드로 전달된 인수를 확인하고, 반환 값의 유효성을 검사하고, 가변 입력에 대해 방어적인 복사(defensive copy) 및 신뢰할 수 없는 데이터 필터링을 수행할 수 있습니다. 래퍼 메소드를 사용하기 위해 모든 네이티브 메소드는 private 이어야 하며 반드시 래퍼 메소드에 의해서만 호출되어야 합니다.\n이 체커는 다음 두가지 경우를 검출합니다.\n1: native 제한자를 사용하여 선언된 메소드 중 private 제한자가 사용되지 않은 선언을 검출합니다.\n2: public 제한자로 선언된 메소드 중 다음 조건을 모두 만족하는 메소드 선언을 검출합니다.\n 1) 동일한 객체에 native 제한자로 선언된 메소드 N이 존재합니다.\n 2) 메소드 내에서 메소드 N을 호출하는 구문 F가 존재합니다.\n 3) 모든 실행 경로에서 구문 F가 실행됩니다.\nprivate인 native 메서드를 선언하고, native 메서드를 호출하기 전에 조건문으로 보안 검사를 수행하도록 합니다.",
  "rule.sast.sw.java.3064.example.0.dangerous": "라인 3: native인 nativeOperation() 메소드를 public으로 선언했습니다. 따라서 신뢰할 수 없는 호출자가 해당 메소드를 호출할 수 있습니다.\n라인 6: nativeOperation() 메소드를 호출할 때 입력값을 검증하거나 보안 검사를 수행하지 않았습니다.",
  "rule.sast.sw.java.3064.example.0.safe": "라인 3: nativeOperation() 메소드를 private으로 선언합니다.\n라인 17: nativeOperation() 메소드를 호출하기 전에 인자의 범위를 검사하고 유효성 검사를 수행하여 안전한 입력값을 전달하게 합니다.",
  "rule.sast.sw.java.3064.name": "래핑되지 않은 네이티브 메소드",
  "rule.sast.sw.java.3064.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3064.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3064.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3064.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3065.description": "신뢰할 수 없는 출처에 대한 보안 검사 체커는 신뢰할 수 없는 출처의 객체나 인수를 복사하지 않고 바로 보안 검사를 수행하는 코드를 검출합니다.\n신뢰할 수 없는 객체 혹은 인수의 경우 보안 검사를 수행하기 전에 복사해야 합니다. 복사 작업은 깊은 복사(deep copy)여야 합니다. 특히 clone() 메소드를 이용하면 얕은 복사가 이루어질 수 있으며, 또한 clone() 메소드 자체가 공격자에 의해 제공될 수 있습니다. 검출 대상과 검출 규칙은 다음과 같습니다.\n\n검출 대상\njava.security.AccessController.doPrivileged()의 인자\njava.security.AccessController.doPrivilegedWithCombiner()의 인자\n\n검출 규칙\n1) 대상 메서드 파라미터 내에 클래스 타입이 final이 아니라 PARAM인 객체를 참조하면 경우\n2) 클래스 타입이 final이고 PARAM인 객체를 clone()하여 생성한 객체 P가 대상 메서드의 파라미터로 사용되는 경우\n파라미터로 넘어온 final이 아닌 타입의 변수를 대상 메서드에서 사용하지 않도록 합니다. 또한 해당 변수의 clone()를 통해 객체를 복사한 후 복사한 객체를 doPrivileged 나 doPrivilegedWithCombiner 함수에서 사용하지 않도록 합니다.",
  "rule.sast.sw.java.3065.example.0.dangerous": "라인 2: java.io.File 객체에 final 한정자가 포함되지 않았습니다. 따라서 공격자가 클래스를 확장하여 신뢰할 수 없는 인수를 제공할 수 있습니다. 공격자가 보안 검사에 사용된 java.io.File.getPath() 메소드를 재정의하면 보안 검사가 처음 호출될 때 통과하지만 두 번째에는 값을 변경하여 중요 파일을 참조하도록 할 수 있습니다.",
  "rule.sast.sw.java.3065.example.0.safe": "라인 2: java.io.File 객체가 final 객체가 아니더라도 표준 생성자를 이용하여 새 java.io.File 객체를 만들어 깊은 복사를 수행합니다.",
  "rule.sast.sw.java.3065.name": "신뢰할 수 없는 출처에 대한 보안 검사",
  "rule.sast.sw.java.3065.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3065.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3065.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3065.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3116.description": "취약한 XML 파서(parser)가 외부 값을 참조하는 XML 값을 처리할 때, 공격자가 삽입한 공격 구문이 동작되어 서버 파일 접근, 불필요한 자원 사용, 인증 우회, 정보 노출 등이 발생할 수 있습니다.\n서버에서 XML 외부 엔터티를 처리할 수 있도록 설정된 경우에 발생합니다.\nXML 파서가 doctype을 정의하지 못하도록 설정하고, 외부 일반 엔터티와 외부 파라미터를 포함하지 않도록 설정합니다. 추가로 외부 DTD를 비활성화하고 함수별로 XInclude를 사용하지 않거나 생성된 파서가 엔터티 참조 노드를 확장하지 않도록 하는 등의 설정을 해줘야 합니다.",
  "rule.sast.sw.java.3116.example.0.dangerous": "라인 1: 외부개체 참조 제한 설정 없이 사용되는 A가 선언되었으므로 위험합니다.",
  "rule.sast.sw.java.3116.example.0.safe": "라인 2-8: 라인 1에 DOCTYPE 선언 및 외부 엔터티 선언을 비활성화하고, 외부 엔터티에 의한 프로토콜을 사용하지 않도록 금지하며, 엔터티 확장을 비활성화하도록 설정하므로 안전합니다.",
  "rule.sast.sw.java.3116.name": "부적절한 XML 외부 개체 참조",
  "rule.sast.sw.java.3117.description": "직렬화(Serialization)는 인스턴스 정보를 바이트 스트림으로 복사하는 작업으로, 메모리 상에서 실행되고 있는 객체의 상태를 그대로 복제하여 파일로 저장하거나 수신 측에 전달합니다.\n역직렬화(Deserialization)는 반대 연산으로 바이너리 파일이나 바이트 스트림으로부터 객체 구조로 복원합니다. 이 때, 송신자가 네트워크를 이용하여 직렬화된 정보를 수신자에게 전달하는 과정에서 공격자가 전송 또는 저장된 스트림을 조작할 수 있는 경우에는 신뢰할 수 없는 역직렬화를 이용하여 무결성 침해, 원격 코드 실행, 서비스 거부 공격 등이 발생할 수 있는 보안약점입니다.\n초기화되지 않은 스택 메모리 영역의 변수는 임의의 값이라 생각해서 대수롭지 않게 생각할 수 있지만 이전 함수에서 사용되었던 내용을 포함하고 있습니다. 공격자는 이러한 약점을 사용하여 메모리에 저장되어 있는 값을 읽거나 특정 코드를 실행할 수 있습니다.\n`ObjectInputStream`을 상속 받아 `WhitelistedObjectInputStream` 객체를 구현합니다. `WhitelistedObjectInputStream`에서는 `readObject()`를 실행할 경우 `resolveClass` 함수를 호출하여 설정한 화이트리스트와 비교하고 리스트에 없는 데이터에 대해 예외를 발생시킵니다.",
  "rule.sast.sw.java.3117.example.0.dangerous": "라인 7: 바이트 배열의 입력 값을 검증 없이 readObject()로 역직렬화하여 악의적인 코드가 실행될 수 있습니다.",
  "rule.sast.sw.java.3117.example.0.safe": "라인 29: 화이트리스트를 확인한 후 역직렬화를 수행하므로 안전합니다.",
  "rule.sast.sw.java.3117.name": "신뢰할 수 없는 데이터의 역직렬화",
  "rule.sast.sw.java.3117.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.ex).*Print",
  "rule.sast.sw.java.3117.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.3117.option.exclude_path.description": "분석에서 제외할 경로를 입력합니다 ex).*\\test\\.*",
  "rule.sast.sw.java.3117.option.exclude_path.name": "분석 제외 경로",
  "rule.sast.sw.java.3270.description": "웹 프로그램의 정보 혹은 소스코드 등 중요한 정보를 주석문에 저장하는 경우 해커가 프로그램의 구조를 이해하여 숨겨진 페이지를 노출하는 등의 공격이 가능합니다.\nJSP에서는 두 종류의 주석문을 사용할 수 있습니다. `<!-- -->`와 같은 형태의 HTML 주석문을 사용할 경우 페이지 소스 보기에서 주석의 내용이 그대로 노출됩니다. 외부로 노출되면 안되는 정보를 주석문에 저장해야 한다면 소스 보기에서 유출되지 않는 `<%-- --%>`와 같은 형태의 JSP 주석문을 사용해야 합니다.",
  "rule.sast.sw.java.3270.example.0.dangerous": "라인 1: HTML 주석문을 사용하여 정보가 노출될 수 있습니다.",
  "rule.sast.sw.java.3270.example.0.safe": "라인 1: JSP 주석문을 사용하여 페이지 소스 보기에서 내용이 노출되지 않습니다.",
  "rule.sast.sw.java.3270.name": "주석문 안에 포함된 주요정보",
  "rule.sast.sw.java.3270.option.exclude_dir.description": "검출 제외 폴더 경로를 glob 패턴을 사용하여 입력합니다.<br />예시) src/java/**/core/**",
  "rule.sast.sw.java.3270.option.exclude_dir.name": "제외 폴더 경로",
  "rule.sast.sw.java.3270.option.exclude_extension.description": "검출 제외 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.sw.java.3270.option.exclude_extension.name": "제외 파일 확장자",
  "rule.sast.sw.java.3270.option.rule.description": "검출 규칙을 정규식을 사용하여 지정합니다.",
  "rule.sast.sw.java.3270.option.rule.name": "검출 규칙",
  "rule.sast.sw.java.3270.option.target_dir.description": "분석 대상 폴더 경로를 glob 패턴을 사용하여 입력합니다.<br />예시) src/java/**/core/**",
  "rule.sast.sw.java.3270.option.target_dir.name": "분석 대상 폴더",
  "rule.sast.sw.java.3270.option.target_extension.description": "분석 대상 확장자를 입력합니다.<br />예시) html",
  "rule.sast.sw.java.3270.option.target_extension.name": "분석 대상 확장자",
  "rule.sast.sw.java.398.description": "안전하지 않은 JNI의 직접 사용 체커는 다른 언어로 작성된 프로그램을 JNI를 통해 사용하는 경우를 검출합니다.\nnative 변경자를 사용하여 정의된 메소드는 안전을 위해 무조건 취약할 수 있다고 판정합니다.\n다른 언어로 작성된 프로그램을 JNI를 통해 사용할 경우 해당 언어에 대한 취약성 검증을 별도로 수행해야 하며, 이런 점을 경고하기 위해 네이티브 변경자 사용을 일단 취약한 것으로 간주하는 것입니다. 다른 언어로 작성된 루틴에 대해 취약점 검증을 별도로 수행하지 않았을 때 해당 루틴 내에 취약점이 존재하면 그 취약점이 그대로 JNI를 사용한 Java 클래스에도 존재하는 셈이 됩니다.\nJNI 사용을 최대한 자제합니다. JNI를 반드시 써야할 경우 다른 언어로 작성된 프로그램에 대해서도 검증해야 하고, 다른 언어로 작성된 부분과 이를 JNI를 통해 호출하는 Java 프로그램 부분간의 상호작용으로 인해 발생할 수 있는 취약점에 대해서도 검증해야 합니다.",
  "rule.sast.sw.java.398.example.0.dangerous": "라인 2: 네이티브 변경자로 정의된 메소드를 사용했습니다.",
  "rule.sast.sw.java.398.example.0.safe": "라인 2: 안전하지 않은 JNI를 직접 사용하지 않습니다.",
  "rule.sast.sw.java.398.name": "안전하지 않은 JNI의 직접 사용",
  "rule.sast.sw.java.399.description": "하드코드된 사용자 이름과 비밀번호 체커는 사용자 이름과 비밀번호 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.\njava.sql.DriverManager.getConnection() 메소드의 사용자 이름과 암호에 해당하는 매개 변수가 검사 대상입니다.\n프로그램 코드 내부에 하드코딩된 비밀번호를 포함하고 이를 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 관리자 정보가 노출될 수 있으므로 위험합니다.\n별도의 공간에 비밀번호를 암호화하여 저장해두고 이를 읽고 복호화하여 사용하는 것이 좋습니다.",
  "rule.sast.sw.java.399.example.0.dangerous": "라인 3: java.sql.DriverManager.getConnection() 함수의 비밀번호 인자에 상수 문자열을 입력했습니다.",
  "rule.sast.sw.java.399.example.0.safe": "라인 2: 상수 문자열 대신 변수를 사용합니다.",
  "rule.sast.sw.java.399.name": "하드코드된 사용자 이름과 비밀번호",
  "rule.sast.sw.java.399.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.399.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.399.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.399.option.properties_password_expr.description": "Properties에 비밀번호 키로 사용될 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.java.399.option.properties_password_expr.name": "Properties 비밀번호 키 문자열",
  "rule.sast.sw.java.399.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.400.description": "불충분한 세션 만료 체커는 HttpSession.setMaxInactiveInterval()의 인자로 -1이 전달되는 경우를 검출합니다.\nHttpSession.setMaxInactiveInterval() 메소드의 인자로 -1이 전달되면 세션 유지 시간이 무제한으로 설정됩니다. 공용 기기에서 세션이 너무 오래 유지되면 의도하지 않게 다음 사용자에게 이전 사용자의 정보가 노출되는 등의 위험이 발생할 수 있습니다.\n세션의 만료시간을 정해줄 때에는 적당한 양수를 사용하여 일정 시간이 흐르면 세션이 종료되도록 해야 합니다.",
  "rule.sast.sw.java.400.example.0.dangerous": "라인 5: setMaxInactiveInterval() 메소드의 인자로 -1이 전달되어 세션 만료 시간이 무제한으로 설정되었습니다.",
  "rule.sast.sw.java.400.example.0.safe": "라인 5: 적당한 양수로 세션 만료 시간을 지정합니다.",
  "rule.sast.sw.java.400.name": "불충분한 세션 만료",
  "rule.sast.sw.java.400.option.min_session_timeout.description": "세션 객체의 최소 timeout 시간, 초 단위",
  "rule.sast.sw.java.400.option.min_session_timeout.name": "세션 객체의 최소 timeout 시간 (단위: 초)",
  "rule.sast.sw.java.400.option.session_class.description": "세션 객체를 의미하는 클래스",
  "rule.sast.sw.java.400.option.session_class.name": "세션 객체를 의미하는 클래스",
  "rule.sast.sw.java.400.option.session_method.description": "세션 객체가 세션 timeout 설정을 위해 호출하는 메소드 (예: setMaxInactiveInterval)",
  "rule.sast.sw.java.400.option.session_method.name": "세션 객체가 세션 timeout 설정을 위해 호출하는 메소드",
  "rule.sast.sw.java.401.description": "안전하지 않은 직접 객체 참조 체커는 적재할 라이브러리 파일을 상대 경로로 지정할 경우를 검출합니다.\n프로세스를 생성하는 다음의 메소드 java.lang.Runtime.load(), java.lang.Runtime.loadLibrary(), java.lang.System.load(), java.lang.System.loadLibrary()에 절대 경로가 아닌 문자열이 전달되는 것이 확인되면 위험한 것으로 간주합니다.\n적절한 권한 설정을 통해 변조를 방지할 수 있는 라이브러리 파일만 로드해야 합니다. 절대 경로를 사용하면 시스템의 안전한 경로를 정확히 지정할 수 있지만 상대 경로를 사용할 경우에는 경로나 파일의 변조 위험이 있을 것으로 판단합니다. 이 경우 공격자가 자신의 코드를 프로그램에 삽입할 수도 있습니다.\n해당 메소드의 인자로는 절대 경로만을 전달합니다.",
  "rule.sast.sw.java.401.example.0.dangerous": "라인 1: 상대 경로를 사용하여 실행 코드를 메모리에 올리면 위험할 수 있습니다.",
  "rule.sast.sw.java.401.example.0.safe": "라인 1: 절대 경로를 사용해 메모리에 올릴 라이브러리를 명확하게 지정합니다.",
  "rule.sast.sw.java.401.name": "안전하지 않은 직접 객체 참조",
  "rule.sast.sw.java.402.description": "동적 클래스 로딩 사용 체커는 java.lang.Class.forName() 메소드 호출을 검출합니다.\n해당 메소드를 호출하여 클래스를 동적으로 로드하면 악의적인 코드가 삽입될 위험이 있습니다. 꼭 필요한 경우가 맞는지 한 번 더 확인할 수 있도록 동적으로 코드를 로드하는 것을 위험한 행동으로 간주합니다.\n꼭 필요한 경우가 맞는지 한 번 더 확인하고 다른 방법이 없는지 생각해봅니다. 정적으로 로드할 수 있는 클래스라면 클래스의 이름 뒤에 .class를 붙여서 같은 효과를 얻을 수 있을 것입니다. 꼭 필요한 경우로 판단되면 공격당할 위험성을 충분히 고려하여 방어적으로 코드를 작성하고 문서화를 잘 해두도록 합니다.",
  "rule.sast.sw.java.402.example.0.dangerous": "라인 5: 동적으로 로드되는 클래스는 악성 코드일 수 있습니다.",
  "rule.sast.sw.java.402.example.0.safe": "라인 3: 가급적이면 동적 로딩을 사용하지 않습니다.",
  "rule.sast.sw.java.402.name": "동적 클래스 로딩 사용",
  "rule.sast.sw.java.403.description": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 암호화 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.java.403.example.0.dangerous": "라인 8: 취약한 DES 알고리즘으로 암호화를 수행합니다.",
  "rule.sast.sw.java.403.example.0.safe": "라인 8: 안전하다고 알려진 AES 알고리즘을 사용합니다.",
  "rule.sast.sw.java.403.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.java.403.option.variable_name_for_password.description": "비밀번호가 포함된 변수를 입력합니다.<br />예시) password",
  "rule.sast.sw.java.403.option.variable_name_for_password.name": "비밀번호를 나타내는 변수 이름",
  "rule.sast.sw.java.403.option.weak_algorithm.description": "취약한 암호화 알고리즘을 입력합니다.<br />예시) DES",
  "rule.sast.sw.java.403.option.weak_algorithm.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.java.403.option.weak_class.description": "취약하다고 간주되는 암호화 클래스들",
  "rule.sast.sw.java.403.option.weak_class.name": "취약한 클래스들",
  "rule.sast.sw.java.403.option.weak_method.description": "취약하다고 간주되는 암호화 메소드들",
  "rule.sast.sw.java.403.option.weak_method.name": "취약한 메소드들",
  "rule.sast.sw.java.408.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n데이터베이스(DB)와 연동된 웹 애플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nPreparedStatement 객체 등을 사용하여 DB에 컴파일된 쿼리문(상수)을 전달하는 방법을 사용합니다. PreparedStatement를 사용하면 DB 쿼리에 사용되는 외부 입력값에 대한 특수문자 및 쿼리 예약어를 필터링할 수 있습니다.",
  "rule.sast.sw.java.408.example.0.dangerous": "라인 3: 외부에서 입력된 값 request.getParameter(\"customerName\")이 적절한 검증 없이 query에 포함됩니다.\n라인 6: query가 statement.executeQuery()의 인자로 전달됩니다. 이를 통해 공격자가 데이터베이스에 명령을 수행할 수 있습니다.",
  "rule.sast.sw.java.408.example.0.safe": "라인 5: 공격자가 SQL 명령을 삽입하더라도 preparedStatement()가 쿼리의 목적을 변경하는 것을 방지합니다.",
  "rule.sast.sw.java.408.name": "SQL 삽입",
  "rule.sast.sw.java.408.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.408.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.408.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.408.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.421.description": "public 메소드에 의해 반환된 private 컬렉션 체커는 private이 아닌 메소드에서 private으로 선언된 배열 또는 컬렉션 타입 필드의 객체가 그대로 반환되는 경우를 검출합니다.\nprivate으로 선언된 컬렉션 객체를 public 메소드에서 그대로 반환하면 객체 주소 값이 외부로 공개되어 외부에서 임의로 내용 수정이 가능해집니다.\nprivate로 선언된 컬렉션 객체를 public 메소드를 통해서 통째로 반환하지 않도록 합니다. 필요한 경우 복사본을 생성하여 반환하거나 접근 및 수정을 제어하는 별도의 public 메소드를 선언하여 사용해야 합니다.",
  "rule.sast.sw.java.421.example.0.dangerous": "라인 3: 필드 변수 colors가 private으로 선언되어 있습니다.\n라인 4: getColors() 메소드에서 private 필드를 그대로 반환합니다.\n라인 15: 클래스 외부에서 private 필드인 colors를 마음대로 조작할 수 있습니다.",
  "rule.sast.sw.java.421.example.0.safe": "라인 7: colors의 복사본을 만들어 반환하면 colors를 외부에서 조작하는 것을 방지할 수 있습니다.",
  "rule.sast.sw.java.421.name": "public 메소드에 의해 반환된 private 컬렉션",
  "rule.sast.sw.java.421.option.check_array_only.description": "옵션을 사용하는 경우 private 배열만 검사합니다.",
  "rule.sast.sw.java.421.option.check_array_only.name": "배열만 대상 여부",
  "rule.sast.sw.java.421.option.excluded_class.description": "이슈 검출 없이 검사에서 제외할 클래스 이름을 입력합니다<br />예시) .*Dto",
  "rule.sast.sw.java.421.option.excluded_class.name": "제외 클래스",
  "rule.sast.sw.java.421.option.excluded_method.description": "이슈 검출 없이 검사에서 제외할 메소드 이름을 입력합니다.<br />예시) .*Dto",
  "rule.sast.sw.java.421.option.excluded_method.name": "제외 메소드",
  "rule.sast.sw.java.421.option.excluded_package.description": "이슈 검출 없이 검사에서 제외할 패키지 이름을 입력합니다.<br />예시) .*dto",
  "rule.sast.sw.java.421.option.excluded_package.name": "제외 패키지",
  "rule.sast.sw.java.5.description": "파일, 프로그램, 라이브러리, 코드와 관련하여 전자서명에 대한 유효성 검증이 적절하지 않아 공격자의 악의적인 코드가 실행될 위험이 있는 보안약점입니다.\nJarFile을 사용할 때는 전자서명을 확인하여 유효성 검증을 진행해야 안전합니다.\nJarFile()의 두 번째 파라미터에 true 값을 사용하여 전자서명을 검증합니다. JarFile(file, true)를 통해 전자서명여부를 확인한 후, JarEntry.getCodeSigners() 메소드를 사용하여 JAR 객체에 대한 전자서명 주체를 신뢰할 수 있는지 확인합니다.",
  "rule.sast.sw.java.5.example.0.dangerous": "라인 2: 다운받은 JarFile을 검증 없이 사용하므로 악성 코드가 삽입될 수 있습니다.",
  "rule.sast.sw.java.5.example.0.safe": "라인 2: JarFile 생성자에 boolean형 파라미터를 사용하여 전자서명을 확인합니다.\n라인 9: JarEntry.getCodeSigners() 메소드를 사용하여 JAR 객체에 대한 전자서명 주체를 신뢰할 수 있는지 확인합니다.",
  "rule.sast.sw.java.5.name": "부적절한 전자서명 확인",
  "rule.sast.sw.java.6.description": "파일, 프로그램, 라이브러리, 코드의 전자서명에 대한 유효성 검증이 적절하지 않아 공격자의 악의적인 코드가 실행 가능한 보안약점입니다.\nJWT를 사용할 때는 parseClaimsJws(token) 등을 통해 전자서명을 확인하여 유효성 검증을 진행해야 합니다.\n전자서명을 포함한 JWT를 생성하고 검증하는 메소드를 사용합니다. Jwts.builder()에는 signWith(), JWT.create()에는 sign()을 사용하여 서명합니다. Jwts.parser()에는 parseClaimsJws(token)를 사용하고 JWT.require(A)에 파라미터로 Algorithm.HMAC256(SECRET_KEY)와 같은 값을 사용하여 검증합니다.",
  "rule.sast.sw.java.6.example.0.dangerous": "라인 2: 전자서명을 하지 않고 JWT를 생성하여 위험합니다.\n라인 3: parse(token)는 전자서명을 검증하지 않아 공격자가 악의적으로 활용할 수 있는 문제가 생깁니다.",
  "rule.sast.sw.java.6.example.0.safe": "라인 2: signWith(key)를 통해 JWT를 서명하여 생성합니다.\n라인 3: parseClaimsJws(token)을 통해 JWT서명을 검증합니다.",
  "rule.sast.sw.java.6.name": "부적절한 전자서명 확인(JWT)",
  "rule.sast.sw.java.6466.description": "사용자 정의 에러 페이지가 누락되면 기본 에러 페이지가 사용자에게 표시됩니다. 기본 에러 페이지는 서버의 내부 정보를 포함할 수 있고, 이는 공격자에게 유용한 정보를 제공할 수 있습니다.\n404, 500 등 주요 HTTP 오류 코드에 대해 사용자 정의 에러 페이지를 생성하여 설정합니다.",
  "rule.sast.sw.java.6466.example.0.dangerous": "라인 1: web.xml 파일에서 error-page 설정이 없어 위험합니다.",
  "rule.sast.sw.java.6466.example.0.safe": "라인 7-18: web.xml 파일에서 error-page 설정이 추가되었으므로 안전합니다.",
  "rule.sast.sw.java.6466.name": "누락된 J2EE 오류페이지 설정",
  "rule.sast.sw.java.6467.description": "Struts2 프레임워크를 사용하는 웹 애플리케이션에서 기본적으로 유효성 검사 인터셉터가 활성화되어 있습니다. 그러나 개발자가 유효성 검사를 비활성화하거나 특정 메서드에서 제외하면, 사용자 입력에 대한 검증이 이루어지지 않아 악의적인 입력이 시스템에 전달될 수 있습니다.\n유효성 검사를 비활성화하지 않고, 필요한 모든 입력에 대해 적절한 검증 로직을 구현합니다.",
  "rule.sast.sw.java.6467.example.0.dangerous": "라인 14: action 태그 내의 유효성 검사를 비활성화했기 때문에 위험합니다.",
  "rule.sast.sw.java.6467.example.0.safe": "라인 12: action 태그 내의 유효성 검사가 활성화되었기 때문에 안전합니다.",
  "rule.sast.sw.java.6467.name": "비활성화된 Struts 유효성 검사",
  "rule.sast.sw.java.6468.description": "Struts2 프레임워크를 사용하는 웹 애플리케이션에서 유효성 검사가 설정된 폼 필드가 자바 클래스에 정의된 폼 필드와 일치하지 않을 경우, 올바른 유효성 검사가 이루어지지 않습니다.\nStruts 설정 파일(*-validation.xml)과 자바 클래스에서 정의된 모든 폼 필드가 일치하는지 확인하고, 필요할 경우 추가하거나 제거하여 일관성을 유지해야 합니다.",
  "rule.sast.sw.java.6468.example.0.dangerous": "라인 13: validation.xml 파일 내에 Java 파일에 선언되지 않은 field name이 존재하므로 위험합니다.",
  "rule.sast.sw.java.6468.example.0.safe": "라인 3-17: validation.xml 파일과 자바 파일의 field name이 모두 일치하여 안전합니다.",
  "rule.sast.sw.java.6468.name": "유효성 검사와 폼 필드 불일치",
  "rule.sast.sw.java.6469.description": "리플렉션(Reflection) 기능을 사용할 때 외부로부터 입력받은 데이터를 사용하여 클래스나 메서드를 동적으로 선택하고 실행할 때 발생합니다. 이러한 방식은 공격자가 악의적인 데이터를 입력하여 원하지 않는 코드를 실행하거나, 시스템을 제어할 수 있게 만듭니다.\n외부 입력을 사용하여 클래스나 메서드를 선택할 때는 신뢰할 수 있는 입력만 사용하도록 하고, 입력 값을 검증하거나 화이트리스트를 사용하여 허용된 값만 처리하도록 합니다.",
  "rule.sast.sw.java.6469.example.0.dangerous": "라인 4: 리플렉션 메소드에 파라미터로 외부 입력값이 포함되어 있으므로 위험합니다.",
  "rule.sast.sw.java.6469.example.0.safe": "라인 3: 리플렉션 메소드에 파라미터로 내부 문자열이 사용되어 안전합니다.",
  "rule.sast.sw.java.6469.name": "불안전한 리플렉션 입력 검증",
  "rule.sast.sw.java.6469.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.6469.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.6469.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.6469.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.6470.description": "다중 스레드 환경에서 static 변수와 같은 공유 자원에 대한 비동기화된 접근으로 인해 발생합니다. 비동기화되지 않은 접근은 데이터 경합(race condition)을 유발하여 예기치 않은 동작, 데이터 손상, 보안 취약점 등을 초래할 수 있습니다.\n공유 자원에 접근할 때는 동기화(synchronization)를 사용하여 여러 스레드가 동시에 접근하지 않도록 합니다. Java에서는 synchronized, ReentrantLock 클래스 등을 사용하여 동기화를 구현할 수 있습니다.",
  "rule.sast.sw.java.6470.example.0.dangerous": "라인 4: 동기화 없이 공유 자원에 동시에 접근할 수 있으므로 위험합니다.",
  "rule.sast.sw.java.6470.example.0.safe": "라인 4: 공유 자원에 대한 동기화를 진행하여 안전합니다.",
  "rule.sast.sw.java.6470.name": "공유 데이터에 대한 비동기화된 접근",
  "rule.sast.sw.java.6471.description": "EJB 컨테이너는 특정 클래스 로딩 규칙을 준수하여 애플리케이션의 안정성과 보안을 보장합니다. 그러나 개발자가 직접 클래스 로더를 사용하여 클래스를 로드하면, 이는 컨테이너의 클래스 로딩 규칙을 우회하게 되어 보안 취약점을 초래할 수 있습니다.\nEJB 애플리케이션에서는 직접적으로 클래스 로더를 사용하지 않도록 합니다.",
  "rule.sast.sw.java.6471.example.0.dangerous": "라인 6, 8: EJB 환경에서 클래스 로더를 직접 사용하여 위험합니다.",
  "rule.sast.sw.java.6471.example.0.safe": "라인 4-13: EJB 환경에서 클래스 로더를 사용하지 않아 안전합니다.",
  "rule.sast.sw.java.6471.name": "EJB 환경에서 클래스 로더 사용",
  "rule.sast.sw.java.6472.description": "finalize()는 가비지 컬렉터에 의해 호출되는 메서드로, 주로 객체가 소멸될 때 리소스를 정리하기 위해 사용됩니다. finalize()는 protected로 선언되어야 합니다. public으로 선언된 경우, 외부에서 임의로 호출할 수 있어 객체를 불안정하게 하고, 예기치 않은 오류를 발생시킬 수 있습니다.\nfinalize()는 protected로 선언하여 외부에서 접근할 수 없도록 해야 합니다. JDK 9 버전부터는 finalize()가 deprecated되었으므로, 사용을 권장하지 않습니다.",
  "rule.sast.sw.java.6472.example.0.dangerous": "라인 4: finalize()가 public으로 선언되어 있어 위험합니다.",
  "rule.sast.sw.java.6472.example.0.safe": "라인 3: finalize()가 protected로 선언되어 있어 안전합니다.",
  "rule.sast.sw.java.6472.name": "public으로 선언된 finalize()",
  "rule.sast.sw.java.6473.description": "직렬화되지 않은 객체를 저장하려 하면 NotSerializableException 예외가 발생하여 데이터 손실 및 시스템 충돌이 발생할 수 있습니다.\n직렬화되지 않은 객체를 사용하는 주요 메서드 호출 시, 객체가 Serializable을 구현하도록 수정합니다.",
  "rule.sast.sw.java.6473.example.0.dangerous": "라인 23: 직렬화할 수 없는 객체를 저장했기 때문에 위험합니다.",
  "rule.sast.sw.java.6473.example.0.safe": "라인 23: 직렬화가 가능한 객체를 저장했기 때문에 안전합니다.",
  "rule.sast.sw.java.6473.name": "직렬화할 수 없는 객체 저장",
  "rule.sast.sw.java.6474.description": "Apache Struts 2에서 ActionSupport 클래스는 액션 클래스의 기본 클래스로, 폼 데이터를 캡슐화하고 유효성을 검사하는 데 사용됩니다. ActionSupport 클래스의 필드는 일반적으로 private으로 선언하여 데이터의 무결성과 캡슐화를 유지해야 합니다. public 필드를 사용하면 데이터 유출 및 무결성 문제가 발생할 수 있습니다.\nActionSupport 클래스의 모든 필드는 private으로 선언하고, 접근자(getter) 및 설정자(setter) 메서드를 통해 필드에 접근해야 합니다.",
  "rule.sast.sw.java.6474.example.0.dangerous": "라인 4: ActionSupport 내에 public 필드를 선언할 경우, getter 함수가 없어도 데이터가 유출될 수 있어 위험합니다.",
  "rule.sast.sw.java.6474.example.0.safe": "라인 4-5: ActionSupport 내에 private 필드를 선언하여 안전합니다.",
  "rule.sast.sw.java.6474.name": "ActionSupport에서 public 필드 사용",
  "rule.sast.sw.java.6475.description": "오토박싱과 언박싱은 기본형 데이터를 래퍼 클래스 객체로 변환하거나 그 반대로 변환하는 과정을 의미합니다. 기본형 데이터를 객체로 변환하는 오토박싱 과정에서 새로운 객체가 생성되고, 이 객체는 힙 메모리에 저장됩니다. 이는 가비지 컬렉터의 부담을 증가시키고, 메모리 사용량을 늘리게 됩니다. 특히 반복문에서 오토박싱이나 언박싱이 일어나면, 반복 횟수만큼 객체가 생성되어 메모리 사용량이 증가하고 성능 저하를 유발할 수 있습니다.\n반복문 내에서는 Long, Integer와 같은 래퍼 클래스 대신 long, int와 같은 기본형을 사용하여 성능 저하를 방지합니다.",
  "rule.sast.sw.java.6475.example.0.dangerous": "라인 3: 반복문 내의 래퍼 클래스 사용으로 인해 오토박싱과 언박싱이 발생할 수 있습니다.",
  "rule.sast.sw.java.6475.example.0.safe": "라인 3: 반복문 내에 래퍼 클래스를 사용하지 않아 안전합니다.",
  "rule.sast.sw.java.6475.name": "반복문 내 잘못된 오토박싱 및 언박싱",
  "rule.sast.sw.java.6476.description": "비트 시프트 연산을 수행할 때, 시프트할 비트 수가 0에서 31 사이가 아닌 경우 잘못된 연산이 발생할 수 있습니다.\n시프트할 비트 수가 0 이상 31 이하인지 확인합니다.",
  "rule.sast.sw.java.6476.example.0.dangerous": "라인 2-4: 잘못된 비트 시프트 연산으로 인해 예상치 못한 결과가 발생할 수 있으므로 위험합니다.",
  "rule.sast.sw.java.6476.example.0.safe": "라인 2: int 타입의 변수에 시프트할 비트가 0~31 사이의 값이라 안전합니다.",
  "rule.sast.sw.java.6476.name": "잘못된 정수 비트 시프트 연산",
  "rule.sast.sw.java.6536.description": "싱글톤 패턴은 클래스의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴입니다. 그러나 다중 스레드 환경에서 적절한 동기화 없이 싱글톤을 구현하면 여러 스레드가 동시에 인스턴스를 생성하려고 시도할 수 있어 싱글턴을 보장할 수 없습니다.\n다중 스레드 환경에서 싱글턴 패턴을 안전하게 구현하기 위해서는 동기화를 사용하여 인스턴스 생성을 제어해야 합니다. 일반적으로 synchronized 키워드를 사용하여 해결할 수 있습니다.",
  "rule.sast.sw.java.6536.example.0.dangerous": "라인 7: 적절한 동기화 없이 싱글톤을 구현하여 위험합니다.",
  "rule.sast.sw.java.6536.example.0.safe": "라인 8: 적절한 동기화를 사용한 뒤 싱글톤을 구현하여 안전합니다.",
  "rule.sast.sw.java.6536.name": "스레드 안전하지 않은 싱글톤의 사용",
  "rule.sast.sw.java.661.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하거나 같은 문자를 연속으로 여러 개 사용하지 않도록 설정할 수 있습니다. 한국인터넷진흥원 \"암호사용안내서\"의 비밀번호 설정 규칙을 참고할 수 있습니다.",
  "rule.sast.sw.java.661.example.0.dangerous": "라인 3: 비밀번호에 대한 검증을 수행하지 않았습니다.",
  "rule.sast.sw.java.661.example.0.safe": "라인 5: 비밀번호에 대한 길이 제한 등의 강한 유효성 검증을 수행하도록 합니다.",
  "rule.sast.sw.java.661.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.java.661.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.661.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.661.option.filter_method.description": "비밀번호 복잡도를 검증하는 메소드 이름을 입력합니다.<br />예시) matches",
  "rule.sast.sw.java.661.option.filter_method.name": "비밀번호 검증 메소드",
  "rule.sast.sw.java.661.option.password_expr.description": "비밀번호 획득 시 사용할 문자열을 입력합니다.<br />예시) password",
  "rule.sast.sw.java.661.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.java.661.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.661.option.request_method.description": "비밀번호를 획득하는 메소드 이름을 입력합니다.<br />예시) javax.servlet.http.HttpServletRequest.getParameter",
  "rule.sast.sw.java.661.option.request_method.name": "비밀번호 획득 메소드",
  "rule.sast.sw.java.661.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.665.description": "세션 간 데이터 누출 체커는 다중 스레드 환경에서 서블릿에 필드 변수가 사용되는 경우를 검출합니다.\n서블릿은 다중 스레드 환경에서 수행되므로 HttpSevlet 클래스의 하위 클래스에서 멤버 필드에 정보를 저장하면 이 정보에 대한 경쟁 조건이 발생할 수 있습니다.\n가급적 HttpServlet 클래스의 하위 클래스에 멈버 필드를 선언하여 정보를 저장하지 않도록 하고 최대한 지역 변수를 선언하여 사용해야 합니다.",
  "rule.sast.sw.java.665.example.0.dangerous": "라인 2: 서블릿에 정보를 저장하는 필드가 있습니다.",
  "rule.sast.sw.java.665.example.0.safe": "라인 4: 서블릿에 정보를 저장하는 필드를 넣지 않도록 합니다.",
  "rule.sast.sw.java.665.name": "세션 간 데이터 누출",
  "rule.sast.sw.java.665.option.excluded_class_name.description": "검출에서 제외할 클래스 이름을 입력합니다.<br />예시) com.test.Excluded",
  "rule.sast.sw.java.665.option.excluded_class_name.name": "제외할 클래스의 이름",
  "rule.sast.sw.java.665.option.excluded_field_annotation.description": "검출에서 제외할 필드 어노테이션을 입력합니다.<br />예시) Autowired",
  "rule.sast.sw.java.665.option.excluded_field_annotation.name": "제외할 필드의 어노테이션",
  "rule.sast.sw.java.665.option.excluded_field_name.description": "검출에서 제외할 필드 이름을 입력합니다.<br />예시) field",
  "rule.sast.sw.java.665.option.excluded_field_name.name": "제외할 필드의 이름",
  "rule.sast.sw.java.665.option.excluded_field_type.description": "검출에서 제외할 필드 타입을 입력합니다.<br />예시) Logger",
  "rule.sast.sw.java.665.option.excluded_field_type.name": "제외할 필드의 타입",
  "rule.sast.sw.java.665.option.target_annotation.description": "컨트롤러를 구분하는데에 사용되는 어노테이션을 입력합니다.<br />예시) Controller",
  "rule.sast.sw.java.665.option.target_annotation.name": "대상 컨트롤러 어노테이션",
  "rule.sast.sw.java.665.option.target_parent_class.description": "세션 간 데이터 노출이 발생할 수 있는 클래스 이름을 입력합니다.<br />예시) javax.servlet.http.HttpServlet",
  "rule.sast.sw.java.665.option.target_parent_class.name": "대상 클래스",
  "rule.sast.sw.java.666.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n디버그 목적으로 포함된 main() 메소드 혹은 지정된 디버그 메소드 호출을 검출합니다. 실제로 배포할 프로그램의 진입로 역할을 할 main() 메소드가 하나 존재해야 한다면 그 소속 클래스를 옵션으로 지정하여 검출에서 제외할 수 있습니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.sw.java.666.example.0.dangerous": "라인 2: main() 메소드가 존재합니다. 특히 J2EE의 경우 main() 메소드가 필요 없습니다.",
  "rule.sast.sw.java.666.example.0.safe": "라인 2: J2EE와 같은 애플리케이션에서는 main() 메소드를 삭제합니다.",
  "rule.sast.sw.java.666.name": "남은 디버그 코드",
  "rule.sast.sw.java.666.option.check_class_type.description": "디버그 코드를 의미하는 메소드를 호출하는 클래스 타입, 예: request.getParameter(\"debug\") 에서 request 는 HttpServletRequest 타입이다.",
  "rule.sast.sw.java.666.option.check_class_type.name": "디버그 코드를 의미하는 메소드를 호출하는 클래스 타입",
  "rule.sast.sw.java.666.option.check_method.description": "디버그 코드를 의미하는 메소드 이름, 예: request.getParameter(\"debug\") 에서 getParmeter 를 의미",
  "rule.sast.sw.java.666.option.check_method.name": "디버그 코드를 의미하는 메소드 이름",
  "rule.sast.sw.java.666.option.debug_message_pattern.description": "디버그 코드를 의미하는 메세지의 패턴",
  "rule.sast.sw.java.666.option.debug_message_pattern.name": "디버그 메세지 패턴",
  "rule.sast.sw.java.666.option.exclude_class.description": "이슈를 검출하지 않고 제외할 클래스 이름을 입력합니다.<br />예시) com.fasoo.sparrow.Test",
  "rule.sast.sw.java.666.option.exclude_class.name": "검사에서 제외 되어야 하는 클래스 이름",
  "rule.sast.sw.java.666.option.exclude_extend_class.description": "main 메소드 구현을 했는지 검사할 때 옵션 값에 있는 클래스를 상속한 클래스 내에 있는 main 메소드는 검사에서 제외됩니다. 예: .*.ExcludeClass",
  "rule.sast.sw.java.666.option.exclude_extend_class.name": "main 메소드 검사 제외할 클래스가 상속하는 클래스 명의 정규식",
  "rule.sast.sw.java.666.option.main_class.description": "main 메소드 구현을 했는지 검사할 때 옵션 값에 있는 클래스 내에 있는 main 메소드는 검사에서 제외됩니다. 예: .*.MainClass",
  "rule.sast.sw.java.666.option.main_class.name": "main 메소드 검사 제외할 클래스 이름의 정규식",
  "rule.sast.sw.java.666.option.method_param_value.description": "디버그 코드를 의미하는 메소드의 인자 값 (한 개의 인자만 허용), 정규식 지원, 예: request.getParameter(\"debug\") 에서 \"debug\" 를 의미",
  "rule.sast.sw.java.666.option.method_param_value.name": "디버그 코드를 의미하는 메소드의 인자 값",
  "rule.sast.sw.java.667.description": "민감한 데이터를 포함하는 내부 클래스 체커는 중첩 선언된 내부 클래스에서 외부 클래스의 private 필드에 접근하는 경우를 검출합니다.\n내부 클래스에서 외부 클래스의 private 필드에 접근하면 컴파일 과정에서 해당 필드의 접근성이 패키지 수준으로 바뀌기 때문에 의도하지 않은 정보 노출이 될 수 있습니다. 따라서 외부 클래스의 private 필드를 접근하지 않도록 합니다. 가급적이면 내부 클래스를 사용하지 않도록하며, 불가피하게 내부 클래스를 사용할 경우 정적 또는 지역적, 익명의 내부 클래스를 사용해야 합니다.\n내부 클래스를 static 한정자로 선언하고 외부 클래스의 private 필드에 접근하지 않도록 합니다.",
  "rule.sast.sw.java.667.example.0.dangerous": "라인 3: 내부 클래스 InnerClass에서 외부 클래스 MyClass의 private 필드인 innerString에 접근하고 있습니다. 이렇게 하면 컴파일 과정에서 MyClass의 innerString 필드의 접근성이 private에서 패키지 수준으로 변경됩니다.",
  "rule.sast.sw.java.667.example.0.safe": "라인 4: 내부 클래스를 꼭 사용해야 한다면 정적으로 선언하고 외부 클래스의 private 필드에 접근하지 않도록 합니다.",
  "rule.sast.sw.java.667.name": "민감한 데이터를 포함하는 내부 클래스",
  "rule.sast.sw.java.668.description": "final 한정자 없는 중요 public 변수 체커는 임의로 변경되면 안되는 중요한, final 없이 선언된 public static 멤버 변수를 검출합니다.\n변수의 중요도 여부를 작성자의 의도 없이 기계적으로 판단하기 어려우므로, 일반적으로 전역 상수의 역할을 할 가능성이 높은 원시 타입 변수들을 중요한 변수로 간주합니다.\nfinal로 선언하지 않으면 변수의 값을 외부에서 임의로 변경할 수 있습니다.\n원시 타입 변수를 public static으로 선언할 경우 final 한정자를 함께 부여합니다. 값이 변할 수 있는 중요 변수는 public으로 공개하지 말고 정적 메소드를 통해 접근하도록 설계합니다.",
  "rule.sast.sw.java.668.example.0.dangerous": "라인 4: public static으로 선언된 var 변수에 final 변경자가 지정되지 않았습니다.",
  "rule.sast.sw.java.668.example.0.safe": "라인 4: 중요한 public 변수에는 final 변경자를 함께 지정해야 합니다.",
  "rule.sast.sw.java.668.name": "final 한정자 없는 중요 public 변수",
  "rule.sast.sw.java.710.description": "JDO API에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 JDO API의 SQL 쿼리 또는 JDOQL 쿼리를 검출합니다.\n데이터베이스(DB)와 연동된 웹 애플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있습니다.\n쿼리에 직접 외부 입력을 삽입하지 말고 외부 입력을 넣을 자리에 ?을 넣은 쿼리를 생성한 후 실제 쿼리 실행 시점에 인자로 외부 입력을 전달합니다.",
  "rule.sast.sw.java.710.example.0.dangerous": "라인 19: 공격자가 입력값으로 \"name '; DELETE FROM MYTABLE;-\" 값을 입력하면 다음 쿼리가 실행되고 테이블이 삭제됩니다. (SELECT cal1 FROM MYTABLE WHERE name ='name' ; DELETE FROM MYTABLE; --')",
  "rule.sast.sw.java.710.example.0.safe": "라인 15: 외부 입력을 ? (매개 변수화된 쿼리) 로 설정 하도록 합니다.\n라인 18: 공격자가 어떤 값을 넣더라도 쿼리의 구조는 변경되지 않습니다.",
  "rule.sast.sw.java.710.name": "JDO API에서의 SQL 삽입",
  "rule.sast.sw.java.710.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.710.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.710.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.710.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.711.description": "J2EE Persistence API에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 J2EE Persistent API의 SQL 쿼리를 검출합니다.\nJ2EE Persistence API를 사용하는 애플리케이션에서 외부 입력을 적절한 검증 없이 쿼리문에 직접 사용하는 경우 의미가 왜곡되거나 구조를 변경하여 임의의 쿼리 명령어가 수행될 수 있습니다.\n쿼리문의 생성 시 상수 문자열만 사용하고 javax.persistence.Query.setParameter() 메소드를 사용해야 합니다.",
  "rule.sast.sw.java.711.example.0.dangerous": "라인 14: 공격자가 입력값으로 \"foo '; DELETE FROM MYTABLE;-\"값을 입력하면 다음 쿼리가 실행되고 테이블이 삭제됩니다. (SELECT col1 FROM MYTABLE WHERE name = 'foo' ; DELETE FROM MYTABLE;--')",
  "rule.sast.sw.java.711.example.0.safe": "라인 13: 설정된 인수를 허용하는 쿼리를 생성하고 실행하도록 합니다. 이로 인해 입력이 쿼리 구조를 변경하지 못하게 됩니다.",
  "rule.sast.sw.java.711.name": "J2EE Persistence API에서의 SQL 삽입",
  "rule.sast.sw.java.711.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.711.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.711.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.711.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.712.description": "Hibernate에서의 SQL 삽입 체커는 검증되지 않은 외부 입력값이 사용된 Hibernate API의 SQL 쿼리를 검출합니다.\n외부의 신뢰할 수 없는 입력을 적절한 검사 과정을 거치지 않고 Hibernate API의 SQL 쿼리문 생성을 위한 문자열로 사용하면, 공격자가 프로그래머가 의도하지 않았던 문자열을 전달함으로써 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하여 임의의 데이터 베이스 명령어가 수행되도록 할 수 있습니다.\n쿼리에 직접 외부 입력을 삽입하지 말고 외부 입력을 넣을 자리에 ?을 넣은 쿼리를 생성한 후 실제 쿼리 실행 시점에 인자로 외부 입력을 전달합니다.",
  "rule.sast.sw.java.712.example.0.dangerous": "라인 5: 외부에서 입력 받은 name 값을 적절하게 검증하지 않고 Hibernate API의 SQL 쿼리문에 사용하고 있습니다. 이를 통해 공격자가 데이터베이스에 명령을 수행할 수 있습니다.",
  "rule.sast.sw.java.712.example.0.safe": "라인 5: 외부 입력을 ? (매개 변수화된 쿼리) 로 설정 하도록 합니다. 공격자가 쿼리의 구조를 변경하지 못하게 해야 합니다.",
  "rule.sast.sw.java.712.name": "Hibernate에서의 SQL 삽입",
  "rule.sast.sw.java.712.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.712.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.712.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.712.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.713.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.java.713.example.0.dangerous": "라인 9: 외부 입력값 props.getProperty(\"dir_type\")을 적절한 검증 없이 명령 실행에 사용하고 있습니다.",
  "rule.sast.sw.java.713.example.0.safe": "라인 10: 외부 입력값 props.getProperty(\"dir_type\")으로 명령을 생성하기 전에 의도된 형식인지 확인하고 입력에 따라 미리 생성해둔 version 배열에서 선택한 값을 명령에 사용합니다.",
  "rule.sast.sw.java.713.name": "명령어 삽입",
  "rule.sast.sw.java.713.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.713.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.713.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.713.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.714.description": "LDAP 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 LDAP 쿼리문을 검출합니다.\n공격자가 외부 입력을 통해서 의도하지 않은 LDAP(Lightweight Directory Access Protocol) 명령어를 수행할 수 있습니다. 즉, 웹 애플리케이션이 사용자가 제공한 입력을 올바르게 처리하지 못하면 공격자가 LDAP 명령문의 구성을 바꿀 수 있습니다. 이로 인해 프로세스가 명령을 실행한 컴포넌트와 동일한 권한을 가지고 동작하게 됩니다.\nDN(Distinguished Name)과 필터에 사용되는 사용자 입력값에는 특수문자가 포함되지 않도록 특수문자를 제거해야 합니다. 만약 특수문자를 허용해야 하는 경우라면 특수문자(=, +, <, >, #, ;, \\ 등 )가 실행 명령이 아닌 일반문자로 인식되도록 처리합니다.",
  "rule.sast.sw.java.714.example.0.dangerous": "라인 11: userSN과 userPassword의 변수 값으로 *를 전달할 경우 필터 문자열의 조건식은 항상 참이 되며, 이는 의도하지 않은 동작을 발생시킬 수 있습니다.",
  "rule.sast.sw.java.714.example.0.safe": "라인 11: 검색을 위한 필터 문자열로 사용되는 외부 입력에서 위험한 문자열을 제거하여 위험성을 부분적으로 감소 시킬 수 있습니다.",
  "rule.sast.sw.java.714.name": "LDAP 삽입",
  "rule.sast.sw.java.714.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.714.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.714.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.714.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.715.description": "자원 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스(resource) 식별자를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 대한 접근 혹은 식별을 허용할 경우에 입력값 조작을 통해 시스템이 보호하는 리소스에 임의로 접근할 수 있습니다. 리소스 삽입 약점을 사용하여 공격자는 리소스의 수정/삭제, 시스템 정보 누출, 시스템 리소스 간 충돌로 인한 서비스 장애 등을 발생시킬 수 있습니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 리스트에서 선택되도록 합니다.",
  "rule.sast.sw.java.715.example.0.dangerous": "라인 12: 외부에서 전달 받은 소켓 번호를 검증 없이 그대로 사용했습니다. 만약 공격자가 Service No의 값으로 80을 지정하면, 기존의 80포트에서 구동하는 서비스와 충돌하는 문제를 발생시킬 수 있습니다.",
  "rule.sast.sw.java.715.example.0.safe": "라인 13: 외부 입력값에 따라 미리 정해진 포트를 선택하도록 함으로써 공격자가 임의의 포트를 사용하지 못하도록 합니다.",
  "rule.sast.sw.java.715.name": "자원 삽입",
  "rule.sast.sw.java.715.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.715.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.715.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.715.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.716.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자(`, /, \\, .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.java.716.example.0.dangerous": "라인 4: 외부 입력값 request.getProperty(\"filename\")을 적절한 검증 없이 파일 접근에 사용하고 있습니다.",
  "rule.sast.sw.java.716.example.0.safe": "라인 4: 외부 입력값 request.getProperty(\"filename\")으로 파일에 접근하기 전에, 공격 위험이 있는 특수 문자를 제거할 수 있는 필터를 사용합니다.",
  "rule.sast.sw.java.716.name": "경로 조작",
  "rule.sast.sw.java.716.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.716.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.716.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.716.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.717.description": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.\nHTTP 요청에 들어 있는 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(Carriage Return) 이나 LF(Line Feed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 사용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손(Cache Poisoning) 공격 등을 수행할 수 있습니다.\n요청 매개 변수의 값을 HTTP 응답 헤더(예, Set-Cookie 등)에 포함시킬 경우 CR, LF와 같은 개행문자를 제거해야 합니다.",
  "rule.sast.sw.java.717.example.0.dangerous": "라인 6: 외부에서 입력된 값 lastLogin으로 쿠키의 값을 설정하고 있습니다. 공격자가 \"Wiley Hacker/r/nHTTP/1.1 200 OK/r/n\" 으로 lastLogin 값을 설정하면, 응답이 분리되어 전달되며 분리된 응답 본문의 내용을 공격자가 마음대로 수정할 수 있습니다.",
  "rule.sast.sw.java.717.example.0.safe": "라인 6: 응답이 여러 개로 나눠지는 것을 방지하기 위해 개행 문자를 제거한 후 응답 헤더의 값으로 사용합니다.",
  "rule.sast.sw.java.717.name": "HTTP 응답 분할",
  "rule.sast.sw.java.717.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.717.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.717.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.717.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.718.description": "시스템 혹은 구성 설정의 외부 제어 체커는 검증되지 않은 외부 입력값으로 시스템 설정이나 구성 설정을 변경하는 경우를 검출합니다.\n시스템 설정이나 구성 요소를 제어할 수 있으면 예상하지 못한 결과(예: 서비스 중단)를 일으키거나 악용될 수 있습니다.\n외부 입력을 Connection.setCatalog() 메소드의 인자 값을 생성하는데 사용하지 않도록 합니다.",
  "rule.sast.sw.java.718.example.0.dangerous": "라인 13: 외부 입력(catalog)이 JDBC의 활성화된 카탈로그를 설정하는데 사용되고 있습니다. 이때 존재하지 않는 카탈로그나 권한이 없는 카탈로그 이름이 전달되면 예외 상황이 발생할 수 있습니다.",
  "rule.sast.sw.java.718.example.0.safe": "라인 19: 외부 입력값에 따라 카탈로그 이름이 바뀌어야 할 경우에는 해당 문자열을 직접 사용하지 말고, 미리 정의된 적절한 카탈로그 이름 중에 선택하여 사용합니다.",
  "rule.sast.sw.java.718.name": "시스템 혹은 구성 설정의 외부 제어",
  "rule.sast.sw.java.718.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.718.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.718.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.718.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.719.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.java.719.example.0.dangerous": "라인 18: 검증되지 않은 외부 입력이 변수 rd에 저장되어 그대로 sendRedirect() 메소드에 전달됩니다. 공격자는 아래와 같은 링크에 희생자가 접근하도록 함으로써 희생자가 피싱 사이트 등으로 접근하게 할 수 있습니다. <a href=\"http://bank.example.com/redirect?URL=http://attacker.example.net\">Click</a>",
  "rule.sast.sw.java.719.example.0.safe": "라인 1: 연결할 URL과 도메인들을 화이트리스트로 작성해둡니다.\n라인 5: 준비해둔 화이트리스트 중에서 URL을 선택하면 안전하지 않은 사이트로의 접근을 차단할 수 있습니다.",
  "rule.sast.sw.java.719.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.java.719.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.719.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.719.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.719.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.720.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성할 때 사용되는 외부 입력값에 대해 적절한 검증 절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 됩니다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증 절차를 우회할 수 있습니다. 예를 들어 XQuery 문은 `username='local_user1'` 과 같이 작은 따옴표를 사용하여 username과 비교할 문자열을 구분합니다. 만약 외부에서 비교를 위해 삽입된 문자열에 작은 따옴표가 허용되는 경우 다음과 같은 문자열을 입력할 수 있습니다. `admin' or ''='` 위 문자열을 사용한 쿼리의 조건문은 다음과 같습니다. `username = 'admin' or ''=''`. 여기서 `''=''`은 언제나 true이므로 username 비교 자체를 우회할 수 있습니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "rule.sast.sw.java.720.example.0.dangerous": "라인 3: 외부에서 입력된 값 name을 적절한 검증 없이 쿼리문의 매개 변수로 사용하고 있습니다. 공격자는 이를 통해 파일 내의 모든 값을 출력할 수 있게 됩니다.",
  "rule.sast.sw.java.720.example.0.safe": "라인 5: 외부 입력값을 받은 뒤 해당 값 기반의 XQuery 쿼리 구조를 변경시키지 않는 bindString() 함수를 사용합니다. 이를 통해 외부 입력값에 의해 쿼리 구조가 변경될 수 없도록 합니다.",
  "rule.sast.sw.java.720.name": "XQuery 삽입",
  "rule.sast.sw.java.720.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.720.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.720.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.720.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.721.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\n외부 입력값을 적절한 검사 과정 없이 XPath 쿼리문 생성을 위한 문자열로 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(`, [, ], /, =, @ 등) 및 쿼리 예약어 필터링을 수행하고 매개 변수화된 쿼리문을 지원하는 XQuery를 사용해야 합니다.",
  "rule.sast.sw.java.721.example.0.dangerous": "라인 7: name과 password에 대한 입력값 검증을 수행하지 않고 XPath 쿼리를 생성합니다. 인자로 넘겨 받은 외부 입력값을 XPath 구문 생성 및 실행에 사용하는 경우 공격자는 XPath 구문을 조작할 수 있습니다.",
  "rule.sast.sw.java.721.example.0.safe": "라인 7: XQuery를 사용하여 미리 쿼리문 골격을 생성함으로써 외부 입력으로 인해 쿼리 구조가 변경되는 것을 막을 수 있습니다. XPath 구문을 조작할 수 있는 문자열을 제거하도록 합니다.",
  "rule.sast.sw.java.721.name": "XPath 삽입",
  "rule.sast.sw.java.721.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.721.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.721.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.721.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.722.description": "영속적인 쿠키 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.\n대부분의 웹 프로그래밍 환경에서는 비지속적으로 쿠키를 생성합니다. 이러한 쿠키는 브라우저 메모리(디스크에 기록되지 않음)에만 상주하며 브라우저가 닫히면 사라집니다. 프로그래머는 미래의 특정 날짜까지 브라우저 세션에 대해 쿠키가 지속되도록 지정할 수 있습니다. 해당 쿠키는 디스크에 기록되고 브라우저 세션 및 장치 재시작에서도 유지됩니다. 지속적인 쿠키는 사이트와 상호 작용하는 사용자를 프로필하는 데 사용됩니다. 공격자는 해당 데이터를 통해 지속적인 쿠키에 포함된 추적 데이터의 개인 정보를 악용할 수 있습니다. 지속적인 쿠키의 경우 만료 시간이 길게 설정되어 해당 쿠키에 개인 정보가 저장되면 데이터를 도용할 수 있는 위험도 증가하게 됩니다.\n쿠키의 만료시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요 정보가 포함되지 않도록 설정해야 합니다.",
  "rule.sast.sw.java.722.example.0.dangerous": "라인 9: 쿠키의 만료 기간을 1년으로 과도하게 길게 설정하고 있습니다.",
  "rule.sast.sw.java.722.example.0.safe": "라인 9: 쿠키의 만료 기간은 해당 기능에 맞춰 최소로 설정합니다.",
  "rule.sast.sw.java.722.name": "영속적인 쿠키",
  "rule.sast.sw.java.722.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.722.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.722.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.722.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.723.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트 리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.java.723.example.0.dangerous": "라인 13: 외부 입력값이 들어있는 name을 특별한 처리 과정 없이 결과 페이지 생성에 사용하고 있습니다. 만약 악의적인 공격자가 name 값에 다음 아래의 스크립트를 넣으면, 희생자의 권한으로 attack.jsp 코드가 수행하며 희생자의 쿠키 정보 유출 등의 피해를 주게 됩니다. (예 : <script>URL = \"http://devil.com/attack.jsp\";</script>)\n라인 17: 매개 변수 id에 쿠키 정보를 출력하는 스크립트 코드가 입력되고 그대로 사용하는 경우, 공격자는 공격 코드를 사용하여 피해자의 쿠키 정보를 빼돌릴 수 있습니다.",
  "rule.sast.sw.java.723.example.0.safe": "라인 13: replaceAll() 메소드를 사용하여 외부 입력 문자열에서 \"<\"와 \">\"같은 HTML 스크립트 생성에 사용되는 모든 문자열을 \"&lt;\"와 \"&gt;\"로 변경함으로써 악의적인 스크립트 수행의 위험성을 줄일 수 있습니다. 그러나 이러한 방법이 위험성을 완전히 제거했음을 의미하지는 않습니다. 그 외에도 여러 가지 방법으로 이 공격을 방지할 수 있습니다.\n라인 25: JSP에서 출력값에 JSTL HTML 인코딩을 합니다.\n라인 27: JSP에서 출력값에 JSTL Core 출력 포맷을 사용하여 텍스트로 처리합니다.\n라인 30: 잘 만들어진 외부 XSSFilter 라이브러리를 활용하여 출력값에 필터링 합니다.",
  "rule.sast.sw.java.723.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.java.723.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.723.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.723.option.ignored_member_method.description": "외부 입력 값에 사용하더라도 무시할 멤버 메소드 이름을 입력합니다. 예시) String.toString",
  "rule.sast.sw.java.723.option.ignored_member_method.name": "무시할 멤버 메소드",
  "rule.sast.sw.java.723.option.output_method.description": "외부 입력 값을 출력할 경우 위험한 메소드 이름을 입력합니다. 예시) JspWriter.print",
  "rule.sast.sw.java.723.option.output_method.name": "대상 출력 메소드",
  "rule.sast.sw.java.723.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.723.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.724.description": "DOM 기반 크로스 사이트 스크립팅 체커는 외부 입력값을 검증 없이 JSP의 DOM 객체 출력에 사용하는 경우를 검출합니다.\nJSP의 DOM 객체 출력을 수행하는 메소드에는 JSP의 document.write() 메소드 등이 있습니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.java.724.example.0.dangerous": "라인 7: request.getParameter()에서 전달된 외부 입력(name)이 document.write()의 인자 값 생성에 그대로 사용되었습니다.",
  "rule.sast.sw.java.724.example.0.safe": "라인 6: 외부 입력(name)으로부터 \"<\"와 \">\"같이 HTML에서 스크립트 생성에 사용되는 모든 문자열을 \"&lt;\"와 \"&gt;\"로 변경합니다.",
  "rule.sast.sw.java.724.name": "DOM 기반 크로스 사이트 스크립팅",
  "rule.sast.sw.java.725.description": "직접 동적 코드 평가 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.\n프로그램 실행 중 eval() 함수에 전달되는 문자열은 그 시점에 코드로 해석되어 직접 실행됩니다.\n검증되지 않은 외부 입력이 동적으로 실행되는 코드에 사용될 경우 공격자가 원하는 임의의 작업을 수행할 수 있습니다.\n동적으로 계산되는 코드가 프로그램 설계에 꼭 필요한지 한 번 더 확인하고 가능하다면 같은 동작을 정적 코드를 사용한 다른 방법으로 구현합니다. 대부분의 평범한 프로그램의 동작은 동적으로 계산되는 코드 없이도 구현이 가능하며, 많은 경우에 동적 코드는 단지 코드 작성자의 사소한 귀찮음을 회피하려는 의도로 사용됩니다. 동적 코드 사용이 불가피하다면, 외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.java.725.example.0.dangerous": "라인 13: 외부 입력(evalParam)을 eval() 함수의 인자로 사용하고 있습니다. 만약 외부 입력에 JavaScript로 된 코드가 있다면 이 코드가 eval()에 의해서 수행이 됩니다.",
  "rule.sast.sw.java.725.example.0.safe": "라인 14: 스크립트를 작성하는데 필요한 문자들(예: <, >, &, \\ 등)을 변경함으로써 외부 입력 코드의 수행을 방지할 수 있습니다. 그러나 이것이 완벽한 조치는 아닙니다.",
  "rule.sast.sw.java.725.name": "직접 동적 코드 평가",
  "rule.sast.sw.java.726.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.java.726.example.0.dangerous": "라인 3: 도메인 이름을 통해 해당 요청이 신뢰할 수 있는지를 검사합니다. 그러나 공격자가 DNS 캐쉬 등을 조작하면 잘못된 신뢰성 정보를 얻을 수 있습니다.",
  "rule.sast.sw.java.726.example.0.safe": "라인 3: DNS 조회를 통해 호스트 이름을 비교하지 않고 IP 주소를 직접 비교하도록 수정합니다.",
  "rule.sast.sw.java.726.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.java.726.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.726.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.726.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.726.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.727.description": "사이트 간 요청 위조 체커는 폼 데이터 전달에 있어서 POST 방식을 사용하지 않았을 경우를 검출합니다.\n공격자에 의하여 악의적인 웹 사이트가 사용자의 인증된 세션 안에서 원치 않은 행동을 할 수 있습니다. 특히 해당 사용자가 관리자인 경우 사용자 권한관리, 게시물삭제, 사용자 등록 등 관리자 권한으로만 수행 가능한 기능을 공격자의 의도대로 실행시킬 수 있게 됩니다. 웹 애플리케이션에서 요청을 GET 방식으로 전달할 경우 공격자가 정보를 쉽게 알아내어 수정된 정보를 보냄으로써 공격자가 원하는 작업을 수행할 수 있습니다.\n입력 폼 작성시 GET 방식보다는 POST 방식을 사용하고 입력 폼과 해당 입력을 처리하는 프로그램 사이에 토큰을 사용하여, 공격자의 직접적인 URL 사용이 동작하지 않도록 처리합니다. 특히 중요한 기능에 대해서는 세션 검증과 더불어 재인증을 유도합니다.",
  "rule.sast.sw.java.727.example.0.dangerous": "라인 1: GET 방식은 단순히 form 데이터를 URL 뒤에 덧붙여서 전송하기 때문에 GET 방식의 form을 사용하면 전달 값이 노출되므로 CSRF 공격에 쉽게 노출될 수 있습니다.",
  "rule.sast.sw.java.727.example.0.safe": "라인 1: POST 방식을 사용하여 위협을 완화합니다.",
  "rule.sast.sw.java.727.name": "사이트 간 요청 위조",
  "rule.sast.sw.java.727.option.argument_type_for_critical_function.description": "중요 기능 함수의 인자 타입, 여기에 기술된 인자 타입은 중요 기능 함수의 모든 인자에 대해서 체커가 분석을 시도합니다. 정규식 지원",
  "rule.sast.sw.java.727.option.argument_type_for_critical_function.name": "중요 기능 함수의 인자 타입",
  "rule.sast.sw.java.727.option.authenticated_block.description": "인증 수행 후 안전한 것으로 간주되는 코드 블록. 'if', 'switch', 'while', 'for' 블록이 될 수 있고, 삼항 연산자의 수식도 가능합니다. 이 코드 블록 내에 존재하는 모든 중요 기능 함수의 호출은 안전한 것으로 간주됩니다.",
  "rule.sast.sw.java.727.option.authenticated_block.name": "인증 완료된 코드 블록",
  "rule.sast.sw.java.727.option.authentication_function.description": "인증을 위해 호출할 메소드를 입력합니다. 메소드가 여러 개일 경우, 인증을 위해 모든 메소드를 호출해야 합니다.<br />예시) java.lang.String.equals",
  "rule.sast.sw.java.727.option.authentication_function.name": "인증 메소드",
  "rule.sast.sw.java.727.option.critical_class.description": "중요 기능을 함수를 호출하는 객체의 클래스 타입 (패키지 이름을 포함한 클래스 이름, i.e. java.lang.String), 정규식 지원",
  "rule.sast.sw.java.727.option.critical_class.name": "중요 기능 함수를 호출하는 객체의 클래스 타입",
  "rule.sast.sw.java.727.option.critical_function.description": "중요 기능 함수, 정규식 지원",
  "rule.sast.sw.java.727.option.critical_function.name": "중요 기능 함수 이름",
  "rule.sast.sw.java.727.option.need_token_cmp_class_base.description": "상속 받은 클래스 내에 토큰 비교가 필요한 상위 클래스의 이름을 입력합니다.<br />예시) org.apache.jasper.runtime.HttpJspBase",
  "rule.sast.sw.java.727.option.need_token_cmp_class_base.name": "토큰 비교가 필요한 상위 클래스",
  "rule.sast.sw.java.727.option.request_class.description": "HTTP 요청을 나타내는 클래스의 이름을 입력합니다.<br />예시) javax.servlet.http.HttpServletRequest",
  "rule.sast.sw.java.727.option.request_class.name": "HTTP 요청 클래스",
  "rule.sast.sw.java.727.option.session_class.description": "HTTP 세션을 나타내는 클래스의 이름을 입력합니다.<br />예시) javax.servlet.http.HttpSession",
  "rule.sast.sw.java.727.option.session_class.name": "HTTP 세션 클래스",
  "rule.sast.sw.java.727.option.token_target_file.description": "토큰 비교를 통한 인증이 필요한 파일을 입력합니다.<br />예시) CSRF.jsp",
  "rule.sast.sw.java.727.option.token_target_file.name": "토큰 비교를 통한 인증이 필요한 파일",
  "rule.sast.sw.java.7275.description": "자바 생성자에서 오버라이드 가능한 메소드를 호출하면 객체 초기화 시 하위 클래스에서 재정의된 메소드가 실행되어 의도하지 않은 동작이나 예외가 발생할 수 있습니다.\n생성자 내부에서 오버라이드 가능한 메소드가 호출되는 경우 해당 메소드를 final, static 또는 private으로 선언해야 합니다.",
  "rule.sast.sw.java.7275.example.0.dangerous": "라인 3: 생성자 내에서 오버라이드 가능한 메소드를 호출했습니다.",
  "rule.sast.sw.java.7275.example.0.safe": "라인 3: final로 선언되어 있어 오버라이드할 수 없습니다.",
  "rule.sast.sw.java.7275.name": "생성자에서 오버라이드 가능한 메소드 호출 금지",
  "rule.sast.sw.java.728.description": "메모리 덤프를 통한 비밀번호 노출 체커는 비밀번호를 문자열 객체에 저장하는 경우를 검출합니다.\nJava의 문자열 객체는 수정불가능하기 때문에 JVM의 가비지 콜렉터가 동작하기 전까지 항상 메모리에 상주해 있으며, 프로그램에서 이 메모리를 해제할 수 없습니다. 따라서 프로그램이 비정상적으로 중단되어 메모리 덤프가 일어나는 경우에 데이터가 외부에 노출될 수 있습니다.\n비밀번호와 같이 보안 상 중요한 데이터는 '변경이 가능한 객체'에 저장하여 사용해야 하며, 메모리에서 소거하는 로직을 구현해야 합니다. 더 이상 사용되지 않는다면 즉시 메모리에서 소거해야 합니다.",
  "rule.sast.sw.java.728.example.0.dangerous": "라인 13: 비밀번호가 String 객체 생성에 전달되었습니다.",
  "rule.sast.sw.java.728.example.0.safe": "라인 14: 비밀번호를 변경 불가능한 String 객체 생성에 전달하지 않습니다.",
  "rule.sast.sw.java.728.name": "메모리 덤프를 통한 비밀번호 노출",
  "rule.sast.sw.java.729.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 사용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.java.729.example.0.dangerous": "라인 4: 보안성이 강한 RSA 알고리즘을 사용함에도 불구하고 키 길이를 512 비트로 설정하여 공격당할 위험이 있습니다.",
  "rule.sast.sw.java.729.example.0.safe": "라인 4: RSA 암호화에 사용하는 키의 길이는 적어도 2,048 비트 이상으로 설정합니다.",
  "rule.sast.sw.java.729.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.java.729.option.AES.description": "AES 알고리즘의 허용 키 길이",
  "rule.sast.sw.java.729.option.AES.name": "AES 알고리즘의 허용 키 길이",
  "rule.sast.sw.java.729.option.EC.description": "Elliptic Curve 알고리즘의 허용 키 길이",
  "rule.sast.sw.java.729.option.EC.name": "Elliptic Curve 알고리즘의 허용 키 길이",
  "rule.sast.sw.java.729.option.RSA.description": "RSA 알고리즘의 허용 키 길이 (Signature/Cipher)",
  "rule.sast.sw.java.729.option.RSA.name": "RSA 알고리즘의 허용 키 길이 (Signature/Cipher)",
  "rule.sast.sw.java.729.option.SEED.description": "Block Cipher algorithm SEED 의 허용 키 길이",
  "rule.sast.sw.java.729.option.SEED.name": "Block Cipher algorithm SEED 의 허용 키 길이",
  "rule.sast.sw.java.729.option.SHA-1.description": "Message Digest algorithm SHA-1 의 허용 키 길이",
  "rule.sast.sw.java.729.option.SHA-1.name": "Message Digest algorithm SHA-1 의 허용 키 길이",
  "rule.sast.sw.java.729.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.729.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.729.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.729.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.730.description": "하드코드된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역산하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코딩하여 코드를 작성하는 방법도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코딩하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "rule.sast.sw.java.730.example.0.dangerous": "라인 6: 암호화에 사용되는 키를 상수의 형태로 코드 내부에서 사용하면 프로그램 소스가 유출되거나 역공학으로 소스 코드가 복원될 경우 암호화 키도 동시에 노출되는 취약점을 가지게 됩니다.",
  "rule.sast.sw.java.730.example.0.safe": "라인 8: 암호화된 비밀번호를 복호화하기 위하여 사용되는 암호화 키도 코드 내부에 상수형태로 정의해서 사용하지 않도록 합니다.",
  "rule.sast.sw.java.730.name": "하드코드된 암호화 키",
  "rule.sast.sw.java.730.option.excluded_algorithm.description": "제외할 암호화 알고리즘 명을 작성합니다.<br />예시)</i> DESede",
  "rule.sast.sw.java.730.option.excluded_algorithm.name": "제외 암호화 알고리즘",
  "rule.sast.sw.java.731.description": "부적절한 RSA 패딩 체커는 RAS 알고리즘 사용 시 부적절한 패딩 방식을 사용하는 경우를 검출합니다.\n패딩 옵션으로 `RSA/NONE/NoPadding`을 전달하면 안됩니다.\n적절한 RSA 패딩을 사용할 경우 더 안전한 암호화가 수행되기 때문에 권장 사항에 맞춰서 일정 수준 이상의 패딩을 사용해야 합니다.\nOAEP 방식을 사용하는 것이 좋습니다.",
  "rule.sast.sw.java.731.example.0.dangerous": "라인 5: 패딩없이 RSA 알고리즘을 사용하고 있습니다.",
  "rule.sast.sw.java.731.example.0.safe": "라인 5: OAEP 패딩을 사용합니다.",
  "rule.sast.sw.java.731.name": "부적절한 RSA 패딩",
  "rule.sast.sw.java.732.description": "하드코드된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.\n소스 코드에서 고정된 솔트 값을 사용하는 경우 모든 개발자에게 솔트가 노출될 뿐만 아니라 일단 애플리케이션을 운영하기 시작하면 수정하기가 어려워집니다. 또한 공격자가 솔트 값을 아는 경우 애플리케이션에 대한 \"레인보우 테이블\"을 계산하여 해싱된 값을 더 쉽게 확인할 수 있습니다.\n암호학적으로 안전한 방식으로 무작위로 생성되어 예측하기 어려운 솔트를 사용하거나 솔트를 외부 입력을 통해 전달하는 것이 좋습니다.",
  "rule.sast.sw.java.732.example.0.dangerous": "라인 8: 상수로 정의된 솔트를 사용하고 있습니다.",
  "rule.sast.sw.java.732.example.0.safe": "라인 8: 솔트(혹은 nonce) 값으로는 예측하기 어려운 난수를 사용해야 하므로, 예측하기 어려운 솔트 값을 생성하는 로직을 별도로 구현하여 사용하여야 합니다.",
  "rule.sast.sw.java.732.name": "하드코드된 솔트",
  "rule.sast.sw.java.733.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\n사용을 금지할 난수 생성 메소드를 옵션으로 지정할 수 있습니다.\n예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하게 됩니다.\n옵션으로 지정된 금지 메소드보다 안전한 방식을 사용하여 난수를 생성합니다.",
  "rule.sast.sw.java.733.example.0.dangerous": "라인 4: java.lang.Math 클래스의 random() 메소드는 시드를 재설정할 수 없기 때문에 위험합니다.",
  "rule.sast.sw.java.733.example.0.safe": "라인 5: java.util.Random 클래스를 사용하면 시드를 재설정할 수 있으나, 여전히 위험합니다. 따라서 Random 클래스를 사용하는 것이 더 안전합니다.",
  "rule.sast.sw.java.733.name": "부적절한 난수 생성",
  "rule.sast.sw.java.733.option.allowed_random.description": "용법 검사 대상 Random 메소드 이름을 입력합니다.<br />예시)</i> java.util.Random.nextBoolean",
  "rule.sast.sw.java.733.option.allowed_random.name": "검사 대상 Random 메소드",
  "rule.sast.sw.java.733.option.forbidden_random.description": "금지할 Random 메소드 이름을 입력합니다.<br />예시)</i> Math.random",
  "rule.sast.sw.java.733.option.forbidden_random.name": "금지된 Random 메소드",
  "rule.sast.sw.java.733.option.forbidden_seed_argument_call.description": "금지 seed 인자 메소드 이름을 입력합니다.<br />예시) Integer.valueOf",
  "rule.sast.sw.java.733.option.forbidden_seed_argument_call.name": "금지 seed 인자 메소드",
  "rule.sast.sw.java.733.option.is_check_util_random.description": "java.util.Random 검사 여부를 설정합니다.<br />예시) true",
  "rule.sast.sw.java.733.option.is_check_util_random.name": "java.util.Random 검사 유무",
  "rule.sast.sw.java.733.option.random_key_class.description": "자체 랜덤 키 생성 시 요소로 사용될 수 있는 클래스 이름을 입력합니다.<br />예시)</i> java.util.Date",
  "rule.sast.sw.java.733.option.random_key_class.name": "자체 랜덤 키 생성 요소 클래스",
  "rule.sast.sw.java.733.option.random_seed.description": "Random seed 메소드 이름을 입력합니다.<br />예시) java.util.Random.setSeed",
  "rule.sast.sw.java.733.option.random_seed.name": "Random seed 메소드",
  "rule.sast.sw.java.734.description": "주소창을 통한 비밀번호 노출 체커는 비밀번호가 포함된 응답을 GET 방식으로 보내는 경우를 검출합니다.\n사용자 또는 시스템의 중요 정보가 포함된 데이터를 평문으로 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있습니다. GET 방식을 사용할 경우 매개 변수가 URL을 통해 노출될 수 있어 위험합니다.\n민감한 정보를 통신 채널을 통하여 내보낼 때에는 반드시 암호화 과정을 거쳐야 하며 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다. HTTPS와 같은 보안 채널을 사용하거나, 브라우저 쿠키에 중요 데이터를 저장하는 경우, 쿠키객체에 보안속성을 설정하여 중요 정보 노출을 방지하도록 설정합니다. 중요 정보가 포함된 응답은 GET 방식 대신 POST 방식을 사용하여 보내야 합니다.",
  "rule.sast.sw.java.734.example.0.dangerous": "라인 8: HTTP 요청에 대한 응답을 GET 방식으로 재전송하고 있습니다.",
  "rule.sast.sw.java.734.example.0.safe": "라인 15: 다른 페이지로 보안에 민감한 정보를 보낼 때는 GET 방식이 아닌 POST 방식을 사용하여 매개 변수를 전달해야 합니다.",
  "rule.sast.sw.java.734.name": "주소창을 통한 비밀번호 노출",
  "rule.sast.sw.java.735.description": "동일 포트에 여러 개의 바인딩 체커는 하나의 포트를 여러 개의 서비스에 사용하는 경우를 검출합니다.\n하나의 포트를 다수의 서비스가 사용할 경우 전달하는 패킷을 도난 또는 도용당할 가능성이 있습니다.\n포트 재사용 옵션을 해제합니다.",
  "rule.sast.sw.java.735.example.0.dangerous": "라인 6: 하나의 포트 번호에 여러 개의 소켓이 바인딩되는 것을 허용함으로써 패킷 스니핑 공격에 노출될 수 있습니다.",
  "rule.sast.sw.java.735.example.0.safe": "라인 6: 프로토콜에 상관없이 포트의 재사용 옵션을 설정하지 않아야 합니다.",
  "rule.sast.sw.java.735.name": "동일 포트에 여러 개의 바인딩",
  "rule.sast.sw.java.736.description": "안전하지 않은 쿠키 체커는 쿠키를 암호화하지 않은 채로 전송하는 경우를 검출합니다.\n브라우저 쿠키에 데이터를 저장할 때 Cookie 객체의 setSecure() 메소드를 호출하여 해당 속성을 true로 설정해야 합니다.\n일반적으로 HTTPS로만 서비스를 운영하면 모든 정보가 암호화 되어 안전하게 전송될 것으로 생각하기 쉽습니다 하지만 보안에 민감한 데이터를 브라우저 쿠키에 저장할 때 보안 속성을 세팅하지 않으면 SSL 등의 보안 프로토콜을 통해 전송이 되지 않습니다. 그로 인해 중요 정보가 공격자에게 단순한 텍스트의 형태로 노출될 수 있습니다. 이것은 쿠키가 개인 정보나 세션 ID를 포함하는 경우에 특히 중요합니다. 단, 한 사이트(도메인)에서 HTTP나 HTTP와 HTTPS를 함께 사용하는 경우 setSecure 메소드를 호출하면 브라우저 쿠키의 데이터가 서버에 전송되지 않아 장애가 발생할 수 있다는 점을 주의해야 합니다.\n모든 Cookie 객체에 대해 항상 setSecure() 메소드에 true를 전달하며 호출합니다.",
  "rule.sast.sw.java.736.example.0.dangerous": "라인 6: HTTPS로만 서비스하는 경우 민감한 정보를 가진 쿠키를 전송하는 과정에서, 보안속성을 설정하지 않으면 공격자에게 정보가 노출될 수 있습니다.",
  "rule.sast.sw.java.736.example.0.safe": "라인 9: HTTPS로만 서비스하는 환경에서 민감한 정보를 가진 쿠키를 사용할 경우에는 반드시 Cookie 객체의 setSecure(true) 메소드를 호출해야 합니다.",
  "rule.sast.sw.java.736.name": "안전하지 않은 쿠키",
  "rule.sast.sw.java.736.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.736.option.cookie_class.description": "보안 속성 설정용 Cookie 클래스들",
  "rule.sast.sw.java.736.option.cookie_class.name": "Cookie 클래스들",
  "rule.sast.sw.java.736.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.736.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.736.option.response_class.description": "서블릿에서 사용되는 Response 클래스들, 예: HttpServletResponse",
  "rule.sast.sw.java.736.option.response_class.name": "서블릿을 위한 Response 클래스들",
  "rule.sast.sw.java.736.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.737.description": "중요한 리소스에 대한 잘못된 권한 할당 체커는 설정 파일, 실행 파일, 라이브러리 등을 SW 관리자가 아닌 사용자가 읽고 쓸 수 있는 코드를 검출합니다.\n옵션으로 지정된 중요 리소스 파일에 대해 과도한 권한을 부여하는 코드를 검출합니다.\nSW가 중요한 보안 관련 리소스에 대하여 읽기 또는 수정하기 권한을 의도하지 않게 허가할 경우, 권한을 갖지 않은 사용자가 해당 리소스를 사용하게 됩니다.\n중요한 리소스에 대해서는 특정 사용자에게만 권한을 부여하도록 수정합니다.",
  "rule.sast.sw.java.737.example.0.dangerous": "라인 3: 파일을 생성할 때 가장 많은 권한을 허가하는 형태로 umask를 사용하고 있어, 후 생성되는 파일에 대해 모든 사용자가 읽기/쓰기 권한을 갖게 됩니다.\n라인 10: system.ini 파일에 대해 모든 사용자가 읽고, 쓰고, 실행할 수 있는 권한을 부여하고 있습니다.",
  "rule.sast.sw.java.737.example.0.safe": "라인 3: 파일에 대한 설정을 가장 제한이 크도록, 즉, 사용자를 제외하고는 읽기/쓰기가 가능하지 않도록 umask를 설정하는 것이 필요합니다.\n라인 10: 해당 파일의 소유자에게만 읽기 권한을 부여하여 최소한의 권한만 할당해야 합니다.",
  "rule.sast.sw.java.737.name": "중요한 리소스에 대한 잘못된 권한 할당",
  "rule.sast.sw.java.737.option.critical_resource.description": "중요 자원 경로를 입력합니다.<br />예시) C:Criticalesource.dat",
  "rule.sast.sw.java.737.option.critical_resource.name": "중요 자원",
  "rule.sast.sw.java.740.description": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.\n정수형 변수가 표현할 수 있는 정수의 범위를 초과하게 될 경우 오버플로우가 발생하여 음수 또는 예상하지 못한 결과값을 얻을 수 있습니다. 예상하지 못한 결과값을 사용하여 메모리를 할당하거나 반복문의 조건을 작성하는 경우 보안 취약점이 발생합니다.\n언어 및 플랫폼에 따라 정수형의 범위를 확인하고 사용하도록 합니다. 정수형 변수를 연산에 사용하는 경우 먼저 결과값의 범위를 확인하도록 합니다. 외부 입력값을 동적 메모리 할당에 사용하는 경우 변수가 적절한 범위 내에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.java.740.example.0.dangerous": "라인 2: 외부 입력(args[0], args[1])을 사용하여 동적으로 계산한 값을 배열의 크기(size)를 결정하는데 사용하고 있습니다.\n라인 4: 만일 외부 입력으로부터 계산된 값(size)이 오버플로우에 의해 음수값이 되면 배열의 크기가 음수가 되어 시스템에 문제가 발생할 수 있습니다.",
  "rule.sast.sw.java.740.example.0.safe": "라인 5: 동적 메모리 할당을 위해 크기를 사용하는 경우 그 값이 음수가 아닌지 검사하는 문장이 필요합니다.",
  "rule.sast.sw.java.740.name": "정수 오버플로우",
  "rule.sast.sw.java.740.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.740.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.740.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.740.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.741.description": "중요 기능에 대해 누락된 인증 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.\n검사할 중요 기능과 필요한 인증 제어 방식을 옵션으로 지정할 수 있습니다.\n적절한 인증 과정이 없이 중요 정보(계좌이체 정보, 개인 정보 등)를 열람 또는 변경하거나 상당한 리소스를 소모하는 작업을 수행하면 위험할 수 있습니다. 클라이언트의 보안 검사를 우회하여 서버에 접근하지 못하도록 설계하고, 은행 계좌이체 등 중요한 페이지는 재인증을 적용해야 합니다. 또한 안전하다고 검증된 라이브러리나 프레임워크(OpenSSL이나 ESAPI의 보안 기능 등)를 사용하는 것도 중요합니다.\n중요 기능에 접근하기 전 인증 과정을 거칩니다.",
  "rule.sast.sw.java.741.example.0.dangerous": "라인 6: 재인증을 거치지 않고 계좌 이체를 하고 있습니다.",
  "rule.sast.sw.java.741.example.0.safe": "라인 16: 인증을 수행한 사용자만 다시 재인증을 거쳐 계좌 이체가 가능하도록 합니다.",
  "rule.sast.sw.java.741.name": "중요 기능에 대해 누락된 인증",
  "rule.sast.sw.java.741.option.argument_type_for_critical_function.description": "중요 기능 함수의 인자 타입. 체커는 중요 기능 함수의 모든 인자 타입을 검사합니다. 정규식 지원.",
  "rule.sast.sw.java.741.option.argument_type_for_critical_function.name": "중요한 기능을 수행하는 함수의 인자 타입",
  "rule.sast.sw.java.741.option.authenticated_block.description": "인증 수행 후 안전한 것으로 간주되는 코드 블록. 'if', 'switch', 'while', 'for' 블록이 될 수 있고, 삼항 연산자의 수식도 가능합니다. 이 코드 블록 내에 존재하는 모든 중요 기능 함수의 호출은 안전한 것으로 간주됩니다.",
  "rule.sast.sw.java.741.option.authenticated_block.name": "인증이 완료된 코드블록",
  "rule.sast.sw.java.741.option.authentication_function.description": "인증을 위해 호출되어야 하는 메소드를 작성합니다. 여러 개일 경우, 작성한 메소드가 모두 호출 되어야 인증이 수행되었다고 판단합니다.<br />예시) java.lang.String.equals",
  "rule.sast.sw.java.741.option.authentication_function.name": "인증 메소드",
  "rule.sast.sw.java.741.option.check_argument_type.description": "중요한 기능을 수행하는 함수에 전달되는 인자 타입을 확인합니다.",
  "rule.sast.sw.java.741.option.check_argument_type.name": "매개 변수 타입 확인",
  "rule.sast.sw.java.741.option.critical_class.description": "중요한 기능을 수행하는 함수를 호출하는 객체의 클래스 타입 (패키지 이름을 포함한 클래스 명, i.e. java.lang.String), 정규식 지원",
  "rule.sast.sw.java.741.option.critical_class.name": "중요한 기능을 수행하는 함수를 호출하는 객체의 클래스 타입",
  "rule.sast.sw.java.741.option.critical_function.description": "중요한 기능을 수행하는 함수, 정규식 지원",
  "rule.sast.sw.java.741.option.critical_function.name": "중요한 기능을 수행하는 함수 이름",
  "rule.sast.sw.java.742.description": "부적절한 인증 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.\n사용자 인증을 위한 별도의 작업을 수행하지 않고 익명 바인딩을 허용하면 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.\n사용자 이름과 비밀번호를 명시하여 LDAP 바인딩을 수행합니다.",
  "rule.sast.sw.java.742.example.0.dangerous": "라인 5: 사용자 인증을 위한 별도의 접극 제어 방법이 사용되지 않고 있습니다. 이는 익명 바인딩을 허용하는 것으로 볼 수 있습니다. 따라서 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.",
  "rule.sast.sw.java.742.example.0.safe": "라인 5: 사용자 ID와 password를 context에 설정한 후 접근하도록 접근 제어를 사용합니다.",
  "rule.sast.sw.java.742.name": "부적절한 인증",
  "rule.sast.sw.java.742.option.class_name_to_be_authorized.description": "인증이 필요한 클래스 이름을 지정합니다.<br />예시) (.+.)?KrdMessage",
  "rule.sast.sw.java.742.option.class_name_to_be_authorized.name": "인증이 필요한 클래스 이름",
  "rule.sast.sw.java.743.description": "암호화 없이 비밀번호 저장 체커는 비밀번호를 암호화하지 않은 채로 외부에 저장한 경우를 검출합니다.\n외부에 저장된 비밀번호를 읽어들이여 후처리 없이 그대로 사용하는 것도 그 비밀번호가 암호화 없이 저장되어 있었다는 사실을 함의하므로 검출 대상이 됩니다.\n비밀번호를 외부 환경 파일에 저장하거나 통신 채널을 통하여 내보낼 때 암호화하지 않는 경우 인증 받지 않은 주체에 의해서 데이터 노출, 또는 스니핑이 발생할 수 있습니다.\n개인 정보(주민등록번호, 여권번호 등), 금융 정보(카드번호, 계좌번호 등), 비밀번호 등 중요 정보를 저장할 때는 반드시 암호화하여 저장해야 하며, 중요 정보를 읽거나 쓸 경우에 권한 인증 등을 통해 중요 정보에 접근하도록 해야 합니다. 특히 비밀번호는 암호화할 때 단방향 암호화 알고리즘을 사용해야 하고 그 중에서도 SHA-256 혹은 그 이상으로 안전한 알고리즘을 사용합니다.",
  "rule.sast.sw.java.743.example.0.dangerous": "라인 11: 속성 파일에서 읽어들인 비밀번호를 String 형태 그대로 데이터베이스를 연결하는데 사용하고 있습니다. 사용자가 속성 파일에 공격을 위한 문자열을 저장한 경우, 프로그램이 의도한 공격에 노출될 수 있습니다.",
  "rule.sast.sw.java.743.example.0.safe": "라인 11: 외부에 저장된 비밀번호(예를 들어, 환경파일)를 데이터베이스 연결에 사용하는 경우, 읽어들인 비밀번호를 검증하거나 복호화하는 등 추가적인 정보로 가공하는 로직을 거쳐서 사용해야 합니다.",
  "rule.sast.sw.java.743.name": "암호화 없이 비밀번호 저장",
  "rule.sast.sw.java.743.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.743.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.743.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.743.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.744.description": "주석문 안의 비밀번호 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.java.744.example.0.dangerous": "라인 1: 디버깅 등의 목적으로 사용자 이름과 비밀번호를 주석문 안에 서술하고 제대로 지우지 않은 코드입니다.",
  "rule.sast.sw.java.744.example.0.safe": "라인 1: 프로그램 개발 시에 주석문 등에 남겨놓은 사용자 계정이나 비밀번호 등의 정보는 개발 완료 시에 확실하게 삭제해야 합니다.",
  "rule.sast.sw.java.744.name": "주석문 안의 비밀번호",
  "rule.sast.sw.java.744.option.allowed_max_word_length.description": "단일 단어의 최대 길이를 작성합니다.<br />예시) 40",
  "rule.sast.sw.java.744.option.allowed_max_word_length.name": "허용할 최대 연속 단어 길이",
  "rule.sast.sw.java.744.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.sast.sw.java.744.option.check_header.name": "헤더 파일 분석 여부",
  "rule.sast.sw.java.744.option.check_password_only.description": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "rule.sast.sw.java.744.option.check_password_only.name": "비밀번호 문자열 단독 검출 여부",
  "rule.sast.sw.java.744.option.consecutive_word_expr.description": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.<br />예시) [a-zA-Z0-9]+",
  "rule.sast.sw.java.744.option.consecutive_word_expr.name": "검출할 연속 단어 형식",
  "rule.sast.sw.java.744.option.fixed_key_length.description": "고정 길이 문자열을 입력합니다.",
  "rule.sast.sw.java.744.option.fixed_key_length.name": "고정 길이",
  "rule.sast.sw.java.744.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.java.744.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.java.744.option.using_fixed_key_length.description": "옵션을 사용하는 경우, 고정 길이의 문자열을 검출합니다.",
  "rule.sast.sw.java.744.option.using_fixed_key_length.name": "고정 길이 검출 여부",
  "rule.sast.sw.java.745.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n중요 정보를 솔트(Salt) 없이 해싱하여 저장하면 공격자는 레인보우 테이블과 같은 방법으로 해시값을 미리 계산하여 원래 값을 찾을 수 있게 됩니다.\n특히 비밀번호와 같은 중요 정보를 해싱하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "rule.sast.sw.java.745.example.0.dangerous": "라인 6: 비밀번호 저장 시 솔트 없이 비밀번호에 대한 해시값을 얻고 있습니다.",
  "rule.sast.sw.java.745.example.0.safe": "라인 6: 솔트를 적용한 후 해시값을 계산하여 사용합니다.",
  "rule.sast.sw.java.745.name": "솔트 없는 해시 사용",
  "rule.sast.sw.java.745.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.745.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.745.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.745.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.746.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.\n프로그램의 자동 업데이트와 같은 상황에서 코드에 대한 암호화된 서명을 사용하지 않고 코드를 다운로드하면 위험합니다. 웹 서버에서 실행될 수 있는 위험한 형식의 파일을 원격지로부터 다운로드하여, 코드의 출처나 무결성 검사 없이 클라이언트에서 실행하는 경우 공격자가 의도하는 행위를 수행할 수 있습니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "rule.sast.sw.java.746.example.0.dangerous": "라인 3: URLClassLoader를 사용하여 원격의 파일을 다운로드 합니다. 다운로드 대상 파일에 대한 무결성 검사를 수행하지 않으므로 파일 변조 등으로 피해가 발생할 수 있습니다.",
  "rule.sast.sw.java.746.example.0.safe": "라인 20: 공개 키 방식의 암호 알고리즘과 메커니즘을 사용하여 전송 파일에 대한 서명을 생성하고, 파일의 변조 유무를 판단합니다.",
  "rule.sast.sw.java.746.name": "무결성 검사 없는 코드 다운로드",
  "rule.sast.sw.java.746.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.746.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.746.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.746.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.747.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "rule.sast.sw.java.747.example.0.dangerous": "라인 10: 파일의 존재를 확인하고 그 결과에 따라 분기가 일어납니다.\n라인 16: 파일 존재를 확인하는 시점과 파일을 사용하는 시점이 다르므로, 그 사이에 파일에 대한 삭제가 발생하면 프로그램이 예상하지 못하는 형태로 수행될 수 있습니다.",
  "rule.sast.sw.java.747.example.0.safe": "라인 8: 공유 리소스를 여러 스레드가 접근하여 사용할 경우, 동기화 구문을 사용하여 한 번에 하나의 스레드만 접근 가능하도록 변경합니다.\n라인 17: 접근 시점에 파일이 존재하지 않을 경우 FileNotFound 예외가 발생하므로 이 예외를 처리해줍니다.",
  "rule.sast.sw.java.747.name": "TOCTOU 경쟁 조건",
  "rule.sast.sw.java.749.description": "private 배열에 저장된 public 데이터 체커는 외부에서 접근 가능한 배열 객체를 private 배열 필드 변수에 저장하는 경우를 검출합니다.\n외부에서 접근 가능한 배열 객체를 private으로 선언된 배열 필드 변수에 저장하면 private 배열을 외부에서 접근할 수 있게 되어 접근 제어가 실질적으로 이루어 지지 않습니다. 사용자 정보 또는 외부에 노출하면 안되는 정보가 노출될 수 있습니다. 따라서 보안 상 치명적인 문제가 될 수 있습니다.\nprivate 배열 필드 변수에는 클래스 내부에서 직접 생성한 배열만을 저장합니다. 외부의 데이터를 배열에 전달해야 할 때는 배열 객체를 직접 저장하지 말고 각 원소의 값을 별도로 복사하여 저장합니다.",
  "rule.sast.sw.java.749.example.0.dangerous": "라인 4: userRoles 필드는 private으로 선언되어 있습니다.\n라인 5: public으로 선언된 setUserRoles() 메소드를 통해 외부의 배열 객체가 할당되면 userRoles 배열에 외부에서 임의로 접근 가능해집니다.",
  "rule.sast.sw.java.749.example.0.safe": "라인 7: 배열 객체 자체를 대입하는 대신 배열의 각 원소 내용을 복사합니다.",
  "rule.sast.sw.java.749.name": "private 배열에 저장된 public 데이터",
  "rule.sast.sw.java.749.option.excluded_class.description": "오류를 검출하지 않고 제외할 클래스 이름을 작성합니다.<br />예시) .*Dto",
  "rule.sast.sw.java.749.option.excluded_class.name": "제외 클래스",
  "rule.sast.sw.java.749.option.excluded_method.description": "오류를 검출하지 않고 제외할 메소드 이름을 작성합니다.<br />예시) .*Dto",
  "rule.sast.sw.java.749.option.excluded_method.name": "제외 메소드",
  "rule.sast.sw.java.749.option.excluded_package.description": "오류를 검출하지 않고 제외할 패키지 이름을 작성합니다.<br />예시) .*dto",
  "rule.sast.sw.java.749.option.excluded_package.name": "제외 패키지",
  "rule.sast.sw.java.750.description": "신뢰할 수 없는 입력에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.\n개발자들은 흔히 쿠키, 환경 변수 또는 히든 필드와 같은 입력값이 조작될 수 없다고 가정합니다. 하지만 공격자는 다양한 방법을 통해 이러한 입력값들을 변경할 수 있고 조작된 내용은 탐지되지 않을 수 있습니다. 이러한 입력값(쿠키, 환경 변수, 히든 필드 등)에 기반하여 인증이나 인가와 같은 보안 결정을 수행하는 경우 공격자는 해당 값을 조작하여 애플리케이션의 보안을 우회할 수 있으므로 외부 사용자에 의한 입력값을 신뢰해서는 안됩니다.\n상태 정보나 민감한 데이터, 사용자 세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행합니다. 또한 보안 설계 관점에서 신뢰할 수 없는 입력값이 애플리케이션 내부로 들어올 수 있는 지점을 파악해야 하며, 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토해야 합니다.",
  "rule.sast.sw.java.750.example.0.dangerous": "라인 9: 평문으로 사용자의 인증정보 및 \"authenticated\"를 쿠키에 저장하고 있습니다. 공격자는 쿠키 정보를 변경 가능하기 때문에 위험합니다.",
  "rule.sast.sw.java.750.example.0.safe": "라인 11: 사용자의 인증 정보를 세션에 저장하면 인증 정보가 외부에 노출될 위험을 제거할 수 있습니다.",
  "rule.sast.sw.java.750.name": "신뢰할 수 없는 입력에 의존한 보안 결정",
  "rule.sast.sw.java.750.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.750.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.750.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.750.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.752.description": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "rule.sast.sw.java.752.example.0.dangerous": "라인 4: 예외 이름이나 스택 트레이스를 출력하면 프로그램 내부 정보가 유출됩니다.",
  "rule.sast.sw.java.752.example.0.safe": "라인 4: 예외 이름이나 스택 트레이스를 출력하지 않습니다.",
  "rule.sast.sw.java.752.name": "시스템 정보 노출",
  "rule.sast.sw.java.752.option.additional_exception_class.description": "추가 검출할 예외 클래스 이름을 작성합니다.<br />예시) java.io.IOException",
  "rule.sast.sw.java.752.option.additional_exception_class.name": "추가 예외 클래스",
  "rule.sast.sw.java.752.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.752.option.default_exception_class.description": "체커가 검출할 기본 예외 클래스를 입력합니다.",
  "rule.sast.sw.java.752.option.default_exception_class.name": "체커가 검증하는 기본 예외 클래스 목록",
  "rule.sast.sw.java.752.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.752.option.exclude_print_stack_trace.description": "옵션을 사용하는 경우 printStackTrace 메소드 호출은 이슈로 검출하지 않습니다.",
  "rule.sast.sw.java.752.option.exclude_print_stack_trace.name": "printStackTrace 호출 제외 여부",
  "rule.sast.sw.java.752.option.exclude_println.description": "옵션을 사용하는 경우, println 메소드 호출은 이슈로 검출하지 않습니다.",
  "rule.sast.sw.java.752.option.exclude_println.name": "println 호출 제외 여부",
  "rule.sast.sw.java.752.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.752.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.757.description": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 코드를 검출합니다.\n외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링으로 그대로 사용하는 경우에 발생할 수 있는 보안약점입니다. 공격자는 포맷 스트링을 사용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽고 쓸 수 있습니다.\nprintf(), snprintf() 등 포맷 스트링을 사용하는 함수를 사용할 때는 사용자 입력값을 직접적으로 포맷 스트링으로 사용하거나 포맷 스트링 생성에 포함시키지 않도록 합니다. 사용자 입력값을 포맷 스트링을 사용하는 함수에 사용할 때는 가능하면 %s 포맷 스트링을 지정하고, 사용자 입력값은 2번째 이후의 매개변수로 사용합니다.",
  "rule.sast.sw.java.757.example.0.dangerous": "라인 10: 외부 입력값을 포맷 문자열 포함 여부를 확인하지 않고 출력값으로 사용하고 있습니다. 이 때 공격자가 \"%1$tm, %1$te\", 또는 \"%1$tY\" 와 같은 문자열을 입력하면 validDate가 실제 유효기간을 출력할 수 있습니다.",
  "rule.sast.sw.java.757.example.0.safe": "라인 10: 사용자로부터 입력받은 문자열을 포맷 문자열에 직접 포함시키지 않고, %s 포맷 문자열을 사용하여 정보 유출을 방지합니다.",
  "rule.sast.sw.java.757.name": "포맷 스트링 삽입",
  "rule.sast.sw.java.757.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.757.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.757.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.757.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.758.description": "에러 메시지를 통한 크로스 사이트 스크립팅 체커는 오류 메시지를 전송할 때 외부 입력과 함께 전송하는 경우를 검출합니다.\n오류 메시지에 외부 입력값을 포함시켜 전송할 경우 크로스 사이트 스크립트(XSS) 공격을 받을 수 있습니다. 공격자는 부적절한 스크립트를 수행하여 정보 유출 등의 공격을 발생시킬 수 있습니다.\n외부 입력을 오류 메시지에 직접 포함시키지 않아야 합니다.",
  "rule.sast.sw.java.758.example.0.dangerous": "라인 4: 외부 입력과 함께 오류 메시지를 전송했습니다.",
  "rule.sast.sw.java.758.example.0.safe": "라인 4: 외부 입력을 오류 메시지와 함께 출력하지 않도록 합니다.",
  "rule.sast.sw.java.758.name": "에러 메시지를 통한 크로스 사이트 스크립팅",
  "rule.sast.sw.java.758.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.758.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.758.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.758.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.759.description": "민감한 정보의 일반 텍스트 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.\n사용자 또는 시스템의 중요 정보가 포함된 데이터를 평문으로 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있습니다.\n민감한 정보를 통신 채널을 통하여 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "rule.sast.sw.java.759.example.0.dangerous": "라인 4: 속성 파일에서 읽어들인 비밀번호의 평문을 네트워크를 통해 서버에 전송하고 있습니다. 이 경우에 패킷 스니핑을 통하여 비밀번호가 노출될 수 있습니다.",
  "rule.sast.sw.java.759.example.0.safe": "라인 10: 비밀번호를 네트워크를 통해 서버에 전송하기 전에 최소한 128비트 길이의 키를 사용하여 암호화하는 것이 바람직합니다.",
  "rule.sast.sw.java.759.name": "민감한 정보의 일반 텍스트 전송",
  "rule.sast.sw.java.759.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.759.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.759.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.759.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.837.description": "서블릿 주석문 안의 비밀번호 체커는 서블릿 코드의 주석문 안에 비밀번호에 대한 정보가 포함된 경우를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.java.837.example.0.dangerous": "라인 1: 주석문 내에 password라고 명시되어 있으므로 비밀번호로 취급합니다.\n라인 2: 주석문 내에 passwd라고 명시되어 있으므로 비밀번호로 취급합니다.",
  "rule.sast.sw.java.837.example.0.safe": "라인 1: 프로그램 개발 시에 주석문 등에 남겨놓은 사용자 계정이나 비밀번호 등의 정보는 개발 완료 시에 확실하게 삭제해야 합니다.",
  "rule.sast.sw.java.837.name": "서블릿 주석문 안의 비밀번호",
  "rule.sast.sw.java.837.option.password_variable.description": "패스워드를 나타내는 변수 이름",
  "rule.sast.sw.java.837.option.password_variable.name": "비밀번호를 나타내는 변수 이름",
  "rule.sast.sw.java.838.description": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드 받는 코드를 검출합니다.\n서버 측에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드되어 해당 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부 명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있습니다.\n화이트리스트 방식으로 허용된 확장자만 업로드하도록 허용합니다. 업로드되는 파일을 저장할 때에는 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장합니다.",
  "rule.sast.sw.java.838.example.0.dangerous": "라인 9: 업로드할 파일에 대한 유효성을 검사하지 않아서 위험한 유형의 파일을 공격자가 업로드하거나 전송할 수 있습니다.",
  "rule.sast.sw.java.838.example.0.safe": "라인 9: 업로드 가능한 파일의 크기를 제한합니다.\n라인 14: 업로드 가능한 파일의 종류를 제한합니다.",
  "rule.sast.sw.java.838.name": "제한되지 않은 파일 업로드",
  "rule.sast.sw.java.838.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.838.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.838.option.file_item_name_method.description": "FileItem 이름 획득 메소드를 입력합니다.<br />예시) org.apache.commons.fileupload.FileItem.getName",
  "rule.sast.sw.java.838.option.file_item_name_method.name": "FileItem 이름 획득 메소드",
  "rule.sast.sw.java.838.option.file_item_write_method.description": "FileItem에 대해 쓰기를 수행하는 메소드를 입력합니다.<br />예시) org.apache.commons.fileupload.FileItem.write",
  "rule.sast.sw.java.838.option.file_item_write_method.name": "FileItem 쓰기 메소드",
  "rule.sast.sw.java.838.option.multipart_file_name_method.description": "MultipartFile에 대해 원본 이름을 획득하는 메소드를 작성합니다.<br />예시) org.springframework.web.multipart.MultipartFile.getOriginalFilename",
  "rule.sast.sw.java.838.option.multipart_file_name_method.name": "MultipartFile 원본 이름 획득 메소드",
  "rule.sast.sw.java.838.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.838.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.844.description": "누락된 비밀번호 복구 제어 체커는 비밀번호 복구 시도 횟수를 제한하기 위한 로직을 구현하지 않은 경우를 검출합니다.\n이 때 비밀번호 복구 루틴의 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 비밀번호 복구 루틴이 호출되기 전 비밀번호 복구 시도를 반복문에서 제어합니다. 다만 조건문이 언제나 참인 경우 비밀번호 복구 시도를 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 비교 연산자를 사용하고 있습니다.\n비밀번호 복구 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 비밀번호를 변경할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 비밀번호 복구 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.java.844.example.0.dangerous": "라인 2: 비밀번호 복구 시도에 횟수 제한이 없습니다.",
  "rule.sast.sw.java.844.example.0.safe": "라인 2: 비밀번호 복구 시도 횟수를 제한합니다.",
  "rule.sast.sw.java.844.name": "누락된 비밀번호 복구 제어",
  "rule.sast.sw.java.844.option.check_inner_control.description": "옵션을 사용하는 경우 비밀번호 복구 루틴 내부의 모든 반복문이 제어되는지 검사합니다.",
  "rule.sast.sw.java.844.option.check_inner_control.name": "내부 제어 검사",
  "rule.sast.sw.java.844.option.check_outer_control.description": "옵션을 사용하는 경우, 비밀번호 복구 루틴이 외부에서 제어되는지 검사합니다.",
  "rule.sast.sw.java.844.option.check_outer_control.name": "외부 제어 검사",
  "rule.sast.sw.java.844.option.password_recovery_method.description": "비밀번호 복구 루틴의 이름을 작성합니다.<br/>예시) .+..*recoverPassword",
  "rule.sast.sw.java.844.option.password_recovery_method.name": "비밀번호 복구 루틴 이름",
  "rule.sast.sw.java.845.description": "누락된 로그인 제어 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n이 때 ID와 비밀번호 변수의 식별을 위한 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 로그인 루틴이 호출되기 전 로그인 시도를 반복문에서 제어합니다. 다만 조건문이 횟수 제한이 없는 경우 로그인 입력을 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 대소 비교 연산자를 사용하고 있습니다.\n로그인 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 로그인에 성공할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.java.845.example.0.dangerous": "라인 2: 로그인 시도에 횟수 제한이 없습니다.",
  "rule.sast.sw.java.845.example.0.safe": "라인 4: 로그인 시도 횟수를 제한합니다.",
  "rule.sast.sw.java.845.name": "누락된 로그인 제어",
  "rule.sast.sw.java.845.option.check_inner_control.description": "옵션을 사용하는 경우, 로그인 루틴 내부의 모든 반복문이 제어되는지 검사합니다.",
  "rule.sast.sw.java.845.option.check_inner_control.name": "내부 제어 검사",
  "rule.sast.sw.java.845.option.check_outer_control.description": "옵션을 사용하는 경우, 로그인 루틴이 외부에서 제어되는지 검사합니다.",
  "rule.sast.sw.java.845.option.check_outer_control.name": "외부 제어 검사",
  "rule.sast.sw.java.845.option.login_method.description": "로그인 루틴 이름을 작성합니다.<br/>예시) .+..*login",
  "rule.sast.sw.java.845.option.login_method.name": "로그인 루틴 이름",
  "rule.sast.sw.java.846.description": "관리자 페이지 노출 체커는 쉽게 유추할 수 있는 이름으로 관리자 페이지를 작성한 경우를 검출합니다.\n금지할 관리자 페이지 이름 형식은 옵션에서 지정할 수 있습니다. 예를 들어 admin.jsp와 같은 이름은 쉽게 유추 가능합니다.\n관리자 페이지의 주소를 쉽게 유추 가능하면 공격자가 관리자 페이지의 모양과 구조를 분석하여 다른 공격의 진입로로 사용할 수 있습니다.\n관리자 페이지의 이름을 유추하기 어려운 이름으로 변경합니다.",
  "rule.sast.sw.java.846.example.0.dangerous": "라인 2: 옵션으로 지정된 위험한 이름의 페이지를 사용했습니다.",
  "rule.sast.sw.java.846.example.0.safe": "라인 2: 페이지에 좀 더 복잡한 이름을 사용해 유추하기 어렵도록 합니다.",
  "rule.sast.sw.java.846.name": "관리자 페이지 노출",
  "rule.sast.sw.java.846.option.forbidden_page_name.description": "금지할 관리자 페이지 이름 형식을 입력합니다.<br/>예시) admin.*",
  "rule.sast.sw.java.846.option.forbidden_page_name.name": "금지할 관리자 페이지 이름",
  "rule.sast.sw.java.847.description": "특권 블록으로 인한 정보 누출 체커는 private이 아닌 메소드 내에서 java.security.AccessController.doPrivileged()를 호출하는 경우를 검출합니다.\nprivate이 아닌 메소드 내에서 java.security.AccessController.doPrivileged()를 호출하는 경우를 검출합니다.또한 private 메소드 내에서 doPrivileged()를 호출하더라도 전달되는 인자가 PrivilegedAction<Void> 타입일 경우에만 안전하다고 판단합니다.\n신뢰할 수 없는 코드를 함께 실행해야 하는 환경에서 doPrivileged() 메소드를 호출하는 메소드가 public으로 선언되어 있으면 신뢰할 수 없는 코드에서 특권 블록에 해당하는 영역의 메소드를 임의로 호출할 수 있어 위험합니다.\ndoPrivileged() 메소드를 호출하는 메소드는 항상 private으로 선언하고 그 인자로는 PrivilegedAction<Void> 타입만 사용합니다.",
  "rule.sast.sw.java.847.example.0.dangerous": "라인 3: public으로 지정된 publicPasswordFile() 메소드에서 doPrivileged() 메소드를 호출하고 있습니다.",
  "rule.sast.sw.java.847.example.0.safe": "라인 1: doPrivileged() 메소드는 private() 메소드 내에서만 호출되어야 합니다.",
  "rule.sast.sw.java.847.name": "특권 블록으로 인한 정보 누출",
  "rule.sast.sw.java.848.description": "위험한 메소드 노출 체커는 지정된 메소드가 public으로 선언되어 있거나, 혹은 public으로 선언된 메소드 내에서 지정된 메소드를 호출하는 경우를 검출합니다.\n옵션을 통해 노출을 금지할 메소드 이름을 지정할 수 있습니다.\n어떤 메소드는 클래스 내부에서만 사용하도록 제약이 필요할 수 있습니다. 그런 메소드를 클래스 외부에서 호출 가능하도록 잘못 선언하면 클래스 내부의 중요 정보가 노출될 수도 있습니다.\n해당되는 메소드는 private으로 선언하고 클래스 내부에서만 호출하도록 합니다.",
  "rule.sast.sw.java.848.example.0.dangerous": "라인 1: 위험한 메소드가 public으로 선언되었습니다.\n라인 7: 위험한 메소드가 public 메소드 내에서 호출되었습니다.",
  "rule.sast.sw.java.848.example.0.safe": "라인 1: 위험한 메소드를 사용하지 않습니다.",
  "rule.sast.sw.java.848.name": "위험한 메소드 노출",
  "rule.sast.sw.java.848.option.dangerous_method.description": "위험한 메소드 이름 형식을 작성합니다.<br/>예시) .+.dangerousMethod",
  "rule.sast.sw.java.848.option.dangerous_method.name": "위험한 메소드 이름",
  "rule.sast.sw.java.849.description": "누락된 입력 검증 체커는 입력으로 지정된 변수를 if 등의 조건문으로 검사를 수행하지 않고 사용하는 경우를 검출합니다.\n옵션을 통해 입력에 해당하는 변수 이름을 지정할 수 있습니다.\n외부 입력이 의도한 양식에 맞는지 검사하지 않고 사용하면 각종 공격에 노출될 수 있습니다.\n외부 입력은 항상 검증 및 필터를 거친 후 사용합니다.",
  "rule.sast.sw.java.849.example.0.dangerous": "라인 2: 입력으로 지정된 input 변수가 검사 없을 사용했습니다.",
  "rule.sast.sw.java.849.example.0.safe": "라인 2: 입력 변수가 의도한 양식에 맞는 값인지 확인한 후 사용합니다.",
  "rule.sast.sw.java.849.name": "누락된 입력 검증",
  "rule.sast.sw.java.849.option.target_variable.description": "사용되기 전에 확인되어야 하는 변수 이름을 지정합니다.<br/>예시) .+.input",
  "rule.sast.sw.java.849.option.target_variable.name": "대상 변수",
  "rule.sast.sw.java.850.description": "이메일 주소 교체 체커는 지정된 이메일 주소 변수에 값을 대입하는 경우를 검출합니다.\n옵션을 통해 이메일 주소에 해당하는 변수 이름을 지정할 수 있습니다.\n예를 들어 시스템 관리자 이메일 주소를 실수로 변경하면 시스템 관리 보고서나 로그 등을 통해 중요 정보가 외부로 노출될 수 있습니다.\n해당 변수에 값을 대입하지 않도록 합니다.",
  "rule.sast.sw.java.850.example.0.dangerous": "라인 2: 지정된 변수에 값이 대입되었습니다.",
  "rule.sast.sw.java.850.example.0.safe": "라인 2: 해당 변수에 값을 직접 대입하지 않도록 합니다.",
  "rule.sast.sw.java.850.name": "이메일 주소 교체",
  "rule.sast.sw.java.850.option.target_variable.description": "E-mail 주소 변수 이름 형식을 작성합니다.<br/>예시) .+.email",
  "rule.sast.sw.java.850.option.target_variable.name": "E-mail 주소 변수 이름",
  "rule.sast.sw.java.851.description": "누락된 인증 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.\n호출이 필요한 인증 제어 루틴의 이름과 제어 루틴을 호출해야 하는 페이지의 이름은 옵션으로 입력할 수 있습니다.\n인증 제어 루틴을 호출하지 않으면 허용되지 않은 사용자가 권한을 획득할 수 있습니다.\n반드시 인증 제어 루틴을 적절한 위치에서 호출해야 합니다.",
  "rule.sast.sw.java.851.example.0.dangerous": "라인 3: 지정된 페이지에 인증 제어 루틴 호출이 없습니다.",
  "rule.sast.sw.java.851.example.0.safe": "라인 3: 지정된 페이지에 인정 제어 루틴 호출을 삽입합니다.",
  "rule.sast.sw.java.851.name": "누락된 인증",
  "rule.sast.sw.java.851.option.authentication_control_method.description": "인증 제어 루틴 이름을 작성합니다.<br/>예시) .+authenticate.*",
  "rule.sast.sw.java.851.option.authentication_control_method.name": "인증 제어 루틴 이름",
  "rule.sast.sw.java.851.option.target_file.description": "분석 대상 파일 이름 형식을 작성합니다.<br/>예시) .+admin.*",
  "rule.sast.sw.java.851.option.target_file.name": "대상 파일 이름",
  "rule.sast.sw.java.893.description": "안전하지 않은 비밀번호 복구 체커는 비밀번호를 복구할 때 임시 비밀번호를 새롭게 설정하는 것이 아니라 파일 등 외부로부터 기존 비밀번호를 가져와서 할당하는 코드를 검출합니다.\n기존 비밀번호를 복구할 수 있다면 기존 비밀번호가 평문 혹은 복호화 가능한 암호문 형태로 저장되어 있었다는 뜻입니다. 비밀빈호를 그런 식으로 저장하면 유출의 위험이 발생합니다. 비밀번호는 항상 복호화 불가능한 단방향 해시 형태로만 저장되어야 합니다.\n안전한 비밀번호 복구를 위해 기존의 비밀번호를 재설정하는 것이 아닌, 새로운 임시 비밀번호 할당 등의 방법을 준수해야 합니다.",
  "rule.sast.sw.java.893.example.0.dangerous": "라인 6: 기존 비밀번호를 외부에서 읽어들이고 있습니다.\n라인 8: 읽어들인 비밀번호를 설정합니다.",
  "rule.sast.sw.java.893.example.0.safe": "라인 6: 임시 비밀번호를 무작위로 생성하여 설정합니다.",
  "rule.sast.sw.java.893.name": "안전하지 않은 비밀번호 복구",
  "rule.sast.sw.java.893.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.893.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.893.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.893.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.894.description": "Android에서의 정보 누출 체커는 중요 정보를 Android의 SD카드에 저장하는 경우를 검출합니다.\n중요 정보로는 환경 변수등과 같은 시스템 데이터와 기기 ID, 전화번호, Cell 정보등과 같은 단말기의 정보가 포함됩니다.\nSD카드는 접근 제어가 충분히 이루어지지 않으므로 SD카드에 중요한 정보를 저장하면 위험합니다.\n중요 정보는 SD카드에 저장하지 말고 필요할 때마다 시스템에서 직접 읽어 사용합니다.",
  "rule.sast.sw.java.894.example.0.dangerous": "라인 12: 기기의 전화번호를 SD 카드에 저장합니다.",
  "rule.sast.sw.java.894.example.0.safe": "라인 11: 기기의 전화번호가 필요하다면 내부적으로 작업을 마치고 파기합니다. SD 카드에 저장하면 안됩니다.",
  "rule.sast.sw.java.894.name": "Android에서의 정보 누출",
  "rule.sast.sw.java.894.option.alarm.name": "검출 규칙",
  "rule.sast.sw.java.894.option.exclude.name": "제외 규칙",
  "rule.sast.sw.java.894.option.propagator.name": "전파 규칙",
  "rule.sast.sw.java.894.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.java.895.description": "특권 블록 내의 신뢰할 수 없는 데이터 체커는 매개 변수로 전달된 신뢰할 수 없는 데이터가 곧바로 특권 블록 내에서 사용되는 경우를 검출합니다.\n특권 블록 내에서는 프로그램이 더 높은 시스템 권한을 가지고 실행되므로 위험한 행동을 하지 않도록 더욱 주의를 기울여야 합니다. 검증되지 않은 외부 입력이 특권 블록 내에서 임의로 사용되면 이 사실을 사용해 공격자가 시스템에 예상 밖의 영향을 미칠 수 있습니다.\n특권 블록 내에서 외부 데이터를 사용해야 할 경우 안전성을 검사한 후 사용합니다.",
  "rule.sast.sw.java.895.example.0.dangerous": "라인 9: filename이 특권 블록 내에서 아무런 검사 없이 파일 경로로 사용되고 있습니다.",
  "rule.sast.sw.java.895.example.0.safe": "라인 5: cleanAFilenameAndPath() 필터 메소드를 통해 파일 이름의 무결성을 검사하고 그 결과인 cleanFilename을 사용하도록 수정했습니다. cleanAFilenameAndPath() 메소드의 내용은 시스템의 성격과 파일 이름으로 수행하고자 하는 작업의 종류에 따라 달라질 수 있습니다.",
  "rule.sast.sw.java.895.name": "특권 블록 내의 신뢰할 수 없는 데이터",
  "rule.sast.sw.java.896.description": "SSI 삽입 체커는 검증되지 않은 외부 입력값이 사용된 Server-Side Includes(SSI)를 검출합니다.\nServer-Side Includes(SSI)는 서버 측의 스크립트를 사용하는 간단한 구문으로, 오직 웹서버와 관련된 간단한 작업들을 수행할 때에 사용됩니다. 외부에서 입력된 SSI 지시어들은 파일의 내용을 출력하고 시스템 명령어를 수행하는 등 예측하지 못한 방식으로 내부 정보를 유출시킬 수 있습니다.\n외부 입력값을 검증 후 사용합니다.",
  "rule.sast.sw.java.896.example.0.dangerous": "라인 6: SSI를 생성하는데 외부 입력값을 직접 사용했습니다.",
  "rule.sast.sw.java.896.example.0.safe": "라인 3: SSI를 생성하기 위해 외부 입력을 직접 사용하는 코드를 삭제합니다.",
  "rule.sast.sw.java.896.name": "SSI 삽입",
  "rule.sast.sw.java.9.description": "파일, 프로그램, 라이브러리, 코드의 전자서명에 대한 유효성 검증이 적절하지 않아 공격자의 악의적인 코드가 실행 가능한 보안약점입니다.\nXML을 사용할 때는 XML Signature Secure Validation Mode를 통해 전자서명을 확인하여 유효성 검증을 진행해야 합니다.\n전자서명을 포함한 XML을 생성하고 XML 검증 모드를 통해 검증합니다. 예를 들어, setProperty()에서 `\"org.jcp.xml.dsig.secureValidation\"`와 `Boolean.TRUE` 값을 파라미터로 사용하여 XML Signature Secure Validation Mode를 실행하여 전자서명을 검증합니다.",
  "rule.sast.sw.java.9.example.0.dangerous": "라인 1: setProperty()를 통해 속성을 설정하지 않으면 XML 보안 검증 모드를 실행하지 않습니다.",
  "rule.sast.sw.java.9.example.0.safe": "라인 2: setProperty()를 통해 XML Signature Secure Validation Mode를 실행하여 전자서명을 검증합니다.",
  "rule.sast.sw.java.9.name": "부적절한 전자서명 확인(XML)",
  "rule.sast.sw.java.956.description": "무한 반복 체커는 영원히 끝나지 않을 수도 있는 반복문을 검출합니다.\n대부분의 경우에 무한 루프는 리소스 고갈을 발생시키고 시스템의 정상적인 서비스를 제공할 수 없게 만듭니다. 정적 분석을 통해서 무한 재귀 호출 혹은 무한 루프를 사전에 완벽하게 예방하는 것은 이론적으로 불가능합니다. 따라서 이 체커는 대표적인 특정 패턴이나 간단한 경우에 대해서만 검사가 가능합니다.\n무한 루프가 되지 않도록 수정합니다. 조건식에 사용되는 변수들이 반복문 실행 도중 절대 변하지 않으면 무한 루프일 가능성이 높습니다.",
  "rule.sast.sw.java.956.example.0.dangerous": "라인 3: while 구문의 조건식에 true가 사용되고 내부에서 반복문 실행 중 아무런 변화도 일어나지 않으므로 무한루프입니다.\n라인 5: for 구문의 조건식이 비어 있을 경우 true를 입력한 것과 같은 의미로 해석됩니다.\n라인 8: do 구문의 조건식에 true가 사용되고 내부에서 반복문 실행 중 아무런 변화도 일어나지 않으므로 무한루프입니다.",
  "rule.sast.sw.java.956.example.0.safe": "라인 4: 종료할 때까지 지속적으로 동작하는 시스템 서비스의 경우 의도적으로 무한 루프를 만들 수도 있습니다. 이런 경우에는 리소스를 지속적으로 소모하지 않도록 제어해야 합니다.\n라인 7: 종료할 때까지 지속적으로 동작하는 시스템 서비스의 경우 의도적으로 무한 루프를 만들 수도 있습니다. 이런 경우에는 리소스를 지속적으로 소모하지 않도록 제어해야 합니다.\n라인 10: 조건식에 변화를 일으킬 수 있는 행동을 반복문 안에서 수행해야 합니다.",
  "rule.sast.sw.java.956.name": "무한 반복",
  "rule.sast.sw.java.956.option.check_break_statement.description": "break 문을 검사할지 선택합니다.",
  "rule.sast.sw.java.956.option.check_break_statement.name": "break 문 검사 유무",
  "rule.sast.sw.java.956.option.check_general_loop.description": "무한 반복문이 아닌 일반 반복문을 검사 할지 선택합니다.",
  "rule.sast.sw.java.956.option.check_general_loop.name": "일반 반복문 검사 유무",
  "rule.sast.sw.java.956.option.check_return_statement.description": "return 문을 검사할지 선택합니다.",
  "rule.sast.sw.java.956.option.check_return_statement.name": "return 문 검사 유무",
  "rule.sast.sw.java.956.option.exclude_class.description": "분석에서 제외할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.956.option.exclude_class.name": "분석 제외 클래스",
  "rule.sast.sw.java.956.option.exclude_method.description": "분석에서 제외할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.956.option.exclude_method.name": "분석 제외 메소드",
  "rule.sast.sw.java.956.option.exclude_package.description": "분석에서 제외할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.956.option.exclude_package.name": "분석 제외 패키지",
  "rule.sast.sw.java.956.option.include_class.description": "분석에 포함할 클래스 이름을 입력합니다.",
  "rule.sast.sw.java.956.option.include_class.name": "분석 포함 클래스",
  "rule.sast.sw.java.956.option.include_method.description": "분석에 포함할 메소드 이름을 입력합니다.",
  "rule.sast.sw.java.956.option.include_method.name": "분석 포함 메소드",
  "rule.sast.sw.java.956.option.include_package.description": "분석에 포함할 패키지 이름을 입력합니다.",
  "rule.sast.sw.java.956.option.include_package.name": "분석 포함 페키지",
  "rule.sast.sw.java.956.option.method_name.description": "무한 반복을 정지할 수 있는 메소드 이름을 입력합니다.<br />예시) java.lang.Thread.yield",
  "rule.sast.sw.java.956.option.method_name.name": "반복문 정지 메소드",
  "rule.sast.sw.java.956.option.trusted_readonly_methods.description": "객체의 메모리 상태를 변화시키지 않고 객체의 정보를 읽기만 하는 메소드 이름을 입력합니다.<br />예시) compareTo",
  "rule.sast.sw.java.956.option.trusted_readonly_methods.name": "객체의 메모리 상태를 변화시키지 않는 메소드",
  "rule.sast.sw.js.11.description": "크로스 사이트 스크립트 공격은 웹 사이트에 악성 코드를 삽입하는 공격 방법입니다. 공격은 일반적으로 애플리케이션의 사용자를 목표로 삼으며, 자동으로 사용자가 악성 코드를 실행하게 하는 등의 피해를 입힐 수 있습니다. 예를 들어, 검증되지 않은 외부 입력이 동적 웹 페이지 생성에 사용될 경우, 전송된 동적 웹 페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출 등의 공격을 유발할 수 있습니다.\nXSS를 막기 위해서는 RestAPI를 통해 웹으로부터 받은 값을 문자열 치환 함수를 이용하여 치환하거나 잘 만들어진 외부 XSS 방지 라이브러리를 활용해야 합니다. 외부에서 받은 값인 `req.params`, `req.body` 등의 객체를 replace()를 통해 `&`, `>`, `<`, ```, `‘`, `/`, `(`, `)`를 `&amp;`, `&gt;`, `&lt;`, `&quot;`, `&#x27;`, `&#x2F;`, `&#x28;`, `&#x29;`로 변환해줍니다. 혹은 `node-esapi`, `xss-filter`, `escape-html`, `sanitize-html` 등 잘 알려진 XSS 방지 라이브러리를 이용하여 객체 값을 사용하면 안전합니다.",
  "rule.sast.sw.js.11.example.0.dangerous": "라인 3: 외부로부터 받은 XSS 위험이 있는 데이터를 치환 없이 그대로 전송했습니다.",
  "rule.sast.sw.js.11.example.0.safe": "라인 4-5: 입력 받은 데이터를 XSS 방지 라이브러리인 inHTMLData()를 사용하기 때문에 안전합니다.",
  "rule.sast.sw.js.11.name": "크로스 사이트 스크립트(ExpressJS)",
  "rule.sast.sw.js.11.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) param(*) of name(\"escape\")",
  "rule.sast.sw.js.11.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.11.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.11.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.11.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.11.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.11.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) param(*) of name(reg(\".*\"))",
  "rule.sast.sw.js.11.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.11.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다. 예시) return of name(reg(\"\\S+.body\\.\\S+\"))",
  "rule.sast.sw.js.11.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.12.description": "적절한 검증절차를 거치지 않은 사용자 입력값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 악영향을 미칠 수 있습니다.\nNode.js에서 exec()나 execSync()는 셸을 생성한 후에 명령어를 실행하기 때문에 검증되지 않은 값이 들어간다면 운영체제 명령어 삽입 보안약점을 유발합니다.\n셸을 생성하는 exec()나 execSync() 대신 execFile()이나 execFileSync() 등을 사용합니다. 또한, OS 함수를 사용할 때 셸 옵션을 True로 설정하지 않습니다. 꼭 필요한 경우에는 사용자 입력 값을 필터링 하여 사용해야 안전합니다.",
  "rule.sast.sw.js.12.example.0.dangerous": "라인 4-5: 셸을 생성하여 운영체제 명령어 삽입을 유발하는 메소드를 사용하여 위험합니다.\n라인 7-10: OS 관련 메소드에 옵션 값으로 shell을 활성화시켜 운영체제 명령어 삽입 취약점을 유발합니다.",
  "rule.sast.sw.js.12.example.0.safe": "라인 4-5: 운영체제 명령어 삽입을 유발하는 메소드를 사용하지 않습니다.\n라인 7-8: 셸 옵션을 사용하지 않아 default값으로 셸이 생성되지 않습니다.\n라인 9-10: 셸 옵션을 false로 사용하여 셸이 생성되지 않습니다.",
  "rule.sast.sw.js.12.example.1.dangerous": "라인 4: 셸을 생성하여 운영체제 명령어 삽입을 유발하는 메소드를 사용하여 위험합니다.",
  "rule.sast.sw.js.12.example.1.safe": "라인 8: 운영체제 명령어 삽입을 유발하는 문자를 필터링하여 안전합니다.",
  "rule.sast.sw.js.12.name": "운영체제 명령어 삽입",
  "rule.sast.sw.js.12.option.custom_taint_sink.description": "셸 옵션 확인이 필요한 함수",
  "rule.sast.sw.js.12.option.custom_taint_sink.name": "셸 옵션 확인 함수",
  "rule.sast.sw.js.12.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.12.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.12.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.12.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.12.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.12.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.12.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"exec\")",
  "rule.sast.sw.js.12.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.12.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of name(reg(\"\\S+\\.body.*\"))",
  "rule.sast.sw.js.12.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1478.description": "DOM 기반 크로스 사이트 스크립팅 체커는 외부 입력값을 검증 없이 DOM 객체 출력에 사용하는 경우를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다. 옵션을 통해 외부 정보 입력 함수, 사용 함수, 전파 함수 및 필터 함수를 작성할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.js.1478.example.0.dangerous": "라인 6: 쿠키 내에 user 뒤에 메타 문자나 소스 코드가 포함된 값을 갖는 경우, 웹 브라우저가 HTTP 응답을 표시할 때 코드를 실행합니다.",
  "rule.sast.sw.js.1478.example.0.safe": "라인 5: 필터 함수를 작성하여 위험을 제거합니다.\nEncode 함수인 encodeURIComponent를 사용하면 안전하다고 생각할 수 있지만,\n추가적인 필터 함수를 사용해야만 취약한 부분이 존재하므로 필터 함수를 작성하여 제어하는 것을 권장합니다.",
  "rule.sast.sw.js.1478.name": "DOM 기반 크로스 사이트 스크립팅",
  "rule.sast.sw.js.1478.option.alarm.name": "검출 규칙",
  "rule.sast.sw.js.1478.option.exclude.name": "제외 규칙",
  "rule.sast.sw.js.1478.option.propagator.name": "전파 규칙",
  "rule.sast.sw.js.1478.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.js.1478.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) return of name(\"encodeURIComponent\")",
  "rule.sast.sw.js.1478.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1478.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1478.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1478.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1478.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1478.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) param(*) of fqn(\"eval\")",
  "rule.sast.sw.js.1478.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1478.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다. \n예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.1478.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1481.description": "부적절한 프로퍼티 값 체커는 음수로 설정되지 않아야 하는 설정값이 음수로 설정된 경우를 검출합니다.\n데이터의 길이와 같은 값은 음수로 설정되면 적절하지 않은 동작을 할 수 있습니다.\n해당 값은 항상 0을 포함한 양수로 설정합니다.",
  "rule.sast.sw.js.1481.example.0.dangerous": "라인 1: Content-Length 헤더를 음수로 잘못 설정했습니다. 대부분의 경우 Content-Length 헤더의 값은 서버로 전송하려는 데이터의 길이를 의미하므로 0이거나 양의 정수여야만 합니다.",
  "rule.sast.sw.js.1481.example.0.safe": "라인 1: Content-Length 헤더를 0이나 양수로 재설정하여 올바르게 동작하도록 합니다.",
  "rule.sast.sw.js.1481.name": "부적절한 프로퍼티 값",
  "rule.sast.sw.js.1481.option.target_pattern.description": "음수를 값으로 가질수 없는 프로퍼티를 입력하세요..<br />예시) Content-Length",
  "rule.sast.sw.js.1481.option.target_pattern.name": "음수를 값으로 가질 수 없는 프로퍼티",
  "rule.sast.sw.js.1513.description": "원격 코드 실행 체커는 eval 함수를 사용하는 경우를 검출합니다.\neval 함수를 사용하면, 호출할 때 동적으로 파서가 동작하여 실행되므로 속도가 매우 느려집니다.\n코드를 동적으로 실행시키기 때문에 악의적인 공격자가 악의적인 코드를 실행시킬 수 있습니다. eval 함수는 전역유효범위를 전제로 실행시키기 때문에 외부 변수에 영향을 끼칠 수 있습니다.\neval() 함수를 사용하지 않습니다. 만약 eval() 함수가 필요한 경우 클로저(closure)를 사용하여 외부 변수에 영향이 없도록 한 후에 eval() 함수를 호출합니다.",
  "rule.sast.sw.js.1513.example.0.dangerous": "라인 3: eval() 함수를 사용했습니다.",
  "rule.sast.sw.js.1513.example.0.safe": "라인 3: JSON 데이터를 파싱할 때는 eval대신 parseJSON을 사용합니다.\n라인 8: eval을 사용하지 않습니다.\n라인 12: function closure를 사용하여 호출하여, 외부 변수에 영향이 없도록 호출합니다.",
  "rule.sast.sw.js.1513.name": "원격 코드 실행",
  "rule.sast.sw.js.1513.option.closure_enabled.description": "체크 해제시 클로저 함수 내부에 있을 때도 검사합니다.",
  "rule.sast.sw.js.1513.option.closure_enabled.name": "클로저 검사 여부",
  "rule.sast.sw.js.1516.description": "로컬 저장소에서 세션 저장소로 정보 누출 체커는 localStorage에서 sessionStorage로 데이터를 이동하는 경우를 검출합니다.\nlocalStorage와 sessionStorage 사이의 값을 이동하면 모르는 사이에 민감한 정보가 노출될 수 있습니다. HTML5에서는 데이터를 저장할수 있는 localStorage 및 sessionStorage를 제공합니다. sessionStorage는 한 페이지 인스턴스와 현재 브라우저 세션에만 지속되고, localStorage는 여러 페이지에 대하여 지속하여 사용할 수 있습니다. 따라서 이러한 값을 서로 옮기게 되면 사용자가 의도한 대로 사용되지 않고, 민감한 정보가 다른 의미로 사용될 수 있습니다.\n두 저장 공간 사이에서 값을 이동하지 않습니다.",
  "rule.sast.sw.js.1516.example.0.dangerous": "라인 4: localStorage에서 값을 꺼냅니다.\n라인 6: localStorage에서 나온 값을 sessionStorage에 저장합니다.",
  "rule.sast.sw.js.1516.example.0.safe": "라인 4: 다른 저장 공간으로 값을 이동시키지 않습니다.",
  "rule.sast.sw.js.1516.name": "로컬 저장소에서 세션 저장소로 정보 누출",
  "rule.sast.sw.js.1516.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1516.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1516.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1516.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1516.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.",
  "rule.sast.sw.js.1516.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1516.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of fqn(\"sessionStorage.setItem\")",
  "rule.sast.sw.js.1516.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1516.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"localStorage.getItem\")",
  "rule.sast.sw.js.1516.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1517.description": "세션 저장소에서 로컬 저장소로 정보 누출 체커는 sessionStorage에서 localStorage로 데이터를 이동하는 경우를 검출합니다.\nlocalStorage와 sessionStorage 사이의 값을 이동하면 모르는 사이에 민감한 정보가 노출될 수 있습니다. HTML5에서는 데이터를 저장할수 있는 localStorage 및 sessionStorage를 제공합니다. sessionStorage는 한 페이지 인스턴스와 현재 브라우저 세션에만 지속되고, localStorage는 여러 페이지에 대하여 지속하여 사용할 수 있습니다. 따라서 이러한 값을 서로 옮기게 되면 사용자가 의도한 대로 사용되지 않고, 민감한 정보가 다른 의미로 사용될 수 있습니다.\n두 저장 공간 사이에서 값을 이동하지 않습니다.",
  "rule.sast.sw.js.1517.example.0.dangerous": "라인 4: sessionStorage에서 값을 꺼냅니다.\n라인 6: sessionStorage에서 나온 값을 localStorage에 저장합니다.",
  "rule.sast.sw.js.1517.example.0.safe": "라인 4: 다른 저장 공간으로 값을 이동시키지 않습니다.",
  "rule.sast.sw.js.1517.name": "세션 저장소에서 로컬 저장소로 정보 누출",
  "rule.sast.sw.js.1517.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1517.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1517.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1517.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1517.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.",
  "rule.sast.sw.js.1517.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1517.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of fqn(\"localStorage.setItem\")",
  "rule.sast.sw.js.1517.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1517.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"sessionStorage.getItem\")",
  "rule.sast.sw.js.1517.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1518.description": "크로스 도큐먼트 메시징 체커는 postMessage() 함수의 도메인 인자로 `*`을 전달하는 경우를 검출합니다.\nHTML5에서는 postMessage() 함수를 통해 웹페이지 간 메시지를 주고받을 수 있는 기능을 제공합니다. 이때 도메인을 `*`로 지정하게 되면 원본에 상관없지 메시지를 전송할 수 있고, 이를 통해 악성 스크립트가 피해자 애플리케이션과 링크되어 실행될 수 있습니다.\npostMessage() 함수를 사용할 때 허용 도메인을 한정해서 사용합니다.",
  "rule.sast.sw.js.1518.example.0.dangerous": "라인 1: postMessage() 함수의 두 번째 인자로 \"*\"을 전달합니다.",
  "rule.sast.sw.js.1518.example.0.safe": "라인 1: 도메인을 지정하여 안전하게 메시지를 전송합니다.",
  "rule.sast.sw.js.1518.name": "크로스 도큐먼트 메시징",
  "rule.sast.sw.js.1518.option.forbidden_pattern.description": "금지할 도메인을 작성합니다. <br />예시) .*forbidden.*",
  "rule.sast.sw.js.1518.option.forbidden_pattern.name": "금지할 도메인",
  "rule.sast.sw.js.1523.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.js.1523.example.0.dangerous": "라인 5: 안전하지 않은 document.URL.indexOf(eid+4) 값이 executeSql() 로 전달되어 쿼리가 실행됩니다.",
  "rule.sast.sw.js.1523.example.0.safe": "라인 5: 쿼리문에 직접 사용하지 말고, 전처리 기법을 사용하여 쿼리를 실행시킵니다.",
  "rule.sast.sw.js.1523.name": "SQL 삽입",
  "rule.sast.sw.js.1523.option.alarm.name": "검출 규칙",
  "rule.sast.sw.js.1523.option.exclude.name": "제외 규칙",
  "rule.sast.sw.js.1523.option.propagator.name": "전파 규칙",
  "rule.sast.sw.js.1523.option.suggestionFilterFunction.name": "제안하는 필터 함수",
  "rule.sast.sw.js.1523.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1523.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1523.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1523.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1523.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1523.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1523.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) param(1) of name(\"query\")",
  "rule.sast.sw.js.1523.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1523.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다. 예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.1523.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1558.description": "파일 생성 시 외부 데이터 사용 체커는 검증되지 않은 외부 입력을 사용해 파일을 생성하는 경우를 검출합니다.\n검증되지 않은 외부 입력이 파일 생성에 사용되면 적은 요청으로도 시스템에 과부하를 일으킬 수 있습니다.\n생성되는 파일의 갯수나 크기에 영향을 주는 외부 입력은 범위에 대한 검증을 거친 후 사용해야 합니다.",
  "rule.sast.sw.js.1558.example.0.dangerous": "라인 3: 외부 입력이 검증 없이 파일의 크기로 사용되었습니다.",
  "rule.sast.sw.js.1558.example.0.safe": "라인 3: 필터를 통해 안전한 값만을 파일 생성 인자로 사용합니다.",
  "rule.sast.sw.js.1558.name": "파일 생성 시 외부 데이터 사용",
  "rule.sast.sw.js.1558.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1558.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1558.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1558.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1558.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1558.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1558.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of name(\"requestFileSystemSync\")",
  "rule.sast.sw.js.1558.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1558.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.1558.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1701.description": "예측 가능한 데이터베이스 이름 체커는 예측 가능한 데이터베이스 이름 사용을 검출합니다.\n너무 쉬운 데이터베이스 이름을 사용하면 공격자가 애플리케이션을 우회하여 데이터베이스에 직접 접근할 여지를 줄 수 있습니다.\n데이터베이스 이름은 적당히 복잡한 것으로 짓습니다.",
  "rule.sast.sw.js.1701.example.0.dangerous": "라인 1: 'database'라는 이름은 추측하기 쉬운 데이타베이스 이름입니다.",
  "rule.sast.sw.js.1701.example.0.safe": "라인 1: 추측하기 어려운 이름으로 변경합니다.",
  "rule.sast.sw.js.1701.name": "예측 가능한 데이터베이스 이름",
  "rule.sast.sw.js.1701.option.forbidden_name.description": "금지할 데이터베이스의 명칭을 작성합니다.<br />예시) mydb",
  "rule.sast.sw.js.1701.option.forbidden_name.name": "금지할 데이터베이스 명",
  "rule.sast.sw.js.1706.description": "하드코드된 비밀번호 체커는 XMLHttpRequest.open에서 비밀번호에 해당하는 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.\nXMLHttpRequest.open에서 비밀번호에 해당하는 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다. 비밀번호는 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.\n공격자는 일부 해시 함수들을 역산하거나 무차별 대입 공격으로 암호화 키를 알아낼 수 있습니다.\n비밀번호를 하드코딩하지 않습니다.",
  "rule.sast.sw.js.1706.example.0.dangerous": "라인 2: 하드코딩된 비밀번호를 사용하여 XMLHttpRequest.open를 수행합니다.",
  "rule.sast.sw.js.1706.example.0.safe": "라인 3: 비밀번호는 하드코딩하지 않고 외부에서 가져오도록 합니다.",
  "rule.sast.sw.js.1706.name": "하드코드된 비밀번호",
  "rule.sast.sw.js.1707.description": "빈 비밀번호 체커는 비어 있는 비밀번호를 사용하는 코드를 검출합니다.\n비어 있는 비밀번호는 위험하다고 간주합니다. 비밀번호는 비어 있지 않은 문자열로 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.\n비밀번호를 빈 값으로 사용하지 않습니다.",
  "rule.sast.sw.js.1707.example.0.dangerous": "라인 2: 빈 암호를 사용하여 XMLHttpRequest.open()을 실행했습니다.",
  "rule.sast.sw.js.1707.example.0.safe": "라인 2: 빈 비밀번호는 사용하지 않고 외부에서 가져오도록 합니다.",
  "rule.sast.sw.js.1707.name": "빈 비밀번호",
  "rule.sast.sw.js.1708.description": "데이터베이스의 권한 제어 취약점 체커는 권한을 확인하지 않은 채 외부 입력값이 키로 사용된 SQL 구문을 검출합니다.\n권한을 확인하지 않고 외부 입력값을 키로 SQL 구문을 실행하면 의도하지 않은 데이터가 노출되거나 저장될 수 있습니다. preparedStatement를 사용하여 메타문자를 제거하더라도, 권한을 확인하지 않으면 공격자가 악의적인 키값을 사용하여 다른 정보를 저장하거나 볼 수 있습니다.\n반드시 id에 대한 권한을 확인한 후에 사용하도록 합니다.",
  "rule.sast.sw.js.1708.example.0.dangerous": "라인 4: 외부 입력 id가 권한 확인 없이 SQL 구문의 인자로 사용되었습니다. preparedStatement를 사용하여 구문 구조 자체가 조작당할 위험은 없지만 여전히 위험합니다.",
  "rule.sast.sw.js.1708.example.0.safe": "라인 3: 외부값에 대한 권한을 확인하는 함수를 통해 id에 대한 권한을 확인한 후에 사용합니다.",
  "rule.sast.sw.js.1708.name": "데이터베이스의 권한 제어 취약점",
  "rule.sast.sw.js.1708.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of fqn(\"encodeURIComponent\")",
  "rule.sast.sw.js.1708.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1708.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1708.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1708.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1708.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1708.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of name(\"executeSql\")",
  "rule.sast.sw.js.1708.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1708.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.1708.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1785.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.js.1785.example.0.dangerous": "라인 7: 안전하지 않은 값이 시스템 명령어를 실행하는 exec() 함수에 사용됩니다.",
  "rule.sast.sw.js.1785.example.0.safe": "라인 7: 필터 함수 등을 통해 안전한 값만 시스템 명령어 실행 인수로 사용되도록 합니다.",
  "rule.sast.sw.js.1785.name": "명령어 삽입",
  "rule.sast.sw.js.1785.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1785.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1785.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1785.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1785.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1785.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1785.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(\"__sparrow_required__child_process.exec\")",
  "rule.sast.sw.js.1785.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1785.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"__sparrow_node_js_request__.url\")",
  "rule.sast.sw.js.1785.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1786.description": "직접 동적 코드 평가 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.\n프로그램 실행 중 eval() 함수에 전달되는 문자열은 그 시점에 코드로 해석되어 직접 실행됩니다.\n검증되지 않은 외부 입력이 동적으로 실행되는 코드에 사용될 경우 공격자가 원하는 임의의 작업을 수행할 수 있습니다.\n동적으로 계산되는 코드가 프로그램 설계에 꼭 필요한지 한 번 더 확인하고 가능하다면 같은 동작을 정적 코드를 사용한 다른 방법으로 구현합니다. 대부분의 평범한 프로그램의 동작은 동적으로 계산되는 코드 없이도 구현이 가능하며, 많은 경우에 동적 코드는 단지 코드 작성자의 사소한 귀찮음을 회피하려는 의도로 사용됩니다. 동적 코드 사용이 불가피하다면, 외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.js.1786.example.0.dangerous": "라인 6: 안전하지 않은 값이 동적 코드를 실행하는 eval 함수에 사용됩니다.",
  "rule.sast.sw.js.1786.example.0.safe": "라인 5: 필터 함수 등을 통해 안전한 값만 실행되도록 합니다.",
  "rule.sast.sw.js.1786.name": "직접 동적 코드 평가",
  "rule.sast.sw.js.1786.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1786.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1786.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1786.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1786.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1786.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1786.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(\"eval\")",
  "rule.sast.sw.js.1786.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1786.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.1786.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1787.description": "innerHTML에 할당 체커는 innerHTML에 값을 할당하는 경우를 검출합니다.\ninnerHTML에 값을 할당하는 경우 악의적인 공격자가 악의적인 스크립트를 삽입할 수 있습니다.\ninnerHTML에 값을 할당하지 않습니다.",
  "rule.sast.sw.js.1787.example.0.dangerous": "라인 3: element의 innerHTML에 값을 할당하고 있습니다.",
  "rule.sast.sw.js.1787.example.0.safe": "라인 3: innerHTML에 값을 할당하지 않도록 합니다.\ntext 값을 할당하는 경우에는 innerHTML대신 textContent를 사용하는 것을 권장합니다.",
  "rule.sast.sw.js.1787.name": "innerHTML에 할당",
  "rule.sast.sw.js.1806.description": "신뢰할 수 없는 사이트로 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.js.1806.example.0.dangerous": "라인 7: 외부로부터 받은 문자열을 URL으로 아무런 검증 없이 직접 연결하고 있습니다.",
  "rule.sast.sw.js.1806.example.0.safe": "라인 7-9: 필터 함수를 통해 외부 입력을 검증하여 사용합니다.",
  "rule.sast.sw.js.1806.name": "신뢰할 수 없는 사이트로 리다이렉션",
  "rule.sast.sw.js.1806.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1806.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1806.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1806.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1806.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1806.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1806.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) param(1) of fqn(\"window.open\")",
  "rule.sast.sw.js.1806.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1806.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다. 예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.1806.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1873.description": "XHR 삽입 체커는 검증되지 않은 외부 입력이 AJAX를 위한 XMLHttpRequest 객체에 사용되는 경우를 검출합니다.\n외부 입력이 검증되지 않은 채로 XMLHttpRequest 객체 생성에 사용되면 공격자가 조작된 주소를 삽입하여 위험한 서버에 접속할 수 있습니다. 옵션을 통해 외부 정보 입력 함수, 사용 함수, 전파 함수 및 필터 함수를 작성할 수 있습니다.\nXHR 객체 생성에 사용되는 외부 입력값은 검증 후에 사용합니다.",
  "rule.sast.sw.js.1873.example.0.dangerous": "라인 4: 검증되지 않은 외부 입력 danger가 XHR 객체 생성에 사용되었습니다.",
  "rule.sast.sw.js.1873.example.0.safe": "라인 4: 필터 함수를 통해 외부 입력을 검증하여 사용합니다.",
  "rule.sast.sw.js.1873.name": "XHR 삽입",
  "rule.sast.sw.js.1873.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1873.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1873.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1873.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1873.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1873.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1873.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of fqn(\"XMLHttpRequest.open\")",
  "rule.sast.sw.js.1873.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1873.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.1873.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1874.description": "localStorage 사용 체커는 localStrage를 사용하는 경우를 검출합니다.\n계속 유지해야 할 데이터가 아니라면 localStorage보다는 sessionStorage를 사용하는 것이 바람직 합니다.\nSessionStorage와 달리 LocalStorage는 페이지가 종료되어도 내부 데이터가 계속 유지됩니다. 이때 다른 애플리케이션에서 localStorage에 있는 데이터를 조작할 수 있습니다.\nSessionStorage를 사용합니다.",
  "rule.sast.sw.js.1874.example.0.dangerous": "라인 1: localStorage를 사용했습니다.",
  "rule.sast.sw.js.1874.example.0.safe": "라인 1: SessionStorage를 사용합니다.",
  "rule.sast.sw.js.1874.name": "localStorage 사용",
  "rule.sast.sw.js.1875.description": "로그 삽입 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.\n사용자 입력을 검증 없이 그대로 로그에 출력하면 로그 내용에 공격자가 임의의 내용을 삽입하여 로그를 확인하는 보안 담당자 등을 헷갈리게 만들 수 있습니다. 이렇게 조작된 로그를 통해 잘못된 의사 결정이 이루어지면 그 결과를 공격에 활용할 수 있습니다.\n로그에 출력하기 전에 외부 입력값을 검사합니다. 특히 줄 바꿈 문자는 제거하는 것이 좋습니다.",
  "rule.sast.sw.js.1875.example.0.dangerous": "라인 3: 외부 입력값을 검사 없이 로그에 출력합니다",
  "rule.sast.sw.js.1875.example.0.safe": "라인 3: 외부 입력값을 필터링합니다.",
  "rule.sast.sw.js.1875.name": "로그 삽입",
  "rule.sast.sw.js.1875.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1875.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1875.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1875.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1875.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1875.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1875.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(\"console.dir\")",
  "rule.sast.sw.js.1875.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1875.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"__sparrow_node_js_request__.url\")",
  "rule.sast.sw.js.1875.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1876.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 데이터를 웹 브라우저에 보내는 경우를 검출합니다.\nlocalStorage는 다른 애플리케이션에 의해 조작될 가능성이 있습니다. 따라서 localStorage의 데이터가 검증되지 않은 채로 페이지 생성에 사용되는 경우 공격자가 악성 스크립트를 페이지에 삽입할 수 있습니다.\n공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다. 옵션을 통해 외부 정보 입력 함수, 사용 함수, 전파 함수 및 필터 함수를 작성할 수 있습니다.\n데이터를 적절히 필터링합니다.",
  "rule.sast.sw.js.1876.example.0.dangerous": "라인 2: 검증되지 않은 데이터를 웹 브라우저로 보냈습니다.",
  "rule.sast.sw.js.1876.example.0.safe": "라인 2: 데이터를 적절히 필터링 한 후 웹 브라우저로 보내도록 합니다.",
  "rule.sast.sw.js.1876.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.js.1876.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"encodeURIComponent\")",
  "rule.sast.sw.js.1876.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1876.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1876.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1876.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1876.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1876.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"eval\")",
  "rule.sast.sw.js.1876.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1876.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"localStorage.getItem\")",
  "rule.sast.sw.js.1876.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1953.description": "안전하지 않은 MiUpdater 체커는 보안에 취약한 버전의 MiUpdater 사용을 검출합니다.\n보안에 취약한 버전의 Miupdater를 사용하는 것은 위험합니다. 취약점이 알려진 구버전에서는 MiUpdater를 사용하여 다른 서버의 파일을 악의적으로 다운로드 및 실행할 수 있으며, 단축 아이콘을 통한 다른 프로그램 실행도 가능하도록 되어 있습니다.\n최신 버전의 MiUpdater를 사용합니다.",
  "rule.sast.sw.js.1953.example.0.dangerous": "라인 4: 보안에 취약점이 있는 321 버전의 Miupdater를 사용했습니다.",
  "rule.sast.sw.js.1953.example.0.safe": "라인 4: 취약점이 해결된 322 혹은 332 버전의 Updater를 사용합니다.",
  "rule.sast.sw.js.1953.name": "안전하지 않은 MiUpdater",
  "rule.sast.sw.js.1953.option.forbidden_miupdater.description": "금지할 Miupdater의 이름을 작성합니다.<br />예시) Miupdater320",
  "rule.sast.sw.js.1953.option.forbidden_miupdater.name": "금지할 MiUpdater 버전",
  "rule.sast.sw.js.1954.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.sw.js.1954.example.0.dangerous": "라인 3: 디버깅 코드를 포함하고 있습니다.",
  "rule.sast.sw.js.1954.example.0.safe": "라인 3: .",
  "rule.sast.sw.js.1954.name": "남은 디버그 코드",
  "rule.sast.sw.js.1954.option.target_function.description": "디버그 함수의 이름을 작성합니다.<br />예시) trace",
  "rule.sast.sw.js.1954.option.target_function.name": "디버그 함수",
  "rule.sast.sw.js.1955.description": "GET 방식으로 트랜잭션 수행 체커는 GET 방식으로 전송을 수행하는 경우를 검출합니다.\nGET 방식을 통한 전송은 URL과 전달된 매개 변수가 브라우저를 통해 표시되기 때문에 조작 가능성이 존재합니다. 때문에 더 안전한 POST 방식으로 전송을 수행할 것을 권장합니다.\nPOST 방식으로 전송합니다.",
  "rule.sast.sw.js.1955.example.0.dangerous": "라인 2: 데이터를 GET 방식으로 전달하고 있습니다. 이 경우 CSRF 공격에 취약해집니다.",
  "rule.sast.sw.js.1955.example.0.safe": "라인 3: 데이터를 POST 방식으로 전달합니다.",
  "rule.sast.sw.js.1955.name": "GET 방식으로 트랜잭션 수행",
  "rule.sast.sw.js.1956.description": "트랜잭션 삽입 체커는 검증되지 않은 외부 입력이 트랜잭션 함수에 사용되는 경우를 검출합니다.\n옵션을 통해 외부 정보 입력 함수, 사용 함수, 전파 함수 및 필터 함수를 작성할 수 있습니다.\n외부 입력이 검증되지 않은 채로 트랜잭션 함수에 사용되면 조작된 데이터를 통해 의도하지 않은 동작이 수행될 수 있습니다.\n트랜잭션 함수를 호출하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.js.1956.example.0.dangerous": "라인 4: 검증되지 않은 외부 입력 sid가 트랜잭션에 사용되었습니다.",
  "rule.sast.sw.js.1956.example.0.safe": "라인 3: 내부 값을 검증하는 함수를 작성하여 검증후에 사용하도록 합니다.",
  "rule.sast.sw.js.1956.name": "트랜잭션 삽입",
  "rule.sast.sw.js.1956.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1956.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1956.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1956.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1956.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1956.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1956.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2,3,4,5,6) of fqn(\"Transaction\")",
  "rule.sast.sw.js.1956.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1956.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "rule.sast.sw.js.1956.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1957.description": "일반 텍스트를 사용하는 트랜잭션 체커는 트랜잭션 함수를 통해 데이터를 평문으로 전송하는 경우를 검출합니다.\n트랜잭션 함수를 통해 데이터를 평문전송하는 것은 위험합니다. 악의적인 공격자가 스니핑하여 내부 정보에 접근할 수 있습니다.\n평문으로 전송하지 않고 난독화 및 암호화 방식을 사용합니다. 개발 시점에는 평문으로 전송하는 것이 디버깅하기 쉬워 많이 사용되지만, 운영시점에서는 압축하여 전송하는 것을 권장합니다.",
  "rule.sast.sw.js.1957.example.0.dangerous": "라인 1: 트랜잭션의 경우 9번째 매개 변수가 false이므로 평문으로 전송하고 있습니다.\n라인 3: 트랜잭션의 경우 9번째 매개 변수를 작성하지 않았으므로 기본 설정인 평문으로 전송하고 있습니다.",
  "rule.sast.sw.js.1957.example.0.safe": "라인 3: 9번째 매개 변수 true를 통해 데이터를 압축하여 사용합니다.",
  "rule.sast.sw.js.1957.name": "일반 텍스트를 사용하는 트랜잭션",
  "rule.sast.sw.js.1966.description": "민감한 정보의 Dataset 체커는 중요 정보를 데이터셋에 저장하는 경우를 검출합니다.\n데이터셋(메모리 상의 존재)의 정보는 쉽게 노출될 수 없는 부분이지만, 이 또한 별도의 툴을 사용하면 획득 가능한 위험이 있습니다. 실제 코드상으로는 값이 노출 되지 않으나 사용자 접속 비밀번호 등을 메모리상에 계속 보관 하는 등의 작업을 가급적 배제 하셔야 합니다\n민감한 정보를 데이터셋에 저장하지 않습니다.",
  "rule.sast.sw.js.1966.example.0.dangerous": "라인 1: 데이터셋에는 비밀번호와 같은 민감한 정보를 저장하고 있습니다.",
  "rule.sast.sw.js.1966.example.0.safe": "라인 1: 데이터셋에는 비밀번호와 같은 민감한 정보를 저장하지 않습니다.",
  "rule.sast.sw.js.1966.name": "민감한 정보의 Dataset",
  "rule.sast.sw.js.1966.option.sensitive_pattern.description": "저장하면 위험한 데이터의 컬럼명을 입력하세요.",
  "rule.sast.sw.js.1966.option.sensitive_pattern.name": "위험 패턴",
  "rule.sast.sw.js.1967.description": "민감한 정보의 일반 텍스트 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 코드를 검출합니다.\nMiPlatform 또는 XPLATFORM 페이지를 전용 브라우저 또는 임베드 상태로 구동할 때 전역 변수로 사용자 정보(ID, 비밀번호 등)를 넘기면 HTML 소스 보기 등을 통해 사용자 정보가 누출될 수 있습니다.\n중요 정보를 공개된 저장소에 저장할 때 암호화를 하지 않는다면 인증 받지 않은 주체에 의해서 데이터 노출, 또는 스니핑될 수 있습니다.\n중요 정보를 외부 환경 파일에 저장할 때는, 반드시 암호화하여 저장하는 것이 바람직합니다. 또한 SW 설계 시 민감한 데이터와 일반 데이터를 가능한 분리하도록 합니다.",
  "rule.sast.sw.js.1967.example.0.dangerous": "라인 1-2: Global 변수에 민감한 정보를 저장하고 있습니다.",
  "rule.sast.sw.js.1967.example.0.safe": "라인 1-2: Global 변수에 민감한 정보를 저장하지 않습니다. 세션 변수를 사용하거나 솔루션 등을 사용합니다.",
  "rule.sast.sw.js.1967.name": "민감한 정보의 일반 텍스트 저장",
  "rule.sast.sw.js.1967.option.sensitive_pattern.description": "민감한 정보가 있으면 안되는 패턴을 검출합니다.",
  "rule.sast.sw.js.1967.option.sensitive_pattern.name": "민감한 정보 패턴",
  "rule.sast.sw.js.1967.option.target_variable.description": "민감한 정보를 저장하면 위험한 변수를 입력하세요.",
  "rule.sast.sw.js.1967.option.target_variable.name": "변수 이름",
  "rule.sast.sw.js.1968.description": "레지스트리 누수 체커는 레지스트리 변수를 사용 후에 초기화하지 않는 경우를검출합니다.\n레지스트리 변수를 사용 후에 초기화하지 않으면, 불필요한 메모리를 차지하고 있을 수 있습니다. 레지스트리 변수를 사용 후에, 빈 값으로 초기화하여 불필요한 메모리를 제거하도록 합니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n레지스트리 변수를 사용 후에 초기화합니다.",
  "rule.sast.sw.js.1968.example.0.dangerous": "라인 3: 레지스트리(GlobalVal)를 사용 후에 초기화하지 않았습니다.",
  "rule.sast.sw.js.1968.example.0.safe": "라인 5: 레지스트리(GlobalVal)를 사용 후에 초기화하여 불필요한 메모리를 제거해줍니다.",
  "rule.sast.sw.js.1968.name": "레지스트리 누수",
  "rule.sast.sw.js.1969.description": "다이얼로그를 통한 신뢰할 수 없는 사이트로 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n이때 이 규칙은 외부 입력이 다이얼로그 함수를 사용한 경우를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.js.1969.example.0.dangerous": "라인 2: 신뢰할 수 없는 입력을 기반으로 브라우저 연결을 시도합니다.",
  "rule.sast.sw.js.1969.example.0.safe": "라인 2: 필터 함수를 통해 외부 입력을 검증하여 사용합니다.",
  "rule.sast.sw.js.1969.name": "다이얼로그를 통한 신뢰할 수 없는 사이트로 리다이렉션",
  "rule.sast.sw.js.1969.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1969.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1969.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1969.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1969.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1969.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1969.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"ExecBrowser\")",
  "rule.sast.sw.js.1969.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1969.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "rule.sast.sw.js.1969.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1970.description": "다이얼로그를 통한 명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.js.1970.example.0.dangerous": "라인 3: 검증되지 않은 데이터를 명령 실행에 사용했습니다.",
  "rule.sast.sw.js.1970.example.0.safe": "라인 4: 안전한 값만 시스템 명령어 실행 인수로 사용합니다.",
  "rule.sast.sw.js.1970.name": "다이얼로그를 통한 명령어 삽입",
  "rule.sast.sw.js.1970.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1970.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1970.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1970.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1970.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1970.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1970.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"execProcess\")",
  "rule.sast.sw.js.1970.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1970.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "rule.sast.sw.js.1970.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1971.description": "너무 긴 quicktabstestfont 속성 문자열 체커는 QuickTabsTextFont 속성에 매우 긴 문자열이 입력된 경우를 검출합니다.\nQuickTabsTextFont 속성에 매우 긴 문자열 입력 시 버퍼 오버플로우에 따른 실행 흐름 변경 발생 소지가 있습니다.\n이외의 경우에는 프로그램 성능에 영향을 주거나 오류를 발생시키는 잠재적 위험 요소가 될 수 있습니다.\n32자 이내로 길이를 제한하여 할당합니다.",
  "rule.sast.sw.js.1971.example.0.dangerous": "라인 1: 문자열의 길이가 너무 깁니다.",
  "rule.sast.sw.js.1971.example.0.safe": "라인 1: 32자 이내로 할당합니다.",
  "rule.sast.sw.js.1971.name": "너무 긴 quicktabstestfont 속성 문자열",
  "rule.sast.sw.js.1998.description": "Azure에서의 권한 제어 취약점 체커는 권한 없는 데이터베이스 접근 체커는 권한을 확인하지 않은 채 검증되지 않은 외부 입력값이 Azure 쿼리에 사용되는 경우를 검출합니다.\n권한을 확인하지 않고 임의의 외부 입력값을 사용하여 Azure를 사용하면 공격자가 입력값을 통해 권한이 없는 데이터를 열람, 수정, 삭제할 수 있습니다.\nAzure 서비스 함수를 호출하기 전에 외부 입력값을 검증하거나 매개 변수화합니다.",
  "rule.sast.sw.js.1998.example.0.dangerous": "라인 7: 검증되지 않은 입력값을 통해 데이터를 제어하고 있습니다.",
  "rule.sast.sw.js.1998.example.0.safe": "라인 6: 외부 입력값을 내부 기준으로 검증한 후 사용합니다.",
  "rule.sast.sw.js.1998.name": "Azure에서의 권한 제어 취약점",
  "rule.sast.sw.js.1998.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.1998.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1998.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1998.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1998.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1998.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1998.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(reg(\".*createQueueService\\(\\)\\.deleteQueue\"))",
  "rule.sast.sw.js.1998.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1998.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"__sparrow_node_js_request__.url\")",
  "rule.sast.sw.js.1998.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.1999.description": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.\nHTTP 요청에 들어 있는 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(Carriage Return) 이나 LF(Line Feed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 사용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손(Cache Poisoning) 공격 등을 수행할 수 있습니다.\n요청 매개 변수의 값을 HTTP 응답 헤더(예, Set-Cookie 등)에 포함시킬 경우 CR, LF와 같은 개행문자를 제거해야 합니다.",
  "rule.sast.sw.js.1999.example.0.dangerous": "라인 2: 외부 값을 검증하지 않고 사용하고 있습니다.",
  "rule.sast.sw.js.1999.example.0.safe": "라인 2: 외부 값은 검증하는 함수를 적용하여 검증한 후에 사용합니다.",
  "rule.sast.sw.js.1999.name": "HTTP 응답 분할",
  "rule.sast.sw.js.1999.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of fqn(\"encodeURIComponent\")",
  "rule.sast.sw.js.1999.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.1999.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.1999.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.1999.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.1999.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.1999.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) operand(2) of name(\"=\") if operand(1) == fqn(reg(\".*document\\.cookie\"))",
  "rule.sast.sw.js.1999.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.1999.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.1999.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.2000.description": "민감한 정보 노출 체커는 민감한 정보를 쉽게 노출될 수 있는 저장소에 저장하는 경우를 검출합니다.\n민감한 정보를 쉽게 노출될 수 있는 저장소에 저장하면 공격자가 쉽게 민감한 정보를 살펴 볼 수 있습니다.\n비밀번호를 비롯한 민감한 정보는 localStorage와 같은 공개된 저장소에 저장하지 않아야 합니다.",
  "rule.sast.sw.js.2000.example.0.dangerous": "라인 1: 암호를 평문으로 localStorage에 저장하고 있습니다.",
  "rule.sast.sw.js.2000.example.0.safe": "라인 1: 암호를 localStorage에 저장하지 않아야 합니다.",
  "rule.sast.sw.js.2000.name": "민감한 정보 노출",
  "rule.sast.sw.js.2000.option.forbidden_item.description": "금지할 항목의 이름을 작성합니다.<br />예시) password",
  "rule.sast.sw.js.2000.option.forbidden_item.name": "금지할 항목",
  "rule.sast.sw.js.2001.description": "JSON 삽입 체커는 겁증되지 않은 외부 입력값이 JSON 데이터 생성에 사용되는 경우를 검출합니다.\n검증되지 않은 입력값이 JSON 데이터 생성에 포함되면 공격자는 JSON 엔터티에 임의의 요소나 속성을 삽입하여 공격을 수행할 수 있습니다.\nJSON 데이터를 생성하기 전에 외부 입력값을 검증해야 합니다. JSON에서 사용되는 특수문자 `, {, }, [, ] 등을 특히 유의해서 필터해야 합니다.",
  "rule.sast.sw.js.2001.example.0.dangerous": "라인 10: 검증되지 않은 입력값이 JSON을 파싱하는데 사용되었습니다.",
  "rule.sast.sw.js.2001.example.0.safe": "라인 5: 검증하는 함수를 통해 안전한 값만을 사용하도록 합니다.",
  "rule.sast.sw.js.2001.name": "JSON 삽입",
  "rule.sast.sw.js.2001.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.2001.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.2001.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.2001.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.2001.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.2001.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.2001.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"jQuery.parseJSON\")",
  "rule.sast.sw.js.2001.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.2001.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.2001.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.2002.description": "잘못된 로거 사용 체커는 금지된 메소드를 사용하여 로그를 남기는 경우를 검출합니다.\n표준 출력(stdout)을 통한 로그 출력은 바람직한 방법이 아닙니다.\n콘솔을 통해 로그를 출력하면 오랫동안 많은 로그를 남기며 실행되는 프로그램에서 문제가 생겼을 때 로그를 통해 원인을 파악하기 번거로워지고 로그에 대한 접근 권한을 관리하기도 어렵습니다.\n로그는 로그 기록을 목적으로 설계된 라이브러리를 통해 출력합니다.",
  "rule.sast.sw.js.2002.example.0.dangerous": "라인 4: 구조화된 전용 로거 대신 시스템 출력 스트림에 출력을 통해 시스템 로그를 작성하고 있습니다.",
  "rule.sast.sw.js.2002.example.0.safe": "라인 4: 시스템의 stdout에 출력하는 로거 대신 전용로거를 사용하도록 합니다.",
  "rule.sast.sw.js.2002.name": "잘못된 로거 사용",
  "rule.sast.sw.js.2245.description": "투비소프트 플랫폼 로그 조작 체커는 검증되지 않은 사용자 입력을 플랫폼 로그에 출력하는 경우를 검출합니다.\n사용자 입력을 검증 없이 그대로 로그에 출력하면 로그 내용에 공격자가 임의의 내용을 삽입하여 로그를 확인하는 보안 담당자 등을 헷갈리게 만들 수 있습니다. 이렇게 조작된 로그를 통해 잘못된 의사 결정이 이루어지면 그 결과를 공격에 활용할 수 있습니다.\n로그에 출력하기 전에 외부 입력값을 검사합니다. 특히 줄 바꿈 문자는 제거하는 것이 좋습니다.",
  "rule.sast.sw.js.2245.example.0.dangerous": "라인 3: 검증되지 않은 값을 직접 로그에 사용했습니다.",
  "rule.sast.sw.js.2245.example.0.safe": "라인 3: 필터 함수 등을 통해 안전한 로그 내용만 사용되도록 합니다.",
  "rule.sast.sw.js.2245.name": "투비소프트 플랫폼 로그 조작",
  "rule.sast.sw.js.2245.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.2245.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.2245.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.2245.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.2245.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.2245.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.2245.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"trace\")",
  "rule.sast.sw.js.2245.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.2245.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "rule.sast.sw.js.2245.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.2246.description": "투비소프트 플랫폼 경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자(`, /, , .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.js.2246.example.0.dangerous": "라인 4: 외부 입력을 적절한 처리 없이 직접 사용했습니다.",
  "rule.sast.sw.js.2246.example.0.safe": "라인 4: 필터링 함수를 사용하여 위험을 제거합니다.",
  "rule.sast.sw.js.2246.name": "투비소프트 플랫폼 경로 조작",
  "rule.sast.sw.js.2246.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.2246.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.2246.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.2246.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.2246.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.2246.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.2246.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"trace\")",
  "rule.sast.sw.js.2246.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.2246.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(reg(\"@miplatform_edit.*\"))",
  "rule.sast.sw.js.2246.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.2247.description": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "rule.sast.sw.js.2247.example.0.dangerous": "라인 3: ip 정보가 trace 함수를 통해 로그에 작성되고 있습니다.",
  "rule.sast.sw.js.2247.example.0.safe": "라인 3: 삭제하여 민감한 정보는 로그에 작성하지 않습니다.",
  "rule.sast.sw.js.2247.name": "시스템 정보 노출",
  "rule.sast.sw.js.2247.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.2247.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.2247.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.2247.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.2247.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.2247.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.2247.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"trace\")",
  "rule.sast.sw.js.2247.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.2247.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"new@ExtCommon.getAppPath\")",
  "rule.sast.sw.js.2247.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.2959.description": "동적 코드 조작 취약점 체커는 MongoDB에서 db.collection.find() 함수를 호출할 때 $where 오퍼레이터를 사용하는 코드를 검출합니다.\n코드를 동적으로 실행하는 애플리케이션의 경우 코드를 구성하는 데 사용되는 외부 제공 값을 확인해야 합니다. 그렇게 하지 않으면, 공격자가 임의의 코드를 실행할 수 있습니다. 만약 공격자가 임의의 코드를 실행하게 된다면, 중요한 정보에 접근하여 수정하거나 이득을 얻는 등 심각한 공격이 발생할 수 있습니다. 전체 시스템에 액세스하지 못하도록 완화 전략으로써 허용된 값을 화이트리스트로 작성하거나 안전 유형으로 캐스팅을 수행하도록 합니다.\ndb.collection.find 함수를 호출하는 경우 $where 오퍼레이터를 사용하지 않도록 합니다.",
  "rule.sast.sw.js.2959.example.0.dangerous": "라인 3: MongoDB에서는 db.collection.find 함수를 호출할 때 $where 오퍼레이터를 사용하여 서버에서 직접 임의의 JavaScript 표현식을 실행했습니다.",
  "rule.sast.sw.js.2959.example.0.safe": "라인 3: $where 오퍼레이터를 사용하지 않도록 하고 필요한 경우 $expr 오퍼레이터로 대체합니다.",
  "rule.sast.sw.js.2959.name": "동적 코드 조작 취약점",
  "rule.sast.sw.js.2959.option.forbidden_operator.description": "금지된 오퍼레이터를 작성합니다.",
  "rule.sast.sw.js.2959.option.forbidden_operator.name": "금지된 오퍼레이터",
  "rule.sast.sw.js.2961.description": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 코드를 검출합니다.\n공개 웹 서버에서 작동하는 서비스가 외부 입력이 포함된 URL을 제대로 확인하지 않고 접속을 시도하면 이 URL이 외부로 공개되지 않는 내부 전용 서버를 가리킬 때에도 접속을 시도하게 됩니다. 내부 서버는 이 요청이 동일한 내부 웹 서버로부터 전달된 것이므로 정상적으로 응답을 보낼 것입니다. 자신이 접속할 수 있는 웹 서버에 이러한 취약점이 존재한다는 사실을 공격자가 알게 되면 해당 웹 서버를 통해 자신에게 접속 권한이 없는 내부망의 서버에 요청을 보낼 수 있습니다. 이를 통해 외부로 노출되어서는 안되는 중요 정보가 노출될 수 있습니다.\n외부 입력을 포함하는 URL에 접속하려고 시도할 때 적절한 검증을 수행하도록 합니다.",
  "rule.sast.sw.js.2961.example.0.dangerous": "라인 5: 외부에서 입력 받은 request.url 값을 검증 없이 parse 함수의 인자로 사용했습니다.",
  "rule.sast.sw.js.2961.example.0.safe": "라인 7: parse 함수에서 url을 사용하기 전에 검증하도록 합니다.",
  "rule.sast.sw.js.2961.name": "서버측 요청 변조",
  "rule.sast.sw.js.2961.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"==\"",
  "rule.sast.sw.js.2961.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.2961.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.2961.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.2961.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.2961.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.2961.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(\"__sparrow_required__url.parse\")",
  "rule.sast.sw.js.2961.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.2961.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"__sparrow_node_js_request__.url\")",
  "rule.sast.sw.js.2961.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.2962.description": "부적절한 서명 체커는 전자 서명을 포함하는 파일을 사용할 때 서명을 확인하지 않는 코드를 검출합니다.\n사용자가 전자 서명을 확인하지 않고 사용하는 경우 위변조된 파일을 통해 의도하지 않은 URL에 접근하거나 악성 코드에 감염될 수 있습니다.\n또한 암호 알고리즘으로 서명하지 않고 JWT로 토큰을 생성하는 경우 공격자는 이를 위조하여 사용자로 위장할 수 있습니다.\njsonwebtoken의 sign이나 verify 함수를 사용할 때 알고리즘을 none으로 변경하지 않도록 합니다.",
  "rule.sast.sw.js.2962.example.0.dangerous": "라인 3: sign 함수의 세 번째 인자에서 algorithm을 none으로 설정했습니다.\n라인 5: verify 함수의 세 번째 인자에서 algorithms으로 none도 허용하도록 설정했습니다.",
  "rule.sast.sw.js.2962.example.0.safe": "라인 3: sign 함수의 세 번째 인자에서 algorithm을 HS256으로 설정합니다.\n라인 5: verify 함수의 세 번째 인자에서 algorithms의 none을 제거합니다.",
  "rule.sast.sw.js.2962.name": "부적절한 서명",
  "rule.sast.sw.js.2963.description": "취약한 서버 인증서 검증 체커는 인증되지 않은 서버의 접속을 거부하는 rejectUnauthorized 옵션 값을 false로 설정한 코드를 검출합니다.\n중간자(man-in-the-middle) 공격에 취약하지 않은 안전한 SSL/TLS 세션을 생성하려면 X.509 인증서의 유효성을 필수적으로 검사해야 합니다.\n만약 해당 인증서의 유효성을 적절하게 검사하지 않으면 악의적인 호스트에 연결되거나 신뢰할 수 없는 호스트에서 생성된 데이터를 수신하게 될 가능성이 있습니다.\n인증서를 확인할 때 rejectUnauthorized 옵션 값을 true로 설정하도록 합니다.",
  "rule.sast.sw.js.2963.example.0.dangerous": "라인 9: rejectUnauthorized 옵션을 false로 설정했습니다.\n라인 12: false로 설정된 rejectUnauthorized를 https.request 함수의 인자로 사용했습니다.",
  "rule.sast.sw.js.2963.example.0.safe": "라인 11: rejectUnauthorized 옵션을 제거하거나 해당 값을 true로 설정합니다.",
  "rule.sast.sw.js.2963.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.js.2963.option.check_function_params.description": "확인할 함수의 이름과 파라미터의 위치를 작성합니다.",
  "rule.sast.sw.js.2963.option.check_function_params.name": "함수 이름과 파라미터",
  "rule.sast.sw.js.2964.description": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 메소드를 사용하는 코드를 검출합니다.\n객체를 직렬화하여 저장하거나 전송하고, 필요한 경우 다시 역직렬화하여 사용함으로써 객체의 상태를 유지할 수 있습니다. 하지만 신뢰할 수 없는 데이터를 별도의 보호 없이 바로 역직렬화하는 경우 공격자가 악의적으로 객체 또는 변수를 추가하여 악성 코드를 실행시킬 수 있습니다.\njs-yaml 모듈이 필요한 경우 해당 2.1.0 이상 버전을 사용하고 load 함수가 아닌 safeLoad 함수로 대체하도록 합니다.",
  "rule.sast.sw.js.2964.example.0.dangerous": "라인 5: 보안에 취약한 js-yaml 모듈의 load 함수를 사용했습니다.",
  "rule.sast.sw.js.2964.example.0.safe": "라인 5: load 함수 대신 js-yaml 모듈의 safeLoad 함수를 사용합니다.",
  "rule.sast.sw.js.2964.name": "신뢰할 수 없는 데이터의 역직렬화",
  "rule.sast.sw.js.2964.option.forbidden_method.description": "금지된 함수의 이름을 작성합니다.",
  "rule.sast.sw.js.2964.option.forbidden_method.name": "금지된 함수",
  "rule.sast.sw.js.3146.description": "크로스 사이트 요청 위조는 특정 웹 사이트에 대해서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격을 말합니다.\nExpress.js에서는 csurf와 같은 별도의 패키지를 사용해 CSRF 토큰을 적용할 수 있습니다. csurf의 경우 초기에는 안전한 것으로 알려졌으나, 해당 패키지 적용만으로 대응이 어려운 유형의 보안 취약점을 발견 및 구현 자체의 제약으로 인해 공식 리파지토리에서는 deprecated 패키지로 공지되었습니다.\n패키지 자체만으로 완전한 대응은 불가능 하지만 이를 대체할 패키지가 아직 나오지 않았습니다. 하지만 패키지와 함께 추가 옵션 적용을 통해 보안성을 강화할 수 있습니다.",
  "rule.sast.sw.js.3146.example.0.dangerous": "라인 4, 8: 보안 토큰 없이 rest API를 사용하여 취약점이 발생할 수 있습니다.",
  "rule.sast.sw.js.3146.example.0.safe": "라인 4, 8: rest API에 Anti-csrf 토큰을 사용하여 안전합니다.",
  "rule.sast.sw.js.3146.name": "크로스 사이트 요청 위조",
  "rule.sast.sw.js.3152.description": "uncaughtException을 사용하면 개발자가 사전에 처리하지 못한 오류가 발생해도 이를 처리할 수 있습니다. 하지만 노드 공식 문서에도 이를 최후의 수단으로 사용할 것이라 명시하고 있습니다. uncaughtException는 오류가 발생한 후에 프로그램이 종료되는 것을 보장할 수 없기 때문입니다.\nuncaughtException는 단순히 오류 내용을 기록하는 용도로 사용하고 기록한 이후 반드시 `process.exit();`을 통해 프로세스를 종료해야 합니다.",
  "rule.sast.sw.js.3152.example.0.dangerous": "라인 1: uncaughtException을 사용했지만 process를 종료하지 않아 프로그램의 현재 상태를 알 수 없습니다.",
  "rule.sast.sw.js.3152.example.0.safe": "라인 3: 로그를 기록한 후에 process를 종료하므로 안전하게 동작합니다.",
  "rule.sast.sw.js.3152.name": "uncaughtException 사용",
  "rule.sast.sw.js.3159.description": "정규식 서비스 거부(ReDoS)는 Dos 공격의 종류로 대부분의 정규식이 극단적인 상황에서 매우 느리게 작동하는 것을 이용합니다. 공격자는 취약한 정규식을 이용하여 응용 프로그램에 부하를 주거나 중단되도록 할 수 있습니다.\nNode.js에서는 `safe-regex`와 같이 정규식의 안정성을 검사해주는 도구를 이용하여 안전하게 정규식을 사용할 수 있습니다.",
  "rule.sast.sw.js.3159.example.0.dangerous": "라인 1: 취약한 정규식을 검사하지 않고 사용하여 위험합니다.",
  "rule.sast.sw.js.3159.example.0.safe": "라인 3: 취약한 정규식을 saferegex를 통해 검사 후에 사용하기 때문에 안전합니다.",
  "rule.sast.sw.js.3159.name": "정규식 서비스 거부",
  "rule.sast.sw.js.3161.description": "ECMAScript 5.1부터 JavaScript에 Strict 모드가 도입되었습니다. Strict 모드는 제한된 버전을 선택하여 일반적인 코드와 다른 방식으로 동작합니다. Strict 모드와 기존의 코드는 호환되며 기존에 무시되던 에러를 throw하거나 위험한 메소드의 사용을 금지하는 등 소스코드에 제한을 적용하여 소스코드를 보다 더 안전하게 동작시킵니다.\nStrict 모드를 적용하기 위해서는 Node.js에서 주석을 제외한 소스코드의 최상단에 `‘use strict’;` 혹은 ``use strict`;`라고 선언하면 됩니다. Strict 모드는 전역에 선언하여 사용할 수도 있고 필요한 함수 또는 모듈 단위로 적용할 수도 있습니다. 하지만 개발자의 실수를 방지하기 위해 사용하는 모드이므로 전역에 선언하고 사용하는 것이 가장 안전합니다.",
  "rule.sast.sw.js.3161.example.0.dangerous": "라인 1: srtict 모드를 선언하지 않아 개발자가 예상하지 못한 오류나 위험한 메소드가 사용될 수 있습니다.",
  "rule.sast.sw.js.3161.example.0.safe": "라인 1: strict 모드를 선언하여 소스코드가 보다 더 안전하게 동작합니다.",
  "rule.sast.sw.js.3161.name": "Strict 모드",
  "rule.sast.sw.js.3163.description": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.\nNode.js에서는 MySQL, PostgreSQL 등 SQL모듈의 Escaping query 기능을 사용하지 않은 입력 값을 SQL 쿼리에 사용하는 경우, 필터링 과정 없이 값을 넘겨받아 동적 쿼리를 생성하기 때문에 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL injection을 막기 위해서는 PreparedStatement객체 등을 이용하여 DB에 컴파일 된 쿼리문(상수)을 전달하는 방법을 사용하거나 특수문자를 필터링하여 사용합니다. MySQL의 경우 npm 모듈을 통해 DB에 값을 전달하고 PreparedStatement와 같은 방식으로 동작하는 Escaping query 기능을 제공합니다. 이를 통해 url이나 로그인 페이지 등 유저가 입력하는 값을 검증하고 쿼리를 실행합니다.",
  "rule.sast.sw.js.3163.example.0.dangerous": "라인 7: 외부에서 입력받은 값을 쿼리문에 바로 사용하여 위험합니다.",
  "rule.sast.sw.js.3163.example.0.safe": "라인 7: 외부에서 입력받은 값을 바인딩 후 사용하여 안전합니다.",
  "rule.sast.sw.js.3163.name": "SQL 삽입(mySQL)",
  "rule.sast.sw.js.3163.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) return of fqn(reg(\"__sparrow_required__mysql..*.escape\"))",
  "rule.sast.sw.js.3163.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.3163.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.3163.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.3163.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.3163.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.3163.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) param(*) of fqn(reg(\"__sparrow_required__mysql..*.query\"))",
  "rule.sast.sw.js.3163.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.3163.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다. 예시) return of name(reg(\"\\S+\\.body.*\"))",
  "rule.sast.sw.js.3163.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.3164.description": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.\nNode.js에서는 MySQL, PostgreSQL 등 SQL모듈의 Escaping query 기능을 사용하지 않은 입력 값을 SQL 쿼리에 사용하는 경우, 필터링 과정 없이 값을 넘겨받아 동적 쿼리를 생성하기 때문에 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL injection을 막기 위해서는 PreparedStatement객체 등을 이용하여 DB에 컴파일 된 쿼리문(상수)을 전달하는 방법을 사용하거나 특수문자를 필터링하여 사용합니다. PostgreSQL의 경우 PreparedStatement와 같은 방식으로 동작하는 Escaping query 기능을 제공합니다. 이를 통해 url이나 로그인 페이지 등 유저가 입력하는 값을 검증하고 쿼리를 실행합니다.",
  "rule.sast.sw.js.3164.example.0.dangerous": "라인 3: 검증되지 않은 사용자로부터 입력받은 값이 쿼리문에 사용되어 위험합니다.",
  "rule.sast.sw.js.3164.example.0.safe": "라인 3: 입력 받은 값을 $1을 통해 컴파일 된 쿼리문(상수)으로 실행시킵니다.",
  "rule.sast.sw.js.3164.name": "SQL 삽입(postgreSQL)",
  "rule.sast.sw.js.3164.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) param(*) of name(\"escape\")",
  "rule.sast.sw.js.3164.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.3164.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.3164.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.3164.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.3164.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.3164.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) param(1) of name(\"query\")",
  "rule.sast.sw.js.3164.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.3164.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다 . 예시) retrun of name(\"req\")",
  "rule.sast.sw.js.3164.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.3165.description": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.\nNoSQL은 SQL과 특성이 다르기 때문에 공격 벡터가 유사하지만 동일하지 않습니다. 하지만 NoSQL도 입력 값을 검증하거나 캐스팅하는 노력이 필요합니다. 특히 $where 연산자는 주의해서 사용해야 합니다.\nNoSQL에서 Injection을 막기 위해서는 외부에서 입력 받을 값의 타입을 정해두고 캐스팅해야 합니다. $where 연산자의 경우 취약점이 생길 수 있으므로 가능하면 피하는 것이 좋고 꼭 필요하다면 예상한 데이터와 일치하는지 화이트리스트로 검증해야 합니다. Sequelize나 Mongoose와 같은 ORM, ODM도 이를 해결하는 좋은 대안입니다.",
  "rule.sast.sw.js.3165.example.0.dangerous": "라인 5: 외부에서 입력 받은 값을 바로 쿼리문으로 사용해 위험합니다.",
  "rule.sast.sw.js.3165.example.0.safe": "라인 5: 외부에서 입력 받은 값을 캐스팅하여 안전하게 쿼리문에 사용합니다.",
  "rule.sast.sw.js.3165.name": "SQL 삽입(noSQL)",
  "rule.sast.sw.js.3165.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"String\")",
  "rule.sast.sw.js.3165.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.3165.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.3165.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.3165.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.3165.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.3165.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"find\")",
  "rule.sast.sw.js.3165.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.3165.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of name(reg(\"\\S+\\.body.*\"))",
  "rule.sast.sw.js.3165.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.3166.description": "일반적으로 세션 정보는 웹 애플리케이션에서 쿠키를 사용하여 전송됩니다. 그러나 부적절하게 쿠키 플래그를 사용하면 MITM 공격이나 XSS를 이용한 쿠키 탈취 등의 세션 관리 취약점에 노출될 수 있습니다.\nNode.js에는 세션 관리를 위해 `HttpOnly`와 `Secure`등의 보안 플래그를 `true`로 설정하여 안전하게 쿠키를 설정해야 합니다.",
  "rule.sast.sw.js.3166.example.0.dangerous": "라인 3, 4, 15, 16, 24, 25, 32: \"secure\"와 \"httpOnly\" 플래그를 false로 설정하여 위험에 노출되어 있습니다.",
  "rule.sast.sw.js.3166.example.0.safe": "라인 3, 4, 15, 16, 24, 25, 32: \"secure\"와 \"httpOnly\" 플래그를 true로 설정하여 안전합니다.",
  "rule.sast.sw.js.3166.name": "부적절한 쿠키 플래그 설정",
  "rule.sast.sw.js.3166.option.cookie_middleware.name": "cookie_middleware",
  "rule.sast.sw.js.3166.option.security_flag.name": "security_flag",
  "rule.sast.sw.js.3167.description": "웹 브라우저는 HTTP를 통해 전송된 헤더를 사용하여 통신 표준과 보안 정책을 확인합니다. HTTP 헤더의 보안 기능을 적절하게 사용하여 브라우저 클라이언트 측에서 실행되는 코드의 보안을 높이는 것은 보안 취약성을 완화하는 빠르고 효율적인 방법입니다.\nHelmet은 다양한 브라우저 관련 HTTP 보안 헤더에 대한 광범위한 지원을 제공해주는 미들웨어입니다. Helmet을 통해 OWASP에서 권장하는 보안 헤더를 설정하여 보안 기능을 활성화할 수 있습니다.\nHelmet은 특별한 설정을 하지 않아도 대부분의 보안 헤더를 제공합니다. 하지만 OWASP Active 헤더 중 `Cache-Control`과 `Clear-Site-Data`는 기본적으로 제공하지 않으니 추가로 설정을 해야 합니다.",
  "rule.sast.sw.js.3167.example.0.dangerous": "라인 6: 보안 헤더를 설정하지 않아 여러 취약점에 노출됩니다.",
  "rule.sast.sw.js.3167.example.0.safe": "라인 6: helmet을 통해 다양한 보안 헤더를 활성화 합니다.\n라인 7: helmet을 통해 \"Cache-Control\" 헤더를 추가합니다.",
  "rule.sast.sw.js.3167.name": "HTTP 보안 헤더 설정",
  "rule.sast.sw.js.3168.description": "웹 브라우저는 HTTP를 통해 전송된 헤더를 사용하여 통신 표준과 보안 정책을 확인합니다. HTTP 헤더의 보안 기능을 적절하게 사용하여 브라우저 클라이언트 측에서 실행되는 코드의 보안을 높이는 것은 보안 취약성을 완화하는 빠르고 효율적인 방법입니다.\n`OWASP Secure Headers Project`에서는 적절한 http 헤더를 사용할 수 있도록 가이드합니다. `X-Powered-By`와 같은 불필요한 헤더를 제거하고 최신 브라우저에서 더 이상 사용되지 않는 `X-XSS-Protection`와 같은 헤더를 제거해야 합니다. 레거시로 해당 기능을 사용할 경우 취약점이 생길 수 있습니다.\nExpress.js는 disable()을 통해서 `x-powered-by`기능을 막거나 Helmet을 사용하여 불필요한 헤더들을 쉽게 제거하여 사용할 수 있습니다. `X-XSS-Protection`헤더는 최신 브라우저에서 더 이상 사용되지 않으므로 비활성화하고 `xssFilter` 헤더를 사용하는 것이 안전합니다.",
  "rule.sast.sw.js.3168.example.0.dangerous": "라인 5, 6: X-Powered-By 헤더가 활성화 되어 위험합니다.\n라인 10: X-XSS-Protection 헤더를 레거시로 사용하여 정보 유출이 생길 수 있습니다.",
  "rule.sast.sw.js.3168.example.0.safe": "라인 6, 7: x-powered-by 헤더를 비활성화 하여 안전합니다.\n라인 10: X-XSS-Protection를 비활성화하고 xssFilter를 사용하여 안전합니다.",
  "rule.sast.sw.js.3168.name": "부적절한 HTTP 헤더",
  "rule.sast.sw.js.3168.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.3168.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.3168.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.3168.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.3168.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.3168.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.3168.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"use\")",
  "rule.sast.sw.js.3168.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.3168.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"__sparrow_required__express\")",
  "rule.sast.sw.js.3168.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.3169.description": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다.\n해시 함수인 MD5나 SHA의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다. 이외에도 RC2, RC4, RC4, RC5, RC6, MD4, DES도 취약하다고 알려져 있습니다.\nMD5와 SHA의 단점을 극복하기 위해 사용되는 함수는 다양하게 존재합니다. Node.js 에서는 성능도 우수하고 많이 사용되는 bcrypt를 사용하면 이를 쉽게 대체할 수 있습니다. 최신 해시 알고리즘인 Argon2, PBKDF2, Scrypt 등도 좋은 대안입니다. 기존의 sha2(224, 256, 384, 512) 방식을 채택해야 하는 경우에는 salt값을 포함하여 해시를 사용해야 합니다.",
  "rule.sast.sw.js.3169.example.0.dangerous": "라인 3: 취약한 해시 함수인 md5를 사용하기 때문에 무작위 대입 공격에 취약합니다.",
  "rule.sast.sw.js.3169.example.0.safe": "라인 3: bcrypt를 사용하여 해시 데이터를 만들기 때문에 무작위 대입 공격에 안전합니다.",
  "rule.sast.sw.js.3169.example.1.dangerous": "라인 2: 취약한 암호화 알고리즘인 DES를 사용하여 위험합니다.",
  "rule.sast.sw.js.3169.example.1.safe": "라인 2: 안전한 암호화 알고리즘인 AES를 사용하여 안전합니다.",
  "rule.sast.sw.js.3169.name": "취약한 암호화 알고리즘 사용",
  "rule.sast.sw.js.3264.description": "`dangerouslySetInnerHTML`는 브라우저 DOM에서 `innerHTML`을 사용하기 위한 React의 대체 방법입니다. React는 기본적으로 대부분의 값을 렌더링하기 전에 Escape하여 안전하지만 해당 기능은 이를 지원하지 않아 XSS공격에 쉽게 노출될 수 있기 때문에 위험합니다.\nReact에서는 `dangerouslySetInnerHTML` 속성을 발견하면 내부적으로 setInnerHTML()을 실행하여 innerHTML을 사용하게 됩니다. 이 과정에서 값이 escape되지 않기 때문에 사용하지 않는 것이 좋습니다. 꼭 필요하다면 사용하는 데이터를 필터링하거나 dompurify, sanitize-html와 같은 안전한 API를 사용해야 합니다.",
  "rule.sast.sw.js.3264.example.0.dangerous": "라인 1: dangerouslySetInnerHTML 사용 시 React에서 자동으로 escape하지 않아 위험합니다.",
  "rule.sast.sw.js.3264.example.0.safe": "라인 2: dompurify를 이용하여 data의 위험한 문자를 제거한 후 안전하게 사용합니다.",
  "rule.sast.sw.js.3264.name": "크로스 사이트 스크립트(dangerouslySetInnerHTML)",
  "rule.sast.sw.js.3264.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"replace\")",
  "rule.sast.sw.js.3264.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.3264.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.3264.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.3264.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"eval\")",
  "rule.sast.sw.js.3264.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.3264.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of name(\"body\")",
  "rule.sast.sw.js.3264.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.3264.option.weak_element.description": "외부 정보 사용 html 속성을 작성합니다.",
  "rule.sast.sw.js.3264.option.weak_element.name": "외부 정보 사용 html 속성",
  "rule.sast.sw.js.3265.description": "React에는 주어진 클래스 인스턴스를 바탕으로 트리를 탐색해 DOM 노드를 찾을 수 있는 `findDOMNode`를 지원합니다. 하지만 `findDOMNode`는 부모가 특정 자식을 렌더링하는 것이 허용되어 추상화가 깨지는 원인이 됩니다.\nReact 공식 문서에서 더 이상 지원하지 않고 이를 사용하지 않도록 권장하고 있습니다.",
  "rule.sast.sw.js.3265.example.0.dangerous": "라인 1: findDOMNode()는 추상화가 깨지는 원인이 되어 사용하지 않는 게 좋습니다.",
  "rule.sast.sw.js.3265.example.0.safe": "라인 1: 취약한 기능인 findDOMNode()를 사용하지 않아 안전합니다.",
  "rule.sast.sw.js.3265.name": "취약한 기능 사용(findDomNode)",
  "rule.sast.sw.js.3266.description": "URL 값을 악의적인 값으로 수정하게 허용하면 XSS와 같은 공격에 노출될 수 있습니다. 특히 `javascript:`가 포함된 주소를 사용하여 URL을 조작할 경우 공격자의 의도대로 악성 스크립트를 실행할 수 있게 됩니다.\nReact에서는 위험한 JavaScript URL을 만나면 경고가 나오게 됩니다. 하지만 이 경고는 개발자에게 URL 사용의 잠재적 위험을 알려주지만 URL 사용을 방지해주지 않습니다.\nURL에 사용자의 입력이 들어갈 수 있는 곳에는 반드시 해당 URL의 내용을 필터링 하거나 잘 알려진 API를 통해 이를 방지해야 합니다.",
  "rule.sast.sw.js.3266.example.0.dangerous": "라인 1: 올바른 url인지 확인하지 않고 사용하여 위험합니다.",
  "rule.sast.sw.js.3266.example.0.safe": "라인 6: validateURL(url)을 통해 https:, http:가 포함된 올바른 url인지 확인 후에 사용하여 안전합니다.",
  "rule.sast.sw.js.3266.name": "URL 변조",
  "rule.sast.sw.js.3266.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"replace\")",
  "rule.sast.sw.js.3266.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.3266.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.3266.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.3266.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"eval\")",
  "rule.sast.sw.js.3266.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.3266.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of name(\"body\")",
  "rule.sast.sw.js.3266.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.3266.option.weak_element.description": "외부 정보 사용 html 속성을 작성합니다.",
  "rule.sast.sw.js.3266.option.weak_element.name": "외부 정보 사용 html 속성",
  "rule.sast.sw.js.3267.description": "JSON.stringify()는 JavaScript 값이나 객체를 JSON 문자열로 변환하기 위해 사용됩니다. 일반적으로 JSON.stringify()는 별다른 위험이 없는 API이나 HTML 기반 환경에서 사용하면 XSS위험이 있습니다.\nJSON.stringify() 사용 시에 ‘<’ 문자를 필터링하거나 serialize-javascript와 같은 안전한 라이브러리를 사용해야 합니다.",
  "rule.sast.sw.js.3267.example.0.dangerous": "라인 2: HTML 기반 환경에서 JSON.stringify()를 필터링 없이 사용하여 XSS에 노출될 수 있습니다.",
  "rule.sast.sw.js.3267.example.0.safe": "라인 2: JSON.stringify()의 replacer 기능을 사용하여 XSS를 방지할 수 있습니다.",
  "rule.sast.sw.js.3267.name": "스크립트 삽입",
  "rule.sast.sw.js.5834.description": "데이터베이스와 연동된 웹 프로그램에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.\n가장 일반적으로 사용하는 ORM 라이브러리인 Sequealize에서는 쿼리 인자화를 사용해 쿼리를 구성하기 때문에 SQL 삽입 공격으로부터 안전합니다. 하지만 원시 SQL 또는 사용자 정의 SQL을 사용할 경우에는 외부 입력값을 인자화된 쿼리의 바인딩 변수로 사용해야 안전합니다.",
  "rule.sast.sw.js.5834.example.0.dangerous": "라인 6: 외부에서 입력받은 값을 쿼리문에 바로 사용하여 위험합니다.",
  "rule.sast.sw.js.5834.example.0.safe": "라인 7: 외부에서 입력받은 값을 바인딩 후 사용하여 안전합니다.",
  "rule.sast.sw.js.5834.name": "SQL 삽입(ORM)",
  "rule.sast.sw.js.5834.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.5834.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.5834.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.5834.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.5834.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.5834.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.5834.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(reg(\"__sparrow_required__sequelize.query\"))",
  "rule.sast.sw.js.5834.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.5834.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.",
  "rule.sast.sw.js.5834.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.5838.description": "크로스 사이트 스크립트 공격은 웹 사이트에 악성 코드를 삽입하는 공격 방법입니다. 공격은 일반적으로 애플리케이션의 사용자를 목표로 삼으며, 자동으로 사용자가 악성 코드를 실행하게 하는 등의 피해를 입힐 수 있습니다. 예를 들어, 검증되지 않은 외부 입력이 동적 웹 페이지 생성에 사용될 경우, 전송된 동적 웹 페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출 등의 공격을 유발할 수 있습니다.\n자바스크립트에서는 encodeURI(), encodeURIComponent() 함수를 통해 이스케이프 기능을 제공합니다. 외부로부터 받은 데이터를 사용해 DOM에 변화를 주는 코드가 실행되기 전에 입력값을 이스케이프 해주면 XSS 공격을 막을 수 있습니다.",
  "rule.sast.sw.js.5838.example.0.dangerous": "라인 4: 외부로부터 받은 데이터를 검증 없이 DOM에 기록하여 위험합니다",
  "rule.sast.sw.js.5838.example.0.safe": "라인 4: 외부로부터 받은 데이터를 이스케이프 처리하여 안전합니다\n라인 8: 외부로부터 받은 데이터를 xssFilters를 사용해 이스케이프 처리하여 안전합니다",
  "rule.sast.sw.js.5838.name": "크로스 사이트 스크립트(VanillaJS)",
  "rule.sast.sw.js.5838.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.5838.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.5838.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.5838.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.5838.option.taint_sink.description": "외부 정보가 사용되는 new 표현식의 이름을 작성합니다.<br />예시) new webSocket$param(1)",
  "rule.sast.sw.js.5838.option.taint_sink.name": "외부 정보 사용 생성자",
  "rule.sast.sw.js.5838.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.5838.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.5839.description": "XML 문서에는 DTD(Document Type Definition)를 포함할 수 있으며, DTD는 XML 엔터티(entity)를 정의합니다. 부적절한 XML 외부개체 참조 보안약점은 서버에서 XML 외부 엔터티를 처리할 수 있도록 설정된 경우에 발생할 수 있습니다. 취약한 XML parser가 외부값을 참조하는 XML을 처리할 때, 공격자가 삽입한 공격 구문이 동작되어 서버 파일 접근, 불필요한 자원 사용, 인증 우회, 정보 노출 등이 발생할 수 있습니다.\nNodeJS에서는 내장 XML 파싱 엔진을 지원하지 않으며, 별도의 라이브러리를 사용해야 합니다. 어떠한 라이브러리를 사용해도 무방하지만 반드시 외부 엔터티 파싱 기능을 비활성화 하는 옵션을 설정해주어야 합니다.",
  "rule.sast.sw.js.5839.example.0.dangerous": "라인 4: 외부 엔터티 파싱을 허용하도록 설정하지 않았으므로 위험합니다.",
  "rule.sast.sw.js.5839.example.0.safe": "라인 4: 외부 엔터티 파싱을 허용하지 않는 설정으로 안전합니다.\n라인 7: 설정의 기본 값이 엔터티 파싱을 허용하지 않기 때문에 안전합니다.",
  "rule.sast.sw.js.5839.name": "부적절한 XML 외부 개체 참조",
  "rule.sast.sw.js.5840.description": "패스워드와 같이 중요 정보를 저장할 경우, 가변 길이 데이터를 고정된 크기의 해시값으로 변환해주는 일방향 해시 함수를 이용해 저장할 수 있습니다. 만약 중요 정보를 솔트(Salt)없이 일방향 해시 함수를 사용해 저장한다면, 공격자는 미리 계산된 레인보우 테이블을 이용해 해시값을 알아낼 수 있습니다.\n패스워드와 같은 중요 정보를 저장할 경우, 임의의 길이인 데이터를 고정된 크기의 해시값으로 변환해주는 일방향 해시 함수를 이용하여 저장해야 안전합니다. 또한, 솔트값은 사용자별로 유일하게 생성해야 하며, 이를 위해 사용자별 솔트값을 별도로 저장하는 과정이 필요합니다. 최신 해시 함수인 bcrypt, PBKDF2 등은 이를 지원하나 그렇지 않은 해시를 사용한다면 직접 입력해야 합니다.",
  "rule.sast.sw.js.5840.example.0.dangerous": "라인 2: 솔트 값이 포함되지 않은 데이터를 해시 함수에 사용하기 때문에 위험합니다.",
  "rule.sast.sw.js.5840.example.0.safe": "라인 6, 9: 솔트 값이 포함된 해시 함수를 사용하기 때문에 안전합니다.",
  "rule.sast.sw.js.5840.name": "솔트 없이 일방향 해시 함수 사용",
  "rule.sast.sw.js.5841.description": "충분하지 않은 키 길이 사용은 길이가 짧은 키를 사용할 때 생기는 보안약점입니다. 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 이를 이용해 공격자가 암호화된 데이터나 패스워드를 복호화할 수 있게 됩니다.\n암호 알고리즘 및 키 길이를 선택할 경우, 암호 알고리즘의 안전성 유지 기간과 보안 강도별 암호 알고리즘 키 길이 비교표(KISA)를 기반으로 암호 알고리즘 및 키 길이를 선택해야 합니다.\nRSA 알고리즘은 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128비트 이상의 키를 사용합니다. (RSA, DSA의 경우 키의 길이는 적어도 2048 비트, ECC의 경우 256 비트 이상으로 설정)",
  "rule.sast.sw.js.5841.example.0.dangerous": "라인 2: RSA키 길이를 1024비트로 설정하여 위험합니다.\n라인 8: ECC키 길이를 192비트로 설정하여 위험합니다.",
  "rule.sast.sw.js.5841.example.0.safe": "라인 2: RSA키 길이를 2048비트 이상으로 설정하여 안전합니다.\n라인 8: ECC키 길이를 224비트 이상으로 설정하여 안전합니다.",
  "rule.sast.sw.js.5841.name": "충분하지 않은 키 길이 사용",
  "rule.sast.sw.js.5841.option.namedCurve.description": "option 파라미터에 namedCurve가 사용될 때 검출할 값",
  "rule.sast.sw.js.5841.option.namedCurve.name": "namedCurve 옵션",
  "rule.sast.sw.js.5842.description": "검증되지 않은 외부 입력 값으로 시스템 자원에 접근할 경우, 공격자가 입력 값을 조작하여 시스템이 보호하는 자원에 접근할 수 있는 보안약점입니다. 공격자는 이를 이용하여 자원의 수정 및 삭제, 시스템 정보 누출, 시스템 자원 간 충돌로 인한 서비스 장애 등을 유발시킬 수 있습니다.\n외부로부터 받은 입력값을 자원(파일, 소켓의 포트 등)의 식별자로 사용하는 경우 경로 순회(directory traversal) 공격의 위험이 있는 문자( /, , .. 등)을 제거할 수 있는 필터를 사용하거나, 사전에 정의된 리스트에 포함된 식별자만 사용해야 합니다.",
  "rule.sast.sw.js.5842.example.0.dangerous": "라인 8: 외부 입력값을 검증 없이 사용하여 경로 조작 위험이 있습니다.",
  "rule.sast.sw.js.5842.example.0.safe": "라인 10: 위험한 문자를 정규식으로 필터링 후 사용하여 안전합니다.",
  "rule.sast.sw.js.5842.name": "경로 조작",
  "rule.sast.sw.js.5842.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.5842.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.5842.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.5842.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.5842.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.5842.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.5842.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) param(1) of name(\"getFile\")",
  "rule.sast.sw.js.5842.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.5842.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다. 예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.5842.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.5843.description": "쉽게 예측 가능한 난수를 사용한다면, 공격자가 생성되는 다음 숫자를 예상해 시스템을 공격할 수 있습니다.\n난수 발생기에서 시드를 사용하는 경우에는 고정된 값을 사용하지 않고 예측하기 어려운 방법으로 생성된 값을 사용합니다. NodeJS 엔진에서는 crypto.getRandomBytes 등을 사용해 암호학적으로 안전한 의사 난수 바이트를 생성할 수 있습니다.",
  "rule.sast.sw.js.5843.example.0.dangerous": "라인 3: 난수 생성에 Math.random 라이브러리를 사용하여 위험합니다",
  "rule.sast.sw.js.5843.example.0.safe": "라인 4: 난수 생성에 crypto 라이브러리를 사용하여 안전합니다.",
  "rule.sast.sw.js.5843.name": "적절하지 않은 난수 값 사용",
  "rule.sast.sw.js.5843.option.insecure_random.description": "보안에 취약한 random 함수를 작성하세요.",
  "rule.sast.sw.js.5843.option.insecure_random.name": "보안에 취약한 random 함수",
  "rule.sast.sw.js.5844.description": "재귀의 순환 횟수를 제어하지 못하여 할당된 메모리나 프로그램 스택 등의 자원을 과다하게 사용하면 위험합니다. 대부분의 경우, 귀납 조건이 없는 재귀 함수는 무한 루프에 빠져들게 되고 자원 고갈을 발생시킴으로써 시스템의 정상적인 서비스를 제공할 수 없게 합니다.\n재귀함수가 과도하게 누적되면 함수 반환을 위한 콜 스택이 가득 차게 되어 비정상적으로 동작할 수 있습니다. JavaScript에서는 과도한 재귀함수를 호출하는 경우 Firefox 브라우저에서는 `too much recursion`, Chrome/Safari 브라우저에서는`Maximum call stack size exceeded` 예외를 발생시키며 프로그램이 비정상적으로 종료됩니다.\n모든 재귀 호출 시 호출 횟수를 제한하거나 재귀 함수 종료 조건을 명확히 정의해 호출을 제어해야 합니다.",
  "rule.sast.sw.js.5844.example.0.dangerous": "라인 2: 재귀함수 탈출 조건을 설정하지 않아 위험합니다.",
  "rule.sast.sw.js.5844.example.0.safe": "라인 2-3: 재귀함수의 탈출 조건을 설정하기 때문에 안전합니다.",
  "rule.sast.sw.js.5844.name": "종료되지 않는 반복문 또는 재귀 함수",
  "rule.sast.sw.js.5845.description": "응용 프로그램이 민감한 정보를 포함하는 오류 메시지를 생성해 외부에 제공하면 공격자의 악성 행위로 이어질 수 있습니다. 예외발생 시 예외 이름이나 추적 메시지(traceback)를 출력하는 경우, 프로그램 내부 구조를 쉽게 파악할 수 있습니다.\nExpressJS에서는 HTTP 오류 코드가 있는 요청을 처리하기 위한 errorHandler 미들웨어를 제공합니다. HTTP 오류를 감지하면 사전에 정해둔 오류 메시지가 출력되도록 설정해야 합니다.",
  "rule.sast.sw.js.5845.example.0.dangerous": "라인 5: 서버에서 발생한 오류 메시지를 그대로 전달하여 위험합니다.",
  "rule.sast.sw.js.5845.example.0.safe": "라인 5: 서버에서 발생한 오류 메시지를 필터링 후 전달하므로 안전합니다.",
  "rule.sast.sw.js.5845.example.1.dangerous": "라인 5, 8, 11, 14 : 오류 핸들러를 선언했음에도, Error 객체를 전달하여 위험합니다.",
  "rule.sast.sw.js.5845.example.1.safe": "라인 5, 8, 11, 14 : 오 핸들러에서 내용을 필터링 후 전달하여 안전합니다.",
  "rule.sast.sw.js.5845.name": "오류 메시지 정보노출",
  "rule.sast.sw.js.5846.description": "디버깅 목적으로 삽입된 코드는 개발이 완료되면 제거해야 합니다. 디버그 코드는 설정 등의 민감한 정보 또는 의도하지 않은 시스템 제어로 이어지는 정보를 담고 있을 수 있습니다. 디버그 코드가 남겨진 채로 배포될 경우, 공격자가 식별 과정을 우회하거나 의도하지 않은 정보 노출 문제가 발생할 수 있습니다.\nJavaScript에서는 console.log 또는 console.error 함수를 사용해 디버그 메시지를 출력합니다. 개발 완료 후에 디버깅용으로 작성한 코드는 모두 삭제합니다.",
  "rule.sast.sw.js.5846.example.0.dangerous": "라인 1-2: 디버그 코드가 남아있기 때문에 위험합니다.",
  "rule.sast.sw.js.5846.example.0.safe": "라인 1-2: 디버그 코드가 주석 처리되어 안전합니다.",
  "rule.sast.sw.js.5846.name": "제거되지 않고 남은 디버그 코드",
  "rule.sast.sw.js.5848.description": "검증되지 않은 외부 입력 값으로 시스템 자원에 접근할 경우, 공격자가 입력 값을 조작하여 시스템이 보호하는 자원에 접근할 수 있는 보안약점입니다. 공격자는 이를 이용하여 자원의 수정 및 삭제, 시스템 정보 누출, 시스템 자원 간 충돌로 인한 서비스 장애 등을 유발시킬 수 있습니다.\n외부로부터 받은 입력값을 자원(파일, 소켓의 포트 등)의 식별자로 사용하는 경우 사전에 정의된 리스트에 포함된 식별자만 사용해야 합니다.",
  "rule.sast.sw.js.5848.example.0.dangerous": "라인 5: 검증되지 않은 입력값을 URL로 바로 이용하여 위험합니다",
  "rule.sast.sw.js.5848.example.0.safe": "라인 11: 입력값을 검증 후 URL로 사용하여 안전합니다.",
  "rule.sast.sw.js.5848.name": "자원 삽입",
  "rule.sast.sw.js.5848.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.js.5848.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.5848.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.5848.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.5848.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.5848.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.5848.option.taint_sink.description": "외부 정보가 사용되는 new 표현식의 이름을 작성합니다.<br />예시) new webSocket$param(1)",
  "rule.sast.sw.js.5848.option.taint_sink.name": "외부 정보 사용 생성자",
  "rule.sast.sw.js.5848.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"document.URL\")",
  "rule.sast.sw.js.5848.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.js.8.description": "공격자가 소프트웨어의 의도된 동작을 변경하도록 임의 코드를 삽입하여 소프트웨어가 비정상적으로 동작하도록 하는 보안약점을 말합니다.\nNode.js에서 코드 삽입 공격을 유발할 수 있는 함수로 eval(), Function()등이 있습니다. 해당 함수의 인자를 면밀히 검증하지 않는 경우 공격자가 전달한 코드를 그대로 실행할 수 있습니다.\n동적으로 코드를 실행할 수 있는 함수를 사용하지 않습니다. 필요 시, 외부 입력 값에 대하여 화이트리스트 방식으로 검증합니다. 또는 유효한 문자만 포함하도록 사용자 입력 값을 필터링 합니다.",
  "rule.sast.sw.js.8.example.0.dangerous": "라인 3, 4: 검증되지 않은 값을 동적으로 생성하여 개발자가 의도하지 않은 코드가 실행 될 위험을 내재하고 있습니다.",
  "rule.sast.sw.js.8.example.0.safe": "라인 3: 동적으로 코드를 실행하는 함수를 사용하지 않습니다.\n라인 5: replace()를 통해 외부에서 입력 받은 값의 특수문자를 제거한 후 사용하여 안전합니다.",
  "rule.sast.sw.js.8.name": "코드 삽입",
  "rule.sast.sw.js.8.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"replace\")",
  "rule.sast.sw.js.8.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.js.8.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.js.8.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.js.8.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\"+\") to return",
  "rule.sast.sw.js.8.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.js.8.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"eval\")",
  "rule.sast.sw.js.8.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.js.8.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of name(\"body\")",
  "rule.sast.sw.js.8.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2872.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.kt.2872.example.0.dangerous": "라인 11: 안전하지 않은 값이 executeQuery 함수로 전달되어 쿼리 생성에 사용됩니다.",
  "rule.sast.sw.kt.2872.example.0.safe": "라인 15: PreparedStatement 를 사용하여 바인딩된 값을 쿼리에 전달합니다.",
  "rule.sast.sw.kt.2872.name": "SQL 삽입",
  "rule.sast.sw.kt.2872.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2872.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2872.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2872.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2872.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2872.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2872.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(reg(\"java.sql.Statement.executeQuery(.*)\"))",
  "rule.sast.sw.kt.2872.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2872.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2872.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2873.description": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘을 사용하는 코드를 검출합니다.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 컴퓨터의 성능이 향상되는 경우 오래된 몇몇 암호화 알고리즘이 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것이라고 예상되는 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.kt.2873.example.0.dangerous": "라인 12: 취약한 MD5 알고리즘을 사용했습니다.",
  "rule.sast.sw.kt.2873.example.0.safe": "라인 18: 취약한 알고리즘 대신 AES와 같은 안전한 알고리즘을 사용합니다.",
  "rule.sast.sw.kt.2873.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.kt.2873.option.string_name_encrypt_creator.description": "암호화 생성 함수의 이름을 작성합니다.",
  "rule.sast.sw.kt.2873.option.string_name_encrypt_creator.name": "암호화 생성 함수",
  "rule.sast.sw.kt.2873.option.string_name_hash_creator.description": "해시 생성 함수의 이름을 작성합니다.",
  "rule.sast.sw.kt.2873.option.string_name_hash_creator.name": "해시 생성 함수",
  "rule.sast.sw.kt.2873.option.weak_encrypt_algorithm.description": "취약한 암호화 알고리즘의 이름을 작성합니다.",
  "rule.sast.sw.kt.2873.option.weak_encrypt_algorithm.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.kt.2873.option.weak_hash_algorithm.description": "취약한 해시 알고리즘의 이름을 작성합니다.",
  "rule.sast.sw.kt.2873.option.weak_hash_algorithm.name": "취약한 해시 알고리즘",
  "rule.sast.sw.kt.2874.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 경우를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자(`, /, \\, .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.kt.2874.example.0.dangerous": "라인 9: 안전하지 않은 request.getParameter(\"name\") 값을 경로로 사용하여 파일에 접근합니다.",
  "rule.sast.sw.kt.2874.example.0.safe": "라인 7: 안전하지 않은 값을 경로로 접근하지 않거나 필터링을 거친 안전한 값만을 사용합니다.",
  "rule.sast.sw.kt.2874.name": "경로 조작",
  "rule.sast.sw.kt.2874.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2874.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2874.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2874.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2874.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2874.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2874.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"java.io.File\")",
  "rule.sast.sw.kt.2874.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2874.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2874.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2875.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\nRuntime.exec(), ProcessBuilder.command() 등의 함수로 시스템 내부 명령어를 실행할 수 있습니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.kt.2875.example.0.dangerous": "라인 10: 안전하지 않은 request.getParameter(\"command\") 값이 시스템 명령어를 실행하는 Runtime.exec() 함수에 사용됩니다.",
  "rule.sast.sw.kt.2875.example.0.safe": "라인 9: 필터 함수나 알려진 안전한 명령 목록 등을 통해 안전한 값만 시스템 명령어 실행 인수로 사용되도록 합니다.",
  "rule.sast.sw.kt.2875.name": "명령어 삽입",
  "rule.sast.sw.kt.2875.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2875.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2875.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2875.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2875.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2875.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2875.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"java.lang.Runtime.exec\")",
  "rule.sast.sw.kt.2875.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2875.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2875.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2876.description": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드받는 것을 검출합니다.\n서버 측에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드되어 해당 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부 명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있습니다.\n화이트리스트 방식으로 허용된 확장자만 업로드를 허용합니다. 업로드되는 파일을 저장할 때에는 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장합니다.",
  "rule.sast.sw.kt.2876.example.0.dangerous": "라인 15: 업로드할 파일에 대한 유효성을 검사하지 않아서 위험한 유형의 파일을 공격자가 업로드하거나 전송할 수 있습니다.",
  "rule.sast.sw.kt.2876.example.0.safe": "라인 15: 업로드 가능한 파일의 종류를 제한합니다.",
  "rule.sast.sw.kt.2876.name": "제한되지 않은 파일 업로드",
  "rule.sast.sw.kt.2876.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) base of name(\"endsWith\")",
  "rule.sast.sw.kt.2876.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2876.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2876.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2876.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2876.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2876.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"java.nio.file.Files.copy\")",
  "rule.sast.sw.kt.2876.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2876.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"org.springframework.web.multipart.MultipartFile.originalFilename\")",
  "rule.sast.sw.kt.2876.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2877.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL을 사용한 자동 연결을 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.kt.2877.example.0.dangerous": "라인 10: 외부로부터 받은 URL을 적절한 처리 없이 바로 재연결합니다.",
  "rule.sast.sw.kt.2877.example.0.safe": "라인 11: 외부로 연결할 URL과 도메인들은 화이트리스트를 작성한 후, 그 중에서 선택하도록 함으로써 안전하지 않은 사이트로의 접근을 차단할 수 있습니다.",
  "rule.sast.sw.kt.2877.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.kt.2877.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2877.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2877.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2877.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2877.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2877.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2877.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(\"javax.servlet.http.HttpServletResponse.sendRedirect\")",
  "rule.sast.sw.kt.2877.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2877.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2877.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2878.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\n외부 입력값을 적절한 검사 과정 없이 XPath 쿼리문 생성을 위한 문자열로 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(`, [, ], /, =, @ 등) 및 쿼리 예약어를 필터링합니다.",
  "rule.sast.sw.kt.2878.example.0.dangerous": "라인 23: 외부의 신뢰할 수 없는 입력을 XPath 쿼리문으로 사용했습니다.",
  "rule.sast.sw.kt.2878.example.0.safe": "라인 14: 안전한 XPath 쿼리문만 사용합니다.\n라인 15: 안전한 XPath 쿼리문만 사용합니다.",
  "rule.sast.sw.kt.2878.name": "XPath 삽입",
  "rule.sast.sw.kt.2878.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2878.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2878.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2878.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2878.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2878.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2878.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(\"javax.xml.xpath.XPath.compile\")",
  "rule.sast.sw.kt.2878.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2878.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2878.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2879.description": "LDAP 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 LDAP 쿼리문을 검출합니다.\n공격자가 외부 입력을 통해서 의도하지 않은 LDAP(Lightweight Directory Access Protocol) 명령어를 수행할 수 있습니다. 즉, 웹 애플리케이션이 사용자가 제공한 입력을 올바르게 처리하지 못하면 공격자가 LDAP 명령문의 구성을 바꿀 수 있습니다. 이로 인해 프로세스가 명령을 실행한 컴포넌트와 동일한 권한을 가지고 동작하게 됩니다.\nDN(Distinguished Name)과 필터에 사용되는 사용자 입력값에는 특수문자가 포함되지 않도록 특수문자를 제거해야 합니다. 만약 특수문자를 허용해야 하는 경우라면 특수문자(=, +, <, >, #, ;, \\ 등 )가 실행 명령이 아닌 일반문자로 인식되도록 처리합니다.",
  "rule.sast.sw.kt.2879.example.0.dangerous": "라인 24: 외부의 신뢰할 수 없는 입력이 LDAP 쿼리문 문자열을 생성하는데 사용됩니다.",
  "rule.sast.sw.kt.2879.example.0.safe": "라인 24: 필터를 사용하여 안전한 LDAP 쿼리문만 사용하도록 합니다.",
  "rule.sast.sw.kt.2879.name": "LDAP 삽입",
  "rule.sast.sw.kt.2879.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2879.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2879.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2879.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2879.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2879.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2879.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"javax.naming.directory.DirContext.search\")",
  "rule.sast.sw.kt.2879.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2879.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2879.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2880.description": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 경우를 검출합니다.\n외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링으로 그대로 사용하는 경우 발생할 수 있는 보안약점입니다. 공격자는 포맷 스트링을 사용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽고 쓸 수 있습니다.\nprint() 등 포맷 스트링을 사용하는 함수를 사용할 때는 사용자 입력값을 직접적으로 포맷 스트링으로 사용하거나 포맷 스트링 생성에 포함시키지 않도록 합니다. 사용자 입력값을 포맷 스트링을 사용하는 함수에 사용할 때는 가능하면 %s 포맷 스트링을 지정하거나 f-string을 사용하고, 사용자 입력값은 2번째 이후의 매개변수로 사용합니다.",
  "rule.sast.sw.kt.2880.example.0.dangerous": "라인 15: 외부 입력값을 포맷 문자열 포함 여부를 확인하지 않고 출력값으로 사용하고 있습니다. 이 경우 공격자가 `%1$tm`, `%1$te` 또는 `%1$tY` 와 같은 문자열을 입력할 경우 validDate가 실제 유효 기간을 출력할 수 있습니다.",
  "rule.sast.sw.kt.2880.example.0.safe": "라인 15: 사용자로부터 입력받은 문자열을 포맷 스트링에 직접 포함시키지 않고, %s 포맷 스트링을 사용하여 정보 유출을 방지합니다.",
  "rule.sast.sw.kt.2880.name": "포맷 스트링 삽입",
  "rule.sast.sw.kt.2880.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.kt.2880.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2880.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2880.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2880.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2880.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2880.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(\"kotlin.String.format\")",
  "rule.sast.sw.kt.2880.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2880.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2880.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2881.description": "중요 기능에 대한 인증 제어 누락 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.\n검사할 중요 기능과 필요한 인증 제어 방식을 옵션으로 지정할 수 있습니다.\n적절한 인증 과정이 없이 중요 정보(계좌이체 정보, 개인 정보 등)를 열람 또는 변경하거나 상당한 리소스를 소모하는 작업을 수행하면 위험할 수 있습니다. 클라이언트의 보안 검사를 우회하여 서버에 접근하지 못하도록 설계하고, 은행 계좌이체 등 중요한 페이지는 재인증을 적용해야 합니다. 또한 안전하다고 검증된 라이브러리나 프레임워크(OpenSSL이나 ESAPI의 보안 기능 등)를 사용하는 것도 중요합니다.\n중요 기능에 접근하기 전 인증 과정을 거칩니다.",
  "rule.sast.sw.kt.2881.example.0.dangerous": "라인 8: 인증을 거치지 않고 중요한 동작을 수행합니다.",
  "rule.sast.sw.kt.2881.example.0.safe": "라인 10: 인증을 수행한 사용자만 다시 재인증을 거쳐 중요 기능을 수행할 수 있도록 합니다.",
  "rule.sast.sw.kt.2881.name": "중요 기능에 대한 인증 제어 누락",
  "rule.sast.sw.kt.2881.option.auth_by_compare.description": "중요 기능을 수행하기 전에 비교 연산자를 사용하는 것을 인증으로 취급하려면 선택합니다.",
  "rule.sast.sw.kt.2881.option.auth_by_compare.name": "비교 연산자로 인증",
  "rule.sast.sw.kt.2881.option.authentication_function.description": "중요 기능을 수행하기 전에 호출 및 검사되어야 하는 인증 함수 이름을 작성합니다.<br />예시) checkAccount",
  "rule.sast.sw.kt.2881.option.authentication_function.name": "인증 함수",
  "rule.sast.sw.kt.2881.option.critical_function.description": "중요 기능을 수행하는 함수 이름을 작성합니다.<br />예시) sendAccount",
  "rule.sast.sw.kt.2881.option.critical_function.name": "중요 함수",
  "rule.sast.sw.kt.2881.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2881.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2882.description": "부적절한 인증 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 경우를 검출합니다.\n사용자 인증을 위한 별도의 작업을 수행하지 않고 익명 바인딩을 허용하면 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.\n사용자 이름과 비밀번호를 명시하여 LDAP 바인딩을 수행합니다.",
  "rule.sast.sw.kt.2882.example.0.dangerous": "라인 9: 사용자 인증을 위한 별도의 접극제어 방법이 사용되지 않고 있습니다. 이는 익명 바인딩을 허용하는 것으로 볼 수 있습니다. 따라서 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.",
  "rule.sast.sw.kt.2882.example.0.safe": "라인 9: 사용자 ID와 password를 context에 설정한 후 접근하도록 접근 제어를 사용합니다.",
  "rule.sast.sw.kt.2882.name": "부적절한 인증",
  "rule.sast.sw.kt.2883.description": "중요한 리소스에 대한 잘못된 권한 할당 체커는 설정 파일, 실행 파일, 라이브러리 등을 SW 관리자가 아닌 사용자가 읽고 쓸 수 있는 경우를 검출합니다.\n옵션으로 지정된 중요 리소스 파일에 대해 과도한 권한을 부여하는 코드를 검출합니다.\nSW가 중요한 보안 관련 리소스에 대하여 읽기 또는 수정하기 권한을 의도하지 않게 허가할 경우, 권한을 갖지 않은 사용자가 해당 리소스를 사용하게 됩니다.\n중요한 리소스에 대해서는 특정 사용자에게만 권한을 부여하도록 수정합니다.",
  "rule.sast.sw.kt.2883.example.0.dangerous": "라인 9: chmod를 사용하여 중요한 파일에 대하여 모든 사용자에게 읽기/쓰기/실행 권한을 부여하고 있습니다.",
  "rule.sast.sw.kt.2883.example.0.safe": "라인 9: chmod를 사용하여 중요한 파일에 대하여 권한을 변경할 경우, 필요 이상의 권한을 주었는지 확인하여 권한을 최소화합니다.",
  "rule.sast.sw.kt.2883.name": "중요한 리소스에 대한 잘못된 권한 할당",
  "rule.sast.sw.kt.2883.option.chmod_option.description": "과도한 권한이라 판단되는 chmod의 옵션값을 작성합니다.",
  "rule.sast.sw.kt.2883.option.chmod_option.name": "chmod 옵션",
  "rule.sast.sw.kt.2884.description": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 코드를 검출합니다.\n중요 정보를 공개된 저장소에 저장할 때 암호화를 하지 않는다면 인증 받지 않은 주체에 의해서 데이터 노출, 또는 스니핑될 수 있습니다.\n중요 정보를 외부 환경 파일에 저장할 때는, 반드시 암호화하여 저장하는 것이 바람직합니다. 또한 SW 설계 시 민감한 데이터와 일반 데이터를 가능한 분리하도록 합니다.",
  "rule.sast.sw.kt.2884.example.0.dangerous": "라인 17: 비밀번호를 암호화 없이 평문 상태로 데이터베이스에 저장하고 있습니다.",
  "rule.sast.sw.kt.2884.example.0.safe": "라인 20: 비밀번호를 암호화 후 데이터베이스에 저장합니다.",
  "rule.sast.sw.kt.2884.name": "민감한 정보를 평문으로 저장",
  "rule.sast.sw.kt.2884.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "rule.sast.sw.kt.2884.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2884.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2884.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2884.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2884.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2884.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"write\")",
  "rule.sast.sw.kt.2884.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2884.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(reg(\"^(?!.*encrypted).*[pP]assw(or)?d\"))",
  "rule.sast.sw.kt.2884.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2885.description": "민감한 정보의 일반 텍스트 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.\n사용자 또는 시스템의 중요 정보가 포함된 데이터를 평문으로 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있습니다.\n민감한 정보를 통신 채널을 통하여 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "rule.sast.sw.kt.2885.example.0.dangerous": "라인 10: 중요한 정보를 암호화를 하지않고 평문 상태로 통신 채널에 전달하고 있습니다.",
  "rule.sast.sw.kt.2885.example.0.safe": "라인 15: 중요한 정보를 통신 채널을 통해 전달할 경우 암호화를 한뒤에 전달합니다.",
  "rule.sast.sw.kt.2885.name": "민감한 정보의 일반 텍스트 전송",
  "rule.sast.sw.kt.2885.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "rule.sast.sw.kt.2885.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2885.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2885.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2885.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2885.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2885.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"java.io.OutputStream.write\")",
  "rule.sast.sw.kt.2885.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2885.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(reg(\"^(?!.*encrypted).*[pP]assw(or)?d\"))",
  "rule.sast.sw.kt.2885.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2886.description": "하드코딩된 비밀번호로 API 호출 체커는 하드코딩된 비밀번호로 API를 호출하는 코드를 검출합니다.\n프로그램 코드 내부에 하드코딩된 비밀번호를 포함하고 이를 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 관리자 정보가 노출될 수 있으므로 위험합니다.\n비밀번호는 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.",
  "rule.sast.sw.kt.2886.example.0.dangerous": "라인 10: 하드코딩된 비밀번호가 함수의 인자로 사용되고 있습니다.",
  "rule.sast.sw.kt.2886.example.0.safe": "라인 7: 비밀번호는 하드코딩하지 않고 외부에서 가져오도록 합니다.",
  "rule.sast.sw.kt.2886.name": "하드코딩된 비밀번호로 API 호출",
  "rule.sast.sw.kt.2886.option.password_as_argument.description": "비밀번호가 인자로 사용되는 함수의 이름을 작성합니다.",
  "rule.sast.sw.kt.2886.option.password_as_argument.name": "비밀번호 인자 사용 함수 이름",
  "rule.sast.sw.kt.2887.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키를 사용하는 코드를 검출합니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 통해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 합니다.",
  "rule.sast.sw.kt.2887.example.0.dangerous": "라인 6: 보안성이 강한 RSA 알고리즘을 사용함에도 불구하고 키 길이를 512 비트로 설정하여 공격당할 위험이 있습니다.",
  "rule.sast.sw.kt.2887.example.0.safe": "라인 6: RSA 암호화에 사용하는 키의 길이는 적어도 2,048 비트 이상으로 설정합니다.",
  "rule.sast.sw.kt.2887.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.kt.2887.option.sufficient_key_size.description": "RSA 알고리즘에서 허용하는 키의 최소 길이를 작성합니다.",
  "rule.sast.sw.kt.2887.option.sufficient_key_size.name": "RSA 알고리즘의 허용 키 길이 (Signature/Cipher)",
  "rule.sast.sw.kt.2888.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\n사용을 금지할 난수 생성 메소드를 옵션으로 지정할 수 있습니다.\n예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하게 됩니다.\n옵션으로 지정된 금지 메소드보다 안전한 방식을 사용하여 난수를 생성합니다.",
  "rule.sast.sw.kt.2888.example.0.dangerous": "라인 4: java.lang.Math 클래스의 random() 메소드는 시드를 재설정할 수 없기 때문에 위험합니다.\n라인 9: java.util.Random 클래스를 사용하면 시드를 재설정할 수 있으나, 여전히 위험합니다.",
  "rule.sast.sw.kt.2888.example.0.safe": "라인 4: java.security.SecureRandom 클래스를 통하여 직접 시드를 설정하면 java.util.Random을 사용하는 것보다 강력한 예측불가 난수를 생성할 수 있습니다.",
  "rule.sast.sw.kt.2888.name": "부적절한 난수 생성",
  "rule.sast.sw.kt.2888.option.forbidden_random_class.description": "금지된 랜덤 클래스의 이름을 작성합니다.",
  "rule.sast.sw.kt.2888.option.forbidden_random_class.name": "금지된 랜덤 클래스",
  "rule.sast.sw.kt.2888.option.forbidden_random_method.description": "금지된 랜덤 함수의 이름을 작성합니다.",
  "rule.sast.sw.kt.2888.option.forbidden_random_method.name": "금지된 랜덤 함수",
  "rule.sast.sw.kt.2889.description": "하드코딩된 암호화 키 체커는 소스 코드 내에 하드코딩되어 사용되는 암호화 키를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역계산하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역계산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코딩하여 코드를 작성하는 수도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코드하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다. ",
  "rule.sast.sw.kt.2889.example.0.dangerous": "라인 7: 암호화를 수행하기 위해 하드코딩된 암호화 키를 사용합니다.",
  "rule.sast.sw.kt.2889.example.0.safe": "라인 5: 암호화 키를 코드 내부에 상수 형태로 정의해서 사용하지 않도록 합니다.",
  "rule.sast.sw.kt.2889.name": "하드코딩된 암호화 키",
  "rule.sast.sw.kt.2889.option.secret_key_as_argument.description": "키가 인자로 사용되는 함수의 이름을 작성합니다.",
  "rule.sast.sw.kt.2889.option.secret_key_as_argument.name": "키 인자 사용 함수 이름",
  "rule.sast.sw.kt.2890.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 받아들이는 경우를 검출합니다.\n정규식을 사용하는 패턴 검사를 하지 않은 비밀번호를 인자로 생성된 계정을 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하도록 강제하거나 같은 문자를 연속으로 여러 개 사용하지 못하게 하는 등을 생각할 수 있습니다. 한국인터넷진흥원 \"암호사용안내서\"의 비밀번호 설정 규칙을 참고할 수 있습니다. ",
  "rule.sast.sw.kt.2890.example.0.dangerous": "라인 14: 비밀번호에 대한 검증을 수행하지 않고 있습니다.",
  "rule.sast.sw.kt.2890.example.0.safe": "라인 14: 비밀번호에 대한 길이 제한 등의 강한 유효성 검증을 수행하도록 합니다.",
  "rule.sast.sw.kt.2890.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.kt.2890.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) base of name(\"matches\")",
  "rule.sast.sw.kt.2890.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2890.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2890.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2890.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2890.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2890.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"registDAO.regist\")",
  "rule.sast.sw.kt.2890.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2890.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2890.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2891.description": "영속적인 쿠키 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 경우를 검출합니다.\n대부분의 웹 프로그래밍 환경에서는 비지속적으로 쿠키를 생성합니다. 이러한 쿠키는 브라우저 메모리(디스크에 기록되지 않음)에만 상주하며 브라우저가 닫히면 사라집니다. 프로그래머는 미래의 특정 날짜까지 브라우저 세션에 대해 쿠키가 지속되도록 지정할 수 있습니다. 해당 쿠키는 디스크에 기록되고 브라우저 세션 및 장치 재시작에서도 유지됩니다. 지속적인 쿠키는 흔히 사이트와 상호 작용할 때 사용자를 프로필하는 데 사용됩니다. 이 추적 데이터를 사용한 작업에 따라 지속적인 쿠키를 사용한 사용자의 개인 정보 침해가 가능합니다. 개인 정보가 만료 시간이 길게 설정되어 있는 지속적인 쿠키에 저장되는 경우 공격자가 이 데이터를 도용할 수 있는 시간이 충분합니다.\n쿠키의 만료시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요 정보가 포함되지 않도록 설정해야 합니다.",
  "rule.sast.sw.kt.2891.example.0.dangerous": "라인 15: 쿠키의 만료 기간을 1년으로 과도하게 길게 설정하고 있습니다.",
  "rule.sast.sw.kt.2891.example.0.safe": "라인 15: 쿠키의 만료 기간은 해당 기능에 맞춰 최소로 설정합니다.",
  "rule.sast.sw.kt.2891.name": "영속적인 쿠키",
  "rule.sast.sw.kt.2891.option.max_timeout.description": "쿠키의 최대 지속 시간을 작성합니다.<br />예시) 3600",
  "rule.sast.sw.kt.2891.option.max_timeout.name": "최대 쿠키 지속 시간",
  "rule.sast.sw.kt.2909.description": "주석문 안의 비밀번호 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.kt.2909.example.0.dangerous": "라인 5: 디버깅 등의 목적으로 사용자 이름과 비밀번호를 주석문 안에 서술하고 제대로 지우지 않은 코드입니다.",
  "rule.sast.sw.kt.2909.example.0.safe": "라인 5: 프로그램 개발 시에 주석문 등에 남겨놓은 사용자 계정이나 비밀번호 등의 정보는 개발 완료 시에 확실하게 삭제해야 합니다.",
  "rule.sast.sw.kt.2909.name": "주석문 안의 비밀번호",
  "rule.sast.sw.kt.2909.option.allowed_max_word_length.description": "단일 단어의 최대 길이를 작성합니다.<br />예시) 40",
  "rule.sast.sw.kt.2909.option.allowed_max_word_length.name": "허용할 최대 연속 단어 길이",
  "rule.sast.sw.kt.2909.option.check_password_only.description": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "rule.sast.sw.kt.2909.option.check_password_only.name": "비밀번호 문자열 단독 검출 여부",
  "rule.sast.sw.kt.2909.option.consecutive_word_expr.description": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.<br />예시) [a-zA-Z0-9]+",
  "rule.sast.sw.kt.2909.option.consecutive_word_expr.name": "검출할 연속 단어 형식",
  "rule.sast.sw.kt.2909.option.fixed_key_length.description": "고정 길이 문자열을 입력합니다.",
  "rule.sast.sw.kt.2909.option.fixed_key_length.name": "고정 길이",
  "rule.sast.sw.kt.2909.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.kt.2909.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.kt.2909.option.using_fixed_key_length.description": "옵션을 사용하는 경우 고정 길이의 문자열을 검출합니다.",
  "rule.sast.sw.kt.2909.option.using_fixed_key_length.name": "고정 길이 검출 여부",
  "rule.sast.sw.kt.2912.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n중요 정보를 솔트(Salt) 없이 해시하여 저장하면 공격자는 레인보우 테이블과 같은 방법으로 해시값을 미리 계산하여 원래 값을 찾을 수 있게 됩니다.\n특히 비밀번호와 같은 중요 정보를 해시하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "rule.sast.sw.kt.2912.example.0.dangerous": "라인 6: 비밀번호 저장 시 솔트 없이 비밀번호에 대한 해시값을 얻고 있습니다.",
  "rule.sast.sw.kt.2912.example.0.safe": "라인 7: 솔트를 적용한 후 해쉬값을 계산하여 사용합니다.",
  "rule.sast.sw.kt.2912.name": "솔트 없는 해시 사용",
  "rule.sast.sw.kt.2912.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) base of fqn(\"java.security.MessageDigest.update\")",
  "rule.sast.sw.kt.2912.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2912.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2912.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2912.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2912.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2912.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) return of fqn(\"java.security.MessageDigest.digest\")",
  "rule.sast.sw.kt.2912.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2912.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.security.MessageDigest.getInstance\")",
  "rule.sast.sw.kt.2912.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2913.description": "누락된 로그인 제어 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n이 때 ID와 비밀번호 변수의 식별을 위한 이름은 옵션으로 입력할 수 있습니다. 구체적으로는 다음의 로직이 구현되어 있는지를 검사합니다. 로그인 루틴이 호출되기 전 로그인 시도를 반복문에서 제어합니다. 다만 조건문이 횟수 제한이 없는 경우 로그인 입력을 적절하게 제어하지 않다고 판단합니다. 반복문의 비교 구문에서 대소 비교 연산자를 사용하고 있습니다.\n로그인 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 로그인에 성공할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.kt.2913.example.0.dangerous": "라인 2: 로그인 시도에 횟수 제한이 없습니다.",
  "rule.sast.sw.kt.2913.example.0.safe": "라인 4: 로그인 시도 횟수를 제한합니다.",
  "rule.sast.sw.kt.2913.name": "누락된 로그인 제어",
  "rule.sast.sw.kt.2913.option.login_method.description": "로그인하는 함수의 이름을 작성합니다.",
  "rule.sast.sw.kt.2913.option.login_method.name": "로그인 함수",
  "rule.sast.sw.kt.2915.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "rule.sast.sw.kt.2915.example.0.dangerous": "라인 11: 파일 존재를 확인하는 시점과 파일을 사용하는 시점이 다르므로, 그 사이에 파일에 대한 삭제가 발생하면 프로그램이 예상하지 못하는 형태로 수행될 수 있습니다.",
  "rule.sast.sw.kt.2915.example.0.safe": "라인 15, 16: TOCTOU 경쟁 조건을 방지하기 위해 lock을 사용하여 리소스에 독점적으로 접근할 수 있도록 합니다.",
  "rule.sast.sw.kt.2915.name": "TOCTOU 경쟁 조건",
  "rule.sast.sw.kt.2915.option.file_check_method.name": "file_check_method",
  "rule.sast.sw.kt.2915.option.file_exception.description": "TOCTOU를 처리할 예외의 이름을 작성합니다.",
  "rule.sast.sw.kt.2915.option.file_exception.name": "예외 처리",
  "rule.sast.sw.kt.2917.description": "무한 반복 체커는 영원히 끝나지 않을 수도 있는 반복문을 검출합니다.\n대부분의 경우에 무한 루프는 리소스 고갈을 발생시키고 시스템의 정상적인 서비스를 제공할 수 없게 만듭니다. 정적 분석을 통해서 무한 재귀 호출 혹은 무한 루프를 사전에 완벽하게 예방하는 것은 이론적으로 불가능합니다. 따라서 이 체커는 대표적인 특정 패턴이나 간단한 경우에 대해서만 검사가 가능합니다.\n무한 루프가 되지 않도록 수정합니다. 조건식에 사용되는 변수들이 반복문 실행 도중 절대 변하지 않으면 무한 루프일 가능성이 높습니다. 또한, Kotlin에서는 Sequence로 무한 시퀀스를 만들 수도 있습니다. 이 경우에도 무한 반복이 발생할 수 있으므로 .take(n)이나 .takeWhile { … } 같은 제한 연산자를 사용해 반복 횟수나 종료 조건을 명확히 지정해야 합니다.",
  "rule.sast.sw.kt.2917.example.0.dangerous": "라인 2: while 구문의 조건식에 true가 사용되고 내부에서 반복문 실행 중 아무런 변화도 일어나지 않으므로 무한루프입니다.\n라인 9: do 구문의 조건식에 true가 사용되고 내부에서 반복문 실행 중 아무런 변화도 일어나지 않으므로 무한루프입니다.",
  "rule.sast.sw.kt.2917.example.0.safe": "라인 4: 종료할 때까지 지속적으로 동작하는 시스템 서비스의 경우 의도적으로 무한 루프를 만들 수도 있습니다. 이런 경우에는 리소스를 지속적으로 소모하지 않도록 제어해야 합니다.\n라인 11: 조건식에 변화를 일으킬 수 있는 행동을 반복문 안에서 수행해야 합니다.",
  "rule.sast.sw.kt.2917.name": "무한 반복",
  "rule.sast.sw.kt.2917.option.repeat_stop_method.description": "무한 반복을 정지할 수 있는 메소드 이름을 입력합니다.<br />예시) java.lang.Thread.yield",
  "rule.sast.sw.kt.2917.option.repeat_stop_method.name": "반복문 정지 메소드",
  "rule.sast.sw.kt.2921.description": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.\n지나치게 일반적인 예외 처리를 하게 되면 특별히 처리해야 하는 개별 예외를 적절히 처리하지 못할 뿐 아니라 이 지점에서 논리적으로 발생해서는 안되는 예외까지 처리하게 됩니다. 이러한 경우에 개발 및 검수 과정에서 발견되었어야 하는 설계 및 구현 상 결함이 발견되지 못한 채 배포 단계로 넘어가서 더 큰 문제의 원인이 될 수 있습니다.\n해당 코드 구역에서 발생할 수 있는 세부적인 예외들을 명시적으로 나눠서 처리하는 것이 좋습니다. 일반적인 예외를 처리하더라도 예측 가능한 세부적인 예외들을 먼저 처리한 후 마지막에 처리하도록 합니다. 이렇게 작성했을 때 실행 흐름이 일반적인 예외 처리 부분에 도달했다면 개발 과정에서 예측하지 못한 예외가 발생한 것이므로 조용히 넘어가지 않고 상황에 대한 상세한 기록을 남겨서 추후 결함을 수정할 수 있도록 합니다.",
  "rule.sast.sw.kt.2921.example.0.dangerous": "라인 9: 광범위한 예외 클래스를 사용하여 예외를 처리하고 있습니다.",
  "rule.sast.sw.kt.2921.example.0.safe": "라인 9: 상세한 예외 클래스를 사용하도록 합니다.",
  "rule.sast.sw.kt.2921.name": "지나치게 일반적인 예외 처리",
  "rule.sast.sw.kt.2921.option.option.description": "다른 예외 처리 구간이 있을 경우 지나치게 일반적인 예외를 무시하겠습니까?<br />예시) true",
  "rule.sast.sw.kt.2921.option.option.name": "옵션 On / Off",
  "rule.sast.sw.kt.2921.option.overly_broad_exception.description": "지나치게 일반적인 예외들의 이름을 작성합니다.<br /> 예시) Exception",
  "rule.sast.sw.kt.2921.option.overly_broad_exception.name": "지나치게 일반적인 예외",
  "rule.sast.sw.kt.2923.description": "세션 간 데이터 누출 체커는 다중 스레드 환경에서 서블릿에 필드 변수가 사용되는 경우를 검출합니다.\n서블릿은 다중 스레드 환경에서 수행되므로 HttpSevlet 클래스의 하위 클래스에서 멤버 필드에 정보를 저장하면 이 정보에 대한 경쟁 조건이 발생할 수 있습니다.\n가급적 HttpServlet 클래스의 하위 클래스에 멤버 필드를 선언하여 정보를 저장하지 않도록 하고 최대한 지역 변수를 선언하여 사용해야 합니다.",
  "rule.sast.sw.kt.2923.example.0.dangerous": "라인 6: 서블릿에 정보를 저장하는 필드가 있습니다.",
  "rule.sast.sw.kt.2923.example.0.safe": "라인 7: 서블릿에 정보를 저장하는 필드를 넣지 않도록 합니다.",
  "rule.sast.sw.kt.2923.name": "세션 간 데이터 누출",
  "rule.sast.sw.kt.2924.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.sw.kt.2924.example.0.dangerous": "라인 3: 디버그 코드가 남아있습니다.",
  "rule.sast.sw.kt.2924.example.0.safe": "라인 3: 디버그 코드를 남겨두지 않도록 합니다.",
  "rule.sast.sw.kt.2924.name": "남은 디버그 코드",
  "rule.sast.sw.kt.2924.option.check_main_method.description": "Main 함수를 검사합니다",
  "rule.sast.sw.kt.2924.option.check_main_method.name": "Main 함수 검사",
  "rule.sast.sw.kt.2924.option.debug_code.description": "디버그 코드의 이름을 작성합니다.",
  "rule.sast.sw.kt.2924.option.debug_code.name": "디버그 코드",
  "rule.sast.sw.kt.2924.option.debug_method.description": "디버그 함수의 이름을 작성합니다.",
  "rule.sast.sw.kt.2924.option.debug_method.name": "디버그 함수",
  "rule.sast.sw.kt.2924.option.main_method_path.description": "Main 함수의 파일 경로를 작성합니다.",
  "rule.sast.sw.kt.2924.option.main_method_path.name": "Main 함수 파일 경로",
  "rule.sast.sw.kt.2925.description": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "rule.sast.sw.kt.2925.example.0.dangerous": "라인 10: 예외 이름이나 스택 트레이스를 출력하면 프로그램 내부 정보가 유출됩니다.",
  "rule.sast.sw.kt.2925.example.0.safe": "라인 10: 예외 이름이나 스택 트레이스를 출력하지 않습니다.",
  "rule.sast.sw.kt.2925.name": "시스템 정보 노출",
  "rule.sast.sw.kt.2925.option.exclude_print_stack_trace.description": "옵션을 사용하는 경우, printStackTrace 메소드 호출은 이슈로 검출하지 않습니다.",
  "rule.sast.sw.kt.2925.option.exclude_print_stack_trace.name": "printStackTrace 호출 제외 여부",
  "rule.sast.sw.kt.2925.option.exclude_println.description": "옵션을 사용하는 경우, println 메소드 호출은 이슈로 검출하지 않습니다.",
  "rule.sast.sw.kt.2925.option.exclude_println.name": "println 호출 제외 여부",
  "rule.sast.sw.kt.2926.description": "public 메소드에 의해 반환된 private 컬렉션 체커는 private이 아닌 메소드에서 private으로 선언된 배열 또는 컬렉션 타입 필드의 객체가 그대로 반환되는 경우를 검출합니다.\nprivate으로 선언된 컬렉션 객체를 public 메소드에서 그대로 반환하면 객체 주소 값이 외부로 공개되어 외부에서 임의로 내용 수정이 가능해집니다.\nprivate로 선언된 컬렉션 객체를 public 메소드를 통해서 통째로 반환하지 않도록 합니다. 필요한 경우 복사본을 생성하여 반환하거나 접근 및 수정을 제어하는 별도의 public 메소드를 선언하여 사용해야 합니다.",
  "rule.sast.sw.kt.2926.example.0.dangerous": "라인 2: 필드 변수 colors가 private으로 선언되어 있습니다.\n라인 5: getColors() 메소드에서 private 필드를 그대로 반환합니다.\n라인 13: 클래스 외부에서 private 필드인 colors를 마음대로 조작할 수 있습니다.\n라인 18: 필드 변수 colors가 val로 선언되어 있습니다.\n라인 23: val로 선언한 colors를 마음대로 조작할 수 있습니다. (해당 검출은 옵션을 통해 끌수 있습니다.)",
  "rule.sast.sw.kt.2926.example.0.safe": "라인 5: colors의 복사본을 만들어 반환하면 colors를 외부에서 조작하는 것을 방지할 수 있습니다.\n라인 19: colors의 복사본을 만들어 반환하면 colors를 외부에서 조작하는 것을 방지할 수 있습니다.",
  "rule.sast.sw.kt.2926.name": "public 메소드에 의해 반환된 private 컬렉션",
  "rule.sast.sw.kt.2926.option.analysis_val.description": "옵션을 사용하는 경우, val 변수도 검사합니다.",
  "rule.sast.sw.kt.2926.option.analysis_val.name": "val 변수 검사",
  "rule.sast.sw.kt.2926.option.array_assignment.description": "배열을 할당하는 메소드의 이름을 작성합니다.",
  "rule.sast.sw.kt.2926.option.array_assignment.name": "배열 할당",
  "rule.sast.sw.kt.2926.option.array_only.description": "옵션을 사용하는 경우 private 배열만 검사합니다.",
  "rule.sast.sw.kt.2926.option.array_only.name": "배열만 검사",
  "rule.sast.sw.kt.2926.option.array_type.description": "배열 타입의 이름을 작성합니다.",
  "rule.sast.sw.kt.2926.option.array_type.name": "배열 타입",
  "rule.sast.sw.kt.2926.option.clone_method.description": "깊은 복사를 하는 메소드의 이름을 작성합니다.",
  "rule.sast.sw.kt.2926.option.clone_method.name": "깊은 복사 메소드",
  "rule.sast.sw.kt.2926.option.mutable_collection_assignment.description": "Mutable 켈렉션을 할당하는 메소드의 이름을 작성합니다.",
  "rule.sast.sw.kt.2926.option.mutable_collection_assignment.name": "Mutable 켈렉션 할당",
  "rule.sast.sw.kt.2926.option.mutable_collection_type.description": "Mutable 컬렉션 타입의 이름을 작성합니다.",
  "rule.sast.sw.kt.2926.option.mutable_collection_type.name": "Mutable 컬렉션 타입",
  "rule.sast.sw.kt.2927.description": "private 배열에 저장된 public 데이터 체커는 외부에서 접근 가능한 배열 객체를 private 배열 필드 변수에 저장하는 경우를 검출합니다.\n외부에서 접근 가능한 배열 객체를 private으로 선언된 배열 필드 변수에 저장하면 private 배열을 외부에서 접근할 수 있게 되어 접근 제어가 실질적으로 이루어 지지 않습니다. 사용자 정보 또는 외부에 노출하면 안되는 정보가 노출될 수 있습니다. 따라서 보안 상 치명적인 문제가 될 수 있습니다.\nprivate 배열 필드 변수에는 클래스 내부에서 직접 생성한 배열만을 저장합니다. 외부의 데이터를 배열에 전달해야 할 때는 배열 객체를 직접 저장하지 말고 각 원소의 값을 별도로 복사하여 저장합니다.",
  "rule.sast.sw.kt.2927.example.0.dangerous": "라인 2: colors 필드는 private으로 선언되어 있습니다.\n라인 8: public으로 선언된 setColors() 메소드를 통해 외부의 배열 객체가 할당되면 colors 배열에 외부에서 임의로 접근 가능해집니다.",
  "rule.sast.sw.kt.2927.example.0.safe": "라인 8: 배열 객체 자체 대신 배열의 복사본을 만들어 대입하면 외부에서 조작하는 것을 방지할 수 있습니다.",
  "rule.sast.sw.kt.2927.name": "private 배열에 저장된 public 데이터",
  "rule.sast.sw.kt.2927.option.array_assignment.description": "배열을 할당하는 메소드의 이름을 작성합니다.",
  "rule.sast.sw.kt.2927.option.array_assignment.name": "배열 할당",
  "rule.sast.sw.kt.2927.option.array_only.description": "옵션을 사용하는 경우, private 배열만 검사합니다.",
  "rule.sast.sw.kt.2927.option.array_only.name": "배열만 검사",
  "rule.sast.sw.kt.2927.option.array_type.description": "배열 타입의 이름을 작성합니다.",
  "rule.sast.sw.kt.2927.option.array_type.name": "배열 타입",
  "rule.sast.sw.kt.2927.option.mutable_collection_assignment.description": "Mutable 켈렉션을 할당하는 메소드의 이름을 작성합니다.",
  "rule.sast.sw.kt.2927.option.mutable_collection_assignment.name": "Mutable 켈렉션 할당",
  "rule.sast.sw.kt.2927.option.mutable_collection_type.description": "Mutable 컬렉션 타입의 이름을 작성합니다.",
  "rule.sast.sw.kt.2927.option.mutable_collection_type.name": "Mutable 컬렉션 타입",
  "rule.sast.sw.kt.2928.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.kt.2928.example.0.dangerous": "라인 7: 도메인 이름을 통해 해당 요청이 신뢰할 수 있는지를 검사합니다. 그러나 공격자가 DNS 캐쉬 등을 조작하면 잘못된 신뢰성 정보를 얻을 수 있습니다.",
  "rule.sast.sw.kt.2928.example.0.safe": "라인 5: DNS 조회를 통해 호스트 이름을 비교하지 않고 IP 주소를 직접 비교하도록 수정합니다.",
  "rule.sast.sw.kt.2928.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.kt.2928.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.kt.2928.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2928.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2928.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2928.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2928.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2928.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2928.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2928.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.net.InetAddress.getByName\")",
  "rule.sast.sw.kt.2928.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2949.description": "동적 코드 조작 취약점 체커는 외부에서 입력된 값을 별도의 필터 없이 사용하면 이슈를 검출합니다.\n코드를 동적으로 실행하는 애플리케이션의 경우 코드를 구성하는 데 사용되는 외부 제공 값을 확인해야 합니다. 그렇게 하지 않으면, 공격자가 임의의 코드를 실행할 수 있습니다. 만약 공격자가 임의의 코드를 실행하게 된다면, 중요한 정보에 접근하여 수정하거나 이득을 얻는 등 심각한 공격이 발생할 수 있습니다. 전체 시스템에 액세스하지 못하도록 완화 전략으로써 허용된 값을 화이트리스트로 작성하거나 안전 유형으로 캐스팅을 수행하도록 합니다.\nServletRequest.getParameter() 메소드를 통해 받은 외부 입력 값을 별도로 정의된 검증 메소드를 통해서 확인해야 합니다.",
  "rule.sast.sw.kt.2949.example.0.dangerous": "라인 10: 라인 6에서 생성된 변수 input을 별도의 검증 없이 ScriptEngine.eval() 메소드의 인자 값으로 사용했습니다.",
  "rule.sast.sw.kt.2949.example.0.safe": "라인 9: 외부 입력 값인 input 변수를 검증 후 사용합니다.",
  "rule.sast.sw.kt.2949.name": "동적 코드 조작 취약점",
  "rule.sast.sw.kt.2949.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2949.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2949.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2949.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2949.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2949.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2949.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"javax.script.ScriptEngine.eval\")",
  "rule.sast.sw.kt.2949.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2949.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2949.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2950.description": "취약한 XML 변환 보안 체커는 별도의 보안 옵션을 지정하지 않고 XML 파서를 바로 사용한 경우를 검출합니다.\nXML 외부 엔터티 또는 XSLT 외부 엔터티(XXE) 취약점은 javax.xml.transform.Transformer가 보안 처리를 수행하지 않고 생성되거나, 외부 DTD 및 DTD 엔터티를 허용한 상태로 XML 파서를 사용하는 경우에 발생할 수 있습니다. 공격자가 외부 데이터를 제어하게 되면 파서가 위치한 장치에서 기밀 데이터의 공개, 서비스 거부, 서버 측 요청 위조, 포트 스캐닝 등의 문제가 발생하거나 시스템에도 영향을 미칠 수 있습니다.\nTransformer 객체를 생성하기 전에 외부 DTD 및 DTD 엔터티를 모두 사용하지 않도록 설정해야 합니다.",
  "rule.sast.sw.kt.2950.example.0.dangerous": "라인 7: 별도의 보안 옵션 없이 Transformer 객체를 설정했습니다.",
  "rule.sast.sw.kt.2950.example.0.safe": "라인 7: XMLConstants.ACCESS_EXTERNAL_DTD 옵션을 설정합니다.\n라인 8: XMLConstants.ACCESS_EXTERNAL_STYLESHEET 옵션을 설정합니다.\n라인 11: 보안 옵션이 설정된 TransformerFactory 객체를 통해서 Transformer를 생성합니다.\n라인 16: XMLConstants.FEATURE_SECURE_PROCESSING 옵션을 설정합니다.\n라인 19: 보안 옵션이 설정된 TransformerFactory 객체를 통해서 Transformer를 생성합니다.",
  "rule.sast.sw.kt.2950.name": "취약한 XML 변환 보안",
  "rule.sast.sw.kt.2950.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.kt.2950.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2950.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2950.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2950.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2950.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2950.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"transform\")",
  "rule.sast.sw.kt.2950.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2950.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"javax.xml.transform.TransformerFactory.newInstance\")",
  "rule.sast.sw.kt.2950.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2951.description": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 경우를 검출합니다.\n공개 웹 서버에서 작동하는 서비스가 외부 입력이 포함된 URL을 제대로 확인하지 않고 접속을 시도하면 이 URL이 외부로 공개되지 않는 내부 전용 서버를 가리킬 때에도 접속을 시도하게 됩니다. 내부 서버는 이 요청이 동일한 내부 웹 서버로부터 전달된 것이므로 정상적으로 응답을 보낼 것입니다. 공격자는 자신이 접속할 수 있는 웹 서버에 이런 취약점이 존재한다는 사실을 알게되면 이 취약한 웹 서버를 통해 자신에게 접속 권한이 없는 내부망의 서버에 요청을 보낼 수 있습니다. 이를 통해 외부로 노출되어서는 안되는 중요 정보가 노출될 수 있습니다.\n외부 입력을 포함하는 URL에 접속하려고 시도할 때 적절한 검증을 수행하도록 합니다.",
  "rule.sast.sw.kt.2951.example.0.dangerous": "라인 8: 별도의 검증 없이 외부에서 가져온 주소에 접속합니다.",
  "rule.sast.sw.kt.2951.example.0.safe": "라인 8: 외부에서 가져온 주소를 검증 후 사용합니다.",
  "rule.sast.sw.kt.2951.name": "서버측 요청 변조",
  "rule.sast.sw.kt.2951.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.kt.2951.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2951.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2951.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2951.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2951.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2951.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"openConnection\")",
  "rule.sast.sw.kt.2951.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2951.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"java.io.BufferedInputStream.read(byte[])\")",
  "rule.sast.sw.kt.2951.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2952.description": "부적절한 서명 체커는 전자 서명을 포함하는 파일을 사용할 때 서명을 확인하지 않는 코드를 검출합니다.\n사용자가 전자 서명을 확인하지 않고 사용하는 경우 위변조된 파일을 통해 의도하지 않은 URL에 접근하거나 악성 코드에 감염될 수 있습니다.\n또한 암호 알고리즘으로 서명하지 않고 JWT로 토큰을 생성하는 경우 공격자는 이를 위조하여 사용자로 위장할 수 있습니다.\nJarFile이나 signWith 함수에 서명한 후에 사용하도록 합니다.",
  "rule.sast.sw.kt.2952.example.0.dangerous": "라인 10: JarFile에 서명을 포함하지 않았습니다.\n라인 11: JarFile에 서명을 포함하지 않았습니다.\n라인 26: 서명 없이 토큰을 생성합니다.",
  "rule.sast.sw.kt.2952.example.0.safe": "라인 10: JarFile 함수의 두 번째 파라미터 값을 true로 설정하여 서명하고 사용합니다.\n라인 30: HS256 암호화 알고리즘을 사용하여 서명한 후 토큰을 생성합니다.",
  "rule.sast.sw.kt.2952.name": "부적절한 서명",
  "rule.sast.sw.kt.2952.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) base of name(\"signWith\")",
  "rule.sast.sw.kt.2952.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.kt.2952.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.kt.2952.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.kt.2952.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.kt.2952.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.kt.2952.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"compact\")",
  "rule.sast.sw.kt.2952.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.kt.2952.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"io.jsonwebtoken.Jwts.builder\")",
  "rule.sast.sw.kt.2952.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.kt.2954.description": "취약한 서버 인증서 검증 체커는 X509TrustManager 클래스를 상속한 자식 클래스에서 오버라이드 함수를 재정의하지 않거나 예외를 throw하지 않는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다.\n해당 인증서의 유효성을 제어하지 않는 방식으로 X509TrustManager 를 구현한 경우 문제가 발생할 수 있습니다. X509TrustManager 인터페이스를 구현하여 인증서에 대한 유효성 검사를 수행해야 합니다.",
  "rule.sast.sw.kt.2954.example.0.dangerous": "라인 14: 오버라이드된 checkServerTrusted() 메소드를 구현하지 않고, 예외를 throw하지 않았습니다.",
  "rule.sast.sw.kt.2954.example.0.safe": "라인 14: checkServerTrusted() 메소드가 비어 있지 않도록 구현합니다.\n라인 25: CertificateException을 throw 합니다.",
  "rule.sast.sw.kt.2954.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.kt.2956.description": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 메소드나 어노테이션을 사용하는 코드를 검출합니다.\n객체를 직렬화하여 저장하거나 전송하고, 필요한 경우 다시 역직렬화하여 사용하는 경우 객체의 상태를 유지할 수 있습니다. 하지만 신뢰할 수 없는 데이터를 별도의 보호 없이 바로 역직렬화하는 경우 공격자가 악의적으로 객체 또는 변수를 추가하여 악성 코드를 실행시킬 수 있습니다.\n`ObjectInputStream.readObject`와 같이 공격에 취약한 함수를 사용하지 않고 ikkisoft의 `SerialKiller`, Apache Commons IO의 `ValidatingObjectInputStream`, contrast-rO0의 `SafeObjectInputStream`과 같이 안전한 함수를 사용하도록 합니다.",
  "rule.sast.sw.kt.2956.example.0.dangerous": "라인 9: 취약한 ObjectInputStream의 readObject 함수를 사용했습니다.\n라인 13: 취약한 Jackson의 JsonTypeInfo.Id.CLASS 어노테이션을 사용했습니다.",
  "rule.sast.sw.kt.2956.example.0.safe": "라인 7: 안전한 ValidatingObjectInputStream의 readObject 함수를 사용합니다.\n라인 10: 안전한 Jackson의 JsonTypeInfo.Id.NAME 어노테이션을 사용합니다.",
  "rule.sast.sw.kt.2956.name": "신뢰할 수 없는 데이터의 역직렬화",
  "rule.sast.sw.kt.2956.option.forbidden_fqn.description": "금지할 함수의 이름을 작성합니다.",
  "rule.sast.sw.kt.2956.option.forbidden_fqn.name": "금지할 함수",
  "rule.sast.sw.kt.2968.description": "Android에서 안전하지 않은 호스트 이름 확인 체커는 HostnameVerifier 인터페이스에서 verify 함수의 리턴값을 true로만 작성한 코드를 검출합니다.\n인증서가 잘 구성되고 서명되었으며 신뢰 체인을 따르더라도 프로그램이 예상하고 있는 사이트가 아닌 다른 사이트의 인증서일 가능성이 있습니다.\nAndroid에서 HostnameVerifier 인터페이스의 verify 함수 반환값이 항상 true이면 호스트 이름이 잘못된 경우에도 모든 인증서를 수락하기 때문에 공격자가 중간자 공격을 수행할 수 있습니다.\nHostnameVerifier의 verify 함수를 사용할 때 인증서를 올바르게 확인한 경우에만 true를 반환하도록 합니다.",
  "rule.sast.sw.kt.2968.example.0.dangerous": "라인 5: 호스트의 이름을 확인하지 않고 항상 true를 반환했습니다.",
  "rule.sast.sw.kt.2968.example.0.safe": "라인 12: 호스트의 이름이 올바른지 확인합니다.\n라인 13: 호스트의 이름이 올바른 경우에만 true를 반환합니다.\n라인 15: 호스트의 이름이 올바르지 않은 경우 false를 반환합니다.",
  "rule.sast.sw.kt.2968.name": "Android에서 안전하지 않은 호스트 이름 확인",
  "rule.sast.sw.kt.7363.description": "Kotlin에서는 일반적인 try-catch 구문뿐만 아니라 runCatching 함수와 Result 클래스를 활용해 발생할 수 있는 예외를 처리할 수 있습니다. 그러나 실패 처리(onFailure)에 사용되는 본문이 비어 있을 경우, 예외 상황이 감지되었음에도 적절히 처리되지 않아 프로그램이 의도와 다르게 동작할 수 있습니다.\n\n코루틴 환경에서는 CoroutineExceptionHandler를 통해 내부에서 발생하는 예외를 처리할 수 있습니다. 하지만 핸들러 본문이 비어 있을 경우, 발생한 예외가 정상적으로 처리되지 않아 비동기 작업의 실패를 감지하지 못하게 됩니다.\n\nSpring 환경에서 제공하는 @ExceptionHandler도 마찬가지입니다. 해당 애노테이션이 적용된 메서드 내부에 실질적인 예외 처리가 구현되어 있지 않다면, 발생한 예외가 은닉되어 동일한 문제가 발생할 수 있습니다.\n\n공격자는 이러한 예외를 처리하지 않는 상황을 악용해, 개발자가 의도하지 않은 방식으로 프로그램을 동작하게 할 수 있습니다.\n예외가 발생할 수 있는 부분은 적절한 예외 처리 구문을 사용해 상황을 인지하고 대응해야 합니다. runCatching 함수와 Result 클래스, CoroutineExceptionHandler, @ExceptionHandler를 사용할 때는 로깅, 알림, 재전파 등 프로그램 상태를 확실히 알 수 있도록 실질적인 예외 처리 로직을 포함해야 합니다.",
  "rule.sast.sw.kt.7363.example.0.dangerous": "라인 4: onFailure 블록 내부가 비어 있어, 실질적인 예외를 처리하는 로직이 존재하지 않습니다.",
  "rule.sast.sw.kt.7363.example.0.safe": "라인 5: 예외가 발생할 수 있는 부분에 적절한 예외 처리 구문을 사용하여 안전합니다.",
  "rule.sast.sw.kt.7363.name": "오류상황 대응 부재",
  "rule.sast.sw.kt.7381.description": "정수 오버플로우는 정수 연산의 결과가 해당 타입이 표현할 수 있는 범위를 벗어날 때 발생합니다. 이때 값이 음수나 잘못된 값으로 바뀔 수 있으며, 이를 배열 크기나 인덱스, 버퍼 길이 등에 사용하면 예외가 발생하거나 프로그램이 정상적으로 동작하지 않을 수 있습니다. 또한 큰 정수 타입을 작은 정수 타입으로 변환할 때(Long → Int) 범위를 확인하지 않으면 값이 잘못 변환되어 동일한 문제가 발생할 수 있습니다.\n언어 및 플랫폼에 따라 정수형의 표현 범위를 사전에 확인하고 사용해야 합니다. 정수형 변수를 연산에 사용하는 경우에는 결괏값이 대상 타입의 범위를 초과하지 않는지 점검하고, 외부 입력값을 동적 메모리 할당 등에 활용할 때에도 변수가 적절한 범위 내에 있는지 검증해야 합니다. 특히 큰 정수 타입에서 작은 정수 타입으로 변환하는 경우에는 대상 타입의 표현 범위를 미리 확인하거나, 범위를 초과하는 상황에서 예외를 발생시키는 안전한 변환 메서드를 사용해야 합니다. 예를 들어 Java/Kotlin에서는 Math.toIntExact()와 같은 Exact 계열 메서드를 사용하면 범위 초과 상황에서 ArithmeticException이 발생하여 잘못된 변환을 방지할 수 있습니다.",
  "rule.sast.sw.kt.7381.example.0.dangerous": "라인 3: 외부 입력으로부터 계산된 값이 적절한 범위 검증 없이 사용되고 있습니다.",
  "rule.sast.sw.kt.7381.example.0.safe": "라인 3: 오버플로우를 확인하는 함수를 통해 외부 입력이 포함된 연산의 결과를 검증한 후 사용하고 있습니다.",
  "rule.sast.sw.kt.7381.name": "정수 오버플로우",
  "rule.sast.sw.kt.7382.description": "버퍼 오버플로우(Buffer Overflow)는 프로그램에서 할당된 메모리의 범위를 벗어난 위치에 자료를 읽거나 쓰려고 할 때, 인접한 메모리 영역을 덮어쓰면서 발생하는 취약점입니다. 공격자는 이를 악용해 임의 코드 실행, DoS 등의 공격을 수행할 수 있습니다. \n\n일반적으로 C/C++와 같은 저수준 언어에서 주로 발생하며, Java/Kotlin과 같이 배열 경계 검사와 자동 메모리 관리를 지원하는 언어에서는 메모리 안전성이 보장되므로 발생 가능성이 낮습니다.\n\n그러나 jdk.internal.misc.Unsafe 또는 sun.misc.Unsafe와 같은 JVM 내부 저수준 API로 메모리를 직접 조작할 때는 주의가 필요합니다. 이때 할당된 메모리의 크기에 대한 적절한 검증 없이 범위를 벗어난 복사나 쓰기 연산이 이루어지면 버퍼 오버플로우 취약점이 발생할 수 있습니다.\nsun.misc.Unsafe/jdk.internal.misc.Unsafe는 JVM 내부용으로 제공된 저수준 API로 안전하지 않으며, 공식적으로도 사용이 권장되지 않습니다. 따라서 해당 API를 사용하는 것은 지양하고, 안전한 표준 API을 활용해야 합니다.\n\n대표적인 표준 API로 VarHandle과 Foreign Memory Access API가 있습니다. VarHandle은 클래스의 필드나 배열 요소에 접근할 수 있는 API로, 타입 안전성과 배열 경계 검사를 지원합니다. Foreign Memory Access API는 JVM 외부 메모리에 접근할 때 사용하는 API로, 메모리 영역을 세그먼트 단위로 표현해 할당된 범위를 자동으로 확인하고 벗어난 접근을 차단합니다. 이러한 표준 API를 사용하면 개발자가 직접 메모리 경계 검사를 수행하지 않아도 되므로, 버퍼 오버플로우 위험을 줄일 수 있습니다.",
  "rule.sast.sw.kt.7382.example.0.dangerous": "라인 19: 할당된 메모리의 크기가 100 bytes인 반면, 복사하려는 크기는 200 bytes이기 때문에 버퍼 오버플로우가 발생합니다.",
  "rule.sast.sw.kt.7382.example.0.safe": "라인 9: 자동 경계 검사를 지원하는 VarHandle을 사용해 배열 요소에 접근하므로 버퍼 오버플로우가 발생하지 않습니다.",
  "rule.sast.sw.kt.7382.name": "범위 지정 복사로 인한 버퍼 오버플로우",
  "rule.sast.sw.kt.7383.description": "InputStream.read(byte[])의 반환 값(읽은 바이트 수)을 확인하지 않고 버퍼 전체를 그대로 사용하는 경우, 이전 버퍼의 잔여 데이터가 섞이거나 실제로 읽힌 길이가 요청한 길이와 달라질 수 있습니다. 이로 인해 데이터 무결성이 훼손되거나 잘못된 데이터 처리가 발생해 프로그램이 비정상적으로 동작할 수 있습니다.\nread() 계열 메서드의 반환 값을 무시해서는 안 되며, -1(EOF) 여부를 검사한 뒤 실제로 읽은 길이만 사용하거나 필요한 양을 모두 읽을 때까지 반복 처리해야 합니다.",
  "rule.sast.sw.kt.7383.example.0.dangerous": "라인 6: read() 메서드의 반환 값을 검사하지 않고 무시하기 때문에 요청한 길이만큼 데이터가 읽혔는지 보장할 수 없습니다.",
  "rule.sast.sw.kt.7383.example.0.safe": "라인 7: read() 메서드의 반환 값을 EOF(-1) 여부로 검사한 뒤, 실제로 읽은 길이만큼만 데이터를 출력합니다.",
  "rule.sast.sw.kt.7383.name": "읽기 메서드의 반환 값 검증 누락",
  "rule.sast.sw.kt.7393.description": "중요 정보(비밀번호, 암호화 키 등)를 하드코딩한 채 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 공격자는 스니핑, 소스코드 분석, 역공학 등을 통해 이를 쉽게 탈취할 수 있습니다.\n해당 체커는 중요 정보 검출 옵션을 제공합니다. 옵션을 통해 점검할 중요 정보 형식을 지정할 수 있습니다.\n중요 정보는 환경 변수를 이용해 관리하거나, 암호화한 상태로 설정 파일 또는 데이터베이스에 보관해야 합니다. 또한, AWS Secrets Manager나 HashiCorp Vault와 같은 비밀 관리 시스템을 활용하는 것도 좋은 방법입니다.",
  "rule.sast.sw.kt.7393.example.0.dangerous": "라인 1: 소스코드 내부에 중요 정보가 하드코딩되어 있습니다.",
  "rule.sast.sw.kt.7393.example.0.safe": "라인 1: 소스코드 내부에 중요 정보를 포함하지 않도록 합니다.",
  "rule.sast.sw.kt.7393.name": "하드코드된 중요 정보",
  "rule.sast.sw.kt.7400.description": "소스 코드에서 중요정보(비밀번호, API 키 등)로 분류되는 외부 입력값을 코드 내부의 하드코딩된 문자열 또는 정수 리터럴과 직접 비교해 인증이나 권한을 판별하는 경우, 보안상 취약합니다. 하드코딩된 리터럴은 소스 코드 유출이나 역공학을 통해 쉽게 노출될 수 있으며, 공격자는 이를 악용해 인증을 우회하거나 권한을 탈취할 수 있습니다. \n\n해당 체커는 점검 대상 입력 옵션을 제공합니다. 옵션을 통해 중요정보로 분류되는 외부 입력값을 지정할 수 있습니다.\n중요정보는 환경 변수를 이용해 관리하거나, 암호화한 상태로 설정 파일 또는 데이터베이스에 보관해야 합니다. 인증 로직에서는 외부 입력값을 하드코딩된 문자열 또는 정수 리터럴과 직접 비교하는 방식이 아닌 저장소에 조회한 값과 비교하도록 구현해야 합니다.",
  "rule.sast.sw.kt.7400.example.0.dangerous": "라인 2: 중요 정보로 분류되는 외부 입력값을 하드코딩된 문자열과 직접 비교하고 있습니다.",
  "rule.sast.sw.kt.7400.example.0.safe": "라인 3: 중요 정보로 분류되는 외부 입력값을 환경 변수에서 불러온 값과 비교해 검증합니다.",
  "rule.sast.sw.kt.7400.name": "부적절한 중요 정보 비교",
  "rule.sast.sw.kt.7401.description": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다. 하지만 해시 함수인 MD5나 SHA1의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다.\nMD5와 SHA1의 단점을 극복하기 위해 사용되는 함수는 다양하게 존재합니다. SHA2, SHA3 혹은 비교적 최신의 안전한 알고리즘인 Bcrypt, Blake2, Argon2, PBKDF2, Scrypt 등을 사용하여 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.kt.7401.example.0.dangerous": "라인 4: 더 이상 안전하지 않은 MD5 해시 알고리즘을 사용하고 있습니다.",
  "rule.sast.sw.kt.7401.example.0.safe": "라인 4: 안전하다고 알려진 SHA-256 해시 알고리즘을 사용합니다.",
  "rule.sast.sw.kt.7401.name": "취약한 해시 알고리즘",
  "rule.sast.sw.kt.7403.description": "의사 난수 생성기(PRNG: Pseudo-Random Number Generator)에 고정된 시드(Seed)를 사용하면, 매번 동일한 난수 값이 생성됩니다. 공격자가 시드를 알고 있거나 추측한다면, 이후 생성될 난수를 예측해 보안 기능(세션 토큰, 인증 코드, 키 생성 등)을 우회할 수 있습니다.\n시드에는 정수 리터럴이나 문자열의 hashCode() 결과 등과 같이 고정된 값을 설정해서는 안 됩니다. 보안 기능에 사용되는 난수를 생성할 때는 항상 예측이 불가능한 시드를 사용해야 하며, 내부적으로 시스템 시간을 시드로 설정하는 java.util.Random 클래스 대신 높은 수준의 무작위성을 보장하는 java.security.SecureRandom 클래스를 사용하는 것이 안전합니다. SecureRandom 클래스는 시스템 환경 상태나 운영체제의 엔트로피 풀 등에서 얻은 정보를 활용해 내부 상태를 초기화하므로, 생성되는 난수를 예측할 수 없습니다.",
  "rule.sast.sw.kt.7403.example.0.dangerous": "라인 4: Random 객체를 생성할 때 고정된 시드 값을 사용하고 있습니다. 고정된 시드를 사용하면 매번 동일한 난수 값이 생성되므로 안전하지 않습니다.",
  "rule.sast.sw.kt.7403.example.0.safe": "라인 4: 높은 수준의 무작위성을 보장하는 SecureRandom 클래스를 사용해 난수 생성 객체를 초기화합니다.",
  "rule.sast.sw.kt.7403.name": "의사 난수 생성기(PRNG)의 고정 시드 사용",
  "rule.sast.sw.kt.7404.description": "의사 난수 생성기(PRNG: Pseudo-Random Number Generator)에 프로세스 ID나 시스템 시간과 같이 예측 가능한 시드(Seed)를 사용하는 경우, 시드의 탐색 범위가 좁아져 공격자가 생성되는 난수 값을 쉽게 예측할 수 있습니다. \n특히 시스템 시간 기반 시드는 생성 시점을 정확히 알지 못하더라도, 예측 가능한 시간 범위 내에서 무차별 대입 공격을 통해 시드를 복원하고 생성되는 난수 값을 예측할 수 있습니다. 이렇게 예측된 난수는 세션 토큰, 인증 코드, 키 생성 등의 보안 기능을 우회하는 데 악용될 수 있습니다.\n시드에는 프로세스 ID나 시스템 시간과 같이 예측 가능한 값을 사용해서는 안 됩니다. 보안 기능에 사용되는 난수를 생성할 때는 항상 예측이 불가능한 시드를 사용해야 하며, 내부적으로 시스템 시간을 시드로 설정하는 java.util.Random 클래스 대신 높은 수준의 무작위성을 보장하는 java.security.SecureRandom 클래스를 사용하는 것이 안전합니다. SecureRandom 클래스는 시스템 환경 상태, 운영체제의 엔트로피 풀 등에서 얻은 정보를 활용해 내부 상태를 초기화하므로, 생성되는 난수를 예측할 수 없습니다.",
  "rule.sast.sw.kt.7404.example.0.dangerous": "라인 5: System.currentTimeMillis()에서 얻은 예측 가능한 시간 값이 Random 생성자의 시드 인자로 전달되고 있습니다. 이로 인해 생성되는 난수의 값을 공격자가 쉽게 예측할 수 있습니다.",
  "rule.sast.sw.kt.7404.example.0.safe": "라인 4: 난수를 생성할 때는 java.util.Random 클래스 대신 예측 불가한 난수를 생성하는 java.security.SecureRandom 클래스를 사용하는 것이 안전합니다.",
  "rule.sast.sw.kt.7404.name": "의사 난수 생성기(PRNG)의 예측 가능한 시드 사용",
  "rule.sast.sw.kt.7405.description": "솔트(Salt)는 주로 비밀번호 해싱이나 키 유도 함수에서 사용되는 무작위 값입니다. 솔트의 주요 목적은 동일한 입력 값이 주어지더라도 항상 다른 해시나 키를 생성해, 레인보우 테이블과 같은 사전 대입 공격을 방지하는 것입니다. \n하지만 솔트가 하드코딩된 문자열, 고정된 정수, 시스템 시간, UUIDv3 또는 예측 가능한 난수(ex. java.util.Random, Math.Random 등)에 의해 생성된 값으로 설정되면, 공격자가 해당 솔트를 쉽게 추정할 수 있습니다. 이후, 공격자는 추정된 솔트를 입력 값 후보와 결합해 해시 연산을 반복 수행함으로써 해시 결과를 재현하거나 역추적할 수 있습니다. 이로 인해 솔트가 제공해야 하는 무작위성과 고유성이 상실되어, 해시 기반 인증이나 비밀번호 보호 기능의 보안 효과가 저하될 수 있습니다.\n솔트를 하드코딩된 값, 시스템 시간, UUIDv3, 예측 가능한 난수(java.util.Random, Math.random 등)로 생성해서는 안됩니다. 솔트는 java.security.SecureRandom 클래스를 사용해 예측이 불가능한 무작위 값으로 생성하는 것이 안전합니다. 또한 비밀번호나 중요 정보를 해싱할 때는 Bcrypt, Scrypt, Argon2, PBKDF2 등과 같이 보안성이 검증된 해시 알고리즘 또는 키 유도 함수를 사용하는 것이 권장됩니다.",
  "rule.sast.sw.kt.7405.example.0.dangerous": "라인 6: 하드코딩된 문자열을 기반으로 솔트를 생성한 뒤, 해시 연산에 적용하고 있습니다. 공격자는 해당 솔트를 추정해 입력값 후보와 결합한 뒤, 해시 연산을 반복 수행함으로써 해시 결과를 재현하거나 역추적할 수 있습니다.",
  "rule.sast.sw.kt.7405.example.0.safe": "라인 9: java.security.SecureRandom 클래스를 사용해 예측이 불가능한 무작위 솔트를 생성한 뒤, 해시 연산에 적용하고 있습니다. 이 방식은 동일한 입력 값에 대해서도 항상 서로 다른 해시 결과를 생성하므로, 레인보우 테이블이나 사전 대입 공격을 효과적으로 방지할 수 있습니다.",
  "rule.sast.sw.kt.7405.name": "단방향 해시의 예측 가능한 솔트 사용",
  "rule.sast.sw.kt.7406.description": "클라이언트가 수신한 인증서에 대해 서버 → 중간 CA → 루트 CA로 이어지는 전체 신뢰 체인을 올바르게 검증하지 않거나, 인증서를 무조건 신뢰(Trust-All) 하도록 설정하면 신뢰할 수 없는 인증서가 정상 인증서로 승인될 수 있습니다. 공격자는 자체 서명된 중간 CA를 체인에 삽입해 클라이언트가 위조된 인증서를 신뢰하도록 유도할 수 있습니다. 그 결과 클라이언트는 공격자의 서버와 TLS 연결을 수립하게 되어 전송되는 중요 정보가 탈취되거나, 공격자가 통신을 변조해 원본 서버에 악의적 요청을 전송할 수 있습니다.\n클라이언트는 수신한 인증서를 무조건 신뢰(Trust-All) 하거나 신뢰 체인 검증을 비활성화해서는 안 되며, 서버 → 중간 CA → 루트 CA로 이어지는 전체 신뢰 체인을 끝까지 검증해야 합니다.\n특히 운영 환경에서는 Apache HttpClient의 TrustAllStrategy.INSTANCE나 Netty의 InsecureTrustManagerFactory.INSTANCE처럼 모든 인증서를 신뢰하도록 설정하는 코드를 사용해서는 안 됩니다. 또한 javax.net.ssl.X509TrustManager를 커스텀으로 구현하는 경우, checkServerTrusted나 checkClientTrusted 메서드에 인증서 검증 로직이 누락되지 않았는지 확인해야 합니다.",
  "rule.sast.sw.kt.7406.example.0.dangerous": "라인 4-5: checkClientTrusted()와 checkServerTrusted() 메서드에서 인증서 검증 로직이 누락되어 있습니다. 이로 인해 모든 인증서가 검증 없이 신뢰되어 위조 인증서도 허용될 수 있습니다.",
  "rule.sast.sw.kt.7406.example.0.safe": "라인 5: TrustManagerFactory에서 제공하는 기본 X509TrustManager를 사용하면, 운영체제에 내장된 신뢰할 수 있는 CA 목록을 기반으로 인증서가 자동 검증됩니다.",
  "rule.sast.sw.kt.7406.name": "부적절한 인증서 신뢰 체인",
  "rule.sast.sw.kt.7407.description": "클라이언트가 서버 인증서의 호스트명(CommonName 또는 Subject Alternative Name)을 검증하지 않거나, 모든 호스트명을 신뢰하도록 설정(ex. HostnameVerifier가 항상 true를 반환)한 경우, 인증서의 신뢰성 및 유효성 검증 기능이 무효화됩니다. 이로 인해 인증서의 발급 대상과 실제 접속 대상이 일치하지 않더라도 TLS 연결이 수립될 수 있습니다. 공격자는 이를 악용해 위조된 서버로 클라이언트를 유도하고, 중간자(MITM) 공격을 통해 트래픽을 가로채거나 변조할 수 있습니다.\n대부분의 표준 클라이언트 라이브러리(HttpsURLConnection, OkHttp 등)는 별도 설정을 하지 않으면 호스트명 검증을 자동으로 수행합니다. 이러한 기본 검증 동작을 변경해 모든 호스트명을 신뢰하도록 설정해서는 안 됩니다. 운영 환경에서는 HostnameVerifier가 항상 true를 반환하거나 NoopHostnameVerifier.INSTANCE처럼 호스트명 검증을 비활성화하는 코드를 사용하지 말아야 합니다.\n또한 SSLParameters에서 endpointIdentificationAlgorithm을 null 또는 빈 문자열(\"\")로 설정하는 것도 피해야 합니다. 해당 설정이 적용되면 호스트명 검증이 수행되지 않아, 인증서의 발급 대상(CN/SAN)과 실제 접속 대상의 일치 여부를 확인할 수 없습니다. 따라서 TLS 연결 시에는 endpointIdentificationAlgorithm을 \"HTTPS\"로 설정해 호스트명 검증을 활성화해야 합니다.",
  "rule.sast.sw.kt.7407.example.0.dangerous": "라인 9: HostnameVerifier가 true를 반환하도록 설정되어 있어, 모든 호스트명이 검증 없이 허용됩니다. 이로 인해 인증서의 발급 대상과 다른 서버에도 TLS 연결이 허용되어, 중간자(MITM) 공격에 노출될 수 있습니다.",
  "rule.sast.sw.kt.7407.example.0.safe": "라인 7: HostnameVerifier를 별도로 설정하지 않아, 기본 호스트명 검증이 자동으로 수행됩니다. 기본 설정에서는 서버 인증서의 CN/SAN이 요청한 호스트명과 일치하지 않으면 연결이 차단됩니다.",
  "rule.sast.sw.kt.7407.name": "호스트 불일치로 인한 인증서의 부적절한 검증",
  "rule.sast.sw.kt.7408.description": "파일에 비밀번호, API 키 등 민감한 정보를 암호화 없이 일반 텍스트(cleartext)로 저장하는 경우를 검출합니다. 파일 접근 권한이 있는 공격자는 해당 정보를 쉽게 탈취할 수 있으며, 탈취된 정보는 인증 우회나 권한 상승 등 추가 공격에 악용될 수 있습니다.\n민감한 정보를 파일에 저장할 때는 일반 텍스트(cleartext)로 저장해서는 안되며, AES나 RSA와 같은 암호화 알고리즘이나 SHA-256과 같은 해시 알고리즘을 사용해 안전하게 저장해야 합니다.\n또한, 데이터베이스나 비밀 관리 시스템(AWS Secrets Manager, HashiCorp Vault 등)을 활용하는 것도 좋은 방법입니다.",
  "rule.sast.sw.kt.7408.example.0.dangerous": "라인 6: 외부 입력으로 받은 비밀번호를 암호화 과정 없이 파일에 일반 텍스트로 저장하고 있습니다. 이 경우 파일이 유출되거나 접근 권한이 잘못 설정되면, 사용자 인증 정보가 그대로 노출될 수 있습니다.",
  "rule.sast.sw.kt.7408.example.0.safe": "라인 17: 외부 입력으로 받은 비밀번호에 솔트를 더하고 MessageDigest(SHA-256)로 해싱한 뒤 파일에 저장합니다. 이 경우 파일이 유출되더라도 비밀번호를 쉽게 알아낼 수 없습니다.",
  "rule.sast.sw.kt.7408.name": "파일에 일반 텍스트(Cleartext)로 민감한 정보 저장",
  "rule.sast.sw.kt.7409.description": "쿠키에 계정 ID, 사용자 이름, 비밀번호 등 민감한 정보를 암호화되지 않은 일반 텍스트(cleartext)로 저장하는 경우를 검출합니다. 쿠키가 XSS나 네트워크 스니핑 등의 공격으로 유출될 경우, 저장된 정보가 노출되어 계정 탈취로 이어질 수 있습니다.\n쿠키에는 계정 정보나 비밀번호와 같이 민감한 정보를 저장해서는 안 됩니다. 로그인 상태를 유지해야 하는 경우에는 예측 불가능한 난수로 생성된 세션 ID나 토큰만 쿠키에 저장하고, 해당 값은 서버 측 세션 저장소에서 사용자 계정과 매핑하는 방식으로 관리해야 합니다.\n\n또한, 쿠키가 XSS나 네트워크 스니핑 등의 공격에 노출되지 않도록 다음 보안 속성을 설정해야 합니다.\n\nHttpOnly: 자바스크립트 접근을 차단해 XSS를 통한 쿠키 탈취를 방지합니다.\n\nSecure: HTTPS 연결에서만 쿠키가 전송되도록 제한해 네트워크 스니핑을 방지합니다.\n\nSameSite: 교차 사이트로 전송하는 요청에 쿠키가 자동으로 포함되지 않도록 제한해 CSRF 공격을 방지합니다. Lax 이상(Lax 또는 Strict)으로 설정하는 것이 안전합니다.",
  "rule.sast.sw.kt.7409.example.0.dangerous": "라인 8: 외부 입력으로 받은 비밀번호를 쿠키에 일반 텍스트로 저장하고 있습니다. 쿠키가 XSS나 네트워크 스니핑 등의 공격으로 유출되면 해당 비밀번호가 노출되어 계정 탈취로 이어질 수 있습니다.",
  "rule.sast.sw.kt.7409.example.0.safe": "라인 7: 쿠키에 민감한 정보를 저장하지 않고, 서블릿 컨테이너가 생성한 예측 불가능한 세션 ID를 사용합니다. 세션 ID는 컨테이너에 의해 난수로 생성되어 쿠키(JSESSIONID)에 포함되며, 서버 측 세션 저장소에서 사용자 정보를 안전하게 관리합니다.",
  "rule.sast.sw.kt.7409.name": "쿠키에 일반 텍스트(Cleartext)로 민감한 정보 저장",
  "rule.sast.sw.kt.7415.description": "레지스트리에 비밀번호, API 키 등 민감한 정보를 암호화 없이 일반 텍스트(Cleartext)로 저장하는 경우를 검출합니다. 레지스트리에 접근할 수 있는 공격자는 해당 정보를 쉽게 탈취할 수 있으며, 탈취된 정보는 인증 우회나 권한 상승 등의 추가 공격에 악용될 수 있습니다.\n민감한 정보는 항상 암호화된 상태로 보관해야 합니다. 가능하면 레지스트리에 저장하지 말고 운영 체제의 자격 증명 저장소나 AWS Secrets Manager, HashiCorp Vault 등 비밀 관리 시스템에 보관하는 것이 더 안전합니다.",
  "rule.sast.sw.kt.7415.example.0.dangerous": "라인 11: 레지스트리에 암호화하지 않은 사용자 입력으로 민감한 정보를 저장하고 있습니다.",
  "rule.sast.sw.kt.7415.example.0.safe": "라인 12: 레지스트리에 SHA-256으로 해싱한 사용자 입력으로 민감한 정보를 저장하고 있습니다.",
  "rule.sast.sw.kt.7415.name": "레지스트리에 일반 텍스트(Cleartext)로 민감한 정보 저장",
  "rule.sast.sw.kt.7418.description": "외부에서 접근 가능한 경로(/public, /static, 웹 서버 문서 루트: /var/www/html 등)에 사용자 계정, 비밀번호, 토큰, API 키 등 민감한 정보를 평문으로 저장하는 코드를 검출합니다. 해당 파일이 공개 경로에 놓이면 누구나 파일에 접근해 내부의 민감한 정보를 손쉽게 획득할 수 있습니다.\n\n특히 디렉터리 리스팅이 활성화되어 있거나 파일명이 예측 가능한 경우 공격자는 단순 URL 추측만으로도 민감한 정보를 획득할 수 있으며, 이로 인해 계정 탈취, 권한 상승, 개인정보 유출 등의 보안 사고가 발생할 수 있습니다.\n민감한 정보는 웹 서버 문서 루트, 공개 디렉터리 등 외부에서 접근 가능한 경로에 저장해서는 안 됩니다. 저장이 필요한 민감한 정보는 암호화된 상태로 데이터베이스나 신뢰할 수 있는 비밀 관리 시스템(AWS Secrets Manager, HashiCorp Vault 등)에 보관하는 것이 안전합니다.\n또한, 민감한 정보가 포함되어 있는 디렉터리는 외부에서 접근할 수 없도록 웹 서버 접근 제어, 디렉터리 인덱싱 비활성화, 파일 권한 제한 등의 설정을 적용해 내부 정보 유출을 방지해야 합니다.",
  "rule.sast.sw.kt.7418.example.0.dangerous": "라인 9: 외부 입력으로 받은 비밀번호를 외부 접근 가능 경로(public_path)에 평문으로 저장하고 있습니다. 이 경우, 공개 디렉터리에 접근 가능한 공격자는 해당 파일을 열람해 민감한 정보를 손쉽게 획득할 수 있습니다.",
  "rule.sast.sw.kt.7418.example.0.safe": "라인 20: 외부 입력으로 받은 비밀번호에 솔트를 추가하고 SHA-256으로 해시한 뒤, 내부 전용 경로에 저장하고 있습니다. 이 방식은 비밀번호를 평문으로 노출하지 않으며, 외부 접근이 불가능한 경로를 사용하므로 안전합니다.",
  "rule.sast.sw.kt.7418.name": "외부 접근 가능 경로에 민감한 정보 저장",
  "rule.sast.sw.kt.7419.description": "접근 제어 기능이 없는 저장소(외부 저장소, 공용 SD 카드 등)에 사용자 계정, 비밀번호, API 키 등 민감한 정보를 평문으로 저장하는 코드를 검출합니다. 이러한 저장소에 민감한 정보를 보관하면 동일 기기 내 다른 앱이나 물리적으로 매체에 접근 가능한 제3자가 해당 데이터를 쉽게 읽고 복제하거나 삭제할 수 있습니다. 이로 인해 계정 탈취, 권한 상승, 개인정보 유출 등의 보안 사고가 발생할 수 있습니다.\n민감한 정보는 외부 저장소나 공용 SD 카드 등 접근 제어가 없는 저장소에 저장해서는 안 됩니다. 저장이 필요한 경우, 앱 내부 전용 저장소나 안전한 비밀 관리 시스템(Android Keystore, AWS Secrets Manager, HashiCorp Vault 등)을 사용해야 합니다. \n\n또한, Android 환경에서는 Scoped Storage 정책을 준수하고, 외부 저장소 접근 권한을 최소화해 불필요한 파일 노출을 방지해야 합니다.\n\n※ Android 10(API 29) 이상에서는 Scoped Storage 정책으로 인해, 앱은 자신의 앱 전용 디렉터리에는 자유롭게 접근 가능하지만, 다른 앱의 데이터나 외부 저장소의 공용 디렉터리에는 접근할 수 없습니다.",
  "rule.sast.sw.kt.7419.example.0.dangerous": "라인 7: 사용자 입력으로 받은 비밀번호를 외부 저장소 루트 경로(/storage/emulated/0)에 평문으로 저장하고 있습니다. 외부 저장소는 접근 제어가 없기 때문에 누구나 해당 파일을 열람할 수 있어 민감한 정보가 쉽게 유출될 수 있습니다.",
  "rule.sast.sw.kt.7419.example.0.safe": "라인 17: 사용자 입력으로 받은 비밀번호에 솔트를 추가하고 SHA-256으로 해시한 뒤, 내부 저장소에 저장하고 있습니다. 내부 저장소는 앱 전용 접근 권한을 가지므로 외부에서 접근할 수 없습니다.",
  "rule.sast.sw.kt.7419.name": "접근 제어가 없는 파일 시스템 또는 장치에 민감한 정보 저장",
  "rule.sast.sw.kt.7424.description": "Android에서 암시적 인텐트(Implicit Intent)는 수신 대상을 명시하지 않고 액션이나 데이터만으로 전달되므로, 인텐트 필터를 가진 모든 애플리케이션이 이를 수신할 수 있습니다. 애플리케이션이 비밀번호, 토큰, API 키 등 민감한 정보를 암시적 브로드캐스트로 전송하면, 신뢰할 수 없는 애플리케이션이 해당 정보를 가로채거나 조작할 위험이 있습니다.\n\n브로드캐스트 전송 방식은 비 순차적(Normal)과 순차적(Ordered), 그리고 과거에 사용되던 스티키(Sticky) 방식으로 구분됩니다. 비 순차적 브로드캐스트는 모든 리시버에 동시에 전달되어 우선순위가 적용되지 않습니다. 순차적 브로드캐스트는 등록된 리시버의 우선순위에 따라 인텐트를 순차 전달하는데, 우선순위가 높은 악성 리시버가 인텐트를 변경하거나 abortBroadcast()로 전달을 차단하면 인증 흐름 무력화나 서비스 거부(DoS)가 발생할 수 있습니다. 스티키 브로드캐스트는 전송된 인텐트가 시스템에 남아 이후 등록되는 리시버에게도 재전달되므로, 과거에 전송된 민감한 정보가 장기간 노출될 위험이 있습니다.\n\n또한 브로드캐스트 인텐트에 content:// 또는 file:// 형태의 URI와 접근 권한이 포함되어 전달될 경우, 이를 가로챈 리시버가 해당 권한으로 리소스에 접근해 민감한 데이터가 유출될 수 있습니다.\n브로드캐스트를 통해 비밀번호, 토큰, API 키 등 민감한 정보를 전송해서는 안 됩니다. 외부 구성 요소와 통신이 필요한 경우에는 암시적 브로드캐스트 대신 명시적 인텐트(Explicit Intent)를 사용하거나, setPackage()로 수신 대상을 지정해 브로드캐스트 범위를 제한하는 것이 안전합니다.\n\n또한 sendOrderedBroadcast는 악성 리시버에 의해 인텐트가 변조되거나 전달이 차단될 수 있어 사용을 피해야 합니다. sendStickyBroadcast는 보안 및 성능 문제로 인해 Android 5.0(API 21) 이후 일반 앱에서 사용이 deprecated 되었으며, 시스템 앱이나 특별한 권한을 가진 앱에서만 사용할 수 있습니다.",
  "rule.sast.sw.kt.7424.example.0.dangerous": "라인 8: 암시적 브로드캐스트를 통해 민감한 정보(token)을 전송하고 있습니다. 수신 대상을 명시하지 않아, 동일한 액션(com.example.ACTION_TOKEN)을 등록한 외부 애플리케이션이 해당 토큰을 수신할 수 있습니다.",
  "rule.sast.sw.kt.7424.example.0.safe": "라인 8: 명시적 인텐트를 사용해 신뢰할 수 있는 내부 구성요소(SecureReceiver)로만 데이터를 전달합니다.",
  "rule.sast.sw.kt.7424.name": "암시적 브로드캐스트를 통한 민감한 정보 전송",
  "rule.sast.sw.kt.7428.description": "XML 문서 내부의 DTD(Document Type Definition)는 엔터티를 정의하고 다른 엔터티를 참조할 수 있습니다. 그러나 엔터티 참조가 재귀적(순환)이거나 깊게 중첩되어 전개되면 파서는 확장 과정에서 출력 크기와 연산량이 기하급수적으로 증가합니다.\n\n이로 인해 파싱 과정에서 CPU 및 메모리 사용이 급격히 증가해 프로세스가 과부하 되거나 메모리 부족(OOM)으로 종료될 수 있으며, 결과적으로 서비스 거부(DoS) 상태가 발생할 위험이 있습니다. 이러한 공격은 XML Entity Expansion(XEE) 또는 XML Bomb/Billion Laughs로 불리며, 외부 입력에 대해 DTD 사용을 제한하지 않거나 파서에서 엔터티 전개 동작을 적절히 제어하지 않는 시스템에서 주로 발생합니다.\n신뢰할 수 없는 XML 입력에 대해서는 DTD 선언과 엔터티 전개를 허용하지 않아야 합니다. DTD 사용이 필요한 경우에는 외부에서 제공된 DTD를 해석하지 않고, 로컬에 검증된 정적 DTD만 참조하도록 설정해야 합니다.\n\n또한 외부 엔터티 접근을 차단하고, 엔터티 전개 깊이와 문서 크기에 제한을 두어 서비스 거부(DoS) 공격을 예방해야 합니다.\n\nXML 파서 사용 시에는 아래와 같이 DTD 선언을 명시적으로 비활성화해야 합니다. 비활성화를 적용하지 않으면 DTD 선언이 허용되어 XML Bomb(XEE) 공격에 노출될 수 있습니다.\n\nDocumentBuilderFactory, SAXParserFactory, SAXReader, SAXBuilder 클래스에서는 setFeature(\"http://apache.org/xml/features/disallow-doctype-decl\", true) 설정을 적용합니다. XMLInputFactory 클래스에서는 setProperty(\"javax.xml.stream.supportDTD\", false)로 DTD 지원을 비활성화합니다.",
  "rule.sast.sw.kt.7428.example.0.dangerous": "라인 2: DocumentBuilderFactory 생성 직후 DTD 비활성화(disallow-doctype-decl=true) 및 외부 엔터티 차단 설정이 없습니다. 이 상태로 파서를 생성하면 DTD가 허용되어 XML Bomb(XEE) 공격에 노출될 수 있습니다.",
  "rule.sast.sw.kt.7428.example.0.safe": "라인 4: DocumentBuilderFactory 생성 직후 apply {} 블록에서 DTD 비활성화 및 외부 엔터티 차단 설정을 명시적으로 적용합니다.",
  "rule.sast.sw.kt.7428.name": "DTD에서 재귀적 엔터티 참조의 부적절한 제한(XML 엔터티 확장)",
  "rule.sast.sw.kt.7433.description": "Kotlin에서 교착 상태(Deadlock)는 잘못된 락 사용이나 코루틴의 동기적 블로킹으로 인해 발생합니다. 특히 한 메서드 내에서 자기 인스턴스(this)의 락을 획득한 뒤, 파라미터로 전달된 다른 인스턴스의 락을 중첩으로 획득하는 경우 교착 상태가 발생할 수 있습니다. 호출 순서에 따라 한 스레드는 this → param, 다른 스레드는 param → this 순서로 락을 획득하게 되면, 두 스레드가 서로의 락이 해제되기를 기다리며 무한 대기 상태에 빠집니다.\n\n또한, runBlocking(Dispatchers.Main)과 같이 메인(UI) 디스패처를 동기적으로 차단하는 코드에서도 교착 상태가 발생할 수 있습니다. 메인 디스패처는 단일 스레드로 동작하므로, 해당 스레드에서 다른 코루틴이 실행되기를 기다리는 구조가 되면 자기 자신을 차단하는 형태의 교착 상태가 발생합니다. 이로 인해 UI가 멈추거나 서비스가 응답하지 않는 상태가 될 수 있습니다.\n\n※ 디스패처(Dispatcher)**:** 코루틴이 어떤 스레드나 스레드 풀에서 실행될지를 결정하는 구성 요소입니다. Dispatchers.Main은 UI 스레드, Dispatchers.IO는 입출력 작업용 스레드 풀을 의미합니다.\n락을 중첩으로 사용할 경우에는 락 획득 순서를 명확히 정의하고 일관되게 적용해야 합니다. 락 획득 순서가 코드마다 달라지면 서로의 락이 해제되기를 기다리는 순환 대기가 발생할 수 있습니다. 따라서 모든 코드에서 동일한 락 획득 규칙을 적용해 교착 상태를 예방해야 합니다.\n\n또한 메인(UI) 디스패처에서는 동기적 블로킹을 사용하지 않아야 합니다. UI 스레드에서는 launch(Dispatchers.Main)을 통해 코루틴을 비동기적으로 실행하고, 오래 걸리는 연산이나 입출력(I/O) 작업은 withContext(Dispatchers.IO)로 분리해 수행해야 합니다.",
  "rule.sast.sw.kt.7433.example.0.dangerous": "라인 3: synchronized(this) 내부에서 파라미터(to) 객체의 락을 중첩 획득하고 있습니다. 두 인스턴스가 서로를 대상으로 transfer()를 동시에 호출하면, 락 획득 순서가 this → to와 to → this로 엇갈려 교착 상태가 발생할 수 있습니다.",
  "rule.sast.sw.kt.7433.example.0.safe": "라인 6: 락 획득 순서를 명확히 정의하여 항상 동일한 순서로 락을 획득합니다.",
  "rule.sast.sw.kt.7433.name": "교착 상태",
  "rule.sast.sw.kt.7434.description": "Android에서 ParcelFileDescriptor(PFD)는 운영체제의 파일 설명자(File Descriptor)를 감싸는 Parcelable 객체로, Binder IPC를 통해 프로세스 간에 전달될 수 있습니다.\n애플리케이션이 ParcelFileDescriptor.open() 또는 ContentResolver.openFileDescriptor() 등으로 획득한 파일 설명자를 암시적 브로드캐스트로 전송하면, 인텐트 필터를 가진 외부 애플리케이션이 해당 브로드캐스트를 수신해 PFD의 복제본을 획득할 수 있습니다. 이로 인해 외부 애플리케이션이 파일을 직접 열람하거나 수정할 수 있어, 파일에 저장된 민감한 정보가 유출되거나 무단 변경될 위험이 있습니다.\n\n※ Binder IPC: Android의 기본 프로세스 간 통신(IPC) 방식으로, 애플리케이션 간 데이터 전달에 사용됩니다.\n암시적 브로드캐스트를 통해 파일 접근 권한을 전송해서는 안 됩니다. 외부 애플리케이션이 해당 인텐트를 수신하면 파일 접근 권한이 의도치 않게 노출될 수 있으므로, 명시적 인텐트를 사용해 신뢰할 수 있는 내부 구성 요소로만 전송하도록 제한해야 합니다.\n\n또한, 파일 설명자(ParcelFileDescriptor)를 인텐트를 통해 직접 전송해서도 안 됩니다. 외부 구성 요소와 파일을 공유해야 하는 경우에는 FileProvider를 사용해 content:// 형태의 URI를 생성한 뒤, 이를 인텐트에 포함하는 방식으로 전달해야 합니다. 이때 FLAG_GRANT_READ_URI_PERMISSION 또는 FLAG_GRANT_WRITE_URI_PERMISSION을 설정해 일시적으로 필요한 권한만 부여하는 것이 안전합니다.\nFileProvider는 Android에서 파일을 직접 전달하지 않고 URI 형태로 접근 권한을 위임하기 위한 구성 요소이며, AndroidManifest.xml에서 grantUriPermissions=\"true\"로 설정해야 권한 위임이 적용됩니다.",
  "rule.sast.sw.kt.7434.example.0.dangerous": "라인 13: ParcelFileDescriptor 객체를 포함한 인텐트를 암시적 브로드캐스트로 전송하고 있습니다. 수신 대상을 명시하지 않아, 동일한 액션(com.example.ACTION_EXPORT)을 등록한 외부 애플리케이션이 파일 설명자의 복제본을 획득해 파일을 직접 열람하거나 수정할 수 있습니다.",
  "rule.sast.sw.kt.7434.example.0.safe": "라인 16: FileProvider를 사용해 content:// 형태의 URI만 전송하므로 파일 설명자(PFD)가 노출되지 않습니다. 또한 명시적 인텐트를 사용해 신뢰할 수 있는 내부 구성요소(SecureReceiver)로만 데이터를 전달합니다.",
  "rule.sast.sw.kt.7434.name": "암시적 브로드캐스트를 통한 파일 설명자 노출",
  "rule.sast.sw.kt.7495.description": "취약한 XML 변환 보안은 XML 파서가 DOCTYPE(DTD) 또는 External Entity(외부 엔터티)를 허용하여 공격자가 XML 입력 값을 조작하여 내부 파일 조회, SSRF 등 시스템 정보 노출을 유발하는 취약점입니다.\n\n파서가 적절한 보안 설정 없이 외부 입력을 처리하면 다음과 같은 공격이 발생할 수 있습니다:\n\n- 내부 파일 노출 (file:///)\n- 내부망 SSRF\n- XML Bomb / Billion Laughs 공격에 의한 DoS\n- 경로·시스템 정보 누출\nXML 파서가 외부 입력을 허용할 경우, 다음 6개의 보안 설정을 적용해야 합니다.\n\n- DOCTYPE 선언 금지\n    - setFeature(\"http://apache.org/xml/features/disallow-doctype-decl\", true)\n- 외부 일반 엔터티 금지\n    - setFeature(\"http://xml.org/sax/features/external-general-entities\", false)\n- 외부 파라미터 엔터티 금지\n    - setFeature(\"http://xml.org/sax/features/external-parameter-entities\", false)\n- 외부 DTD 로딩 금지\n    - setFeature(\"http://apache.org/xml/features/nonvalidating/load-external-dtd\", false)\n- 자원 폭주 방지\n    - setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true)\n- DTD/Schema/XSLT 등 모든 외부 리소스 접근 차단\n    - setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, \"\")\n    - setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, \"\")\n    - setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, \"\")",
  "rule.sast.sw.kt.7495.example.0.dangerous": "라인 10: 별도의 보안 옵션 없이 외부 입력 기반 XML을 처리하는 경우 XXE가 발생할 위험이 있습니다.",
  "rule.sast.sw.kt.7495.example.0.safe": "라인 7-16: 외부 입력을 허용할 경우 필요한 6개의 보안 옵션을 설정했습니다.\n라인 19: 보안 옵션이 설정된 TransformerFactory 객체를 통해 외부 입력 기반 XML 처리를 진행하여 안전합니다.",
  "rule.sast.sw.kt.7495.name": "XML 외부 엔터티 참조의 부적절한 제한",
  "rule.sast.sw.lua.7155.description": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.\n사용자 이름과 비밀번호를 URL에 포함시키지 않고 보다 안전한 인증 방법을 사용해야 합니다. 예를 들어, OAuth 또는 환경 변수를 통한 자격 증명 관리와 같은 방법이 있습니다.",
  "rule.sast.sw.lua.7155.example.0.dangerous": "라인 3: 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 하드코딩되어 위험합니다.",
  "rule.sast.sw.lua.7155.example.0.safe": "라인 3: 사용자 이름과 비밀번호를 포함하는 기본 인증 정보를 .env 파일을 사용하여 안전하게 관리합니다.",
  "rule.sast.sw.lua.7155.name": "하드코드된 인증 정보",
  "rule.sast.sw.lua.7156.description": "소스 코드 내에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.\n이메일 주소가 코드 내에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "rule.sast.sw.lua.7156.example.0.dangerous": "라인 1: 하드코드된 이메일 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.lua.7156.example.0.safe": "라인 1: 이메일 정보를 .env 파일을 사용하여 안전하게 관리합니다.",
  "rule.sast.sw.lua.7156.name": "하드코드된 이메일 주소",
  "rule.sast.sw.lua.7157.description": "소스 코드에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.\n소스 코드에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "rule.sast.sw.lua.7157.example.0.dangerous": "라인 4: 하드코딩된 IP 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.lua.7157.example.0.safe": "라인 4: .env 파일을 사용하여 IP 정보를 안전하게 관리합니다.",
  "rule.sast.sw.lua.7157.name": "하드코드된 IP 주소",
  "rule.sast.sw.lua.7158.description": "소스 코드 내에 하드코드된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.\nAPI 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "rule.sast.sw.lua.7158.example.0.dangerous": "라인 6: 하드코드된 API 키가 존재하므로 위험합니다.",
  "rule.sast.sw.lua.7158.example.0.safe": "라인 6: .env 파일을 사용하여 API 키를 안전하게 관리합니다.",
  "rule.sast.sw.lua.7158.name": "하드코드된 API 키",
  "rule.sast.sw.lua.7159.description": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다. 하지만 해시 함수인 MD5나 SHA1의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다.\nMD5와 SHA1의 단점을 극복하기 위해 사용되는 함수는 다양하게 존재합니다. SHA2, SHA3 혹은 비교적 최신의 안전한 알고리즘인 Bcrypt, Blake2, Argon2, PBKDF2, Scrypt 등을 사용하여 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.lua.7159.example.0.dangerous": "라인 5: 무작위 대입 공격에 취약한 해시 함수를 사용하여 위험합니다.",
  "rule.sast.sw.lua.7159.example.0.safe": "라인 5: 비교적 최신의 안전한 해시 함수를 사용하므로 안전합니다.",
  "rule.sast.sw.lua.7159.example.1.dangerous": "라인 5 : 무작위 대입 공격에 취약한 해시 함수를 사용하여 위험합니다.",
  "rule.sast.sw.lua.7159.example.1.safe": "라인 5: 비교적 최신의 안전한 해시 함수를 사용하므로 안전합니다.",
  "rule.sast.sw.lua.7159.example.2.dangerous": "라인 5 : 무작위 대입 공격에 취약한 해시 함수를 사용하여 위험합니다.",
  "rule.sast.sw.lua.7159.example.2.safe": "라인 5: 비교적 최신의 안전한 해시 함수를 사용하므로 안전합니다.",
  "rule.sast.sw.lua.7159.name": "취약한 해시",
  "rule.sast.sw.lua.7160.description": "암호학적으로 안전하지 않은 난수 생성기는 예측 가능한 값들을 생성할 수 있으며, 이는 보안 취약점으로 이어질 수 있습니다.\n최신 언어들은 대부분 안전한 난수 방법을 제공합니다. 보통은 보안을 생각하여 만든 난수가 아니라 보다 안전한 난수 방법을 사용하여 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.lua.7160.example.0.dangerous": "라인 1: 기본 내장 모듈인 math의 radom 메서드는 예측 가능한 값을 생성하므로, 보안 상 적합하지 않습니다.",
  "rule.sast.sw.lua.7160.example.0.safe": "라인 4: 외부 모듈인 openssl.rand의 bytes 메서드는 예측이 어려운 임의의 값을 생성하므로, 보안 상 안전합니다.",
  "rule.sast.sw.lua.7160.name": "취약한 난수",
  "rule.sast.sw.lua.7161.description": "RSA 암호화는 공개키 암호화 방식 중 하나로, 키의 길이에 따라 암호의 강도가 달라집니다. 현재, 대부분의 상황에서 적절하다고 간주되는 키 길이는 2048 bits입니다. 현재의 컴퓨팅 능력으로는 이를 깨트리는 것이 실질적으로 불가능하기 때문입니다.\nRSA 키 길이는 2048 bits 이상을 사용하는 것이 좋습니다. 가장 권장하는 길이이고, 3072 bits 또는 4096 bits 등을 사용하는 것이 더 안전하지만 키 길이가 길어질수록 암복호화에 필요한 컴퓨팅 리소스가 증가합니다.",
  "rule.sast.sw.lua.7161.example.0.dangerous": "라인 3: RSA 키 길이가 2048 bits 보다 작으므로 위험합니다.",
  "rule.sast.sw.lua.7161.example.0.safe": "라인 3: RSA 키 길이가 2048 bits 이상으로 설정되어 있으므로 안전합니다.",
  "rule.sast.sw.lua.7161.example.1.dangerous": "라인 3 : RSA 키 길이가 2048 bits 보다 작으므로 위험합니다.",
  "rule.sast.sw.lua.7161.example.1.safe": "라인 3: RSA 키 길이가 2048 bits 이상으로 설정되어 있으므로 안전합니다.",
  "rule.sast.sw.lua.7161.name": "충분하지 않은 RSA 암호화 키 길이",
  "rule.sast.sw.lua.7162.description": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.\n사용자 이름과 비밀번호를 URL에 포함시키지 않고 보다 안전한 인증 방법을 사용해야 합니다. 예를 들어, OAuth 또는 환경 변수를 통한 자격 증명 관리와 같은 방법이 있습니다.",
  "rule.sast.sw.lua.7162.example.0.dangerous": "라인 3: 주석문 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.lua.7162.example.0.safe": "라인 3: 주석문 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.lua.7162.name": "주석문 안의 인증 정보",
  "rule.sast.sw.lua.7163.description": "주석문에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.\n이메일 주소가 주석문에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "rule.sast.sw.lua.7163.example.0.dangerous": "라인 1: 주석문 안에 이메일 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.lua.7163.example.0.safe": "라인 1: 주석문 내 이메일 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.lua.7163.name": "주석문 안의 이메일 주소",
  "rule.sast.sw.lua.7164.description": "주석문에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.\n주석문에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "rule.sast.sw.lua.7164.example.0.dangerous": "라인 5: 주석문 내에 IP 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.lua.7164.example.0.safe": "라인 4: 주석문 내에 IP 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.lua.7164.name": "주석문 안의 IP 주소",
  "rule.sast.sw.lua.7165.description": "주석문 내에 하드코드된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.\nAPI 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "rule.sast.sw.lua.7165.example.0.dangerous": "라인 6: 주석문 내에 API 키가 존재하므로 위험합니다.",
  "rule.sast.sw.lua.7165.example.0.safe": "라인 6: 주석문 내에 API 키 값이 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.lua.7165.name": "주석문 안의 API 키",
  "rule.sast.sw.lua.7166.description": "디버그 문은 개발 과정에서 로깅을 위해 사용됩니다. 하지만, 이러한 디버그 문은 프로덕션 코드에서는 성능 저하를 초래하고, 민감한 정보를 로그로 노출할 위험이 있어 제거되어야 합니다.\n프로덕션 환경 준비 시 모든 디버그 문을 철저히 검토하고 제거해야 합니다.",
  "rule.sast.sw.lua.7166.example.0.dangerous": "라인 2: 디버그 코드가 제거되지 않았으므로 위험합니다.",
  "rule.sast.sw.lua.7166.example.0.safe": "라인 2: 디버그 코드가 주석 처리되어 안전합니다.",
  "rule.sast.sw.lua.7166.name": "제거되지 않고 남은 디버그 코드",
  "rule.sast.sw.lua.7168.description": "취약한 암호화 알고리즘은 공격자에게 데이터를 해독할 수 있는 기회를 제공할 수 있습니다. 예전에는 해독하는 데 몇십 억년이 걸릴 것이라고 예상되던 알고리즘이 지금은 며칠이나 몇 시간 내에 해독되기도 합니다. RC2, DES, Blowfish 등의 알고리즘이 여기에 해당됩니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하며, 학계 및 업계에서 이미 검증된 표준화된 알고리즘을 사용하도록 합니다. 기존에 취약하다고 알려진 암호화 알고리즘을 대신하여 AES, RSA, ECC 등의 안전한 암호화 알고리즘을 사용하도록 합니다.",
  "rule.sast.sw.lua.7168.example.0.dangerous": "라인 6: 암호화 과정에서 취약한 암호화 알고리즘인 DES가 사용되었으므로 위험합니다.",
  "rule.sast.sw.lua.7168.example.0.safe": "라인 7: 암호화 과정에서 안전한 암호화 알고리즘인 AES가 사용되어 안전합니다.",
  "rule.sast.sw.lua.7168.example.1.dangerous": "라인 7: 암호화 과정에서 취약한 암호화 알고리즘인 DES가 사용되었으므로 위험합니다.",
  "rule.sast.sw.lua.7168.example.1.safe": "라인 7: 암호화 과정에서 안전한 암호화 알고리즘인 AES가 사용되어 안전합니다.",
  "rule.sast.sw.lua.7168.example.2.dangerous": "라인 3: 암호화 과정에서 취약한 암호화 알고리즘인 Blowfish가 사용되었으므로 위험합니다.",
  "rule.sast.sw.lua.7168.example.2.safe": "라인 7: 암호화 과정에서 안전한 암호화 알고리즘인 AES가 사용되어 안전합니다.",
  "rule.sast.sw.lua.7168.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.objc.1882.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.objc.1882.example.0.dangerous": "라인 2: 검증되지 않은 문자열을 openURL에 전달했습니다.",
  "rule.sast.sw.objc.1882.example.0.safe": "라인 3: [stringByAddingPercentEncodingWithAllowedCharacters] 메시지 전송을 통해 검증한 문자열을 전달했습니다.",
  "rule.sast.sw.objc.1882.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.objc.1882.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.1882.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.1882.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.objc.1882.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.objc.1882.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.objc.1882.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.1882.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) printf$param(1)",
  "rule.sast.sw.objc.1882.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.1882.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.objc.1882.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.1897.description": "시그널 핸들러의 잘못된 사용 체커는 운영 체제 환경으로 인해 시그널 핸들러를 유지시키는 데 실패하는 경우를 검출합니다.\n운영 체제에 따라 시그널 핸들러의 지속성과 작동 방식이 달라지므로 구현되는 세부적인 작동 방식을 이해해야 합니다,\n운영 체제에 따라 signal() 함수로 등록한 핸들러가 지속적으로 사용되기도 하고, 첫 번째 시그널만 처리한 후에 사라지기도 합니다. 후자의 경우에 대비하기 위해 핸들러 내부에서 signal() 함수로 스스로를 다시 등록하는 경우도 있지만 안전한 방법이 아닙니다. 핸들러가 호출된 직후와 signal() 함수로 스스로를 다시 등록하는 시점 사이에 틈이 있기 때문입니다. 따라서 두 시점 사이에 시그널이 발생하면 개발자가 의도하지 않은 기본 시그널 핸들러가 작동하게 됩니다.\n또한 시그널 핸들러를 지속적으로 사용하려면 안전한 방식을 사용해야 합니다.",
  "rule.sast.sw.objc.1897.example.0.dangerous": "라인 3: 시그널 핸들러를 지속하기 위해 내부에서 signal() 함수를 호출하여 리셋된 핸들러를 다시 등록했습니다. 그러나 핸들러 호출 시점과 signal() 작동 시점 사이에 레이스 윈도우가 존재합니다.",
  "rule.sast.sw.objc.1897.example.0.safe": "라인 4: Windows 환경에서는 대응 방안이 없지만, POSIX 환경에서는 플래그를 통해 시그널 핸들러의 지속 여부를 제어할 수 있습니다.",
  "rule.sast.sw.objc.1897.name": "시그널 핸들러의 잘못된 사용",
  "rule.sast.sw.objc.1899.description": "누락된 반환 값 검사 체커는 반환 값을 사용하지 않거나 반환 값을 검사했으나 아무런 방어 코드도 넣지 않은 경우를 검출합니다.\n옵션에서 검사할 대상 함수를 지정할 수 있습니다.\n반환된 값을 사용하지 않거나 반환 값 검사 후 방어 코드를 넣지 않는 것은 프로그램이 기대하지 않은 행동을 할 수 있습니다. 일반적으로 프로그래머는 함수 호출에 실패하지 않을 것이라고 추측합니다. 그럼에도 불구하고 함수 호출이 실패하는 경우가 발생할 수 있으며 이로 인해 공격자에게 프로그램을 공격할 수 있는 기회를 제공합니다. 그리고 보안 위협이 발생할 수 있습니다.\n반드시 대상 함수들의 반환 값을 검사하고 방어 코드를 추가하도록 합니다.",
  "rule.sast.sw.objc.1899.example.0.dangerous": "라인 2: 반환 값을 확인하지 않았습니다.\n라인 3: fputs()의 반환 값을 확인했지만, 어떠한 방어 코드도 넣지 않았습니다.",
  "rule.sast.sw.objc.1899.example.0.safe": "라인 2: 결과값을 확인 후 오류에 대한 대처 코드를 작성합니다.",
  "rule.sast.sw.objc.1899.name": "누락된 반환 값 검사",
  "rule.sast.sw.objc.1899.option.target_grp1.description": "호출 후, if 구문으로 리턴 값을 비교하는 함수입니다. 비교 후 조건문 안쪽이 빈 문장인 경우 에러 처리를 하지 않은 것으로 판단하여 결함으로 검출합니다.",
  "rule.sast.sw.objc.1899.option.target_grp1.name": "리턴 값 검사 대상 함수",
  "rule.sast.sw.objc.1900.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "rule.sast.sw.objc.1900.example.0.dangerous": "라인 4: access() 함수와 open() 함수를 호출하는 사이에 리소스의 상태가 변경될 수 있습니다.",
  "rule.sast.sw.objc.1900.example.0.safe": "라인 3: open() 함수를 사용하여 모드를 지정합니다.\n라인 5: chmod() 대신 fchmod()를 사용하여, open의 fd를 그대로 사용합니다.",
  "rule.sast.sw.objc.1900.name": "TOCTOU 경쟁 조건",
  "rule.sast.sw.objc.1900.option.forbiddenTOUCOU.description": "자원을 사용하는 시점과 검사하는 시점이 달라, 경쟁조건의 발생 가능성이 있습니다.",
  "rule.sast.sw.objc.1900.option.forbiddenTOUCOU.name": "사용시 경쟁조건이 발생가능한 함수입니다.",
  "rule.sast.sw.objc.1902.description": "주석문 안의 비밀번호 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.objc.1902.example.0.dangerous": "라인 1: 주석문 내에 password라고 명시되어 있으므로 비밀번호로 취급합니다.\n라인 2: 주석문 내에 passwd라고 명시되어 있으므로 비밀번호로 취급합니다.",
  "rule.sast.sw.objc.1902.example.0.safe": "라인 1: 프로그램 개발 시에 주석문 등에 남겨놓은 사용자 계정이나 비밀번호 등의 정보는 개발 완료 시에 확실하게 삭제해야 합니다.",
  "rule.sast.sw.objc.1902.name": "주석문 안의 비밀번호",
  "rule.sast.sw.objc.1902.option.allowed_max_word_length.description": "단일 단어의 최대 길이를 작성합니다.<br />예시) 40",
  "rule.sast.sw.objc.1902.option.allowed_max_word_length.name": "허용할 최대 연속 단어 길이",
  "rule.sast.sw.objc.1902.option.check_header.description": "옵션을 사용하는 경우, 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.sast.sw.objc.1902.option.check_header.name": "헤더 파일 분석 여부",
  "rule.sast.sw.objc.1902.option.check_password_only.description": "옵션을 사용하는 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "rule.sast.sw.objc.1902.option.check_password_only.name": "비밀번호 문자열 단독 검출 여부",
  "rule.sast.sw.objc.1902.option.consecutive_word_expr.description": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.<br />예시) [a-zA-Z0-9]+",
  "rule.sast.sw.objc.1902.option.consecutive_word_expr.name": "검출할 연속 단어 형식",
  "rule.sast.sw.objc.1902.option.fixed_key_length.description": "고정 길이 문자열을 입력합니다.",
  "rule.sast.sw.objc.1902.option.fixed_key_length.name": "고정 길이",
  "rule.sast.sw.objc.1902.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.objc.1902.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.objc.1902.option.using_fixed_key_length.description": "옵션을 사용하는 경우, 고정 길이의 문자열을 검출합니다.",
  "rule.sast.sw.objc.1902.option.using_fixed_key_length.name": "고정 길이 검출 여부",
  "rule.sast.sw.objc.1904.description": "문자열 복사로 인한 버퍼 오버플로우 체커는 메모리 상의 데이터를 특정 크기 만큼 복사할 때 문제가 있는 문자열 함수 호출을 검출합니다.\n검출 대상 문자열 함수들을 옵션으로 지정할 수 있습니다.\n버퍼 오버플로우 및 버퍼 언더플로우 오류는 가장 널리 알려진 소프트웨어 보안 취약점입니다. 공격자는 이 오류를 이용하여 접근 불가능한 메모리 상에 존재하는 중요한 정보를 탈취할 수 있습니다. 또는 프로그램에서 악의적인 코드를 실행하여 DoS(Denial of Service) 공격이나 다양한 문제를 일으킬 수 있습니다\n메모리에서 특정 크기의 데이터를 복사하는 문자열 함수를 사용할 때 정해진 범위를 벗어나지 않도록 합니다.",
  "rule.sast.sw.objc.1904.example.0.dangerous": "라인 1: 배열 buf1을 100 크기로 선언합니다.\n라인 2: 배열 buf2를 200 크기로 선언합니다.\n라인 4: strcpy() 함수로 buf1 버퍼로 buf2 버퍼에 있는 문자열을 복사하는데, 여기서 buf2 문자열의 크기가 buf1 버퍼의 크기보다 크면 버퍼 오버플로우가 발생합니다.",
  "rule.sast.sw.objc.1904.example.0.safe": "라인 4: strlcpy() 함수를 사용하여 버퍼 오버런을 방지합니다.",
  "rule.sast.sw.objc.1904.name": "문자열 복사로 인한 버퍼 오버플로우",
  "rule.sast.sw.objc.1904.option.string_function.description": "문자열을 처리하는 함수를 사용할 때, Buffer Overrun 오류가 발생할 가능성이 있는 함수들의 목록입니다.",
  "rule.sast.sw.objc.1904.option.string_function.name": "문자열 처리 검사 대상 함수",
  "rule.sast.sw.objc.1906.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다.",
  "rule.sast.sw.objc.1906.example.0.dangerous": "라인 19: 안전하지 않은 bodyString 이 페이지 생성에 사용됩니다.",
  "rule.sast.sw.objc.1906.example.0.safe": "라인 14: 필터링을 거쳐 페이지를 생성하는데 사용하도록 합니다.",
  "rule.sast.sw.objc.1906.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.objc.1906.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.1906.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.1906.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.objc.1906.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.objc.1906.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.objc.1906.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.1906.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) __sparrow_OBJC_echo__$param(*)",
  "rule.sast.sw.objc.1906.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.1906.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.objc.1906.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.1916.description": "위험한 임시 파일 생성 체커는 임시 파일을 부적절한 방법으로 생성하는 경우를 검출합니다.\nmktemp, mkstemp, mkstemps,mkdtemp 함수의 인자는 반드시 6자 이상의 문자열이어야 합니다.\n임시 파일의 이름을 공격자가 예측 가능한 이름으로 생성하거나 임의의 프로그램이 접근 가능한 권한으로 생성하면 공격자가 임시 파일의 내용을 조작하여 프로그램에 오동작을 일으킬 수 있습니다.\n임시 파일은 예측 불가능한 이름을 사용하고 프로그램이 단독으로 사용할 수 있도록 생성하는 것이 좋습니다.",
  "rule.sast.sw.objc.1916.example.0.dangerous": "라인 2: mkstemp() 함수의 인자 문자열의 길이가 2자입니다.",
  "rule.sast.sw.objc.1916.example.0.safe": "라인 2: mkstemp() 함수의 인자 문자열의 길이를 6자 이상으로 입력해야 합니다.",
  "rule.sast.sw.objc.1916.name": "위험한 임시 파일 생성",
  "rule.sast.sw.objc.1972.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n예를 들어, strpbrk() 함수를 사용하여 추가적인 검증 없이 system 명령어를 입력하는 경우입니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.objc.1972.example.0.dangerous": "라인 6: 외부로부터 명령어를 전달 받았습니다.\n라인 10: 외부에서 받은 명령어를 적절한 처리 없이 사용했습니다. 예를 들어, \"file_name.txt; rm -rf\" 와 같은 명령어를 삽입하는 경우 해당 디렉토리에 있는 모든 파일이 삭제될 위험이 있습니다.",
  "rule.sast.sw.objc.1972.example.0.safe": "라인 7: 삽입 공격에 사용되는 위험한 문자가 포함되어 있는지 strpbrk() 함수를 통해 확인한 후에 명령어를 사용합니다.",
  "rule.sast.sw.objc.1972.name": "명령어 삽입",
  "rule.sast.sw.objc.1972.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.1972.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.1972.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.objc.1972.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.objc.1972.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.objc.1972.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.1972.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) printf$param(1)",
  "rule.sast.sw.objc.1972.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.1972.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.objc.1972.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.1974.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.sw.objc.1974.example.0.dangerous": "라인 6: catch 블록에 적절한 예외 처리 구문이 없습니다.",
  "rule.sast.sw.objc.1974.example.0.safe": "라인 6: catch 블록에 적절한 예외 처리 구문을 추가합니다.",
  "rule.sast.sw.objc.1974.name": "빈 catch 블록",
  "rule.sast.sw.objc.1975.description": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.\n지나치게 일반적인 예외 처리를 하게 되면 특별히 처리해야 하는 개별 예외를 적절히 처리하지 못할 뿐 아니라 이 지점에서 논리적으로 발생해서는 안되는 예외까지 처리하게 됩니다. 이러한 경우에 개발 및 검수 과정에서 발견되었어야 하는 설계 및 구현 상 결함이 발견되지 못한 채 배포 단계로 넘어가서 더 큰 문제의 원인이 될 수 있습니다.\n해당 코드 구역에서 발생할 수 있는 세부적인 예외들을 명시적으로 나눠서 처리하는 것이 좋습니다. 일반적인 예외를 처리하더라도 예측 가능한 세부적인 예외들을 먼저 처리한 후 마지막에 처리하도록 합니다. 이렇게 작성했을 때 실행 흐름이 일반적인 예외 처리 부분에 도달했다면 개발 과정에서 예측하지 못한 예외가 발생한 것이므로 조용히 넘어가지 않고 상황에 대한 상세한 기록을 남겨서 추후 결함을 수정할 수 있도록 합니다.",
  "rule.sast.sw.objc.1975.example.0.dangerous": "라인 7: NSException 예외를 처리합니다. NSException은 다른 예외 클래스들의 부모 클래스가 되는 일반적인 예외 클래스입니다.",
  "rule.sast.sw.objc.1975.example.0.safe": "라인 7: 특정한 예외를 처리하도록 합니다.",
  "rule.sast.sw.objc.1975.name": "지나치게 일반적인 예외 처리",
  "rule.sast.sw.objc.1977.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.objc.1977.example.0.dangerous": "라인 6: gethostbyaddr() 함수를 사용하여 도메인 이름을 획득했습니다.\n라인 8: 도메인 이름을 사용하여 의사 결정을 하고 있습니다.",
  "rule.sast.sw.objc.1977.example.0.safe": "라인 3: 도메인 이름 대신 IP 주소로 의사 결정을 진행합니다.",
  "rule.sast.sw.objc.1977.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.objc.2824.description": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 코드를 검출합니다.\n중요 정보를 공개된 저장소에 저장할 때 암호화하지 않는 경우 인증 받지 않은 주체에 의해서 데이터 노출, 또는 스니핑이 발생할 수 있습니다.\n중요 정보를 외부 환경 파일에 저장할 때는, 반드시 암호화하여 저장하는 것이 바람직합니다. 또한 SW 설계 시 민감한 데이터와 일반 데이터를 가능한 분리하도록 합니다.",
  "rule.sast.sw.objc.2824.example.0.dangerous": "라인 12: 중요 정보인 password를 노출될 수 있는 영역에 저장하고 있습니다.",
  "rule.sast.sw.objc.2824.example.0.safe": "라인 1: keychain을 사용하여 저장합니다.",
  "rule.sast.sw.objc.2824.name": "민감한 정보를 평문으로 저장",
  "rule.sast.sw.objc.2848.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성할 때 사용되는 외부 입력값에 대해 적절한 검증 절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 됩니다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증 절차를 우회할 수 있습니다. 예를 들어 XQuery 문은 `username='local_user1'` 과 같이 작은 따옴표를 사용하여 username과 비교할 문자열을 구분합니다. 만약 외부에서 비교를 위해 삽입된 문자열에 작은 따옴표가 허용되는 경우 다음과 같은 문자열을 입력할 수 있습니다. `admin' or ''='` 위 문자열을 사용한 쿼리의 조건문은 다음과 같습니다. `username = 'admin' or ''=''`. 여기서 `''=''`은 언제나 true이므로 username 비교 자체를 우회할 수 있습니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "rule.sast.sw.objc.2848.example.0.dangerous": "라인 16: 외부 입력값으로 생성된 XQuery를 사용하여 검증 없이 XML 데이터에 접근하게 됩니다.",
  "rule.sast.sw.objc.2848.example.0.safe": "라인 16: 외부 입력으로 생성된 값의 경우 필터 메소드를 사용하여 위험한 문자열을 제거합니다.",
  "rule.sast.sw.objc.2848.name": "XQuery 삽입",
  "rule.sast.sw.objc.2848.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.2848.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2848.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.objc.2848.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2848.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) XQueryProcessor\\.execute(0)$base",
  "rule.sast.sw.objc.2848.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2848.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.objc.2848.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2849.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\nXPath 쿼리문을 만들 때 외부 입력값을 적절한 검사 과정 없이 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 쿼리문의 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(`, [, ], /, =, @ 등) 및 쿼리 예약어를 필터링합니다.",
  "rule.sast.sw.objc.2849.example.0.dangerous": "라인 13: 외부 입력을 검증 없이 XPath 쿼리를 생성하는 데 사용되었습니다.",
  "rule.sast.sw.objc.2849.example.0.safe": "라인 12: 외부 입력값으로 생성한 쿼리를 적절하게 필터링 한 후 사용하도록 합니다.",
  "rule.sast.sw.objc.2849.name": "XPath 삽입",
  "rule.sast.sw.objc.2849.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.2849.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2849.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.objc.2849.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2849.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) XQueryProcessor\\.execute(0)$base",
  "rule.sast.sw.objc.2849.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2849.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.objc.2849.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2850.description": "LDAP 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 사용하는 경우를 검출합니다.\n웹 애플리케이션에서 신뢰할 수 없는 외부 입력을 검사하지 않고 사용하는 경우 공격자가 LDAP 명령문을 수정하여 부적절한 권한을 부여하고 의도하지 않은 동작을 실행할 수 있습니다. 따라서 신뢰할 수 없는 외부 입력 문자열을 사용하기 전에 검사해야 합니다.\n외부 입력값을 검사 없이 LDAP 쿼리문으로 사용하는 경우, LDAP 쿼리문이 실행될 때 공격자는 LDAP 쿼리문의 내용을 마음대로 변경할 수 있습니다.\n신뢰할 수 없는 외부 입력 문자열을 LDAP 쿼리문이나 결과의 일부로 사용하기 전에 검사해야 합니다.",
  "rule.sast.sw.objc.2850.example.0.dangerous": "라인 81: 외부 입력을 통해 전달된 값이 검증 없이 LDAP 쿼리를 생성하는 데 사용되었습니다.",
  "rule.sast.sw.objc.2850.example.0.safe": "라인 13: 필터 메소드를 사용하여 외부 입력값을 검증합니다.",
  "rule.sast.sw.objc.2850.name": "LDAP 삽입",
  "rule.sast.sw.objc.2850.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.2850.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2850.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.objc.2850.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2850.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) XQueryProcessor\\.execute(0)$base",
  "rule.sast.sw.objc.2850.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2850.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.objc.2850.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2851.description": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.\n개발자들은 흔히 쿠키, 환경 변수 또는 히든 필드와 같은 입력값이 조작될 수 없다고 가정합니다. 하지만 공격자는 다양한 방법을 통해 이러한 입력값들을 변경할 수 있고 조작된 내용은 탐지되지 않을 수 있습니다. 이러한 입력값(쿠키, 환경 변수, 히든 필드 등)에 기반하여 인증이나 인가와 같은 보안 결정을 수행하는 경우 공격자는 해당 값을 조작하여 애플리케이션의 보안을 우회할 수 있으므로 외부 사용자에 의한 입력값을 신뢰해서는 안됩니다.\n상태 정보나 민감한 데이터, 사용자 세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행합니다. 또한 보안 설계 관점에서 신뢰할 수 없는 입력값이 애플리케이션 내부로 들어올 수 있는 지점을 파악해야 하며, 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토해야 합니다.",
  "rule.sast.sw.objc.2851.example.0.dangerous": "라인 25: 평문으로 사용자의 인증 정보를 쿠키에 저장하고 있습니다. 공격자는 쿠키 정보를 변경 가능하기 때문에 위험합니다.",
  "rule.sast.sw.objc.2851.example.0.safe": "라인 14: 사용자의 인증 정보를 세션에 저장하면 인증 정보가 외부에 노출될 위험을 제거할 수 있습니다.",
  "rule.sast.sw.objc.2851.name": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정",
  "rule.sast.sw.objc.2851.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.objc.2851.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2851.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.objc.2851.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2851.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"add_header\")",
  "rule.sast.sw.objc.2851.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2851.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.objc.2851.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2853.description": "민감한 정보의 일반 텍스트 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 경우를 검출합니다.\n사용자 또는 시스템의 중요 정보가 포함된 데이터를 평문으로 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있는 보안약점입니다.\n민감한 정보를 통신 채널을 통하여 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "rule.sast.sw.objc.2853.example.0.dangerous": "라인 17: 네트워크를 통하여 비밀번호를 서버에 전송하고 있습니다. 이 경우에 패킷 스니핑을 통하여 비밀번호가 노출될 수 있습니다.",
  "rule.sast.sw.objc.2853.example.0.safe": "라인 17: 네트워크를 통하여 비밀번호를 서버에 전송하기 전에 암호화하는 것이 바람직합니다.",
  "rule.sast.sw.objc.2853.name": "민감한 정보의 일반 텍스트 전송",
  "rule.sast.sw.objc.2853.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.objc.2853.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2853.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.objc.2853.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2853.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"add_header\")",
  "rule.sast.sw.objc.2853.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2853.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.objc.2853.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2854.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 경우를 검출합니다.\n프로그램의 자동 업데이트와 같은 상황에서 코드에 대한 암호화된 서명을 사용하지 않고 코드를 다운로드하면 위험합니다. 웹 서버에서 실행될 수 있는 위험한 형식의 파일을 원격지로부터 다운로드하여, 코드의 출처나 무결성 검사 없이 클라이언트에서 실행하는 경우 공격자가 의도하는 행위를 수행할 수 있습니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "rule.sast.sw.objc.2854.example.0.dangerous": "라인 18: 무결성 검사 없이 다운로드한 파일을 생성했습니다.",
  "rule.sast.sw.objc.2854.example.0.safe": "라인 9: 다운로드 한 파일은 무결성 검사 후 파일에 쓰도록 합니다.",
  "rule.sast.sw.objc.2854.name": "무결성 검사 없는 코드 다운로드",
  "rule.sast.sw.objc.2854.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.objc.2854.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2854.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.objc.2854.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2854.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"add_header\")",
  "rule.sast.sw.objc.2854.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2854.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.objc.2854.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2855.description": "광범위 경로를 허용하는 쿠키 사용 체커는 최상위 경로로 지정된 쿠키를 사용한 경우를 검출합니다.\n개발자는 흔히 루트 컨텍스트 경로(`/`)에서 접근할 수 있도록 쿠키를 설정합니다. 그러면 도메인의 모든 웹 애플리케이션에 대해 쿠키가 노출됩니다. 쿠키는 흔히 세션 식별자와 같은 민감한 정보를 전하기 때문에 애플리케이션 전반에서 쿠키를 공유하면 한 애플리케이션의 취약점이 다른 애플리케이션을 손상시킬 수 있습니다.\n쿠키의 허용 경로를 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.objc.2855.example.0.dangerous": "라인 17: 쿠키의 허용 경로가 라인 13에서 광범위하게 지정된 속성을 사용해서 쿠키를 생성합니다.",
  "rule.sast.sw.objc.2855.example.0.safe": "라인 13: 쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.objc.2855.name": "광범위 경로를 허용하는 쿠키 사용",
  "rule.sast.sw.objc.2856.description": "광범위 도메인을 허용하는 쿠키 사용 체커는 광범위 도메인을 대상으로 하는 쿠키를 사용하는 경우를 검출합니다.\n개발자는 쿠키를 `.example.com`과 같은 기본 도메인 전반에 걸쳐 활성화되도록 설정하기도 합니다. 이 경우 기본 도메인 및 모든 하위 도메인의 모든 웹 애플리케이션에 쿠키가 노출됩니다. 쿠키는 흔히 세션 식별자와 같은 민감한 정보를 전하기 때문에 애플리케이션 전반에서 쿠키를 공유하면 한 애플리케이션의 취약점이 다른 애플리케이션을 손상시킬 수 있습니다.\n쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.objc.2856.example.0.dangerous": "라인 17: 쿠키의 허용 도메인이 라인 12에서 광범위하게 지정된 속성을 사용해서 쿠키를 생성합니다.",
  "rule.sast.sw.objc.2856.example.0.safe": "라인 12: 쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.objc.2856.name": "광범위 도메인을 허용하는 쿠키 사용",
  "rule.sast.sw.objc.2857.description": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 경우를 검출합니다.\n대부분의 웹 프로그래밍 환경에서는 비지속적으로 쿠키를 생성합니다. 이러한 쿠키는 브라우저 메모리(디스크에 기록되지 않음)에만 상주하며 브라우저가 닫히면 사라집니다. 프로그래머는 미래의 특정 날짜까지 브라우저 세션에 대해 쿠키가 지속되도록 지정할 수 있습니다. 해당 쿠키는 디스크에 기록되고 브라우저 세션 및 장치 재시작에서도 유지됩니다. 지속적인 쿠키는 흔히 사이트와 상호 작용할 때 사용자를 프로필하는 데 사용됩니다. 이 추적 데이터를 사용한 작업에 따라 지속적인 쿠키를 사용한 사용자의 개인 정보 침해가 가능합니다. 개인 정보가 만료 시간이 길게 설정되어 있는 지속적인 쿠키에 저장되는 경우 공격자가 이 데이터를 도용할 수 있는 시간이 충분합니다.\n쿠키의 만료 시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션 ID 등 중요 정보가 포함되지 않도록 설정해야 합니다.",
  "rule.sast.sw.objc.2857.example.0.dangerous": "라인 18: 쿠키의 허용 기간이 라인 16에서 10년으로 설정되었습니다.",
  "rule.sast.sw.objc.2857.example.0.safe": "라인 16: 쿠키의 허용 기간이 라인 20에서 30일으로 설정되었습니다.",
  "rule.sast.sw.objc.2857.name": "민감한 데이터를 지속적인 쿠키에 저장",
  "rule.sast.sw.objc.2858.description": "비어 있는 솔트 체커는 암호화 키의 솔트에 공백이 사용된 경우를 검출합니다.\n빈 솔트를 사용하는 것은 좋은 방법이 아닙니다. 빈 솔트를 사용하면 해싱된 값을 확인하기가 쉬워질 뿐만 아니라 문제를 해결하기가 어려워집니다. 코드가 운영 단계에 들어가면 솔트는 쉽게 변경할 수 없습니다.\n공격자가 값이 빈 솔트로 해싱되었음을 알아차리는 경우 애플리케이션에 대해 `레인보우 테이블`을 계산하고 해싱된 값을 쉽게 파악할 수 있습니다.\n적절한 솔트 값을 사용합니다.",
  "rule.sast.sw.objc.2858.example.0.dangerous": "라인 6: CCHmac() 에서 빈 솔트를 사용했습니다.",
  "rule.sast.sw.objc.2858.example.0.safe": "라인 6: CCHmac() 메소드 호출 시 반드시 솔트를 사용합니다.",
  "rule.sast.sw.objc.2858.name": "비어 있는 솔트",
  "rule.sast.sw.objc.2859.description": "널 솔트 사용 체커는 암호화 키의 솔트에 nil 값이 사용된 경우를 검출합니다.\n널 솔트는 쉽게 해결할 수 없는 방식으로 시스템 보안을 손상시킬 수 있습니다.\n널 솔트를 사용하는 것은 좋은 방법이 아닙니다. 널 솔트를 사용하면 해싱된 값을 확인하기가 쉬워질 뿐만 아니라 문제를 해결하기가 어려워집니다. 코드가 운영 단계에 들어가면 솔트는 쉽게 변경할 수 없습니다. 공격자가 값이 널 솔트로 해싱되었음을 알아차리는 경우 애플리케이션에 대해 `레인보우 테이블`을 계산하고 해싱된 값을 쉽게 파악할 수 있습니다.\n적절한 솔트 값을 사용합니다.",
  "rule.sast.sw.objc.2859.example.0.dangerous": "라인 6: null 솔트를 사용했습니다.",
  "rule.sast.sw.objc.2859.example.0.safe": "라인 6: 솔트 값을 반드시 입력하도록 합니다.",
  "rule.sast.sw.objc.2859.name": "널 솔트 사용",
  "rule.sast.sw.objc.2860.description": "부적절한 난수 생성 체커는 예측 가능한 난수가 사용되는 경우를 검출합니다.\n사용을 금지할 난수 생성 메소드를 옵션으로 지정할 수 있습니다.\n예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하게 됩니다.\n옵션으로 지정된 금지 메소드보다 안전한 방식을 사용하여 난수를 생성합니다.",
  "rule.sast.sw.objc.2860.example.0.dangerous": "라인 10: 취약한 랜덤함수인 rand() 를 사용했습니다.\n라인 10: 취약한 랜덤함수인 random() 을 사용했습니다.",
  "rule.sast.sw.objc.2860.example.0.safe": "라인 10: 안전한 arc4random() 랜덤 함수를 사용합니다.\n라인 12: 안전하고 지정된 수치 이내로 값을 얻을 수 있는 arc4random_uniform() 랜덤 함수를 사용합니다.",
  "rule.sast.sw.objc.2860.name": "부적절한 난수 생성",
  "rule.sast.sw.objc.2893.description": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "rule.sast.sw.objc.2893.example.0.dangerous": "라인 9: 예외 처리 과정에서 시스템 정보를 외부로 출력합니다.",
  "rule.sast.sw.objc.2893.example.0.safe": "라인 9: 시스템 데이터를 외부로 유출하지 않고 최소한의 정보만 출력하도록 합니다.",
  "rule.sast.sw.objc.2893.name": "시스템 정보 노출",
  "rule.sast.sw.objc.2893.option.exception_list.description": "검사할 예외 목록을 입력합니다.",
  "rule.sast.sw.objc.2893.option.exception_list.name": "예외 목록",
  "rule.sast.sw.objc.2894.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n구체적으로는 로그나 디버그와 같은 특정 단어가 포함되어 있는 함수의 호출이 있는 경우를 검출합니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.sw.objc.2894.example.0.dangerous": "라인 4: 디버그 코드가 남아있습니다.",
  "rule.sast.sw.objc.2894.example.0.safe": "라인 4: 디버그 코드를 남겨두지 않도록 합니다.",
  "rule.sast.sw.objc.2894.name": "남은 디버그 코드",
  "rule.sast.sw.objc.2894.option.check_function.description": "디버그 함수의 이름을 작성합니다.",
  "rule.sast.sw.objc.2894.option.check_function.name": "디버그 함수",
  "rule.sast.sw.objc.2896.description": "누락된 로그인 제어 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n구체적으로는 로그인 루틴을 호출하기 전에 루프를 통해 횟수 제한 등의 제어를 수행하는지 여부를 검사합니다. 단, 루프가 존재하더라도 제어 조건이 상수인 경우 오류로 검출합니다.\n공격자는 해당 취약점을 이용하여 무차별 대입 공격으로 로그인에 성공하고 권한을 획득할 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.objc.2896.example.0.dangerous": "라인 4: 로그인 횟수 제한을 수행하고 있지 않습니다.",
  "rule.sast.sw.objc.2896.example.0.safe": "라인 5: 로그인 시도 횟수를 제한합니다.",
  "rule.sast.sw.objc.2896.name": "누락된 로그인 제어",
  "rule.sast.sw.objc.2896.option.authentication_functions.name": "authentication_functions",
  "rule.sast.sw.objc.2896.option.loop_inside_target_function.name": "loop_inside_target_function",
  "rule.sast.sw.objc.2896.option.target_function_inside_loop.name": "target_function_inside_loop",
  "rule.sast.sw.objc.2897.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하거나 같은 문자를 연속으로 여러 개 사용하지 않도록 설정할 수 있습니다. 한국인터넷진흥원 \"암호사용안내서\"의 비밀번호 설정 규칙을 참고할 수 있습니다.",
  "rule.sast.sw.objc.2897.example.0.dangerous": "라인 19: 비밀번호에 대한 검증을 수행하지 않았습니다.",
  "rule.sast.sw.objc.2897.example.0.safe": "라인 18: 비밀번호에 대한 길이 제한 등의 강한 유효성 검증을 수행하는 필터 함수를 사용하도록 합니다.",
  "rule.sast.sw.objc.2897.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.objc.2897.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) strlen$param(1)",
  "rule.sast.sw.objc.2897.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2897.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.objc.2897.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2897.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) mysql_query$param(*)",
  "rule.sast.sw.objc.2897.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2897.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"$_GET[\\\"password\\\"]\")",
  "rule.sast.sw.objc.2897.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2898.description": "누락된 인증 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.\n호출이 필요한 인증 제어 루틴의 이름과 제어 루틴을 호출해야 하는 페이지의 이름은 옵션으로 입력할 수 있습니다.\n인증 제어 루틴을 호출하지 않으면 허용되지 않은 사용자가 권한을 획득할 수 있습니다.\n반드시 인증 제어 루틴을 적절한 위치에서 호출해야 합니다.",
  "rule.sast.sw.objc.2898.example.0.dangerous": "라인 18: 인증 제어 루틴 호출 없이 사용자 정보를 수정했습니다.",
  "rule.sast.sw.objc.2898.example.0.safe": "라인 19: 사용자를 검증한 후 사용자 정보를 수정하도록 합니다.",
  "rule.sast.sw.objc.2898.name": "누락된 인증",
  "rule.sast.sw.objc.2898.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) strlen$param(1)",
  "rule.sast.sw.objc.2898.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2898.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.objc.2898.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2898.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) mysql_query$param(*)",
  "rule.sast.sw.objc.2898.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2898.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"$_GET[\\\"password\\\"]\")",
  "rule.sast.sw.objc.2898.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2899.description": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.\nHTTP 요청에 들어 있는 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(Carriage Return) 이나 LF(Line Feed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 사용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손(Cache Poisoning) 공격 등을 수행할 수 있습니다.\n요청 매개 변수의 값을 http 응답 헤더(예, Set-Cookie 등)에 포함시킬 경우 CR, LF와 같은 개행문자를 제거해야 합니다.",
  "rule.sast.sw.objc.2899.example.0.dangerous": "라인 27: 오염된 값을 쿠키에 포함시켰습니다.",
  "rule.sast.sw.objc.2899.example.0.safe": "라인 25: 오염된 값을 적절하게 필터링 한 뒤 쿠키에 포함시키도록 합니다.",
  "rule.sast.sw.objc.2899.name": "HTTP 응답 분할",
  "rule.sast.sw.objc.2899.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.2899.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2899.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.objc.2899.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2899.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) setcookie$param(2)",
  "rule.sast.sw.objc.2899.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2899.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.objc.2899.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2900.description": "정수 오버플로우 체커는 정수 연산의 결과가 해당 타입의 정수에 허용되는 범위를 넘어서는 코드를 검출합니다.\n정수형 변수가 표현할 수 있는 정수의 범위를 초과하게 될 경우 오버플로우가 발생하여 음수 또는 예상하지 못한 결과값을 얻을 수 있습니다. 예상하지 못한 결과값을 사용하여 메모리를 할당하거나 반복문의 조건을 작성하는 경우 보안 취약점이 발생합니다.\n언어 및 플랫폼에 따라 정수형의 범위를 확인하고 사용하도록 합니다. 정수형 변수를 연산에 사용하는 경우 먼저 결과값의 범위를 확인하도록 합니다. 외부 입력값을 동적 메모리 할당에 사용하는 경우 변수가 적절한 범위 내에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.objc.2900.example.0.dangerous": "라인 14: 외부에서 입력된 값을 조건 검사 없이 연산에 사용하고 있습니다. 이로 인해 정수 오버플로우가 발생할 수 있습니다.",
  "rule.sast.sw.objc.2900.example.0.safe": "라인 12: 외부에서 입력값은 값의 범위를 검사한 뒤 연산에 사용하도록 합니다.",
  "rule.sast.sw.objc.2900.name": "정수 오버플로우",
  "rule.sast.sw.objc.2900.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.2900.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.2900.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.objc.2900.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.2900.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) setcookie$param(2)",
  "rule.sast.sw.objc.2900.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.2900.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.objc.2900.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.2969.description": "부적절한 XML 외부 엔터티 참조 체커는 XML 파싱 라이브러리를 사용하면서 외부 엔터티를 사용하도록 허용하는 코드를 검출합니다.\n구체적으로는 외부 엔터티를 사용하도록 허용하는 함수를 호출하거나 해당 함수의 인자 값을 사용하는 경우를 가리킵니다. NSXMLParser 파서 객체의 shouldResolveExternalEntities 값을 true로 설정한 경우 외부 엔터티를 사용하도록 허용하게 됩니다.\nXML 라이브러리를 사용하는 동시에 외부 엔터티를 사용하도록 허용하는 경우 공격자가 권한이 없는 파일이나 보안 상 중요한 파일에 접근할 수 있게 됩니다. 이와 같이 외부 엔터티에 접근할 경우 SSRF(Server Side Request Forgery) 와 같은 취약점이 발생할 수 있습니다.\n따라서 외부 엔터티를 사용하도록 허용하는 함수를 호출하거나 해당 함수의 인자 값을 사용하지 않도록 합니다.",
  "rule.sast.sw.objc.2969.example.0.dangerous": "라인 6: NSXMLParser 파서 객체의 shouldResolveExternalEntities 값을 YES로 설정했습니다. XXE 공격에 취약해집니다.",
  "rule.sast.sw.objc.2969.example.0.safe": "라인 5: NSXMLParser 파서 객체의 shouldResolveExternalEntities값을 NO로 설정하도록 합니다.",
  "rule.sast.sw.objc.2969.name": "부적절한 XML 외부 엔터티 참조",
  "rule.sast.sw.objc.2970.description": "취약한 서버 인증서 검증 체커는 인증서를 적절하게 검증하지 않는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다. 만약 서버 인증서 검증이 적절하게 이루어지지 않으면 보안 상 문제가 발생할 수 있습니다.\n라이브러리에서 제공하는 기본적인 인증서 유효성 검사 기능이 동작할 수 있도록 인증서 검증 함수에 적절한 인자 값을 사용하도록 합니다.",
  "rule.sast.sw.objc.2970.example.0.dangerous": "라인 7: SSL_CTX_set_verify() 함수를 호출할 때 SSL_VERIFY_NONE 을 두 번째 인자로 사용했습니다. 따라서 제대로 인증서 검증이 이루어지지 않았습니다.",
  "rule.sast.sw.objc.2970.example.0.safe": "라인 7: 두 번째 인자값을 SSL_VERIFY_PEER 로 설정하도록 합니다.",
  "rule.sast.sw.objc.2970.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.objc.2971.description": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 프로토콜을 사용하는 코드를 검출합니다.\n객체를 직렬화하여 저장하거나 전송하고, 필요한 경우 다시 역직렬화하여 사용함으로써 객체의 상태를 유지할 수 있습니다. 하지만 신뢰할 수 없는 데이터를 별도의 보호하지 않고 바로 역직렬화하는 경우 객체 치환 공격(Object Substitution Attack)에 의한 취약점이 발생할 수 있습니다.\nNSSecureCoding과 같이 안전한 직렬화 프로토콜을 사용하도록 합니다.",
  "rule.sast.sw.objc.2971.example.0.dangerous": "라인 3: 보안에 취약한 직렬화 프로토콜인 NSCoding을 사용했습니다.",
  "rule.sast.sw.objc.2971.example.0.safe": "라인 3: 객체 치환 공격(Object Substitution Attack)을 방어할 수 있는 NSSecureCoding 프로토콜을 사용하도록 합니다.",
  "rule.sast.sw.objc.2971.name": "신뢰할 수 없는 데이터의 역직렬화",
  "rule.sast.sw.objc.901.description": "임시 혹은 공개 디렉토리에 파일 출력 체커는 임의의 사용자가 접근 가능한 디렉토리에 임시 파일을 생성하는 코드를 검출합니다.\n임시 디렉토리나 공개 디렉토리에 임시 파일을 생성하는 경우 공격자가 해당 파일의 내용을 조작하여 프로그램에 오동작을 일으킬 수 있습니다.\n권한이 있는 사용자만 접근할 수 있는 위치에 임시 파일을 생성하고 정보를 저장하는 것이 안전합니다.",
  "rule.sast.sw.objc.901.example.0.dangerous": "라인 3: 임시 디렉토리에 있는 파일을 지정합니다.\n라인 4: 임시 디렉토리에 파일을 생성하여 사용하여 취약합니다.",
  "rule.sast.sw.objc.901.example.0.safe": "라인 3: 권한이 있는 사용자만 접근할 수 있는 디렉토리에 파일을 지정합니다.\n라인 5: 권한이 있는 사용자만 접근할 수 있는 디렉토리에 파일을 생성하여 사용하여 안전합니다.",
  "rule.sast.sw.objc.901.name": "임시 혹은 공개 디렉토리에 파일 출력",
  "rule.sast.sw.objc.901.option.temporary_directory.description": "임시 혹은 공개 디렉토리의 이름을 작성합니다.<br />예시) /var/tmp/.*",
  "rule.sast.sw.objc.901.option.temporary_directory.name": "임시 혹은 공개 디렉토리",
  "rule.sast.sw.objc.902.description": "취약한 SSL 인증서 체커는 취약한 SSL인증서를 허용하는 곳을 검출합니다.\nNSURLRequest 클래스의 allowsAnyHTTPSCertificateForHost 메소드에서 참 값을 반환하여 자체 서명 인증서를 허용하는 경우 발생하는 취약점을 검출합니다.\n자체 서명 인증서를 허용하는 경우 중간자 공격(Man in the middle attack, MITM)에 노출될 수 있습니다.\nallowAnyHTTPSCertificateForHost() 메소드에서 자체 서명 인증서를 허용하지 않도록 합니다.",
  "rule.sast.sw.objc.902.example.0.dangerous": "라인 5: allowAnyHTTPSCertificateFroHost 메소드에서 YES를 반환하여 자체 서명 인증서를 허용하여 취약합니다.",
  "rule.sast.sw.objc.902.example.0.safe": "라인 4: allowAnyHTTPSCertificateFroHost 메소드에서 NO를 반환하여 안전합니다.",
  "rule.sast.sw.objc.902.name": "취약한 SSL 인증서",
  "rule.sast.sw.objc.903.description": "GET 방식으로 전송 체커는 HTTP 통신시 GET 방식을 사용할 경우를 검출합니다.\n특히 NSURLRequest는 기본적으로 GET 방식으로 HTTP 전송을 수행하기 때문에 주의하여 사용해야 합니다.\nGET 방식을 통한 전송은 URL과 전달된 매개 변수가 브라우저를 통해 표시되기 때문에 조작 가능성이 존재합니다.\nGET방식보다 안전한 POST 방식으로 전송을 수행할 것을 권장합니다.",
  "rule.sast.sw.objc.903.example.0.dangerous": "라인 5: HTTP GET 방식으로 전송을 수행하여 취약합니다.",
  "rule.sast.sw.objc.903.example.0.safe": "라인 5: HTTP POST 방식으로 전송을 수행하여 더 안전합니다.",
  "rule.sast.sw.objc.903.name": "GET 방식으로 전송",
  "rule.sast.sw.objc.904.description": "HTTP 프로토콜을 통한 전송 체커는 HTTP 통신을 수행하는 경우를 검출합니다.\nHTTP 프로토콜을 통해 전송을 수행하는 경우 전송데이터가 암호화되지 않아 패킷감청에 의해서 데이터가 노출될 수 있습니다.\n보다 안전한 전송을 위해서 HTTP 프로토콜 대신 HTTPS 프로토콜을 사용할 것을 권장합니다.",
  "rule.sast.sw.objc.904.example.0.dangerous": "라인 2: http 통신 주소를 지정합니다.\n라인 4: http 통신 주소를 지정한 URL로 HTTP 통신을 수행하여 취약합니다.",
  "rule.sast.sw.objc.904.example.0.safe": "라인 2: https 통신 주소를 지정합니다.\n라인 4: https 통신 주소를 지정한 URL로 HTTPS 통신을 수행하여 더 안전합니다.",
  "rule.sast.sw.objc.904.name": "HTTP 프로토콜을 통한 전송",
  "rule.sast.sw.objc.905.description": "빈 비밀번호 체커는 비어 있는 비밀번호를 사용하는 코드를 검출합니다.\n비밀번호로 빈 문자열을 사용하는 경우에 검출됩니다.\n빈 문자열을 비밀번호로 사용하는 경우, 비밀번호를 쉽게 추정할 수 있어서 위험합니다.\n비밀번호는 비어 있지 않은 문자열로 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.",
  "rule.sast.sw.objc.905.example.0.dangerous": "라인 2: 빈 문자열로 비밀번호를 사용했습니다.\n라인 4: 빈 문자열 비밀번호로 DB에 접속하여 위험합니다.",
  "rule.sast.sw.objc.905.example.0.safe": "라인 2: 비어 있지 않은 문자열을 비밀번호로 사용합니다.\n라인 4: 비어 있지 않은 문자열을 비밀번호로 DB에 접속하여 더 안전합니다.",
  "rule.sast.sw.objc.905.name": "빈 비밀번호",
  "rule.sast.sw.objc.906.description": "하드코드된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.\n프로그램 코드 내부에 하드코딩된 비밀번호를 포함하고 이를 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 관리자 정보가 노출될 수 있으므로 위험합니다.\n비밀번호는 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.",
  "rule.sast.sw.objc.906.example.0.dangerous": "라인 2: 하드코딩된 비밀번호를 사용했습니다.\n라인 4: 하드코딩된 비밀번호로 DB에 접속하여 위험합니다.",
  "rule.sast.sw.objc.906.example.0.safe": "라인 2: 별도의 메소드로 하드코딩되어 있지 않은 비밀번호를 가져옵니다.\n라인 4: 하드코딩되지 않은 비밀번호로 DB에 접속하여 안전합니다.",
  "rule.sast.sw.objc.906.name": "하드코드된 비밀번호",
  "rule.sast.sw.objc.907.description": "SMS 전송 API 사용 체커는 SMS 전송 API를 사용하는 경우를 검출합니다.\n악성 프로그램 등이 해당 API를 악용하여 사용자에게서 돈이나 정보를 훔칠 수 있는 SMS를 전송할 수 있으므로 사용하지 않는 것이 좋습니다.\nSMS 전송 API를 사용하지 않습니다.",
  "rule.sast.sw.objc.907.example.0.dangerous": "라인 3: SMS 전송 API를 사용하여 위험할 수 있습니다.",
  "rule.sast.sw.objc.907.example.0.safe": "라인 1: SMS 전송 API를 사용하지 않습니다.",
  "rule.sast.sw.objc.907.name": "SMS 전송 API 사용",
  "rule.sast.sw.objc.908.description": "하드코드된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역산하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코딩하여 코드를 작성할 수도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코딩하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "rule.sast.sw.objc.908.example.0.dangerous": "라인 1: 하드코딩된 암호화 키를 사용했습니다.\n라인 2: 하드코딩된 암호화 키를 사용하여 암호화하므로 위험합니다.",
  "rule.sast.sw.objc.908.example.0.safe": "라인 1: 안전한 곳에서 암호화 키를 가져옵니다.\n라인 2: 안전한 곳에서 가져온 암호화 키를 사용하여 안전합니다.",
  "rule.sast.sw.objc.908.name": "하드코드된 암호화 키",
  "rule.sast.sw.objc.909.description": "취약한 해시 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.\nMD5와 같이 보안에 취약한 해시 함수를 사용하는 경우를 검출합니다.\n표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 해시 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다. MD5와 같은 오래된 알고리즘의 경우에는 레인보우 테이블과 같은 방법으로 간단히 해시를 무력화할 수 있습니다.\n자신만의 해시 알고리즘을 개발하는 것은 위험합니다. 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 MD5, SHA-1 등의 알고리즘 대신 SHA-256, SHA-512 등의 안전한 알고리즘을 사용합니다. 또한 예측 불가능한 솔트를 함께 사용하여 공격을 어렵게 만들어야 합니다.",
  "rule.sast.sw.objc.909.example.0.dangerous": "라인 3: 안전하지 않은 MD5 해시 알고리즘을 사용하여 위험합니다.",
  "rule.sast.sw.objc.909.example.0.safe": "라인 3: 안전하다고 알려진 SHA1 해시 알고리즘을 사용하여 더 안전합니다.",
  "rule.sast.sw.objc.909.name": "취약한 해시",
  "rule.sast.sw.objc.909.option.weak_hash_function.description": "취약한 해시 함수 이름을 입력합니다.\n예시) CC_MD5",
  "rule.sast.sw.objc.909.option.weak_hash_function.name": "취약한 해시 함수",
  "rule.sast.sw.objc.910.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 사용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.objc.910.example.0.dangerous": "라인 2: 최소 필요 키 길이가 128이어야 하는데 64로 설정되어 있습니다.",
  "rule.sast.sw.objc.910.example.0.safe": "라인 2: 키 길이가 128로 설정되어 안전합니다.",
  "rule.sast.sw.objc.910.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.objc.910.option.min_key_size.description": "암호화에 필요한 최소 키 길이를 입력합니다.<br />예시) 128",
  "rule.sast.sw.objc.910.option.min_key_size.name": "최소 필요 키 길이",
  "rule.sast.sw.objc.911.description": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.\nDES, RC2, RC4, RC5 와 같은 알고리즘들은 더 이상 안전하지 않습니다.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 암호화 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.objc.911.example.0.dangerous": "라인 2: DES 알고리즘을 사용했습니다.",
  "rule.sast.sw.objc.911.example.0.safe": "라인 2: 안전한 AES 암호화 알고리즘을 사용합니다.",
  "rule.sast.sw.objc.911.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.objc.911.option.risky_algorithm.description": "취약한 암호화 알고리즘 이름을 입력합니다.<br />예시) kCCAlgorithmDES",
  "rule.sast.sw.objc.911.option.risky_algorithm.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.objc.972.description": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 코드를 검출합니다.\n외부 입력이 검증되지 않은 채로 포맷 스트링으로 사용되는 경우, 공격자가 포맷 스트링을 조작하여 버퍼 오버플로우 등의 공격을 수행할 수 있습니다.옵션을 통해 외부 정보 입력 함수, 사용 함수, 전파 함수 및 필터 함수를 작성할 수 있습니다.\nstringWithFormat()과 같은 포맷 스트링을 사용하는 메소드를 사용할 때는 사용자 입력값을 직접적으로 포맷 스트링으로 사용하거나 포맷 스트링 생성에 포함시키지 않도록 합니다. 사용자 입력값을 포맷 스트링을 사용하는 함수에 사용할 때는 가능하면 %s 포맷 스트링을 지정하고, 사용자 입력값은 2번째 이후의 매개변수로 사용합니다.",
  "rule.sast.sw.objc.972.example.0.dangerous": "라인 3: 포맷 스트링에 해당하는 첫 번째 인자에 외부 입력인 argv[1]이 확인 없이 전달되었습니다.",
  "rule.sast.sw.objc.972.example.0.safe": "라인 3: 필터 함수 등을 통해 안전한 포맷 스트링만 사용하도록 합니다.",
  "rule.sast.sw.objc.972.name": "포맷 스트링 삽입",
  "rule.sast.sw.objc.972.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.972.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.972.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.objc.972.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.objc.972.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.objc.972.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.972.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) printf$param(1)",
  "rule.sast.sw.objc.972.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.972.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.objc.972.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.973.description": "로그 삽입 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.\n사용자 입력을 검증 없이 그대로 로그에 출력하면 로그 내용에 공격자가 임의의 내용을 삽입하여 로그를 확인하는 보안 담당자 등을 헷갈리게 만들 수 있습니다. 이렇게 조작된 로그를 통해 잘못된 의사 결정이 이루어지면 그 결과를 공격에 활용할 수 있습니다.\n로그에 출력하기 전에 외부 입력값을 검사합니다. 특히 줄 바꿈 문자는 제거하는 것이 좋습니다.",
  "rule.sast.sw.objc.973.example.0.dangerous": "라인 3: 검증되지 않은 외부 입력이 로그에 직접 기록됩니다.",
  "rule.sast.sw.objc.973.example.0.safe": "라인 3: 필터 함수 등을 통해 안전한 로그 내용만 사용되도록 합니다.",
  "rule.sast.sw.objc.973.name": "로그 삽입",
  "rule.sast.sw.objc.973.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.973.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.973.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.objc.973.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.objc.973.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.objc.973.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.973.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) printf$param(1)",
  "rule.sast.sw.objc.973.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.973.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.objc.973.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.974.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자(`, /, \\, .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.objc.974.example.0.dangerous": "라인 4: 검증되지 않은 외부 입력이 경로 생성에 사용되었습니다.",
  "rule.sast.sw.objc.974.example.0.safe": "라인 5: 외부 입력값을 적절하게 필터링한 후에 사용하도록 합니다.",
  "rule.sast.sw.objc.974.name": "경로 조작",
  "rule.sast.sw.objc.974.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.974.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.974.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.objc.974.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.objc.974.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.objc.974.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.974.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) NSFileManager.contentsAtPath:$param(1)",
  "rule.sast.sw.objc.974.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.974.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.objc.974.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.975.description": "자원 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스(resource) 식별자를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 대한 접근 혹은 식별을 허용할 경우에 입력값 조작을 통해 시스템이 보호하는 리소스에 임의로 접근할 수 있습니다. 리소스 삽입 약점을 사용하여 공격자는 리소스의 수정/삭제, 시스템 정보 누출, 시스템 리소스 간 충돌로 인한 서비스 장애 등을 발생시킬 수 있습니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 목록에서 선택하도록 합니다.",
  "rule.sast.sw.objc.975.example.0.dangerous": "라인 5: 외부 입력값을 리소스를 획득하는데 직접 사용했습니다.",
  "rule.sast.sw.objc.975.example.0.safe": "라인 5: 필터 함수 등을 통해 안전한 입력을 통해서만 리소스를 획득하도록 합니다.",
  "rule.sast.sw.objc.975.name": "자원 삽입",
  "rule.sast.sw.objc.975.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.975.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.975.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.objc.975.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.objc.975.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.objc.975.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.975.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) CFStreamCreatePairWithSocketToHost$param(2)",
  "rule.sast.sw.objc.975.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.975.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.objc.975.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.976.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n데이터베이스(DB)와 연동된 애플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.objc.976.example.0.dangerous": "라인 3: 외부 입력을 그대로 SQL 쿼리 문자열에 사용했습니다.",
  "rule.sast.sw.objc.976.example.0.safe": "라인 3: 필터 함수 등을 통해 안전한 SQL 쿼리 문자열만 사용하도록 합니다.",
  "rule.sast.sw.objc.976.name": "SQL 삽입",
  "rule.sast.sw.objc.976.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.976.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.976.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.objc.976.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.objc.976.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.objc.976.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.976.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) sqlite3_exec$param(2)",
  "rule.sast.sw.objc.976.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.976.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.objc.976.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.objc.977.description": "안전하지 않은 리플렉션 체커는 검증되지 않은 외부 입력을 리플렉션의 인자로 사용하는 경우를 검출합니다.\n리플렉션은 문자열을 소스 코드상의 이름으로 취급하여 클래스, 함수, 변수 등에 접근하는 방식입니다. performSelector() 메소드가 리플렉션에 사용됩니다.\n검증되지 않은 외부 입력을 사용하여 리플렉션을 사용하는 경우, 의도하지 않은 실행 경로로 프로그램이 실행될 수 있으며 공격자가 악의적으로 보안 검사 등을 우회할 수 있습니다.\n리플렉션을 사용하는 코드가 프로그램 설계에 꼭 필요한지 한 번 더 확인하고 가능하다면 같은 동작을 일반적인 코드를 사용한 다른 방법으로 구현합니다. 리플렉션이 꼭 필요한 경우는 실행 환경 등에 따라 호출 가능한 함수 혹은 메소드가 전혀 달라져서 일반적인 호출을 사용하면 런타임 오류가 발생하는 경우 등으로 제한됩니다. 종종 리플렉션은 단지 코드 작성자의 사소한 귀찮음을 회피하려는 의도로 사용되기도 하므로 꼭 필요한 사용이 맞는지 한 번 더 확인해야 합니다. 리플렉션 사용이 불가피하다면, 외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.objc.977.example.0.dangerous": "라인 6: [performSelecter] 메시지의 인자로 검증되지 않은 외부 입력 query를 사용했습니다.",
  "rule.sast.sw.objc.977.example.0.safe": "라인 6: 필터 함수 등을 통해 안전한 문자열로만 리플렉션을 사용합니다.",
  "rule.sast.sw.objc.977.name": "안전하지 않은 리플렉션",
  "rule.sast.sw.objc.977.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.objc.977.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.objc.977.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.objc.977.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.objc.977.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.performSelector:$param(*)",
  "rule.sast.sw.objc.977.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.objc.977.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.objc.977.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1000.description": "헤더 조작 체커는 검증되지 않은 외부 입력이 HTTP 응답 헤더에 포함되는 경우를 검출합니다.\n많은 소프트웨어 보안 취약점과 마찬가지로 헤더 조작은 목적의 수단일 뿐 목적 자체는 될 수 없습니다. 이 취약점은 본질적으로 간단 명료합니다. 공격자가 악성 데이터를 취약한 애플리케이션에 전달하고 애플리케이션은 HTTP 응답 헤더에 데이터를 포함합니다. 현대의 많은 애플리케이션 서버는 악성 문자가 HTTP 헤더에 삽입되는 것을 방지합니다. 예를 들어, Apache Tomcat의 최신 버전은 금지된 문자로 헤더를 설정할 경우 IllegalArgumentException을 발생시킵니다. HTTP 헤더에 검증되지 않은 외부 입력을 포함시키면 이를 공격자는 캐시 감염, 크로스 사이트 스크립트, HTTP 응답 분할, 세션 고정, 교차 사용자 변조, 페이지 하이재킹, 쿠키 조작, 신뢰할 수 없는 주소로 자동 연결 등 다양한 공격의 통로로 활용할 수 있습니다. 새 줄 문자를 필터링하면 HTTP 응답 분할은 방지할 수 있지만 다른 취약점에 대해서는 여전히 안전하지 않습니다.\n외부 입력을 헤더에 포함시킬 때는 충분한 필터를 거친 안전한 값만 전달합니다.",
  "rule.sast.sw.php.1000.example.0.dangerous": "라인 3: 안전하지 않은 $_GET['id'] 값이 header() 함수에 사용됩니다.",
  "rule.sast.sw.php.1000.example.0.safe": "라인 3: 안전하지 않은 값을 header() 함수로 전달하지 않거나 필터링을 거친 안전한 값만을 사용합니다.",
  "rule.sast.sw.php.1000.name": "헤더 조작",
  "rule.sast.sw.php.1000.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.\n예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1000.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1000.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1000.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1000.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1000.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1000.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"header\")",
  "rule.sast.sw.php.1000.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1000.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1000.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1001.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\nsystem(), popen() 등을 사용해 커맨드를 실행하는 경우를 검출합니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다. 또한 외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다.",
  "rule.sast.sw.php.1001.example.0.dangerous": "라인 3: 안전하지 않은 $_GET['value'] 값이 시스템 명령어를 실행하는 system() 함수에 사용됩니다.",
  "rule.sast.sw.php.1001.example.0.safe": "라인 3: 필터 함수 등을 통해 안전한 값만 시스템 명령어 실행 인수로 사용되도록 합니다.",
  "rule.sast.sw.php.1001.name": "명령어 삽입",
  "rule.sast.sw.php.1001.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1001.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1001.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1001.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1001.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1001.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1001.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"exec\")",
  "rule.sast.sw.php.1001.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1001.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) param(*) of name(\"main\")",
  "rule.sast.sw.php.1001.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1002.description": "원격 코드 실행 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.\n프로그램 실행 중 eval() 함수에 전달되는 문자열은 그 시점에 코드로 해석되어 직접 실행됩니다.\n검증되지 않은 외부 입력이 동적으로 실행되는 코드에 사용될 경우 공격자가 원하는 임의의 작업을 수행할 수 있습니다.\n동적으로 계산되는 코드가 프로그램 설계에 꼭 필요한지 한 번 더 확인하고 가능하다면 같은 동작을 정적 코드를 사용한 다른 방법으로 구현합니다. 대부분의 평범한 프로그램의 동작은 동적으로 계산되는 코드 없이도 구현이 가능하며, 많은 경우에 동적 코드는 단지 코드 작성자의 사소한 귀찮음을 회피하려는 의도로 사용됩니다. 동적 코드 사용이 불가피하다면, 외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.php.1002.example.0.dangerous": "라인 3: 동적 코드를 수행하는 eval() 함수를 사용했습니다.",
  "rule.sast.sw.php.1002.example.0.safe": "라인 3: eval() 함수는 사용하지 않는 것을 권장합니다.",
  "rule.sast.sw.php.1002.name": "원격 코드 실행",
  "rule.sast.sw.php.1002.option.check_dynamic_include.description": "옵션을 사용하는 경우, 동적 인클루드 구문을 검출합니다.",
  "rule.sast.sw.php.1002.option.check_dynamic_include.name": "동적 인클루드 검출 여부",
  "rule.sast.sw.php.1002.option.forbidden_function.description": "금지할 외부 코드 살행 함수의 이름을 작성합니다.<br />예시) popen",
  "rule.sast.sw.php.1002.option.forbidden_function.name": "금지할 외부 코드 실행 함수",
  "rule.sast.sw.php.1002.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(1) of name(\"in_array\")",
  "rule.sast.sw.php.1002.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1002.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1002.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1002.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1002.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1002.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"eval\")",
  "rule.sast.sw.php.1002.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1002.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1002.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1003.description": "기본 경로로 설정된 쿠키 체커는 쿠키 설정 시 경로가 기본 경로(`/`)로 설정된 경우를 검출합니다.\n동일한 쿠키 경로를 사용하는 다른 애플리케이션에서 세션 쿠키에 접근할 수 있습니다.\n쿠키의 기본 경로 대신 세부 경로로 설정합니다.",
  "rule.sast.sw.php.1003.example.0.dangerous": "라인 1: 쿠키 경로가 기본 경로로 설정됩니다.",
  "rule.sast.sw.php.1003.example.0.safe": "라인 3: 쿠키 경로를 기본 경로로 설정하지 않도록 합니다.",
  "rule.sast.sw.php.1003.name": "기본 경로로 설정된 쿠키",
  "rule.sast.sw.php.1003.option.check_function_params.description": "검사할 함수명과 파라미터의 위치를 작성합니다.",
  "rule.sast.sw.php.1003.option.check_function_params.name": "함수명과 파라미터 위치",
  "rule.sast.sw.php.1004.description": "취약한 해시 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.\n표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 해시 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다. MD5와 같은 오래된 알고리즘의 경우에는 레인보우 테이블과 같은 방법으로 간단히 해시를 무력화할 수 있습니다.\n자신만의 해시 알고리즘을 개발하는 것은 위험합니다. 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 MD5, SHA-1 등의 알고리즘 대신 SHA-256, SHA-512 등의 안전한 알고리즘을 사용합니다. 또한 예측 불가능한 솔트를 함께 사용하여 공격을 어렵게 만들어야 합니다.",
  "rule.sast.sw.php.1004.example.0.dangerous": "라인 3: 안전하지 않은 MD5 해시를 사용했습니다.",
  "rule.sast.sw.php.1004.example.0.safe": "라인 3: 비교적 안전한 SHA256 등의 해시를 사용합니다.",
  "rule.sast.sw.php.1004.name": "취약한 해시",
  "rule.sast.sw.php.1004.option.ignore_hash_function_paramcall.description": "예외로 지정하고싶은 함수의 이름을 지정합니다<br />예시) mt_rand",
  "rule.sast.sw.php.1004.option.ignore_hash_function_paramcall.name": "해시 함수 내부에서 특정 함수 호출 시 예외",
  "rule.sast.sw.php.1004.option.weak_hash_function.description": "취약한 해시 함수의 이름을 작성합니다.\n예시) md5",
  "rule.sast.sw.php.1004.option.weak_hash_function.name": "취약한 해시 함수",
  "rule.sast.sw.php.1663.description": "제한되지 않은 파일 업로드 체커는 파일의 종류와 크기를 검사하지 않은 채 파일을 업로드 받는 코드를 검출합니다.\n$_FILE 환경 변수에서 얻어온 (업로드할) 파일을 서버에 업로드하기 전에 검사해야 합니다.\n서버 측에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드되어 해당 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부 명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있습니다.\n화이트리스트 방식으로 허용된 확장자만 업로드하도록 허용합니다. 업로드되는 파일을 저장할 때에는 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장합니다.",
  "rule.sast.sw.php.1663.example.0.dangerous": "라인 33: 업로드 할 파일에 대해 몇가지 확인을 하지만 파일의 확장자 검사가 누락되었습니다.",
  "rule.sast.sw.php.1663.example.0.safe": "라인 27: 업로드할 파일의 확장자를 검사하여 유효한 확장자(jpg, gif 파일 등)에 대해서만 업로드를 수행하고 있습니다.",
  "rule.sast.sw.php.1663.name": "제한되지 않은 파일 업로드",
  "rule.sast.sw.php.1663.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(1) of name(\"endsWith\")",
  "rule.sast.sw.php.1663.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1663.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1663.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1663.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1663.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1663.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of name(\"move_uploaded_file\")",
  "rule.sast.sw.php.1663.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1663.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_FILES\")",
  "rule.sast.sw.php.1663.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1664.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.php.1664.example.0.dangerous": "라인 5: 신뢰되지 않은 주소 $id로 자동접속 연결을 수행하고 있습니다.",
  "rule.sast.sw.php.1664.example.0.safe": "라인 6: 안전한 주소를 화이트리스트 방식으로 얻어와서 자동 접속 연결을 수행하도록 합니다.",
  "rule.sast.sw.php.1664.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.php.1664.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1664.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1664.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1664.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1664.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1664.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1664.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"header\")",
  "rule.sast.sw.php.1664.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1664.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1664.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1665.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성할 때 사용되는 외부 입력값에 대해 적절한 검증 절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 됩니다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증 절차를 우회할 수 있습니다. 예를 들어 XQuery 문은 `username='local_user1'` 과 같이 작은 따옴표를 사용하여 username과 비교할 문자열을 구분합니다. 만약 외부에서 비교를 위해 삽입된 문자열에 작은 따옴표가 허용되는 경우 다음과 같은 문자열을 입력할 수 있습니다. `admin' or ''='` 위 문자열을 사용한 쿼리의 조건문은 다음과 같습니다. `username = 'admin' or ''=''`. 여기서 `''=''`은 언제나 true이므로 username 비교 자체를 우회할 수 있습니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "rule.sast.sw.php.1665.example.0.dangerous": "라인 6: 외부의 신뢰할 수 없는 입력이 XQuery 쿼리문 문자열을 생성하는데 사용됩니다.",
  "rule.sast.sw.php.1665.example.0.safe": "라인 9: 필터를 사용하여 안전한 XQuery 쿼리문만 사용하도록 합니다.",
  "rule.sast.sw.php.1665.name": "XQuery 삽입",
  "rule.sast.sw.php.1665.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1665.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1665.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1665.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1665.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1665.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1665.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of fqn(\"XQueryProcessor.execute(0)\")",
  "rule.sast.sw.php.1665.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1665.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1665.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1666.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\n외부 입력값을 적절한 검사 과정 없이 XPath 쿼리문 생성을 위한 문자열로 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(`, [, ], /, =, @ 등) 및 쿼리 예약어를 필터링합니다.",
  "rule.sast.sw.php.1666.example.0.dangerous": "라인 3: 외부의 신뢰할 수 없는 입력을 XPath 쿼리문으로 사용했습니다.",
  "rule.sast.sw.php.1666.example.0.safe": "라인 3: 안전한 XPath 쿼리문만 사용합니다.",
  "rule.sast.sw.php.1666.name": "XPath 삽입",
  "rule.sast.sw.php.1666.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1666.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1666.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1666.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1666.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1666.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1666.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"xpath\")",
  "rule.sast.sw.php.1666.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1666.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1666.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1667.description": "LDAP 삽입 체커는 공격자가 외부 입력을 통해서 의도하지 않은 LDAP 명령어를 수행할 수 있는 경우를 검출합니다.\n웹 애플리케이션이 사용자가 제공한 입력을 올바르게 처리하지 못하면, 공격자가 LDAP 명령문의 구성을 바꿀 수 있으며, 프로세스가 명령을 실행한 구성 요소와 동일한 권한을 가지고 동작하게 됩니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다.",
  "rule.sast.sw.php.1667.example.0.dangerous": "라인 5: 신뢰할 수 없는 외부 입력을 통해 LDAP 명령어를 생성하고 있습니다.",
  "rule.sast.sw.php.1667.example.0.safe": "라인 4: 필터링을 수행한 안전한 입력만 LDAP 명령어에 포함되도록 합니다.",
  "rule.sast.sw.php.1667.name": "LDAP 삽입",
  "rule.sast.sw.php.1667.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1667.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1667.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1667.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1667.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1667.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1667.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(3) of name(\"ldap_search\")",
  "rule.sast.sw.php.1667.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1667.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1667.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1668.description": "사이트 간 요청 위조 체커는 폼 데이터 전달에 있어서 POST 방식을 사용하지 않았을 경우를 검출합니다.\n공격자에 의하여 악의적인 웹 사이트가 사용자의 인증된 세션 안에서 원치 않은 행동을 할 수 있습니다. 특히 해당 사용자가 관리자인 경우 사용자 권한관리, 게시물삭제, 사용자 등록 등 관리자 권한으로만 수행 가능한 기능을 공격자의 의도대로 실행시킬 수 있게 됩니다. 웹 애플리케이션에서 요청을 GET 방식으로 전달할 경우 공격자가 정보를 쉽게 알아내어 수정된 정보를 보냄으로써 공격자가 원하는 작업을 수행할 수 있습니다.\n입력 폼 작성시 GET 방식보다는 POST 방식을 사용하고 입력 폼과 해당 입력을 처리하는 프로그램 사이에 토큰을 사용하여, 공격자의 직접적인 URL 사용이 동작하지 않도록 처리합니다. 특히 중요한 기능에 대해서는 세션 검증과 더불어 재인증을 유도합니다.",
  "rule.sast.sw.php.1668.example.0.dangerous": "라인 1: GET 방식은 단순히 form 데이터를 URL 뒤에 덧붙여서 전송하기 때문에 GET 방식의 form을 사용하면 전달 값이 노출되므로 크로스 사이트 요청 위조 공격에 쉽게 노출될 수 있습니다.",
  "rule.sast.sw.php.1668.example.0.safe": "라인 1: POST 방식을 사용하여 위협을 완화합니다.",
  "rule.sast.sw.php.1668.name": "사이트 간 요청 위조",
  "rule.sast.sw.php.1669.description": "신뢰할 수 없는 입력에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.\n$_COOKIE의 변수 조회 시 금지된 키 값 조회하면 중요한 정보를 쿠키에 저장한 것으로 간주합니다. 해당 키 값은 쿠키 대신 서버의 세션($_SESSION)에 저장해야 합니다.\n개발자들은 흔히 쿠키, 환경 변수 또는 히든 필드와 같은 입력값이 조작될 수 없다고 가정합니다. 하지만 공격자는 다양한 방법을 통해 이러한 입력값들을 변경할 수 있고 조작된 내용은 탐지되지 않을 수 있습니다. 이러한 입력값(쿠키, 환경 변수, 히든 필드 등)에 기반하여 인증이나 인가와 같은 보안 결정을 수행하는 경우 공격자는 해당 값을 조작하여 애플리케이션의 보안을 우회할 수 있으므로 외부 사용자에 의한 입력값을 신뢰해서는 안됩니다.\n상태 정보나 민감한 데이터, 사용자 세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행합니다. 또한 보안 설계 관점에서 신뢰할 수 없는 입력값이 애플리케이션 내부로 들어올 수 있는 지점을 파악해야 하며, 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토해야 합니다.",
  "rule.sast.sw.php.1669.example.0.dangerous": "라인 3: 금지된 key를 사용하여 $_COOKIE에서 인증 정보 변수를 조회합니다.\n라인 5: 금지된 key를 사용하여 $_COOKIE에서 인증 정보 변수를 조회합니다.",
  "rule.sast.sw.php.1669.example.0.safe": "라인 3: 안전한 $_SESSION 변수에 인증 정보를 저장하도록 합니다.\n라인 5: 안전한 $_SESSION 변수에 인증 정보를 저장하도록 합니다.",
  "rule.sast.sw.php.1669.name": "신뢰할 수 없는 입력에 의존한 보안 결정",
  "rule.sast.sw.php.1669.option.forbidden_key.description": "금지할 쿠키 키의 이름을 작성합니다.<br />예시) role",
  "rule.sast.sw.php.1669.option.forbidden_key.name": "금지할 쿠키 키",
  "rule.sast.sw.php.1670.description": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 코드를 검출합니다.\n이러한 입력값(쿠키, 환경 변수, 히든 필드 등)에 기반하여 인증이나 인가와 같은 보안 결정을 수행하는 경우 공격자는 해당 값을 조작하여 애플리케이션의 보안을 우회할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다.",
  "rule.sast.sw.php.1670.example.0.dangerous": "라인 3: 포맷 스트링으로 외부 입력값을 검증 없이 사용했습니다.",
  "rule.sast.sw.php.1670.example.0.safe": "라인 3: 안전한 포맷 스트링만 사용하도록 합니다.",
  "rule.sast.sw.php.1670.name": "포맷 스트링 삽입",
  "rule.sast.sw.php.1670.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1670.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1670.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1670.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1670.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1670.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1670.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"printf\")",
  "rule.sast.sw.php.1670.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1670.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1670.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1671.description": "중요 기능에 대해 누락된 인증 체커는 중요한 기능에 접근하기 전에 적절한 인증 과정을 거치지 않는 코드를 검출합니다.\n검사할 중요 기능과 필요한 인증 제어 방식을 옵션으로 지정할 수 있습니다.\n적절한 인증 과정이 없이 중요 정보(계좌이체 정보, 개인 정보 등)를 열람 또는 변경하거나 상당한 리소스를 소모하는 작업을 수행하면 위험할 수 있습니다. 클라이언트의 보안 검사를 우회하여 서버에 접근하지 못하도록 설계하고, 은행 계좌이체 등 중요한 페이지는 재인증을 적용해야 합니다. 또한 안전하다고 검증된 라이브러리나 프레임워크(OpenSSL이나 ESAPI의 보안 기능 등)를 사용하는 것도 중요합니다.\n중요 기능에 접근하기 전 인증 과정을 거칩니다.",
  "rule.sast.sw.php.1671.example.0.dangerous": "라인 4: 재인증을 거치지 않고 계좌 이체를 수행하고 있습니다.",
  "rule.sast.sw.php.1671.example.0.safe": "라인 4: 인증을 수행한 사용자만 다시 재인증을 거쳐 계좌 이체가 가능하도록 합니다.",
  "rule.sast.sw.php.1671.name": "중요 기능에 대해 누락된 인증",
  "rule.sast.sw.php.1671.option.authentication_function.description": "중요 기능을 수행하기 전에 호출 및 검사되어야 하는 인증 함수 이름을 작성합니다.<br />예시) strcmp",
  "rule.sast.sw.php.1671.option.authentication_function.name": "인증 함수",
  "rule.sast.sw.php.1671.option.critical_function.description": "중요 기능을 수행하는 함수 이름을 작성합니다.<br />예시) login",
  "rule.sast.sw.php.1671.option.critical_function.name": "중요 함수",
  "rule.sast.sw.php.1672.description": "부적절한 인증 체커는 익명 바인딩으로 LDAP 쿼리를 실행하는 코드를 검출합니다.\n사용자 인증을 위한 별도의 작업을 수행하지 않고 익명 바인딩을 허용하면 임의 사용자의 정보를 외부에서 접근할 수 있게 됩니다.\n사용자 이름과 비밀번호를 명시하여 LDAP 바인딩을 수행합니다.",
  "rule.sast.sw.php.1672.example.0.dangerous": "라인 5: 사용자 인증을 위한 별도의 작업을 수행하지 않으며 익명 바인딩을 허용합니다.",
  "rule.sast.sw.php.1672.example.0.safe": "라인 5: 사용자 ID와 비밀번호를 통해 접근하도록 접근 제어를 사용합니다.",
  "rule.sast.sw.php.1672.name": "부적절한 인증",
  "rule.sast.sw.php.1673.description": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.\nDES, RC2, RC4, RC5 와 같은 알고리즘들은 더 이상 안전하지 않습니다.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 암호화 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.php.1673.example.0.dangerous": "라인 5: 취약한 DES 암호화 알고리즘을 사용하여 암호화를 수행합니다.",
  "rule.sast.sw.php.1673.example.0.safe": "라인 6: 안전한 AES 암호화 알고리즘을 사용합니다.",
  "rule.sast.sw.php.1673.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.php.1673.option.weak_algorithm.description": "취약한 암호화 알고리즘의 이름을 작성합니다.<br />예시) DES",
  "rule.sast.sw.php.1673.option.weak_algorithm.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.php.1674.description": "민감한 정보의 일반 텍스트 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 코드를 검출합니다.\n중요 정보를 공개된 저장소에 저장할 때 암호화하지 않는 경우 인증 받지 않은 주체에 의해서 데이터 노출, 또는 스니핑이 발생할 수 있습니다.\n중요 정보를 외부 환경 파일에 저장할 때는, 반드시 암호화하여 저장하는 것이 바람직합니다. 또한 SW 설계 시 민감한 데이터와 일반 데이터를 가능한 분리하도록 합니다.",
  "rule.sast.sw.php.1674.example.0.dangerous": "라인 5: 비밀번호를 평문으로 파일에 저장하고 있습니다.",
  "rule.sast.sw.php.1674.example.0.safe": "라인 13: 중요 정보는 암호화를 수행하여 저장하도록 합니다.",
  "rule.sast.sw.php.1674.name": "민감한 정보의 일반 텍스트 저장",
  "rule.sast.sw.php.1674.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"mcrypt_encrypt\")",
  "rule.sast.sw.php.1674.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1674.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1674.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1674.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1674.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1674.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of name(\"fwrite\")",
  "rule.sast.sw.php.1674.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1674.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1674.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1674.option.target_info.description": "대상이 되는 주요 정보의 이름 패턴을 작성합니다.<br />예시) password",
  "rule.sast.sw.php.1674.option.target_info.name": "대상 정보",
  "rule.sast.sw.php.1675.description": "민감한 정보의 일반 텍스트 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.\n사용자 또는 시스템의 중요 정보가 포함된 데이터를 평문으로 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있습니다.\n민감한 정보를 통신 채널을 통하여 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "rule.sast.sw.php.1675.example.0.dangerous": "라인 7: 비밀번호를 암호화 과정을 거치지 않고 소켓을 통해 전송하고 있습니다.",
  "rule.sast.sw.php.1675.example.0.safe": "라인 14: 네트워크를 통해 비밀번호를 전달하기 전에 암호화를 수행하도록 합니다.",
  "rule.sast.sw.php.1675.name": "민감한 정보의 일반 텍스트 전송",
  "rule.sast.sw.php.1675.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"mcrypt_encrypt\")",
  "rule.sast.sw.php.1675.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1675.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1675.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1675.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1675.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1675.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of name(\"socket_send\")",
  "rule.sast.sw.php.1675.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1675.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1675.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1675.option.target_info.description": "대상이 되는 주요 정보의 이름 패턴을 작성합니다.<br />예시) password",
  "rule.sast.sw.php.1675.option.target_info.name": "대상 정보",
  "rule.sast.sw.php.1676.description": "하드코드된 비밀번호 체커는 mysql_connect()에서 비밀번호에 해당하는 매개 변수로 상수 문자열이 들어가는 경우를 검출합니다.\n하드코딩된 비밀번호는 위험하다고 간주합니다. mysql_connect()에서 비밀번호에 해당하는 매개 변수로 상수 문자열이 들어가는 경우 취약하다고 판정합니다. 비밀번호는 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.\n프로그램 코드 내부에 하드코딩된 비밀번호를 포함하고 이를 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 관리자 정보가 노출될 수 있으므로 위험합니다.\n비밀번호를 소스 코드에 하드코딩하지 않고 외부에서 입력받도록 합니다.",
  "rule.sast.sw.php.1676.example.0.dangerous": "라인 2: 하드코딩된 비밀번호를 사용하여 mysql_connect()를 수행합니다.",
  "rule.sast.sw.php.1676.example.0.safe": "라인 2: 비밀번호는 하드코딩하지 않고 외부에서 가져오도록 합니다.",
  "rule.sast.sw.php.1676.name": "하드코드된 비밀번호",
  "rule.sast.sw.php.1676.option.check_function_params.description": "검사할 함수명과 파라미터의 위치를 작성합니다.",
  "rule.sast.sw.php.1676.option.check_function_params.name": "함수명과 파라미터 위치",
  "rule.sast.sw.php.1677.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 사용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.php.1677.example.0.dangerous": "라인 7: RSA 알고리즘에 사용되는 최소 키 길이는 2048 이상이어야 합니다.",
  "rule.sast.sw.php.1677.example.0.safe": "라인 7: 충분한 키 길이를 사용하도록 합니다.",
  "rule.sast.sw.php.1677.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.php.1677.option.EC.description": "EC 알고리즘의 최소 허용 키 길이를 작성합니다.<br />예시) 256",
  "rule.sast.sw.php.1677.option.EC.name": "EC 알고리즘의 허용 키 길이",
  "rule.sast.sw.php.1677.option.RSA.description": "RSA 알고리즘의 최소 허용 키 길이를 작성합니다.<br />예시) 2048",
  "rule.sast.sw.php.1677.option.RSA.name": "RSA 알고리즘의 허용 키 길이",
  "rule.sast.sw.php.1678.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\nrand()나 mt_rand()의 경우 보안 상 안전하지 않은 난수 값 생성 함수로, 이를 사용한 경우를 검출합니다.\n예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하게 됩니다. 일반적으로 언어마다 기본 제공되는 통계적 PRNG(유사 난수 생성기) 방식을 사용하면 생성될 난수를 공격자가 쉽게 예측 가능하며, 시드를 잘 설정하는 것만으로는 안전을 보장할 수 없습니다.\n암호학적으로 충분히 안전한 방식을 사용하여 예측 불가능한 난수를 생성해야 합니다.",
  "rule.sast.sw.php.1678.example.0.dangerous": "라인 1: PHP의 rand() 함수는 보안 상 안전하지 않은 난수 생성 함수입니다.",
  "rule.sast.sw.php.1678.example.0.safe": "라인 1: 안전한 난수 생성 함수를 사용하도록 합니다.",
  "rule.sast.sw.php.1678.name": "부적절한 난수 생성",
  "rule.sast.sw.php.1679.description": "하드코드된 암호화 키 체커는 하드코딩된 암호화 키를 사용하는 코드를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역산하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코딩하여 코드를 작성하는 방법도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코딩하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "rule.sast.sw.php.1679.example.0.dangerous": "라인 6: 암호화를 수행하기 위해 하드코딩된 암호화 키를 사용했습니다.",
  "rule.sast.sw.php.1679.example.0.safe": "라인 6: 코드 내부에서 암호화 키를 상수 형태로 정의해서 사용하지 않도록 합니다.",
  "rule.sast.sw.php.1679.name": "하드코드된 암호화 키",
  "rule.sast.sw.php.1679.option.check_function_params.description": "검사할 함수명과 파라미터의 위치를 작성합니다.",
  "rule.sast.sw.php.1679.option.check_function_params.name": "함수명과 파라미터 위치",
  "rule.sast.sw.php.1680.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하거나 같은 문자를 연속으로 여러 개 사용하지 않도록 설정할 수 있습니다. 한국인터넷진흥원 \"암호사용안내서\"의 비밀번호 설정 규칙을 참고할 수 있습니다.",
  "rule.sast.sw.php.1680.example.0.dangerous": "라인 4: 비밀번호에 대한 검증을 수행하지 않았습니다.",
  "rule.sast.sw.php.1680.example.0.safe": "라인 5: 비밀번호에 대한 길이 제한 등의 강한 유효성 검증을 수행하도록 합니다.",
  "rule.sast.sw.php.1680.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.php.1680.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(1) of name(\"strlen\")",
  "rule.sast.sw.php.1680.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1680.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1680.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1680.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1680.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1680.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"mysql_query\")",
  "rule.sast.sw.php.1680.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1680.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"$_GET[\"password\"]\")",
  "rule.sast.sw.php.1680.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1681.description": "누락된 로그인 제어 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n구체적으로는 로그인 루틴을 호출하기 전에 루프를 통해 횟수 제한 등의 제어를 수행하는지 여부를 검사합니다. 단, 반복 제어가 존재하더라도 제어 조건이 상수인 경우 오류로 검출합니다.\n로그인 시도 횟수를 제한하지 않으면 공격자는 무차별 대입 공격으로 로그인에 성공할 수 있습니다. 이 경우 권한이 없는 공격자가 권한을 얻을 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.php.1681.example.0.dangerous": "라인 2: 로그인 횟수 제한을 수행하고 있지 않습니다.",
  "rule.sast.sw.php.1681.example.0.safe": "라인 2: 반복문 등을 사용해 횟수 제한을 수행해야 합니다.",
  "rule.sast.sw.php.1681.name": "누락된 로그인 제어",
  "rule.sast.sw.php.1681.option.check_inner_control.description": "활성화 된 경우 로그인 루틴 내부에서 제어가 이루어지는지 검사합니다.",
  "rule.sast.sw.php.1681.option.check_inner_control.name": "내부 제어 검사",
  "rule.sast.sw.php.1681.option.check_outer_control.description": "활성화 된 경우 로그인 루틴이 외부로부터 제어되는지 검사합니다.",
  "rule.sast.sw.php.1681.option.check_outer_control.name": "외부 제어 검사",
  "rule.sast.sw.php.1681.option.login_function.description": "로그인 함수의 이름을 작성합니다.<br />예시) login",
  "rule.sast.sw.php.1681.option.login_function.name": "로그인 함수",
  "rule.sast.sw.php.1683.description": "오류 정보 누출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "rule.sast.sw.php.1683.example.0.dangerous": "라인 4: 예외 발생 시 var_dump를 통해 트레이스 정보가 노출됩니다.",
  "rule.sast.sw.php.1683.example.0.safe": "라인 4: 예외 관련 디버깅 정보를 출력하지 않도록 합니다.",
  "rule.sast.sw.php.1683.name": "오류 정보 누출",
  "rule.sast.sw.php.1683.option.error_leaking_function.description": "금지할 오류 정보 노출 함수의 이름을 작성합니다.<br />예시) phpinfo",
  "rule.sast.sw.php.1683.option.error_leaking_function.name": "금지할 오류 정보 노출 함수",
  "rule.sast.sw.php.1683.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1683.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1683.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1683.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1683.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1683.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1683.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"printf\")",
  "rule.sast.sw.php.1683.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1683.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1683.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1689.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.sw.php.1689.example.0.dangerous": "라인 2: .",
  "rule.sast.sw.php.1689.example.0.safe": "라인 2: .",
  "rule.sast.sw.php.1689.name": "남은 디버그 코드",
  "rule.sast.sw.php.1689.option.debug_function.description": "디버그 함수의 이름을 작성합니다.<br />예시) debug_backtrace",
  "rule.sast.sw.php.1689.option.debug_function.name": "디버그 함수",
  "rule.sast.sw.php.1690.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.php.1690.example.0.dangerous": "라인 3: 도메인 이름을 통해 해당 요청이 신뢰할 수 있는지를 검사합니다. 그러나 공격자가 DNS 캐쉬 등을 조작하면 잘못된 신뢰성 정보를 얻을 수 있습니다.",
  "rule.sast.sw.php.1690.example.0.safe": "라인 7: DNS 조회를 통해 호스트 이름을 비교하지 않고 IP 주소를 직접 비교하도록 수정합니다.",
  "rule.sast.sw.php.1690.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.php.1690.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1690.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1690.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1690.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1690.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1690.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1690.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"strcmp\")",
  "rule.sast.sw.php.1690.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1690.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of name(\"gethostname\")",
  "rule.sast.sw.php.1690.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1704.description": "주석문 안의 비밀번호 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.php.1704.example.0.dangerous": "라인 1: 위 예제는 디버깅 등의 목적으로 사용자 이름과 비밀번호를 주석문 안에 서술하고 제대로 지우지 않아서 취약점이 발생한 경우입니다.",
  "rule.sast.sw.php.1704.example.0.safe": "라인 1: 프로그램 개발 시에 주석문 등에 남겨놓은 사용자 계정이나 비밀번호 등의 정보는 개발 완료 시에 확실하게 삭제해야 합니다.",
  "rule.sast.sw.php.1704.name": "주석문 안의 비밀번호",
  "rule.sast.sw.php.1704.option.allowed_max_word_length.description": "단일 단어의 최대 길이를 작성합니다.<br />예시) 40",
  "rule.sast.sw.php.1704.option.allowed_max_word_length.name": "허용할 최대 연속 단어 길이",
  "rule.sast.sw.php.1704.option.check_password_only.description": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "rule.sast.sw.php.1704.option.check_password_only.name": "비밀번호 문자열 단독 검출 여부",
  "rule.sast.sw.php.1704.option.consecutive_word_expr.description": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.<br />예시) [a-zA-Z0-9]+",
  "rule.sast.sw.php.1704.option.consecutive_word_expr.name": "검출할 연속 단어 형식",
  "rule.sast.sw.php.1704.option.fixed_key_length.description": "고정 길이 문자열을 입력합니다.",
  "rule.sast.sw.php.1704.option.fixed_key_length.name": "고정 길이",
  "rule.sast.sw.php.1704.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.php.1704.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.php.1704.option.using_fixed_key_length.description": "옵션을 사용하는 경우, 고정 길이의 문자열을 검출합니다.",
  "rule.sast.sw.php.1704.option.using_fixed_key_length.name": "고정 길이 검출 여부",
  "rule.sast.sw.php.1892.description": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.\nHTTP 요청에 들어 있는 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(Carriage Return) 이나 LF(Line Feed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 사용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손(Cache Poisoning) 공격 등을 수행할 수 있습니다.\n요청 매개 변수의 값을 http 응답 헤더(예, Set-Cookie 등)에 포함시킬 경우 CR, LF와 같은 개행문자를 제거해야 합니다.",
  "rule.sast.sw.php.1892.example.0.dangerous": "라인 1: 안전하지 않은 $_GET['id'] 값이 setcookie() 함수에 사용됩니다.",
  "rule.sast.sw.php.1892.example.0.safe": "라인 3: 안전하지 않은 값은 setcookie() 함수로 전달하지 않거나 필터링을 거친 안전한 값만을 사용합니다.",
  "rule.sast.sw.php.1892.name": "HTTP 응답 분할",
  "rule.sast.sw.php.1892.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.1892.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.1892.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.1892.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.1892.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.1892.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.1892.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of name(\"setcookie\")",
  "rule.sast.sw.php.1892.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.1892.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.1892.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.1893.description": "민감한 정보의 쿠키 체커는 보안 상 민감한 데이터를 쿠키에 저장하는 경유를 검출합니다.\n보안 상 민감한 데이터를 쿠키에 저장하는 것은 시스템 보안을 취약하게 만듭니다. 대부분의 웹 애플리케이션에서 쿠키는 메모리에 상주하며, 브라우저의 실행이 종료되면 사라집니다. 프로그래머가 원하는 경우, 브라우저 세션에 관계없이 계속적으로 지속되도록 설정할 수 있으며, 이것은 디스크에 기록되고 다음 브라우저 세션이 시작되었을 때 메모리에 로드됩니다.\n만약 개인 정보 등이 이런 형태의 지속적인 쿠키에 저장된다면, 공격자는 쿠키에 접근할 수 있는 기회가 늘어나며, 따라서 시스템을 취약하게 만듭니다.\n쿠키에 민감정보를 저장하지 않고, 세션 등 다른 방법을 사용합니다.",
  "rule.sast.sw.php.1893.example.0.dangerous": "라인 4: 사용자 ID와 같은 민감한 정보를 setcookie() 함수를 사용하여 쿠키에 저장하고 있습니다.",
  "rule.sast.sw.php.1893.example.0.safe": "라인 4: 더 안전한 세션 등을 사용하도록 합니다.",
  "rule.sast.sw.php.1893.name": "민감한 정보의 쿠키",
  "rule.sast.sw.php.1893.option.forbidden_cookie_function.description": "금지할 쿠키 함수의 이름을 작성합니다.<br />예시) setcookie",
  "rule.sast.sw.php.1893.option.forbidden_cookie_function.name": "금지할 쿠키 함수",
  "rule.sast.sw.php.2802.description": "솔트 없는 해시 사용 체커는 솔트 없이 해시값을 계산하는 코드를 검출합니다.\n중요 정보를 솔트(Salt) 없이 해싱하여 저장하면 공격자는 레인보우 테이블과 같은 방법으로 해시값을 미리 계산하여 원래 값을 찾을 수 있게 됩니다.\n특히 비밀번호와 같은 중요 정보를 해싱하여 저장할 경우 솔트를 해시 함수에 함께 입력하여 얻은 해시값을 저장하도록 합니다.",
  "rule.sast.sw.php.2802.example.0.dangerous": "라인 1: 비밀번호 암호화 타입을 PASSWORD_DEFAULT 로 설정했습니다.",
  "rule.sast.sw.php.2802.example.0.safe": "라인 1: 비밀번호 암호화 타입을 PASSWORD_BCRYPT 로 설정했습니다.",
  "rule.sast.sw.php.2802.name": "솔트 없는 해시 사용",
  "rule.sast.sw.php.3002.description": "취약한 XML 변환 보안 체커는 별도의 보안 옵션을 지정하지 않고 XML 파서를 바로 사용한 경우를 검출합니다.\nXML 외부 엔터티 또는 XSLT 외부 엔터티(XXE) 취약성은 외부 DTD 및 DTD 엔터티를 허용한 상태로 XML 파서를 생성하는 경우에 발생할 수 있습니다. 공격자가 외부 데이터를 제어하게 되면 파서가 위치한 장치에서 기밀 데이터의 공개, 서비스 거부, 서버 측 요청 위조, 포트 스캐닝 등의 문제가 발생하거나 시스템에도 영향을 미칠 수 있습니다.\nsimplexml_load_string와 DOMDocument의 load 함수 사용 시 LIBXML_NOENT를 설정하지 않고,\nXMLReader의 setParserProperty 함수 사용 시 XMLReader::SUBST_ENTITIES 를 true로 설정하지 않도록 합니다.",
  "rule.sast.sw.php.3002.example.0.dangerous": "라인 3: simplexml_load_string 함수의 세 번째 인자에 LIBXML_NOENT 를 설정하여 외부 엔터티를 사용할 수 있도록 합니다.\n라인 8: DOMDocument의 load 함수의 두 번째 인자에 LIBXML_NOENT 를 설정하여 외부 엔터티를 사용할 수 있도록 합니다.\n라인 14: XMLReader의 setParserProperty 함수의 첫 번째 인자를 XMLReader::SUBST_ENTITIES로 설정하고, 두 번째 인자를 true로 설정하여 외부 엔터티를 사용할 수 있도록 합니다.",
  "rule.sast.sw.php.3002.example.0.safe": "라인 3: simplexml_load_string 함수 사용 시 LIBXML_NOENT 를 설정하지 않습니다.\n라인 8: DOMDocument의 load 함수 사용 시 LIBXML_NOENT 를 설정하지 않습니다.\n라인 14: XMLReader의 setParserProperty 함수 사용 시 XMLReader::SUBST_ENTITIES를 true로 설정하지 않습니다.",
  "rule.sast.sw.php.3002.name": "취약한 XML 변환 보안",
  "rule.sast.sw.php.3003.description": "서버측 요청 변조 체커는 외부 입력이 포함된 URL을 제대로 검증하지 않고 연결하는 코드를 검출합니다.\n공개 웹 서버에서 작동하는 서비스가 외부 입력이 포함된 URL을 제대로 확인하지 않고 접속을 시도하면 이 URL이 외부로 공개되지 않는 내부 전용 서버를 가리킬 때에도 접속을 시도하게 됩니다. 내부 서버는 이 요청이 동일한 내부 웹 서버로부터 전달된 것이므로 정상적으로 응답을 보낼 것입니다. 자신이 접속할 수 있는 웹 서버에 이러한 취약점이 존재한다는 사실을 공격자가 알게 되면 해당 웹 서버를 통해 자신에게 접속 권한이 없는 내부망의 서버에 요청을 보낼 수 있습니다. 이를 통해 외부로 노출되어서는 안되는 중요 정보가 노출될 수 있습니다.\n외부 입력을 포함하는 URL에 접속하려고 시도할 때 적절한 검증을 수행하도록 합니다.",
  "rule.sast.sw.php.3003.example.0.dangerous": "라인 3: 외부 입력값이 file_get_contents 함수에 전달되어 중요 정보가 노출될 수 있습니다.",
  "rule.sast.sw.php.3003.example.0.safe": "라인 6: 별도의 검증 과정을 거친 후 외부 입력값을 사용합니다.",
  "rule.sast.sw.php.3003.name": "서버측 요청 변조",
  "rule.sast.sw.php.3003.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(1) of name(\"in_array\")",
  "rule.sast.sw.php.3003.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.3003.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.3003.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.3003.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.3003.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.3003.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"file_get_contents\")",
  "rule.sast.sw.php.3003.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.3003.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.3003.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.3004.description": "취약한 서버 인증서 검증 체커는 SSL/TLS 세션을 생성할 때 X.509 인증서의 유효성을 검사하지 않고 모든 인증서를 신뢰하는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다.\ncurl_setopt 함수를 사용하여 CURLOPT_SSL_VERIFYPEER의 값을 설정할 때 true 혹은 1로 설정합니다.",
  "rule.sast.sw.php.3004.example.0.dangerous": "라인 2: CURLOPT_SSL_VERIFYPEER의 값을 FALSE로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 하지 않았습니다.\n라인 3: CURLOPT_SSL_VERIFYPEER의 값을 FALSE로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 하지 않았습니다.\n라인 4: CURLOPT_SSL_VERIFYPEER의 값을 0으로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 하지 않았습니다.",
  "rule.sast.sw.php.3004.example.0.safe": "라인 2: CURLOPT_SSL_VERIFYPEER의 값을 TRUE로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 진행합니다.\n라인 3: CURLOPT_SSL_VERIFYPEER의 값을 TRUE로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 진행합니다.\n라인 4: CURLOPT_SSL_VERIFYPEER의 값을 1로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 진행합니다.",
  "rule.sast.sw.php.3004.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.php.3005.description": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 메소드를 사용하는 코드를 검출합니다.\n객체를 직렬화하여 저장하거나 전송하고, 필요한 경우 다시 역직렬화하여 사용함으로써 객체의 상태를 유지할 수 있습니다. 하지만 신뢰할 수 없는 데이터를 별도의 보호 없이 바로 역직렬화하는 경우 공격자가 악의적으로 객체 또는 변수를 추가하여 악성 코드를 실행시킬 수 있습니다.\nunserialize 함수를 사용하여 역직렬화하는 경우 화이트리스트를 작성하거나 hmac 주소를 확인합니다.",
  "rule.sast.sw.php.3005.example.0.dangerous": "라인 3: 외부 입력값을 별도의 검증 없이 역직렬화하여 악성 코드가 실행될 수 있습니다.",
  "rule.sast.sw.php.3005.example.0.safe": "라인 7: sha256 알고리즘을 이용하여 data를 hmac(hash-based message authentication code)으로 변환합니다.\n라인 9: 데이터 무결성이 손상되었는지 확인한 후 역직렬화합니다.",
  "rule.sast.sw.php.3005.name": "신뢰할 수 없는 데이터의 역직렬화",
  "rule.sast.sw.php.3005.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(1) of name(\"in_array\")",
  "rule.sast.sw.php.3005.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.3005.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.3005.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.3005.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.3005.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.3005.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"unserialize\")",
  "rule.sast.sw.php.3005.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.3005.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.3005.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.914.description": "과도하게 허용된 Cross-Origin Resource Sharing 정책 체커는 소스 코드 내에 과도하게 허용된 Cross-Origin Resource Sharing(CORS) 정책을 선언하는 경우를 검출합니다.\nCross-Origin Resource Sharing(CORS) 정책을 header()의 인자로 `Access-Control-Allow-Origin: *`를 사용하여 모든 사이트를 허용하는 경우에 검출됩니다.\nheader()의 인자로 `Access-Control-Allow-Origin: *`를 사용하여 모든 사이트를 허용하는 것은 보안 상 안전하지 않습니다.\n전체 도메인을 허용하는것이 아니라, 지정된 도메인만 허용하도록 명시하는것이 좋습니다.",
  "rule.sast.sw.php.914.example.0.dangerous": "라인 1: '*'을 사용해 모든 사이트를 허용하는 것은 위험합니다.",
  "rule.sast.sw.php.914.example.0.safe": "라인 1: 이미 안전한 것을 확인한 특정 URL만 허용하도록 설정합니다.",
  "rule.sast.sw.php.914.name": "과도하게 허용된 Cross-Origin Resource Sharing 정책",
  "rule.sast.sw.php.915.description": "GET 방식으로 전송 체커는 http 프로토콜에서 GET방식의 요청을 시도하는 경우를 검출합니다.\nGET 방식을 통한 전송은 URL과 전달된 매개 변수가 브라우저를 통해 표시되기 때문에 http로 전송하는 모든 매개 변수가 최종사용자에게 직접 노출되고, 최종사용자가 이를 손쉽게 변조할수 있게 됩니다.\nPOST 방식으로 요청을 수행합니다.",
  "rule.sast.sw.php.915.example.0.dangerous": "라인 2: 데이터를 GET 방식으로 전달하고 있습니다. CSRF 공격에 취약해집니다.",
  "rule.sast.sw.php.915.example.0.safe": "라인 2: 데이터를 POST 방식으로 전달하도록 합니다.",
  "rule.sast.sw.php.915.name": "GET 방식으로 전송",
  "rule.sast.sw.php.916.description": "활성화 된 allowed_url_fopen 옵션 체커는 php.ini에 allow_URL_fopen이 활성화된 경우를 검출합니다.\n해당 옵션이 활성화되어 있을 경우 공격자가 악의적인 내용을 애플리케이션에 삽입할 수 있으므로 안전하지 않습니다.\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.916.example.0.dangerous": "라인 1: allow_URL_fopen 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.916.example.0.safe": "라인 1: allow_URL_fopen 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.916.name": "활성화 된 allowed_url_fopen 옵션",
  "rule.sast.sw.php.917.description": "활성화 된 allowed_url_include 옵션 체커는 php.ini에 allow_URL_include가 활성화된 경우를 검출합니다.\n해당 옵션이 활성화되어 있을 경우 공격자가 악의적인 내용을 애플리케이션에 삽입할 수 있으므로 안전하지 않습니다.\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.917.example.0.dangerous": "라인 1: allow_URL_include 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.917.example.0.safe": "라인 1: allow_URL_include 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.917.name": "활성화 된 allowed_url_include 옵션",
  "rule.sast.sw.php.918.description": "비활성화된 session.cookie_secure 옵션 체커는 php.ini에 session.cookie_secure가 비활성화된 경우를 검출합니다.\n해당 옵션을 활성화하지 않으면 쿠키가 공격자에게 노출될 수 있습니다.\n해당 옵션을 활성화합니다.",
  "rule.sast.sw.php.918.example.0.dangerous": "라인 1: session.cookie_secure 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.918.example.0.safe": "라인 1: session.cookie_secure 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.918.name": "비활성화된 session.cookie_secure 옵션",
  "rule.sast.sw.php.919.description": "비활성화 된 cgi.force_redirect 옵션 체커는 php.ini에 cgi.force_redirect가 비활성화된 경우를 검출합니다.\ncgi.force_redirect는 기본적으로 활성화되어 있으며 옵션에 설정된 경우에만 비활성화 됩니다.\n해당 옵션이 활성화되어 있지 않으면 공격자가 인증을 우회하여 서버에 접근할 수 있습니다.\n해당 옵션을 활성화합니다.",
  "rule.sast.sw.php.919.example.0.dangerous": "라인 1: cgi.force_redirect 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.919.example.0.safe": "라인 1: cgi.force_redirect 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.919.name": "비활성화 된 cgi.force_redirect 옵션",
  "rule.sast.sw.php.920.description": "비활성화 된 safe_mode 옵션 체커는 php.ini에 safe_mode가 비활성화된 경우를 검출합니다.\n해당 옵션을 활성화하지 않으면 공격자가 애플리케이션을 실행시킨 사용자의 권한을 획득할 수 있으며, 후 PHP 스크립트 등을 사용하여 서버에 접근할 수 있습니다.\n해당 옵션을 활성화합니다.",
  "rule.sast.sw.php.920.example.0.dangerous": "라인 1: safe_mode 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.920.example.0.safe": "라인 1: safe_mode 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.920.name": "비활성화 된 safe_mode 옵션",
  "rule.sast.sw.php.921.description": "활성화 된 file_uploads 옵션 체커는 php.ini에 file_uploads가 활성화된 경우를 검출합니다.\n해당 옵션을 활성화할 경우 악의적인 파일들이 서버에 업로드될 수 있습니다.\n해당 옵션을 활성화합니다.",
  "rule.sast.sw.php.921.example.0.dangerous": "라인 1: file_uploads 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.921.example.0.safe": "라인 1: file_uploads 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.921.name": "활성화 된 file_uploads 옵션",
  "rule.sast.sw.php.922.description": "활성화 된 magic_quotes_gpc 옵션 체커는 php.ini에 magic_quotes_gpc가 활성화된 경우를 검출합니다.\n보안을 위해 해당 옵션을 활성화하더라도 쉽게 공격에 노출될 수 있으므로 추가적인 대비책이 필요합니다.\n해당 옵션으로 인한 SQL injection의 위험이 있습니다\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.922.example.0.dangerous": "라인 1: magic_qiotes_gpc 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.922.example.0.safe": "라인 1: magic_qiotes_gpc 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.922.name": "활성화 된 magic_quotes_gpc 옵션",
  "rule.sast.sw.php.923.description": "활성화 된 magic_quotes_runtime 옵션 체커는 php.ini에 magic_quotes_runtime이 활성화된 경우를 검출합니다.\n보안을 위해 해당 옵션을 활성화하더라도 쉽게 공격에 노출될 수 있으므로 추가적인 대비책이 필요합니다.\n해당 옵션으로 인한 SQL injection의 위험이 있습니다\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.923.example.0.dangerous": "라인 1: magic_quotes_runtime 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.923.example.0.safe": "라인 1: magic_quotes_runtime 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.923.name": "활성화 된 magic_quotes_runtime 옵션",
  "rule.sast.sw.php.924.description": "활성화 된 magic_quotes_sybase 옵션 체커는 php.ini에 magic_quotes_sybase가 활성화된 경우를 검출합니다.\n보안을 위해 해당 옵션을 활성화하더라도 쉽게 공격에 노출될 수 있으므로 추가적인 대비책이 필요합니다.\n해당 옵션으로 인한 SQL injection의 위험이 있습니다\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.924.example.0.dangerous": "라인 1: magic_quotes_sybase 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.924.example.0.safe": "라인 1: magic_quotes_sybase 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.924.name": "활성화 된 magic_quotes_sybase 옵션",
  "rule.sast.sw.php.925.description": "활성화 된 register_globals 옵션 체커는 php.ini에 register_globals가 활성화된 경우를 검출합니다.\n공격자가 환경 변수의 값을 조작하여 애플리케이션을 공격할 수 있습니다.\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.925.example.0.dangerous": "라인 1: register_globals 옵션이 활성화되어 있습니다.",
  "rule.sast.sw.php.925.example.0.safe": "라인 1: register_globals 옵션이 비활성화되어 있습니다.",
  "rule.sast.sw.php.925.name": "활성화 된 register_globals 옵션",
  "rule.sast.sw.php.926.description": "활성화된 display_errors 옵션 체커는 php.ini에 display_errors가 활성화된 경우를 검출합니다.\nphp.ini에 display_errors가 활성화된 경우를 검출합니다. 오류 정보를 외부로 출력하는 것은 공격자에게 공격의 기회를 제공할 수 있습니다.\n공격자는 노출된 오류 메시지를 보고 해당 시스템을 공격할 때 참고할 수 있습니다.\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.926.example.0.dangerous": "라인 1: 오류 출력을 활성화하고 있습니다.",
  "rule.sast.sw.php.926.example.0.safe": "라인 1: 오류 출력을 비활성화합니다.",
  "rule.sast.sw.php.926.name": "활성화된 display_errors 옵션",
  "rule.sast.sw.php.927.description": "시스템 정보 노출 체커는 php.ini에 expose_php가 활성화된 경우를 검출합니다.\nphp.ini에 expose_php가 활성화된 경우를 검출합니다. PHP 버전 등의 시스템 정보를 노출하는 것은 공격자에게 공격의 기회를 제공할 수 있습니다.\n공격자는 노출된 오류 메시지를 보고 해당 시스템을 공격할 때 참고할 수 있습니다.\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.927.example.0.dangerous": "라인 1: expose_php를 활성화 했습니다.",
  "rule.sast.sw.php.927.example.0.safe": "라인 1: expose_php를 비활성화합니다.",
  "rule.sast.sw.php.927.name": "시스템 정보 노출",
  "rule.sast.sw.php.928.description": "누락된 open_basedir 옵션 체커는 php.ini에 open_basedir이 존재하는 동시에 설정되어 있지 않은 경우를 검출합니다.\n해당 옵션이 설정되어 있지 않으면 공격자가 PHP 프로그램 이외의 다른 파일들에 대해서도 접근 권한을 가질 수 있으며 공격으로 이어질 수 있습니다.\n해당 옵션을 활성화합니다.",
  "rule.sast.sw.php.928.example.0.dangerous": "라인 1: open_basedir이 설정되지 않았습니다.",
  "rule.sast.sw.php.928.example.0.safe": "라인 1: open_basedir이 설정되어 있습니다.",
  "rule.sast.sw.php.928.name": "누락된 open_basedir 옵션",
  "rule.sast.sw.php.929.description": "누락된 safe_mode_exec_dir 옵션 체커는 php.ini에 safe_mode_exec_dir이 존재하는 동시에 설정되어 있지 않은 경우를 검출합니다.\n해당 옵션이 설정되어 있지 않으면 공격자가 악성 코드 등을 실행시킬 수 있습니다.\n해당 옵션을 활성화합니다.",
  "rule.sast.sw.php.929.example.0.dangerous": "라인 1: safe_mode_exec_dir이 설정되지 않았습니다.",
  "rule.sast.sw.php.929.example.0.safe": "라인 1: safe_mode_exec_dir이 설정되어 있습니다.",
  "rule.sast.sw.php.929.name": "누락된 safe_mode_exec_dir 옵션",
  "rule.sast.sw.php.930.description": "기본 도메인을 사용하는 쿠키 설정 체커는 php.ini에 session.cookie_domain이 기본 도메인으로 설정된 경우를 검출합니다.\nphp.ini에 session.cookie_domain이 기본 도메인(예: .test.com)으로 설정된 경우를 검출합니다.\n이러한 경우 동일한 기본 도메인을 사용하는 다른 애플리케이션에서 세션 쿠키에 접근할 수 있습니다.\nsession.cookie_domain에 하나의 명시적인 서브 도메인이나 최상위 도메인을 설정합니다.",
  "rule.sast.sw.php.930.example.0.dangerous": "라인 3: 도메인 범위가 너무 넓게 설정되어 있습니다.",
  "rule.sast.sw.php.930.example.0.safe": "라인 3: 쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.php.930.name": "기본 도메인을 사용하는 쿠키 설정",
  "rule.sast.sw.php.931.description": "기본 경로를 사용하는 쿠키 설정 체커는 php.ini에 session.cookie_path가 기본 경로(`/`)로 설정된 경우를 검출합니다.\n동일한 쿠키 경로를 사용하는 다른 애플리케이션에서 세션 쿠키에 접근할 수 있습니다.\n쿠키의 허용 경로를 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.php.931.example.0.dangerous": "라인 3: 도메인 범위가 너무 넓게 설정되어 있습니다.",
  "rule.sast.sw.php.931.example.0.safe": "라인 3: 쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.php.931.name": "기본 경로를 사용하는 쿠키 설정",
  "rule.sast.sw.php.932.description": "영속적인 쿠키 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.\nphp.ini에 session.cookie_lifetime이 체커 옵션에 설정된 최대값보다 크게 설정되면 지나치게 긴 지속 시간으로 간주합니다.\n대부분의 웹 프로그래밍 환경에서는 비지속적으로 쿠키를 생성합니다. 이러한 쿠키는 브라우저 메모리(디스크에 기록되지 않음)에만 상주하며 브라우저가 닫히면 사라집니다. 프로그래머는 미래의 특정 날짜까지 브라우저 세션에 대해 쿠키가 지속되도록 지정할 수 있습니다. 해당 쿠키는 디스크에 기록되고 브라우저 세션 및 장치 재시작에서도 유지됩니다. 지속적인 쿠키는 사이트와 상호 작용하는 사용자를 프로필하는 데 사용됩니다. 공격자는 해당 데이터를 통해 지속적인 쿠키에 포함된 추적 데이터의 개인 정보를 악용할 수 있습니다. 지속적인 쿠키의 경우 만료 시간이 길게 설정되어 해당 쿠키에 개인 정보가 저장되면 데이터를 도용할 수 있는 위험도 증가하게 됩니다.\n쿠키의 만료시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션ID 등 중요 정보가 포함되지 않도록 설정해야 합니다.",
  "rule.sast.sw.php.932.example.0.dangerous": "라인 3: 허용된 세션 쿠키의 최대 지속 시간이 3600초라고 가정하면 14400초는 지나치게 긴 시간이 됩니다.",
  "rule.sast.sw.php.932.example.0.safe": "라인 3: 세션 쿠키의 최대 지속 시간을 적절한 값으로 설정합니다.",
  "rule.sast.sw.php.932.name": "영속적인 쿠키",
  "rule.sast.sw.php.932.option.max_lifetime.description": "쿠키의 최대 지속 시간을 작성합니다.<br />예시) 3600",
  "rule.sast.sw.php.932.option.max_lifetime.name": "최대 쿠키 지속 시간",
  "rule.sast.sw.php.933.description": "비활성화 된 session.cookie_httponly 옵션 체커는 php.ini에 session.cookie_httponly가 비활성화된 경우를 검출합니다.\n해당 옵션을 활성화하지 않으면 스크립트의 쿠키 접근을 방지하지 못해 공격자가 손쉽게 쿠키에 접근할 수 있습니다.\n해당 옵션을 활성화합니다.",
  "rule.sast.sw.php.933.example.0.dangerous": "라인 2: session.cookie_httponly이 설정되지 않았습니다.",
  "rule.sast.sw.php.933.example.0.safe": "라인 2: session.cookie_httponly이 설정되어 있습니다.",
  "rule.sast.sw.php.933.name": "비활성화 된 session.cookie_httponly 옵션",
  "rule.sast.sw.php.934.description": "활성화 된 session.use_trans_sid 옵션 체커는 php.ini에 session.use_trans_sid가 활성화된 경우를 검출합니다.\n해당 옵션이 활성화되어 있을 경우 세션 ID를 전달하게 함으로써 세션 hijacking 공격 등의 가능성을 제공할 수 있습니다.\n해당 옵션을 비활성화합니다.",
  "rule.sast.sw.php.934.example.0.dangerous": "라인 2: session.use_trans_sid이 설정되지 않았습니다.",
  "rule.sast.sw.php.934.example.0.safe": "라인 2: session.use_trans_sid이 설정되어 있습니다.",
  "rule.sast.sw.php.934.name": "활성화 된 session.use_trans_sid 옵션",
  "rule.sast.sw.php.935.description": "CakePHP에서의 과도한 세션 타임아웃 체커는 CakePHP 라이브러리의 설정 함수인 Configure::write()에서 세션의 타임아웃을 옵션을 통해 주어진 일정 임계치 레벨 이하로 설정하는 경우를 검출합니다.\n타임아웃은 high, medium 또는 low로 설정할 수 있습니다.\n세션의 타임아웃이 지나치게 길게 설정된 경우 공격자가 세션을 공격할 수 있는 더 많은 기회를 제공하게 됩니다.\n타임아웃을 지정된 임계치 이상으로 설정합니다.",
  "rule.sast.sw.php.935.example.0.dangerous": "라인 2: 세션 타임아웃의 임계치는 medium으로 설정되었다고 가정했을 때 그보다 작습니다.",
  "rule.sast.sw.php.935.example.0.safe": "라인 2: 세션 타임아웃의 임계치를 적절한 값으로 설정합니다.",
  "rule.sast.sw.php.935.name": "CakePHP에서의 과도한 세션 타임아웃",
  "rule.sast.sw.php.935.option.min_timeout.description": "최소 세션 타임아웃을 입력합니다.<br />예시) medium",
  "rule.sast.sw.php.935.option.min_timeout.name": "최소 세션 타임아웃",
  "rule.sast.sw.php.936.description": "CakePHP에서의 정보 누출 체커는 CakePHP 라이브러리의 Configure::write() 함수로 시스템 정보가 출력되는 경우를 검출합니다.\n옵션으로 최대 허용 디버깅 레벨을 지정할 수 있으며, 이보다 높은 레벨로 디버깅 메시지를 출력할 경우 민감한 정보가 노출되는 것으로 간주합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "rule.sast.sw.php.936.example.0.dangerous": "라인 2: 허용된 최대 디버그 레벨은 1로 설정되었다고 가정합니다.",
  "rule.sast.sw.php.936.example.0.safe": "라인 2: 허용된 최대 디버그 레벨에 맞춰 설정합니다.",
  "rule.sast.sw.php.936.name": "CakePHP에서의 정보 누출",
  "rule.sast.sw.php.936.option.max_debug_level.description": "허용할 최대 디버그 레벨을 입력합니다.<br />예시) 1",
  "rule.sast.sw.php.936.option.max_debug_level.name": "최대 디버그 레벨",
  "rule.sast.sw.php.937.description": "쿠키 평문 전송 체커는 쿠키를 암호화하지 않은 채로 전송하는 경우를 검출합니다.\nsetcookie() 함수의 보안 플래그(6번째 매개 변수)가 설정되어 있지 않거나 false로 설정된 경우를 검출합니다.\n보안에 민감한 데이터를 브라우저 쿠키에 저장할 때 보안 속성을 세팅하지 않으면 SSL 등의 보안 프로토콜을 통해 전송이 되지 않습니다. 그로 인해 중요 정보가 공격자에게 단순한 텍스트의 형태로 노출될 수 있습니다. 이것은 쿠키가 개인 정보나 세션 ID를 포함하는 경우에 특히 중요합니다.\nsetcookie() 함수의 보안 플래그를 설정합니다.",
  "rule.sast.sw.php.937.example.0.dangerous": "라인 1: setcookie() 함수의 보안 플래그가 설정되어 있지 않습니다.",
  "rule.sast.sw.php.937.example.0.safe": "라인 1: setcookie() 함수의 보안 플래그를 설정 합니다.",
  "rule.sast.sw.php.937.name": "쿠키 평문 전송",
  "rule.sast.sw.php.938.description": "HTTP 프로토콜을 통한 전송 체커는 HTTP 프로토콜을 통해 전송을 수행하는 경우를 검출합니다.\n보다 안전한 HTTPS 프로토콜을 통해 전송을 수행할 것을 권장합니다.\nhttp 프로토콜로 전송되는 평문 데이터는 쉽게 취득 및 변조가 이루어질 수 있습니다.\nhttps 프로토콜을 사용합니다.",
  "rule.sast.sw.php.938.example.0.dangerous": "라인 1: 대상 URL 이 http 프로토콜을 요청합니다.",
  "rule.sast.sw.php.938.example.0.safe": "라인 1: 대상 URL 이 https 프로토콜을 요청합니다.",
  "rule.sast.sw.php.938.name": "HTTP 프로토콜을 통한 전송",
  "rule.sast.sw.php.994.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.php.994.example.0.dangerous": "라인 5: 안전하지 않은 $_GET['link'] 값이 페이지 생성에 사용됩니다.",
  "rule.sast.sw.php.994.example.0.safe": "라인 5: 필터링을 거쳐 페이지를 생성하는데 사용하도록 합니다.",
  "rule.sast.sw.php.994.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.php.994.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.994.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.994.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.994.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.994.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.994.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.994.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) param(*) of name(\"__sparrow_php_echo__\")",
  "rule.sast.sw.php.994.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.994.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다. 예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.994.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.995.description": "자원 권한 조작 체커는 검증되지 않은 외부 입력값이 chmod에 사용되어 파일 권한이 변경되는 경우를 검출합니다.\n공격자는 해당 취약점을 이용하여 의도하지 않은 파일의 권한을 변경할 수 있습니다. SW가 중요한 보안 관련 리소스에 대하여 읽기 또는 수정하기 권한을 의도하지 않게 허가할 경우, 권한을 갖지 않은 사용자가 해당 리소스를 사용하게 됩니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다.",
  "rule.sast.sw.php.995.example.0.dangerous": "라인 3: 안전하지 않은 $_GET['file'] 값을 사용하여 경로를 생성 후 권한을 변경합니다.",
  "rule.sast.sw.php.995.example.0.safe": "라인 3: 필터 함수 등을 통해 안전한 값만을 사용하여 파일 권한 변경을 수행합니다.",
  "rule.sast.sw.php.995.name": "자원 권한 조작",
  "rule.sast.sw.php.995.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.995.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.995.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.995.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.995.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.995.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.995.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"chmod\")",
  "rule.sast.sw.php.995.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.995.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.995.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.996.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\n외부 입력값이 쿼리에 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다.",
  "rule.sast.sw.php.996.example.0.dangerous": "라인 8: 안전하지 않은 $_GET['username'] 값이 getRow() 함수로 전달되어 쿼리 생성에 사용됩니다.",
  "rule.sast.sw.php.996.example.0.safe": "라인 8: 필터링을 거쳐 쿼리를 생성하는데 사용하도록 합니다.",
  "rule.sast.sw.php.996.name": "SQL 삽입",
  "rule.sast.sw.php.996.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"mysql_real_escape_string\")",
  "rule.sast.sw.php.996.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.996.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.996.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.996.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.996.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.996.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"mysql_query\")",
  "rule.sast.sw.php.996.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.996.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.996.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.997.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 외부 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자(`, /, \\, .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.php.997.example.0.dangerous": "라인 4: 안전하지 않은 $_GET['filename'] 값을 경로로 사용하여 파일로 접근합니다.",
  "rule.sast.sw.php.997.example.0.safe": "라인 4: 안전하지 않은 값을 경로로 접근하지 않거나 필터링을 거친 안전한 값만을 사용합니다.",
  "rule.sast.sw.php.997.name": "경로 조작",
  "rule.sast.sw.php.997.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.997.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.997.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.997.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.997.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.997.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.997.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"fread\")",
  "rule.sast.sw.php.997.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.997.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.997.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.998.description": "외부 변수 수정 체커는 외부 입력이 검증 없이 extract() 함수에 사용되는 경우를 검출합니다.\nextract() 함수로 기존에 존재하던 전역 변수들이 덮어씌워질 수 있기 때문에 외부 입력을 확인 없이 extract() 함수에 전달하면 안됩니다.\nextract() 함수를 사용할 때 두 번째 인자로 EXTR_SKIP 플래그를 전달하면 기존의 변수는 덮어쓰지 않도록 할 수 있습니다.",
  "rule.sast.sw.php.998.example.0.dangerous": "라인 3: 안전하지 않은 $_GET 값을 사용하여 extract() 함수를 호출했습니다.",
  "rule.sast.sw.php.998.example.0.safe": "라인 3: 변수가 충돌하더라도 덮어씌워지지 않도록 EXTR_SKIP 인자를 함께 전달하여 extract() 함수를 호출합니다.",
  "rule.sast.sw.php.998.name": "외부 변수 수정",
  "rule.sast.sw.php.998.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.998.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.998.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.998.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.998.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.",
  "rule.sast.sw.php.998.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.998.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of fqn(\"extract(1)\")",
  "rule.sast.sw.php.998.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.998.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.998.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.php.999.description": "로그 삽입 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.\n사용자 입력을 검증 없이 그대로 로그에 출력하면 로그 내용에 공격자가 임의의 내용을 삽입하여 로그를 확인하는 보안 담당자 등을 헷갈리게 만들 수 있습니다. 이렇게 조작된 로그를 통해 잘못된 의사 결정이 이루어지면 그 결과를 공격에 활용할 수 있습니다.\n로그에 출력하기 전에 외부 입력값을 검사합니다. 특히 줄 바꿈 문자는 제거하는 것이 좋습니다.",
  "rule.sast.sw.php.999.example.0.dangerous": "라인 4: 안전하지 않은 $_GET['value'] 값이 error_log() 함수에 사용됩니다.",
  "rule.sast.sw.php.999.example.0.safe": "라인 4: 필터 함수 등을 통해 안전한 로그 내용만 사용되도록 합니다.",
  "rule.sast.sw.php.999.name": "로그 삽입",
  "rule.sast.sw.php.999.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.php.999.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.php.999.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String)",
  "rule.sast.sw.php.999.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.php.999.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of name(\".\") to return",
  "rule.sast.sw.php.999.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.php.999.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(1) of name(\"error_log\")",
  "rule.sast.sw.php.999.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.php.999.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of name(\"$_GET\")",
  "rule.sast.sw.php.999.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.prop.2078.description": "설정 파일에 하드코딩된 비밀번호 체커는 설정 파일에 일반 텍스트 암호를 저장하는 경우를 검출합니다.\n설정 파일을 읽을 수 있는 모든 사용자에게 비밀번호가 노출되어 위험합니다.\n설정 파일에서는 암호를 저장하지 않도록 합니다.",
  "rule.sast.sw.prop.2078.example.0.dangerous": "라인 1: 일반 텍스트 암호를 설정 파일에 저장했습니다.",
  "rule.sast.sw.prop.2078.example.0.safe": "라인 1: 일반 텍스트 암호를 설정 파일에 저장하지 않습니다.",
  "rule.sast.sw.prop.2078.name": "설정 파일에 하드코딩된 비밀번호",
  "rule.sast.sw.prop.2078.option.password_expr.name": "비밀번호 표현식",
  "rule.sast.sw.prop.2087.description": "비어 있는 비밀번호 체커는 설정 파일에 암호를 빈 문자열로 저장하는 경우를 검출합니다.\n빈 문자열을 암호로 사용하는 것은 매우 부적절합니다. 너무 쉽게 추측할 수 있기 때문입니다.\n비밀번호를 암호화하여 설정 파일에 저장하도록 합니다.",
  "rule.sast.sw.prop.2087.example.0.dangerous": "라인 1: 설정 파일에서 암호를 빈 문자열로 지정했습니다.",
  "rule.sast.sw.prop.2087.example.0.safe": "라인 1: 해당 라인을 삭제합니다.",
  "rule.sast.sw.prop.2087.name": "비어 있는 비밀번호",
  "rule.sast.sw.prop.2087.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다. 예시) password",
  "rule.sast.sw.prop.2087.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.prop.7295.description": "중요 정보(비밀번호, 암호화 키 등)를 하드코딩한 채 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 공격자는 스니핑, 소스코드 분석, 역공학 등을 통해 이를 쉽게 탈취할 수 있습니다.\n해당 체커는 중요 정보 검출 옵션을 제공합니다. 옵션을 통해 점검할 중요 정보 형식을 지정할 수 있습니다.\n중요 정보는 환경 변수를 이용해 관리하거나, 암호화한 상태로 설정 파일 또는 데이터베이스에 보관해야 합니다. 또한, AWS Secrets Manager나 HashiCorp Vault와 같은 비밀 관리 시스템을 활용하는 것도 좋은 방법입니다.",
  "rule.sast.sw.prop.7295.example.0.dangerous": "라인 1: Properties 파일 내부에 중요 정보가 하드코딩되어 있습니다.",
  "rule.sast.sw.prop.7295.example.0.safe": "라인 1: Properties 파일 내부에 중요 정보를 포함하지 않도록 합니다.",
  "rule.sast.sw.prop.7295.name": "하드코드된 중요 정보",
  "rule.sast.sw.py.13.description": "`데이터베이스와 연동된 웹 프로그램`에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 데이터베이스로부터 정보를 열람하거나 조작할 수 있는 보안약점입니다. 취약한 웹 프로그램에서는 사용자로부터 입력된 값을 동적 쿼리로 생성하기 때문에 개발자가 의도하지 않은 쿼리가 실행되어 정보 유출에 악용될 수 있습니다.\nPython에서는 DB-API와 Django, SQLAlchemy, Storm 등의 ORM(Object Relational Mapping)을 사용하여 데이터베이스에 접근할 수 있습니다. Python에서 지원하는 다양한 ORM(Object Relational Mapping)을 사용하면 데이터베이스를 안전하게 사용할 수 있지만 일부 복잡한 조건의 쿼리문 생성 어려움, 성능 저하 등의 이유로 직접 원시 SQL 실행이 필요한 경우가 있습니다. 이때 검증되지 않은 외부 입력값으로 인해 SQL 삽입 공격이 발생할 수 있습니다.\n정적인 쿼리문을 사전에 생성하고, 쿼리문을 실행할 때 외부에서 입력 받은 값의 경우 두 번째 파라미터를 사용하여 바인딩합니다.",
  "rule.sast.sw.py.13.example.0.dangerous": "라인 11: 외부로부터 입력받은 값을 포함한 쿼리문을 바인딩하지 않고 바로 실행시키기 때문에 위험합니다.",
  "rule.sast.sw.py.13.example.0.safe": "라인 10: 외부 입력값을 execute() 2번째 파라미터로 바인딩하고 쿼리문을 실행하기 때문에 안전합니다.",
  "rule.sast.sw.py.13.example.1.dangerous": "라인 15: 7번 라인에서 받은 검증되지 않은 외부 입력 값을 11번 라인에서 쿼리문으로 생성하고 이를 실행시켜 위험합니다.",
  "rule.sast.sw.py.13.example.1.safe": "라인 14: 7번 라인에서 입력 받은 값을 두 번째 파라미터의 바인딩 변수로 사용하여 안전합니다.",
  "rule.sast.sw.py.13.name": "SQL 삽입",
  "rule.sast.sw.py.13.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.13.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.13.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.13.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.13.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.py.13.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.13.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) mysql_query$param(*)",
  "rule.sast.sw.py.13.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.13.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.py.13.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.14.description": "공격자가 소프트웨어의 의도된 동작을 변경하도록 코드를 삽입하여 소프트웨어가 비정상적으로 동작하도록 하는 보안약점을 말합니다. 사용자가 입력한 값을 받아 동적 코드를 실행하는 함수를 허용할 경우, 개발자가 의도하지 않은 코드를 실행하여 권한을 탈취하거나 인증 우회, 시스템 명령어 실행 등의 위험이 있습니다.\nPython에서 코드 삽입 공격을 유발할 수 있는 함수에는 `eval()`, `exec()` 등이 포함됩니다. 해당 함수의 인자를 검증하지 않는 경우 공격자가 전달한 코드를 그대로 실행할 수 있습니다.\n동적 코드를 실행할 수 있는 함수를 사용하지 않습니다. 필요한 경우 실행 가능한 동적 코드를 입력 값으로 받지 않도록 외부 입력값에 대하여 화이트리스트 방식으로 검증해야 합니다. 또는 유효한 문자만 포함하도록 동적 코드에 사용되는 사용자 입력 값을 필터링하도록 합니다.",
  "rule.sast.sw.py.14.example.0.dangerous": "라인 6: 동적 코드 실행 함수인 eval()을 사용하기 때문에 코드 삽입 공격이 일어날 수 있습니다.",
  "rule.sast.sw.py.14.example.0.safe": "라인 6: isalnum()을 통해서 영문과 숫자만 입력되었는지 검증한 후에 사용하므로 안전합니다.",
  "rule.sast.sw.py.14.example.1.dangerous": "라인 9: 동적 코드 실행 함수인 exec()를 사용해서 코드 삽입 공격이 일어날 수 있습니다.",
  "rule.sast.sw.py.14.example.1.safe": "라인 9: 함수 이름에 대해 미리 정의한 화이트리스트를 사용하여 안전하게 실행합니다.",
  "rule.sast.sw.py.14.name": "코드 삽입",
  "rule.sast.sw.py.14.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.py.14.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.14.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.14.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.14.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.14.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.14.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"exec\")",
  "rule.sast.sw.py.14.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.14.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"django.http.HttpRequest.GET\")",
  "rule.sast.sw.py.14.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.15.description": "검증되지 않은 외부 입력 값으로 시스템 자원에 접근할 경우, 공격자가 입력 값을 조작하여 시스템이 보호하는 자원에 접근할 수 있는 보안약점입니다. 공격자는 이를 이용하여 자원의 수정 및 삭제, 시스템 정보 누출, 시스템 자원 간 충돌로 인한 서비스 장애 등을 유발시킬 수 있습니다.\nPython에서는 `subprocess.popen()`과 같이 프로세스를 여는 함수, `os.pipe()`처럼 파이프를 여는 함수, socket 연결 등에서 외부 입력 값을 검증 없이 사용할 경우 경로 조작 및 자원 삽입의 취약점이 발생할 수 있습니다.\n외부의 입력이 파일명인 경우에는 경로 순회(directory traversal) 공격의 위험이 있는 문자( /, \\, .. 등)를 제거할 수 있는 필터를 사용하도록 합니다.",
  "rule.sast.sw.py.15.example.0.dangerous": "라인 12: 외부에서 받은 request_file 값을 바로 open() 메소드의 파라미터로 사용하기 때문에 경로 조작의 위험이 있습니다.",
  "rule.sast.sw.py.15.example.0.safe": "라인 13-15: replace()를 통하여 경로 조작의 위험이 있는 문자를 필터링하기 때문에 안전합니다.",
  "rule.sast.sw.py.15.example.1.dangerous": "라인 10: 외부에서 받은 port 값을 바로 bind() 메소드의 파라미터로 사용하여 경로 조작의 위험이 있습니다.",
  "rule.sast.sw.py.15.example.1.safe": "라인 4: 외부에서 받을 값을 미리 화이트리스트로 작성하여 사용하기 때문에 안전합니다.",
  "rule.sast.sw.py.15.name": "경로 조작 및 자원 삽입",
  "rule.sast.sw.py.15.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.py.15.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.15.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.15.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.15.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.15.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.15.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"open\")",
  "rule.sast.sw.py.15.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.15.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"django.http.HttpRequest.GET\")",
  "rule.sast.sw.py.15.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.16.description": "크로스 사이트 스크립트 공격은 웹 사이트에 악성 코드를 삽입하는 공격 방법입니다. 공격은 일반적으로 애플리케이션의 사용자를 목표로 삼으며, 자동으로 사용자가 악성 코드를 실행하게 하는 등의 피해를 입힐 수 있습니다.\nDjango나 Flask를 사용하는 경우 외부 입력값에 악의적인 스크립트가 삽입되지 못하도록 프레임워크 자체에서 공격에 사용될 수 있는 문자를 HTML 엔터티로 치환하여 응답 페이지를 생성하므로 크로스 사이트 스크립트로부터 보호됩니다. 하지만 크로스 사이트 스크립트 공격으로부터 보호해주는 기능을 프레임워크가 제공하더라도 완전하지 않거나 개발자의 실수로 보호 기능이 무효화되는 경우가 있으므로 주의해야 합니다.\nHTML의 `safe`와 같은 옵션을 사용하지 않고 flask의 동적 웹 페이지 생성에 사용되는 데이터가 있는 경우 escape를 통해서 치환하여 사용해야 합니다.",
  "rule.sast.sw.py.16.example.0.dangerous": "라인 5: autoescape 옵션 값이 off로 되어있어서 XSS 공격에 노출될 수 있습니다.\n라인 13: safe 필터 사용으로 XSS 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.16.example.0.safe": "라인 5: `autoescape` 옵션을 on으로 설정하여 XSS 공격을 막을 수 있습니다.\n라인 12: `safe` 필터를 사용하지 않았기 때문에 안전합니다.",
  "rule.sast.sw.py.16.name": "크로스 사이트 스크립트(HTML)",
  "rule.sast.sw.py.16.option.exclude_dir.description": "검출 제외 폴더 경로를 glob 패턴을 사용하여 입력합니다.<br />예시) src/java/**/core/**",
  "rule.sast.sw.py.16.option.exclude_dir.name": "제외 폴더 경로",
  "rule.sast.sw.py.16.option.exclude_extension.description": "검출 제외 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.sw.py.16.option.exclude_extension.name": "제외 파일 확장자",
  "rule.sast.sw.py.16.option.rule.description": "검출 규칙을 정규식을 사용하여 지정합니다.",
  "rule.sast.sw.py.16.option.rule.name": "검출 규칙",
  "rule.sast.sw.py.16.option.target_dir.description": "분석 대상 폴더 경로를 glob 패턴을 사용하여 입력합니다.<br />예시) src/java/**/core/**",
  "rule.sast.sw.py.16.option.target_dir.name": "분석 대상 폴더",
  "rule.sast.sw.py.16.option.target_extension.description": "분석 대상 확장자를 입력합니다.<br />예시) html",
  "rule.sast.sw.py.16.option.target_extension.name": "분석 대상 확장자",
  "rule.sast.sw.py.17.description": "검증되지 않은 외부 입력 값이 운영체제 명령어로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 악영향을 미칠 수 있는 보안약점입니다.\n외부 입력값이 시스템 명령에 포함되는 경우 |, ;, &, :, >, <, `(백틱), \\, ! 과 같이 멀티라인 파이프 리다이렉트 문자 등을 필터링하고 명령을 수행할 파일명, 옵션을 제한하여 인자로 사용해야 합니다.\n운영체제 명령어를 실행하는 메소드를 실행하기 전에 replace 등을 통해 [`|`, `;`, `&`, `:`, `>`, `<`, ```, `\\\\`, `!`] 값을 필터링하거나 사용자가 지정한 화이트리스트에 있는 항목만 사용하게 합니다.",
  "rule.sast.sw.py.17.example.0.dangerous": "라인 8: 외부에서 입력 받은 값을 그대로 사용하여 위험합니다.",
  "rule.sast.sw.py.17.example.0.safe": "라인 10: 4번 라인에서 미리 정해둔 화이트리스트가 아닌 입력 값이 들어오는 것을 막아서 13번 라인이 안전하게 동작합니다.",
  "rule.sast.sw.py.17.example.1.dangerous": "라인 9: 외부에서 입력 받은 값을 그대로 사용하고 shell 기능을 True로 사용하여 쉘 기능 검증 없이 실행하므로 위험합니다.",
  "rule.sast.sw.py.17.example.1.safe": "라인 9: 외부에서 입력 받은 값을 필터링하고 13번 라인에서 shell=True 옵션을 제거하여 안전하게 동작합니다.",
  "rule.sast.sw.py.17.name": "운영체제 명령어 삽입",
  "rule.sast.sw.py.17.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.17.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.17.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.17.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.17.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.py.17.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.17.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) system$param(1)",
  "rule.sast.sw.py.17.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.17.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.py.17.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.18.description": "1) 서버에서 실행될 수 있는 스크립트 파일(asp, jsp, php, sh, ...)이 업로드 가능하고, 2) 이 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부 명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있는 보안약점입니다.\n파일 업로드 공격을 방지하기 위해서 특정 파일 유형만 업로드를 허용하도록 화이트리스트 방식으로 파일 유형을 제한해야 합니다. 이 때 파일의 확장자 및 업로드된 파일의 `Content-Type`도 같이 확인해야 하고, 파일 크기 및 파일 개수를 제한하여 시스템 자원 고갈 등으로 서비스 거부 공격이 발생하지 않도록 합니다.\n사용자로부터 받은 파일의 `content_type`, `size`, `name.lower()`를 통해 파일의 크기, 개수, 확장자를 화이트리스트로 작성하여 기준을 만족하면 저장합니다.",
  "rule.sast.sw.py.18.example.0.dangerous": "라인 9: 사용자로부터 받은 파일을 검증 없이 바로 저장하기 때문에 위험합니다.",
  "rule.sast.sw.py.18.example.0.safe": "라인 22, 25, 28: 파일의 타입, 크기, 확장자를 6, 8, 10 라인에서 정의한 화이트리스트를 통해 검증하여 안전하게 실행합니다.",
  "rule.sast.sw.py.18.name": "위험한 형식 파일 업로드",
  "rule.sast.sw.py.18.option.custom_taint_filter.name": "custom_taint_filter",
  "rule.sast.sw.py.18.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(1) of \"endsWith\"",
  "rule.sast.sw.py.18.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.18.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.18.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.18.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.py.18.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.18.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of \"move_uploaded_file\"",
  "rule.sast.sw.py.18.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.18.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_FILES$variable",
  "rule.sast.sw.py.18.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.19.description": "검증되지 않은 외부 입력값을 자동으로 외부 사이트의 주소로 연결하는 서버 프로그램은 피싱 공격에 노출될 수 있습니다. 클라이언트에서 전송된 URL 주소로 연결하기 때문에 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속하도록 공격할 수 있습니다.\nPython의 `redirect` 함수를 사용할 경우에도 해당 프레임워크 버전에서 알려진 취약점이 있는지 확인해야 합니다. Flask 프레임워크의 Flask-Security-Too 라이브러리의 경우 `get_post_logout_redirect` 함수와 `get_post_login_redirect` 함수가 4.1.0 이전 버전에서 URL 유효성 검사를 우회하고 사용자를 임의의 URL로 리디렉션할 수 있는 취약점이 존재합니다.\n리디렉션을 허용하는 모든 URL을 서버측 화이트리스트로 관리하고 사용자 입력값을 리디렉션하는 URL이 존재하는지 검증해야 합니다.",
  "rule.sast.sw.py.19.example.0.dangerous": "라인 5: 사용자로부터 받은 url 주소를 검증하지 않고 바로 redirect 함수의 인자로 사용하기 때문에 위험합니다.",
  "rule.sast.sw.py.19.example.0.safe": "라인 14: 3번 라인에서 정의한 화이트리스트를 검증하여 안전하게 동작합니다.",
  "rule.sast.sw.py.19.name": "신뢰되지 않은 URL 주소로 자동접속 연결",
  "rule.sast.sw.py.19.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.19.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.19.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.19.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.19.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.py.19.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.19.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) header$param(1)",
  "rule.sast.sw.py.19.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.19.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.py.19.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.20.description": "부적절한 XML 외부 개체 참조는 서버에서 XML 외부 엔터티를 처리할 수 있도록 설정된 경우에 발생할 수 있는 보안약점입니다. 취약한 XML 파서(parser)가 외부 값을 참조하는 XML 값을 처리할 때, 공격자가 삽입한 공격 구문이 실행되어 서버 파일 접근, 불필요한 자원 사용, 인증 우회, 정보 노출 등이 발생할 수 있습니다.\nPython에서는 간단한 XML 데이터 구문 분석 및 조작에 사용할 수 있는 기본 XML 파서가 제공됩니다. 이 파서는 유효성 검사와 같은 기능을 지원하지 않습니다. 기본 제공되는 XML 파서는 외부 엔터티를 지원하지 않지만 다른 XML 공격에 취약할 수 있습니다.\nXML을 파싱할 때 텍스트 값을 엔터티로 변환해 주는 옵션인 `resolve_entities` 기능을 false로 설정해야 합니다.",
  "rule.sast.sw.py.20.example.0.dangerous": "라인 15: setFeature()의 두 번째 파라미터를 True로 설정하여 위험합니다.",
  "rule.sast.sw.py.20.example.0.safe": "라인 15: setFeature()의 두 번째 파라미터를 False로 설정하여 안전합니다.",
  "rule.sast.sw.py.20.name": "부적절한 XML 외부 개체 참조",
  "rule.sast.sw.py.21.description": "검증되지 않은 외부 입력 값을 XQuery 또는 XPath 쿼리문을 생성하는 문자열로 사용하는 경우 공격자가 쿼리문의 구조를 변경하는 임의의 쿼리를 실행하여 허가되지 않은 데이터를 열람하거나 인증 절차를 우회할 수 있는 보안약점입니다.\n`xml.etree.ElementTree` 모듈은 제한적인 Xpath 기능을 제공하고 Xpath 표현식을 매개변수화해서 사용하는 방법을 제공하지 않습니다. Python 3.3 이후 보안상의 이유로 금지된 `xml.etree.ElementTree` 모듈 대신 lxml 라이브러리를 사용하고, 외부 입력 값은 매개변수화해서 사용해야 합니다.\nXQuery 또는 XPath 쿼리에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링하고 파라미터화(Parameterized)된 쿼리문을 지원하는 XQuery를 사용하도록 합니다.",
  "rule.sast.sw.py.21.example.0.dangerous": "라인 10: 4번 라인에서 외부에서 입력받은 값을 그대로 저장하여 11번 라인의 xpath()를 실행하기 때문에 위험합니다.",
  "rule.sast.sw.py.21.example.0.safe": "라인 11: 4번 라인에서 외부에서 입력받은 값을 매개변수화하여 사용하기 때문에 안전합니다.",
  "rule.sast.sw.py.21.name": "XML 삽입",
  "rule.sast.sw.py.21.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.21.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.21.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.21.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.21.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.py.21.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.21.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) xpath$param(1)",
  "rule.sast.sw.py.21.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.21.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.py.21.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.22.description": "검증되지 않은 외부 입력 값이 LDAP(Lightweight Directory Access Protocol) 명령어로 사용될 경우, 공격자가 LDAP 명령문의 구성을 마음대로 바꿀 수 있는 보안약점입니다.\nPython에는 Python-ldap 및 ldap3라는 두 개의 라이브러리가 있습니다. ldap3 모듈은 Python 2.6부터 모든 Python 3 버전에 호환됩니다. ldap3에서는 LDAP 서버와 상호 작용할 수 있는 완전한 기능의 추상화 계층이 포함되어 있습니다. python-ldap은 OpenLDAP에서 만든 Python2의 패키지로 Python3에서는 ldap3 라이브러리를 사용하는 것을 권장합니다.\n외부에서 입력 받은 값을 `search()`에 사용하기 전에 `escape_filter_chars()`를 통해 이스케이프하여 사용해야 합니다.",
  "rule.sast.sw.py.22.example.0.dangerous": "라인 17: 외부에서 입력받은 값이 들어있는 search_str를 필터링하지 않고 바로 사용하므로 위험합니다.",
  "rule.sast.sw.py.22.example.0.safe": "라인 16: escape_filter_chars()를 통해 외부에서 입력받은 search_keyword를 필터링하므로 안전합니다.",
  "rule.sast.sw.py.22.name": "LDAP 삽입",
  "rule.sast.sw.py.22.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.py.22.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.22.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.22.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.22.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.22.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.22.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(search_s\")",
  "rule.sast.sw.py.22.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.22.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.py.22.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.23.description": "크로스 사이트 요청 위조는 특정 웹 사이트에 대해서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격을 말합니다.\nPython에서 가장 많이 사용하고 있는 Django 프레임워크와 Flask 프레임워크에서는 각각 CSRF 토큰 기능을 지원하고 있습니다. Django는 `{% csrf token %}` 태그를 사용하여 CSRF 토큰 기능을 제공하고 Flask에서는 Flask-WTF 확장 라이브러리를 통해 `{{form.csrf_token}}` 태그를 사용하여 CSRF 토큰 기능을 제공하므로 태그를 안전하게 사용할 수 있습니다.\nDjango 프레임워크와 Flask 프레임워크는 미들웨어와 프레임워크에서 기본적으로 CSRF 토큰을 사용해서 CSRF 공격으로부터 보호하는 기능을 가지고 있습니다. 해당 기능을 활성화하기 위해 form 태그 내부에 `csrf_token`을 사용해야 합니다.",
  "rule.sast.sw.py.23.example.0.dangerous": "라인 3: 주석 처리로 인해 CSRF 기능이 비활성화되기 때문에 위험합니다.",
  "rule.sast.sw.py.23.example.0.safe": "라인 3: CSRF protection을 활성화했기 때문에 안전합니다.",
  "rule.sast.sw.py.23.example.1.dangerous": "라인 5: csrf_exempt 데코레이터로 미들웨어에서 보호되는 CSRF 기능을 해제하여 위험합니다.",
  "rule.sast.sw.py.23.example.1.safe": "라인 5: csrf_exempt 데코레이터를 주석 처리하여 CSRF 기능을 활성화하기 때문에 안전합니다.",
  "rule.sast.sw.py.23.example.2.dangerous": "라인 3: csrf_token을 명시하지 않아 CSRF 검증 기능이 사용되지 않기 때문에 위험합니다.",
  "rule.sast.sw.py.23.example.2.safe": "라인 3: csrf_token 값을 명시하여 CSRF 검증 기능이 사용되기 때문에 안전합니다.",
  "rule.sast.sw.py.23.example.3.dangerous": "라인 3: CSRF 기능을 사용하지 않아 위험합니다.",
  "rule.sast.sw.py.23.example.3.safe": "라인 8: CSRF 설정을 추가하여 app을 설정하여 안전합니다.",
  "rule.sast.sw.py.23.example.4.dangerous": "라인 2: csrf_token을 명시하지 않아 CSRF 검증 기능이 동작하지 않기에 위험합니다.",
  "rule.sast.sw.py.23.example.4.safe": "라인 3: {{ form.csrf_token }}을 명시하여 CSRF 검증이 수행되기에 안전합니다.",
  "rule.sast.sw.py.23.name": "크로스 사이트 요청 위조",
  "rule.sast.sw.py.23.option.csrf_exempt_decorator.description": "CSRF 보호를 해제하는 데코레이터의 이름을 작성합니다.",
  "rule.sast.sw.py.23.option.csrf_exempt_decorator.name": "CSRF 보호 해제 데코레이터",
  "rule.sast.sw.py.23.option.csrf_exempt_method.description": "CSRF 보호를 해제하는 함수의 이름을 작성합니다.",
  "rule.sast.sw.py.23.option.csrf_exempt_method.name": "CSRF 보호 해제 함수",
  "rule.sast.sw.py.24.description": "검증되지 않은 외부 입력 값이 서버 간의 요청에 사용되면 악의적인 행위가 발생할 수 있는 보안약점입니다. 웹 서버에 취약한 애플리케이션이 존재하는 경우 공격자는 URL 또는 요청문을 위조하여 접근 통제를 우회하는 방식으로 비정상적인 동작을 유도하거나 신뢰된 네트워크에 있는 데이터를 획득할 수 있습니다.\n식별할 수 있는 범위 내에서 사용자의 입력 값을 다른 시스템의 서비스 호출에 사용하는 경우, 사용자의 입력 값을 화이트리스트 방식으로 필터링합니다. 사용자가 지정하는 무작위의 URL을 받아들여야 한다면 내부의 URL을 블랙리스트로 지정하여 필터링합니다. 또한 동일한 내부 네트워크에 있더라도 기기 인증이나 접근 권한 확인을 통하여 요청이 이루어질 수 있도록 합니다.",
  "rule.sast.sw.py.24.example.0.dangerous": "라인 9: 5번 라인에서 사용자에게 입력받은 값을 화이트리스트를 통해 검증하지 않고 결과를 반환하여 위험합니다.",
  "rule.sast.sw.py.24.example.0.safe": "라인 18: 7번 라인에서 정의한 화이트리스트를 통해 14번 라인에서 사용자에게 입력받은 값을 검증하므로 안전합니다.",
  "rule.sast.sw.py.24.name": "서버사이드 요청 위조",
  "rule.sast.sw.py.24.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.24.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.24.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.24.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.24.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.py.24.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.24.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) CFStreamCreatePairWithSocketToHost$param(2)",
  "rule.sast.sw.py.24.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.24.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.py.24.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2402.description": "위험한 임시 파일 생성 체커는 임시 파일을 부적절한 방법으로 생성하는 경우를 검출합니다.\n임시 파일의 이름을 공격자가 예측 가능한 이름으로 생성하거나 임의의 프로그램이 접근 가능한 권한으로 생성하면 공격자가 임시 파일의 내용을 조작하여 프로그램에 오동작을 일으킬 수 있습니다.\n임시 파일은 예측 불가능한 이름을 사용하고 프로그램이 단독으로 사용할 수 있도록 생성하는 것이 좋습니다.",
  "rule.sast.sw.py.2402.example.0.dangerous": "라인 3: 안전하지 않은 API인 os.tmpnam() 함수로 얻은 임시 파일 경로를 사용해 임시 파일을 생성합니다.",
  "rule.sast.sw.py.2402.example.0.safe": "라인 3: tempfile 모듈에서 제공하는 안전한 방법으로 임시 파일을 생성합니다.",
  "rule.sast.sw.py.2402.name": "위험한 임시 파일 생성",
  "rule.sast.sw.py.2402.option.temp_file_name.description": "금지할 임시 파일 이름 규칙을 입력합니다.<br />예시) *temp*",
  "rule.sast.sw.py.2402.option.temp_file_name.name": "임시파일 이름 규칙",
  "rule.sast.sw.py.2403.description": "잘못된 umask 인자 체커는 umask() 함수에 잘못된 값을 인자로 전달하는 경우를 검출합니다.\nchmod 명령의 인자 양식과 umask 명령의 인자 양식이 비슷하지만 정반대로 해석되어 혼동하기 쉽기 때문에 검출합니다. chmod 명령에서는 7이 모든 것(읽기, 쓰기, 실행)을 허용하는 것, 0이 모든 것을 금지함을 의미합니다. 하지만 umask 명령에서는 거꾸로 7이 모든 것을 금지, 0이 모든 것을 허용을 의미합니다. 또한 chmod 명령이 3자리 8진수를 인자로 받는 것과 달리, umask 명령은 2자리 8진수를 인자로 받습니다. Python의 umask() 함수는 OS의 umask 명령과 같은 방식으로 작동하므로 인자도 같은 형태로 전달해야 합니다.\numask() 함수의 용법에 맞는 2자리 8진수를 인자를 전달합니다.",
  "rule.sast.sw.py.2403.example.0.dangerous": "라인 3: umask() 함수를 올바르지 않은 인자를 사용하여 호출했습니다.",
  "rule.sast.sw.py.2403.example.0.safe": "라인 3: umask() 함수를 올바른 인자를 사용하여 호출했습니다.",
  "rule.sast.sw.py.2403.name": "잘못된 umask 인자",
  "rule.sast.sw.py.2407.description": "직접 동적 코드 평가 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.\n프로그램 실행 중 eval() 함수에 전달되는 문자열은 그 시점에 코드로 해석되어 직접 실행됩니다.\n검증되지 않은 외부 입력이 동적으로 실행되는 코드에 사용될 경우 공격자가 원하는 임의의 작업을 수행할 수 있습니다.\n우선 동적으로 계산되는 코드가 프로그램 설계에 꼭 필요한지 한 번 더 확인하고 가능하다면 같은 동작을 정적 코드를 사용한 다른 방법으로 구현합니다. 대부분의 평범한 프로그램의 동작은 동적으로 계산되는 코드 없이도 구현이 가능하며, 많은 경우에 동적 코드는 단지 코드 작성자의 사소한 귀찮음을 회피하려는 의도로 사용됩니다. 동적 코드 사용이 불가피하다면, 외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.py.2407.example.0.dangerous": "라인 5: 외부 입력(request.GET['operation'])을 eval() 함수의 인자 생성에 사용하고 있습니다. 예를 들어 userId가 1, dangerous_function_call()과 같은 값으로 전달된다면 공격 코드가 실행될 수 있습니다.",
  "rule.sast.sw.py.2407.example.0.safe": "라인 6: 입력이 의도한 종류의 값인지 확인한 후 사용하는 것이 좋습니다.",
  "rule.sast.sw.py.2407.name": "직접 동적 코드 평가",
  "rule.sast.sw.py.2407.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2407.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2407.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2407.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2407.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\+$operand(*)->return",
  "rule.sast.sw.py.2407.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2407.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) document.write$param(*)",
  "rule.sast.sw.py.2407.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2407.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) document.URL$variable",
  "rule.sast.sw.py.2407.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2408.description": "로그 조작 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.\n사용자 입력을 검증 없이 그대로 로그에 출력하면 로그 내용에 공격자가 임의의 내용을 삽입하여 로그를 확인하는 보안 담당자 등을 헷갈리게 만들 수 있습니다. 이렇게 조작된 로그를 통해 잘못된 의사 결정이 이루어지면 그 결과를 공격에 활용할 수 있습니다.\n로그에 출력하기 전에 외부 입력값을 검사합니다. 특히 줄 바꿈 문자는 제거하는 것이 좋습니다.",
  "rule.sast.sw.py.2408.example.0.dangerous": "라인 8: 안전하지 않은 request.GET['id'] 값이 logger.error() 함수에 사용됩니다.",
  "rule.sast.sw.py.2408.example.0.safe": "라인 8: 문자열의 내용물을 확인하여 안전한 내용만 출력에 사용되도록 합니다.",
  "rule.sast.sw.py.2408.name": "로그 조작",
  "rule.sast.sw.py.2408.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2408.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2408.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2408.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2408.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.py.2408.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2408.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) error_log$param(1)",
  "rule.sast.sw.py.2408.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2408.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.py.2408.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2409.description": "SMTP 명령어 삽입 체커는 외부 입력으로부터 전달받은 위험한 데이터로 SMTP 명령을 실행하는 경우를 검출합니다.\n외부 입력이 검증되지 않은 채로 smtp 명령어 실행 인수로 사용되면 시스템이 스팸 메일 살포에 사용당할 수 있습니다.\n외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.py.2409.example.0.dangerous": "라인 11: 안전하지 않은 request.GET['user'], request.GET['cmd'] 값이 smtp 명령어를 실행하는 SMTP.docmd() 함수에 사용됩니다.",
  "rule.sast.sw.py.2409.example.0.safe": "라인 10: 명령으로는 정해진 값만을 사용하고, 인자로는 확인된 값만을 사용합니다.",
  "rule.sast.sw.py.2409.name": "SMTP 명령어 삽입",
  "rule.sast.sw.py.2409.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2409.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2409.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2409.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2409.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.py.2409.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2409.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) system$param(1)",
  "rule.sast.sw.py.2409.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2409.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.py.2409.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2410.description": "Memcached 삽입 체커는 외부 입력으로부터 전달받은 데이터를 확인 없이 memcache에 저장하는 경우를 검출합니다.\n외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행한 후 저장하지 않으면 캐시에 의도하지 않은 값이 저장되어 공격에 사용될 수 있습니다.\n외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.py.2410.example.0.dangerous": "라인 7: 안전하지 않은 request.GET['id'] 값이 memcache 명령을 수행하는 cache.set() 함수에 사용됩니다.",
  "rule.sast.sw.py.2410.example.0.safe": "라인 7: 확인된 값만 cache.set 인수로 사용되도록 합니다.",
  "rule.sast.sw.py.2410.name": "Memcached 삽입",
  "rule.sast.sw.py.2410.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2410.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2410.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2410.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2410.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.py.2410.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2410.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) system$param(1)",
  "rule.sast.sw.py.2410.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2410.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.py.2410.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2412.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 파일명을 외부 입력으로 사용하는 경우 경로 순회(Directory Traversal) 공격의 위험이 있는 문자(`, /, \\, ..  등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.py.2412.example.0.dangerous": "라인 5: 안전하지 않은 request.GET['name'] 값을 경로로 사용하여 파일에 접근합니다.",
  "rule.sast.sw.py.2412.example.0.safe": "라인 5: 안전하지 않은 값을 경로로 접근하지 않거나 필터링을 거친 안전한 값만을 사용합니다.",
  "rule.sast.sw.py.2412.name": "경로 조작",
  "rule.sast.sw.py.2412.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2412.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2412.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2412.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2412.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.py.2412.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2412.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) fread$param(1)",
  "rule.sast.sw.py.2412.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2412.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.py.2412.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2415.description": "시스템 혹은 구성 설정의 외부 제어 체커는 검증되지 않은 외부 입력값으로 시스템 설정이나 구성 설정을 변경하는 경우를 검출합니다.\n시스템 설정이나 구성 요소를 제어할 수 있으면 예상하지 못한 결과(예: 서비스 중단)를 일으키거나 악용될 수 있습니다.\n외부 입력을 사용해 시스템 설정이나 환경 변수 등을 변경할 때 적절한 검증을 거치도록 합니다.",
  "rule.sast.sw.py.2415.example.0.dangerous": "라인 6: 외부 입력이 확인 없이 os의 환경 변수에 전달되었습니다.",
  "rule.sast.sw.py.2415.example.0.safe": "라인 6: 외부 입력값에 문제가 없는지 확인 후 사용합니다.",
  "rule.sast.sw.py.2415.name": "시스템 혹은 구성 설정의 외부 제어",
  "rule.sast.sw.py.2415.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2415.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2415.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2415.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2415.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.py.2415.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2415.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.create$param(*)",
  "rule.sast.sw.py.2415.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2415.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.py.2415.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2418.description": "DJANGO 파일 응답 조작 체커는 외부 입력으로부터 전달받은 경로로 파일을 생성하여 FileResponse를 생성하는 경우를 검출합니다.\n파일 응답을 생성하면 응답에 전달된 경로로 시스템 내의 파일 시스템에 접근하게 됩니다. 검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 파일명을 외부 입력으로 사용하는 경우 경로 순회(Directory Traversal) 공격의 위험이 있는 문자(`, /, \\, .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.py.2418.example.0.dangerous": "라인 5: 안전하지 않은 request.GET['file'] 값을 경로로 사용하여 파일을 연 후 FileResponse로 반환합니다.",
  "rule.sast.sw.py.2418.example.0.safe": "라인 5: 안전하지 않은 값을 경로로 접근하지 않거나 필터링을 거친 안전한 값만을 사용합니다.",
  "rule.sast.sw.py.2418.name": "Django 파일 응답 조작",
  "rule.sast.sw.py.2418.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2418.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2418.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2418.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2418.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.py.2418.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2418.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) fread$param(1)",
  "rule.sast.sw.py.2418.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2418.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.py.2418.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.25.description": "HTTP 요청에 들어 있는 파라미터가 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(CarriageReturn)이나 LF(LineFeed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 이용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손 공격 등을 할 수 있습니다.\nPython 3.9.5+ 버전에서의 URLValidator에서 HTTP 응답 분할 취약점이 보고되기도 했고 해당 라이브러리를 사용하는 Django버전에도 영향이 있습니다. HTTP 응답 분할 공격으로부터 애플리케이션을 안전하게 지키려면 최신 버전의 라이브러리와 프레임워크를 사용하고 외부 입력값에 대해서는 철저한 검증 작업을 수행해야 합니다.\n요청 파라미터의 값을 HTTP 응답 헤더(예를 들어, Set-Cookie 등)에 포함시킬 경우 CR(`\\r`), LF(`\\n`)와 같은 개행문자를 제거하도록 합니다.",
  "rule.sast.sw.py.25.example.0.dangerous": "라인 7: 외부에서 입력받은 content_type에서 개행문자를 제거하지 않고 사용하여 위험합니다.",
  "rule.sast.sw.py.25.example.0.safe": "라인 6, 7: 응답 분할을 예방하기 위해 개행문자(\\r, \\n)를 제거해주어 안전합니다.",
  "rule.sast.sw.py.25.name": "HTTP 응답 분할",
  "rule.sast.sw.py.25.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.py.25.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.25.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.25.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.25.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.25.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.25.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.py.25.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.25.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) variable of fqn(\"django.http.HttpRequest.GET\")",
  "rule.sast.sw.py.25.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.26.description": "애플리케이션이 외부 입력값에 대한 신뢰를 전제로 보호 메커니즘을 사용하는 경우, 공격자가 입력값을 조작할 수 있다면 보호 메커니즘을 우회할 수 있습니다. 그러므로 충분한 암호화, 무결성 체크를 수행하고 이와 같은 메커니즘이 없는 경우에는 외부 사용자에 의한 입력값을 신뢰해서는 안 됩니다.\nPython의 Djagno 프레임워크에서 세션을 관리하는 기능을 제공하고 있습니다. 따라서 이 기능을 사용하는 경우 세션 쿠키의 만료 시점을 설정할 수 있으며 DRF(Django Rest Framework)에서 제공하는 토큰 및 세션 기능을 사용하여 안전하게 구성할 수 있습니다.\n상태 정보나 민감한 데이터 특히 사용자 세션 정보와 같은 중요한 데이터는 위변조 가능성이 높은 쿠키보다 세션에 저장하도록 합니다.",
  "rule.sast.sw.py.26.example.0.dangerous": "라인 4: 민감한 정보를 쿠키에서 받아오기 때문에 위험합니다.",
  "rule.sast.sw.py.26.example.0.safe": "라인 4: 민감한 정보를 세션을 통해 받아오기 때문에 안전합니다.",
  "rule.sast.sw.py.26.name": "보안 기능 결정에 사용되는 부적절한 입력값",
  "rule.sast.sw.py.27.description": "검증되지 않은 외부 입력 값을 입출력 함수의 포맷 문자열로 사용하는 경우 발생할 수 있는 보안약점입니다. 공격자는 포맷 문자열을 이용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있습니다. 그 결과, 공격자는 취약한 프로세스의 권한을 취득하여 임의의 코드를 실행할 수 있습니다.\nPython에서는 문자열의 포맷팅 방법으로 `% formatting`, `str.format`, `f-string` 3가지 방법의 문자열 포맷팅 형식을 제공하고 있습니다. f-string 방법은 Python 3.6부터 도입된 포맷팅 방법입니다. 공격자는 포맷 문자열을 이용하여 내부 정보를 문자열로 만들 수 있으며, 이를 반환하는 경우 내부의 중요 정보가 유출될 수 있습니다.\n외부에서 입력 받은 문자열은 반드시 포맷 지정자를 사용하여 바인딩한 후에 사용하고 직접적으로 포맷 문자열로 사용해서는 안 됩니다.",
  "rule.sast.sw.py.27.example.0.dangerous": "라인 10: 7번 라인에서 받는 값을 공격자가 # {user.__init__.__globals__[AUTHENTICATE_KEY]} 형식의 문자열 입력 시 글로벌 변수에 접근하여 2번 라인의 AUTHENTICATE_KEY의 값을 탈취 할 수 있습니다.",
  "rule.sast.sw.py.27.example.0.safe": "라인 8: 외부에서 받은 문자열을 포맷 문자열로 사용하지 않아 안전합니다.",
  "rule.sast.sw.py.27.name": "포맷 스트링 삽입",
  "rule.sast.sw.py.27.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.py.27.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.27.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.27.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.27.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.27.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.27.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"format\")",
  "rule.sast.sw.py.27.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.27.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.py.27.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2778.description": "Django 디버그 설정에 의한 정보 노출 체커는 Django 프레임워크를 통해 생성된 애플리케이션 설정 파일에서 디버그 모드를 켜놓은 경우를 검출합니다.\nDjango 프레임워크로 애플리케이션을 생성하면 기본적으로 디버그 모드가 켜져있게 됩니다. 이것은 개발을 진행할 때 유용하지만 서버의 오류 메시지로 과도한 정보가 노출되기 때문에 릴리즈 전에는 반드시 디버그 모드를 꺼야 합니다.\nsettings.py 파일의 DEBUG 변수에 할당되는 값을 False로 수정합니다. 개발 과정에서는 이 설정이 크게 문제가 되지 않지만 서비스가 시작되기 전까지 반드시 수정해야 합니다.",
  "rule.sast.sw.py.2778.example.0.dangerous": "라인 3: settings.py 파일의 DEBUG 변수가 True 로 설정되어 있습니다.",
  "rule.sast.sw.py.2778.example.0.safe": "라인 3: settings.py 파일의 DEBUG 변수 값을 False 로 바꿔줍니다.",
  "rule.sast.sw.py.2778.name": "Django 디버그 설정에 의한 정보 노출",
  "rule.sast.sw.py.2781.description": "Django에서 sleep() 함수 사용 체커는 Django 프레임워크를 통해 생성된 애플리케이션에서 요청에 응답할 때 sleep() 함수를 사용하는 경우를 검출합니다.\nHTTP 요청에 대해 응답을 생성하는 도중 sleep() 함수를 사용할 경우 요청에 대한 응답 시간이 지연되며 그 동안 해당 요청과 응답이 프로세스의 리소스를 소모하기 때문에, 해당 요청을 대량으로 발생시키는 DoS(Denial of Service) 공격의 통로가 될 수 있습니다. 특히 개발자의 오해로 인해, 요청에 대한 응답을 지연시키는 식으로 DOS 공격을 방어하기 위한 의도로 sleep() 함수가 사용되기도 하는데 이는 공격을 방어하기는 커녕 더 큰 문제를 일으키는 방법입니다.\n요청 응답 도중 sleep() 함수를 사용하지 않습니다.",
  "rule.sast.sw.py.2781.example.0.dangerous": "라인 5: 응답을 고의로 지연시키기 위해 위와 같이 sleep 함수를 호출하는 경우 문제가 될 수 있습니다.",
  "rule.sast.sw.py.2781.example.0.safe": "라인 5: 응답 속도 조절에 sleep을 사용하지 않습니다.",
  "rule.sast.sw.py.2781.name": "Django에서 sleep() 함수 사용",
  "rule.sast.sw.py.2781.option.django_response_fqn.description": "Django가 요청에 대해 응답할 때 사용되는 함수들의 FQN을 입력합니다.",
  "rule.sast.sw.py.2781.option.django_response_fqn.name": "Django의 응답 함수",
  "rule.sast.sw.py.2781.option.sleep_api_fqn.description": "쓰레드를 일정시간 정지시키는 함수들의 FQN을 입력합니다.",
  "rule.sast.sw.py.2781.option.sleep_api_fqn.name": "쓰레드 일시정지 함수",
  "rule.sast.sw.py.28.description": "애플리케이션이 보안 관련 자원에 대한 읽기 또는 수정하기 권한을 의도하지 않게 허용한 경우, 권한을 갖지 않은 사용자가 해당 자원을 사용하게 될 수 있습니다.\nPython의 `os.fchmod`, `os.chmod` 등의 함수를 사용하여 파일 생성 및 읽기 모드에서 권한을 설정할 수 있습니다.\n설정 파일, 실행 파일, 라이브러리 등은 SW 관리자에 의해서만 읽고 쓰기가 가능하도록 설정합니다.",
  "rule.sast.sw.py.28.example.0.dangerous": "라인 2: 모든 사용자에게 읽기, 쓰기, 실행 권한을 부여하므로 위험합니다.",
  "rule.sast.sw.py.28.example.0.safe": "라인 2: 소유자에게만 모든 권한을 부여하기 때문에 안전합니다.",
  "rule.sast.sw.py.28.name": "중요한 자원에 대한 잘못된 권한 설정",
  "rule.sast.sw.py.28.option.chmod_option.description": "과도한 권한이라 판단되는 chmod의 옵션값을 작성합니다.",
  "rule.sast.sw.py.28.option.chmod_option.name": "chmod 옵션",
  "rule.sast.sw.py.28.option.umask_option.description": "과도한 권한이라 판단되는 umask의 옵션값을 작성합니다.",
  "rule.sast.sw.py.28.option.umask_option.name": "umask 옵션",
  "rule.sast.sw.py.2814.description": "부적절한 인증 체커는 사용자 인증 후 모든 실행 경로에 대해 적절하게 접근 제어를 수행하지 않는 코드를 검출합니다.\n프로그램이 모든 가능한 실행 경로에 대해서 접근 제어를 검사하지 않거나 불완전하게 검사하는 경우, 공격자는 접근 가능한 실행 경로를 통해 정보를 유출할 수 있습니다.\n애플리케이션이 제공하는 정보와 기능을 역할에 따라 배분함으로써 공격자에게 노출되는 공격 노출면(Attack Surface)을 최소화하고 사용자의 권한에 따른 ACL(Access Control List)을 관리하여 정보 유출을 최소화해야 합니다.",
  "rule.sast.sw.py.2814.example.0.dangerous": "라인 6: 사용자는 명시되었지만 비밀번호가 전달되지 않았습니다.\n라인 13: 사용자 인증을 위한 별도의 작업을 수행하지 않으며 익명 바인딩(anonymous binding)을 허용합니다.",
  "rule.sast.sw.py.2814.example.0.safe": "라인 6: 사용자 ID와 비밀번호로 접근하도록 접근 제어를 사용합니다.",
  "rule.sast.sw.py.2814.name": "부적절한 인증",
  "rule.sast.sw.py.2816.description": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 경우를 검출합니다.\n중요 정보를 공개된 저장소에 저장할 때 암호화하지 않는 경우 인증 받지 않은 주체에 의해서 데이터 노출, 또는 스니핑이 발생할 수 있습니다.\n중요 정보를 외부 환경 파일에 저장할 때는, 반드시 암호화하여 저장하는 것이 바람직합니다. 또한 SW 설계 시 민감한 데이터와 일반 데이터를 가능한 분리하도록 합니다.",
  "rule.sast.sw.py.2816.example.0.dangerous": "라인 11: 비밀번호를 평문으로 파일에 저장하고 있습니다.",
  "rule.sast.sw.py.2816.example.0.safe": "라인 7: 중요 정보는 암호화를 수행하여 저장하도록 합니다.",
  "rule.sast.sw.py.2816.name": "민감한 정보를 평문으로 저장",
  "rule.sast.sw.py.2816.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2816.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2816.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2816.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2816.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.py.2816.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2816.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) fwrite$param(2)",
  "rule.sast.sw.py.2816.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2816.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.py.2816.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2817.description": "민감한 정보를 평문으로 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 경우를 검출합니다.\n사용자 또는 시스템의 중요 정보가 포함된 데이터를 평문으로 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있는 보안약점입니다.\n민감한 정보를 통신 채널을 통하여 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "rule.sast.sw.py.2817.example.0.dangerous": "라인 11: 비밀번호를 암호화 과정을 거치지 않고 소켓을 통해 전송하고 있습니다.",
  "rule.sast.sw.py.2817.example.0.safe": "라인 11: 네트워크를 통해 비밀번호를 전달하기 전에 암호화를 수행하도록 합니다.",
  "rule.sast.sw.py.2817.name": "민감한 정보를 평문으로 전송",
  "rule.sast.sw.py.2817.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2817.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2817.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2817.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2817.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.py.2817.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2817.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(2) of socket_send",
  "rule.sast.sw.py.2817.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2817.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.py.2817.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2818.description": "하드코딩된 암호화 키 체커는 소스 코드 내에 하드코딩되어 사용되는 암호화 키를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역계산하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역계산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코딩하여 코드를 작성하는 수도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코드하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "rule.sast.sw.py.2818.example.0.dangerous": "라인 7: 암호화를 수행하기 위해 하드코딩된 암호화 키를 사용합니다.",
  "rule.sast.sw.py.2818.example.0.safe": "라인 7: 암호화 키를 코드 내부에 상수 형태로 정의해서 사용하지 않도록 합니다.",
  "rule.sast.sw.py.2818.name": "하드코딩된 암호화 키",
  "rule.sast.sw.py.2818.option.encrypt_creator_key.description": "암호화 함수와 키 매개변수를 작성합니다.<br />예시) Crypto.Cipher.*new.*:key:1",
  "rule.sast.sw.py.2818.option.encrypt_creator_key.name": "암호화 함수와 키",
  "rule.sast.sw.py.2818.option.hash_creator_key.description": "해시 함수와 키 매개변수를 작성합니다.<br />예시) hashlib.*:key",
  "rule.sast.sw.py.2818.option.hash_creator_key.name": "해시 함수와 키",
  "rule.sast.sw.py.2822.description": "누락된 로그인 제어 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 경우를 검출합니다.\n구체적으로는 로그인 루틴을 호출하기 전에 루프를 통해 횟수 제한 등의 제어를 수행하는지 여부를 검사합니다. 단, 루프가 존재하더라도 제어 조건이 상수인 경우 오류로 검출합니다.\n공격자는 해당 취약점을 이용하여 무차별 대입 공격으로 로그인에 성공하고 권한을 획득할 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.py.2822.example.0.dangerous": "라인 8: 로그인 횟수 제한을 수행하고 있지 않습니다.",
  "rule.sast.sw.py.2822.example.0.safe": "라인 8: 세션에 로그인 시도 횟수를 저장해두고 로그인 시도 횟수를 제한합니다.",
  "rule.sast.sw.py.2822.name": "누락된 로그인 제어",
  "rule.sast.sw.py.2822.option.check_inner_control.description": "활성화 된 경우 로그인 루틴 내부에서 제어가 이루어지는지 검사합니다.",
  "rule.sast.sw.py.2822.option.check_inner_control.name": "내부 제어 검사",
  "rule.sast.sw.py.2822.option.check_outer_control.description": "활성화 된 경우 로그인 루틴이 외부로부터 제어되는지 검사합니다.",
  "rule.sast.sw.py.2822.option.check_outer_control.name": "외부 제어 검사",
  "rule.sast.sw.py.2822.option.login_function.description": "로그인 함수의 이름을 작성합니다.<br />예시) login",
  "rule.sast.sw.py.2822.option.login_function.name": "로그인 함수",
  "rule.sast.sw.py.2823.description": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보가 출력되는 경우를 검출합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "rule.sast.sw.py.2823.example.0.dangerous": "라인 10: 호출 스택 정보가 응답에 포함됩니다.",
  "rule.sast.sw.py.2823.example.0.safe": "라인 10: 민감한 정보는 응답에 작성하지 않습니다.",
  "rule.sast.sw.py.2823.name": "시스템 정보 노출",
  "rule.sast.sw.py.2823.option.forbidden_function.description": "호출 즉시 중요 정보가 노출되어 사용이 금지된 함수 이름을 작성합니다.<br /> 예시) traceback.print_.*",
  "rule.sast.sw.py.2823.option.forbidden_function.name": "금지된 함수",
  "rule.sast.sw.py.2823.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.2823.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2823.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.2823.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2823.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\+$operand(*)->return",
  "rule.sast.sw.py.2823.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2823.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .+\\.getFile$param(1)",
  "rule.sast.sw.py.2823.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2823.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) document.URL$variable",
  "rule.sast.sw.py.2823.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2840.description": "오류 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다. 오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.",
  "rule.sast.sw.py.2840.example.0.dangerous": "라인 8: print() 함수를 통해 예외 이름이 노출됩니다.",
  "rule.sast.sw.py.2840.example.0.safe": "라인 8: print() 함수를 삭제하고 꼭 필요한 경우에는 log를 사용하여 정보 노출을 최소화합니다.",
  "rule.sast.sw.py.2840.name": "오류 정보 노출",
  "rule.sast.sw.py.2840.option.custom_method.description": "오류 메세지가 출력되는 함수를 작성합니다.",
  "rule.sast.sw.py.2840.option.custom_method.name": "오류 메세지 출력 함수",
  "rule.sast.sw.py.2844.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성할 때 사용되는 외부 입력값에 대해 적절한 검증 절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 됩니다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증 절차를 우회할 수 있습니다. 예를 들어 XQuery 문은 `username='local_user1'`과 같이 작은 따옴표를 사용하여 username과 비교할 문자열을 구분합니다. 만약 외부에서 비교를 위해 삽입된 문자열에 작은 따옴표가 허용되는 경우 다음과 같은 문자열을 입력할 수 있습니다. `admin' or ''='` 위 문자열을 사용한 쿼리의 조건문은 다음과 같습니다. `username = 'admin' or ''=''`. 여기서 `''=''`은 언제나 true이므로 username 비교 자체를 우회할 수 있습니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "rule.sast.sw.py.2844.example.0.dangerous": "라인 10: 외부의 신뢰할 수 없는 입력이 XQuery 쿼리문 문자열을 생성하는데 사용됩니다.",
  "rule.sast.sw.py.2844.example.0.safe": "라인 10: 필터를 사용하여 안전한 XQuery 쿼리문만 사용하도록 합니다.",
  "rule.sast.sw.py.2844.name": "XQuery 삽입",
  "rule.sast.sw.py.2844.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.py.2844.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2844.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.2844.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2844.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.2844.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2844.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"compileQuery\")",
  "rule.sast.sw.py.2844.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2844.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.py.2844.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.2847.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 경우를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\nIP 주소를 알고 있는 서버의 경우 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.py.2847.example.0.dangerous": "라인 8: 도메인 이름을 통해 해당 요청이 신뢰할 수 있는지를 검사합니다. 그러나 공격자가 DNS 캐쉬 등을 조작하면 잘못된 신뢰 상태 정보를 얻을 수 있습니다.",
  "rule.sast.sw.py.2847.example.0.safe": "라인 7: DNS 조회에 의한 호스트 이름 비교를 하지 않고 IP 주소를 직접 비교하도록 수정합니다.",
  "rule.sast.sw.py.2847.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.py.2847.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.",
  "rule.sast.sw.py.2847.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.2847.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.",
  "rule.sast.sw.py.2847.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.2847.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.2847.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.2847.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) operand(*) of \"==\"",
  "rule.sast.sw.py.2847.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.2847.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) param(*) of fqn(\"socket.gethostbyaddr\")",
  "rule.sast.sw.py.2847.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.29.description": "개발자들은 환경설정 파일에 저장된 비밀번호를 보호하기 위하여 간단한 인코딩 함수를 사용하여 비밀번호를 감추는 방법을 사용하기도 합니다. 그렇지만 base64와 같은 지나치게 간단한 인코딩 함수로는 비밀번호를 제대로 보호할 수 없습니다.\n예전에는 해독하는데 몇 십 억년이 걸릴 것이라고 예상되던 알고리즘이 지금은 며칠이나 몇 시간 내에 해독되기도 합니다. RC2 (ARC2), RC4 (ARC4), RC5, RC6, MD4, MD5, SHA1, DES 알고리즘이 여기에 해당됩니다. Python 2에서는 PyCrypto를 사용하였지만 Python 3에서는 PyCrypto를 개선한 PyCryptodomes를 사용하여야 합니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하며, 학계 및 업계에서 이미 검증된 표준화된 알고리즘을 사용하도록 합니다. 기존에 취약하다고 알려진 DES, RC5등의 암호 알고리즘을 대신 3DES, AES, SEED 등의 안전한 암호 알고리즘을 사용합니다.",
  "rule.sast.sw.py.29.example.0.dangerous": "라인 5: 취약함 암호와 알고리즘인 DES를 사용하므로 위험합니다.",
  "rule.sast.sw.py.29.example.0.safe": "라인 5: AES 알고리즘을 사용하므로 안전합니다.",
  "rule.sast.sw.py.29.example.1.dangerous": "라인 5: 취약하다고 알려진 md5를 사용하여 위험합니다.",
  "rule.sast.sw.py.29.example.1.safe": "라인 5: sha-256를 사용하여 안전합니다.",
  "rule.sast.sw.py.29.name": "취약한 암호화 알고리즘 사용",
  "rule.sast.sw.py.29.option.encrypt_creator_prefix.description": "암호화 알고리즘 객체를 생성하는 라이브러리의 이름 앞부분을 입력합니다. <br />예시) Crypto.Cipher",
  "rule.sast.sw.py.29.option.encrypt_creator_prefix.name": "암호화 생성 라이브러리",
  "rule.sast.sw.py.29.option.hash_creator_prefix.description": "해시 알고리즘 객체를 생성하는 라이브러리의 이름 앞부분을 입력합니다. \n예시) Crypto.Hash",
  "rule.sast.sw.py.29.option.hash_creator_prefix.name": "해시 생성 라이브러리",
  "rule.sast.sw.py.29.option.string_name_hash_creator.description": "해시 알고리즘의 이름을 문자열 인자로 전달하여 해시 객체를 생성하는 함수와 그 인자를 작성합니다.\n예시) hashlib.new:name:1",
  "rule.sast.sw.py.29.option.string_name_hash_creator.name": "이름으로 해시 알고리즘을 고르는 함수",
  "rule.sast.sw.py.29.option.weak_encrypt_algorithm.description": "취약한 암호화 알고리즘의 이름을 작성합니다.<br />예시) DES",
  "rule.sast.sw.py.29.option.weak_encrypt_algorithm.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.py.29.option.weak_hash_algorithm.description": "취약한 해시 알고리즘의 이름을 작성합니다.\n예시) MD5",
  "rule.sast.sw.py.29.option.weak_hash_algorithm.name": "취약한 해시 알고리즘",
  "rule.sast.sw.py.3012.description": "취약한 서버 인증서 검증 체커는 SSL/TLS 세션을 생성할 때 X.509 인증서의 유효성을 검사하지 않고 모든 인증서를 신뢰하는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다.\npsf/requests, ssl standard, pyca/pyopenssl 라이브러리 등을 사용할 때 X.509 인증서 유효성 검사를 패스하지 않습니다.",
  "rule.sast.sw.py.3012.example.0.dangerous": "라인 6: verify의 값을 False로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 하지 않았습니다.\n라인 10: verify_mode의 값을 ssl.CERT_NONE로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 하지 않았습니다.\n라인 13: set_verify 함수로 추가 설정을 하지 않아 원격 서버의 인증서에 대한 유효성 검사를 하지 않았습니다.",
  "rule.sast.sw.py.3012.example.0.safe": "라인 6: verify의 값을 True로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 진행합니다. (기본값: True)\n라인 10: verify_mode의 값을 ssl.CERT_REQUIRED로 설정하여 원격 서버의 인증서에 대한 유효성 검사를 진행합니다.\n라인 13: set_verify 함수로 추가 설정을 하여 원격 서버의 인증서에 대한 유효성 검사를 진행합니다.",
  "rule.sast.sw.py.3012.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.py.3118.description": "프로그램 코드 내부에 하드코딩된 중요 정보를 포함하거나 데이터베이스를 연결하는 정보 등을 포함하면 해커가 이를 이용하여 중요 정보들을 유출할 수 있습니다.\n프로그램 코드 내부에 하드코딩된 중요 정보를 포함하고, 이를 이용하여 내부 인증에 사용하거나 외부 컴포넌트와 통신을 하는 경우 관리자의 정보가 노출될 수 있어 위험합니다.\n중요 정보는 암호화하여 별도의 파일에 저장하여 사용합니다. 또한 중요 정보를 암호화하면, 상수가 아닌 암호화 키를 사용하도록 하며 암호화 되었더라도 소스코드 내부에 상수 형태의 암호화 키를 저장해서 사용하지 않도록 합니다.",
  "rule.sast.sw.py.3118.example.0.dangerous": "라인 4: 하드코드된 정보를 데이터베이스로 연결하여 위험합니다.",
  "rule.sast.sw.py.3118.example.0.safe": "라인 14: 설정 파일에서 가져온 데이터를 복호화 후에 데이터베이스로 연결하기 때문에 안전합니다.",
  "rule.sast.sw.py.3118.name": "하드코드된 중요 정보",
  "rule.sast.sw.py.3118.option.forbidden_variable.description": "중요 정보를 받는 변수명을 입력합니다. <br /> 예시) password",
  "rule.sast.sw.py.3118.option.forbidden_variable.name": "중요 정보 변수 이름",
  "rule.sast.sw.py.3118.option.password_param.description": "비밀번호를 인자로 받는 함수를 작성합니다.<br /> 예시) MySQLdb.connect:passwd:3",
  "rule.sast.sw.py.3118.option.password_param.name": "비밀번호 사용 함수",
  "rule.sast.sw.py.3119.description": "충분하지 않은 키 길이 사용은 길이가 짧은 키를 사용할 때 생기는 보안약점입니다. 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있고 이를 이용해 공격자가 암호화된 데이터나 패스워드를 복호화할 수 있게 됩니다.\n암호 알고리즘 및 키 길이를 선택할 경우 , 암호 알고리즘의 안전성 유지 기간과 보안 강도별 암호 알고리즘 키 길이 비교표(KISA)를 기반으로 암호 알고리즘 및 키 길이를 선택해야 합니다.\nRSA 알고리즘은 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128비트 이상의 키를 사용합니다. (RSA, DSA의 경우 키의 길이는 적어도 2048 비트, ECC의 경우 256 비트 이상으로 설정)",
  "rule.sast.sw.py.3119.example.0.dangerous": "라인 7: RSA키 길이를 1024 비트로 설정하여 위험합니다.\n라인 12: ECC키 길이를 192 비트로 설정하여 위험합니다.",
  "rule.sast.sw.py.3119.example.0.safe": "라인 7: RSA키 길이를 2048 비트로 설정하여 안전합니다.\n라인 12: ECC키 길이를 256 비트로 설정하여 안전합니다.",
  "rule.sast.sw.py.3119.name": "충분하지 않은 키 길이 사용",
  "rule.sast.sw.py.3119.option.sufficient_key_size.description": "RSA 알고리즘에서 허용하는 키의 최소 길이를 작성합니다.",
  "rule.sast.sw.py.3119.option.sufficient_key_size.name": "RSA 알고리즘의 허용 키 길이 (Signature/Cipher)",
  "rule.sast.sw.py.3120.description": "적절하지 않은 난수 값 사용은 예측 가능한 난수를 사용하여 생기는 보안약점입니다. 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능합니다.\npython에서 random 모듈은 주로 보안목적이 아닌 게임, 퀴즈 및 시뮬레이션을 위해 설계되었기 때문에 보안약점을 유발합니다.\npython에서는 세션 ID, 암호화키 등 보안결정을 위한 값을 생성하고 보안결정을 수행하는 경우에는 암호화 목적으로 설계된 secrets 모듈을 사용해야 안전합니다. 하지만 secrets 모듈은 python 3.6 이상에서만 사용할 수 있으니 python 3.6 이하에서는 os.urandom()를 사용하거나 다른 안전한 모듈을 사용해야 합니다.",
  "rule.sast.sw.py.3120.example.0.dangerous": "라인 1: 보안 결정을 위하여 random 모듈을 사용하는 것은 위험합니다.",
  "rule.sast.sw.py.3120.example.0.safe": "라인 7: 위험한 random.randrange() 대신 secrets 모듈의 secrets.randbelow()를 사용하기 때문에 안전합니다.",
  "rule.sast.sw.py.3120.example.1.dangerous": "라인 1: 보안 결정을 위하여 random 모듈을 사용하는 것은 위험합니다.",
  "rule.sast.sw.py.3120.example.1.safe": "라인 7: 위험한 random.choice() 대신 secrets 모듈의 secrets.choice()를 사용하여 안전합니다.",
  "rule.sast.sw.py.3120.name": "적절하지 않은 난수 값 사용",
  "rule.sast.sw.py.3120.option.bad_random.description": "암호학적으로 안전하지 않은 랜덤 함수 FQN의 패턴을 정규식으로 입력합니다.",
  "rule.sast.sw.py.3120.option.bad_random.name": "안전하지 않은 랜덤 함수",
  "rule.sast.sw.py.3121.description": "쿠키는 브라우저 세션에 관계 없이 지속적으로 저장되도록 설정할 수 있으며 디스크에 기록되어 다음 브라우저 세션이 시작되었을 때 메모리에 로드됩니다. 개인정보, 인증 정보 등이 이와 같은 영속적인 쿠키(Persistent Cookie)에 저장된다면 공격자가 이를 활용하여 정보를 노출시킬 수 있습니다.\n쿠키를 HTTPS를 통해서만 전송하도록 `secure` 속성값을 True(기본값은 False)로 설정할 수 있습니다. 클라이언트 측에서 JavaScript를 통해 쿠키를 접근하지 못하도록 제한하고자 할 경우에는 `httponly` 속성을 True(기본값은 False)로 설정해야 합니다.\n`set_cookie()`의 파라미터로 `secure`, `httponly` 속성값을 true로 설정해주고 `max_age` 값을 `60*60`보다 작게 설정합니다.",
  "rule.sast.sw.py.3121.example.0.dangerous": "라인 6: max_age 값이 1년으로 과도하게 길고 secure, httponly 속성 값을 설정하지 않아 기본 값으로 false가 들어가서 위험합니다.",
  "rule.sast.sw.py.3121.example.0.safe": "라인 6: max_ager 값을 2주로 설정하고 secure, httponly 속성 값을 true로 설정하여 안전합니다.",
  "rule.sast.sw.py.3121.name": "사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출",
  "rule.sast.sw.py.3121.option.max_timeout.description": "쿠키의 최대 지속 시간을 초 단위로 작성합니다.<br />예시) 3600",
  "rule.sast.sw.py.3121.option.max_timeout.name": "최대 쿠키 지속 시간",
  "rule.sast.sw.py.3122.description": "주석에 ID, 패스워드 등 보안과 관련된 내용을 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 소프트웨어 개발자가 편의를 위해서 주석문에 패스워드를 적어둔 경우, 소프트웨어가 완성된 후에는 그것을 제거하는 것이 매우 어렵게 됩니다. 또한, 공격자가 소스코드에 접근할 수 있다면, 아주 쉽게 시스템에 침입할 수 있습니다.\n주석에는 ID, 패스워드 등 보안과 관련된 내용을 기입하지 않습니다.",
  "rule.sast.sw.py.3122.example.0.dangerous": "라인 2, 3: 주석에 중요한 인증 정보인 id와 password를 입력했기 때문에 위험합니다.",
  "rule.sast.sw.py.3122.example.0.safe": "라인 2: 주석에 중요한 인증 정보가 포함되지 않아 안전합니다.",
  "rule.sast.sw.py.3122.name": "주석문 안에 포함된 시스템 주요정보",
  "rule.sast.sw.py.3122.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.py.3122.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.py.3123.description": "패스워드와 같은 중요 정보를 저장할 경우, 임의의 길이인 데이터를 고정된 크기의 해시값으로 변환해주는 일방향 해시 함수를 이용하여 저장합니다. 만약 중요 정보를 솔트(Salt)없이 일방향 해시 함수를 사용하여 저장한다면, 공격자는 미리 계산된 레인보우 테이블을 이용하여 해시값을 알아낼 수 있습니다.\n중요 정보를 솔트(Salt) 없이 해시 함수를 사용하여 저장하는 것은 위험합니다. Python에서 hashlib라이브러리를 사용해서 Hash값을 생성할 수 있고, salt 값은 os.urandom() 등 안전한 난수 생성 라이브러리를 사용하여 생성해야 합니다.\nos.urandom()와 같은 안전한 난수 생성 라이브러리를 사용하여 salt를 생성하고 이를 데이터와 함께 해시 함수의 파라미터로 사용합니다.",
  "rule.sast.sw.py.3123.example.0.dangerous": "라인 4: 솔트 값이 포함되지 않은 데이터를 해시 함수의 파라미터로 사용하여 위험합니다.",
  "rule.sast.sw.py.3123.example.0.safe": "라인 6: 솔트 값을 비밀번호와 함께 해시 함수의 파라미터로 사용하여 안전합니다.",
  "rule.sast.sw.py.3123.name": "솔트 없이 일방향 해시 함수 사용",
  "rule.sast.sw.py.3123.option.hash_salt_param.description": "해시 라이브러리 함수와 솔트 인자를 작성합니다.<br />예시) hashlib.pbkdf2_hmac:salt:3",
  "rule.sast.sw.py.3123.option.hash_salt_param.name": "해시 함수와 솔트 인자",
  "rule.sast.sw.py.3123.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.py.3123.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.3123.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.3123.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.3123.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) base of name(\"read\") to return",
  "rule.sast.sw.py.3123.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.3123.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of fqn(\"hashlib.sha256\")",
  "rule.sast.sw.py.3123.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.3123.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(reg(\".*\"))",
  "rule.sast.sw.py.3123.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.3124.description": "원격으로부터 소스코드 또는 실행 파일을 무결성 검사 없이 다운로드 받고, 이를 실행하는 제품들이 종종 존재합니다. 이는 호스트 서버의 변조, DNS 스푸핑(Spoofing) 또는 전송 시의 코드 변조 등의 방법을 이용하여 공격자가 악의적인 코드를 실행할 수 있도록 합니다.\n파일(및 해당 소프트웨어) 무결성을 확인하는 두 가지 주요 방법으로는 암호화 해시 및 디지털 서명이 있습니다. 무결성을 보장하기 위해 해시를 사용하고 가능하면 적절한 코드 서명 인증서를 사용하고 확인하는 것이 더 안전합니다.\n소스는 신뢰할 수 있는 사이트에서 다운로드하여야 하고 파일의 인증서 또는 해시값을 검사하여 변조되지 않은 파일인지 무결성을 확인하여야 합니다.\n외부에서 다운로드 받은 코드, 파일을 해시값과 비교하여 무결성을 검사하여 사용합니다.",
  "rule.sast.sw.py.3124.example.0.dangerous": "라인 13: 외부에서 받은 코드를 무결성 검증 없이 저장하여 위험합니다.",
  "rule.sast.sw.py.3124.example.0.safe": "라인 13: 외부에서 받은 코드를 원본 해시 값과 비교하여 무결성 검증을 진행하므로 안전합니다.",
  "rule.sast.sw.py.3124.name": "무결성 검사없는 코드 다운로드",
  "rule.sast.sw.py.3124.option.function_requiring_integrity_check.description": "무결성 체크가 필요한 함수의 이름을 작성합니다.<br />예시) urllib.request.urlretrieve",
  "rule.sast.sw.py.3124.option.function_requiring_integrity_check.name": "무결성 체크 필요 함수",
  "rule.sast.sw.py.3124.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) operand(*) of \"in\"",
  "rule.sast.sw.py.3124.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.3124.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.3124.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.3124.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.3124.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.3124.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"write\")",
  "rule.sast.sw.py.3124.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.3124.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) return of fqn(\"urllib.request.urlopen\")",
  "rule.sast.sw.py.3124.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.3125.description": "동시 수행을 지원하는 병렬 시스템이나 하나 이상의 프로세스가 동작되는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안약점입니다. 병렬시스템(멀티프로세스로 구현한 응용프로그램)에서는 자원(파일, 소켓 등)을 사용하기에 앞서 자원의 상태를 검사합니다. 하지만, 자원을 사용하는 시점과 검사하는 시점이 다르기 때문에, 검사하는 시점(Time Of Check)에 존재하던 자원이 사용하던 시점(Time Of Use)에 사라지는 등 자원의 상태가 변하는 경우가 발생합니다.\n하나의 자원에 대하여 동시에 검사시점과 사용시점이 달라 생기는 보안약점으로 인해 동기화 오류뿐만 아니라 교착 상태 등과 같은 문제점이 발생할 수 있습니다. Python에서 멀티스레드 환경에서 공유 자원에 여러 쓰레드가 접근하는 것을 막기 위해 Lock 객체를 제공합니다. 자원의 상태를 잠금으로 변경하는 acquire() 메소드와 사용 중인 자원을 해제하는 release() 메소드입니다.\n공유자원(예: 파일)을 여러 프로세스가 접근하여 사용할 경우, 동기화 구문을 사용하여 한 번에 하나의 프로세스만 접근 가능하도록 하는 한편, 성능에 미치는 영향을 최소화하기 위해 임계코드 주변만 동기화 구문을 사용합니다. Python의 Lock 객체를 사용 시 lock.acquire()로 자원을 잠그고 lock.release()로 자원을 해제해야 하지만 with문을 사용하여 간단하게 표현도 가능합니다.",
  "rule.sast.sw.py.3125.example.0.dangerous": "라인 7: 공유 자원을 검사 없이 바로 사용하여 교착 상태에 빠질 위험이 있습니다.",
  "rule.sast.sw.py.3125.example.0.safe": "라인 7: lock으로 공유 자원에 동시에 접근하지 못하도록 제한하기 때문에 안전합니다.",
  "rule.sast.sw.py.3125.name": "경쟁조건: 검사시점과 사용시점(TOCTOU)",
  "rule.sast.sw.py.3126.description": "재귀의 순환 횟수를 제어하지 못하여 할당된 메모리나 프로그램 스택 등의 자원을 과다하게 사용하면 위험합니다. 대부분의 경우, 귀납 조건이 없는 재귀 함수는 무한 루프에 빠져들게 되고 자원고갈을 유발함으로써 시스템의 정상적인 서비스를 제공할 수 없게 합니다.\nPython에서는 최대 재귀 깊이가 적용되어 있어 무한루프가 발생하지 않으나, setrecursionlimit()를 사용하여 임의로 최대 재귀 깊이를 변경하여 사용하는 경우 과도하게 많이 재귀 함수가 수행되지 않도록 주의하여야 합니다.\n모든 재귀 호출 시, 재귀 호출 횟수를 제한하거나, 초기 값을 설정(상수)하여 재귀 호출을 제한해야 합니다. Python의 recursionlimit 제한은 stack overflow를 막기 위한 방법입니다. recursionlimit 값을 과도하게 큰 값으로 설정하지 않아야 합니다.",
  "rule.sast.sw.py.3126.example.0.dangerous": "라인 3: 반환문에 조건을 설정하지 않고 재귀를 사용하여 위험합니다.",
  "rule.sast.sw.py.3126.example.0.safe": "라인 3: setrecursionlimit()으로 재귀 반복 횟수를 제한하여 안전합니다.\n라인 7: 조건을 만족하면 탈출하는 반환문을 사용하여 안전합니다.",
  "rule.sast.sw.py.3126.name": "종료되지 않는 반복문 또는 재귀 함수",
  "rule.sast.sw.py.3127.description": "오류를 처리하지 않거나, 불충분하게 처리하여 오류 정보에 중요 정보(시스템 내부 정보 등)가 포함될 때, 발생할 수 있는 취약점으로 오류를 부적절하게 처리하여 발생하는 보안약점입니다.\n애플리케이션이 실행 환경이나 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 traceback을 출력하면 프로그램의 내부 구조를 쉽게 파악할 수 있기 때문입니다.\nDjango 프레임워크에서는 `urls.py`에 사용자 정의 오류 페이지를 핸들러를 정의할 수 있습니다. traceback을 사용하여 오류 스택을 출력하지 않고 `logger.info`를 사용합니다.",
  "rule.sast.sw.py.3127.example.0.dangerous": "라인 6-9: 오류 페이지를 선언하지 않아 위험합니다.",
  "rule.sast.sw.py.3127.example.0.safe": "라인 6-9: 별도의 오류 페이지를 생성하여 사용자에게 표현하기 때문에 안전합니다.",
  "rule.sast.sw.py.3127.example.1.dangerous": "라인 13: traceback을 사용하여 오류 메시지를 통해 스택 정보가 노출되어 위험합니다.",
  "rule.sast.sw.py.3127.example.1.safe": "라인 13: logger.info()를 이용하여 오류 코드와 정보를 별도로 정의하고 최소한의 정보만 노출하여 안전합니다.",
  "rule.sast.sw.py.3127.name": "오류 메시지 정보 노출",
  "rule.sast.sw.py.3128.description": "오류가 발생할 수 있는 부분을 확인하였으나, 이러한 오류에 대하여 예외 처리를 하지 않을 경우, 공격자는 오류 상황을 악용하여 개발자가 의도하지 않은 방향으로 프로그램이 동작하도록 할 수 있습니다.\ntry 블록에서 발생하는 오류를 except문에서 처리하지만 내부 코드가 비어있고 pass로만 처리 할 경우, 프로그램이 제어되지 않는 방식으로 중지될 수 있습니다.\n오류가 발생할 수 있는 부분에 대하여 제어문(try-except)을 사용하여 적절하게 예외 처리해야 합니다.",
  "rule.sast.sw.py.3128.example.0.dangerous": "라인 16: except에 pass 밖에 없어서 아무런 에러 처리 없이 수행되어 위험합니다.",
  "rule.sast.sw.py.3128.example.0.safe": "라인 17: try에서 오류가 생기면 except에서 암호화 키를 생성하도록 설정하여 안전합니다.",
  "rule.sast.sw.py.3128.name": "오류상황 대응 부재",
  "rule.sast.sw.py.3129.description": "발생할 수 있는 오류들에 대한 예외처리를 각각 하지 않고 광범위하게 사용한다면 개발자가 예기치 않은 문제가 발생할 수 있는 보안약점입니다.\n프로그램 수행 중에 함수의 결과 값에 대한 적절한 처리 또는 예외 상황에 대한 조건을 적절하게 검사 하지 않을 경우, 예기치 않은 문제가 생길 수 있습니다.\n값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 의도했던 값인지 검사하고, 예외 처리를 사용 하는 경우에 광범위한 예외 처리 대신 구체적인 예외 처리를 수행합니다.",
  "rule.sast.sw.py.3129.example.0.dangerous": "라인 10: 광범위한 오류 처리를 사용하여 예외 상황에 따른 적절한 조치를 할 수 없습니다.",
  "rule.sast.sw.py.3129.example.0.safe": "라인 9: 5번 라인의 open()으로 발생할 수 있는 오류인 FileNotFoundError를 예외 처리했습니다.\n라인 11: 6번 라인의 readline()으로 발생할 수 있는 오류인 OSError를 예외 처리했습니다.\n라인 13: 7번 라인의 int()으로 발생할 수 있는 오류인 ValueError를 예외 처리했습니다.",
  "rule.sast.sw.py.3129.name": "부적절한 예외 처리",
  "rule.sast.sw.py.3129.option.option.description": "다른 예외 처리 구간이 있을 경우 지나치게 일반적인 예외를 무시하겠습니까?<br />예시) true",
  "rule.sast.sw.py.3129.option.option.name": "옵션 On / Off",
  "rule.sast.sw.py.3129.option.overly_broad_exception.description": "지나치게 일반적인 예외들의 이름을 작성합니다.<br /> 예시) Exception",
  "rule.sast.sw.py.3129.option.overly_broad_exception.name": "지나치게 일반적인 예외",
  "rule.sast.sw.py.3130.description": "널 포인터 역참조는 객체가 Null이 될 수 없다는 가정을 위반했을 때 발생합니다. 공격자가 의도적으로 널 포인터 역참조를 발생시키는 경우, 널 포인터 예외를 발생시켜서 보안 논리를 우회하거나 디버깅 정보를 확인할 수 있습니다.\nPython에서는 Null 객체가 사용되지 않고 None 키워드를 사용하여 빈 변수를 정의합니다.\n외부에서 입력받은 값이나 명확한 값이 할당되지 않은 변수의 경우 해당 변수를 참조하기 전에 if문 등을 사용하여 값이 None이 아닌지 검사해야 합니다.",
  "rule.sast.sw.py.3130.example.0.dangerous": "라인 8: 명확한 값이 들어가지 않은 filename 변수를 None인지 체크하지 않고 참조하여 위험합니다.",
  "rule.sast.sw.py.3130.example.0.safe": "라인 11: 8번 라인에서 filename 변수가 None인지 확인 후에 참조하여 안전합니다.",
  "rule.sast.sw.py.3130.name": "널 포인터 역참조",
  "rule.sast.sw.py.3130.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) param(*) of name(\"filter\")",
  "rule.sast.sw.py.3130.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.3130.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) sparrow.my.filter.utils.is_safe()",
  "rule.sast.sw.py.3130.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.3130.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.\n예시) operand(*) of \"+\" to return",
  "rule.sast.sw.py.3130.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.3130.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.",
  "rule.sast.sw.py.3130.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.3130.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"read\")",
  "rule.sast.sw.py.3130.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.3131.description": "파일 디스크립터, 힙 메모리, 소켓 등은 프로그램의 유한한 자원입니다. 이러한 자원을 할당 받아 사용한 후 반환하지 않는다면 프로그램 오류로 인해 서비스 거부 공격을 유발할 수 있습니다.\n자원을 할당하는 함수를 사용한 후 이를 반환하는 함수를 사용하거나 Python의 경우 with 문을 사용하여 자원을 관리합니다.\n자원을 할당하는 메소드를 사용하면 반드시 이후에 이를 반환하는 메소드를 사용해야 합니다. 혹은 자동으로 자원을 반환해주는 with 문을 사용합니다.",
  "rule.sast.sw.py.3131.example.0.dangerous": "라인 11: 6번 라인에 open으로 자원을 할당했으나 같은 try문 안에서 예외가 생길 시 close가 실행되지 않을 수 있습니다.",
  "rule.sast.sw.py.3131.example.0.safe": "라인 5: with 문에 open을 사용하여 자동으로 자원이 반환됩니다.\n라인 17: 10번 라인에서 할당된 자원이 예외가 발생하더라도 finally 문에 close가 존재하기 때문에 반드시 반환합니다.",
  "rule.sast.sw.py.3131.name": "부적절한 자원 해제",
  "rule.sast.sw.py.3131.option.resource_allocation.description": "리소스 누수 위험이 있는 함수 이름을 작성합니다.",
  "rule.sast.sw.py.3131.option.resource_allocation.name": "리소스 누수 위험 함수",
  "rule.sast.sw.py.3132.description": "역직렬화는 바이너리 파일이나 바이트 스트림을 연산하여 객체 구조로 복원시키는 방법입니다. 네트워크를 이용하여 직렬화된 정보를 수신자에게 전달하는 과정에서 공격자가 전송 또는 스트림을 조작할 수 있는 경우에 무결성 침해, 원격 코드 실행, 서비스 거부 공격 등이 발생할 수 있는 보안약점입니다.\nPython에서는 pickle, yaml 등을 통해 직렬화와 역직렬화를 지원합니다. 역직렬화 모듈은 데이터 변조에 대한 검증 과정이 없기 때문에 악의적인 데이터를 구성할 수 있습니다. 그러므로 역직렬화 모듈을 사용하는 경우 hmac 등으로 데이터를 서명하거나, json 모듈을 사용해야 합니다.\nhmac, sha 등 해시 함수를 이용하여 입력 받은 데이터와 원본 데이터가 일치하는지 검증한 후 사용합니다. 혹은 `yaml.safe_load()`와 같은 안전한 역직렬화 메소드나 json 모듈을 사용합니다.",
  "rule.sast.sw.py.3132.example.0.dangerous": "라인 7: 검증되지 않은 값을 역직렬화하여 위험합니다.",
  "rule.sast.sw.py.3132.example.0.safe": "라인 13: 전달받은 값과 원본 값을 비교한 후 역직렬화하여 안전합니다.",
  "rule.sast.sw.py.3132.example.1.dangerous": "라인 7: 외부에서 받은 값을 바로 역직렬화하여 위험합니다.",
  "rule.sast.sw.py.3132.example.1.safe": "라인 7: 외부에서 받은 값을 안전한 메소드를 통해 역직렬화하여 안전합니다.",
  "rule.sast.sw.py.3132.name": "신뢰할 수 없는 데이터의 역직렬화",
  "rule.sast.sw.py.3132.option.custom_taint_sink.name": "해시값 비교가 필요한 외부 정보 사용 함수",
  "rule.sast.sw.py.3132.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.py.3132.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.3132.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.3132.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.3132.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.py.3132.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.3132.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) __sparrow_php_echo__$param(*)",
  "rule.sast.sw.py.3132.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.3132.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.py.3132.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.3133.description": "디버그 목적으로 작성된 코드는 개발이 완료되면 제거해야 합니다. 디버그 코드가 남겨진 채로 배포될 경우, 공격자가 식별 과정을 우회하거나 의도하지 않은 정보와 제어 정보가 노출될 수 있습니다.\nDjango, Flask는 전역으로 DEBUG 모드를 설정할 수 있습니다. DEBUG 모드를 사용하면 브라우저에서 임의의 Python 코드를 실행할 수도 있고 Python에서 발생한 모든 오류가 출력되어 정보가 노출될 위험이 있습니다.\n소프트웨어를 배포하기 전에 반드시 디버그 코드를 확인하고 삭제해야 합니다. Django의 경우 전역적으로 DEBUG 모드를 비활성화하려면 settings.py 파일에 설정을 하고, Flask는 `app_run()` 전에 `debug = False`로 설정합니다.",
  "rule.sast.sw.py.3133.example.0.dangerous": "라인 4: 디버그 옵션이 True로 설정되어 위험합니다.",
  "rule.sast.sw.py.3133.example.0.safe": "라인 4: 디버그 옵션이 False로 설정되어 안전합니다.",
  "rule.sast.sw.py.3133.example.1.dangerous": "라인 4: 디버그 옵션이 True로 설정되어 위험합니다.",
  "rule.sast.sw.py.3133.example.1.safe": "라인 4: 디버그 옵션이 False로 설정되어 안전합니다.",
  "rule.sast.sw.py.3133.name": "제거되지 않고 남은 디버그 코드",
  "rule.sast.sw.py.3133.option.debug_method.description": "디버그 함수의 이름을 작성합니다.",
  "rule.sast.sw.py.3133.option.debug_method.name": "디버그 함수",
  "rule.sast.sw.py.3134.description": "private로 선언된 배열을 public으로 선언된 메소드를 통해 반환하면 배열의 레퍼런스가 외부에 공개되어 외부에서 배열 수정과 객체 속성 변경이 가능해지는 보안 약점입니다.\nPython에서는 명시적인 private 선언이 없습니다. 하지만 대부분의 Python 코드가 따르는 규칙으로 이름 앞에 __(double underscore)로 시작하면 private로 처리됩니다.\nprivate로 선언된 배열을 public으로 선언된 메소드를 통해 반환하지 않도록 해야 합니다. 꼭 사용해야 한다면 private 배열에 대한 복사본을 만들고 이를 반환하도록 작성합니다.",
  "rule.sast.sw.py.3134.example.0.dangerous": "라인 9: public 함수에서 private 배열을 아무 조치 없이 반환하기 때문에 위험합니다.",
  "rule.sast.sw.py.3134.example.0.safe": "라인 9: public 함수에서 [:]를 통해 새로운 객체를 생성하여 private 배열로 반환하여 안전합니다.",
  "rule.sast.sw.py.3134.name": "Public 메소드로부터 반환된 Private 배열",
  "rule.sast.sw.py.3135.description": "public으로 선언된 메소드의 인자가 private으로 선언된 배열에 저장되는 경우 private 배열을 외부에서 접근하여 배열 수정과 객체 속성 변경을 발생시키는 보안약점입니다.\nPython에서는 명시적인 private 선언이 없습니다. 하지만 대부분의 Python 코드가 따르는 규칙으로 이름 앞에 __(double underscore)로 시작하면 private으로 처리됩니다.\npublic으로 선언된 메소드의 인자를 private으로 선언된 배열로 저장하지 않도록 합니다. 꼭 사용해야 한다면 배열의 복사본을 생성하여 할당하도록 합니다.",
  "rule.sast.sw.py.3135.example.0.dangerous": "라인 9: public 메소드가 private 배열에 외부 값을 바로 대입하기 때문에 위험합니다.",
  "rule.sast.sw.py.3135.example.0.safe": "라인 8: public 메소드가 [:]을 사용해서 private 배열에 값을 대입하기 때문에 안전합니다.",
  "rule.sast.sw.py.3135.name": "Private 배열에 Public 데이터 할당",
  "rule.sast.sw.py.3136.description": "보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)을 부적절하게 구현한 경우 발생할 수 있는 보안약점입니다. 여기에는 적절한 인증 없는 중요 기능 허용, 부적절한 인가 등이 포함됩니다.\n파이썬의 Django 프레임워크에서 `django.contrib.auth` 앱을 통하여 기본적인 인증 로그인 및 로그아웃 기능과 DRF(Django REST Framework)에서 제공하는 토큰 및 세션 인증을 사용해야 합니다.\n`SetPasswordForm()`은 이전 비밀번호를 검증하지 않고 새로운 비밀번호로 설정하여 위험할 수 있습니다. 같은 기능을 하지만 이전 비밀번호 검증 후에 비밀번호를 설정하는 `PasswordChangeForm()`를 사용하는 것이 안전합니다.",
  "rule.sast.sw.py.3136.example.0.dangerous": "라인 6, 18: 이전 패스워드를 확인하지 않는 SetPasswordForm()를 사용하여 위험합니다.",
  "rule.sast.sw.py.3136.example.0.safe": "라인 9, 18: PasswordChangeForm()는 이전 비밀번호와 비교하여 검증한 후에 비밀번호를 변경하기 때문에 안전합니다.",
  "rule.sast.sw.py.3136.name": "적절한 인증 없는 중요 기능 허용",
  "rule.sast.sw.py.3136.option.auth_by_compare.description": "중요 기능을 수행하기 전에 비교 연산자를 사용하는 것을 인증으로 취급하려면 선택합니다.",
  "rule.sast.sw.py.3136.option.auth_by_compare.name": "비교 연산자로 인증",
  "rule.sast.sw.py.3136.option.authentication_function.description": "중요 기능을 수행하기 전에 호출 및 검사되어야 하는 인증 함수 이름을 작성합니다.<br />예시) strcmp",
  "rule.sast.sw.py.3136.option.authentication_function.name": "인증 함수",
  "rule.sast.sw.py.3136.option.critical_function.description": "중요 기능을 수행하는 함수 이름을 작성합니다.<br />예시) login",
  "rule.sast.sw.py.3136.option.critical_function.name": "중요 함수",
  "rule.sast.sw.py.3136.option.taint_propagator.name": "taint_propagator",
  "rule.sast.sw.py.3137.description": "강한 패스워드 조합 규칙을 만족하지 않으면 사용자 계정이 취약하기 때문에 발생하는 보안약점입니다.\n안전한 비밀번호를 생성하기 위해 \"패스워드 선택 및 이용 안내서\"의 설정 규칙을 적용해야 합니다. 비밀번호를 생성할 때 1) 두 종류 이상의 문자 + 8자리 이상의 길이로 구성된 문자열을 사용하거나 2) 문자 종류와 상관 없이 10자리 이상의 길이로 구성된 문자열을 사용합니다. 단, 10자리 이상의 문자열을 사용하되 숫자로만 구성할 경우 취약할 수 있습니다.\nsettings.py의 `AUTH_PASSWORD_VALIDATORS`를 기본 조건으로 사용하지 않고 조건을 만족하는 커스텀 규칙을 추가하거나 기본 규칙을 수정하여 작성해야 합니다.",
  "rule.sast.sw.py.3137.example.0.dangerous": "라인 5: UserCreationForm을 상속받아 클래스를 생성했습니다.\n라인 21: 비밀번호가 9자리 이상인지 검사하지만 2종 이상의 문자를 사용하는지 검사하지 않습니다.",
  "rule.sast.sw.py.3137.example.0.safe": "라인 8-13: 2종 이상 문자로 구성된 8자리 이상 비밀번호인지 검사합니다.\n라인 16: 문자 구성 상관없이 10자리 이상 비밀번호인지 검사합니다.",
  "rule.sast.sw.py.3137.name": "취약한 비밀번호 허용",
  "rule.sast.sw.py.3137.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) strlen$param(1)",
  "rule.sast.sw.py.3137.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.3137.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.3137.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.3137.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.py.3137.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.3137.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) mysql_query$param(*)",
  "rule.sast.sw.py.3137.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.3137.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"$_GET[\\\"password\\\"]\")",
  "rule.sast.sw.py.3137.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.5859.description": "크로스 사이트 스크립트 공격은 웹 사이트에 악성 코드를 삽입하는 공격 방법입니다. 공격은 일반적으로 애플리케이션의 사용자를 목표로 삼으며, 자동으로 사용자가 악성 코드를 실행하게 하는 등의 피해를 입힐 수 있습니다.\nDjango나 Flask를 사용하는 경우 외부 입력값에 악의적인 스크립트가 삽입되지 못하도록 프레임워크 자체에서 공격에 사용될 수 있는 문자를 HTML 엔터티로 치환하여 응답 페이지를 생성하므로 크로스 사이트 스크립트로부터 보호됩니다. 하지만 크로스 사이트 스크립트 공격으로부터 보호해주는 기능을 프레임워크가 제공하더라도 완전하지 않거나 개발자의 실수로 보호 기능이 무효화되는 경우가 있으므로 주의해야 합니다.\nDjango의 `mark_safe()`를 사용하지 않고 flask의 동적 웹 페이지 생성에 사용되는 데이터가 있는 경우 escape를 통해서 치환하여 사용해야 합니다.",
  "rule.sast.sw.py.5859.example.0.dangerous": "라인 9: mark_safe 함수는 Django의 XSS escape 정책이 적용되지 않기 때문에 XSS 공격에 노출될 위험이 있습니다.",
  "rule.sast.sw.py.5859.example.0.safe": "라인 9: mark_safe 함수를 사용하지 않습니다.",
  "rule.sast.sw.py.5859.example.1.dangerous": "라인 8: 외부에서 입력 받은 값을 escape() 사용 없이 그대로 사용하여 크로스 사이트 스크립트 공격이 발생할 수 있습니다.",
  "rule.sast.sw.py.5859.example.1.safe": "라인 11: 외부에서 입력 받은 값을 10번 라인에서 escape()를 통해 치환했기 때문에 안전합니다.",
  "rule.sast.sw.py.5859.name": "크로스 사이트 스크립트",
  "rule.sast.sw.py.5859.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다. 예시) filter$param(1)",
  "rule.sast.sw.py.5859.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.py.5859.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다. 예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.py.5859.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.py.5859.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다. 예시) .$operand(*)->return",
  "rule.sast.sw.py.5859.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.py.5859.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다. 예시) __sparrow_php_echo__$param(*)",
  "rule.sast.sw.py.5859.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.py.5859.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다. 예시) $_GET$variable",
  "rule.sast.sw.py.5859.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.py.7247.description": "CORS(Cross-Origin Resource Sharing)는 다른 출처(Origin)에서 제공되는 리소스의 접근을 제어하는 보안 정책입니다. 그러나 CORS 정책에 *(와일드카드) 또는 null 값을 허용할 경우, 공격자는 이를 악용해 XSS, CSRF 등의 공격을 수행할 수 있습니다.\n\n*(와일드카드)는 모든 출처의 요청을 허용하는 설정으로, 신뢰할 수 없는 출처의 접근도 허용됩니다.\n\nnull은 파일 프로토콜(file://), sandbox된 iframe, data URI 환경에서 요청이 발생할 때 브라우저가 Origin 헤더에 설정하는 값입니다. 서버가 이 값을 허용하면, 출처가 불분명하거나 신뢰할 수 없는 환경에서도 리소스 접근이 가능해집니다.\nCORS 정책에 *(와일드카드)나 null 값을 설정하지 않고, 신뢰할 수 있는 출처를 명시적으로 지정해야 합니다.\n\nFlask에서는 flask-cors 패키지를 통해 CORS 정책을 설정할 수 있으며, 출처를 지정하지 않으면 기본적으로 *(와일드카드)가 적용됩니다. 따라서 origins 항목에 허용할 출처를 명확히 지정해야 합니다.",
  "rule.sast.sw.py.7247.example.0.dangerous": "라인 5: CORS가 *(와일드카드)로 설정되어 있어 XSS 및 CSRF 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.7247.example.0.safe": "라인 5: CORS가 신뢰할 수 있는 출처만 허용하도록 설정되어 있어 XSS 및 CSRF 공격 위험을 줄일 수 있습니다.",
  "rule.sast.sw.py.7247.name": "Flask 부적절한 CORS 설정",
  "rule.sast.sw.py.7248.description": "SMTP(Simple Mail Transfer Protocol)는 이메일을 송수신할 때 사용하는 통신 프로토콜입니다. SMTP에서 SSL/TLS 암호화가 비활성화된 경우, 모든 데이터가 평문으로 전송됩니다. 이로 인해 공격자는 패킷 스니핑으로 이메일 내용을 가로채거나, 송신자를 위조하는 스푸핑 공격을 시도할 수 있습니다.\nSMTP의 기본 포트인 25번은 평문으로 데이터를 전송합니다. 따라서 암호화된 통신을 위해 STARTTLS(포트 587) 또는 SMTPS(포트 465) 방식으로 변경해야 합니다.\n\nFlask에서는 flask-mail 패키지를 사용해 SMTP를 설정할 수 있습니다. 암호화 방식에 따라 다음과 같은 설정이 필요합니다.\n\nMAIL_USE_TLS를 True로 설정하면 STARTTLS(포트 587)가 활성화됩니다. 반면, MAIL_USE_SSL을 True로 설정하면 SMTPS(포트 465)가 활성화됩니다. 단, MAIL_USE_TLS와 MAIL_USE_SSL은 서로 다른 암호화 방식을 사용하기 때문에 동시에 True로 설정할 수 없습니다.",
  "rule.sast.sw.py.7248.example.0.dangerous": "라인 6: SMTP의 기본 포트인 25번은 평문으로 데이터를 전송하므로, 공격자가 전송 중인 내용을 스니핑할 수 있습니다.",
  "rule.sast.sw.py.7248.example.0.safe": "라인 6: SMTP의 587번 포트는 STARTTLS 방식을 통해 암호화된 통신을 제공하므로 안전합니다. 단, 이 방식을 사용할 경우 MAIL_USE_TLS를 True로 설정하여 TLS 암호화를 활성화해야 합니다.",
  "rule.sast.sw.py.7248.name": "Flask 부적절한 SMTP 설정(SSL/TLS 설정)",
  "rule.sast.sw.py.7249.description": "Flask에서 파일 업로드 기능을 구현할 때, MAX_CONTENT_LENGTH 설정을 사용하여 업로드 가능한 파일의 크기를 제한할 수 있습니다. 그러나 해당 설정이 None으로 지정되어 있으면, 파일 크기에 대한 제한이 사라져 공격자가 대용량 파일을 업로드할 수 있습니다. 이로 인해 서버의 디스크 공간과 메모리가 과도하게 소모되어 서비스 거부(DoS) 공격으로 이어질 수 있습니다.\n파일 업로드 기능을 구현할 때 업로드 가능한 파일 크기를 적절히 제한하고, 제한을 초과하는 요청에는 오류를 반환하도록 구성해야 합니다. Flask에서는 MAX_CONTENT_LENGTH 설정을 사용하여 업로드 가능한 파일의 최대 크기를 지정할 수 있습니다.",
  "rule.sast.sw.py.7249.example.0.dangerous": "라인 4: 업로드 가능한 파일의 크기를 제한하고 있지 않아 DoS 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.7249.example.0.safe": "라인 4: 업로드 가능한 파일의 크기를 적절히 제한하고 있어 DoS 공격의 위험을 줄일 수 있습니다.",
  "rule.sast.sw.py.7249.name": "Flask 부적절한 파일 업로드 크기 제한",
  "rule.sast.sw.py.7250.description": "Flask 3.1.0 버전부터 서버에서 신뢰할 수 있는 호스트를 지정할 수 있도록 TRUSTED_HOSTS 설정을 제공합니다. 그러나 이 값이 None으로 지정되어 있으면, 서버는 모든 호스트 헤더를 신뢰하게 됩니다. 이로 인해 공격자는 호스트 헤더 삽입 공격을 수행할 수 있습니다.\n서버는 모든 호스트 헤더를 신뢰하도록 설정해서는 안 되며, 수신하는 호스트 헤더 값을 적절히 검증해야 합니다. Flask에서는 TRUSTED_HOSTS 설정을 사용하여 신뢰할 수 있는 호스트를 명시적으로 지정할 수 있습니다.",
  "rule.sast.sw.py.7250.example.0.dangerous": "라인 4: 모든 호스트 헤더를 신뢰하도록 설정되어 있어, 호스트 헤더 삽입 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.7250.example.0.safe": "라인 4: 신뢰할 수 있는 호스트를 명시적으로 지정하여 호스트 헤더 삽입 공격 위험을 줄일 수 있습니다.",
  "rule.sast.sw.py.7250.name": "Flask 부적절한 호스트 허용",
  "rule.sast.sw.py.7251.description": "CORS(Cross-Origin Resource Sharing)는 다른 출처(Origin)에서 제공되는 리소스의 접근을 제어하는 보안 정책입니다. 그러나 CORS 정책에 *(와일드카드) 또는 null 값을 허용할 경우, 공격자는 이를 악용해 XSS, CSRF 등의 공격을 수행할 수 있습니다.\n\n*(와일드카드)는 모든 출처의 요청을 허용하는 설정으로, 신뢰할 수 없는 출처의 접근도 허용됩니다.\n\nnull은 파일 프로토콜(file://), sandbox된 iframe, data URI 환경에서 요청이 발생할 때 브라우저가 Origin 헤더에 설정하는 값입니다. 서버가 이 값을 허용하면, 출처가 불분명하거나 신뢰할 수 없는 환경에서도 리소스 접근이 가능해집니다.\nDjango에서는 django-cors-headers 패키지를 사용하여 CORS 정책을 설정할 수 있습니다. 이때, 모든 출처의 요청을 허용하는 CORS_ALLOW_ALL_ORIGINS=True 설정이나, 출처가 불분명한 CORS_ALLOWED_ORIGINS=[`null`] 설정은 사용하지 않아야 하며, 신뢰할 수 있는 출처를 명시적으로 설정해야 합니다.",
  "rule.sast.sw.py.7251.example.0.dangerous": "라인 12: CORS가 모든 출처의 요청을 허용하도록 설정되어 있어 XSS 및 CSRF 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.7251.example.0.safe": "라인 12: CORS가 신뢰할 수 있는 출처만 허용하도록 설정되어 있어 XSS 및 CSRF 공격 위험을 줄일 수 있습니다.",
  "rule.sast.sw.py.7251.name": "Django 부적절한 CORS 설정",
  "rule.sast.sw.py.7252.description": "SMTP(Simple Mail Transfer Protocol)는 이메일을 송수신할 때 사용하는 통신 프로토콜입니다. SMTP에서 SSL/TLS 암호화가 비활성화된 경우, 모든 데이터가 평문으로 전송됩니다. 이로 인해 공격자는 패킷 스니핑으로 이메일 내용을 가로채거나, 송신자를 위조하는 스푸핑 공격을 시도할 수 있습니다.\nSMTP의 기본 포트인 25번은 평문으로 데이터를 전송합니다. 따라서 암호화된 통신을 위해 STARTTLS(포트 587) 또는 SMTPS(포트 465) 방식으로 변경해야 합니다.\n\nDjango에서는 내장된 이메일 백엔드를 통해 SMTP를 설정할 수 있습니다. 먼저 설정 파일(settings.py) 내부에 이메일 관련 설정을 추가해야 합니다. EMAIL_USE_TLS를 True로 설정하면 STARTTLS(포트 587)가 활성화됩니다. 반면, EMAIL_USE_SSL을 True로 설정하면 SMTPS(포트 465)가 활성화됩니다. 단, EMAIL_USE_TLS와 EMAIL_USE_SSL은 서로 다른 암호화 방식을 사용하기 때문에 동시에 True로 설정할 수 없습니다.",
  "rule.sast.sw.py.7252.example.0.dangerous": "라인 4: SMTP의 기본 포트인 25번은 평문으로 데이터를 전송하므로, 공격자가 전송 중인 내용을 스니핑할 수 있습니다.",
  "rule.sast.sw.py.7252.example.0.safe": "라인 4: SMTP의 587번 포트는 STARTTLS 방식을 통해 암호화된 통신을 제공하므로 안전합니다. 단, 이 방식을 사용할 경우 EMAIL_USE_TLS를 True로 설정하여 TLS 암호화를 활성화해야 합니다.",
  "rule.sast.sw.py.7252.name": "Django 부적절한 SMTP 설정(SSL/TLS 설정)",
  "rule.sast.sw.py.7253.description": "Django는 서버에서 신뢰할 수 있는 호스트를 지정할 수 있도록 ALLOWED_HOSTS 설정을 제공합니다. 그러나 설정 파일(settings.py)에서 이 값이 [`*`]로 지정되어 있으면, 서버는 모든 호스트 헤더를 신뢰하게 됩니다. 이로 인해 공격자는 호스트 헤더 삽입 공격을 수행할 수 있습니다.\n서버는 모든 호스트 헤더를 신뢰하도록 설정해서는 안되며, 수신하는 호스트 헤더 값을 적절히 검증해야 합니다. Django에서는 ALLOWED_HOSTS 설정을 사용하여 신뢰할 수 있는 호스트를 명시적으로 지정할 수 있습니다.",
  "rule.sast.sw.py.7253.example.0.dangerous": "라인 2: 모든 호스트 헤더를 신뢰하도록 설정되어 있어, 호스트 헤더 삽입 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.7253.example.0.safe": "라인 2: 신뢰할 수 있는 호스트를 명시적으로 지정하여 호스트 헤더 삽입 공격 위험을 줄일 수 있습니다.",
  "rule.sast.sw.py.7253.name": "Django 부적절한 호스트 허용",
  "rule.sast.sw.py.7254.description": "Django는 DATA_UPLOAD_MAX_MEMORY_SIZE 설정을 통해 요청 본문의 크기를 제한할 수 있으며, 기본값은 약 2.5MB입니다. 그러나 설정 파일(settings.py)에서 해당 값을 None으로 설정할 경우, 요청 본문 크기에 대한 제한이 사라집니다. 이로 인해 공격자는 대용량 요청을 전송할 수 있으며, 서버의 메모리가 과도하게 소모되어 서비스 거부(DoS) 공격으로 이어질 수 있습니다.\n서비스 거부(DoS) 공격을 예방하려면 요청 본문의 크기를 적절히 제한하고, 이를 초과하는 경우 오류를 반환하도록 구성해야 합니다.",
  "rule.sast.sw.py.7254.example.0.dangerous": "라인 2: 요청 본문의 크기를 제한하고 있지 않아 DoS 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.7254.example.0.safe": "라인 2: 요청 본문의 크기를 적절히 제한하고 있어 DoS 공격의 위험을 줄일 수 있습니다.",
  "rule.sast.sw.py.7254.name": "Django 부적절한 요청 본문 크기 제한",
  "rule.sast.sw.py.7255.description": "Django에서는 SecurityMiddleware의 SECURE_CONTENT_TYPE_NOSNIFF 설정을 통해 X-Content-Type-Options 헤더를 적용할 수 있습니다. 이 헤더는 브라우저가 서버 응답의 Content-Type 값을 신뢰하도록 강제하여, MIME Type Sniffing 동작을 차단하는 역할을 합니다.\n\n그러나 설정 파일(settings.py)에서 이 값이 False로 설정된 경우, Django는 X-Content-Type-Options 헤더를 응답에 추가하지 않습니다. 이로 인해 브라우저는 리소스의 내용을 기반으로 MIME 타입을 임의로 판단하게 되며, 콘텐츠가 의도하지 않은 방식으로 해석될 수 있습니다.\n\nMIME Type Sniffing은 브라우저가 응답에 포함된 Content-Type 헤더를 무시하고, 전송된 리소스의 내용을 기반으로 MIME 타입을 판단하는 동작입니다. 공격자가 이를 악용할 경우, 브라우저가 HTML 또는 JavaScript로 잘못 해석하도록 유도할 수 있으며, XSS나 Drive-By Download와 같은 공격이 발생할 수 있습니다.\nMIME Type Sniffing을 방지하려면 X-Content-Type-Options 헤더를 설정해야 합니다. Django에서 SecurityMiddleware를 사용하면 SECURE_CONTENT_TYPE_NOSNIFF 설정이 기본적으로 True로 적용되며, 이 설정에 따라 X-Content-Type-Options 헤더가 자동으로 추가됩니다. 만약 SECURE_CONTENT_TYPE_NOSNIFF 설정을 명시적으로 False로 지정한 경우, True로 변경해야 합니다.",
  "rule.sast.sw.py.7255.example.0.dangerous": "라인 7: SECURE_CONTENT_TYPE_NOSNIFF 설정이 False로 지정된 경우, X-Content-Type-Options 헤더가 추가되지 않아 MIME Type Sniffing이 발생할 수 있습니다.",
  "rule.sast.sw.py.7255.example.0.safe": "라인 3: Django에서 SecurityMiddleware를 사용하면 자동으로 X-Content-Type-Options 헤더가 추가되므로, MIME Type Sniffing이 발생하지 않습니다.",
  "rule.sast.sw.py.7255.name": "Django 부적절한 X-Content-Type 설정",
  "rule.sast.sw.py.7256.description": "웹 애플리케이션 운영 환경에서 HTTPS를 강제하지 않거나, HTTP 요청을 HTTPS로 리다이렉션하지 않을 경우 클라이언트와 서버 간 데이터가 평문으로 전송됩니다. 이로 인해 공격자는 전송되는 민감한 데이터를 스니핑하거나, HTTPS 연결을 HTTP로 다운그레이드 하는 SSL Stripping 공격을 수행할 수 있습니다.\n웹 애플리케이션에서 스니핑이나 SSL Stripping과 같은 공격을 방지하려면, 운영 환경에서 HTTPS 사용을 강제해야 합니다. 이를 위해 HSTS(HTTP Strict-Transport-Security) 헤더를 적용하고, 모든 HTTP 요청을 HTTPS로 자동 전환하는 리다이렉션 설정이 필요합니다. \n\nDjango에서는 SecurityMiddleware를 사용하여 HSTS 헤더 및 HTTPS 리다이렉션을 설정할 수 있으며, 주요 설정 항목은 다음과 같습니다.\n\nSECURE_HSTS_SECONDS: Strict-Transport-Security 헤더를 추가하여, 브라우저가 지정된 기간 동안 HTTPS 연결만 허용하도록 합니다. 0 이상의 정숫값을 설정하면 이 헤더가 적용됩니다.\n\nSECURE_HSTS_INCLUDE_SUBDOMAINS: HSTS 정책을 현재 도메인뿐 아니라 모든 서브도메인에도 적용할지 여부를 설정합니다. True로 설정하면 서브도메인에서도 HTTPS 연결이 강제됩니다.\n\nSECURE_SSL_REDIRECT: 모든 HTTP 요청을 HTTPS로 자동 리다이렉션합니다. True로 설정하면 이 기능이 활성화됩니다.",
  "rule.sast.sw.py.7256.example.0.dangerous": "라인 7: SECURE_HSTS_SECONDS = 0 설정은 Strict-Transport-Security 헤더를 비활성화하여 HTTPS를 강제하지 않으므로, 민감한 데이터가 평문으로 노출될 수 있습니다.",
  "rule.sast.sw.py.7256.example.0.safe": "라인 7: SECURE_HSTS_SECONDS = 31536000 설정은 Strict-Transport-Security 헤더를 활성화하여 1년 동안 HTTPS를 강제하므로, 민감한 데이터가 평문으로 노출되는 위험을 줄일 수 있습니다.",
  "rule.sast.sw.py.7256.name": "Django 부적절한 HTTPS 설정",
  "rule.sast.sw.py.7257.description": "Django에서는 SecurityMiddleware의 SECURE_REFERRER_POLICY 설정을 통해 Referrer-Policy 헤더를 적용할 수 있습니다. 이를 통해 Referer 헤더에 포함되는 정보를 제한하여 민감한 데이터가 외부로 노출되는 것을 방지할 수 있습니다.\n\n그러나 Referrer-Policy 헤더에 unsafe-url 또는 no-referrer-when-downgrade 값이 설정되어 있을 경우, Referer 헤더에 전체 URL이 그대로 전송됩니다. 만약 URL에 세션 토큰이나 인증 정보 등 민감한 데이터가 포함되어 있다면, 다른 도메인으로 요청이 전송될 때 해당 정보가 외부로 노출될 수 있습니다.\nURL에 세션 토큰, 인증 정보 등 민감한 데이터가 포함되지 않도록 설계해야 합니다. 또한, 부적절한 Referrer-Policy 설정값은 제거하고, 안전한 설정값으로 변경해야 합니다.\n\n보안상 권장되는 Referrer-Policy 헤더 설정값은 no-referrer, same-origin, strict-origin, strict-origin-when-cross-origin 등이 있습니다.\n\nDjango에서는 SecurityMiddleware를 사용하면 Referrer-Policy 헤더가 자동으로 추가되며, 기본값은 same-origin으로 설정됩니다.",
  "rule.sast.sw.py.7257.example.0.dangerous": "라인 7: unsafe-url 설정은 프로토콜 보안 수준에 상관없이 항상 전체 URL을 전송하므로, 민감한 정보가 Referer 헤더를 통해 노출될 수 있습니다.",
  "rule.sast.sw.py.7257.example.0.safe": "라인 7: strict-origin 설정은 프로토콜 보안 수준이 동일한 경우 Origin 정보만 전송하므로, 민감한 정보가 Referer 헤더를 통해 노출되는 것을 방지합니다.",
  "rule.sast.sw.py.7257.name": "Django 부적절한 Referrer-Policy 설정",
  "rule.sast.sw.py.7258.description": "Django에서는 SecurityMiddleware의 SECURE_CROSS_ORIGIN_OPENER_POLICY 설정을 통해 Cross-Origin-Opener-Policy 헤더를 적용할 수 있습니다. 이 헤더는 브라우저에서 window.open() 또는 링크 클릭으로 새 창이나 새 문서를 열 때, 같은 브라우징 컨텍스트 그룹(BCG)을 유지할지 새롭게 분리할지 결정하는 HTTP 응답 헤더입니다.\n\n그러나 설정 파일(settings.py)에서 해당 값을 None 또는 `unsafe-none`으로 설정할 경우, 브라우저는 새로 열린 페이지가 원본 페이지와 동일한 브라우징 컨텍스트 그룹을 공유하도록 허용합니다. 이로 인해 공격자는 window.name을 이용해 크로스 오리진 데이터 유출(XS-Leak)을 시도하거나, window.opener를 통해 원본 페이지를 조작하는(Tabnabbing) 공격을 수행할 수 있습니다.\n크로스 오리진 데이터 유출(XS-Leak) 및 Tabnabbing 공격을 방지하려면, Cross-Origin-Opener-Policy 헤더를 `same-origin`으로 설정해야 합니다. 이 설정이 적용되면 브라우저는 같은 출처의 문서만 브라우징 컨텍스트 그룹을 공유하며, 다른 출처의 문서는 격리됩니다. 그 결과, 다른 출처에서 열린 문서는 window.opener가 null로 설정되어 원본 페이지를 조작할 수 없습니다.\n\n추가적으로, HTML이나 JavaScript에서 새 창을 여는 `_blank` 속성을 사용할 때 `noopener noreferrer` 속성을 함께 사용해야 합니다. 이를 통해 새로 열린 페이지가 원본 페이지를 참조하지 못하도록 방지하고, 브라우저가 Referer 헤더를 전송하지 않도록 설정할 수 있습니다.\n\nDjango에서는 SecurityMiddleware를 사용하면 Cross-Origin-Opener-Policy 헤더가 자동으로 추가되며, 기본값은 `same-origin`으로 설정됩니다.\n\n만약 설정 파일(settings.py)에서 SECURE_CROSS_ORIGIN_OPENER_POLICY 값을 None 또는 `unsafe-none`으로 설정한 경우, `same-origin` 값으로 변경해야 합니다.",
  "rule.sast.sw.py.7258.example.0.dangerous": "라인 7: 해당 설정은 Cross-Origin-Opener-Policy 헤더를 비활성화하여, XS-Leak 또는 Tabnabbing 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.7258.example.0.safe": "라인 3: Django에서 SecurityMiddleware를 사용하면 Cross-Origin-Opener-Policy 헤더가 자동으로 추가되며, 기본값은 \"same-origin\"으로 설정됩니다. 이를 통해 XS-Leak 또는 Tabnabbing 공격을 방지할 수 있습니다.",
  "rule.sast.sw.py.7258.name": "Django 부적절한 Cross-Origin-Opener-Policy 설정",
  "rule.sast.sw.py.7259.description": "CSP(Content Security Policy) 헤더는 XSS, 데이터 인젝션, 클릭재킹 등의 공격을 방지하기 위한 웹 보안 정책입니다. 이 정책은 다양한 설정값들로 구성되며, 각 설정값은 웹 애플리케이션 보안 수준에 직접적인 영향을 미칩니다.\n\n그러나 CSP가 적절하게 설정되지 않을 경우, 보안을 강화하기보다는 오히려 취약점을 남길 수 있습니다. 특히 CSP 헤더에 와일드카드(*), `unsafe-inline`, `unsafe-eval`, data:, blob:, http:, ws: 값이 포함되어 있다면, 공격자는 이를 악용하여 다양한 공격을 수행할 수 있습니다.\n\n와일드카드(*) 값은 모든 출처를 허용하기 때문에 악성 리소스가 쉽게 로드될 수 있습니다. `unsafe-inline` 값은 인라인 스크립트와 스타일을 허용하여 XSS 공격에 취약합니다. `unsafe-eval` 값은 eval() 함수와 같은 동적 코드 실행을 허용하여 코드 주입 및 XSS 공격에 취약합니다. 또한 data: 및 blob: 값은 인라인 데이터나 대용량 데이터를 허용하여 XSS나 파일 주입 공격 등에 악용될 수 있습니다. 마지막으로 http: 및 ws: 값은 암호화되지 않은 데이터 전송을 허용하기 때문에, 중간자 공격을 통해 민감한 정보가 탈취될 위험이 있습니다.\nDjango에서는 django-csp 패키지를 사용하여 CSP 정책을 설정하고 관리할 수 있습니다. 보안을 강화하기 위해 부적절한 설정값을 제거하고, 안전한 설정값을 적용해야 합니다. 안전한 설정값의 예시는 다음과 같습니다.\n\n`none` 값은 모든 리소스를 로드하지 못하도록 차단하는 설정입니다. 예를 들어, object-src `none`과 같이 설정하면 객체 리소스 로드를 모두 차단할 수 있습니다.\n\n`self` 값은 동일 출처에서 제공되는 리소스만 허용하는 설정입니다. 예를 들어, script-src `self`와 같이 설정하면 동일 출처에서 제공되는 스크립트만 실행할 수 있습니다. 다만, 웹 애플리케이션이 JSONP(JSON with Padding)를 사용하는 경우에는 주의가 필요합니다. 허용된 도메인에 취약한 JSONP 콜백 메서드가 존재할 경우, 공격자가 이를 이용해 악성 스크립트를 주입할 수 있습니다. 이를 방지하기 위해 CORS(Cross-Origin Resource Sharing) 정책을 함께 적용하여 신뢰할 수 있는 출처에서만 데이터를 요청하도록 관리해야 합니다.\n\n`nonce` 값은 고유하게 생성된 nonce 값을 사용하여 인라인 스크립트나 스타일을 안전하게 허용하는 설정입니다. 예를 들어, script-src `nonce-랜덤값`과 같이 설정하면, 해당 nonce 값을 가진 스크립트만 실행할 수 있습니다. \n\n`sha256-hash` 값은 해시값(sha256, sha384, sha512 등)을 사용하여 인라인 스크립트나 스타일을 안전하게 허용하는 설정입니다. 예를 들어, script-src `sha256-해시값`과 같이 설정하면, 인라인 스크립트나 스타일의 해시값이 일치하는 경우에만 리소스가 실행됩니다.",
  "rule.sast.sw.py.7259.example.0.dangerous": "라인 11: CSP의 script-src가 UNSAFE_EVAL로 설정되어 있어 동적 코드 실행이 허용됩니다. 이로 인해 코드 주입 및 XSS 공격에 노출될 수 있습니다.",
  "rule.sast.sw.py.7259.example.0.safe": "라인 11: CSP의 script-src가 SELF로 설정되어 있어 동일 출처에서 제공하는 스크립트만 실행할 수 있습니다. 이로 인해 외부 스크립트 실행이 차단되어 코드 주입 및 XSS 공격 위험을 줄일 수 있습니다.",
  "rule.sast.sw.py.7259.name": "Django 부적절한 CSP 설정",
  "rule.sast.sw.py.7260.description": "미들웨어는 전역적으로 요청과 응답을 변경할 수 있는 낮은 수준의 가벼운 플러그인 시스템입니다. Django에서는 보안을 위해 여러 미들웨어를 제공하며, 대표적인 보안 관련 미들웨어는 다음과 같습니다.\n\nSecurityMiddleware: 보안 헤더를 추가하여 HTTPS 강제 적용, MIME Sniffing 방지, Referrer-Policy 설정, Cross-Origin-Opener-Policy 설정 등의 기능을 제공합니다.\n\nCsrfViewMiddleware: CSRF(Cross-Site Request Forgery) 공격을 방지하기 위해 POST 요청의 CSRF 토큰을 검증하는 기능을 제공합니다.\n\nXFrameOptionsMiddleware: X-Frame-Options 헤더를 추가하여 Clickjacking 공격을 방지하는 기능을 제공합니다.\n\n이 중 하나라도 누락될 경우, 운영 중인 웹 애플리케이션은 여러 보안 취약점에 노출될 수 있습니다.\nDjango에서 웹 애플리케이션을 운영할 때, 보안을 위해 SecurityMiddleware, CsrfViewMiddleware, XFrameOptionsMiddleware를 함께 사용하는 것이 권장됩니다.",
  "rule.sast.sw.py.7260.example.0.dangerous": "라인 3: 보안을 위해 사용되는 일부 Middleware가 비활성화되어 있어 MIME Sniffing, XSS 등 여러 보안 취약점에 노출될 수 있습니다.",
  "rule.sast.sw.py.7260.example.0.safe": "라인 3-5: 보안을 위해 사용되는 Middleware가 모두 활성화되어 있어 MIME Sniffing, XSS, CSRF, Clickjacking 등의 공격을 차단할 수 있습니다.",
  "rule.sast.sw.py.7260.name": "Django 누락된 주요 보안 미들웨어",
  "rule.sast.sw.py.7261.description": "Django는 비밀번호를 안전하게 해싱하고 관리하기 위해 NIST(미국 국립표준기술연구소)에서 권장하는 키 도출 함수(KDF)인 PBKDF2를 기본적으로 사용합니다. 해시 알고리즘은 설정 파일(settings.py)의 PASSWORD_HASHERS 옵션을 통해 지정할 수 있으며, 지정된 알고리즘은 make_password() 함수로 비밀번호 해싱에 사용됩니다.\n\n그러나 Django에서 제공하는 MD5PasswordHasher와 PBKDF2SHA1PasswordHasher는 각각 MD5와 SHA-1 해시 알고리즘을 기반으로 동작합니다. MD5와 SHA-1은 보안에 취약한 해시 알고리즘으로 알려져 있으며, 이를 사용할 경우 공격자가 무차별 대입 공격(Brute-force Attack)이나 충돌 공격(Collision Attack)을 통해 비밀번호를 쉽게 탈취할 수 있습니다.\n\n해당 체커는 설정 파일(settings.py) 내부의 PASSWORD_HASHERS 옵션을 점검합니다. 설정 파일은 분석 수행 파일 경로 옵션을 통해 변경할 수 있습니다.\nMD5와 SHA-1과 같은 취약한 해시 알고리즘은 사용하지 않아야 하며, 보안이 검증된 해시 알고리즘을 사용해야 합니다.\n\nPBKDF2는 NIST에서 권장하는 안전한 키 도출 함수이지만, SHA-1 알고리즘 자체는 보안 취약점이 발견되어 더 이상 안전한 알고리즘으로 간주되지 않습니다.\n\n따라서, Django에서는 PBKDF2SHA1PasswordHasher 대신 PBKDF2 + SHA-256, Bcrypt, Scrypt, Argon2와 같은 더 강력한 해시 알고리즘을 사용하는 것이 권장됩니다. Django는 기본적으로 PBKDF2 + SHA-256(PBKDF2PasswordHasher)을 사용하며, 더 높은 보안 수준이 필요한 경우 Argon2PasswordHasher 또는 BCryptSHA256PasswordHasher를 선택할 수 있습니다.",
  "rule.sast.sw.py.7261.example.0.dangerous": "라인 3: MD5PasswordHasher는 보안에 취약한 해시 알고리즘인 MD5를 지원하므로, 무차별 대입 공격으로 비밀번호가 쉽게 탈취될 수 있습니다.",
  "rule.sast.sw.py.7261.example.0.safe": "라인 3: PBKDF2PasswordHasher는 안전한 해시 알고리즘인 PBKDF2 + SHA256을 지원하므로, 무차별 대입 공격을 시도하더라도 비밀번호를 쉽게 탈취할 수 없습니다.",
  "rule.sast.sw.py.7261.name": "Django 부적절한 해시 알고리즘 설정",
  "rule.sast.sw.py.7294.description": "중요 정보(비밀번호, 암호화 키 등)를 하드코딩한 채 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 공격자는 스니핑, 소스코드 분석, 역공학 등을 통해 이를 쉽게 탈취할 수 있습니다.\n해당 체커는 중요 정보 검출 옵션을 제공합니다. 옵션을 통해 점검할 중요 정보 형식을 지정할 수 있습니다.\n중요 정보는 환경 변수를 이용해 관리하거나, 암호화한 상태로 설정 파일 또는 데이터베이스에 보관해야 합니다. 또한, AWS Secrets Manager나 HashiCorp Vault와 같은 비밀 관리 시스템을 활용하는 것도 좋은 방법입니다.",
  "rule.sast.sw.py.7294.example.0.dangerous": "라인 1: 소스코드 내부에 중요 정보가 하드코딩되어 있습니다.",
  "rule.sast.sw.py.7294.example.0.safe": "라인 1: 소스코드 내부에 중요 정보를 포함하지 않도록 합니다.",
  "rule.sast.sw.py.7294.name": "하드코드된 중요 정보",
  "rule.sast.sw.py.7304.description": "Django는 비밀번호를 안전하게 해싱하고 관리하기 위해 NIST(미국 국립표준기술연구소)에서 권장하는 키 도출 함수(KDF)인 PBKDF2를 기본적으로 사용합니다. 해시 알고리즘은 설정 파일(settings.py)의 PASSWORD_HASHERS 옵션을 통해 지정할 수 있으며, 지정된 알고리즘은 make_password() 함수로 비밀번호 해싱에 사용됩니다.\n\n그러나 Django에서 제공하는 MD5PasswordHasher와 PBKDF2SHA1PasswordHasher는 각각 MD5와 SHA-1 해시 알고리즘을 기반으로 동작합니다. MD5와 SHA-1은 보안에 취약한 해시 알고리즘으로 알려져 있으며, 이를 사용할 경우 공격자가 무차별 대입 공격(Brute-force Attack)이나 충돌 공격(Collision Attack)을 통해 비밀번호를 쉽게 탈취할 수 있습니다.\nMD5와 SHA-1과 같은 취약한 해시 알고리즘은 사용하지 않아야 하며, 보안이 검증된 해시 알고리즘을 사용해야 합니다.\n\nPBKDF2는 NIST에서 권장하는 안전한 키 도출 함수이지만, SHA-1 알고리즘 자체는 보안 취약점이 발견되어 더 이상 안전한 알고리즘으로 간주되지 않습니다.\n\n따라서, Django에서는 PBKDF2SHA1PasswordHasher 대신 PBKDF2 + SHA-256, Bcrypt, Scrypt, Argon2와 같은 더 강력한 해시 알고리즘을 사용하는 것이 권장됩니다. Django는 기본적으로 PBKDF2 + SHA-256(PBKDF2PasswordHasher)을 사용하며, 더 높은 보안 수준이 필요한 경우 Argon2PasswordHasher 또는 BCryptSHA256PasswordHasher를 선택할 수 있습니다.",
  "rule.sast.sw.py.7304.example.0.dangerous": "라인 5: 보안에 취약하다고 알려진 MD5 해시 알고리즘을 사용하면, 무차별 대입 공격에 의해 비밀번호가 쉽게 탈취될 수 있습니다.",
  "rule.sast.sw.py.7304.example.0.safe": "라인 5: 안전한 해시 알고리즘인 PBKDF2 + SHA256을 사용하면, 무차별 대입 공격을 시도하더라도 비밀번호를 쉽게 탈취할 수 없습니다.",
  "rule.sast.sw.py.7304.name": "Django 부적절한 해시 알고리즘 사용",
  "rule.sast.sw.ruby.7504.description": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.\n사용자 이름과 비밀번호를 URL에 포함시키지 않고 보다 안전한 인증 방법을 사용해야 합니다. 예를 들어, OAuth 또는 환경 변수를 통한 자격 증명 관리와 같은 방법이 있습니다.",
  "rule.sast.sw.ruby.7504.example.0.dangerous": "라인 5: 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 하드코딩되어 위험합니다.",
  "rule.sast.sw.ruby.7504.example.0.safe": "라인 5: 사용자 이름과 비밀번호를 포함하는 기본 인증 정보를 .env 파일을 사용하여 안전하게 관리합니다.",
  "rule.sast.sw.ruby.7504.name": "하드코드된 인증 정보",
  "rule.sast.sw.ruby.7505.description": "소스 코드 내에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.\n이메일 주소가 코드 내에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "rule.sast.sw.ruby.7505.example.0.dangerous": "라인 3: 이메일 정보가 하드코딩되어 위험합니다.",
  "rule.sast.sw.ruby.7505.example.0.safe": "라인 3: 이메일 정보를 .env 파일을 활용하여 안전하게 관리합니다.",
  "rule.sast.sw.ruby.7505.name": "하드코드된 이메일 주소",
  "rule.sast.sw.ruby.7506.description": "소스 코드에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.\n소스 코드에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "rule.sast.sw.ruby.7506.example.0.dangerous": "라인 3: IP 정보가 하드코딩되어 위험합니다.",
  "rule.sast.sw.ruby.7506.example.0.safe": "라인 3: IP 값을 .env 파일을 활용하여 안전하게 관리합니다.",
  "rule.sast.sw.ruby.7506.name": "하드코드된 IP 주소",
  "rule.sast.sw.ruby.7507.description": "소스 코드 내에 하드코딩된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.\nAPI 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "rule.sast.sw.ruby.7507.example.0.dangerous": "라인 3: 하드코딩된 API 키가 존재하므로 위험합니다.",
  "rule.sast.sw.ruby.7507.example.0.safe": "라인 3: .env 파일을 사용하여 API 키를 안전하게 관리합니다.",
  "rule.sast.sw.ruby.7507.name": "하드코드된 API 키",
  "rule.sast.sw.ruby.7508.description": "URL 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 스키마는 심각한 보안 문제를 초래할 수 있습니다. 이 방식은 자격 증명을 URL에 평문으로 노출하므로, 로그 파일이나 브라우저 히스토리에서 정보가 유출될 수 있습니다. 또한 중간자 공격에 취약해 악의적인 사용자가 사용자 데이터에 접근하거나 피싱 공격을 실행할 가능성이 높아집니다.\n사용자 이름과 비밀번호를 URL에 포함시키지 않고 보다 안전한 인증 방법을 사용해야 합니다. 예를 들어, OAuth 또는 환경 변수를 통한 자격 증명 관리와 같은 방법이 있습니다.",
  "rule.sast.sw.ruby.7508.example.0.dangerous": "라인 1, 4: 주석문 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.ruby.7508.example.0.safe": "라인 1, 4: 주석문 내에 사용자 이름과 비밀번호를 포함하는 기본 인증 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.ruby.7508.name": "주석문 안의 인증 정보",
  "rule.sast.sw.ruby.7509.description": "주석문에 포함된 이메일 주소는 스팸 발송, 피싱 공격의 표적이 될 수 있으며, 실수로 관리자나 다른 중요 인물의 개인 이메일이 노출될 경우 내부 데이터 관리에 대한 정보를 해커에게 제공할 수도 있습니다.\n이메일 주소가 주석문에 하드코딩되지 않도록 주의하고 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드할 수 있도록 구현합니다.",
  "rule.sast.sw.ruby.7509.example.0.dangerous": "라인 1, 4: 주석문 안에 이메일 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.ruby.7509.example.0.safe": "라인 1, 4: 주석문 내 이메일 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.ruby.7509.name": "주석문 안의 이메일 주소",
  "rule.sast.sw.ruby.7510.description": "주석문에 포함된 IP 주소는 다양한 보안 위협의 원인이 될 수 있습니다. IP 주소가 노출되면 공격자에게 네트워크 구조에 대한 힌트를 제공하고, 디도스(DDoS) 공격, 스니핑 또는 더 세밀한 공격의 대상이 될 수 있습니다.\n주석문에서 IP 주소를 하드코딩하지 않도록 주의하고, 필요한 경우 환경 변수나 설정 파일을 통해 동적으로 로드하도록 구현합니다.",
  "rule.sast.sw.ruby.7510.example.0.dangerous": "라인 1, 4: 주석문 내에 IP 정보가 존재하므로 위험합니다.",
  "rule.sast.sw.ruby.7510.example.0.safe": "라인 1, 4: 주석문 내에 IP 정보가 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.ruby.7510.name": "주석문 안의 IP 주소",
  "rule.sast.sw.ruby.7511.description": "주석문 내에 하드코딩된 API 키를 포함하는 것은 보안을 크게 저해하는 실수입니다. 이는 소스 코드가 공개될 때 해당 정보가 외부에 노출되어 무단 액세스의 위험이 커집니다. 예를 들어, 공개된 저장소나 협업 중인 코드 베이스에서 이러한 정보가 발견되면 악의적인 사용자가 시스템을 탈취하거나 데이터에 무단으로 접근할 수 있습니다.\nAPI 키를 환경 변수나 암호화된 설정 파일 등에 안전하게 보관하여 필요할 때 접근할 수 있도록 합니다.",
  "rule.sast.sw.ruby.7511.example.0.dangerous": "라인 1, 4: 주석문 내에 API 키가 존재하므로 위험합니다.",
  "rule.sast.sw.ruby.7511.example.0.safe": "라인 1, 4: 주석문 내에 API 키 값이 존재하지 않으므로 안전합니다.",
  "rule.sast.sw.ruby.7511.name": "주석문 안의 API 키",
  "rule.sast.sw.ruby.7512.description": "웹 애플리케이션을 개발할 때에는 쿠키 설정을 올바르게 관리하는 것이 중요합니다. 잘못된 쿠키 설정은 Session hijacking, XSS, CSRF와 같은 보안약점을 유발합니다. 이를 막기 위해 보안 쿠키 플래그인 Secure, HttpOnly, SameSite를 적절하게 설정해야 합니다.\n\n1. Secure: 쿠키가 HTTPS 프로토콜을 통해서만 전송되도록 설정합니다. 이는 중간자 공격에 의한 쿠키 정보의 노출을 방지합니다.\n2. HttpOnly: 쿠키가 자바스크립트를 통해 접근할 수 없게 설정합니다. 이는 XSS 공격으로부터 쿠키를 보호합니다.\n3. SameSite: 사이트 간 요청에서 쿠키가 전송되는 것을 제한합니다. 이는 CSRF 공격을 방지합니다.\nSecure와 HttpOnly 플래그는 항상 true로 설정해야 하고, SameSite는 Lax 이상을 사용하는 것이 안전합니다.",
  "rule.sast.sw.ruby.7512.example.0.dangerous": "라인 2: 보안 쿠키 플래그가 선언되지 않아 여러 취약점에 노출됩니다.",
  "rule.sast.sw.ruby.7512.example.0.safe": "라인 2-8: Cookie 값에 Secure, HttpOnly, SameSite 값이 안전하게 설정되어 있습니다.",
  "rule.sast.sw.ruby.7512.name": "부적절한 쿠키 플래그 설정",
  "rule.sast.sw.ruby.7513.description": "디버그 문은 개발 과정에서 로깅을 위해 사용됩니다. 하지만, 이러한 디버그 문은 프로덕션 코드에서는 성능 저하를 초래하고, 민감한 정보를 로그로 노출할 위험이 있어 제거되어야 합니다.\n프로덕션 환경 준비 시 모든 디버그 문을 철저히 검토하고 제거해야 합니다.",
  "rule.sast.sw.ruby.7513.example.0.dangerous": "라인 3: 디버그 코드가 제거되지 않았으므로 위험합니다.",
  "rule.sast.sw.ruby.7513.example.0.safe": "라인 3: 디버그 코드가 주석 처리되어 안전합니다.",
  "rule.sast.sw.ruby.7513.name": "제거되지 않고 남은 디버그 코드",
  "rule.sast.sw.ruby.7514.description": "암호학적으로 안전하지 않은 난수 생성기는 예측 가능한 값들을 생성할 수 있으며, 이는 보안 취약점으로 이어질 수 있습니다.\n최신 언어들은 대부분 안전한 난수 방법을 제공합니다. 보통은 보안을 생각하여 만든 난수가 아니라 보다 안전한 난수 방법을 사용하여 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.ruby.7514.example.0.dangerous": "라인 2: 예측 가능한 난수 생성 함수를 사용했기 때문에 위험합니다.",
  "rule.sast.sw.ruby.7514.example.0.safe": "라인 2: 예측이 어려운 난수 생성 함수 SecureRandom을 사용했기 때문에 안전합니다.",
  "rule.sast.sw.ruby.7514.name": "취약한 난수",
  "rule.sast.sw.ruby.7515.description": "대화형 디버거를 사용하면 애플리케이션 실행 중 특정 지점에서 코드 실행을 의도적으로 중단하고, 대화형 콘솔(REPL)을 통해 현재 실행 컨텍스트의 변수, 객체, 메서드 등을 확인하거나 임의의 코드를 실행할 수 있게 합니다.\n\nRails 서버가 실행 중인 상태에서 해당 디버거 코드가 호출될 경우, 요청을 처리하던 스레드 또는 프로세스가 중단되며 서버 콘솔에 입력 대기 상태의 프롬프트가 출력됩니다.\n\n운영 환경에 이러한 코드가 남아 있을 경우, 외부 요청 하나만으로도 서버 실행이 중단될 수 있으며, 콘솔 접근이 가능한 환경에서는 내부 정보 노출 또는 임의 코드 실행(RCE)으로 이어질 위험이 있습니다.\n프로덕션 환경을 준비할 때 모든 디버그 문을 철저히 검토하고 제거해야 합니다.",
  "rule.sast.sw.ruby.7515.example.0.dangerous": "라인 3: 대화형 디버거가 제거되지 않았기 때문에 위험합니다.",
  "rule.sast.sw.ruby.7515.example.0.safe": "라인 3: 대화형 디버거가 주석 처리되어 안전합니다.",
  "rule.sast.sw.ruby.7515.name": "대화형 디버거 사용",
  "rule.sast.sw.ruby.7516.description": "해시 함수는 각기 다른 길이의 데이터를 고정된 길이의 임의 데이터로 매핑하는 단방향 함수입니다. 같은 데이터를 사용하면 항상 같은 데이터가 나오기 때문에 유저의 비밀번호를 저장하는 등에 사용됩니다. 하지만 해시 함수인 MD5나 SHA1의 경우 해시를 계산하는 속도가 매우 빠르고 간단해서 성능적으로 뛰어나 보이지만 이는 해커의 무작위 대입 공격에 취약합니다. 더욱이 간단한 데이터에 해시 함수를 사용할 경우 레인보우 테이블에 저장되어 공유되기 때문에 위험합니다.\nMD5와 SHA1의 단점을 극복하기 위해 사용되는 함수는 다양하게 존재합니다. SHA256 혹은 비교적 최신의 안전한 알고리즘인 Bcrypt, Blake2, Argon2, PBKDF2, Scrypt 등을 사용하여 이를 쉽게 대체할 수 있습니다.",
  "rule.sast.sw.ruby.7516.example.0.dangerous": "라인 3: 무작위 대입 공격에 취약한 해시 함수를 사용하여 위험합니다.",
  "rule.sast.sw.ruby.7516.example.0.safe": "라인 3: 비교적 최신의 안전한 해시 함수를 사용하므로 안전합니다.",
  "rule.sast.sw.ruby.7516.name": "취약한 해시",
  "rule.sast.sw.ruby.7517.description": "취약한 암호화 알고리즘은 공격자에게 데이터를 해독할 수 있는 기회를 제공할 수 있습니다. 예전에는 해독하는데 몇 십 억년이 걸릴 것이라고 예상되던 알고리즘이 지금은 며칠이나 몇 시간 내에 해독되기도 합니다. RC2, DES, Blowfish 등의 알고리즘이 여기에 해당됩니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하며, 학계 및 업계에서 이미 검증된 표준화된 알고리즘을 사용하도록 합니다. 기존에 취약하다고 알려진 암호화 알고리즘을 대신하여 AES, RSA, ECC 등의 안전한 암호화 알고리즘을 사용하도록 합니다.",
  "rule.sast.sw.ruby.7517.example.0.dangerous": "라인 6: 취약한 DES 알고리즘을 사용했습니다.",
  "rule.sast.sw.ruby.7517.example.0.safe": "라인 6: 취약한 알고리즘 대신 AES와 같은 안전한 알고리즘을 사용합니다.",
  "rule.sast.sw.ruby.7517.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.ruby.7518.description": "RSA 암호화는 공개키 암호화 방식 중 하나로, 키의 길이에 따라 암호의 강도가 달라집니다. 현재, 대부분의 상황에서 적절하다고 간주되는 키 길이는 2048 bits입니다. 현재의 컴퓨팅 능력으로는 이를 깨트리는 것이 실질적으로 불가능하기 때문입니다.\nRSA 키 길이는 2048 bits 이상을 사용하는 것이 좋습니다. 가장 권장하는 길이이고, 3072 bits 또는 4096 bits 등을 사용하는 것이 더 안전하지만 키 길이가 길어질수록 암복호화에 필요한 컴퓨팅 리소스가 증가합니다.",
  "rule.sast.sw.ruby.7518.example.0.dangerous": "라인 5: RSA 키 길이가 2048 bits 보다 작아 위험합니다.",
  "rule.sast.sw.ruby.7518.example.0.safe": "라인 5: RSA 키 길이가 2048 bits 이상으로 설정되어 안전합니다.",
  "rule.sast.sw.ruby.7518.name": "충분하지 않은 RSA 암호화 키 길이",
  "rule.sast.sw.sql.897.description": "iBatis에서의 SQL 삽입 체커는 클라이언트에서 애플리케이션으로 들어가는 입력 데이터를 통하여 생성되는 SQL 구문을 검출합니다.\n외부에서 입력된 값이 쿼리어의 명령어에 연결되는 문자열로 사용되면, 공격자가 의도하지 않았던 문자열을 전달함으로써 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하여 임의의 데이터베이스 명령어를 수행할 수 있습니다. 안전한 코딩을 위해서는 ibatis 데이터 맵 파일을 작성 시 인자를 받는 쿼리 명령어를 정의 시에 문자열 삽입 인자 `$..$`를 사용하지 않고, `#..#` 형태의 쿼리문을 사용합니다.\n이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\n인자로 문자열을 전달할 때 `$인자$` 대신 `#인자#`로 감싸 쿼리문의 구조가 변경되지 않도록 합니다.",
  "rule.sast.sw.sql.897.example.0.dangerous": "라인 5: $name$으로 전달되는 문자열 값이 그대로 연결되어 쿼리문으로 만들어 냅니다. 따라서 name의 값으로 OR 'x'='x'를 전달하게 되면 테이블의 모든 원소를 삭제하게 됩니다.",
  "rule.sast.sw.sql.897.example.0.safe": "라인 5: 인자로 문자열을 전달할 때 #name# 형태로 변경하여 쿼리문의 구조가 변경되지 않도록 합니다.",
  "rule.sast.sw.sql.897.name": "iBatis에서의 SQL 삽입",
  "rule.sast.sw.sql.898.description": "myBatis에서의 SQL 삽입 체커는 클라이언트에서 애플리케이션으로 들어가는 입력 데이터를 통하여 생성되는 SQL 구문을 검출합니다.\n외부에서 입력된 값이 쿼리어의 명령어에 연결되는 문자열로 사용되면, 공격자가 의도하지 않았던 문자열을 전달함으로써 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하여 임의의 데이터베이스 명령어를 수행할 수 있습니다 안전한 코딩을 위해서는 mybatis 데이터 맵 파일을 작성 시 인자를 받는 쿼리 명령어를 정의 시에 문자열 삽입 인자 `${..}`를 사용하지 않고, `#{..}` 형태의 쿼리문을 사용합니다.\n이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\n인자로 문자열을 전달할 때 `${인자}` 대신 `#{인자}`로 감싸 쿼리문의 구조가 변경되지 않도록 합니다.",
  "rule.sast.sw.sql.898.example.0.dangerous": "라인 5: ${name}으로 전달되는 문자열 값이 그대로 연결되어 쿼리문으로 만들어 냅니다. 따라서 name의 값으로 OR 'x'='x'를 전달하게 되면 테이블의 모든 원소를 삭제하게 됩니다.",
  "rule.sast.sw.sql.898.example.0.safe": "라인 5: 인자로 문자열을 전달할 때 #{name} 형태로 변경하여 쿼리문의 구조가 변경되지 않도록 합니다.",
  "rule.sast.sw.sql.898.name": "myBatis에서의 SQL 삽입",
  "rule.sast.sw.swift.2275.description": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.\n하드코딩된 비밀번호는 위험하다고 간주합니다. 비밀번호는 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.\n프로그램 코드 내부에 하드코딩된 비밀번호를 포함하고 이를 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 관리자 정보가 노출될 수 있으므로 위험합니다.\n비밀번호를 하드코딩하지 않고, 외부에서 불러들입니다.",
  "rule.sast.sw.swift.2275.example.0.dangerous": "라인 5: 하드코딩된 비밀번호를 사용하고 있습니다.",
  "rule.sast.sw.swift.2275.example.0.safe": "라인 5: 별도의 메소드로 비밀번호를 가져옵니다.",
  "rule.sast.sw.swift.2275.name": "하드코딩된 비밀번호",
  "rule.sast.sw.swift.2276.description": "비어 있는 비밀번호 체커는 비어 있는 비밀번호를 사용하는 코드를 검출합니다.\n비어 있는 비밀번호는 위험하다고 간주합니다. 비밀번호는 비어 있지 않은 문자열로 암호화하여 별도의 파일에 저장하여 사용하는 것이 바람직합니다.\n비어 있는 비밀번호를 사용할 경우 의도하지 않는 외부 접근을 허용하게 됩니다.\n비어 있는 비밀번호를 사용하지 않습니다.",
  "rule.sast.sw.swift.2276.example.0.dangerous": "라인 6: 빈 비밀번호를 사용하고 있습니다.",
  "rule.sast.sw.swift.2276.example.0.safe": "라인 6: DB 접속 시 비밀번호를 사용합니다.",
  "rule.sast.sw.swift.2276.name": "비어 있는 비밀번호",
  "rule.sast.sw.swift.2285.description": "취약한 해시 알고리즘 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.\n표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 해시 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다. MD5와 같은 오래된 알고리즘의 경우에는 레인보우 테이블과 같은 방법으로 간단히 해시를 무력화할 수 있습니다.\n자신만의 해시 알고리즘을 개발하는 것은 위험합니다. 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 MD5, SHA-1 등의 알고리즘 대신 SHA-256, SHA-512 등의 안전한 알고리즘을 사용합니다. 또한 예측 불가능한 솔트를 함께 사용하여 공격을 어렵게 만들어야 합니다.",
  "rule.sast.sw.swift.2285.example.0.dangerous": "라인 6: MD5 해시를 시도하고 있습니다.",
  "rule.sast.sw.swift.2285.example.0.safe": "라인 3: SHA256 해시 알고리즘을 사용합니다.",
  "rule.sast.sw.swift.2285.name": "취약한 해시 알고리즘",
  "rule.sast.sw.swift.2287.description": "ECB 모드로 암호화 알고리즘 사용 체커는 암호화할 때 ECB 모드를 사용하는 경우를 검출합니다.\nECB 모드는 동일한 일반 텍스트 블록에 대해 같은 암호화 텍스트를 생성하므로 본질적으로 취약합니다.\nCBC나 CFB와 같은 안전한 모드를 사용합니다.",
  "rule.sast.sw.swift.2287.example.0.dangerous": "라인 3: AES 암호를 ECB 모드로 사용했습니다.",
  "rule.sast.sw.swift.2287.example.0.safe": "라인 3: ECB 모드 외에 다른 모드를 사용합니다.",
  "rule.sast.sw.swift.2287.name": "ECB 모드로 암호화 알고리즘 사용",
  "rule.sast.sw.swift.2288.description": "하드코딩된 IP 체커는 IP 주소를 하드코딩하여 사용하는 코드를 검출합니다.\nIP 주소를 하드코딩하여 사용했습니다.\nIP를 하드코딩하는 경우 API 서비스를 제공하는 서버가 노출될 수 있습니다.\nIP주소를 하드코딩하여 사용하지 않습니다.",
  "rule.sast.sw.swift.2288.example.0.dangerous": "라인 13, 14: 하드코딩된 ip를 통해 NSHost를 생성하고 있습니다.",
  "rule.sast.sw.swift.2288.example.0.safe": "라인 1: IP 주소를 신뢰할 수 있는 외부 입력으로 받으세요.",
  "rule.sast.sw.swift.2288.name": "하드코딩된 IP",
  "rule.sast.sw.swift.2345.description": "GET 방식으로 전송 체커는 GET 방식으로 전송을 수행하는 경우를 검출합니다.\n보다 안전한 POST 방식으로 전송을 수행할 것을 권장합니다.특히 NSURLRequest는 기본적으로 GET 방식으로 전송을 수행하기 때문에 주의하여 사용해야 합니다.\nGET 방식으로 전송을 수행하는 경우를 검출합니다. GET 방식을 통한 전송은 URL과 전달된 매개 변수가 브라우저를 통해 표시되기 때문에 조작 가능성이 존재합니다.\nGET 방식으로 전송을 하지 않습니다.",
  "rule.sast.sw.swift.2345.example.0.dangerous": "라인 11: GET 요청을 수행합니다.",
  "rule.sast.sw.swift.2345.example.0.safe": "라인 11: POST 요청을 수행합니다.",
  "rule.sast.sw.swift.2345.name": "GET 방식으로 전송",
  "rule.sast.sw.swift.2347.description": "광범위 도메인을 허용하는 쿠키 사용 체커는 광범위 도메인을 대상으로 하는 쿠키를 사용하는 코드를 검출합니다.\n개발자는 쿠키를 `.example.com`과 같은 기본 도메인 전반에 걸쳐 활성화되도록 설정하기도 합니다. 이 경우 기본 도메인 및 모든 하위 도메인의 모든 웹 애플리케이션에 쿠키가 노출됩니다. 쿠키는 흔히 세션 식별자와 같은 민감한 정보를 전하기 때문에 애플리케이션 전반에서 쿠키를 공유하면 한 애플리케이션의 취약점이 다른 애플리케이션을 손상시킬 수 있습니다.\n쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.swift.2347.example.0.dangerous": "라인 14: 쿠키의 허용 도메인이 라인 8에서 광범위하게 지정된 속성을 사용해서 쿠키를 생성합니다.",
  "rule.sast.sw.swift.2347.example.0.safe": "라인 14: 쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.swift.2347.name": "광범위 도메인을 허용하는 쿠키 사용",
  "rule.sast.sw.swift.2348.description": "광범위 경로를 허용하는 쿠키 사용 체커는 최상위 경로로 지정된 쿠키를 사용하는 코드를 검출합니다.\n개발자는 흔히 루트 컨텍스트 경로(`/`)에서 접근할 수 있도록 쿠키를 설정합니다. 그러면 도메인의 모든 웹 애플리케이션에 대해 쿠키가 노출됩니다. 쿠키는 흔히 세션 식별자와 같은 민감한 정보를 전하기 때문에 애플리케이션 전반에서 쿠키를 공유하면 한 애플리케이션의 취약점이 다른 애플리케이션을 손상시킬 수 있습니다.\n쿠키의 허용 경로를 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.swift.2348.example.0.dangerous": "라인 12: 쿠키의 허용 경로가 라인 8에서 광범위하게 지정된 속성을 사용해서 쿠키를 생성합니다.",
  "rule.sast.sw.swift.2348.example.0.safe": "라인 12: 쿠키의 허용 도메인을 광범위하게 지정하지 않습니다.",
  "rule.sast.sw.swift.2348.name": "광범위 경로를 허용하는 쿠키 사용",
  "rule.sast.sw.swift.2349.description": "민감한 데이터를 지속적인 쿠키에 저장 체커는 민감한 데이터를 지닌 쿠키에 지나치게 긴 지속 시간을 설정하는 코드를 검출합니다.\n대부분의 웹 프로그래밍 환경에서는 비지속적으로 쿠키를 생성합니다. 이러한 쿠키는 브라우저 메모리(디스크에 기록되지 않음)에만 상주하며 브라우저가 닫히면 사라집니다. 프로그래머는 미래의 특정 날짜까지 브라우저 세션에 대해 쿠키가 지속되도록 지정할 수 있습니다. 해당 쿠키는 디스크에 기록되고 브라우저 세션 및 장치 재시작에서도 유지됩니다. 지속적인 쿠키는 사이트와 상호 작용하는 사용자를 프로필하는 데 사용됩니다. 공격자는 해당 데이터를 통해 지속적인 쿠키에 포함된 추적 데이터의 개인 정보를 악용할 수 있습니다. 지속적인 쿠키의 경우 만료 시간이 길게 설정되어 해당 쿠키에 개인 정보가 저장되면 데이터를 도용할 수 있는 위험도 증가하게 됩니다.\n쿠키의 만료 시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정하고, 지속적인 쿠키에는 사용자 권한 등급, 세션 ID 등 중요 정보가 포함되지 않도록 설정해야 합니다.",
  "rule.sast.sw.swift.2349.example.0.dangerous": "라인 15: 쿠키의 허용 기간이 라인 12에서 10년으로 설정되었습니다.",
  "rule.sast.sw.swift.2349.example.0.safe": "라인 15: 쿠키의 허용 기간이 라인 20에서 30일로 설정되었습니다.",
  "rule.sast.sw.swift.2349.name": "민감한 데이터를 지속적인 쿠키에 저장",
  "rule.sast.sw.swift.2350.description": "비어 있는 HMAC 키 체커는 HMAC 키가 비어 있는 경우를 검출합니다.\n빈 HMAC 키를 사용하는 것은 좋은 방법이 아닙니다. HMAC의 암호화 효력은 메시지 인증 값의 계산 및 확인에 사용되는 암호 키의 크기에 따라 달라집니다. 빈 키를 사용하면 HMAC 함수의 암호화 효력이 손상됩니다.\n키 위조 및 복구 공격에 취약합니다.\n적절한 HMAC 키를 사용합니다.",
  "rule.sast.sw.swift.2350.example.0.dangerous": "라인 5: 빈 키를 사용하여 HMAC를 계산합니다.",
  "rule.sast.sw.swift.2350.example.0.safe": "라인 5: 적절한 HMAC 키를 사용합니다.",
  "rule.sast.sw.swift.2350.name": "비어 있는 HMAC 키",
  "rule.sast.sw.swift.2351.description": "비어 있는 솔트 체커는 암호화 키의 솔트에 공백을 사용하는 코드를 검출합니다.\n빈 솔트를 사용하는 것은 좋은 방법이 아닙니다. 빈 솔트를 사용하면 해싱된 값을 확인하기가 쉬워질 뿐만 아니라 문제를 해결하기가 어려워집니다. 코드가 운영 단계에 들어가면 솔트는 쉽게 변경할 수 없습니다.\n값이 빈 솔트로 해싱되었음을 공격자가 알아내는 경우 애플리케이션에 대해 `레인보우 테이블`을 계산하고 해싱된 값을 쉽게 파악할 수 있습니다.\n적절한 솔트 값을 사용합니다.",
  "rule.sast.sw.swift.2351.example.0.dangerous": "라인 9: CCKeyDerivationPBKDF() 에서 빈 솔트를 사용했습니다.",
  "rule.sast.sw.swift.2351.example.0.safe": "라인 9: CCKeyDerivationPBKDF() 메소드 호출 시 반드시 솔트를 사용합니다.",
  "rule.sast.sw.swift.2351.name": "비어 있는 솔트",
  "rule.sast.sw.swift.2352.description": "하드코딩된 솔트 체커는 하드코딩된 솔트 값을 해시 계산에 사용하는 코드를 검출합니다.\n소스 코드에서 고정된 솔트 값을 사용하는 경우 모든 개발자에게 솔트가 노출될 뿐만 아니라 일단 애플리케이션을 운영하기 시작하면 수정하기가 어려워집니다. 또한 공격자가 솔트 값을 아는 경우 애플리케이션에 대한 `레인보우 테이블`을 계산하여 해싱된 값을 더 쉽게 확인할 수 있습니다.\n암호학적으로 안전한 방식으로 무작위로 생성되어 예측이 어려운 솔트를 사용하거나 솔트를 외부 입력으로 줄 수 있도록 프로그램을 작성합니다.",
  "rule.sast.sw.swift.2352.example.0.dangerous": "라인 11: CCKeyDerivationPBKDF() 에서 하드코딩된 솔트를 사용했습니다.",
  "rule.sast.sw.swift.2352.example.0.safe": "라인 10: CCKeyDerivationPBKDF() 메소드 호출 시 따로 솔트 값을 얻어와 사용하도록 합니다.",
  "rule.sast.sw.swift.2352.name": "하드코딩된 솔트",
  "rule.sast.sw.swift.2355.description": "안전하지 않은 쿠키 체커는 쿠키를 암호화하지 않은 채로 전송하는 경우를 검출합니다.\nHTTPCookie 로 생성된 쿠키는 HTTPCookiePropertyKey.secure 플래그를, NSHTTPCookie 로 생성된 쿠키는 NSHTTPCookieSecure 플래그를 TRUE로 설정하지 않으면 안됩니다..\n보안에 민감한 데이터를 브라우저 쿠키에 저장할 때 보안 속성을 세팅하지 않으면 SSL 등의 보안 프로토콜을 통해 전송이 되지 않습니다. 그로 인해 중요 정보가 공격자에게 단순한 텍스트의 형태로 노출될 수 있습니다. 이것은 쿠키가 개인 정보나 세션 ID를 포함하는 경우에 특히 중요합니다.\n쿠키의 secure 플래그를 true로 설정하도록 합니다.",
  "rule.sast.sw.swift.2355.example.0.dangerous": "라인 6: 쿠키가 secure 플래그 없이 생성됩니다.",
  "rule.sast.sw.swift.2355.example.0.safe": "라인 7: 6번째 라인에서 쿠키에 secure 플래그를 설정합니다.",
  "rule.sast.sw.swift.2355.name": "안전하지 않은 쿠키",
  "rule.sast.sw.swift.2356.description": "취약한 프레임워크에 의존한 보안 결정 체커는 LocalAuthentication 프레임워크, LAContext를 사용하여 사용자를 인증하는 경우를 검출합니다.\n터치 ID 기반 인증은 LocalAuthentication 프레임워크를 사용하거나 키 집합 서비스의 터치 ID 기반 액세스 제어를 사용하는 두 가지 방법으로 구현할 수 있습니다. 두 방법 모두 대부분의 애플리케이션에 대해 충분히 강력하지만 LocalAuthentication 방법은 뱅킹, 의료 및 보험과 같은 고위험 애플리케이션에는 적합성이 떨어지는 몇 가지 특성을 갖고 있습니다.\n고위험 애플리케이션에서는 키 집합 서비스의 터치 ID 기반 액세스 제어를 사용합니다.",
  "rule.sast.sw.swift.2356.example.0.dangerous": "라인 3: LAContext를 사용하여 사용자 인증을 수행합니다",
  "rule.sast.sw.swift.2356.example.0.safe": "라인 1: 해당 내용을 삭제하고 SecAccessControlCreateWithFlags를 사용하여 사용자 인증 정보에 접근합니다.",
  "rule.sast.sw.swift.2356.name": "취약한 프레임워크에 의존한 보안 결정",
  "rule.sast.sw.swift.2357.description": "시스템 정보 노출 체커는 오류 메시지 등을 통해 시스템 정보를 출력하는 코드를 검출합니다.\n애플리케이션이 실행 환경, 사용자 등 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우, 공격자의 악성 행위를 도울 수 있습니다. 예외 발생 시 예외 이름이나 스택 트레이스를 출력하면, 프로그램 내부 구조를 쉽게 파악할 수 있는 위험이 있습니다.\n오류 메시지는 정해진 사용자에게 유용한 최소한의 정보만 포함하도록 합니다. 소스 코드에서 예외 상황은 내부적으로 처리하며, 민감한 정보를 포함하는 오류를 출력하지 않도록 합니다.",
  "rule.sast.sw.swift.2357.example.0.dangerous": "라인 5-7: stderr 스트림으로 출력합니다.",
  "rule.sast.sw.swift.2357.example.0.safe": "라인 5: 시스템 데이터를 외부로 유출하지 않도록 합니다.",
  "rule.sast.sw.swift.2357.name": "시스템 정보 노출",
  "rule.sast.sw.swift.2358.description": "취약한 SSL 프로토콜 체커는 SSLv2, SSLv23 및 SSLv3 프로토콜을 사용하는 경우를 검출합니다.\nTLS(Transport Layer Security) 프로토콜과 SSL(Secure Sockets Layer) 프로토콜은 클라이언트와 웹 서버 사이에 전송되는 데이터의 신뢰성, 기밀성, 무결성을 보장하는 보호 메커니즘을 제공합니다. TLS와 SSL 모두 주기적인 버전 업데이트에 따라 여러 번 수정되었습니다. 각각의 새로운 수정 버전은 이전 버전에서 발견된 보안 취약점을 개선하도록 설계되었습니다. 안전하지 않은 버전의 TLS/SSL을 사용하면 데이터 보호 능력이 약해지므로 공격자가 침입하여 중요한 정보를 훔치거나 수정할 수 있습니다.\n보안이 취약한 버전의 TLS/SSL은 다음과 같은 속성이 하나 이상 나타날 수 있습니다. - MITM(Man-In-The-Middle) 공격에 무방비 - 인증과 암호화에 동일한 키 사용 - 약한 메시지 인증 제어 - TCP 연결 차단에 무방비 이러한 속성이 있으면 공격자가 민감한 데이터를 가로채거나, 수정하거나, 조작할 수 있게 됩니다.\n최신 프로토콜을 사용합니다,.",
  "rule.sast.sw.swift.2358.example.0.dangerous": "라인 2-5: deprecated 된 프로토콜을 사용했습니다.",
  "rule.sast.sw.swift.2358.example.0.safe": "라인 2: 최신 프로토콜을 사용합니다.",
  "rule.sast.sw.swift.2358.name": "취약한 SSL 프로토콜",
  "rule.sast.sw.swift.2359.description": "SMS 기능 사용 체커는 SMS 관련 작업을 수행하는 경우를 검출합니다.\nSMS 관련 작업은 애플리케이션의 핵심 기능에 필수적이지 않은 이상 수행해서는 안됩니다.\n모바일 장치를 겨냥해 작성된 멀웨어는 종종 사용자의 돈 또는 데이터를 훔치기 위해 이러한 기능을 남용합니다.\nSMS기능을 사용하지 않도록 합니다.",
  "rule.sast.sw.swift.2359.example.0.dangerous": "라인 1: MFMessageComposeViewController를 사용했습니다.\n라인 7: sms 메시지 발송을 시도합니다.",
  "rule.sast.sw.swift.2359.example.0.safe": "라인 1: 삭제하여 해당 기능을 사용하지 않습니다.",
  "rule.sast.sw.swift.2359.name": "SMS 기능 사용",
  "rule.sast.sw.swift.2360.description": "자동 다이얼링 공격 방지 체커는 악성 사이트 방문 시 자동 다이얼링 공격을 방지하는 어떠한 제어도 구현하지 않는 경우를 검출합니다.\n페이지의 콘텐트를 완전하게 제어하고 있는 경우 이외에는 악의적 공격자가 자동 전화 또는 FaceTime 통화를 시작하는 데 사용될 수 있는 링크를 사용자가 클릭할 수 있습니다.\n예를 들어 애플리케이션이 링크가 포함되어 있을 수 있는 블로그 게시물 또는 트윗을 표시할 수 있습니다. 사용자가 방문 중인 게시물이나 트윗의 작성자는 자신의 페이지에 임의의 링크를 사용할 수 있습니다. 사용자가 악성 사이트를 방문하여 속거나 자동 유도되어 링크를 클릭할 경우, 공격자는 자동 FaceTime 또는 전화 통화를 시작하고 몇 초 동안 장치를 차단하여 사용자의 통화 취소를 방지할 수 있습니다. 랜딩 페이지를 제어하더라도 사용자가 다른 신뢰할 수 없는 사이트로 탐색할 수 있다는 점을 유의하십시오.\nwebView 를 통해 페이지를 로드하는것을 막아야 합니다.",
  "rule.sast.sw.swift.2360.example.0.dangerous": "라인 10: webView를 통해 페이지를 로드합니다.",
  "rule.sast.sw.swift.2360.example.0.safe": "라인 1-12: 삭제하여 해당 기능을 사용하지 않습니다.",
  "rule.sast.sw.swift.2360.name": "자동 다이얼링 공격 방지",
  "rule.sast.sw.swift.2361.description": "HTTP 헤더 조작 체커는 검증되지 않은 외부 입력이 HTTP 응답 헤더에 포함되는 경우를 검출합니다.\n많은 소프트웨어 보안 취약점과 마찬가지로 헤더 조작은 목적의 수단일 뿐 목적 자체는 될 수 없습니다. 이 취약점은 본질적으로 간단 명료합니다. 공격자가 악성 데이터를 취약한 애플리케이션에 전달하고 애플리케이션은 HTTP 응답 헤더에 데이터를 포함합니다. 현대의 많은 애플리케이션 서버는 악성 문자가 HTTP 헤더에 삽입되는 것을 방지합니다. 예를 들어, Apache Tomcat의 최신 버전은 금지된 문자로 헤더를 설정할 경우 IllegalArgumentException을 발생시킵니다. HTTP 헤더에 검증되지 않은 외부 입력을 포함시키면 이를 공격자는 캐시 감염, 크로스 사이트 스크립트, HTTP 응답 분할, 세션 고정, 교차 사용자 변조, 페이지 하이재킹, 쿠키 조작, 신뢰할 수 없는 주소로 자동 연결 등 다양한 공격의 통로로 활용할 수 있습니다. 새 줄 문자를 필터링하면 HTTP 응답 분할은 방지할 수 있지만 다른 취약점에 대해서는 여전히 안전하지 않습니다.\n외부 입력을 헤더에 포함시킬 때는 충분한 필터를 거친 안전한 값만 전달합니다.",
  "rule.sast.sw.swift.2361.example.0.dangerous": "라인 4: http 헤더의 값을 확인없이 사용했습니다.",
  "rule.sast.sw.swift.2361.example.0.safe": "라인 4: http 헤더의 값을 필터링하는 함수를 작성하여 안전하게 사용합니다.",
  "rule.sast.sw.swift.2361.name": "HTTP 헤더 조작",
  "rule.sast.sw.swift.2362.description": "반복 횟수가 적은 키 파생 함수 사용 체커는 암호 기반 키 파생 함수에서 사용하는 반복 횟수가 지나치게 낮은 경우를 검출합니다.\n키 파생 함수는 기본 키와 그 밖의 매개 변수에서 키를 파생하는 데 사용됩니다. 암호 기반 키 파생 함수에서 기본 키는 암호이고 그 밖의 매개 변수는 솔트 값과 반복 횟수입니다. 반복 횟수는 전통적으로 암호에서 키를 파생하는 데 드는 비용을 높이는 데 적절히 사용되어 왔습니다.\n반복 횟수가 너무 적으면 공격자가 애플리케이션에 대한 `레인보우 테이블`을 계산하여 해싱된 암호 값을 더 쉽게 확인할 수 있기 때문에 공격 가능성이 높아집니다.\n충분한 반복 횟수를 거치도록 코드를 작성합니다.",
  "rule.sast.sw.swift.2362.example.0.dangerous": "라인 5: CCKeyDerivationPBKDF() 에서 작은 수의 iteration을 사용했습니다.",
  "rule.sast.sw.swift.2362.example.0.safe": "라인 5: CCKeyDerivationPBKDF() 에서 충분한 수의 iteration을 사용했습니다.",
  "rule.sast.sw.swift.2362.name": "반복 횟수가 적은 키 파생 함수 사용",
  "rule.sast.sw.swift.2363.description": "널 솔트 사용 체커는 암호화 키의 솔트에 nil 값을 사용하는 코드를 검출합니다.\n널(nil) 솔트는 쉽게 해결할 수 없는 방식으로 시스템 보안을 손상시킬 수 있습니다.\n널(nil) 솔트를 사용하는 것은 좋은 방법이 아닙니다. 널 솔트를 사용하면 해싱된 값을 확인하기가 쉬워질 뿐만 아니라 문제를 해결하기가 어려워집니다. 코드가 운영 단계에 들어가면 솔트는 쉽게 변경할 수 없습니다. 공격자가 값이 널 솔트로 해싱되었음을 알아차리는 경우 애플리케이션에 대해 `레인보우 테이블`을 계산하고 해싱된 값을 쉽게 파악할 수 있습니다.\n적절한 솔트 값을 사용합니다.",
  "rule.sast.sw.swift.2363.example.0.dangerous": "라인 5: nil 솔트를 사용했습니다.",
  "rule.sast.sw.swift.2363.example.0.safe": "라인 5: 솔트 값을 다른 메소드에서 가져옵니다.",
  "rule.sast.sw.swift.2363.name": "널 솔트 사용",
  "rule.sast.sw.swift.2826.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\n외부 입력값이 쿼리에 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다.",
  "rule.sast.sw.swift.2826.example.0.dangerous": "라인 5: 외부 입력을 그대로 SQL 쿼리 문자열에 사용했습니다.",
  "rule.sast.sw.swift.2826.example.0.safe": "라인 5: 필터 함수 등을 통해 안전한 SQL 쿼리 문자열만 사용하도록 합니다.",
  "rule.sast.sw.swift.2826.name": "SQL 삽입",
  "rule.sast.sw.swift.2826.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.swift.2826.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2826.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.swift.2826.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.swift.2826.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.swift.2826.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2826.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) sqlite3_exec$param(2)",
  "rule.sast.sw.swift.2826.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2826.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.swift.2826.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2827.description": "자원 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 리소스(resource) 식별자를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 대한 접근 혹은 식별을 허용할 경우에 입력값 조작을 통해 시스템이 보호하는 리소스에 임의로 접근할 수 있는 보안약점입니다. 리소스 삽입 약점을 사용하여 공격자는 리소스의 수정/삭제, 시스템 정보 누출, 시스템 리소스 간 충돌로 인한 서비스 장애 등을 발생시킬 수 있습니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 리스트에서 선택되도록 합니다.",
  "rule.sast.sw.swift.2827.example.0.dangerous": "라인 10: 외부 입력값을 그대로 자원 획득에 사용했습니다.",
  "rule.sast.sw.swift.2827.example.0.safe": "라인 10: 필터 함수등을 통해 안전한 입력을 통해서만 자원을 획득하도록 합니다.",
  "rule.sast.sw.swift.2827.name": "자원 삽입",
  "rule.sast.sw.swift.2827.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.swift.2827.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2827.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.swift.2827.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.swift.2827.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.swift.2827.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2827.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) CFStreamCreatePairWithSocketToHost$param(2)",
  "rule.sast.sw.swift.2827.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2827.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.swift.2827.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2828.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 수 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.swift.2828.example.0.dangerous": "라인 7: 안전하지 않은 UItextField의 값으로 HTML을 로딩했습니다.",
  "rule.sast.sw.swift.2828.example.0.safe": "라인 7: 적절한 필터링을 거쳐 HTML을 로딩하도록 합니다.",
  "rule.sast.sw.swift.2828.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.swift.2828.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.swift.2828.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2828.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.swift.2828.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.swift.2828.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.swift.2828.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2828.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) __sparrow_OBJC_echo__$param(*)",
  "rule.sast.sw.swift.2828.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2828.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.swift.2828.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2829.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 경우를 검출합니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.swift.2829.example.0.dangerous": "라인 5: 외부 입력을 적절한 처리 없이 바로 사용했습니다.",
  "rule.sast.sw.swift.2829.example.0.safe": "라인 5: 삽입 공격에 사용되는 위험한 문자가 포함되어 있는지 적절한 필터 함수를 통해 확인 후 명령어를 사용합니다.",
  "rule.sast.sw.swift.2829.name": "명령어 삽입",
  "rule.sast.sw.swift.2829.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.swift.2829.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2829.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.swift.2829.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.swift.2829.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.swift.2829.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2829.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) printf$param(1)",
  "rule.sast.sw.swift.2829.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2829.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.swift.2829.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2830.description": "민감한 정보를 평문으로 저장 체커는 중요 정보를 암호화하지 않은 채 공개된 곳에 저장하는 경우를 검출합니다.\n중요 정보를 공개된 저장소에 저장할 때 암호화하지 않는 경우 인증 받지 않은 주체에 의해서 데이터 노출, 또는 스니핑이 발생할 수 있습니다.\n중요 정보를 외부 환경 파일에 저장할 때는, 반드시 암호화하여 저장하는 것이 바람직합니다. 또한 SW 설계 시 민감한 데이터와 일반 데이터를 가능한 분리하도록 합니다.",
  "rule.sast.sw.swift.2830.example.0.dangerous": "라인 12: 중요 정보를 평문으로 저장하고 있습니다.",
  "rule.sast.sw.swift.2830.example.0.safe": "라인 12: 중요 정보를 암호화한 후 저장하도록 합니다.",
  "rule.sast.sw.swift.2830.name": "민감한 정보를 평문으로 저장",
  "rule.sast.sw.swift.2830.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.swift.2830.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2830.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.swift.2830.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.swift.2830.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) .$operand(*)->return",
  "rule.sast.sw.swift.2830.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2830.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) __sparrow_OBJC_echo__$param(*)",
  "rule.sast.sw.swift.2830.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2830.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) $_GET$variable",
  "rule.sast.sw.swift.2830.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2831.description": "하드코딩된 암호화 키 체커는 소스 코드 내에 하드코딩되어 사용되는 암호화 키를 검출합니다.\n암호화를 수행하기 위해 소스 코드 내에 하드코딩된 암호화 키를 사용할 경우 암호화된 정보가 유출되면 이를 역계산을 하여 원본 정보를 알아낼 수 있습니다. 또한 경우에 따라 해시 함수는 역계산이 불가능하므로 키가 노출되어도 큰 문제가 없을 것이라고 생각하고 하드코드하여 코드를 작성할 수도 있지만, 일부 해시 함수들은 무차별 대입 등의 방법으로 역산이 가능할 수 있습니다. 뿐만 아니라 암호화 키를 하드코드하는 경우 키를 쉽게 변경할 수 없다는 단점도 존재합니다.\n암호화 수행 시 상수가 아닌 암호화 키를 사용하도록 설계해야 합니다. 또한, 암호화되었더라도 소스 코드 내부에 상수 형태의 암호화 키를 저장하여 사용해서는 안됩니다.",
  "rule.sast.sw.swift.2831.example.0.dangerous": "라인 5: CCCrypt 클래스의 생성자에 하드코드된 암호화 키를 전달하고 있습니다.",
  "rule.sast.sw.swift.2831.example.0.safe": "라인 6: 하드코드된 암호화 키를 사용하지 않도록 합니다.",
  "rule.sast.sw.swift.2831.name": "하드코딩된 암호화 키",
  "rule.sast.sw.swift.2866.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\nXPath 쿼리문을 만들 때 외부 입력값을 적절한 검사 과정 없이 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 쿼리문의 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(`, [, ], /, =, @ 등) 및 쿼리 예약어를 필터링합니다.",
  "rule.sast.sw.swift.2866.example.0.dangerous": "라인 21: 외부 입력을 검증 없이 XPath 쿼리를 생성하는 데 사용되었습니다.",
  "rule.sast.sw.swift.2866.example.0.safe": "라인 21: 외부 입력값으로 생성한 쿼리를 적절하게 필터링 한 후 사용하도록 합니다.",
  "rule.sast.sw.swift.2866.name": "XPath 삽입",
  "rule.sast.sw.swift.2866.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.swift.2866.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2866.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.swift.2866.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2866.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) XQueryProcessor\\.execute(0)$base",
  "rule.sast.sw.swift.2866.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2866.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.swift.2866.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2868.description": "LDAP 삽입 체커는 신뢰할 수 없는 외부 입력을 아무런 검사 없이 사용하는 경우를 검출합니다.\n웹 애플리케이션에서 신뢰할 수 없는 외부 입력을 검사하지 않고 사용하는 경우 공격자가 LDAP 명령문을 수정하여 부적절한 권한을 부여하고 의도하지 않은 동작을 실행할 수 있습니다. 따라서 신뢰할 수 없는 외부 입력 문자열을 사용하기 전에 검사해야 합니다.\n외부 입력값을 검사 없이 LDAP 쿼리문으로 사용하는 경우, LDAP 쿼리문이 실행될 때 공격자는 LDAP 쿼리문의 내용을 마음대로 변경할 수 있습니다.\n신뢰할 수 없는 외부 입력 문자열을 LDAP 쿼리문이나 결과의 일부로 사용하기 전에 검사해야 합니다.",
  "rule.sast.sw.swift.2868.example.0.dangerous": "라인 6: 외부 입력을 통해 전달된 값이 검증 없이 LDAP 쿼리를 생성하는 데 사용되었습니다.",
  "rule.sast.sw.swift.2868.example.0.safe": "라인 6: 필터 메소드를 사용하여 외부 입력값을 검증합니다.",
  "rule.sast.sw.swift.2868.name": "LDAP 삽입",
  "rule.sast.sw.swift.2868.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.swift.2868.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2868.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.swift.2868.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2868.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) XQueryProcessor\\.execute(0)$base",
  "rule.sast.sw.swift.2868.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2868.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) \\$_GET$variable",
  "rule.sast.sw.swift.2868.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2869.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL을 사용한 자동 연결을 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.swift.2869.example.0.dangerous": "라인 10: 검증되지 않은 문자열을 openURL에 전달했습니다.",
  "rule.sast.sw.swift.2869.example.0.safe": "라인 10: filtered 메시지 전송을 통해 검증한 문자열을 전달했습니다.",
  "rule.sast.sw.swift.2869.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.swift.2869.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.swift.2869.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2869.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) strcpy$param(2)->param(1)",
  "rule.sast.sw.swift.2869.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2869.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) printf$param(1)",
  "rule.sast.sw.swift.2869.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2869.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) getenv$return",
  "rule.sast.sw.swift.2869.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2870.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 사용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.swift.2870.example.0.dangerous": "라인 29: 최소 필요 키 길이가 128이어야 하는데 100으로 설정되어 있습니다.",
  "rule.sast.sw.swift.2870.example.0.safe": "라인 3: 키 길이가 128로 설정되어 안전합니다.",
  "rule.sast.sw.swift.2870.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.swift.2870.option.min_key_size.description": "암호화에 필요한 최소 키 길이를 입력합니다.<br />예시) 128",
  "rule.sast.sw.swift.2870.option.min_key_size.name": "최소 필요 키 길이",
  "rule.sast.sw.swift.2871.description": "민감한 정보의 일반 텍스트 전송 체커는 암호화 과정을 거치지 않은 민감한 정보를 전송하는 코드를 검출합니다.\n사용자 또는 시스템의 중요 정보가 포함된 데이터를 평문으로 송수신할 경우, 통신 채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있습니다.\n민감한 정보를 통신 채널을 통하여 내보낼 때에는 반드시 암호화 과정을 거쳐야 합니다. 또한 필요할 경우 SSL 또는 HTTPS 등과 같은 보안 채널을 사용해야 합니다.",
  "rule.sast.sw.swift.2871.example.0.dangerous": "라인 11: 네트워크를 통해 비밀번호를 서버에 전송했습니다. 이 경우에 패킷 스니핑을 통하여 비밀번호가 노출될 수 있습니다.",
  "rule.sast.sw.swift.2871.example.0.safe": "라인 11: 네트워크를 통해 비밀번호를 서버에 전송하기 전에 암호화하는 것이 바람직합니다.",
  "rule.sast.sw.swift.2871.name": "민감한 정보의 일반 텍스트 전송",
  "rule.sast.sw.swift.2871.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.swift.2871.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2871.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.swift.2871.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2871.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"add_header\")",
  "rule.sast.sw.swift.2871.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2871.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.swift.2871.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2892.description": "무결성 검사 없는 코드 다운로드 체커는 코드의 출처나 무결성 검사 없이 실행 가능한 코드를 다운로드하는 코드를 검출합니다.\n프로그램의 자동 업데이트와 같은 상황에서 코드에 대한 암호화된 서명을 사용하지 않고 코드를 다운로드하면 위험합니다. 웹 서버에서 실행될 수 있는 위험한 형식의 파일을 원격지로부터 다운로드하여, 코드의 출처나 무결성 검사 없이 클라이언트에서 실행하는 경우 공격자가 의도하는 행위를 수행할 수 있습니다.\n공개 키 방식의 암호 알고리즘 등의 방법을 통해 코드 파일의 변조 유무를 판단합니다.",
  "rule.sast.sw.swift.2892.example.0.dangerous": "라인 12: 무결성 검사 없이 다운로드한 파일을 생성했습니다.",
  "rule.sast.sw.swift.2892.example.0.safe": "라인 11: 다운로드 한 파일은 무결성 검사 후 파일에 쓰도록 합니다.",
  "rule.sast.sw.swift.2892.name": "무결성 검사 없는 코드 다운로드",
  "rule.sast.sw.swift.2892.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.swift.2892.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2892.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.swift.2892.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2892.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"add_header\")",
  "rule.sast.sw.swift.2892.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2892.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.swift.2892.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2903.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.sw.swift.2903.example.0.dangerous": "라인 7: catch 블록에 적절한 예외 처리 구문이 없습니다.",
  "rule.sast.sw.swift.2903.example.0.safe": "라인 8: catch 블록에 적절한 예외 처리 구문을 추가합니다.",
  "rule.sast.sw.swift.2903.name": "빈 catch 블록",
  "rule.sast.sw.swift.2904.description": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.\n지나치게 일반적인 예외 처리를 하게 되면 특별히 처리해야 하는 개별 예외를 적절히 처리하지 못할 뿐 아니라 이 지점에서 논리적으로 발생해서는 안되는 예외까지 처리하게 됩니다. 이러한 경우에 개발 및 검수 과정에서 발견되었어야 하는 설계 및 구현 상 결함이 발견되지 못한 채 배포 단계로 넘어가서 더 큰 문제의 원인이 될 수 있습니다.\n해당 코드 구역에서 발생할 수 있는 세부적인 예외들을 명시적으로 나눠서 처리하는 것이 좋습니다. 일반적인 예외를 처리하더라도 예측 가능한 세부적인 예외들을 먼저 처리한 후 마지막에 처리하도록 합니다. 이렇게 작성했을 때 실행 흐름이 일반적인 예외 처리 부분에 도달했다면 개발 과정에서 예측하지 못한 예외가 발생한 것이므로 조용히 넘어가지 않고 상황에 대한 상세한 기록을 남겨서 추후 결함을 수정할 수 있도록 합니다.",
  "rule.sast.sw.swift.2904.example.0.dangerous": "라인 6: 최상위 예외를 처리합니다. 다른 예외 클래스들의 부모 클래스가 되는 일반적인 예외입니다.",
  "rule.sast.sw.swift.2904.example.0.safe": "라인 6: 특정한 예외를 처리하도록 합니다.",
  "rule.sast.sw.swift.2904.name": "지나치게 일반적인 예외 처리",
  "rule.sast.sw.swift.2906.description": "누락된 로그인 제어 체커는 로그인 입력 횟수를 제한하기 위한 로직을 구현하지 않은 코드를 검출합니다.\n구체적으로는 로그인 루틴을 호출하기 전에 루프를 통해 횟수 제한 등의 제어를 수행하는지 여부를 검사합니다. 단, 루프가 존재하더라도 제어 조건이 상수인 경우 오류로 검출합니다.\n공격자는 해당 취약점을 이용하여 무차별 대입 공격으로 로그인에 성공하고 권한을 획득할 수 있습니다.\n반드시 로그인 시도 횟수를 제한하는 로직을 구현해야 합니다.",
  "rule.sast.sw.swift.2906.example.0.dangerous": "라인 4: 로그인 횟수 제한을 수행하고 있지 않습니다.",
  "rule.sast.sw.swift.2906.example.0.safe": "라인 5: 로그인 시도 횟수를 제한합니다.",
  "rule.sast.sw.swift.2906.name": "누락된 로그인 제어",
  "rule.sast.sw.swift.2906.option.authentication_functions.name": "authentication_functions",
  "rule.sast.sw.swift.2906.option.loop_inside_target_function.name": "loop_inside_target_function",
  "rule.sast.sw.swift.2906.option.target_function_inside_loop.name": "target_function_inside_loop",
  "rule.sast.sw.swift.2910.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하거나 같은 문자를 연속으로 여러 개 사용하지 않도록 설정할 수 있습니다. 한국인터넷진흥원 `암호사용안내서`의 비밀번호 설정 규칙을 참고할 수 있습니다.",
  "rule.sast.sw.swift.2910.example.0.dangerous": "라인 4: 비밀번호에 대한 검증을 수행하지 않았습니다.",
  "rule.sast.sw.swift.2910.example.0.safe": "라인 6: 비밀번호에 대한 길이 제한 등의 강한 유효성 검증을 수행하는 필터 함수를 사용하도록 합니다.",
  "rule.sast.sw.swift.2910.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.swift.2910.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) strlen$param(1)",
  "rule.sast.sw.swift.2910.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2910.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.swift.2910.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2910.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) mysql_query$param(*)",
  "rule.sast.sw.swift.2910.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2910.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"$_GET[\\\"password\\\"]\")",
  "rule.sast.sw.swift.2910.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2911.description": "남은 디버그 코드 체커는 삭제되지 않고 남아 있는 디버그 코드를 검출합니다.\n구체적으로는 로그나 디버그와 같은 특정 단어가 포함되어 있는 함수의 호출이 있는 경우를 검출합니다.\n디버그 코드는 설정 등의 민감한 정보를 출력하거나 시스템을 제어할 수 있도록 허용하는 부분을 담고 있을 수 있습니다. 이러한 디버그 코드를 남겨둔 채로 프로그램을 배포하면 공격자가 식별 과정을 우회하거나 의도하지 않은 중요 정보가 노출될 수 있습니다.\n배포 단계에서는 모든 디버그 코드를 삭제합니다.",
  "rule.sast.sw.swift.2911.example.0.dangerous": "라인 1-5: 디버그 코드가 남아있습니다.",
  "rule.sast.sw.swift.2911.example.0.safe": "라인 1-5: 디버그 코드를 남겨두지 않도록 합니다.",
  "rule.sast.sw.swift.2911.name": "남은 디버그 코드",
  "rule.sast.sw.swift.2911.option.check_function.description": "디버그 함수의 이름을 작성합니다.",
  "rule.sast.sw.swift.2911.option.check_function.name": "디버그 함수",
  "rule.sast.sw.swift.2916.description": "TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하는 경쟁 조건을 검출합니다.\n리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다.\n리소스의 상태에 의존하여 리소스 접근 여부를 결정해야 한다면 동기화 등의 방법을 활용하여 리소스에 독점적으로 접근할 수 있도록 합니다. 혹은 몇몇 파일 관련 동작의 경우에 일단 주어진 동작을 시도하고 리소스의 상태에 따라 다른 결과를 반환하는 방식으로 작동하는 API가 존재하므로 이를 적극 활용하도록 합니다.",
  "rule.sast.sw.swift.2916.example.0.dangerous": "라인 4: 파일 경로를 통해 파일을 접근할때, 읽는 시점에서의 파일이 동일하고 존재한지를 보장 할 수 없습니다.",
  "rule.sast.sw.swift.2916.example.0.safe": "라인 7: 파일을 여는 시점의 예외에 대해 대응합니다.",
  "rule.sast.sw.swift.2916.name": "TOCTOU 경쟁 조건",
  "rule.sast.sw.swift.2919.description": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.\nHTTP 요청에 들어 있는 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(Carriage Return) 이나 LF(Line Feed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 사용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손(Cache Poisoning) 공격 등을 수행할 수 있습니다.\n요청 매개 변수의 값을 http 응답 헤더(예, Set-Cookie 등)에 포함시킬 경우 CR, LF와 같은 개행문자를 제거해야 합니다.",
  "rule.sast.sw.swift.2919.example.0.dangerous": "라인 4: 오염된 값을 쿠키에 포함시켰습니다.",
  "rule.sast.sw.swift.2919.example.0.safe": "라인 5: 오염된 값을 적절하게 필터링 한 뒤 쿠키에 포함시키도록 합니다.",
  "rule.sast.sw.swift.2919.name": "HTTP 응답 분할",
  "rule.sast.sw.swift.2920.description": "주석문 안의 비밀번호 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.swift.2920.example.0.dangerous": "라인 6: 디버깅 등의 목적으로 사용자 이름과 비밀번호를 주석문 안에 서술하고 제대로 지우지 않은 코드입니다.",
  "rule.sast.sw.swift.2920.example.0.safe": "라인 6: 프로그램 개발 시에 주석문 등에 남겨놓은 사용자 계정이나 비밀번호 등의 정보는 개발 완료 시에 확실하게 삭제해야 합니다.",
  "rule.sast.sw.swift.2920.name": "주석문 안의 비밀번호",
  "rule.sast.sw.swift.2920.option.allowed_max_word_length.description": "단일 단어의 최대 길이를 작성합니다.<br />예시) 40",
  "rule.sast.sw.swift.2920.option.allowed_max_word_length.name": "허용할 최대 연속 단어 길이",
  "rule.sast.sw.swift.2920.option.check_header.description": "옵션을 사용하는 경우 헤더 파일 내의 주석까지 모두 검사합니다.",
  "rule.sast.sw.swift.2920.option.check_header.name": "헤더 파일 분석 여부",
  "rule.sast.sw.swift.2920.option.check_password_only.description": "선택할 경우, 비밀번호로 간주될 수 있는 문자열이 단독으로 존재하더라도 이슈로 검출합니다.",
  "rule.sast.sw.swift.2920.option.check_password_only.name": "비밀번호 문자열 단독 검출 여부",
  "rule.sast.sw.swift.2920.option.consecutive_word_expr.description": "검출할 최대 길이를 초과하는 연속 단어의 형식을 작성합니다.<br />예시) [a-zA-Z0-9]+",
  "rule.sast.sw.swift.2920.option.consecutive_word_expr.name": "검출할 연속 단어 형식",
  "rule.sast.sw.swift.2920.option.fixed_key_length.description": "고정 길이 문자열을 입력합니다.",
  "rule.sast.sw.swift.2920.option.fixed_key_length.name": "고정 길이",
  "rule.sast.sw.swift.2920.option.password_expr.description": "비밀번호로 간주할 수 있는 문자열을 작성합니다.<br />예시) password",
  "rule.sast.sw.swift.2920.option.password_expr.name": "비밀번호 문자열",
  "rule.sast.sw.swift.2920.option.using_fixed_key_length.description": "옵션을 사용하는 경우 고정 길이의 문자열을 검출합니다.",
  "rule.sast.sw.swift.2920.option.using_fixed_key_length.name": "고정 길이 검출 여부",
  "rule.sast.sw.swift.2930.description": "포맷 스트링 삽입 체커는 포맷 스트링으로 상수가 아니라 검증되지 않은 외부 입력이 포함된 문자열을 사용하는 코드를 검출합니다.\n외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링으로 그대로 사용하는 경우에 발생할 수 있는 보안약점입니다. 공격자는 포맷 스트링을 사용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽고 쓸 수 있습니다.\nprint() 등 포맷 스트링을 사용하는 함수를 사용할 때는 사용자 입력값을 직접적으로 포맷 스트링으로 사용하거나 포맷 스트링 생성에 포함시키지 않도록 합니다. 사용자 입력값을 포맷 스트링을 사용하는 함수에 사용할 때는 가능하면 %s 포맷 스트링을 지정하거나 f-string을 사용하고, 사용자 입력값은 2번째 이후의 매개변수로 사용합니다.",
  "rule.sast.sw.swift.2930.example.0.dangerous": "라인 5: 외부 입력값을 검증 없이 직접적으로 포맷 스트링으로 사용하고 있습니다.",
  "rule.sast.sw.swift.2930.example.0.safe": "라인 5: 사용자로부터 입력받은 문자열을 %s 포맷 스트링으로 지정하여 사용합니다.",
  "rule.sast.sw.swift.2930.name": "포맷 스트링 삽입",
  "rule.sast.sw.swift.2930.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.swift.2930.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2930.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.swift.2930.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2930.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) base of name(\"format\")",
  "rule.sast.sw.swift.2930.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2930.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.swift.2930.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2931.description": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정 체커는 사용자의 인증 정보를 쿠키에 저장하는 코드를 검출합니다.\n개발자들은 흔히 쿠키, 환경 변수 또는 히든 필드와 같은 입력값이 조작될 수 없다고 가정합니다. 하지만 공격자는 다양한 방법을 통해 이러한 입력값들을 변경할 수 있고 조작된 내용은 탐지되지 않을 수 있습니다. 이러한 입력값(쿠키, 환경 변수, 히든 필드 등)에 기반하여 인증이나 인가와 같은 보안 결정을 수행하는 경우 공격자는 해당 값을 조작하여 애플리케이션의 보안을 우회할 수 있으므로 외부 사용자에 의한 입력값을 신뢰해서는 안됩니다.\n상태 정보나 민감한 데이터, 사용자 세션 정보와 같은 중요한 정보는 서버에 저장하고 보안 확인 절차도 서버에서 실행합니다. 또한 보안 설계 관점에서 신뢰할 수 없는 입력값이 애플리케이션 내부로 들어올 수 있는 지점을 파악해야 하며, 보안 결정에 사용되는 입력값을 식별하고 제공되는 입력값에 의존할 필요가 없는 구조로 변경할 수 있는지 검토해야 합니다.",
  "rule.sast.sw.swift.2931.example.0.dangerous": "라인 11: 평문으로 사용자의 인증 정보를 쿠키에 저장하고 있습니다. 공격자는 쿠키 정보를 변경 가능하기 때문에 위험합니다.",
  "rule.sast.sw.swift.2931.example.0.safe": "라인 6: 사용자의 인증 정보를 세션에 저장하면 인증 정보가 외부에 노출될 위험을 제거할 수 있습니다.",
  "rule.sast.sw.swift.2931.name": "신뢰할 수 없는 쿠키 값에 의존한 보안 결정",
  "rule.sast.sw.swift.2931.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) return of name(\"filter\")",
  "rule.sast.sw.swift.2931.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2931.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) operand(*) of \"+\" to return",
  "rule.sast.sw.swift.2931.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2931.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) param(*) of name(\"add_header\")",
  "rule.sast.sw.swift.2931.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2931.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.\n예시) return of fqn(\"django.http.HttpRequest.field\")",
  "rule.sast.sw.swift.2931.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2932.description": "누락된 인증 체커는 인증을 통한 제어 루틴이 존재하지 않는 경우를 검출합니다.\n호출이 필요한 인증 제어 루틴의 이름과 제어 루틴을 호출해야 하는 페이지의 이름은 옵션으로 입력할 수 있습니다.\n인증 제어 루틴을 호출하지 않으면 허용되지 않은 사용자가 권한을 획득할 수 있습니다.\n반드시 인증 제어 루틴을 적절한 위치에서 호출해야 합니다.",
  "rule.sast.sw.swift.2932.example.0.dangerous": "라인 8: 인증 제어 루틴 호출 없이 사용자 정보를 수정했습니다.",
  "rule.sast.sw.swift.2932.example.0.safe": "라인 7: 사용자를 검증한 후 사용자 정보를 수정하도록 합니다.",
  "rule.sast.sw.swift.2932.name": "누락된 인증",
  "rule.sast.sw.swift.2932.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) strlen$param(1)",
  "rule.sast.sw.swift.2932.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.swift.2932.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) \\.$operand(*)->return",
  "rule.sast.sw.swift.2932.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.swift.2932.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) mysql_query$param(*)",
  "rule.sast.sw.swift.2932.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.swift.2932.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) variable of fqn(\"$_GET[\\\"password\\\"]\")",
  "rule.sast.sw.swift.2932.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.swift.2933.description": "부적절한 인증 체커는 사용자 인증 후 모든 실행 경로에 대해 적절하게 접근 제어를 수행하지 않는 코드를 검출합니다.\n프로그램이 모든 가능한 실행 경로에 대해서 접근 제어를 검사하지 않거나 불완전하게 검사하는 경우, 공격자는 접근 가능한 실행 경로를 통해 정보를 유출할 수 있습니다.\n애플리케이션이 제공하는 정보와 기능을 역할에 따라 배분함으로써 공격자에게 노출되는 공격 노출면(Attack Surface)을 최소화하고 사용자의 권한에 따른 ACL(Access Control List)을 관리하여 정보 유출을 최소화해야 합니다.",
  "rule.sast.sw.swift.2933.example.0.dangerous": "라인 5: 로그인 정보 없이 connection을 연결했습니다.",
  "rule.sast.sw.swift.2933.example.0.safe": "라인 5: 사용자 ID와 비밀번호로 접근하도록 접근 제어를 사용합니다.",
  "rule.sast.sw.swift.2933.name": "부적절한 인증",
  "rule.sast.sw.swift.2934.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.swift.2934.example.0.dangerous": "라인 11: gethostbyaddr() 함수를 사용하여 도메인 이름을 획득했습니다.",
  "rule.sast.sw.swift.2934.example.0.safe": "라인 11: 도메인 이름 대신 IP 주소로 의사 결정을 진행합니다.",
  "rule.sast.sw.swift.2934.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.swift.2935.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\n사용을 금지할 난수 생성 메소드를 옵션으로 지정할 수 있습니다.\n예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하게 됩니다.\n옵션으로 지정된 금지 메소드보다 안전한 방식을 사용하여 난수를 생성합니다.",
  "rule.sast.sw.swift.2935.example.0.dangerous": "라인 4: 취약한 랜덤 함수인 random() 을 사용했습니다.",
  "rule.sast.sw.swift.2935.example.0.safe": "라인 4: 안전한 GKRandomSource.sharedRandom() 랜덤 함수를 사용합니다.",
  "rule.sast.sw.swift.2935.name": "부적절한 난수 생성",
  "rule.sast.sw.swift.2965.description": "부적절한 XML 외부 엔터티 참조 체커는 XML 파싱 라이브러리를 사용하면서 외부 엔터티를 사용하도록 허용하는 코드를 검출합니다.\n구체적으로는 외부 엔터티를 사용하도록 허용하는 함수를 호출하거나 해당 함수의 인자 값을 사용하는 경우를 가리킵니다. NSXMLParser 파서 객체의 shouldResolveExternalEntities 값을 true로 설정한 경우 외부 엔터티를 사용하도록 허용하게 됩니다.\nXML 라이브러리를 사용하는 동시에 외부 엔터티를 사용하도록 허용하는 경우 공격자가 권한이 없는 파일이나 보안 상 중요한 파일에 접근할 수 있게 됩니다. 이와 같이 외부 엔터티에 접근할 경우 SSRF(Server Side Request Forgery) 와 같은 취약점이 발생할 수 있습니다.\n따라서 외부 엔터티를 사용하도록 허용하는 함수를 호출하거나 해당 함수의 인자 값을 사용하지 않도록 합니다.",
  "rule.sast.sw.swift.2965.example.0.dangerous": "라인 5: NSXMLParser 파서 객체의 shouldResolveExternalEntities 값을 true로 설정했습니다. XXE 공격에 취약해집니다.",
  "rule.sast.sw.swift.2965.example.0.safe": "라인 5: NSXMLParser 파서 객체의 shouldResolveExternalEntities값을 false로 설정하도록 합니다.",
  "rule.sast.sw.swift.2965.name": "부적절한 XML 외부 엔터티 참조",
  "rule.sast.sw.swift.2966.description": "취약한 서버 인증서 검증 체커는 인증서를 적절하게 검증하지 않는 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다. 만약 서버 인증서 검증이 적절하게 이루어지지 않으면 보안 상 문제가 발생할 수 있습니다.\n라이브러리에서 제공하는 기본적인 인증서 유효성 검사 기능이 동작할 수 있도록 인증서 검증 함수에 적절한 인자 값을 사용하도록 합니다.",
  "rule.sast.sw.swift.2966.example.0.dangerous": "라인 3: SSL_CTX_set_verify() 함수를 호출할 때 SSL_VERIFY_NONE 을 두 번째 인자로 사용했습니다. 따라서 제대로 인증서 검증이 이루어지지 않았습니다.",
  "rule.sast.sw.swift.2966.example.0.safe": "라인 3: 두 번째 인자값을 SSL_VERIFY_PEER 로 설정하도록 합니다.",
  "rule.sast.sw.swift.2966.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.swift.2967.description": "신뢰할 수 없는 데이터의 역직렬화 체커는 안전하지 않은 역직렬화 프로토콜을 사용하는 코드를 검출합니다.\n객체를 직렬화하여 저장하거나 전송하고, 필요한 경우 다시 역직렬화하여 사용함으로써 객체의 상태를 유지할 수 있습니다. 하지만 신뢰할 수 없는 데이터를 별도의 보호하지 않고 바로 역직렬화하는 경우 객체 치환 공격(Object Substitution Attack)에 의한 취약점이 발생할 수 있습니다.\nNSSecureCoding과 같이 안전한 직렬화 프로토콜을 사용하도록 합니다.",
  "rule.sast.sw.swift.2967.example.0.dangerous": "라인 1: 보안에 취약한 직렬화 프로토콜인 NSCoding을 사용했습니다.",
  "rule.sast.sw.swift.2967.example.0.safe": "라인 1: 객체 치환 공격(Object Substitution Attack)을 방어할 수 있는 NSSecureCoding 프로토콜을 사용하도록 합니다.",
  "rule.sast.sw.swift.2967.name": "신뢰할 수 없는 데이터의 역직렬화",
  "rule.sast.sw.ts.5854.description": "Typescript에서 Strict 설정은 광범위한 유형 검사 동작을 활성화하여 프로그램의 정확도를 높이고 오류의 발생을 줄일 수 있습니다. 이 기능을 비활성화하면 취약한 메소드가 사용되거나 각종 오류들이 무시되어 소스 코드에 잠재적인 취약점이 생길 수 있습니다. Strict 설정은 총 8개의 플래그를 활성화하며 각각의 기능은 아래와 같습니다.\n1. Always Strict: 모든 소스 파일에 `use scrict`를 추가하여 ECMAScript Strict Mode가 동작합니다.\n2. Strict Null Checks:  `null`과 `undefined`를 명시적으로 처리합니다.\n3. Strict Bind Call Apply:  함수 호출, 바인딩 및 적용의 내장 메서드가 기본 함수에 대한 올바른 인수를 사용하여 호출되는지 확인합니다.\n4. Strict Function Types: 함수 매개변수를 더 정확하게 확인합니다.\n5. Strict Property Initialization: 클래스 property가 선언되었지만 생성자에서 설정되지 않은 경우 오류를 발생시킵니다.\n6. No Implicit Any: `any` 유형인 변수에 대하여 오류를 발생시킵니다.\n7. No Implicit This:  `any` 유형이 있는 `this` 표현식에서 오류를 발생시킵니다.\n8. Use Unknown In Catch Variables: `catch` 문에 `error` 타입을 `unknown`으로 변경합니다.\nTypescript 설정 파일인 `tsconfig.json`혹은 `jsconfig.json`파일에 `compilerOptions` 섹션 내부 `strict` 속성을 `true`로 선언합니다.",
  "rule.sast.sw.ts.5854.example.0.dangerous": "라인 4: strict 모드 그룹을 비활성화 하여 소스 코드에 취약점이 생길 수 있습니다.",
  "rule.sast.sw.ts.5854.example.0.safe": "라인 4: strict 모드 그룹을 활성화하여 프로그램이 보다 안전하게 동작합니다.",
  "rule.sast.sw.ts.5854.name": "Strict 모드 그룹 사용",
  "rule.sast.sw.ts.5855.description": "Typescript는 `Compiler Options`으로 `noImplicitAny`를 제공합니다. `noImplicitAny`는 암묵적으로 `any`로 유추되는 모든 변수에 대해 오류를 발생시킵니다. 타입을 유추하지 않고 `any`타입을 사용한다면 Typescript는 평범한 Javascript의 동작과 같습니다.\nTypescript 설정 파일인 `tsconfig.json`혹은 `jsconfig.json`파일에 `compilerOptions` 섹션 내부 `strict` 속성을 `true`로 선언합니다. 혹은 `noImplicitAny` 속성을 `true`로 선언하여 활성화합니다.",
  "rule.sast.sw.ts.5855.example.0.dangerous": "라인 4: noImplicitAny를 비활성화 하여 소스코드에 취약점이 생길 수 있습니다.",
  "rule.sast.sw.ts.5855.example.0.safe": "라인 4: noImplicitAny를 활성화하여 프로그램이 보다 안전하게 동작합니다.",
  "rule.sast.sw.ts.5855.name": "암묵적 Any 유형 사용 확인",
  "rule.sast.sw.ts.5856.description": "`null`과 `undefined`를 구분하는 이슈는 수많은 버그의 원인이 됩니다. Typescript에서는 이를 해결하기 위해 `strictNullChecks`를 지원합니다. `strictNullChecks`는 이를 명확하게 구분하여 개발자가 `null` 혹은 `undefined` 값을 참조하는 것을 방지합니다.\nTypescript 설정 파일인 `tsconfig.json`혹은 `jsconfig.json`파일에 `compilerOptions` 섹션 내부 `strict` 속성을 `true`로 선언합니다. 혹은 `strictNullChecks` 속성을 `true`로 선언하여 활성화합니다.",
  "rule.sast.sw.ts.5856.example.0.dangerous": "라인 4: strictNullChecks를 비활성화 하여 소스코드에 취약점이 생길 수 있습니다.",
  "rule.sast.sw.ts.5856.example.0.safe": "라인 4: strictNullChecks를 활성화하여 프로그램이 보다 안전하게 동작합니다.",
  "rule.sast.sw.ts.5856.name": "명확한 Null 유형 확인",
  "rule.sast.sw.ts.5857.description": "Strict 모드는 기존의 코드와 호환되며 기존에 무시되던 에러를 throwing하거나 위험한 메소드의 사용을 금지하는 등 소스 코드에 제한을 적용하여 소스 코드를 보다 더 안전하게 동작 시킵니다. Typescript에서는 명시적으로 소스 코드에 `use stirct`을 사용해도 되지만 `alwaysStrict`을 통해 stirct 모드가 자동으로 모든 소스 코드에 추가하도록 권장합니다.\nTypescript 설정 파일인 `tsconfig.json`혹은 `jsconfig.json`파일에 `compilerOptions` 섹션 내부 `strict` 속성을 `true`로 선언합니다. 혹은 `alwaysStrict` 속성을 `true`로 선언하여 활성화합니다.",
  "rule.sast.sw.ts.5857.example.0.dangerous": "라인 4: alwaysStrict를 비활성화 하여 소스 코드에 취약점이 생길 수 있습니다.",
  "rule.sast.sw.ts.5857.example.0.safe": "라인 4: alwaysStrict를 활성화하여 프로그램이 보다 안전하게 동작합니다.",
  "rule.sast.sw.ts.5857.name": "항상 strict 모드 추가",
  "rule.sast.sw.unknown.1448.description": "활성화된 원격 모니터링 체커는 애플리케이션의 원격 모니터링이 가능하도록 설정하는 경우를 검출합니다.\n원격 모니터링 설정을 조정하여 원격 모니터링이 가능해질 경우, 공격자는 민감한 정보를 탈취하거나 애플리케이션의 동작 및 데이터를 검사할 수 있습니다. 또한 프로그램의 동작을 제어할 수도 있게 됩니다.\n설정을 적절하게 조절하여 원격 모니터링 기능을 사용하지 못하도록 합니다.",
  "rule.sast.sw.unknown.1448.example.0.dangerous": "라인 1: 원격 모니터링을 가능하게 하는 옵션을 사용했습니다.\n라인 2: 원격 모니터링을 가능하게 하는 옵션을 사용했습니다.\n라인 3: 원격 모니터링을 가능하게 하는 옵션을 사용했습니다.",
  "rule.sast.sw.unknown.1448.example.0.safe": "라인 1: 원격 모니터링을 가능하게 하는 옵션을 사용하지 않도록 합니다.",
  "rule.sast.sw.unknown.1448.name": "활성화된 원격 모니터링",
  "rule.sast.sw.unknown.1448.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.sw.unknown.1448.option.exclude_extension.name": "제외 확장자",
  "rule.sast.sw.unknown.1448.option.rule.description": "java 옵션 중 외부에서 모니터링 할 수 있도록 하는 옵션입니다.",
  "rule.sast.sw.unknown.1448.option.rule.name": "모니터링 가능 옵션",
  "rule.sast.sw.unknown.1449.description": "비활성화된 바이트코드 검증 체커는 바이트코드 검증을 비활성화하는 옵션을 사용하는 경우를 검출합니다.\nJava 가상 머신에서 Java 바이트코드 검증기는 허용되지 않은 바이트코드를 검출합니다.\n-Xverify:none 또는 -noverify 옵션을 사용할 경우 Java 바이트코드 검증기가 동작하지 않기 때문에 보안 상 문제가 발생할 수 있습니다.\nJava 바이트코드 검증기를 사용하도록 합니다. 컴파일 과정에서는 기본적으로 바이트코드를 검증하게 됩니다. 추가적으로 -Xverity:all 옵션 등을 사용하여 명시적으로 검증을 활성화할 수도 있습니다.",
  "rule.sast.sw.unknown.1449.example.0.dangerous": "라인 1: 코드에서 -Xverify:none 옵션을 사용했습니다.",
  "rule.sast.sw.unknown.1449.example.0.safe": "라인 1: bytecode 검증을 사용할 수 있도록 -Xverify:all 옵션을 사용하거나, 해당 옵션을 사용하지 않고 default 값으로 실행할 수 있도록 합니다.",
  "rule.sast.sw.unknown.1449.name": "비활성화된 바이트코드 검증",
  "rule.sast.sw.unknown.1449.option.exclude_extension.description": "검출에서 제외할 파일 확장자를 지정합니다.<br />예시) java",
  "rule.sast.sw.unknown.1449.option.exclude_extension.name": "제외 확장자",
  "rule.sast.sw.unknown.1449.option.rule.description": "java bytecode 미 검증 옵션을 지정합니다.",
  "rule.sast.sw.unknown.1449.option.rule.name": "bytecode 미 검증 옵션",
  "rule.sast.sw.unknown.2364.description": "JavaScript 내에 존재하는 사용자 계정 정보 체커는 JavaScript 내에 사용자 계정 정보를 검출합니다.\nJavaScript 소스 코드에 사용자 계정 정보가 포함되어 있을 경우를 검출합니다. JavaScript 변수를 계정명, 비밀번호 관련하여 선언할 경우를 검출합니다.\n소스 코드 내에 개인 정보가 존재하는 것은 보안 상 문제가 될 수 있습니다.\nJavaScript에서 사용자 계정 정보를 작성하지 않도록 합니다.",
  "rule.sast.sw.unknown.2364.example.0.dangerous": "라인 7: 사용자 계정 정보를 선언했습니다.\n라인 8: 사용자 계정 정보를 선언했습니다.",
  "rule.sast.sw.unknown.2364.example.0.safe": "라인 1: JavaScript 내에서 사용자 계정 정보를 작성하지 않도록 합니다.",
  "rule.sast.sw.unknown.2364.name": "JavaScript 내에 존재하는 사용자 계정 정보",
  "rule.sast.sw.unknown.2364.option.exclude_extension.description": "분석 제외 확장자를 입력합니다.",
  "rule.sast.sw.unknown.2364.option.exclude_extension.name": "분석 제외 확장자",
  "rule.sast.sw.unknown.2364.option.rule.description": "검축 규칙을 입력합니다.",
  "rule.sast.sw.unknown.2364.option.rule.name": "검출 규칙",
  "rule.sast.sw.unknown.2364.option.target_extension.description": "분석 대상 확장자를 입력합니다.",
  "rule.sast.sw.unknown.2364.option.target_extension.name": "분석 대상 확장자",
  "rule.sast.sw.unknown.2396.description": "주석문에 비밀번호 노출 체커는 주석문에 비밀번호에 대한 정보가 포함된 코드를 검출합니다.\n주석문에 비밀번호에 대한 정보가 포함된 경우 공격자에 의해 비밀번호가 노출될 가능성이 있습니다. 따라서 비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있습니다. 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우 소프트웨어가 완성되면 제거하기가 어려워집니다. 주석에 ID, 비밀번호 등 보안과 관련된 내용을 작성하지 않도록 합니다. 만약 공격자가 소스 코드에 접근하거나 역공학(Reverse Engineering)을 통해 소스 코드를 볼 수 있다면 아주 쉽게 시스템에 침입할 수 있게 됩니다.\n주석문에서 비밀번호 정보를 제거합니다.",
  "rule.sast.sw.unknown.2396.example.0.dangerous": "라인 1: 주석문에 비밀번호를 포함했습니다.",
  "rule.sast.sw.unknown.2396.example.0.safe": "라인 1: 주석문에 비밀번호를 작성하지 않도록 합니다.",
  "rule.sast.sw.unknown.2396.name": "주석문에 비밀번호 노출",
  "rule.sast.sw.unknown.2396.option.exclude_extension.description": "검출 제외 파일 확장자를 지정합니다.",
  "rule.sast.sw.unknown.2396.option.exclude_extension.name": "제외 파일 확장자",
  "rule.sast.sw.unknown.2396.option.rule.description": "검출 규칙을 지정합니다.",
  "rule.sast.sw.unknown.2396.option.rule.name": "검출 규칙",
  "rule.sast.sw.unknown.2396.option.target_extension.description": "분석 대상 확장자를 입력합니다.",
  "rule.sast.sw.unknown.2396.option.target_extension.name": "분석 대상 확장자",
  "rule.sast.sw.unknown.5858.description": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다.\n프로그램 코드 내부에 하드코딩된 비밀번호를 포함하고, 이를 내부 인증에 사용하거나 외부 컴포넌트 통신에 사용하는 경우 관리자 정보가 노출될 수 있어 위험합니다.\n비밀번호는 암호화하여 별도의 파일에 저장하여 사용하는 것이 안전합니다.",
  "rule.sast.sw.unknown.5858.example.0.dangerous": "라인 2: 하드코딩된 비밀번호를 사용했습니다.",
  "rule.sast.sw.unknown.5858.example.0.safe": "라인 1: 하드코딩된 비밀번호를 사용하지 않도록 합니다.",
  "rule.sast.sw.unknown.5858.name": "하드코딩된 비밀번호",
  "rule.sast.sw.unknown.5858.option.exclude_extension.description": "검출 제외 파일 확장자를 지정합니다.",
  "rule.sast.sw.unknown.5858.option.exclude_extension.name": "제외 파일 확장자",
  "rule.sast.sw.unknown.5858.option.rule.description": "검출 규칙을 지정합니다.",
  "rule.sast.sw.unknown.5858.option.rule.name": "검출 규칙",
  "rule.sast.sw.unknown.5858.option.target_extension.description": "분석 대상 확장자를 입력합니다.",
  "rule.sast.sw.unknown.5858.option.target_extension.name": "분석 대상 확장자",
  "rule.sast.sw.unknown.7296.description": "중요 정보(비밀번호, 암호화 키 등)를 하드코딩한 채 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 공격자는 스니핑, 소스코드 분석, 역공학 등을 통해 이를 쉽게 탈취할 수 있습니다.\n해당 체커는 중요 정보 검출 옵션을 제공합니다. 옵션을 통해 점검할 중요 정보 형식을 지정할 수 있습니다.\n중요 정보는 환경 변수를 이용해 관리하거나, 암호화한 상태로 설정 파일 또는 데이터베이스에 보관해야 합니다. 또한, AWS Secrets Manager나 HashiCorp Vault와 같은 비밀 관리 시스템을 활용하는 것도 좋은 방법입니다.",
  "rule.sast.sw.unknown.7296.example.0.dangerous": "라인 2: JSON 파일 내부에 중요 정보가 하드코딩되어 있습니다.",
  "rule.sast.sw.unknown.7296.example.0.safe": "라인 1: JSON 파일 내부에 중요 정보를 포함하지 않도록 합니다.",
  "rule.sast.sw.unknown.7296.name": "하드코드된 중요 정보",
  "rule.sast.sw.unknown.7297.description": "중요 정보(비밀번호, 암호화 키 등)를 하드코딩한 채 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 공격자는 스니핑, 소스코드 분석, 역공학 등을 통해 이를 쉽게 탈취할 수 있습니다.\n해당 체커는 중요 정보 검출 옵션을 제공합니다. 옵션을 통해 점검할 중요 정보 형식을 지정할 수 있습니다.\n중요 정보는 환경 변수를 이용해 관리하거나, 암호화한 상태로 설정 파일 또는 데이터베이스에 보관해야 합니다. 또한, AWS Secrets Manager나 HashiCorp Vault와 같은 비밀 관리 시스템을 활용하는 것도 좋은 방법입니다.",
  "rule.sast.sw.unknown.7297.example.0.dangerous": "라인 1: YAML 파일 내부에 중요 정보가 하드코딩되어 있습니다.",
  "rule.sast.sw.unknown.7297.example.0.safe": "라인 1: YAML 파일 내부에 중요 정보를 포함하지 않도록 합니다.",
  "rule.sast.sw.unknown.7297.name": "하드코드된 중요 정보",
  "rule.sast.sw.vbnet.1713.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값으로 실행되는 커맨드 명령을 검출합니다.\n외부 입력으로부터 전달받은 위험한 데이터로 Shell 함수 등을 사용해 커맨드를 실행하는 경우를 검출합니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.vbnet.1713.example.0.dangerous": "라인 2: cmd에 외부 입력값이 저장됩니다.\n라인 3: 안전하지 않은 cmd 값이 shell 함수에 사용됩니다.",
  "rule.sast.sw.vbnet.1713.example.0.safe": "라인 2: cmd에 외부 입력값이 저장됩니다.\n라인 3: filter() 함수를 통해 cmd의 값을 검증하고, 검증된 cmd가 시스템 명령어 실행 인자로 사용되도록 합니다.",
  "rule.sast.sw.vbnet.1713.name": "명령어 삽입",
  "rule.sast.sw.vbnet.1713.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1713.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1713.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1713.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1713.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1713.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1713.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) shell$param(*)",
  "rule.sast.sw.vbnet.1713.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1713.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1713.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1715.description": "빈 catch 블록 체커는 예외를 처리하는 코드 내용이 없는 예외 처리 블록을 검출합니다.\ncatch 블록 내에 실제 실행 코드가 없으면 검출됩니다.\n예외가 발생했을 때 예외를 잡아낸 후 아무 작업도 하지 않으면 프로그램 실행 시 오류가 발생했을 경우에 원인을 파악하기가 쉽지 않습니다.\n빈 블록 안에 예외 처리 코드를 추가합니다. 특별히 처리할 것이 없다면 예외가 발생했었다는 오류 메시지를 남겨두는 것이 가장 무난합니다.",
  "rule.sast.sw.vbnet.1715.example.0.dangerous": "라인 3: catch 블록에서 오류를 포착하고 있지만 아무런 조치를 취하고 있지 않습니다.",
  "rule.sast.sw.vbnet.1715.example.0.safe": "라인 4: 예외를 포착한 후 각각의 예외사항에 대하여 적절하게 처리해야 합니다.",
  "rule.sast.sw.vbnet.1715.name": "빈 catch 블록",
  "rule.sast.sw.vbnet.1716.description": "하드코드된 사용자 이름과 비밀번호 체커는 사용자의 ID, 비밀번호에 해당하는 매개 변수에 들어간 상수 문자열을 검출합니다.\n사용자의 비밀번호가 상수 문자열로 코드에 포함되면, 소스 코드에 접근 권한이 있는 사람이 비밀번호를 획득할 수 있습니다.\n사용자의 비밀번호를 외부 값으로부터 불러와 사용합니다.",
  "rule.sast.sw.vbnet.1716.example.0.dangerous": "라인 1: System.Data.SqlClient.SqlConnection()에서 암호에 해당하는 인자로 상수 문자열이 사용됐습니다.",
  "rule.sast.sw.vbnet.1716.example.0.safe": "라인 1: System.Data.SqlClient.SqlConnection()에서 암호에 해당하는 인자에 비밀번호를 획득할 수 있는 다른 방법을 사용합니다.",
  "rule.sast.sw.vbnet.1716.name": "하드코드된 사용자 이름과 비밀번호",
  "rule.sast.sw.vbnet.1717.description": "HTTP 응답 분할 체커는 검증되지 않은 외부 입력값으로 생성된 HTTP 응답을 검출합니다.\nHTTP 요청에 들어 있는 인자 값이 HTTP 응답 헤더에 포함되어 사용자에게 다시 전달될 때, 입력값에 CR(Carriage Return)이나 LF(Line Feed)와 같은 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리될 수 있습니다. 이 경우 공격자는 개행문자를 사용하여 첫 번째 응답을 종료시키고, 두 번째 응답에 악의적인 코드를 주입하여 XSS 및 캐시 훼손(Cache Poisoning) 공격 등을 수행할 수 있습니다.\n요청 매개 변수의 값을 http 응답 헤더(예, Set-Cookie 등)에 포함시킬 경우 CR, LF와 같은 개행문자를 제거해야 합니다.",
  "rule.sast.sw.vbnet.1717.example.0.dangerous": "라인 2: 외부 입력값이 변수 a에 저장됩니다.\n라인 3: 검증 없이 변수 a를 사용하여 HTTP 응답 헤더를 생성했습니다.",
  "rule.sast.sw.vbnet.1717.example.0.safe": "라인 2: 외부 입력값이 변수 a에 저장됩니다.\n라인 3: 외부 입력값에 대해 위험한 문자열 \"\\n\", \"\\r\" 등에 대한 필터링을 해줍니다.\n라인 4: 변수 a를 사용하여 HTTP 응답 헤더를 생성했습니다.",
  "rule.sast.sw.vbnet.1717.name": "HTTP 응답 분할",
  "rule.sast.sw.vbnet.1717.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1717.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1717.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1717.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1717.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1717.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1717.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) shell$param(*)",
  "rule.sast.sw.vbnet.1717.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1717.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1717.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1718.description": "LDAP 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 LDAP 쿼리문을 검출합니다.\n공격자가 외부 입력을 통해서 의도하지 않은 LDAP(Lightweight Directory Access Protocol) 명령어를 수행할 수 있습니다. 즉, 웹 애플리케이션이 사용자가 제공한 입력을 올바르게 처리하지 못하면 공격자가 LDAP 명령문의 구성을 바꿀 수 있습니다. 이로 인해 프로세스가 명령을 실행한 컴포넌트와 동일한 권한을 가지고 동작하게 됩니다.\nDN(Distinguished Name)과 필터에 사용되는 사용자 입력값에는 특수문자가 포함되지 않도록 특수문자를 제거해야 합니다. 만약 특수문자를 허용해야 하는 경우라면 특수문자(=, +, <, >, #, ;, \\ 등 )가 실행 명령이 아닌 일반문자로 인식되도록 처리합니다.",
  "rule.sast.sw.vbnet.1718.example.0.dangerous": "라인 4: 외부 입력 Request.Form(\"username\")이 LDAP 쿼리를 생성하는데 사용되었습니다.",
  "rule.sast.sw.vbnet.1718.example.0.safe": "라인 4: 외부 입력값이 str에 저장됩니다.\n라인 5: 정규식을 사용하여 외부 입력값을 검증합니다.\n라인 6: 검증된 입력값으로 LDAP 쿼리를 생성합니다.",
  "rule.sast.sw.vbnet.1718.name": "LDAP 삽입",
  "rule.sast.sw.vbnet.1718.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1718.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1718.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1718.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1718.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1718.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1718.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) shell$param(*)",
  "rule.sast.sw.vbnet.1718.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1718.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1718.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1719.description": "시스템 정보 노출 체커는 catch 구문에서 시스템 정보를 출력하는 경우를 검출합니다.\n공격자는 노출된 오류 메시지를 보고 해당 시스템을 공격할 때 참고할 수 있습니다.\n시스템 정보가 노출되지 않도록 합니다.",
  "rule.sast.sw.vbnet.1719.example.0.dangerous": "라인 4: 시스템 정보를 출력했습니다.",
  "rule.sast.sw.vbnet.1719.example.0.safe": "라인 4: 예외에 대한 적절한 처리를 작성합니다.",
  "rule.sast.sw.vbnet.1719.name": "시스템 정보 노출",
  "rule.sast.sw.vbnet.1720.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.vbnet.1720.example.0.dangerous": "라인 2: 외부로부터 받은 문자열 변수 URL로 자동 연결됩니다.",
  "rule.sast.sw.vbnet.1720.example.0.safe": "라인 2: 필터 함수를 통해 외부 입력을 검증합니다.\n라인 3: 검증된 URL로 자동 연결됩니다.",
  "rule.sast.sw.vbnet.1720.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.vbnet.1720.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1720.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1720.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1720.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1720.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1720.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1720.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) shell$param(*)",
  "rule.sast.sw.vbnet.1720.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1720.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1720.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1721.description": "지나치게 일반적인 예외 처리 체커는 너무 다양한 예외를 포괄적으로 처리하는 코드를 검출합니다.\n지나치게 일반적인 예외 처리를 하게 되면 특별히 처리해야 하는 개별 예외를 적절히 처리하지 못할 뿐 아니라 이 지점에서 논리적으로 발생해서는 안되는 예외까지 처리하게 됩니다. 이러한 경우에 개발 및 검수 과정에서 발견되었어야 하는 설계 및 구현 상 결함이 발견되지 못한 채 배포 단계로 넘어가서 더 큰 문제의 원인이 될 수 있습니다.\n해당 코드 구역에서 발생할 수 있는 세부적인 예외들을 명시적으로 나눠서 처리하는 것이 좋습니다. 일반적인 예외를 처리하더라도 예측 가능한 세부적인 예외들을 먼저 처리한 후 마지막에 처리하도록 합니다. 이렇게 작성했을 때 실행 흐름이 일반적인 예외 처리 부분에 도달했다면 개발 과정에서 예측하지 못한 예외가 발생한 것이므로 조용히 넘어가지 않고 상황에 대한 상세한 기록을 남겨서 추후 결함을 수정할 수 있도록 합니다.",
  "rule.sast.sw.vbnet.1721.example.0.dangerous": "라인 3: Exception을 사용하여 예외를 처리합니다.",
  "rule.sast.sw.vbnet.1721.example.0.safe": "라인 3: IOException을 사용하여 예외를 처리합니다.\n라인 5: SQLException을 사용하여 예외를 처리합니다.",
  "rule.sast.sw.vbnet.1721.name": "지나치게 일반적인 예외 처리",
  "rule.sast.sw.vbnet.1722.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 파일명을 외부 입력으로 사용하는 경우 경로 순회(Directory Traversal) 공격의 위험이 있는 문자(`, /, \\, .. 등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.vbnet.1722.example.0.dangerous": "라인 3: 검증되지 않은 경로로 파일이 생성되었습니다.",
  "rule.sast.sw.vbnet.1722.example.0.safe": "라인 3: 외부에서 입력받은 경로를 검증합니다.\n라인 4: 검증된 경로로 파일을 생성합니다.",
  "rule.sast.sw.vbnet.1722.name": "경로 조작",
  "rule.sast.sw.vbnet.1722.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1722.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1722.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1722.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1722.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1722.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1722.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) shell$param(*)",
  "rule.sast.sw.vbnet.1722.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1722.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1722.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1723.description": "DNS lookup에 의존한 보안 결정 체커는 도메인 이름에 의존하여 인증 및 접근 통제를 수행하는 코드를 검출합니다.\nDNS 서버는 스푸핑 공격 대상이기 때문에 도메인 이름에 의존할 경우, 공격자가 DNS를 수정하여 공격자 IP 주소로 도메인 이름을 지정할 수 있습니다. 공격자가 DNS 엔트리를 속일 수 있으므로 도메인 이름에 의존에서 보안 결정(인증 및 접근 통제 등)을 하지 않아야 합니다. 만약 로컬 DNS 서버의 캐시가 공격자에 의해 오염된 상황이라면, 사용자와 특정 서버 간의 네트워크 트래픽이 공격자를 경유하도록 할 수도 있습니다.\n서버의 IP 주소를 알고 있다면 도메인 이름이 아닌 해당 IP 주소를 사용합니다.",
  "rule.sast.sw.vbnet.1723.example.0.dangerous": "라인 2: DNS를 사용하여 사용자 정보를 획득합니다.",
  "rule.sast.sw.vbnet.1723.example.0.safe": "라인 2: IP 주소를 사용하여 사용자 정보를 획득합니다.",
  "rule.sast.sw.vbnet.1723.name": "DNS lookup에 의존한 보안 결정",
  "rule.sast.sw.vbnet.1723.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1723.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1723.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1723.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1723.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1723.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1723.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) shell$param(*)",
  "rule.sast.sw.vbnet.1723.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1723.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1723.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1724.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.vbnet.1724.example.0.dangerous": "라인 5: 외부 입력값인 idTextBox.Text를 SqlStr에 저장합니다.\n라인 6: 검증되지 않은 SqlStr을 사용하여 SqlCmd를 생성합니다.",
  "rule.sast.sw.vbnet.1724.example.0.safe": "라인 5: SQL 쿼리문에 변경될 값을 @IdTextBox로 표기하여 SqlStr을 저장합니다.\n라인 6: SqlStr을 사용하여 SqlCmd를 생성합니다.\n라인 7: 외부 입력값인 IdTextBox.Text를 파리미터화하여 SqlCmd에 반영합니다.",
  "rule.sast.sw.vbnet.1724.name": "SQL 삽입",
  "rule.sast.sw.vbnet.1724.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1724.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1724.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1724.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1724.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1724.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1724.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.open$param(*)",
  "rule.sast.sw.vbnet.1724.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1724.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1724.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1725.description": "제한되지 않은 파일 업로드 체커는 확장자 검사를 하지 않고 서버에 업로드되는 파일을 검출합니다.\n공격자는 스크립트 파일 업로드로 시스템을 제어할 수 있습니다.\n파일을 업로드하기 전에 업로드가 가능한 확장자인지 확인합니다.",
  "rule.sast.sw.vbnet.1725.example.0.dangerous": "라인 2: 파일 이름을 FileUpload1에서 가져옵니다.\n라인 3: 확장자 검사를 하지 않고 savePath + fileName 경로에 파일을 저장합니다.",
  "rule.sast.sw.vbnet.1725.example.0.safe": "라인 2: 파일 이름을 FileUpload1에서 가져옵니다.\n라인 3: 파일의 확장자가 jpg인 경우에만 업로드합니다.",
  "rule.sast.sw.vbnet.1725.name": "제한되지 않은 파일 업로드",
  "rule.sast.sw.vbnet.1725.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1725.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1725.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1725.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1725.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1725.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1725.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.open$param(*)",
  "rule.sast.sw.vbnet.1725.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1725.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1725.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1726.description": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 암호화 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.vbnet.1726.example.0.dangerous": "라인 1: 안전하지 않은 DES 암호화 알고리즘을 사용했습니다.",
  "rule.sast.sw.vbnet.1726.example.0.safe": "라인 1: 안전하다고 알려진 AES 암호화 알고리즘을 사용하도록 합니다.",
  "rule.sast.sw.vbnet.1726.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.vbnet.1727.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 사용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.vbnet.1727.example.0.dangerous": "라인 1: 암호화 알고리즘의 키 크기가 지나치게 짧습니다(기준 1024).",
  "rule.sast.sw.vbnet.1727.example.0.safe": "라인 1: 암호화할 때 충분한 키 크기를 지정해 줍니다.",
  "rule.sast.sw.vbnet.1727.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.vbnet.1728.description": "XPATH 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XPath 쿼리문을 검출합니다.\n외부 입력값을 적절한 검사 과정 없이 XPath 쿼리문 생성을 위한 문자열로 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있습니다.\nXPath 쿼리에 사용되는 외부 입력값에 대하여 특수문자(`, [, ], /, =, @ 등) 및 쿼리 예약어를 필터링합니다.",
  "rule.sast.sw.vbnet.1728.example.0.dangerous": "라인 6: 외부 입력값이 XPath 쿼리문에 포함됩니다.\n라인 7: 검증 없이 외부 입력값이 사용됩니다.",
  "rule.sast.sw.vbnet.1728.example.0.safe": "라인 7: 외부 입력값이 변수 str에 저장됩니다.\n라인 8: 외부 입력값에서 XPath 삽입을 발생시키는 \"'\" 기호가 \"'\"로 대체되었습니다.\n라인 9: 검증된 XPath 쿼리를 실행합니다.",
  "rule.sast.sw.vbnet.1728.name": "XPath 삽입",
  "rule.sast.sw.vbnet.1728.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1728.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1728.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1728.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1728.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1728.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1728.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.open$param(*)",
  "rule.sast.sw.vbnet.1728.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1728.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1728.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1729.description": "XQuery 삽입 체커는 검증되지 않은 외부 입력값이 포함된 XQuery 구문을 검출합니다.\nXQuery를 사용하여 XML 데이터에 대한 동적 쿼리를 생성할 때 사용되는 외부 입력값에 대해 적절한 검증 절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 됩니다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증 절차를 우회할 수 있습니다. 예를 들어 XQuery 문은 `username='local_user1'`과 같이 작은 따옴표를 사용하여 username과 비교할 문자열을 구분합니다. 만약 외부에서 비교를 위해 삽입된 문자열에 작은 따옴표가 허용되는 경우 다음과 같은 문자열을 입력할 수 있습니다. `admin' or ''='` 위 문자열을 사용한 쿼리의 조건문은 다음과 같습니다. `username = 'admin' or ''=''`. 여기서 `''=''`은 언제나 true이므로 username 비교 자체를 우회할 수 있습니다.\nXQuery에 사용되는 외부 입력 데이터에 대하여 특수문자 및 쿼리 예약어를 필터링해야 합니다.",
  "rule.sast.sw.vbnet.1729.example.0.dangerous": "라인 2: 외부 입력값이 XQuery 생성에 포함됩니다.\n라인 3: 검증 없이 외부 입력값이 포함된 XQuery가 실행됩니다.",
  "rule.sast.sw.vbnet.1729.example.0.safe": "라인 3: 외부 입력값이 변수 docu에 저장됩니다.\n라인 4: 외부 입력값에서 XQuery 삽입을 발생시키는 \"'\" 기호가 삭제되었습니다.\n라인 5: 필터링된 XQuery를 실행합니다.",
  "rule.sast.sw.vbnet.1729.name": "XQuery 삽입",
  "rule.sast.sw.vbnet.1729.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1729.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1729.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1729.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1729.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1729.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1729.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.open$param(*)",
  "rule.sast.sw.vbnet.1729.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1729.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1729.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1730.description": "취약한 비밀번호 요구 조건 체커는 사용자가 설정하려는 비밀번호가 충분히 복잡한지 확인하지 않고 사용하는 코드를 검출합니다.\n정규식을 사용하는 패턴 검사를 하지 않은 비밀번호를 인자로 생성된 계정을 검출합니다.\n숫자로만 이루어진 비밀번호(ex, 123123)와 같이 간단한 비밀번호 패턴은 무차별 대입 공격에 취약합니다. 비밀번호 패턴을 검증하지 않으면 사용자 생성에 취약한 비밀번호가 사용될 수 있습니다.\n강력한 비밀번호 패턴을 위해서 관리자는 사용자에게 여러 제약 사항을 강제할 수 있습니다. 대소문자, 숫자, 특수문자 등을 일정 수준 이상으로 다양하게 사용하거나 같은 문자를 연속으로 여러 개 사용하지 않도록 설정할 수 있습니다. 한국인터넷진흥원 \"암호사용안내서\"의 비밀번호 설정 규칙을 참고할 수 있습니다.",
  "rule.sast.sw.vbnet.1730.example.0.dangerous": "라인 1: 사용자 생성에 외부 입력값이 검증 없이 사용됩니다.",
  "rule.sast.sw.vbnet.1730.example.0.safe": "라인 1: 정규식 \"strong regex\"를 사용하여 비밀번호가 제약 사항을 준수하는지 확인합니다.",
  "rule.sast.sw.vbnet.1730.name": "취약한 비밀번호 요구 조건",
  "rule.sast.sw.vbnet.1730.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1730.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1730.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1730.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1730.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1730.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1730.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.open$param(*)",
  "rule.sast.sw.vbnet.1730.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1730.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1730.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.1731.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\nAntiXss 패키지 등을 사용하거나 외부 입력값에 스크립트가 삽입되지 못하도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.vbnet.1731.example.0.dangerous": "라인 2: 외부 입력값을 필터 없이 사용했습니다.",
  "rule.sast.sw.vbnet.1731.example.0.safe": "라인 2: XSS를 막아주는 AntiXss 패키지 등을 사용하여 필터링 합니다.",
  "rule.sast.sw.vbnet.1731.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.vbnet.1731.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbnet.1731.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1731.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbnet.1731.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbnet.1731.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbnet.1731.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbnet.1731.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.open$param(*)",
  "rule.sast.sw.vbnet.1731.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbnet.1731.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbnet.1731.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbnet.2249.description": "매개 변수화되지 않은 쿼리 사용 체커는 매개 변수화 되지 않은 값을 사용한 SQL 쿼리문을 검출합니다.\nSQL 쿼리문에 매개 변수화 되지 않은 값들을 사용하는 경우, 쿼리문을 조작할 수 있는 특수문자가 포함되어 SQL 삽입 공격 등이 가능합니다.\nSQL 쿼리문에 포함될 문자열을 매개 변수화 하여 공격 가능성이 있는 특수문자들을 처리합니다.",
  "rule.sast.sw.vbnet.2249.example.0.dangerous": "라인 1: 검증되지 않은 값 username을 SQL 쿼리에 사용했습니다.",
  "rule.sast.sw.vbnet.2249.example.0.safe": "라인 1: SQL 쿼리의 구조를 변경시키지 못하도록 검증되지 않은 값 username을 @username으로 매개 변수화해서 사용합니다.",
  "rule.sast.sw.vbnet.2249.name": "매개 변수화되지 않은 쿼리 사용",
  "rule.sast.sw.vbnet.3013.description": "부적절한 서명 체커는 전자 서명을 포함하는 파일을 사용할 때 서명을 확인하지 않는 코드를 검출합니다.\n구체적으로는 decode() 함수를 사용하거나 JSON Web Token(JWT)을 사용할 때 강력한 암호화 알고리즘으로 서명하지 않은 경우를 검출합니다.\n사용자가 전자 서명을 확인하지 않고 사용하는 경우 위변조된 파일을 통해 의도하지 않은 URL에 접근하거나 악성 코드에 감염될 수 있습니다.\n또한 암호 알고리즘으로 서명하지 않고 JWT로 토큰을 생성하는 경우 공격자는 이를 위조하여 사용자로 위장할 수 있습니다.\n전자 서명 관련 기능을 사용할 때는 검증 기능을 활성화하는 함수를 호출하거나 함수 인자를 전달하도록 합니다.",
  "rule.sast.sw.vbnet.3013.example.0.dangerous": "라인 1: verify 인자를 false로 설정했습니다.\n라인 2: 안전한 서명을 수행하는 함수 호출 없이 JwtBuilder 객체를 생성했습니다.",
  "rule.sast.sw.vbnet.3013.example.0.safe": "라인 1: verify 인자를 true로 설정하도록 합니다.\n라인 2: MustVerifySignature() 함수를 호출한 후 JwtBuilder 객체를 생성하도록 합니다.",
  "rule.sast.sw.vbnet.3013.name": "부적절한 서명",
  "rule.sast.sw.vbnet.3014.description": "취약한 서버 인증서 검증 체커는 SSL/TLS 연결에서 서버 인증서를 확인하지 않은 코드를 검출합니다.\n중간자 공격에 취약하지 않은 보안 SSL/TLS 세션을 생성하기 위해서는 X.509 인증서를 필수적으로 검증해야 합니다. 구체적으로 ServicePointManager.ServerCertificateValidationCallback 의 콜백 함수가 모든 인증서를 신뢰하도록 구현되어 있을 경우 문제가 발생할 수 있습니다.\nServicePointManager.ServerCertificateValidationCallback 의 콜백 함수가 일부 인증서만 신뢰하도록 구현합니다.",
  "rule.sast.sw.vbnet.3014.example.0.dangerous": "라인 1: ServicePointManager.ServerCertificateValidationCallback 의 콜백 함수가 모든 인증서를 허용하도록 구현했습니다.",
  "rule.sast.sw.vbnet.3014.example.0.safe": "라인 2: ServicePointManager.ServerCertificateValidationCallback 의 콜백 함수가 일부 인증서만 허용하도록 구현을 수정합니다.",
  "rule.sast.sw.vbnet.3014.name": "취약한 서버 인증서 검증",
  "rule.sast.sw.vbs.1606.description": "과도하게 허용된 Cross-Origin Resource Sharing 정책 체커는 응답 헤더에 CORS 정책으로 모든 사이트를 허용하는 경우를 검출합니다.\nResponse.AddHeader의 인자로 `Access-Control-Allow-Origin`, `*`를 사용하여 모든 사이트를 허용하는 것은 보안 상 안전하지 않습니다. 임의의 사이트에서 들어오는 모든 정보를 브라우저에 표시할 수 있도록 허용하면 접속자가 크로스 사이트 스크립트 등의 공격에 노출될 수 있습니다.\n응답 헤더의 `Access-Control-Allow-Origin` 항목으로 `*` 대신 안전한 특정 사이트의 도메인만 전달합니다.",
  "rule.sast.sw.vbs.1606.example.0.dangerous": "라인 1: '*'을 사용하여 모든 사이트를 허용하는 것은 위험합니다.",
  "rule.sast.sw.vbs.1606.example.0.safe": "라인 1: 이미 안전한 것을 확인한 특정 URL만 허용하도록 설정합니다.",
  "rule.sast.sw.vbs.1606.name": "과도하게 허용된 Cross-Origin Resource Sharing 정책",
  "rule.sast.sw.vbs.1608.description": "명령어 삽입 체커는 검증되지 않은 외부 입력값을 포함한 시스템 내부 명령어를 실행하는 코드를 검출합니다.\n외부 입력으로부터 전달받은 위험한 데이터로 Shell 함수 등을 사용해 커맨드를 실행하는 경우를 검출합니다.\n적절한 검증 절차를 거치지 않은 사용자 입력값을 운영 체제 명령어의 일부 또는 전부에 사용하는 경우 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 장애가 발생할 수 있습니다.\n외부 입력에 따라 명령어를 생성하거나 명령어를 생성하는 데 필요한 안전한 값을 미리 지정하고 외부 입력에 따라 선택하여 사용합니다.",
  "rule.sast.sw.vbs.1608.example.0.dangerous": "라인 3: 검증되지 않은 외부값이 커맨드 실행 명령어에 사용되었습니다.",
  "rule.sast.sw.vbs.1608.example.0.safe": "라인 2: 안전한 필터링을 거쳐 커맨드 실행에 사용하도록 합니다.",
  "rule.sast.sw.vbs.1608.name": "명령어 삽입",
  "rule.sast.sw.vbs.1608.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1608.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1608.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1608.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1608.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1608.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1608.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) shell$param(*)",
  "rule.sast.sw.vbs.1608.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1608.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1608.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1609.description": "직접 동적 코드 평가 체커는 외부 입력값을 검증 없이 동적으로 계산되는 코드에 사용하는 경우를 검출합니다.\n프로그램 실행 중 Eval() 함수에 전달되는 문자열은 그 시점에 코드로 해석되어 직접 실행됩니다.\n검증되지 않은 외부 입력이 동적으로 실행되는 코드에 사용될 경우 공격자가 원하는 임의의 작업을 수행할 수 있습니다.\n우선 동적으로 계산되는 코드가 프로그램 설계에 꼭 필요한지 한 번 더 확인하고 가능하다면 같은 동작을 정적 코드를 사용하는 다른 방법으로 구현합니다. 대부분의 평범한 프로그램의 동작은 동적으로 계산되는 코드 없이도 구현이 가능하며, 많은 경우에 동적 코드는 단지 코드 작성자의 사소한 귀찮음을 회피하려는 의도로 사용됩니다. 동적 코드 사용이 불가피하다면, 외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.vbs.1609.example.0.dangerous": "라인 2: 검증되지 않은 외부값이 소스 실행 명령인 Eval() 함수에 사용되었습니다.",
  "rule.sast.sw.vbs.1609.example.0.safe": "라인 2: 안전한 필터링을 거쳐 사용하도록 합니다.",
  "rule.sast.sw.vbs.1609.name": "직접 동적 코드 평가",
  "rule.sast.sw.vbs.1609.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1609.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1609.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1609.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1609.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1609.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1609.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) eval$param(*)",
  "rule.sast.sw.vbs.1609.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1609.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1609.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1611.description": "부적절한 난수 생성 체커는 예측 가능한 난수를 사용하는 코드를 검출합니다.\nRnd() 함수는 예측 가능합니다.\n예측 불가능한 숫자가 필요한 상황에서 예측 가능한 난수를 사용한다면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하게 됩니다. 일반적으로 언어마다 기본 제공되는 통계적 PRNG(유사 난수 생성기) 방식을 사용하면 생성될 난수를 공격자가 쉽게 예측 가능하며, 시드를 잘 설정하는 것만으로는 안전을 보장할 수 없습니다.\n암호학적으로 충분히 안전한 방식을 사용하여 예측 불가능한 난수를 생성해야 합니다.",
  "rule.sast.sw.vbs.1611.example.0.dangerous": "라인 3: 예측 가능한 Rnd() 함수를 사용했습니다.",
  "rule.sast.sw.vbs.1611.example.0.safe": "라인 3: Rnd() 함수가 아닌 예측 불가능한 SecureRnd() 함수를 사용하도록 합니다.",
  "rule.sast.sw.vbs.1611.name": "부적절한 난수 생성",
  "rule.sast.sw.vbs.1612.description": "시스템 정보 노출 체커는 시스템 정보를 출력하는 경우를 검출합니다.\n시스템 관련 정보가 output stream이나 logging을 통해 새어나가는 경우 악의적인 공격의 대상이 될 수 있습니다.\n공격자는 노출된 오류 메시지를 보고 해당 시스템을 공격할 때 참고할 수 있습니다.\n시스템 정보가 노출되지 않도록 합니다.",
  "rule.sast.sw.vbs.1612.example.0.dangerous": "라인 3: 시스템 데이터의 일종인 오류 정보가 노출되었습니다.\n라인 4: 시스템 데이터의 일종인 오류 정보가 노출되었습니다.",
  "rule.sast.sw.vbs.1612.example.0.safe": "라인 3: 시스템 데이터를 노출하지 않도록 합니다.",
  "rule.sast.sw.vbs.1612.name": "시스템 정보 노출",
  "rule.sast.sw.vbs.1612.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1612.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1612.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1612.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1612.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1612.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1612.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) response.write$param(*)",
  "rule.sast.sw.vbs.1612.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1612.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) err..*$variable",
  "rule.sast.sw.vbs.1612.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1613.description": "로그 삽입 체커는 검증되지 않은 사용자 입력을 로그에 출력하는 경우를 검출합니다.\n사용자 입력을 검증 없이 그대로 로그에 출력하면 로그 내용에 공격자가 임의의 내용을 삽입하여 로그를 확인하는 보안 담당자 등을 헷갈리게 만들 수 있습니다. 이렇게 조작된 로그를 통해 잘못된 의사 결정이 이루어지면 그 결과를 공격에 활용할 수 있습니다.\n로그에 출력하기 전에 외부 입력값을 검사합니다. 특히 줄 바꿈 문자는 제거하는 것이 좋습니다.",
  "rule.sast.sw.vbs.1613.example.0.dangerous": "라인 6: 검증되지 않은 외부값이 로그에 사용되었습니다.",
  "rule.sast.sw.vbs.1613.example.0.safe": "라인 6: 외부 입력을 로그에 사용하지 않거나, 검증 후 사용하도록 합니다.",
  "rule.sast.sw.vbs.1613.name": "로그 삽입",
  "rule.sast.sw.vbs.1613.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1613.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1613.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1613.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1613.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1613.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1613.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.eventlog$param(*)",
  "rule.sast.sw.vbs.1613.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1613.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1613.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1615.description": "신뢰할 수 없는 사이트로의 리다이렉션 체커는 검증되지 않은 외부 입력값으로 생성된 URL 주소로 자동 연결하는 코드를 검출합니다.\n클라이언트에서 전송된 URL 주소로 연결하면 안전하다고 생각할 수 있으나, 공격자는 해당 폼의 요청을 변조함으로써 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있습니다.\n자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 합니다.",
  "rule.sast.sw.vbs.1615.example.0.dangerous": "라인 2: 검증되지 않은 외부값이 자동 연결 URL에 사용되었습니다.",
  "rule.sast.sw.vbs.1615.example.0.safe": "라인 2: 필터 함수를 통해 외부 입력을 검증하여 사용합니다.",
  "rule.sast.sw.vbs.1615.name": "신뢰할 수 없는 사이트로의 리다이렉션",
  "rule.sast.sw.vbs.1615.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1615.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1615.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1615.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1615.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1615.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1615.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) response.redirect$param(*)",
  "rule.sast.sw.vbs.1615.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1615.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1615.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1616.description": "경로 조작 체커는 검증되지 않은 외부 입력값으로 생성된 경로를 통해 파일 시스템에 접근하는 코드를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 접근하도록 허용하는 경우 공격자가 입력값을 조작하여 의도하지 않은 경로에 임의로 접근할 수 있습니다. 즉, 공격자가 경로 조작을 통해 허용되지 않은 권한을 획득하여 설정에 관련된 파일을 변경하거나 실행시킬 수 있습니다.\n외부 입력을 리소스(파일 등)의 식별자로 사용하기 위해 적절한 검증을 거치도록 합니다. 특히, 파일명을 외부 입력으로 사용하는 경우 경로 순회(Directory Traversal) 공격의 위험이 있는 문자(`, /, \\, ..  등)를 제거하는 필터를 사용합니다.",
  "rule.sast.sw.vbs.1616.example.0.dangerous": "라인 2: 외부 입력이 검증되지 않은 채로 경로 생성에 사용되었습니다.",
  "rule.sast.sw.vbs.1616.example.0.safe": "라인 2: 외부 입력값을 적절하게 필터링한 후에 사용하도록 합니다.",
  "rule.sast.sw.vbs.1616.name": "경로 조작",
  "rule.sast.sw.vbs.1616.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1616.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1616.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1616.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1616.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1616.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1616.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.getfile$param(*)",
  "rule.sast.sw.vbs.1616.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1616.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1616.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1617.description": "설정 조작 체커는 검증되지 않은 외부 입력값으로 시스템 설정이나 구성 설정을 변경하는 경우를 검출합니다.\n시스템 설정이나 구성 요소를 제어할 수 있으면 예상하지 못한 결과(예: 서비스 중단)를 일으키거나 악용될 수 있습니다.\n외부 입력을 사용하여 시스템 설정이나 환경 변수 등을 변경할 때 적절한 검증을 거치도록 합니다.",
  "rule.sast.sw.vbs.1617.example.0.dangerous": "라인 2: 외부 입력이 시스템 설정을 제어하는데 사용되었습니다.",
  "rule.sast.sw.vbs.1617.example.0.safe": "라인 2: 외부 입력으로 시스템 설정을 제어하지 않도록 합니다.",
  "rule.sast.sw.vbs.1617.name": "설정 조작",
  "rule.sast.sw.vbs.1617.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1617.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1617.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1617.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1617.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1617.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1617.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.create$param(*)",
  "rule.sast.sw.vbs.1617.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1617.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1617.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1618.description": "SQL 삽입 체커는 검증되지 않은 외부 입력값을 사용하는 SQL 쿼리를 검출합니다.\n외부 입력이 검증되지 않은 채로 SQL 쿼리 생성에 사용되는 경우, 공격자가 조작된 쿼리를 삽입하여 쿼리의 의미를 변경할 수 있습니다. 이 취약점으로 공격자는 DB로부터 정보를 열람하거나 조작할 수 있습니다.\nSQL 쿼리를 생성하기 전에 외부 입력값을 검증하거나 매개변수화합니다.",
  "rule.sast.sw.vbs.1618.example.0.dangerous": "라인 2: 외부 입력을 적절한 처리 없이 SQL 쿼리문으로 사용했습니다.",
  "rule.sast.sw.vbs.1618.example.0.safe": "라인 3: 필터링을 통해 안전한 SQL 쿼리 문자열만 사용하도록 합니다.",
  "rule.sast.sw.vbs.1618.name": "SQL 삽입",
  "rule.sast.sw.vbs.1618.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1618.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1618.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1618.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1618.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1618.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1618.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) .*.open$param(*)",
  "rule.sast.sw.vbs.1618.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1618.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1618.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1619.description": "안전하지 않은 리플렉션 체커는 검증되지 않은 외부 입력을 리플렉션의 인자로 사용하는 경우를 검출합니다.\n리플렉션은 문자열을 소스 코드상의 이름으로 취급하여 클래스, 함수, 변수 등에 접근하는 방식입니다. CallByName() 함수가 리플렉션에 사용됩니다.\n검증되지 않은 외부 입력을 사용하여 리플렉션을 사용하는 경우, 의도하지 않은 실행 경로로 프로그램이 실행될 수 있으며 공격자가 악의적으로 보안 검사 등을 우회할 수 있습니다.\n우선 리플렉션을 사용하는 코드가 프로그램 설계에 꼭 필요한지 한 번 더 확인하고 가능하다면 같은 동작을 일반적인 코드를 사용한 다른 방법으로 구현합니다. 리플렉션이 꼭 필요한 경우는 실행 환경 등에 따라 호출 가능한 함수 혹은 메소드가 전혀 달라져서 일반적인 호출을 사용하면 런타임 오류가 발생하는 경우 등으로 제한됩니다. 종종 리플렉션은 단지 코드 작성자의 사소한 귀찮음을 회피하려는 의도로 사용되기도 하므로 꼭 필요한 사용이 맞는지 한 번 더 확인해야 합니다. 리플렉션 사용이 불가피하다면, 외부 입력값은 신뢰할 수 없기 때문에 필터링을 수행하거나 미리 정당한 인자 값의 배열을 만든 후 적절한 인자 값을 선택하는 형태로 사용해야 합니다.",
  "rule.sast.sw.vbs.1619.example.0.dangerous": "라인 2: CallByName() 함수를 사용했습니다.",
  "rule.sast.sw.vbs.1619.example.0.safe": "라인 2: CallByName() 대신 직접적인 제어 함수를 사용합니다.",
  "rule.sast.sw.vbs.1619.name": "안전하지 않은 리플렉션",
  "rule.sast.sw.vbs.1620.description": "취약한 암호화 알고리즘 체커는 안전하다고 알려져 있지 않은 암호화 알고리즘 사용을 검출합니다.\nDES와 같은 암호화 알고리즘은 더 이상 안전하지 않습니다.\n표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 암호화 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 암호화 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다.\n자신만의 암호화 알고리즘을 개발하는 것은 위험하므로 학계 및 업계에서 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 DES, RC5 등의 알고리즘 대신 3DES, AES, SEED 등의 안전한 알고리즘을 사용합니다. 또한 표준화된 안전한 알고리즘마다 적정선으로 제시되는 충분한 길이의 키를 사용해야 합니다.",
  "rule.sast.sw.vbs.1620.example.0.dangerous": "라인 2: 안전하지 않은 DES 암호화 알고리즘을 사용했습니다.",
  "rule.sast.sw.vbs.1620.example.0.safe": "라인 2: 안전하다고 알려진 AES 암호화 알고리즘을 사용하도록 합니다.",
  "rule.sast.sw.vbs.1620.name": "취약한 암호화 알고리즘",
  "rule.sast.sw.vbs.1621.description": "취약한 해시 체커는 안전하다고 알려져있지 않은 해시 알고리즘을 사용하는 코드를 검출합니다.\n표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있는 가능성을 높일 수 있습니다. 오래된 몇몇 해시 알고리즘의 경우 컴퓨터의 성능이 향상됨에 따라 취약해지기도 합니다. 따라서 예전에는 해독하는데 시간이 걸릴 것으로 예상된 알고리즘이 며칠이나 몇 시간 내에 해독되기도 합니다. 오래되거나 표준화되지 않은 해시 알고리즘을 사용하면 공격자가 알고리즘을 분석하여 무력화시킬 수 있습니다. MD5와 같은 오래된 알고리즘의 경우에는 레인보우 테이블과 같은 방법으로 간단히 해시를 무력화할 수 있습니다.\n자신만의 해시 알고리즘을 개발하는 것은 위험합니다. 이미 검증되고 표준화된 알고리즘을 사용해야 합니다. 이미 취약하다고 알려진 MD5, SHA-1 등의 알고리즘 대신 SHA-256, SHA-512 등의 안전한 알고리즘을 사용합니다. 또한 예측 불가능한 솔트를 함께 사용하여 공격을 어렵게 만들어야 합니다.",
  "rule.sast.sw.vbs.1621.example.0.dangerous": "라인 2: 안전하지 않은 SHA1 알고리즘을 사용했습니다.",
  "rule.sast.sw.vbs.1621.example.0.safe": "라인 2: 안전한 SHA256 알고리즘 등을 사용합니다.",
  "rule.sast.sw.vbs.1621.name": "취약한 해시",
  "rule.sast.sw.vbs.1622.description": "불충분한 암호화 키 길이 체커는 너무 짧은 길이의 암호화 키 사용을 검출합니다.\n옵션을 통해 안전하다고 판단할 최소 키 길이를 설정할 수 있습니다.\n키는 암호화 및 복호화에 사용되는데, 검증된 암호화 알고리즘을 사용하더라도 키 길이가 충분히 길지 않으면 짧은 시간 안에 키를 찾아낼 수 있습니다. 이를 사용해 공격자가 암호화된 데이터나 비밀번호를 복호화할 수 있게 됩니다.\n주요 알고리즘마다 현재 알려진 수준의 기술을 사용했을 때 공격하려면 충분히 오래 걸려서 실질적으로 공격이 어렵게 만들어주는 적정 키 길이가 제시되어 있습니다. 적정 길이 이상의 크기인 키를 사용하는 것이 좋습니다. 예를 들어 RSA 알고리즘은 2015년도 기준으로 적어도 2,048 비트 이상의 길이를 가진 키와 함께 사용해야 하고, 대칭 암호화 알고리즘(Symmetric Encryption Algorithm)의 경우에는 적어도 128 비트 이상의 키를 사용해야 합니다.",
  "rule.sast.sw.vbs.1622.example.0.dangerous": "라인 2: 암호화 알고리즘의 키 크기가 지나치게 짧습니다.",
  "rule.sast.sw.vbs.1622.example.0.safe": "라인 2: 암호화할 때 충분한 키 크기를 지정해줍니다.",
  "rule.sast.sw.vbs.1622.name": "불충분한 암호화 키 길이",
  "rule.sast.sw.vbs.1622.option.minimum_key_size.description": "안전한 키 사이즈의 최소값을 입력합니다. <br />예시) 1024",
  "rule.sast.sw.vbs.1622.option.minimum_key_size.name": "최소 키 사이즈",
  "rule.sast.sw.vbs.1623.description": "크로스 사이트 스크립팅 체커는 검증되지 않은 외부 입력값을 HTML에 포함시키는 코드를 검출합니다.\n외부 입력을 검증하지 않은 채로 페이지 생성에 사용하는 경우 공격자가 해당 페이지에 악성 스크립트를 삽입할 가능성이 있습니다. 공격자는 해당 취약점을 이용하여 사용자의 쿠키나 세션 등 정보를 탈취하거나 비정상적인 기능을 수행하도록 할 수 있습니다.\n외부 입력값에 스크립트가 삽입되지 않도록 문자 변환 함수 또는 메소드를 사용하여 <, >, &, \" 등을 &lt;, &gt;, &amp;, &quot; 로 대체합니다. HTML 태그를 사용하도록 허용하는 게시판에서는 허용되는 HTML 태그를 화이트리스트로 작성하여 리스트에 포함된 태그만 지원하도록 합니다.",
  "rule.sast.sw.vbs.1623.example.0.dangerous": "라인 2: 외부 입력값을 필터 없이 사용했습니다.",
  "rule.sast.sw.vbs.1623.example.0.safe": "라인 2: 필터링을 거쳐 페이지를 생성하는데 사용하도록 합니다.",
  "rule.sast.sw.vbs.1623.name": "크로스 사이트 스크립팅",
  "rule.sast.sw.vbs.1623.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1623.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1623.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1623.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1623.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1623.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1623.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) response.write$param(*)",
  "rule.sast.sw.vbs.1623.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1623.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1623.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1631.description": "헤더 조작 체커는 검증되지 않은 외부 입력이 HTTP 응답 헤더에 포함되는 경우를 검출합니다.\n많은 소프트웨어 보안 취약점과 마찬가지로 Header Manipulation은 목적의 수단일 뿐 목적 자체는 될 수 없습니다. 이 취약점은 본질적으로 간단 명료합니다. 공격자가 악성 데이터를 취약한 애플리케이션에 전달하고 애플리케이션은 HTTP 응답 헤더에 데이터를 포함합니다. 현대의 많은 애플리케이션 서버는 악성 문자가 HTTP 헤더에 삽입되는 것을 방지합니다. 예를 들어, Apache Tomcat의 최신 버전은 금지된 문자로 헤더를 설정할 경우 IllegalArgumentException을 발생시킵니다. HTTP 헤더에 검증되지 않은 외부 입력을 포함시키면 공격자는 캐시 감염, 크로스 사이트 스크립트, HTTP 응답 분할, 세션 고정, 교차 사용자 변조, 페이지 하이재킹, 쿠키 조작, 신뢰할 수 없는 주소로 자동 연결 등 다양한 공격의 통로로 활용할 수 있습니다. 새 줄 문자를 필터링하면 HTTP 응답 분할은 방지할 수 있지만 다른 취약점에 대해서는 여전히 안전하지 않습니다.\n외부 입력을 헤더에 포함시킬 때는 충분한 필터를 거친 안전한 값만 전달합니다.",
  "rule.sast.sw.vbs.1631.example.0.dangerous": "라인 2: 검증되지 않은 외부값이 HTTP 응답 헤더에 사용되었습니다.",
  "rule.sast.sw.vbs.1631.example.0.safe": "라인 2: 검증되지 않은 값은 필터링하여 사용해야 합니다.",
  "rule.sast.sw.vbs.1631.name": "헤더 조작",
  "rule.sast.sw.vbs.1631.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1631.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1631.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1631.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1631.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1631.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1631.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) operand(2) of \"=\" if operand(1) == reg(\"response.cookies.*\")",
  "rule.sast.sw.vbs.1631.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1631.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1631.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.vbs.1632.description": "자원 삽입 체커는 검증되지 않은 외부 입력값으로 생성된 포트 ID를 검출합니다.\n검증되지 않은 외부 입력값을 통해 파일 및 서버 등 시스템 리소스에 대한 접근 혹은 식별을 허용할 경우에 입력값 조작을 통해 시스템이 보호하는 리소스에 임의로 접근할 수 있습니다. 리소스 삽입 약점을 사용하여 공격자는 리소스의 수정/삭제, 시스템 정보 누출, 시스템 리소스 간 충돌로 인한 서비스 장애 등을 발생시킬 수 있습니다.\n외부 입력을 리소스(소켓의 포트 등)의 식별자로 사용하는 경우에는 사전에 정의된 적합한 목록에서 선택하도록 합니다.",
  "rule.sast.sw.vbs.1632.example.0.dangerous": "라인 2: 외부 입력값을 리소스를 획득하는데 직접 사용했습니다.",
  "rule.sast.sw.vbs.1632.example.0.safe": "라인 2: 필터 함수 등을 사용하여 안전한 입력을 통해서만 리소스를 획득하도록 합니다.",
  "rule.sast.sw.vbs.1632.name": "자원 삽입",
  "rule.sast.sw.vbs.1632.option.taint_filter.description": "외부 정보가 필터링되는 함수명 및 필터링 유형을 작성합니다.<br />예시) filter$param(1)",
  "rule.sast.sw.vbs.1632.option.taint_filter.name": "외부 정보 필터 함수",
  "rule.sast.sw.vbs.1632.option.taint_filter_function_fqn.description": "베이스와 매개변수에서 외부 정보가 필터링되는 함수명을 작성합니다.<br />예시) com.sparrow.utils.filter(java.lang.String) 또는 com.sparrow.utils.filter()",
  "rule.sast.sw.vbs.1632.option.taint_filter_function_fqn.name": "사용자 정의 외부 정보 필터 함수",
  "rule.sast.sw.vbs.1632.option.taint_propagator.description": "외부 정보가 전파되는 함수명 및 전파 유형을 작성합니다.<br />예시) &$operand(*)->return",
  "rule.sast.sw.vbs.1632.option.taint_propagator.name": "외부 정보 전파 함수",
  "rule.sast.sw.vbs.1632.option.taint_sink.description": "외부 정보가 사용되는 함수명 및 사용 유형을 작성합니다.<br />예시) operand(2) of \"=\" if operand(1) == reg(\".*localport\")",
  "rule.sast.sw.vbs.1632.option.taint_sink.name": "외부 정보 사용 함수",
  "rule.sast.sw.vbs.1632.option.taint_source.description": "외부 정보가 입력되는 함수명 및 입력 유형을 작성합니다.<br />예시) request.form$return",
  "rule.sast.sw.vbs.1632.option.taint_source.name": "외부 정보 입력 함수",
  "rule.sast.sw.xml.2077.description": "부적절한 로그 레벨 설정 체커는 Tomcat 디버그 레벨 3 이상을 사용한 경우를 검출합니다.\n디버그 레벨이 너무 높게 설정된 경우, Tomcat이 로그에 포함된 중요한 정보들을 로그 파일에 기록하여 노출시킬 수 있습니다\nTomcat 디버그 레벨을 3 미만으로 낮추도록 합니다.",
  "rule.sast.sw.xml.2077.example.0.dangerous": "라인 1: 디버그 레벨을 3 이상으로 설정했습니다.",
  "rule.sast.sw.xml.2077.example.0.safe": "라인 1: 디버그 레벨을 3 미만으로 사용합니다.",
  "rule.sast.sw.xml.2077.name": "부적절한 로그 레벨 설정",
  "rule.sast.sw.xml.2088.description": "중복된 서블릿 매핑 체커는 서블릿 매핑이 중복되어 있는 경우를 검출합니다.\n동일한 URL 패턴에 대해 여러 서블릿 매핑이 존재할 경우 중복된 서블릿 매핑은 아무런 의미가 없습니다. 이러한 경우 마지막 항목만 적용됩니다. 보통은 남아 있는 디버그 코드거나 오타인 경우가 많습니다.\n서블릿 매핑을 중복하여 작성하지 않도록 합니다.",
  "rule.sast.sw.xml.2088.example.0.dangerous": "라인 5: 서블릿 매핑이 중복되었습니다.",
  "rule.sast.sw.xml.2088.example.0.safe": "라인 5: 서블릿 매핑을 중복시키지 않도록 합니다.",
  "rule.sast.sw.xml.2088.name": "중복된 서블릿 매핑",
  "rule.sast.sw.xml.2089.description": "중복된 보안 역할 체커는 보안 역할이 중복되어 있는 경우를 검출합니다.\n중복된 보안 역할이 존재합니다. 이러한 경우 마지막 항목만 적용됩니다. 보통은 남아 있는 디버그 코드거나 오타인 경우가 많습니다.\n보안 역할을 중복하여 작성하지 않도록 합니다.",
  "rule.sast.sw.xml.2089.example.0.dangerous": "라인 6: 보안 역할이 중복되었습니다.",
  "rule.sast.sw.xml.2089.example.0.safe": "라인 6: 보안 역할을 중복시키지 않도록 합니다.",
  "rule.sast.sw.xml.2089.name": "중복된 보안 역할",
  "rule.sast.sw.xml.2090.description": "과도한 서블릿 매핑 체커는 여러 URL 패턴이 단일 서블릿에 매핑되어 있는 경우를 검출합니다.\n서블릿이 여러 URL 패턴에 정의되면 과도한 기능을 수행하는 것일 수 있습니다.\n서블릿이 여러 URL 패턴에 정의되지 않도록 합니다.",
  "rule.sast.sw.xml.2090.example.0.dangerous": "라인 12: 서블릿이 여러 URL 패턴에 정의되었습니다.",
  "rule.sast.sw.xml.2090.example.0.safe": "라인 12: 서블릿을 여러 URL 패턴에 정의하지 않도록 합니다.",
  "rule.sast.sw.xml.2090.name": "과도한 서블릿 매핑",
  "rule.sast.sw.xml.2091.description": "과도한 세션 유지 시간 체커는 세션 유지 시간을 지나치게 길게 설정한 경우를 검출합니다.\n세션을 오래 유지하게 되면 공격자가 공격할 수 있는 기회가 커집니다. 또한 메모리가 해제되지 않으므로 서비스 거부(DoS) 공격이 가능할 수 있습니다.\n세션 유지 시간은 적절하게 유지하도록 합니다.",
  "rule.sast.sw.xml.2091.example.0.dangerous": "라인 2: 세션 유지 시간을 -1로 설정했습니다. 세션은 계속 유지됩니다.",
  "rule.sast.sw.xml.2091.example.0.safe": "라인 2: 세션 유지 시간을 적절하게 조정하도록 합니다.",
  "rule.sast.sw.xml.2091.name": "과도한 세션 유지 시간",
  "rule.sast.sw.xml.2093.description": "JSP 직접 접근 체커는 설정에서 JSP에 직접 접근하도록 하는 경우를 검출합니다.\nJSP에 직접 접근하게 하면, 시스템 관련 정보와 소스 코드 등이 노출되어 공격자에게 공격당할 수 있습니다.\n설정에서 JSP에 직접 접근하지 않도록 합니다.",
  "rule.sast.sw.xml.2093.example.0.dangerous": "라인 8: 모든 사용자가 웹 리소스에 직접 접근하도록 설정했습니다.",
  "rule.sast.sw.xml.2093.example.0.safe": "라인 8: 사용자들이 웹 리소스에 직접 접근하지 않도록 설정합니다.",
  "rule.sast.sw.xml.2093.name": "JSP 직접 접근",
  "rule.sast.sw.xml.2094.description": "불충분한 세션 ID 길이 체커는 세션 ID 길이가 너무 짧은 경우를 검출합니다.\n세션 ID를 짧게 설정하면, 무차별 대입 공격에 취약할 수 있습니다. 이 경우 공격자가 세션 ID를 탈취할 수도 있습니다.\n세션 ID 길이는 충분히 길게 작성하도록 합니다. 이 규칙에서는 최소 16자 이상을 설정하는 것을 권장하고 있습니다.",
  "rule.sast.sw.xml.2094.example.0.dangerous": "라인 1: 세션 ID 길이를 10으로 설정했습니다. 이 길이는 권장 수준보다 더 짧습니다.",
  "rule.sast.sw.xml.2094.example.0.safe": "라인 1: 세션 ID 길이를 16 이상으로 설정하도록 합니다.",
  "rule.sast.sw.xml.2094.name": "불충분한 세션 ID 길이",
  "rule.sast.sw.xml.2095.description": "잘못 설정한 서블릿 사용 체커는 설정이 잘못된 서블릿이 있는 경우를 검출합니다.\n잘못 설정된 서블릿이란 서블릿의 이름을 설정하지 않았거나 중복된 경우 등을 의미합니다.\n설정이 잘못된 서블릿은 서블릿에 대한 접근이 정상적으로 동작하지 않을 수 있습니다.\n서블릿 설정을 문제 없이 잘 설정하도록 합니다.",
  "rule.sast.sw.xml.2095.example.0.dangerous": "라인 1: 서블릿 이름을 설정하지 않았습니다.\n라인 8: 서블릿 이름을 중복하여 설정했습니다.",
  "rule.sast.sw.xml.2095.example.0.safe": "라인 1: 서블릿을 정상적으로 설정하도록 합니다.",
  "rule.sast.sw.xml.2095.name": "잘못 설정한 서블릿 사용",
  "rule.sast.sw.xml.2096.description": "존재하지 않는 필터 사용 체커는 존재하지 않는 필터를 가리키는 필터 매핑을 검출합니다.\n존재하지 않은 필터를 사용하면 필터가 적용되지 않습니다. 따라서 개발자가 의도하지 않은 결과가 발생할 수 있습니다.\n필터 매핑을 할 경우 존재하는 필터만을 사용하도록 합니다.",
  "rule.sast.sw.xml.2096.example.0.dangerous": "라인 13: 존재하지 않는 필터인 AuthenticationFilter 필터를 사용했습니다.",
  "rule.sast.sw.xml.2096.example.0.safe": "라인 13: 존재하지 않는 필터는 필터 매핑에 사용하지 않도록 합니다.",
  "rule.sast.sw.xml.2096.name": "존재하지 않는 필터 사용",
  "rule.sast.sw.xml.2375.description": "하드코딩된 비밀번호 체커는 하드코딩된 비밀번호를 사용하는 코드를 검출합니다. 릴리즈 시 설정 파일에 비밀번호를 입력해놓으면 안됩니다.\n설정 파일에 하드코딩된 비밀번호를 포함하고 이를 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 관리자 정보가 노출될 수 있으므로 위험합니다.\n비밀번호를 설정 파일에 적어두지 않도록 합니다. 만약 반드시 저장할 필요가 있다면 appSettings file attribute를 사용하여 릴리즈시에 포함되지 않는 외부 설정 파일에 적어두도록 합니다.",
  "rule.sast.sw.xml.2375.example.0.dangerous": "라인 8: 비밀번호를 설정 파일에 작성했습니다.",
  "rule.sast.sw.xml.2375.example.0.safe": "라인 4: 비밀번호를 설정 파일에 작성하지 않도록 합니다.",
  "rule.sast.sw.xml.2375.name": "하드코딩된 비밀번호",
  "rule.sast.sw.xml.2376.description": "디버그 정보 노출 체커는 디버그 정보를 노출하도록 설정한 경우를 검출합니다.\n디버그 메시지를 외부로 출력하는 것은 공격자에게 시스템을 공격하기 위한 힌트를 제공할 수 있습니다.\n디버그 정보를 노출하지 않도록 설정을 비활성화합니다. 혹은 RemoveAttributes(debug) 속성을 사용하여 릴리즈 시에만 디버그 정보가 노출되지 않도록 합니다.",
  "rule.sast.sw.xml.2376.example.0.dangerous": "라인 3: debug 속성을 true로 설정했습니다. 디버그 정보가 노출됩니다.",
  "rule.sast.sw.xml.2376.example.0.safe": "라인 5: RemoveAttributes(debug)를 사용하여 릴리즈 시 디버그 정보가 노출되지 않도록 합니다.",
  "rule.sast.sw.xml.2376.name": "디버그 정보 노출",
  "rule.sast.sw.xml.2377.description": "기본 오류 페이지 사용 체커는 오류가 발생했을 때 사용하는 오류 페이지가 기본 오류 페이지인 경우를 검출합니다.\n기본 오류 페이지는 오류와 연관된 자세한 정보를 제공하지만 실제 제품에 포함되어서는 안됩니다. 기본 오류 페이지에서 주어진 정보로 타겟하는 프레임워크, DB, 혹은 여러 가지 리소스를 타게팅하여 공격할수 있습니다.\n기본 오류 페이지 대신 상황에 맞게 커스텀된 오류 페이지를 사용하도록 합니다. 이와 같은 방법으로 커스텀 오류 페이지 모드를 RemoteOnly로 설정하거나 직접 오류 페이지를 지정하도록 합니다.",
  "rule.sast.sw.xml.2377.example.0.dangerous": "라인 1: customErrors mode를 off로 설정했습니다. 기본 오류 페이지가 사용됩니다.",
  "rule.sast.sw.xml.2377.example.0.safe": "라인 1: 커스텀 오류 페이지 모드를 RemoteOnly로 설정합니다.\n라인 3: 혹은 커스텀 오류 페이지를 직접 지정하도록 합니다.",
  "rule.sast.sw.xml.2377.name": "기본 오류 페이지 사용",
  "rule.sast.sw.xml.2378.description": "Trace 로그 노출 체커는 Trace 로그 정보를 출력하도록 설정한 경우를 검출합니다.\nTrace 로그 정보는 개발자가 시스템을 개발하는 과정에서 구체적인 동작 정보 등을 확인하기 위해 사용합니다. 만약 이러한 레벨의 로그 정보가 공개된다면 공격자가 시스템에 대하여 이해할수 있게 돕습니다. 따라서 이러한 정보로 인해 시스템이 취약해질 수 있습니다.\nTrace 로그 정보를 노출시키지 않도록 설정을 비활성화합니다.",
  "rule.sast.sw.xml.2378.example.0.dangerous": "라인 4: trace 속성을 true로 설정했습니다. Trace 로그 정보가 노출됩니다.",
  "rule.sast.sw.xml.2378.example.0.safe": "라인 4: trace 속성을 false로 설정합니다.",
  "rule.sast.sw.xml.2378.name": "Trace 로그 노출",
  "rule.sast.sw.xml.2379.description": "HttpOnly가 아닌 쿠키 체커는 HttpOnly 속성을 부여하지 않은 쿠키 사용을 검출합니다.\n해당 속성을 활성화하지 않으면 스크립트의 쿠키 접근을 방지하지 못해 공격자가 손쉽게 쿠키에 접근할 수 있습니다.\n쿠키를 항상 HttpOnly 속성을 활성화하여 사용합니다.",
  "rule.sast.sw.xml.2379.example.0.dangerous": "라인 4: httpOnlyCookies를 설정하지 않았습니다. 이 속성의 디폴트값은 false입니다.",
  "rule.sast.sw.xml.2379.example.0.safe": "라인 5: httpOnlyCookies를 true로 설정합니다.",
  "rule.sast.sw.xml.2379.name": "HttpOnly가 아닌 쿠키",
  "rule.sast.sw.xml.3017.description": "스트럿츠 : 중복 밸리데이션 양식 체커는 Apache Struts Validator를 통해 입력 양식의 유효성을 검사하는 경우, 두 개 이상의 검증 양식 이름이 동일한 코드를 검출합니다.\nApache Struts Validator를 사용하여 입력 양식에 대해 정의된 유효성 검사를 수행할 수 있습니다. 검사할 검증 양식 이름을 지정할 수 있으며, 두 개 이상의 검증 양식이 동일한 경우 Validator는 임의로 하나를 선택해 유효성 검사를 수행하게 됩니다. 이로 인해 잘못된 유효성 검사가 수행될 수 있습니다.\n유일한 검증 양식 이름을 사용하여 올바르게 정의한 유효성 검사가 수행될 수 있도록 합니다.",
  "rule.sast.sw.xml.3017.example.0.dangerous": "라인 3: 라인 4와 중복된 검사 양식 이름을 사용했습니다.\n라인 4: 라인 3과 중복된 검사 양식 이름을 사용했습니다.",
  "rule.sast.sw.xml.3017.example.0.safe": "라인 3: 유일한 검증 양식 이름을 사용하여 올바르게 정의한 유효성 검사가 수행될 수 있도록 합니다.",
  "rule.sast.sw.xml.3017.name": "스트럿츠 : 중복 밸리데이션 양식",
  "rule.sast.sw.xml.3066.description": "Struts 입력 유효성 검사 프레임워크 미사용 체커는 입력 유효성 검사를 위한 Struts의 프레임워크를 사용하지 않는 코드를 검출합니다.\n검증되지 않은 입력은 J2EE 애플리케이션 취약점의 주요 원인이 됩니다. 애플리케이션이 Struts의 ValidatorPlugin과 같은 입력 검증 프레임워크를 사용하지 않으면 입력 유효성 검사가 충분하지 않아 취약점이 발생할 위험이 더욱 증가합니다.\nStruts 환경 설정 파일(XML 형식)에 ValidatorPlugin과 같은 입력 검증 프레임워크를 설정합니다.",
  "rule.sast.sw.xml.3066.example.0.dangerous": "라인 6: 별도의 입력 검증 프레임워크 설정이 존재하지 않습니다.",
  "rule.sast.sw.xml.3066.example.0.safe": "라인 7: Structs의 설정 XML 파일을 확장하여 Struts의 입력 유효성 검사 플러그인을 사용합니다. 플러그인 태그에는 사용할 유효성 검사기의 이름이 속성으로 포함되며, 애플리케이션의 기본 유효성 검사 규칙의 파일 경로를 지정하는 set-property 하위 태그가 포함됩니다.",
  "rule.sast.sw.xml.3066.name": "Struts 입력 유효성 검사 프레임워크 미사용",
  "rule.sast.sw.xml.7298.description": "중요 정보(비밀번호, 암호화 키 등)를 하드코딩한 채 내부 인증이나 외부 컴포넌트 통신에 사용하는 경우, 공격자는 스니핑, 소스코드 분석, 역공학 등을 통해 이를 쉽게 탈취할 수 있습니다.\n해당 체커는 중요 정보 검출 옵션을 제공합니다. 옵션을 통해 점검할 중요 정보 형식을 지정할 수 있습니다.\n중요 정보는 환경 변수를 이용해 관리하거나, 암호화한 상태로 설정 파일 또는 데이터베이스에 보관해야 합니다. 또한, AWS Secrets Manager나 HashiCorp Vault와 같은 비밀 관리 시스템을 활용하는 것도 좋은 방법입니다.",
  "rule.sast.sw.xml.7298.example.0.dangerous": "라인 5: XML 파일 내부에 중요 정보가 하드코딩되어 있습니다.",
  "rule.sast.sw.xml.7298.example.0.safe": "라인 1: XML 파일 내부에 중요 정보를 포함하지 않도록 합니다.",
  "rule.sast.sw.xml.7298.name": "하드코드된 중요 정보",
  "rule.sast.sw.xml.7422.description": "Android 애플리케이션의 구성 요소(Activity, Service, BroadcastReceiver, ContentProvider)는 AndroidManifest.xml에 선언되며, `android:exported` 속성으로 외부 애플리케이션이 해당 구성 요소에 접근 가능한지를 결정합니다. `android:exported=\"true\"`로 설정된 구성 요소는 다른 앱이 명시적 인텐트 또는 암시적 인텐트를 통해 호출할 수 있습니다. \n\n만약 보안 검증이 필요한 구성 요소를 `android:exported=\"true\"`로 외부에 노출하면서 `android:permission` 또는 `readPermission/writePermission` 같은 접근 제어를 적용하지 않으면 해당 구성 요소는 모든 앱에서 제약 없이 호출될 수 있습니다. 공격자는 이를 악용해 인증을 우회하거나 내부 상태를 변조하고 악성 명령을 실행하는 등의 공격을 수행할 수 있습니다.\n외부 애플리케이션과 공유할 필요가 없는 구성 요소는 AndroidManifest.xml에서 명시적으로 `android:exported=\"false\"`로 설정해야 합니다. \n\nActivity, Service, BroadcastReceiver, ContentProvider를 외부에 공개해야 하는 경우에는 `android:permission` 속성을 적용해 접근 권한을 제한합니다. 특히 ContentProvider는 데이터의 읽기 및 쓰기 권한을 세분화하기 위해 `readPermission` 또는 `writePermission` 속성을 추가로 설정할 수 있습니다.\n\nAndroid 11(API 30) 이하에서는 `<intent-filter>`가 선언된 구성 요소(activity, service, receiver)에서 `android:exported` 속성이 명시되지 않아도 기본값이 true로 간주되어 외부 애플리케이션에서 호출될 수 있습니다.\n반면, Android 12(API 31) 이상에서는 `android:exported` 속성이 필수이며, 누락될 경우 빌드 오류가 발생합니다. 따라서 `<intent-filter>`가 포함된 모든 구성 요소에 대해 `android:exported` 속성을 명시해야 합니다.\n\n또한, 동일한 개발자가 관리하는 애플리케이션 간 통신이 필요한 경우에는 권한을 정의할 때 `android:protectionLevel=\"signature\"`를 설정해, 같은 서명 키로 서명된 애플리케이션만 접근할 수 있도록 제한하는 것이 안전합니다.",
  "rule.sast.sw.xml.7422.example.0.dangerous": "라인 7: 외부에서 호출 가능한 구성 요소를 `android:exported=\"true\"`로 설정하면서 `android:permission` 등의 접근 제어 속성을 함께 지정하지 않은 경우, 외부 애플리케이션이 인텐트를 통해 해당 구성 요소를 직접 호출할 수 있습니다.",
  "rule.sast.sw.xml.7422.example.0.safe": "라인 7: 외부에서 접근할 필요가 없는 구성 요소는 `android:exported=\"false\"`로 설정해 내부 전용으로 제한합니다.",
  "rule.sast.sw.xml.7422.name": "Android 애플리케이션 구성 요소의 부적절한 내보내기",
  "rule.sca.l.common.5897.description": "강력한 카피레프트 라이선스가 적용된 컴포넌트를 사용하는 경우, 컴포넌트와 연결된 모든 소스코드의 공개 의무가 발생하거나 설치 정보 제공 의무가 발생할 수 있어 유의해야 합니다.\n약한 카피레프트 라이선스 혹은 허용적 라이선스가 적용된 컴포넌트를 사용하거나 공개 의무의 발생 및 준수 여부를 다시 한 번 확인해야 합니다.",
  "rule.sca.l.common.5897.name": "강력한 카피레프트 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5898.description": "약한 카피레프트 라이선스가 적용된 컴포넌트를 사용하는 경우 원저작물을 수정한 경우 코드 공개 의무가 발생할 수 있으며, 파일 단위로 원본 및 수정 코드를 제공해야 하거나 모듈 단위로 원본 및 수정 코드를 제공해야 할 수 있습니다.\n허용적 라이선스가 적용된 컴포넌트를 사용하거나 공개 의무의 발생 및 준수 여부를 다시 한 번 확인해야 합니다.",
  "rule.sca.l.common.5898.name": "약한 카피레프트 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5899.description": "허용적 라이선스가 적용된 컴포넌트를 사용하는 경우 저작권 표시나 라이선스 고지 등의 의무를 준수해야 합니다.\n아무 조건 없이 사용 가능한 컴포넌트를 사용하거나 라이선스에 명시된 의무의 준수 여부를 다시 한 번 확인해야 합니다.",
  "rule.sca.l.common.5899.name": "허용적 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5908.description": "BSD Zero Clause License(SPDX ID: 0BSD) 라이선스는 사용이 자유로운 라이선스입니다.",
  "rule.sca.l.common.5908.name": "0BSD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5909.description": "Attribution Assurance License(SPDX ID: AAL) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5909.name": "AAL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5910.description": "Abstyles License(SPDX ID: Abstyles) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5910.name": "Abstyles 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5911.description": "AdaCore Doc License(SPDX ID: AdaCore-doc) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5911.name": "AdaCore-doc 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5912.description": "Adobe Systems Incorporated Source Code License Agreement(SPDX ID: Adobe-2006) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5912.name": "Adobe-2006 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5913.description": "Adobe Glyph List License(SPDX ID: Adobe-Glyph) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5913.name": "Adobe-Glyph 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5914.description": "Amazon Digital Services License(SPDX ID: ADSL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5914.name": "ADSL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5915.description": "Academic Free License v1.1(SPDX ID: AFL-1.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5915.name": "AFL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5916.description": "Academic Free License v1.2(SPDX ID: AFL-1.2) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5916.name": "AFL-1.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5917.description": "Academic Free License v2.0(SPDX ID: AFL-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5917.name": "AFL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5918.description": "Academic Free License v2.1(SPDX ID: AFL-2.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5918.name": "AFL-2.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5919.description": "Academic Free License v3.0(SPDX ID: AFL-3.0) 라이선스에는 고지 의무, 네트워크 사용시 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5919.name": "AFL-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5920.description": "Afmparse License(SPDX ID: Afmparse) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5920.name": "Afmparse 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5922.description": "Affero General Public License v1.0 only(SPDX ID: AGPL-1.0-only) 라이선스에는 고지 의무, 네트워크 사용시 제약, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5922.name": "AGPL-1.0-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5923.description": "Affero General Public License v1.0 or later(SPDX ID: AGPL-1.0-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5923.name": "AGPL-1.0-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5925.description": "GNU Affero General Public License v3.0 only(SPDX ID: AGPL-3.0-only) 라이선스에는 고지 의무, 다수의 제약 사항, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5925.name": "AGPL-3.0-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5926.description": "GNU Affero General Public License v3.0 or later(SPDX ID: AGPL-3.0-or-later) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5926.name": "AGPL-3.0-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5927.description": "Aladdin Free Public License(SPDX ID: Aladdin) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5927.name": "Aladdin 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5928.description": "AMD`s plpa_map.c License(SPDX ID: AMDPLPA) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5928.name": "AMDPLPA 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5929.description": "Apple MIT License(SPDX ID: AML) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5929.name": "AML 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5930.description": "Academy of Motion Picture Arts and Sciences BSD(SPDX ID: AMPAS) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5930.name": "AMPAS 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5931.description": "ANTLR Software Rights Notice(SPDX ID: ANTLR-PD) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5931.name": "ANTLR-PD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5932.description": "ANTLR Software Rights Notice with license fallback(SPDX ID: ANTLR-PD-fallback) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5932.name": "ANTLR-PD-fallback 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5933.description": "Apache License 1.0(SPDX ID: Apache-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5933.name": "Apache-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5934.description": "Apache License 1.1(SPDX ID: Apache-1.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5934.name": "Apache-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5935.description": "Apache License 2.0(SPDX ID: Apache-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5935.name": "Apache-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5936.description": "Adobe Postscript AFM License(SPDX ID: APAFML) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5936.name": "APAFML 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5937.description": "Adaptive Public License 1.0(SPDX ID: APL-1.0) 라이선스에는 고지 의무, 특허 제약, 모듈 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5937.name": "APL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5938.description": "App::s2p License(SPDX ID: App-s2p) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5938.name": "App-s2p 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5939.description": "Apple Public Source License 1.0(SPDX ID: APSL-1.0) 라이선스에는 고지 의무, 특허 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5939.name": "APSL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5940.description": "Apple Public Source License 1.1(SPDX ID: APSL-1.1) 라이선스에는 고지 의무, 특허 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5940.name": "APSL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5941.description": "Apple Public Source License 1.2(SPDX ID: APSL-1.2) 라이선스에는 고지 의무, 특허 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5941.name": "APSL-1.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5942.description": "Apple Public Source License 2.0(SPDX ID: APSL-2.0) 라이선스에는 고지 의무, 다수의 제약 사항, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5942.name": "APSL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5943.description": "Arphic Public License(SPDX ID: Arphic-1999) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5943.name": "Arphic-1999 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5944.description": "Artistic License 1.0(SPDX ID: Artistic-1.0) 라이선스에는 고지 의무, 코드 공개 제약, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5944.name": "Artistic-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5945.description": "Artistic License 1.0 w/clause 8(SPDX ID: Artistic-1.0-cl8) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5945.name": "Artistic-1.0-cl8 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5946.description": "Artistic License 1.0 (Perl)(SPDX ID: Artistic-1.0-Perl) 라이선스에는 고지 의무, 코드 공개 제약, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5946.name": "Artistic-1.0-Perl 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5947.description": "Artistic License 2.0(SPDX ID: Artistic-2.0) 라이선스에는 고지 의무, 코드 공개 제약, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5947.name": "Artistic-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5948.description": "Baekmuk License(SPDX ID: Baekmuk) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5948.name": "Baekmuk 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5949.description": "Bahyph License(SPDX ID: Bahyph) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5949.name": "Bahyph 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5950.description": "Barr License(SPDX ID: Barr) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5950.name": "Barr 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5951.description": "Beerware License(SPDX ID: Beerware) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5951.name": "Beerware 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5952.description": "Bitstream Charter Font License(SPDX ID: Bitstream-Charter) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5952.name": "Bitstream-Charter 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5953.description": "Bitstream Vera Font License(SPDX ID: Bitstream-Vera) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5953.name": "Bitstream-Vera 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5954.description": "BitTorrent Open Source License v1.0(SPDX ID: BitTorrent-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5954.name": "BitTorrent-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5955.description": "BitTorrent Open Source License v1.1(SPDX ID: BitTorrent-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5955.name": "BitTorrent-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5956.description": "SQLite Blessing(SPDX ID: blessing) 라이선스는 사용이 자유로운 라이선스입니다.",
  "rule.sca.l.common.5956.name": "blessing 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5957.description": "Blue Oak Model License 1.0.0(SPDX ID: BlueOak-1.0.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5957.name": "BlueOak-1.0.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5958.description": "Borceux license(SPDX ID: Borceux) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5958.name": "Borceux 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5959.description": "Brian Gladman 3-Clause License(SPDX ID: Brian-Gladman-3-Clause) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5959.name": "Brian-Gladman-3-Clause 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5960.description": "BSD 1-Clause License(SPDX ID: BSD-1-Clause) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5960.name": "BSD-1-Clause 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5961.description": "BSD 2-Clause `Simplified` License(SPDX ID: BSD-2-Clause) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5961.name": "BSD-2-Clause 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5962.description": "BSD 2-Clause FreeBSD License(SPDX ID: BSD-2-Clause-FreeBSD) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5962.name": "BSD-2-Clause-FreeBSD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5963.description": "BSD 2-Clause NetBSD License(SPDX ID: BSD-2-Clause-NetBSD) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5963.name": "BSD-2-Clause-NetBSD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5964.description": "BSD-2-Clause Plus Patent License(SPDX ID: BSD-2-Clause-Patent) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5964.name": "BSD-2-Clause-Patent 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5965.description": "BSD 2-Clause with views sentence(SPDX ID: BSD-2-Clause-Views) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5965.name": "BSD-2-Clause-Views 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5966.description": "BSD 3-Clause `New` or `Revised` License(SPDX ID: BSD-3-Clause) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5966.name": "BSD-3-Clause 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5967.description": "BSD with attribution(SPDX ID: BSD-3-Clause-Attribution) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5967.name": "BSD-3-Clause-Attribution 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5968.description": "BSD 3-Clause Clear License(SPDX ID: BSD-3-Clause-Clear) 라이선스에는 고지 의무, 특허 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5968.name": "BSD-3-Clause-Clear 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5969.description": "Lawrence Berkeley National Labs BSD variant license(SPDX ID: BSD-3-Clause-LBNL) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5969.name": "BSD-3-Clause-LBNL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5970.description": "BSD 3-Clause Modification(SPDX ID: BSD-3-Clause-Modification) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5970.name": "BSD-3-Clause-Modification 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5971.description": "BSD 3-Clause No Military License(SPDX ID: BSD-3-Clause-No-Military-License) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5971.name": "BSD-3-Clause-No-Military-License 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5972.description": "BSD 3-Clause No Nuclear License(SPDX ID: BSD-3-Clause-No-Nuclear-License) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5972.name": "BSD-3-Clause-No-Nuclear-License 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5973.description": "BSD 3-Clause No Nuclear License 2014(SPDX ID: BSD-3-Clause-No-Nuclear-License-2014) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5973.name": "BSD-3-Clause-No-Nuclear-License-2014 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5974.description": "BSD 3-Clause No Nuclear Warranty(SPDX ID: BSD-3-Clause-No-Nuclear-Warranty) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5974.name": "BSD-3-Clause-No-Nuclear-Warranty 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5975.description": "BSD 3-Clause Open MPI variant(SPDX ID: BSD-3-Clause-Open-MPI) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5975.name": "BSD-3-Clause-Open-MPI 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5976.description": "BSD 4-Clause `Original` or `Old` License(SPDX ID: BSD-4-Clause) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5976.name": "BSD-4-Clause 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5977.description": "BSD 4 Clause Shortened(SPDX ID: BSD-4-Clause-Shortened) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5977.name": "BSD-4-Clause-Shortened 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5978.description": "BSD-4-Clause (University of California-Specific)(SPDX ID: BSD-4-Clause-UC) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5978.name": "BSD-4-Clause-UC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5979.description": "BSD 4.3 RENO License(SPDX ID: BSD-4.3RENO) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5979.name": "BSD-4.3RENO 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5980.description": "BSD 4.3 TAHOE License(SPDX ID: BSD-4.3TAHOE) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5980.name": "BSD-4.3TAHOE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5981.description": "BSD Advertising Acknowledgement License(SPDX ID: BSD-Advertising-Acknowledgement) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5981.name": "BSD-Advertising-Acknowledgement 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5982.description": "BSD with Attribution and HPND disclaimer(SPDX ID: BSD-Attribution-HPND-disclaimer) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5982.name": "BSD-Attribution-HPND-disclaimer 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5983.description": "BSD Protection License(SPDX ID: BSD-Protection) 라이선스에는 고지 의무, 재배포 형식 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5983.name": "BSD-Protection 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5984.description": "BSD Source Code Attribution(SPDX ID: BSD-Source-Code) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5984.name": "BSD-Source-Code 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5985.description": "Boost Software License 1.0(SPDX ID: BSL-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5985.name": "BSL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5986.description": "Business Source License 1.1(SPDX ID: BUSL-1.1) 라이선스에는 고지 의무, 계약이 필요한 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5986.name": "BUSL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5987.description": "bzip2 and libbzip2 License v1.0.5(SPDX ID: bzip2-1.0.5) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5987.name": "bzip2-1.0.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5988.description": "bzip2 and libbzip2 License v1.0.6(SPDX ID: bzip2-1.0.6) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5988.name": "bzip2-1.0.6 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5989.description": "Computational Use of Data Agreement v1.0(SPDX ID: C-UDA-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5989.name": "C-UDA-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5990.description": "Cryptographic Autonomy License 1.0(SPDX ID: CAL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5990.name": "CAL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5991.description": "Cryptographic Autonomy License 1.0 (Combined Work Exception)(SPDX ID: CAL-1.0-Combined-Work-Exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5991.name": "CAL-1.0-Combined-Work-Exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5992.description": "Caldera License(SPDX ID: Caldera) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5992.name": "Caldera 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5993.description": "Computer Associates Trusted Open Source License 1.1(SPDX ID: CATOSL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.5993.name": "CATOSL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5994.description": "Creative Commons Attribution 1.0 Generic(SPDX ID: CC-BY-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5994.name": "CC-BY-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5995.description": "Creative Commons Attribution 2.0 Generic(SPDX ID: CC-BY-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5995.name": "CC-BY-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5996.description": "Creative Commons Attribution 2.5 Generic(SPDX ID: CC-BY-2.5) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5996.name": "CC-BY-2.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5997.description": "Creative Commons Attribution 2.5 Australia(SPDX ID: CC-BY-2.5-AU) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5997.name": "CC-BY-2.5-AU 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5998.description": "Creative Commons Attribution 3.0 Unported(SPDX ID: CC-BY-3.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5998.name": "CC-BY-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.5999.description": "Creative Commons Attribution 3.0 Austria(SPDX ID: CC-BY-3.0-AT) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.5999.name": "CC-BY-3.0-AT 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6000.description": "Creative Commons Attribution 3.0 Germany(SPDX ID: CC-BY-3.0-DE) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6000.name": "CC-BY-3.0-DE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6001.description": "Creative Commons Attribution 3.0 IGO(SPDX ID: CC-BY-3.0-IGO) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6001.name": "CC-BY-3.0-IGO 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6002.description": "Creative Commons Attribution 3.0 Netherlands(SPDX ID: CC-BY-3.0-NL) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6002.name": "CC-BY-3.0-NL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6003.description": "Creative Commons Attribution 3.0 United States(SPDX ID: CC-BY-3.0-US) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6003.name": "CC-BY-3.0-US 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6004.description": "Creative Commons Attribution 4.0 International(SPDX ID: CC-BY-4.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6004.name": "CC-BY-4.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6005.description": "Creative Commons Attribution Non Commercial 1.0 Generic(SPDX ID: CC-BY-NC-1.0) 라이선스에는 고지 의무, 상업적 사용 불가능 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6005.name": "CC-BY-NC-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6006.description": "Creative Commons Attribution Non Commercial 2.0 Generic(SPDX ID: CC-BY-NC-2.0) 라이선스에는 고지 의무, 상업적 사용 불가능 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6006.name": "CC-BY-NC-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6007.description": "Creative Commons Attribution Non Commercial 2.5 Generic(SPDX ID: CC-BY-NC-2.5) 라이선스에는 고지 의무, 상업적 사용 불가능 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6007.name": "CC-BY-NC-2.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6008.description": "Creative Commons Attribution Non Commercial 3.0 Unported(SPDX ID: CC-BY-NC-3.0) 라이선스에는 고지 의무, 상업적 사용 불가능 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6008.name": "CC-BY-NC-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6009.description": "Creative Commons Attribution Non Commercial 3.0 Germany(SPDX ID: CC-BY-NC-3.0-DE) 라이선스에는 고지 의무, 상업적 사용 불가능 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6009.name": "CC-BY-NC-3.0-DE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6010.description": "Creative Commons Attribution Non Commercial 4.0 International(SPDX ID: CC-BY-NC-4.0) 라이선스에는 고지 의무, 상업적 사용 불가능 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6010.name": "CC-BY-NC-4.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6011.description": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic(SPDX ID: CC-BY-NC-ND-1.0) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6011.name": "CC-BY-NC-ND-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6012.description": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic(SPDX ID: CC-BY-NC-ND-2.0) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6012.name": "CC-BY-NC-ND-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6013.description": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic(SPDX ID: CC-BY-NC-ND-2.5) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6013.name": "CC-BY-NC-ND-2.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6014.description": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported(SPDX ID: CC-BY-NC-ND-3.0) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6014.name": "CC-BY-NC-ND-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6015.description": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany(SPDX ID: CC-BY-NC-ND-3.0-DE) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6015.name": "CC-BY-NC-ND-3.0-DE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6016.description": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO(SPDX ID: CC-BY-NC-ND-3.0-IGO) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6016.name": "CC-BY-NC-ND-3.0-IGO 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6017.description": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International(SPDX ID: CC-BY-NC-ND-4.0) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6017.name": "CC-BY-NC-ND-4.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6018.description": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic(SPDX ID: CC-BY-NC-SA-1.0) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6018.name": "CC-BY-NC-SA-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6019.description": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic(SPDX ID: CC-BY-NC-SA-2.0) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6019.name": "CC-BY-NC-SA-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6020.description": "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany(SPDX ID: CC-BY-NC-SA-2.0-DE) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6020.name": "CC-BY-NC-SA-2.0-DE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6021.description": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France(SPDX ID: CC-BY-NC-SA-2.0-FR) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6021.name": "CC-BY-NC-SA-2.0-FR 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6022.description": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales(SPDX ID: CC-BY-NC-SA-2.0-UK) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6022.name": "CC-BY-NC-SA-2.0-UK 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6023.description": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic(SPDX ID: CC-BY-NC-SA-2.5) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6023.name": "CC-BY-NC-SA-2.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6024.description": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported(SPDX ID: CC-BY-NC-SA-3.0) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6024.name": "CC-BY-NC-SA-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6025.description": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany(SPDX ID: CC-BY-NC-SA-3.0-DE) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6025.name": "CC-BY-NC-SA-3.0-DE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6026.description": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO(SPDX ID: CC-BY-NC-SA-3.0-IGO) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6026.name": "CC-BY-NC-SA-3.0-IGO 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6027.description": "Creative Commons Attribution Non Commercial Share Alike 4.0 International(SPDX ID: CC-BY-NC-SA-4.0) 라이선스에는 고지 의무, 상업적 사용 불가능 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6027.name": "CC-BY-NC-SA-4.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6028.description": "Creative Commons Attribution No Derivatives 1.0 Generic(SPDX ID: CC-BY-ND-1.0) 라이선스에는 고지 의무, 수정 금지 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6028.name": "CC-BY-ND-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6029.description": "Creative Commons Attribution No Derivatives 2.0 Generic(SPDX ID: CC-BY-ND-2.0) 라이선스에는 고지 의무, 수정 금지 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6029.name": "CC-BY-ND-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6030.description": "Creative Commons Attribution No Derivatives 2.5 Generic(SPDX ID: CC-BY-ND-2.5) 라이선스에는 고지 의무, 수정 금지 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6030.name": "CC-BY-ND-2.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6031.description": "Creative Commons Attribution No Derivatives 3.0 Unported(SPDX ID: CC-BY-ND-3.0) 라이선스에는 고지 의무, 수정 금지 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6031.name": "CC-BY-ND-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6032.description": "Creative Commons Attribution No Derivatives 3.0 Germany(SPDX ID: CC-BY-ND-3.0-DE) 라이선스에는 고지 의무, 수정 금지 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6032.name": "CC-BY-ND-3.0-DE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6033.description": "Creative Commons Attribution No Derivatives 4.0 International(SPDX ID: CC-BY-ND-4.0) 라이선스에는 고지 의무, 수정 금지 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6033.name": "CC-BY-ND-4.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6034.description": "Creative Commons Attribution Share Alike 1.0 Generic(SPDX ID: CC-BY-SA-1.0) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6034.name": "CC-BY-SA-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6035.description": "Creative Commons Attribution Share Alike 2.0 Generic(SPDX ID: CC-BY-SA-2.0) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6035.name": "CC-BY-SA-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6036.description": "Creative Commons Attribution Share Alike 2.0 England and Wales(SPDX ID: CC-BY-SA-2.0-UK) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6036.name": "CC-BY-SA-2.0-UK 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6037.description": "Creative Commons Attribution Share Alike 2.1 Japan(SPDX ID: CC-BY-SA-2.1-JP) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6037.name": "CC-BY-SA-2.1-JP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6038.description": "Creative Commons Attribution Share Alike 2.5 Generic(SPDX ID: CC-BY-SA-2.5) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6038.name": "CC-BY-SA-2.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6039.description": "Creative Commons Attribution Share Alike 3.0 Unported(SPDX ID: CC-BY-SA-3.0) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6039.name": "CC-BY-SA-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6040.description": "Creative Commons Attribution Share Alike 3.0 Austria(SPDX ID: CC-BY-SA-3.0-AT) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6040.name": "CC-BY-SA-3.0-AT 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6041.description": "Creative Commons Attribution Share Alike 3.0 Germany(SPDX ID: CC-BY-SA-3.0-DE) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6041.name": "CC-BY-SA-3.0-DE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6042.description": "Creative Commons Attribution Share Alike 4.0 International(SPDX ID: CC-BY-SA-4.0) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6042.name": "CC-BY-SA-4.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6043.description": "Creative Commons Public Domain Dedication and Certification(SPDX ID: CC-PDDC) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6043.name": "CC-PDDC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6044.description": "Creative Commons Zero v1.0 Universal(SPDX ID: CC0-1.0) 라이선스는 사용이 자유로운 라이선스입니다.",
  "rule.sca.l.common.6044.name": "CC0-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6045.description": "Common Development and Distribution License 1.0(SPDX ID: CDDL-1.0) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6045.name": "CDDL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6046.description": "Common Development and Distribution License 1.1(SPDX ID: CDDL-1.1) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6046.name": "CDDL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6047.description": "Common Documentation License 1.0(SPDX ID: CDL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6047.name": "CDL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6048.description": "Community Data License Agreement Permissive 1.0(SPDX ID: CDLA-Permissive-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6048.name": "CDLA-Permissive-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6049.description": "Community Data License Agreement Permissive 2.0(SPDX ID: CDLA-Permissive-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6049.name": "CDLA-Permissive-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6050.description": "Community Data License Agreement Sharing 1.0(SPDX ID: CDLA-Sharing-1.0) 라이선스에는 고지 의무, 데이터 자체 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6050.name": "CDLA-Sharing-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6051.description": "CeCILL Free Software License Agreement v1.0(SPDX ID: CECILL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6051.name": "CECILL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6052.description": "CeCILL Free Software License Agreement v1.1(SPDX ID: CECILL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6052.name": "CECILL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6053.description": "CeCILL Free Software License Agreement v2.0(SPDX ID: CECILL-2.0) 라이선스에는 고지 의무, 네트워크 사용시 제약, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6053.name": "CECILL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6054.description": "CeCILL Free Software License Agreement v2.1(SPDX ID: CECILL-2.1) 라이선스에는 고지 의무, 네트워크 사용시 제약, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6054.name": "CECILL-2.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6055.description": "CeCILL-B Free Software License Agreement(SPDX ID: CECILL-B) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6055.name": "CECILL-B 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6056.description": "CeCILL-C Free Software License Agreement(SPDX ID: CECILL-C) 라이선스에는 고지 의무, 네트워크 사용시 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6056.name": "CECILL-C 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6057.description": "CERN Open Hardware Licence v1.1(SPDX ID: CERN-OHL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6057.name": "CERN-OHL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6058.description": "CERN Open Hardware Licence v1.2(SPDX ID: CERN-OHL-1.2) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6058.name": "CERN-OHL-1.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6059.description": "CERN Open Hardware Licence Version 2 - Permissive(SPDX ID: CERN-OHL-P-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6059.name": "CERN-OHL-P-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6060.description": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal(SPDX ID: CERN-OHL-S-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6060.name": "CERN-OHL-S-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6061.description": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal(SPDX ID: CERN-OHL-W-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6061.name": "CERN-OHL-W-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6062.description": "CFITSIO License(SPDX ID: CFITSIO) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6062.name": "CFITSIO 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6063.description": "Checkmk License(SPDX ID: checkmk) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6063.name": "checkmk 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6064.description": "Clarified Artistic License(SPDX ID: ClArtistic) 라이선스에는 고지 의무, 코드 공개 제약, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6064.name": "ClArtistic 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6065.description": "Clips License(SPDX ID: Clips) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6065.name": "Clips 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6066.description": "CMU Mach License(SPDX ID: CMU-Mach) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6066.name": "CMU-Mach 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6067.description": "CNRI Jython License(SPDX ID: CNRI-Jython) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6067.name": "CNRI-Jython 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6068.description": "CNRI Python License(SPDX ID: CNRI-Python) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6068.name": "CNRI-Python 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6069.description": "CNRI Python Open Source GPL Compatible License Agreement(SPDX ID: CNRI-Python-GPL-Compatible) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6069.name": "CNRI-Python-GPL-Compatible 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6070.description": "Copyfree Open Innovation License(SPDX ID: COIL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6070.name": "COIL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6071.description": "Community Specification License 1.0(SPDX ID: Community-Spec-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6071.name": "Community-Spec-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6072.description": "Condor Public License v1.1(SPDX ID: Condor-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6072.name": "Condor-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6073.description": "copyleft-next 0.3.0(SPDX ID: copyleft-next-0.3.0) 라이선스에는 고지 의무, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6073.name": "copyleft-next-0.3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6074.description": "copyleft-next 0.3.1(SPDX ID: copyleft-next-0.3.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6074.name": "copyleft-next-0.3.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6075.description": "Cornell Lossless JPEG License(SPDX ID: Cornell-Lossless-JPEG) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6075.name": "Cornell-Lossless-JPEG 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6076.description": "Common Public Attribution License 1.0(SPDX ID: CPAL-1.0) 라이선스에는 고지 의무, 네트워크 사용시 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6076.name": "CPAL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6077.description": "Common Public License 1.0(SPDX ID: CPL-1.0) 라이선스에는 고지 의무, 모듈 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6077.name": "CPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6078.description": "Code Project Open License 1.02(SPDX ID: CPOL-1.02) 라이선스에는 고지 의무, 비용 청구 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6078.name": "CPOL-1.02 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6079.description": "Crossword License(SPDX ID: Crossword) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6079.name": "Crossword 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6080.description": "CrystalStacker License(SPDX ID: CrystalStacker) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6080.name": "CrystalStacker 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6081.description": "CUA Office Public License v1.0(SPDX ID: CUA-OPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6081.name": "CUA-OPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6082.description": "Cube License(SPDX ID: Cube) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6082.name": "Cube 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6083.description": "curl License(SPDX ID: curl) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6083.name": "curl 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6084.description": "Deutsche Freie Software Lizenz(SPDX ID: D-FSL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6084.name": "D-FSL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6085.description": "diffmark license(SPDX ID: diffmark) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6085.name": "diffmark 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6086.description": "Data licence Germany – attribution – version 2.0(SPDX ID: DL-DE-BY-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6086.name": "DL-DE-BY-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6087.description": "DOC License(SPDX ID: DOC) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6087.name": "DOC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6088.description": "Dotseqn License(SPDX ID: Dotseqn) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6088.name": "Dotseqn 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6089.description": "Detection Rule License 1.0(SPDX ID: DRL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6089.name": "DRL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6090.description": "DSDP License(SPDX ID: DSDP) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6090.name": "DSDP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6091.description": "dvipdfm License(SPDX ID: dvipdfm) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6091.name": "dvipdfm 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6092.description": "Educational Community License v1.0(SPDX ID: ECL-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6092.name": "ECL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6093.description": "Educational Community License v2.0(SPDX ID: ECL-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6093.name": "ECL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6094.description": "eCos license version 2.0(SPDX ID: eCos-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6094.name": "eCos-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6095.description": "Eiffel Forum License v1.0(SPDX ID: EFL-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6095.name": "EFL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6096.description": "Eiffel Forum License v2.0(SPDX ID: EFL-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6096.name": "EFL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6097.description": "eGenix.com Public License 1.1.0(SPDX ID: eGenix) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6097.name": "eGenix 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6098.description": "Elastic License 2.0(SPDX ID: Elastic-2.0) 라이선스에는 고지 의무, 목적 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6098.name": "Elastic-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6099.description": "Entessa Public License v1.0(SPDX ID: Entessa) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6099.name": "Entessa 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6100.description": "EPICS Open License(SPDX ID: EPICS) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6100.name": "EPICS 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6101.description": "Eclipse Public License 1.0(SPDX ID: EPL-1.0) 라이선스에는 고지 의무, 모듈 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6101.name": "EPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6102.description": "Eclipse Public License 2.0(SPDX ID: EPL-2.0) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6102.name": "EPL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6103.description": "Erlang Public License v1.1(SPDX ID: ErlPL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6103.name": "ErlPL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6104.description": "Etalab Open License 2.0(SPDX ID: etalab-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6104.name": "etalab-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6105.description": "EU DataGrid Software License(SPDX ID: EUDatagrid) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6105.name": "EUDatagrid 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6106.description": "European Union Public License 1.0(SPDX ID: EUPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6106.name": "EUPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6107.description": "European Union Public License 1.1(SPDX ID: EUPL-1.1) 라이선스에는 고지 의무, 네트워크 사용시 제약, 파생 저작물의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6107.name": "EUPL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6108.description": "European Union Public License 1.2(SPDX ID: EUPL-1.2) 라이선스에는 고지 의무, 네트워크 사용시 제약, 파생 저작물의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6108.name": "EUPL-1.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6109.description": "Eurosym License(SPDX ID: Eurosym) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6109.name": "Eurosym 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6110.description": "Fair License(SPDX ID: Fair) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6110.name": "Fair 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6111.description": "Fraunhofer FDK AAC Codec Library(SPDX ID: FDK-AAC) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6111.name": "FDK-AAC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6112.description": "Frameworx Open License 1.0(SPDX ID: Frameworx-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6112.name": "Frameworx-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6113.description": "FreeBSD Documentation License(SPDX ID: FreeBSD-DOC) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6113.name": "FreeBSD-DOC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6114.description": "FreeImage Public License v1.0(SPDX ID: FreeImage) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6114.name": "FreeImage 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6115.description": "FSF All Permissive License(SPDX ID: FSFAP) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6115.name": "FSFAP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6116.description": "FSF Unlimited License(SPDX ID: FSFUL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6116.name": "FSFUL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6117.description": "FSF Unlimited License (with License Retention)(SPDX ID: FSFULLR) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6117.name": "FSFULLR 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6118.description": "FSF Unlimited License (With License Retention and Warranty Disclaimer)(SPDX ID: FSFULLRWD) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6118.name": "FSFULLRWD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6119.description": "Freetype Project License(SPDX ID: FTL) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6119.name": "FTL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6120.description": "GD License(SPDX ID: GD) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6120.name": "GD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6122.description": "GNU Free Documentation License v1.1 only - invariants(SPDX ID: GFDL-1.1-invariants-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6122.name": "GFDL-1.1-invariants-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6123.description": "GNU Free Documentation License v1.1 or later - invariants(SPDX ID: GFDL-1.1-invariants-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6123.name": "GFDL-1.1-invariants-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6124.description": "GNU Free Documentation License v1.1 only - no invariants(SPDX ID: GFDL-1.1-no-invariants-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6124.name": "GFDL-1.1-no-invariants-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6125.description": "GNU Free Documentation License v1.1 or later - no invariants(SPDX ID: GFDL-1.1-no-invariants-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6125.name": "GFDL-1.1-no-invariants-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6126.description": "GNU Free Documentation License v1.1 only(SPDX ID: GFDL-1.1-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6126.name": "GFDL-1.1-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6127.description": "GNU Free Documentation License v1.1 or later(SPDX ID: GFDL-1.1-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6127.name": "GFDL-1.1-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6129.description": "GNU Free Documentation License v1.2 only - invariants(SPDX ID: GFDL-1.2-invariants-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6129.name": "GFDL-1.2-invariants-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6130.description": "GNU Free Documentation License v1.2 or later - invariants(SPDX ID: GFDL-1.2-invariants-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6130.name": "GFDL-1.2-invariants-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6131.description": "GNU Free Documentation License v1.2 only - no invariants(SPDX ID: GFDL-1.2-no-invariants-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6131.name": "GFDL-1.2-no-invariants-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6132.description": "GNU Free Documentation License v1.2 or later - no invariants(SPDX ID: GFDL-1.2-no-invariants-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6132.name": "GFDL-1.2-no-invariants-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6133.description": "GNU Free Documentation License v1.2 only(SPDX ID: GFDL-1.2-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6133.name": "GFDL-1.2-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6134.description": "GNU Free Documentation License v1.2 or later(SPDX ID: GFDL-1.2-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6134.name": "GFDL-1.2-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6136.description": "GNU Free Documentation License v1.3 only - invariants(SPDX ID: GFDL-1.3-invariants-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6136.name": "GFDL-1.3-invariants-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6137.description": "GNU Free Documentation License v1.3 or later - invariants(SPDX ID: GFDL-1.3-invariants-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6137.name": "GFDL-1.3-invariants-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6138.description": "GNU Free Documentation License v1.3 only - no invariants(SPDX ID: GFDL-1.3-no-invariants-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6138.name": "GFDL-1.3-no-invariants-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6139.description": "GNU Free Documentation License v1.3 or later - no invariants(SPDX ID: GFDL-1.3-no-invariants-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6139.name": "GFDL-1.3-no-invariants-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6140.description": "GNU Free Documentation License v1.3 only(SPDX ID: GFDL-1.3-only) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6140.name": "GFDL-1.3-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6141.description": "GNU Free Documentation License v1.3 or later(SPDX ID: GFDL-1.3-or-later) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6141.name": "GFDL-1.3-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6142.description": "Giftware License(SPDX ID: Giftware) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6142.name": "Giftware 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6143.description": "GL2PS License(SPDX ID: GL2PS) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6143.name": "GL2PS 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6144.description": "3dfx Glide License(SPDX ID: Glide) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6144.name": "Glide 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6145.description": "Glulxe License(SPDX ID: Glulxe) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6145.name": "Glulxe 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6146.description": "Good Luck With That Public License(SPDX ID: GLWTPL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6146.name": "GLWTPL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6147.description": "gnuplot License(SPDX ID: gnuplot) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6147.name": "gnuplot 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6149.description": "GNU General Public License v1.0 only(SPDX ID: GPL-1.0-only) 라이선스에는 고지 의무, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6149.name": "GPL-1.0-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6150.description": "GNU General Public License v1.0 or later(SPDX ID: GPL-1.0-or-later) 라이선스에는 고지 의무, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6150.name": "GPL-1.0-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6153.description": "GNU General Public License v2.0 only(SPDX ID: GPL-2.0-only) 라이선스에는 고지 의무, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6153.name": "GPL-2.0-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6154.description": "GNU General Public License v2.0 or later(SPDX ID: GPL-2.0-or-later) 라이선스에는 고지 의무, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6154.name": "GPL-2.0-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6155.description": "GNU General Public License v2.0 w/Autoconf exception(SPDX ID: GPL-2.0-with-autoconf-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6155.name": "GPL-2.0-with-autoconf-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6156.description": "GNU General Public License v2.0 w/Bison exception(SPDX ID: GPL-2.0-with-bison-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6156.name": "GPL-2.0-with-bison-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6157.description": "GNU General Public License v2.0 w/Classpath exception(SPDX ID: GPL-2.0-with-classpath-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6157.name": "GPL-2.0-with-classpath-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6158.description": "GNU General Public License v2.0 w/Font exception(SPDX ID: GPL-2.0-with-font-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6158.name": "GPL-2.0-with-font-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6159.description": "GNU General Public License v2.0 w/GCC Runtime Library exception(SPDX ID: GPL-2.0-with-GCC-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6159.name": "GPL-2.0-with-GCC-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6162.description": "GNU General Public License v3.0 only(SPDX ID: GPL-3.0-only) 라이선스에는 고지 의무, 설치 정보 제공 의무 제약, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6162.name": "GPL-3.0-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6163.description": "GNU General Public License v3.0 or later(SPDX ID: GPL-3.0-or-later) 라이선스에는 고지 의무, 설치 정보 제공 의무 제약, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6163.name": "GPL-3.0-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6164.description": "GNU General Public License v3.0 w/Autoconf exception(SPDX ID: GPL-3.0-with-autoconf-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6164.name": "GPL-3.0-with-autoconf-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6165.description": "GNU General Public License v3.0 w/GCC Runtime Library exception(SPDX ID: GPL-3.0-with-GCC-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6165.name": "GPL-3.0-with-GCC-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6167.description": "Graphics Gems License(SPDX ID: Graphics-Gems) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6167.name": "Graphics-Gems 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6168.description": "gSOAP Public License v1.3b(SPDX ID: gSOAP-1.3b) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6168.name": "gSOAP-1.3b 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6169.description": "Haskell Language Report License(SPDX ID: HaskellReport) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6169.name": "HaskellReport 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6170.description": "Hippocratic License 2.1(SPDX ID: Hippocratic-2.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6170.name": "Hippocratic-2.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6171.description": "Hewlett-Packard 1986 License(SPDX ID: HP-1986) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6171.name": "HP-1986 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6172.description": "Historical Permission Notice and Disclaimer(SPDX ID: HPND) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6172.name": "HPND 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6173.description": "HPND with US Government export control warning(SPDX ID: HPND-export-US) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6173.name": "HPND-export-US 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6174.description": "Historical Permission Notice and Disclaimer - Markus Kuhn variant(SPDX ID: HPND-Markus-Kuhn) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6174.name": "HPND-Markus-Kuhn 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6175.description": "Historical Permission Notice and Disclaimer - sell variant(SPDX ID: HPND-sell-variant) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6175.name": "HPND-sell-variant 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6176.description": "HPND sell variant with MIT disclaimer(SPDX ID: HPND-sell-variant-MIT-disclaimer) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6176.name": "HPND-sell-variant-MIT-disclaimer 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6177.description": "HTML Tidy License(SPDX ID: HTMLTIDY) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6177.name": "HTMLTIDY 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6178.description": "IBM PowerPC Initialization and Boot Software(SPDX ID: IBM-pibs) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6178.name": "IBM-pibs 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6179.description": "ICU License(SPDX ID: ICU) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6179.name": "ICU 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6180.description": "IEC Code Components End-user licence agreement(SPDX ID: IEC-Code-Components-EULA) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6180.name": "IEC-Code-Components-EULA 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6181.description": "Independent JPEG Group License(SPDX ID: IJG) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6181.name": "IJG 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6182.description": "Independent JPEG Group License - short(SPDX ID: IJG-short) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6182.name": "IJG-short 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6183.description": "ImageMagick License(SPDX ID: ImageMagick) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6183.name": "ImageMagick 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6184.description": "iMatix Standard Function Library Agreement(SPDX ID: iMatix) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6184.name": "iMatix 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6185.description": "Imlib2 License(SPDX ID: Imlib2) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6185.name": "Imlib2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6186.description": "Info-ZIP License(SPDX ID: Info-ZIP) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6186.name": "Info-ZIP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6187.description": "Intel Open Source License(SPDX ID: Intel) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6187.name": "Intel 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6188.description": "Intel ACPI Software License Agreement(SPDX ID: Intel-ACPI) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6188.name": "Intel-ACPI 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6189.description": "Interbase Public License v1.0(SPDX ID: Interbase-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6189.name": "Interbase-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6190.description": "IPA Font License(SPDX ID: IPA) 라이선스에는 고지 의무, 다수의 제약 사항이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6190.name": "IPA 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6191.description": "IBM Public License v1.0(SPDX ID: IPL-1.0) 라이선스에는 고지 의무, 모듈 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6191.name": "IPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6192.description": "ISC License(SPDX ID: ISC) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6192.name": "ISC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6193.description": "Jam License(SPDX ID: Jam) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6193.name": "Jam 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6194.description": "JasPer License(SPDX ID: JasPer-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6194.name": "JasPer-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6195.description": "JPL Image Use Policy(SPDX ID: JPL-image) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6195.name": "JPL-image 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6196.description": "Japan Network Information Center License(SPDX ID: JPNIC) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6196.name": "JPNIC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6197.description": "JSON License(SPDX ID: JSON) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6197.name": "JSON 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6198.description": "Kazlib License(SPDX ID: Kazlib) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6198.name": "Kazlib 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6199.description": "KiCad Libraries Exception(SPDX ID: KiCad-libraries-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6199.name": "KiCad-libraries-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6200.description": "Knuth CTAN License(SPDX ID: Knuth-CTAN) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6200.name": "Knuth-CTAN 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6201.description": "Licence Art Libre 1.2(SPDX ID: LAL-1.2) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6201.name": "LAL-1.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6202.description": "Licence Art Libre 1.3(SPDX ID: LAL-1.3) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6202.name": "LAL-1.3 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6203.description": "Latex2e License(SPDX ID: Latex2e) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6203.name": "Latex2e 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6204.description": "Leptonica License(SPDX ID: Leptonica) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6204.name": "Leptonica 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6205.description": "GNU Library General Public License v2 only(SPDX ID: LGPL-2.0-only) 라이선스에는 고지 의무, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6205.name": "LGPL-2.0-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6206.description": "GNU Library General Public License v2 or later(SPDX ID: LGPL-2.0-or-later) 라이선스에는 고지 의무, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6206.name": "LGPL-2.0-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6209.description": "GNU Lesser General Public License v2.1 only(SPDX ID: LGPL-2.1-only) 라이선스에는 고지 의무, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6209.name": "LGPL-2.1-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6210.description": "GNU Lesser General Public License v2.1 or later(SPDX ID: LGPL-2.1-or-later) 라이선스에는 고지 의무, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6210.name": "LGPL-2.1-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6213.description": "GNU Lesser General Public License v3.0 only(SPDX ID: LGPL-3.0-only) 라이선스에는 고지 의무, 설치 정보 제공 의무 제약, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6213.name": "LGPL-3.0-only 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6214.description": "GNU Lesser General Public License v3.0 or later(SPDX ID: LGPL-3.0-or-later) 라이선스에는 고지 의무, 설치 정보 제공 의무 제약, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6214.name": "LGPL-3.0-or-later 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6216.description": "Lesser General Public License For Linguistic Resources(SPDX ID: LGPLLR) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6216.name": "LGPLLR 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6217.description": "libpng License(SPDX ID: Libpng) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6217.name": "Libpng 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6218.description": "PNG Reference Library version 2(SPDX ID: libpng-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6218.name": "libpng-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6219.description": "libselinux public domain notice(SPDX ID: libselinux-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6219.name": "libselinux-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6220.description": "libtiff License(SPDX ID: libtiff) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6220.name": "libtiff 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6221.description": "libutil David Nugent License(SPDX ID: libutil-David-Nugent) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6221.name": "libutil-David-Nugent 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6222.description": "Licence Libre du Québec – Permissive version 1.1(SPDX ID: LiLiQ-P-1.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6222.name": "LiLiQ-P-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6223.description": "Licence Libre du Québec – Réciprocité version 1.1(SPDX ID: LiLiQ-R-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6223.name": "LiLiQ-R-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6224.description": "Licence Libre du Québec – Réciprocité forte version 1.1(SPDX ID: LiLiQ-Rplus-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6224.name": "LiLiQ-Rplus-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6225.description": "Linux man-pages Copyleft(SPDX ID: Linux-man-pages-copyleft) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6225.name": "Linux-man-pages-copyleft 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6226.description": "Linux Kernel Variant of OpenIB.org license(SPDX ID: Linux-OpenIB) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6226.name": "Linux-OpenIB 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6227.description": "Common Lisp LOOP License(SPDX ID: LOOP) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6227.name": "LOOP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6228.description": "Lucent Public License Version 1.0(SPDX ID: LPL-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6228.name": "LPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6229.description": "Lucent Public License v1.02(SPDX ID: LPL-1.02) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6229.name": "LPL-1.02 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6230.description": "LaTeX Project Public License v1.0(SPDX ID: LPPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6230.name": "LPPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6231.description": "LaTeX Project Public License v1.1(SPDX ID: LPPL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6231.name": "LPPL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6232.description": "LaTeX Project Public License v1.2(SPDX ID: LPPL-1.2) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6232.name": "LPPL-1.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6233.description": "LaTeX Project Public License v1.3a(SPDX ID: LPPL-1.3a) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6233.name": "LPPL-1.3a 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6234.description": "LaTeX Project Public License v1.3c(SPDX ID: LPPL-1.3c) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6234.name": "LPPL-1.3c 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6235.description": "LZMA SDK License (versions 9.11 to 9.20)(SPDX ID: LZMA-SDK-9.11-to-9.20) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6235.name": "LZMA-SDK-9.11-to-9.20 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6236.description": "LZMA SDK License (versions 9.22 and beyond)(SPDX ID: LZMA-SDK-9.22) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6236.name": "LZMA-SDK-9.22 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6237.description": "MakeIndex License(SPDX ID: MakeIndex) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6237.name": "MakeIndex 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6238.description": "Martin Birgmeier License(SPDX ID: Martin-Birgmeier) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6238.name": "Martin-Birgmeier 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6239.description": "Minpack License(SPDX ID: Minpack) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6239.name": "Minpack 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6240.description": "The MirOS Licence(SPDX ID: MirOS) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6240.name": "MirOS 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6241.description": "MIT License(SPDX ID: MIT) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6241.name": "MIT 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6242.description": "MIT No Attribution(SPDX ID: MIT-0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6242.name": "MIT-0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6243.description": "Enlightenment License (e16)(SPDX ID: MIT-advertising) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6243.name": "MIT-advertising 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6244.description": "CMU License(SPDX ID: MIT-CMU) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6244.name": "MIT-CMU 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6245.description": "enna License(SPDX ID: MIT-enna) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6245.name": "MIT-enna 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6246.description": "feh License(SPDX ID: MIT-feh) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6246.name": "MIT-feh 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6247.description": "MIT License Modern Variant(SPDX ID: MIT-Modern-Variant) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6247.name": "MIT-Modern-Variant 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6248.description": "MIT Open Group variant(SPDX ID: MIT-open-group) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6248.name": "MIT-open-group 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6249.description": "MIT Tom Wu Variant(SPDX ID: MIT-Wu) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6249.name": "MIT-Wu 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6250.description": "MIT +no-false-attribs license(SPDX ID: MITNFA) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6250.name": "MITNFA 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6251.description": "Motosoto License(SPDX ID: Motosoto) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6251.name": "Motosoto 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6252.description": "mpi Permissive License(SPDX ID: mpi-permissive) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6252.name": "mpi-permissive 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6253.description": "mpich2 License(SPDX ID: mpich2) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6253.name": "mpich2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6254.description": "Mozilla Public License 1.0(SPDX ID: MPL-1.0) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6254.name": "MPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6255.description": "Mozilla Public License 1.1(SPDX ID: MPL-1.1) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6255.name": "MPL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6256.description": "Mozilla Public License 2.0(SPDX ID: MPL-2.0) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6256.name": "MPL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6257.description": "Mozilla Public License 2.0 (no copyleft exception)(SPDX ID: MPL-2.0-no-copyleft-exception) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6257.name": "MPL-2.0-no-copyleft-exception 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6259.description": "mplus Font License(SPDX ID: mplus) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6259.name": "mplus 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6260.description": "Microsoft Limited Public License(SPDX ID: MS-LPL) 라이선스에는 고지 의무, 플랫폼 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6260.name": "MS-LPL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6261.description": "Microsoft Public License(SPDX ID: MS-PL) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6261.name": "MS-PL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6262.description": "Microsoft Reciprocal License(SPDX ID: MS-RL) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6262.name": "MS-RL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6263.description": "Matrix Template Library License(SPDX ID: MTLL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6263.name": "MTLL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6264.description": "Mulan Permissive Software License, Version 1(SPDX ID: MulanPSL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6264.name": "MulanPSL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6265.description": "Mulan Permissive Software License, Version 2(SPDX ID: MulanPSL-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6265.name": "MulanPSL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6266.description": "Multics License(SPDX ID: Multics) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6266.name": "Multics 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6267.description": "Mup License(SPDX ID: Mup) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6267.name": "Mup 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6268.description": "Nara Institute of Science and Technology License (2003)(SPDX ID: NAIST-2003) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6268.name": "NAIST-2003 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6269.description": "NASA Open Source Agreement 1.3(SPDX ID: NASA-1.3) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6269.name": "NASA-1.3 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6270.description": "Naumen Public License(SPDX ID: Naumen) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6270.name": "Naumen 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6271.description": "Net Boolean Public License v1(SPDX ID: NBPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6271.name": "NBPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6272.description": "Non-Commercial Government Licence(SPDX ID: NCGL-UK-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6272.name": "NCGL-UK-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6273.description": "University of Illinois/NCSA Open Source License(SPDX ID: NCSA) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6273.name": "NCSA 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6274.description": "Net-SNMP License(SPDX ID: Net-SNMP) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6274.name": "Net-SNMP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6275.description": "NetCDF license(SPDX ID: NetCDF) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6275.name": "NetCDF 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6276.description": "Newsletr License(SPDX ID: Newsletr) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6276.name": "Newsletr 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6277.description": "Nethack General Public License(SPDX ID: NGPL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6277.name": "NGPL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6278.description": "NICTA Public Software License, Version 1.0(SPDX ID: NICTA-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6278.name": "NICTA-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6279.description": "NIST Public Domain Notice(SPDX ID: NIST-PD) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6279.name": "NIST-PD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6280.description": "NIST Public Domain Notice with license fallback(SPDX ID: NIST-PD-fallback) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6280.name": "NIST-PD-fallback 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6281.description": "Norwegian Licence for Open Government Data (NLOD) 1.0(SPDX ID: NLOD-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6281.name": "NLOD-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6282.description": "Norwegian Licence for Open Government Data (NLOD) 2.0(SPDX ID: NLOD-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6282.name": "NLOD-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6283.description": "No Limit Public License(SPDX ID: NLPL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6283.name": "NLPL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6284.description": "Nokia Open Source License(SPDX ID: Nokia) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6284.name": "Nokia 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6285.description": "Netizen Open Source License(SPDX ID: NOSL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6285.name": "NOSL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6286.description": "Noweb License(SPDX ID: Noweb) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6286.name": "Noweb 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6287.description": "Netscape Public License v1.0(SPDX ID: NPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6287.name": "NPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6288.description": "Netscape Public License v1.1(SPDX ID: NPL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6288.name": "NPL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6289.description": "Non-Profit Open Software License 3.0(SPDX ID: NPOSL-3.0) 라이선스에는 고지 의무, 다수의 제약 사항, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6289.name": "NPOSL-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6290.description": "NRL License(SPDX ID: NRL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6290.name": "NRL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6291.description": "NTP License(SPDX ID: NTP) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6291.name": "NTP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6292.description": "NTP No Attribution(SPDX ID: NTP-0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6292.name": "NTP-0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6293.description": "Nunit License(SPDX ID: Nunit) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6293.name": "Nunit 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6294.description": "Open Use of Data Agreement v1.0(SPDX ID: O-UDA-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6294.name": "O-UDA-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6295.description": "Open CASCADE Technology Public License(SPDX ID: OCCT-PL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6295.name": "OCCT-PL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6296.description": "OCLC Research Public License 2.0(SPDX ID: OCLC-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6296.name": "OCLC-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6297.description": "Open Data Commons Open Database License v1.0(SPDX ID: ODbL-1.0) 라이선스에는 고지 의무, 데이터 자체 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6297.name": "ODbL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6298.description": "Open Data Commons Attribution License v1.0(SPDX ID: ODC-By-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6298.name": "ODC-By-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6299.description": "OFFIS License(SPDX ID: OFFIS) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6299.name": "OFFIS 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6300.description": "SIL Open Font License 1.0(SPDX ID: OFL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6300.name": "OFL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6301.description": "SIL Open Font License 1.0 with no Reserved Font Name(SPDX ID: OFL-1.0-no-RFN) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6301.name": "OFL-1.0-no-RFN 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6302.description": "SIL Open Font License 1.0 with Reserved Font Name(SPDX ID: OFL-1.0-RFN) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6302.name": "OFL-1.0-RFN 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6303.description": "SIL Open Font License 1.1(SPDX ID: OFL-1.1) 라이선스에는 고지 의무, 비용 청구 제약이 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6303.name": "OFL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6304.description": "SIL Open Font License 1.1 with no Reserved Font Name(SPDX ID: OFL-1.1-no-RFN) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6304.name": "OFL-1.1-no-RFN 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6305.description": "SIL Open Font License 1.1 with Reserved Font Name(SPDX ID: OFL-1.1-RFN) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6305.name": "OFL-1.1-RFN 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6306.description": "OGC Software License, Version 1.0(SPDX ID: OGC-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6306.name": "OGC-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6307.description": "Taiwan Open Government Data License, version 1.0(SPDX ID: OGDL-Taiwan-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6307.name": "OGDL-Taiwan-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6308.description": "Open Government Licence - Canada(SPDX ID: OGL-Canada-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6308.name": "OGL-Canada-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6309.description": "Open Government Licence v1.0(SPDX ID: OGL-UK-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6309.name": "OGL-UK-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6310.description": "Open Government Licence v2.0(SPDX ID: OGL-UK-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6310.name": "OGL-UK-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6311.description": "Open Government Licence v3.0(SPDX ID: OGL-UK-3.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6311.name": "OGL-UK-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6312.description": "Open Group Test Suite License(SPDX ID: OGTSL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6312.name": "OGTSL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6313.description": "Open LDAP Public License v1.1(SPDX ID: OLDAP-1.1) 라이선스에는 고지 의무, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6313.name": "OLDAP-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6314.description": "Open LDAP Public License v1.2(SPDX ID: OLDAP-1.2) 라이선스에는 고지 의무, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6314.name": "OLDAP-1.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6315.description": "Open LDAP Public License v1.3(SPDX ID: OLDAP-1.3) 라이선스에는 고지 의무, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6315.name": "OLDAP-1.3 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6316.description": "Open LDAP Public License v1.4(SPDX ID: OLDAP-1.4) 라이선스에는 고지 의무, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6316.name": "OLDAP-1.4 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6317.description": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)(SPDX ID: OLDAP-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6317.name": "OLDAP-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6318.description": "Open LDAP Public License v2.0.1(SPDX ID: OLDAP-2.0.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6318.name": "OLDAP-2.0.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6319.description": "Open LDAP Public License v2.1(SPDX ID: OLDAP-2.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6319.name": "OLDAP-2.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6320.description": "Open LDAP Public License v2.2(SPDX ID: OLDAP-2.2) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6320.name": "OLDAP-2.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6321.description": "Open LDAP Public License v2.2.1(SPDX ID: OLDAP-2.2.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6321.name": "OLDAP-2.2.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6322.description": "Open LDAP Public License 2.2.2(SPDX ID: OLDAP-2.2.2) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6322.name": "OLDAP-2.2.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6323.description": "Open LDAP Public License v2.3(SPDX ID: OLDAP-2.3) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6323.name": "OLDAP-2.3 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6324.description": "Open LDAP Public License v2.4(SPDX ID: OLDAP-2.4) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6324.name": "OLDAP-2.4 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6325.description": "Open LDAP Public License v2.5(SPDX ID: OLDAP-2.5) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6325.name": "OLDAP-2.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6326.description": "Open LDAP Public License v2.6(SPDX ID: OLDAP-2.6) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6326.name": "OLDAP-2.6 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6327.description": "Open LDAP Public License v2.7(SPDX ID: OLDAP-2.7) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6327.name": "OLDAP-2.7 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6328.description": "Open LDAP Public License v2.8(SPDX ID: OLDAP-2.8) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6328.name": "OLDAP-2.8 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6329.description": "Open Market License(SPDX ID: OML) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6329.name": "OML 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6330.description": "OpenPBS v2.3 Software License(SPDX ID: OpenPBS-2.3) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6330.name": "OpenPBS-2.3 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6331.description": "OpenSSL License(SPDX ID: OpenSSL) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6331.name": "OpenSSL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6332.description": "Open Public License v1.0(SPDX ID: OPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6332.name": "OPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6333.description": "Open Publication License v1.0(SPDX ID: OPUBL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6333.name": "OPUBL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6334.description": "OSET Public License version 2.1(SPDX ID: OSET-PL-2.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6334.name": "OSET-PL-2.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6335.description": "Open Software License 1.0(SPDX ID: OSL-1.0) 라이선스에는 고지 의무, 네트워크 사용시 제약, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6335.name": "OSL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6336.description": "Open Software License 1.1(SPDX ID: OSL-1.1) 라이선스에는 고지 의무, 네트워크 사용시 제약, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6336.name": "OSL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6337.description": "Open Software License 2.0(SPDX ID: OSL-2.0) 라이선스에는 고지 의무, 네트워크 사용시 제약, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6337.name": "OSL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6338.description": "Open Software License 2.1(SPDX ID: OSL-2.1) 라이선스에는 고지 의무, 네트워크 사용시 제약, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6338.name": "OSL-2.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6339.description": "Open Software License 3.0(SPDX ID: OSL-3.0) 라이선스에는 고지 의무, 네트워크 사용시 제약, 라이브러리 단위 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6339.name": "OSL-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6340.description": "The Parity Public License 6.0.0(SPDX ID: Parity-6.0.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6340.name": "Parity-6.0.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6341.description": "The Parity Public License 7.0.0(SPDX ID: Parity-7.0.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6341.name": "Parity-7.0.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6342.description": "Open Data Commons Public Domain Dedication & License 1.0(SPDX ID: PDDL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6342.name": "PDDL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6343.description": "PHP License v3.0(SPDX ID: PHP-3.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6343.name": "PHP-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6344.description": "PHP License v3.01(SPDX ID: PHP-3.01) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6344.name": "PHP-3.01 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6345.description": "Plexus Classworlds License(SPDX ID: Plexus) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6345.name": "Plexus 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6346.description": "PolyForm Noncommercial License 1.0.0(SPDX ID: PolyForm-Noncommercial-1.0.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6346.name": "PolyForm-Noncommercial-1.0.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6347.description": "PolyForm Small Business License 1.0.0(SPDX ID: PolyForm-Small-Business-1.0.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6347.name": "PolyForm-Small-Business-1.0.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6348.description": "PostgreSQL License(SPDX ID: PostgreSQL) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6348.name": "PostgreSQL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6349.description": "Python Software Foundation License 2.0(SPDX ID: PSF-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6349.name": "PSF-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6350.description": "psfrag License(SPDX ID: psfrag) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6350.name": "psfrag 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6351.description": "psutils License(SPDX ID: psutils) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6351.name": "psutils 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6352.description": "Python License 2.0(SPDX ID: Python-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6352.name": "Python-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6353.description": "Python License 2.0.1(SPDX ID: Python-2.0.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6353.name": "Python-2.0.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6354.description": "Qhull License(SPDX ID: Qhull) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6354.name": "Qhull 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6355.description": "Q Public License 1.0(SPDX ID: QPL-1.0) 라이선스에는 고지 의무, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6355.name": "QPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6356.description": "Q Public License 1.0 - INRIA 2004 variant(SPDX ID: QPL-1.0-INRIA-2004) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6356.name": "QPL-1.0-INRIA-2004 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6357.description": "Rdisc License(SPDX ID: Rdisc) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6357.name": "Rdisc 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6358.description": "Red Hat eCos Public License v1.1(SPDX ID: RHeCos-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6358.name": "RHeCos-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6359.description": "Reciprocal Public License 1.1(SPDX ID: RPL-1.1) 라이선스에는 고지 의무, 네트워크 사용시 제약, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6359.name": "RPL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6360.description": "Reciprocal Public License 1.5(SPDX ID: RPL-1.5) 라이선스에는 고지 의무, 네트워크 사용시 제약, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6360.name": "RPL-1.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6361.description": "RealNetworks Public Source License v1.0(SPDX ID: RPSL-1.0) 라이선스에는 고지 의무, 네트워크 사용시 제약, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6361.name": "RPSL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6362.description": "RSA Message-Digest License(SPDX ID: RSA-MD) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6362.name": "RSA-MD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6363.description": "Ricoh Source Code Public License(SPDX ID: RSCPL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6363.name": "RSCPL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6364.description": "Ruby License(SPDX ID: Ruby) 라이선스에는 고지 의무, 코드 공개 제약, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6364.name": "Ruby 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6365.description": "Sax Public Domain Notice(SPDX ID: SAX-PD) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6365.name": "SAX-PD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6366.description": "Saxpath License(SPDX ID: Saxpath) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6366.name": "Saxpath 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6367.description": "SCEA Shared Source License(SPDX ID: SCEA) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6367.name": "SCEA 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6368.description": "Sendmail License(SPDX ID: Sendmail) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6368.name": "Sendmail 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6369.description": "Sendmail License 8.23(SPDX ID: Sendmail-8.23) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6369.name": "Sendmail-8.23 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6370.description": "SGI Free Software License B v1.0(SPDX ID: SGI-B-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6370.name": "SGI-B-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6371.description": "SGI Free Software License B v1.1(SPDX ID: SGI-B-1.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6371.name": "SGI-B-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6372.description": "SGI Free Software License B v2.0(SPDX ID: SGI-B-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6372.name": "SGI-B-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6373.description": "Solderpad Hardware License v0.5(SPDX ID: SHL-0.5) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6373.name": "SHL-0.5 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6374.description": "Solderpad Hardware License, Version 0.51(SPDX ID: SHL-0.51) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6374.name": "SHL-0.51 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6375.description": "Simple Public License 2.0(SPDX ID: SimPL-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6375.name": "SimPL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6376.description": "Sun Industry Standards Source License v1.1(SPDX ID: SISSL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6376.name": "SISSL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6377.description": "Sun Industry Standards Source License v1.2(SPDX ID: SISSL-1.2) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6377.name": "SISSL-1.2 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6378.description": "Sleepycat License(SPDX ID: Sleepycat) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6378.name": "Sleepycat 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6379.description": "Standard ML of New Jersey License(SPDX ID: SMLNJ) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6379.name": "SMLNJ 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6380.description": "Secure Messaging Protocol Public License(SPDX ID: SMPPL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6380.name": "SMPPL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6381.description": "SNIA Public License 1.1(SPDX ID: SNIA) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6381.name": "SNIA 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6382.description": "snprintf License(SPDX ID: snprintf) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6382.name": "snprintf 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6383.description": "Spencer License 86(SPDX ID: Spencer-86) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6383.name": "Spencer-86 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6384.description": "Spencer License 94(SPDX ID: Spencer-94) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6384.name": "Spencer-94 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6385.description": "Spencer License 99(SPDX ID: Spencer-99) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6385.name": "Spencer-99 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6386.description": "Sun Public License v1.0(SPDX ID: SPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6386.name": "SPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6387.description": "SSH OpenSSH license(SPDX ID: SSH-OpenSSH) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6387.name": "SSH-OpenSSH 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6388.description": "SSH short notice(SPDX ID: SSH-short) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6388.name": "SSH-short 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6389.description": "Server Side Public License, v 1(SPDX ID: SSPL-1.0) 라이선스에는 고지 의무, 모든 소프트웨어의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6389.name": "SSPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6391.description": "SugarCRM Public License v1.1.3(SPDX ID: SugarCRM-1.1.3) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6391.name": "SugarCRM-1.1.3 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6392.description": "SunPro License(SPDX ID: SunPro) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6392.name": "SunPro 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6393.description": "Scheme Widget Library (SWL) Software License Agreement(SPDX ID: SWL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6393.name": "SWL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6394.description": "Symlinks License(SPDX ID: Symlinks) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6394.name": "Symlinks 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6395.description": "TAPR Open Hardware License v1.0(SPDX ID: TAPR-OHL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6395.name": "TAPR-OHL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6396.description": "TCL/TK License(SPDX ID: TCL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6396.name": "TCL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6397.description": "TCP Wrappers License(SPDX ID: TCP-wrappers) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6397.name": "TCP-wrappers 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6398.description": "TMate Open Source License(SPDX ID: TMate) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6398.name": "TMate 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6399.description": "TORQUE v2.5+ Software License v1.1(SPDX ID: TORQUE-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6399.name": "TORQUE-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6400.description": "Trusster Open Source License(SPDX ID: TOSL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6400.name": "TOSL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6401.description": "Time::ParseDate License(SPDX ID: TPDL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6401.name": "TPDL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6402.description": "THOR Public License 1.0(SPDX ID: TPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6402.name": "TPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6403.description": "Text-Tabs+Wrap License(SPDX ID: TTWL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6403.name": "TTWL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6404.description": "Technische Universitaet Berlin License 1.0(SPDX ID: TU-Berlin-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6404.name": "TU-Berlin-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6405.description": "Technische Universitaet Berlin License 2.0(SPDX ID: TU-Berlin-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6405.name": "TU-Berlin-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6406.description": "UCAR License(SPDX ID: UCAR) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6406.name": "UCAR 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6407.description": "Upstream Compatibility License v1.0(SPDX ID: UCL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6407.name": "UCL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6408.description": "Unicode License Agreement - Data Files and Software (2015)(SPDX ID: Unicode-DFS-2015) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6408.name": "Unicode-DFS-2015 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6409.description": "Unicode License Agreement - Data Files and Software (2016)(SPDX ID: Unicode-DFS-2016) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6409.name": "Unicode-DFS-2016 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6410.description": "Unicode Terms of Use(SPDX ID: Unicode-TOU) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6410.name": "Unicode-TOU 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6411.description": "The Unlicense(SPDX ID: Unlicense) 라이선스는 사용이 자유로운 라이선스입니다.",
  "rule.sca.l.common.6411.name": "Unlicense 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6412.description": "Universal Permissive License v1.0(SPDX ID: UPL-1.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6412.name": "UPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6413.description": "Vim License(SPDX ID: Vim) 라이선스에는 고지 의무, 코드 공개 제약, 불명확한 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6413.name": "Vim 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6414.description": "VOSTROM Public License for Open Source(SPDX ID: VOSTROM) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6414.name": "VOSTROM 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6415.description": "Vovida Software License v1.0(SPDX ID: VSL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6415.name": "VSL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6416.description": "W3C Software Notice and License (2002-12-31)(SPDX ID: W3C) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6416.name": "W3C 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6417.description": "W3C Software Notice and License (1998-07-20)(SPDX ID: W3C-19980720) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6417.name": "W3C-19980720 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6418.description": "W3C Software Notice and Document License (2015-05-13)(SPDX ID: W3C-20150513) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6418.name": "W3C-20150513 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6419.description": "w3m License(SPDX ID: w3m) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6419.name": "w3m 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6420.description": "Sybase Open Watcom Public License 1.0(SPDX ID: Watcom-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6420.name": "Watcom-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6421.description": "Wsuipa License(SPDX ID: Wsuipa) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6421.name": "Wsuipa 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6422.description": "Do What The F*ck You Want To Public License(SPDX ID: WTFPL) 라이선스는 사용이 자유로운 라이선스입니다.",
  "rule.sca.l.common.6422.name": "WTFPL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6423.description": "wxWindows Library License(SPDX ID: wxWindows) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6423.name": "wxWindows 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6424.description": "X11 License(SPDX ID: X11) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6424.name": "X11 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6425.description": "X11 License Distribution Modification Variant(SPDX ID: X11-distribute-modifications-variant) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6425.name": "X11-distribute-modifications-variant 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6426.description": "Xerox License(SPDX ID: Xerox) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6426.name": "Xerox 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6427.description": "XFree86 License 1.1(SPDX ID: XFree86-1.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6427.name": "XFree86-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6428.description": "xinetd License(SPDX ID: xinetd) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6428.name": "xinetd 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6429.description": "xlock License(SPDX ID: xlock) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6429.name": "xlock 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6430.description": "X.Net License(SPDX ID: Xnet) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6430.name": "Xnet 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6431.description": "XPP License(SPDX ID: xpp) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6431.name": "xpp 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6432.description": "XSkat License(SPDX ID: XSkat) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6432.name": "XSkat 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6433.description": "Yahoo! Public License v1.0(SPDX ID: YPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6433.name": "YPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6434.description": "Yahoo! Public License v1.1(SPDX ID: YPL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6434.name": "YPL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6435.description": "Zeebe Community License v1.1(SPDX ID: ZCL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6435.name": "ZCL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6436.description": "Zed License(SPDX ID: Zed) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6436.name": "Zed 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6437.description": "Zend License v2.0(SPDX ID: Zend-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6437.name": "Zend-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6438.description": "Zimbra Public License v1.3(SPDX ID: Zimbra-1.3) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6438.name": "Zimbra-1.3 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6439.description": "Zimbra Public License v1.4(SPDX ID: Zimbra-1.4) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6439.name": "Zimbra-1.4 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6440.description": "zlib License(SPDX ID: Zlib) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6440.name": "Zlib 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6441.description": "zlib/libpng License with Acknowledgement(SPDX ID: zlib-acknowledgement) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6441.name": "zlib-acknowledgement 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6442.description": "Zope Public License 1.1(SPDX ID: ZPL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.6442.name": "ZPL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6443.description": "Zope Public License 2.0(SPDX ID: ZPL-2.0) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6443.name": "ZPL-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.6444.description": "Zope Public License 2.1(SPDX ID: ZPL-2.1) 라이선스에는 고지 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.6444.name": "ZPL-2.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7007.description": "3D Slicer License v1.0(SPDX ID: 3D-Slicer-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7007.name": "3D-Slicer-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7008.description": "AMD newlib License(SPDX ID: AMD-newlib) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7008.name": "AMD-newlib 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7009.description": "BSD 2-Clause - first lines requirement(SPDX ID: BSD-2-Clause-first-lines) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7009.name": "BSD-2-Clause-first-lines 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7010.description": "Catharon License(SPDX ID: Catharon) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7010.name": "Catharon 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7011.description": "Gutmann License(SPDX ID: Gutmann) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7011.name": "Gutmann 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7012.description": "Historical Permission Notice and Disclaimer - Intel variant(SPDX ID: HPND-Intel) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7012.name": "HPND-Intel 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7013.description": "Historical Permission Notice and Disclaimer - University of California, US export warning(SPDX ID: HPND-UC-export-US) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7013.name": "HPND-UC-export-US 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7014.description": "HPND with US Government export control warning and acknowledgment(SPDX ID: HPND-export-US-acknowledgement) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7014.name": "HPND-export-US-acknowledgement 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7015.description": "HPND with US Government export control and 2 disclaimers(SPDX ID: HPND-export2-US) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7015.name": "HPND-export2-US 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7016.description": "Historical Permission Notice and Disclaimer - merchantability variant(SPDX ID: HPND-merchantability-variant) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7016.name": "HPND-merchantability-variant 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7017.description": "HPND sell variant with MIT disclaimer - reverse(SPDX ID: HPND-sell-variant-MIT-disclaimer-rev) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7017.name": "HPND-sell-variant-MIT-disclaimer-rev 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7018.description": "MIT Khronos - old variant(SPDX ID: MIT-Khronos-old) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7018.name": "MIT-Khronos-old 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7019.description": "NCBI Public Domain Notice(SPDX ID: NCBI-PD) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7019.name": "NCBI-PD 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7020.description": "NCL Source Code License(SPDX ID: NCL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7020.name": "NCL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7021.description": "OAR License(SPDX ID: OAR) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7021.name": "OAR 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7022.description": "Peer Production License(SPDX ID: PPL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7022.name": "PPL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7023.description": "Sun PPP License (2000)(SPDX ID: Sun-PPP-2000) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7023.name": "Sun-PPP-2000 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7024.description": "Any OSI License(SPDX ID: any-OSI) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7024.name": "any-OSI 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7025.description": "Common Vulnerability Enumeration ToU License(SPDX ID: cve-tou) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7025.name": "cve-tou 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7026.description": "pkgconf License(SPDX ID: pkgconf) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7026.name": "pkgconf 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7027.description": "threeparttable License(SPDX ID: threeparttable) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7027.name": "threeparttable 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7028.description": "xzoom License(SPDX ID: xzoom) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7028.name": "xzoom 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7033.description": "Adobe Display PostScript License(SPDX ID: Adobe-Display-PostScript) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7033.name": "Adobe-Display-PostScript 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7034.description": "Adobe Utopia Font License(SPDX ID: Adobe-Utopia) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7034.name": "Adobe-Utopia 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7035.description": "AML glslang variant License(SPDX ID: AML-glslang) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7035.name": "AML-glslang 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7036.description": "ASWF Digital Assets License version 1.0(SPDX ID: ASWF-Digital-Assets-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7036.name": "ASWF-Digital-Assets-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7037.description": "ASWF Digital Assets License 1.1(SPDX ID: ASWF-Digital-Assets-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7037.name": "ASWF-Digital-Assets-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7038.description": "bcrypt Solar Designer License(SPDX ID: bcrypt-Solar-Designer) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7038.name": "bcrypt-Solar-Designer 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7039.description": "Boehm-Demers-Weiser GC License(SPDX ID: Boehm-GC) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7039.name": "Boehm-GC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7040.description": "Brian Gladman 2-Clause License(SPDX ID: Brian-Gladman-2-Clause) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7040.name": "Brian-Gladman-2-Clause 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7041.description": "BSD 2-Clause - Ian Darwin variant(SPDX ID: BSD-2-Clause-Darwin) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7041.name": "BSD-2-Clause-Darwin 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7042.description": "BSD 3-Clause acpica variant(SPDX ID: BSD-3-Clause-acpica) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7042.name": "BSD-3-Clause-acpica 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7043.description": "BSD 3-Clause Flex variant(SPDX ID: BSD-3-Clause-flex) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7043.name": "BSD-3-Clause-flex 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7044.description": "Creative Commons Attribution-ShareAlike 3.0 IGO(SPDX ID: CC-BY-SA-3.0-IGO) 라이선스에는 고지 의무, 파일 단위의 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.7044.name": "CC-BY-SA-3.0-IGO 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7045.description": "Hewlett-Packard BSD variant license(SPDX ID: BSD-3-Clause-HP) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7045.name": "BSD-3-Clause-HP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7046.description": "BSD 3-Clause Sun Microsystems(SPDX ID: BSD-3-Clause-Sun) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7046.name": "BSD-3-Clause-Sun 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7047.description": "BSD-Inferno-Nettverk(SPDX ID: BSD-Inferno-Nettverk) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7047.name": "BSD-Inferno-Nettverk 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7048.description": "BSD Source Code Attribution - beginning of file variant(SPDX ID: BSD-Source-beginning-file) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7048.name": "BSD-Source-beginning-file 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7049.description": "Systemics BSD variant license(SPDX ID: BSD-Systemics) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7049.name": "BSD-Systemics 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7050.description": "Systemics W3Works BSD variant license(SPDX ID: BSD-Systemics-W3Works) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7050.name": "BSD-Systemics-W3Works 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7051.description": "Caldera License (without preamble)(SPDX ID: Caldera-no-preamble) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7051.name": "Caldera-no-preamble 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7052.description": "Creative Commons Attribution 3.0 Australia(SPDX ID: CC-BY-3.0-AU) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7052.name": "CC-BY-3.0-AU 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7053.description": "check-cvs License(SPDX ID: check-cvs) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7053.name": "check-cvs 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7054.description": "CMU Mach - no notices-in-documentation variant(SPDX ID: CMU-Mach-nodoc) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7054.name": "CMU-Mach-nodoc 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7055.description": "Cronyx License(SPDX ID: Cronyx) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7055.name": "Cronyx 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7056.description": "DEC 3-Clause License(SPDX ID: DEC-3-Clause) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7056.name": "DEC-3-Clause 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7057.description": "Data licence Germany – zero – version 2.0(SPDX ID: DL-DE-ZERO-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7057.name": "DL-DE-ZERO-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7058.description": "DocBook Schema License(SPDX ID: DocBook-Schema) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7058.name": "DocBook-Schema 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7059.description": "DocBook XML License(SPDX ID: DocBook-XML) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7059.name": "DocBook-XML 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7060.description": "Detection Rule License 1.1(SPDX ID: DRL-1.1) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7060.name": "DRL-1.1 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7061.description": "David M. Gay dtoa License(SPDX ID: dtoa) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7061.name": "dtoa 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7062.description": "Fuzzy Bitmap License(SPDX ID: FBM) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7062.name": "FBM 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7063.description": "Ferguson Twofish License(SPDX ID: Ferguson-Twofish) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7063.name": "Ferguson-Twofish 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7064.description": "FSF All Permissive License (without Warranty)(SPDX ID: FSFAP-no-warranty-disclaimer) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7064.name": "FSFAP-no-warranty-disclaimer 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7065.description": "Furuseth License(SPDX ID: Furuseth) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7065.name": "Furuseth 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7066.description": "fwlw License(SPDX ID: fwlw) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7066.name": "fwlw 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7067.description": "Gnome GCR Documentation License(SPDX ID: GCR-docs) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7067.name": "GCR-docs 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7068.description": "LPD Documentation License(SPDX ID: LPD-document) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7068.name": "LPD-document 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7069.description": "gtkbook License(SPDX ID: gtkbook) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7069.name": "gtkbook 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7070.description": "hdparm License(SPDX ID: hdparm) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7070.name": "hdparm 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7071.description": "HIDAPI License(SPDX ID: HIDAPI) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7071.name": "HIDAPI 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7072.description": "Historical Permission Notice and Disclaimer - documentation sell variant(SPDX ID: HPND-doc-sell) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7072.name": "HPND-doc-sell 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7073.description": "Hewlett-Packard 1989 License(SPDX ID: HP-1989) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7073.name": "HP-1989 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7074.description": "Historical Permission Notice and Disclaimer - DEC variant(SPDX ID: HPND-DEC) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7074.name": "HPND-DEC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7075.description": "Historical Permission Notice and Disclaimer - documentation variant(SPDX ID: HPND-doc) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7075.name": "HPND-doc 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7076.description": "HPND with US Government export control warning and modification rqmt(SPDX ID: HPND-export-US-modify) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7076.name": "HPND-export-US-modify 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7077.description": "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant(SPDX ID: HPND-Fenneberg-Livingston) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7077.name": "HPND-Fenneberg-Livingston 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7078.description": "Historical Permission Notice and Disclaimer - INRIA-IMAG variant(SPDX ID: HPND-INRIA-IMAG) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7078.name": "HPND-INRIA-IMAG 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7079.description": "Historical Permission Notice and Disclaimer - Kevlin Henney variant(SPDX ID: HPND-Kevlin-Henney) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7079.name": "HPND-Kevlin-Henney 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7080.description": "Historical Permission Notice and Disclaimer with MIT disclaimer(SPDX ID: HPND-MIT-disclaimer) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7080.name": "HPND-MIT-disclaimer 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7081.description": "Historical Permission Notice and Disclaimer - Netrek variant(SPDX ID: HPND-Netrek) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7081.name": "HPND-Netrek 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7082.description": "Historical Permission Notice and Disclaimer - Pbmplus variant(SPDX ID: HPND-Pbmplus) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7082.name": "HPND-Pbmplus 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7083.description": "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer(SPDX ID: HPND-sell-MIT-disclaimer-xserver) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7083.name": "HPND-sell-MIT-disclaimer-xserver 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7084.description": "Historical Permission Notice and Disclaimer - sell regexpr variant(SPDX ID: HPND-sell-regexpr) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7084.name": "HPND-sell-regexpr 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7085.description": "Historical Permission Notice and Disclaimer - University of California variant(SPDX ID: HPND-UC) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7085.name": "HPND-UC 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7086.description": "Kastrup License(SPDX ID: Kastrup) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7086.name": "Kastrup 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7087.description": "Inner Net License v2.0(SPDX ID: Inner-Net-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7087.name": "Inner-Net-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7088.description": "ISC Veillard variant(SPDX ID: ISC-Veillard) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7088.name": "ISC-Veillard 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7089.description": "Latex2e with translated notice permission(SPDX ID: Latex2e-translated-notice) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7089.name": "Latex2e-translated-notice 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7090.description": "Linux man-pages - 1 paragraph(SPDX ID: Linux-man-pages-1-para) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7090.name": "Linux-man-pages-1-para 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7091.description": "Linux man-pages Copyleft - 2 paragraphs(SPDX ID: Linux-man-pages-copyleft-2-para) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7091.name": "Linux-man-pages-copyleft-2-para 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7092.description": "Linux man-pages Copyleft Variant(SPDX ID: Linux-man-pages-copyleft-var) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7092.name": "Linux-man-pages-copyleft-var 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7093.description": "lsof License(SPDX ID: lsof) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7093.name": "lsof 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7094.description": "Lucida Bitmap Fonts License(SPDX ID: Lucida-Bitmap-Fonts) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7094.name": "Lucida-Bitmap-Fonts 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7095.description": "Mackerras 3-Clause License(SPDX ID: Mackerras-3-Clause) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7095.name": "Mackerras-3-Clause 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7096.description": "Mackerras 3-Clause - acknowledgment variant(SPDX ID: Mackerras-3-Clause-acknowledgment) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7096.name": "Mackerras-3-Clause-acknowledgment 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7097.description": "magaz License(SPDX ID: magaz) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7097.name": "magaz 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7098.description": "mailprio License(SPDX ID: mailprio) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7098.name": "mailprio 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7099.description": "McPhee Slideshow License(SPDX ID: McPhee-slideshow) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7099.name": "McPhee-slideshow 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7100.description": "metamail License(SPDX ID: metamail) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7100.name": "metamail 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7101.description": "MIT Festival Variant(SPDX ID: MIT-Festival) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7101.name": "MIT-Festival 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7102.description": "MIT testregex Variant(SPDX ID: MIT-testregex) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7102.name": "MIT-testregex 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7103.description": "MMIXware License(SPDX ID: MMIXware) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7103.name": "MMIXware 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7104.description": "MPEG Software Simulation(SPDX ID: MPEG-SSG) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7104.name": "MPEG-SSG 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7105.description": "NIST Software License(SPDX ID: NIST-Software) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7105.name": "NIST-Software 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7106.description": "Open Logistics Foundation License Version 1.3(SPDX ID: OLFL-1.3) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7106.name": "OLFL-1.3 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7107.description": "OpenSSL License - standalone(SPDX ID: OpenSSL-standalone) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7107.name": "OpenSSL-standalone 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7108.description": "OpenVision License(SPDX ID: OpenVision) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7108.name": "OpenVision 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7109.description": "United Kingdom Open Parliament Licence v3.0(SPDX ID: OPL-UK-3.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7109.name": "OPL-UK-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7110.description": "PADL License(SPDX ID: PADL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7110.name": "PADL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7111.description": "Pixar License(SPDX ID: Pixar) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7111.name": "Pixar 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7112.description": "pnmstitch License(SPDX ID: pnmstitch) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7112.name": "pnmstitch 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7113.description": "Python ldap License(SPDX ID: python-ldap) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7113.name": "python-ldap 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7114.description": "radvd License(SPDX ID: radvd) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7114.name": "radvd 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7115.description": "Ruby pty extension license(SPDX ID: Ruby-pty) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7115.name": "Ruby-pty 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7116.description": "Sax Public Domain Notice 2.0(SPDX ID: SAX-PD-2.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7116.name": "SAX-PD-2.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7117.description": "Scheme Language Report License(SPDX ID: SchemeReport) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7117.name": "SchemeReport 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7118.description": "Sun PPP License(SPDX ID: Sun-PPP) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7118.name": "Sun-PPP 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7119.description": "SGI OpenGL License(SPDX ID: SGI-OpenGL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7119.name": "SGI-OpenGL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7120.description": "SGP4 Permission Notice(SPDX ID: SGP4) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7120.name": "SGP4 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7121.description": "Ubuntu Font Licence v1.0(SPDX ID: Ubuntu-font-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7121.name": "Ubuntu-font-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7122.description": "SL License(SPDX ID: SL) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7122.name": "SL 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7123.description": "softSurfer License(SPDX ID: softSurfer) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7123.name": "softSurfer 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7124.description": "Soundex License(SPDX ID: Soundex) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7124.name": "Soundex 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7125.description": "ssh-keyscan License(SPDX ID: ssh-keyscan) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7125.name": "ssh-keyscan 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7126.description": "SSLeay License - standalone(SPDX ID: SSLeay-standalone) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7126.name": "SSLeay-standalone 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7127.description": "swrule License(SPDX ID: swrule) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7127.name": "swrule 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7128.description": "TermReadKey License(SPDX ID: TermReadKey) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7128.name": "TermReadKey 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7129.description": "Transitive Grace Period Public Licence 1.0(SPDX ID: TGPPL-1.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7129.name": "TGPPL-1.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7130.description": "TTYP0 License(SPDX ID: TTYP0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7130.name": "TTYP0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7131.description": "ulem License(SPDX ID: ulem) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7131.name": "ulem 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7132.description": "Michigan/Merit Networks License(SPDX ID: UMich-Merit) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7132.name": "UMich-Merit 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7133.description": "Unicode License v3(SPDX ID: Unicode-3.0) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7133.name": "Unicode-3.0 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7134.description": "UnixCrypt License(SPDX ID: UnixCrypt) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7134.name": "UnixCrypt 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7135.description": "Utah Raster Toolkit Run Length Encoded License(SPDX ID: URT-RLE) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7135.name": "URT-RLE 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7136.description": "Widget Workshop License(SPDX ID: Widget-Workshop) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7136.name": "Widget-Workshop 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7137.description": "X11 swapped final paragraphs(SPDX ID: X11-swapped) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7137.name": "X11-swapped 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7138.description": "Xdebug License v 1.03(SPDX ID: Xdebug-1.03) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7138.name": "Xdebug-1.03 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7139.description": "Xfig License(SPDX ID: Xfig) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7139.name": "Xfig 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7140.description": "xkeyboard-config Zinoviev License(SPDX ID: xkeyboard-config-Zinoviev) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7140.name": "xkeyboard-config-Zinoviev 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7141.description": "Zeeff License(SPDX ID: Zeeff) 라이선스에는 고지 의무, 제약 사항, 코드 공개 범위 정보가 없습니다. 라이선스 전문을 확인해야 합니다.",
  "rule.sca.l.common.7141.name": "Zeeff 라이선스 컴포넌트 사용",
  "rule.sca.l.common.7493.description": "General Public License v3.0 (SPDX ID: GPL-3.0) 라이선스에는 고지 의무, 설치 정보 제공 의무 제약, 실행 파일을 구성하는 부분 소스 코드 공개 의무가 있습니다. 라이선스 전문을 확인하여 사용에 유의해야 합니다.",
  "rule.sca.l.common.7493.name": "GPL-3.0 라이선스 컴포넌트 사용",
  "rule.sca.sv.common.5896.description": "애플리케이션의 보안을 위해 중요한 조치 중 하나는 알려진 보안 취약점을 가진 컴포넌트를 사용하지 않는 것입니다.\n취약한 컴포넌트는 꼭 최신 안전 버전으로 업데이트하거나 다른 안전한 컴포넌트로 교체해야 합니다.",
  "rule.sca.sv.common.5896.name": "취약한 컴포넌트 사용",
  "rustchk.DIVIDE_BY_ZERO.RUST.defect": "0으로 나누기는 패닉을 유발하므로 분모가 0인지 확인하거나 checked_div를 사용해야 합니다.",
  "rustchk.MAY_OVERFLOW_WRAP.RUST.defect": "오버플로우가 발생할 수 있는 연산은 Wrapping 타입을 사용해야 합니다.",
  "rustchk.USING_BAD_PANIC.RUST.defect": "{0}는 패닉 상태를 유발할 수 있으므로 사용을 제한해야 합니다.",
  "rustchk.USING_BAD_RAW_POINTER.RUST.defect": "into_raw로 변환된 원시 포인터는 항상 from_raw를 통해 복구해야 합니다.",
  "rustchk.USING_BOX_LEAK.RUST.defect": "메모리 누수를 유발하는 Box::leak 사용을 피해야 합니다.",
  "rustchk.USING_DIRECT_INDEX.RUST.defect": "배열 인덱스에 접근할 때는 경계를 검사하거나 get 메소드를 사용해야 안전합니다.",
  "rustchk.USING_FORGET.RUST.defect": "`forget`은 메모리를 반환하지 않아 메모리 누수를 유발할 수 있습니다.",
  "rustchk.USING_INCOMPATIBLE_TYPE_WITH_C.RUST.defect": "FFI 사용 시 C-호환 타입만을 사용하여 데이터 무결성을 보장해야 합니다.",
  "rustchk.USING_MANUALLY_DROP.RUST.defect": "ManuallyDrop 사용 시 메모리를 명시적으로 해제하거나 원시 값을 추출하여 자동 정리를 보장해야 합니다.",
  "rustchk.USING_TRY_MACRO.RUST.defect": "try! 매크로 대신 ? 연산자를 사용하면 코드의 가독성과 일관성을 향상시킬 수 있습니다.",
  "rustchk.USING_UNINIT_MEM.RUST.defect": "{0}는 메모리 안전 문제를 초래할 수 있기 때문에 사용을 피해야 합니다.",
  "rustchk.USING_UNSAFE.RUST.defect": "unsafe는 메모리 안전성을 보장하지 않기 때문에 가능한 피해야 합니다.",
  "sast.engine.common.checker.SAST.SW.DART.6462.sink": "코드 내에 취약한 해시 함수가 사용되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.DART.6463.sink": "코드 내에 취약한 난수 함수가 사용되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.DART.6464.sink": "코드 내에 취약한 암호화 알고리즘이 사용되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.DART.6465.sink": "충분하지 않은 RSA 키 길이를 사용하는 코드가 검출되었습니다: {0} bits",
  "sast.engine.common.checker.SAST.SW.LUA.7159.sink": "코드 내에 취약한 해시 함수가 사용되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.LUA.7160.sink": "코드 내에 취약한 난수 함수가 사용되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.LUA.7161.sink": "충분하지 않은 RSA 키 길이를 사용하는 코드가 검출되었습니다: {0} bits",
  "sast.engine.common.checker.SAST.SW.LUA.7166": "프로덕션 환경을 준비할 때 디버그 문을 제거해야 합니다: {0}",
  "sast.engine.common.checker.SAST.SW.LUA.7168.sink": "코드 내에 취약한 암호화 알고리즘이 사용되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.PY.7247.sink": "부적절한 CORS 설정이 발견되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.PY.7248.port.sink": "부적절한 SMTP 포트가 발견되었습니다: 25",
  "sast.engine.common.checker.SAST.SW.PY.7248.protocol.sink": "부적절한 SMTP 설정이 발견되었습니다: {0}=False",
  "sast.engine.common.checker.SAST.SW.PY.7249.sink": "부적절한 MAX_CONTENT_LENGTH 설정이 발견되었습니다: MAX_CONTENT_LENGTH=None",
  "sast.engine.common.checker.SAST.SW.PY.7250.sink": "부적절한 TRUSTED_HOSTS 설정이 발견되었습니다: TRUSTED_HOSTS=None",
  "sast.engine.common.checker.SAST.SW.PY.7251.sink": "부적절한 CORS 설정이 발견되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.PY.7252.port.sink": "부적절한 SMTP 포트가 발견되었습니다: 25",
  "sast.engine.common.checker.SAST.SW.PY.7252.protocol.sink": "부적절한 SMTP 설정이 발견되었습니다: {0}=False",
  "sast.engine.common.checker.SAST.SW.PY.7253.sink": "부적절한 ALLOWED_HOSTS 설정이 발견되었습니다: ALLOWED_HOSTS=['*']",
  "sast.engine.common.checker.SAST.SW.PY.7254.sink": "요청 본문의 크기를 제한하지 않는 설정이 발견되었습니다: DATA_UPLOAD_MAX_MEMORY_SIZE=None",
  "sast.engine.common.checker.SAST.SW.PY.7255.sink": "부적절한 X-Content-Type-Options 설정이 발견되었습니다: SECURE_CONTENT_TYPE_NOSNIFF=False",
  "sast.engine.common.checker.SAST.SW.PY.7256.hsts.sink": "부적절한 HSTS 설정이 발견되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.PY.7256.redirect.sink": "HTTPS 리다이렉션 옵션이 설정되어 있지 않습니다: SECURE_SSL_REDIRECT=False",
  "sast.engine.common.checker.SAST.SW.PY.7257.sink": "부적절한 Referrer-Policy 설정이 발견되었습니다: SECURE_REFERRER_POLICY={0}",
  "sast.engine.common.checker.SAST.SW.PY.7258.sink": "부적절한 Cross-Origin-Opener-Policy 설정이 발견되었습니다: SECURE_CROSS_ORIGIN_OPENER_POLICY={0}",
  "sast.engine.common.checker.SAST.SW.PY.7259.sink": "부적절한 CSP 설정값이 발견되었습니다: {0}: {1}",
  "sast.engine.common.checker.SAST.SW.PY.7260.sink": "Django에서 보안을 위해 사용되는 미들웨어가 누락되어 있습니다.",
  "sast.engine.common.checker.SAST.SW.PY.7261.sink": "부적절한 해시 알고리즘이 발견되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.PY.7304.sink": "부적절한 해시 알고리즘이 발견되었습니다: {0}",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7338.sink": "EC2 인스턴스의 사용자 데이터에 하드코딩된 비밀인 AWS 키가 포함되어 있습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7339.sink": "Public/Private EC2 인스턴스간 동일한 IAM 역할이 사용되었습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7340.sink": "그룹 정책 내 `iam:PassRole` 및 `ec2:RunInstance` 작업이 모두 `*`으로 설정되어 있어 그룹 권한 상승 공격에 취약합니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7341.sink": "사용자 정책 내 `iam:PassRole` 및 `ec2:RunInstance` 작업이 모두 `*`으로 설정되어 있어 역할 권한 상승 공격에 취약합니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7342.sink": "역할 정책 내 `iam:PassRole` 및 `ec2:RunInstance` 작업이 모두 `*`으로 설정되어 있어 역할 권한 상승 공격에 취약합니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7343.sink": "EC2 인스턴스가 기본 보안 그룹을 사용합니다. 사용자의 환경에 맞는 적절한 보안 그룹 사용을 권장합니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7344.sink": "EC2 인스턴스가 기본 VPC 내에 위치해 있습니다. 사용자의 환경에 맞는 적절한 VPC 사용을 권장합니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7345.sink": "EC2 인스턴스가 Public IP 주소를 사용합니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7346.sink": "EC2의 Transit Gateway가 VPC 연결 요청을 자동으로 수락하도록 설정되어 있습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7354.sink": "EC2 인스턴스가 EBS에 최적화되어 있지 않습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7355.sink": "EC2 인스턴스가 상세 모니터링을 사용하지 않도록 설정되었습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7356.sink": "EC2 인스턴스가 IMDSv1을 사용할 수 있도록 설정되었습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7357.sink": "보안 그룹의 설명이 누락되었습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7358.sink": "보안 그룹 내 \"ingress\" 규칙에서 설명이 누락되었습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7359.sink": "보안 그룹 내 \"egress\" 규칙에서 설명이 누락되었습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7360.sink": "EBS 볼륨이 암호화되어 있지 않습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7361.sink": "EBS 볼륨 암호화에 고객 관리형 키를 사용하지 않았습니다.",
  "sast.engine.common.checker.SAST.SW.TERRAFORM.7362.sink": "Redshift 클러스터 리소스 내 서브넷 세부 정보를 포함하지 않았습니다.",
  "sast.engine.common.checker.SAST.SW.XML.7422.sink.explicit": "{0} 태그에서 android:exported 속성이 true로 설정되어 있으나, android:permission 속성이 정의되어 있지 않습니다.",
  "sast.engine.common.checker.SAST.SW.XML.7422.sink.implicit": "{0} 태그에 android:exported 및 android:permission 속성이 정의되어 있지 않습니다.",
  "sast.engine.common.checker.SAST.SW.XML.7422.source.assign_empty": "{0} 속성이 빈 문자열(\"\")로 정의되어 있으므로 적절한 접근 제어가 적용되지 않습니다.",
  "sast.engine.common.checker.SAST.SW.XML.7422.source.assign_empty_all": "`android:readPermission` 및 `android:writePermission` 속성이 모두 빈 문자열(\"\")로 정의되어 있으므로 적절한 접근 제어가 적용되지 않습니다.",
  "sast.engine.common.checker.SAST.SW.XML.7422.source.intent_filter": "intent-filter로 인해 android:exported 속성 설정 없이도 외부에서 구성 요소에 접근 가능합니다.",
  "sast.engine.common.checker.comment_api_key.sink": "주석문 내에 하드코드된 API 키가 검출되었습니다: {0}",
  "sast.engine.common.checker.comment_auth_url.sink": "주석문 내에 인증 정보가 검출되었습니다: {0}",
  "sast.engine.common.checker.comment_email.sink": "주석문 내에 이메일 정보가 검출되었습니다: {0}",
  "sast.engine.common.checker.comment_ipv4.sink": "주석문 내에 IP 정보가 검출되었습니다: {0}",
  "sast.engine.common.checker.danger_cookie.defect": "부적절한 쿠키 설정으로 XSS, CSRF 등의 보안약점에 노출됩니다. 안전한 쿠키 플래그를 설정하기 바랍니다.",
  "sast.engine.common.checker.hardcode_api_key.sink": "하드코딩된 API 키가 검출되었습니다: {0}",
  "sast.engine.common.checker.hardcode_auth_url.sink": "하드코딩된 인증 정보가 검출되었습니다: {0}",
  "sast.engine.common.checker.hardcode_email.sink": "하드코드된 이메일 정보가 검출되었습니다: {0}",
  "sast.engine.common.checker.hardcode_ipv4.sink": "하드코드된 IP 정보가 검출되었습니다: {0}",
  "sast.engine.common.checker.hardcode_secret.sink": "중요 정보로 의심되는 데이터가 하드코딩되어 있습니다. {0}: {1}",
  "sast.engine.common.checker.leftover_debug.defect": "프로덕션 환경을 준비할 때 디버그 문을 제거해야 합니다: {0}",
  "sast.engine.common.checker.short_rsa_key.defect": "충분하지 않은 RSA 키 길이를 사용하는 코드가 검출되었습니다: {0} bits",
  "sast.engine.common.checker.weak_crypto.defect": "코드 내에 취약한 암호화 알고리즘이 사용되었습니다: {0}",
  "sast.engine.common.checker.weak_hash.defect": "코드 내에 취약한 해시 함수가 사용되었습니다: {0}",
  "sast.engine.common.checker.weak_random.defect": "코드 내에 취약한 난수 함수가 사용되었습니다: {0}",
  "sast.engine.common.move_to_source": "다른 소스 파일에서 추가 정보를 확인합니다: {0}",
  "sast.engine.ruby.checker.SAST.SW.RUBY.7515.defect": "대화형 디버거가 존재합니다: {0}",
  "sast.engine.ruby.checker.SAST.SW.RUBY.7517.defect.legacy": "지원 종료(legacy) 암호 알고리즘을 강제로 활성화하는 코드가 존재합니다.",
  "sast.symbol_tag.kind.class": "클래스",
  "sast.symbol_tag.kind.function": "함수",
  "sast.symbol_tag.kind.method": "메서드",
  "sast.symbol_tag.kind.namespace": "네임스페이스",
  "sast.symbol_tag.kind.package": "패키지",
  "sast.symbol_tag.kind.struct": "구조체",
  "sast.symbol_tag.kind.variable": "변수",
  "seekOnAppendedFile.description": "append 모드로 연 파일은 repositioning 되지 않습니다.",
  "shiftNegative.description": "음수 비트만큼의 쉬프트 연산은 의도하지 않은 동작을 할 수 있습니다.",
  "shiftNegativeLHS.description": "음수 값에 비트쉬프트 연산을 하는 것은 의도치 않은 동작을 할 수 있습니다.",
  "shiftTooManyBits.description": "사이즈보다 큰 비트를 쉬프트 연산 하는것을 의도치 않은 동작을 할 수 있습니다.",
  "shiftTooManyBitsSigned.description": "부호 있는 값에 너무 큰 값을 비트 쉬프트 연산에 사용합니다.",
  "signConversion.description": "sign conversion 이 일어납니다.",
  "sprintfOverlappingData.description": "sprintf 계열 함수를 사용 할때 오버래핑이 일어납니다. 이것은 의도되지 않은 동작을 할 수 있습니다.",
  "sqlchk.BAD.LOCATION.COLUMN.SQL.defect": "힌트가 존재할 경우 컬럼은 그 아래 위치하는 것을 권장합니다.",
  "sqlchk.BAD.LOCATION.ORDER_GROUP_BY.SQL.defect": "'order by' 또는 'group by' 절은 바로 앞에 존재하는 sql 문과는 한줄 이상 분리되어야 합니다.",
  "sqlchk.BAD.UNION.SQL.defect": "집합 연산자 'UNION'를 사용하는 것은 바람직하지 않습니다.",
  "sqlchk.BAD.USE_OF_FULL_OUTER_JOIN.SQL.defect": "'FULL OUTER JOIN'을 사용하는 것은 바람직하지 않습니다.",
  "sqlchk.FORBIDDEN.ARITHMETIC_OPERATION.SQL.defect": "사칙연산 사용이 금지되어있습니다.",
  "sqlchk.FORBIDDEN.ASTERISK.SELECT.SQL.defect": "SELECT 문에서 '*' 사용은 바람직하지 않습니다.",
  "sqlchk.FORBIDDEN.BINDING_VARIABLE.SQL.defect": "바인딩 변수가 사용되었습니다.",
  "sqlchk.FORBIDDEN.DISTINCT.SQL.defect": "'DISTINCT' 사용은 바람직하지 않습니다.",
  "sqlchk.FORBIDDEN.FROM_DUAL.SQL.defect": "금지된 DUAL 이 사용되었습니다.",
  "sqlchk.FORBIDDEN.LOWERCASE_KEYWORD.SQL.defect": "해당 키워드는 대문자로 쓰여야 합니다.",
  "sqlchk.FORBIDDEN.NEGATION_IN_CONDITION.SQL.defect": "부정형 조건을 사용하지 않습니다.",
  "sqlchk.FORBIDDEN.PARALLEL.SQL.defect": "금지된 PARALLEL 이 사용되었습니다.",
  "sqlchk.FORBIDDEN.SYSDATE.SQL.defect": "금지된 sysdate 이 사용되었습니다.",
  "sqlchk.FORBIDDEN.TABLE.SQL.defect": "금지된 테이블이 사용되었습니다.",
  "sqlchk.FORBIDDEN.TABLE_COLUMN.SQL.defect": "금지된 테이블 컬럼이 사용되었습니다.",
  "sqlchk.MISMATCH.COLUMN_VALUE.INSERT.SQL.defect": "컬럼과 값의 개수가 일치하지 않습니다.",
  "sqlchk.MISSING.ALIAS.TABLE.SQL.defect": "테이블에 alias 가 존재해야 합니다.",
  "sqlchk.MISSING.ASC_DESC.ORDER_BY.SQL.defect": "ASC 또는 DESC이 생략되어 있습니다.",
  "sqlchk.MISSING.COLUMN.INSERT.SQL.defect": "INSERT 문에서 컬럼이 생략되어 있습니다.",
  "sqlchk.MISSING.COMMENT.BINDING_VARIABLE.SQL.defect": "바인딩 변수는 주석이 존재해야 합니다.",
  "sqlchk.MISSING.COMMENT.COLUMN_IN_SELECT.SQL.defect": "다음 컬럼은 주석이 존재해야 합니다. {0}",
  "sqlchk.MISSING.INDEX_HINT.SQL.defect": "INDEX HINT가 {0} 문에서 생략되어 있습니다.",
  "sqlchk.MISSING.TABLE_ALIAS.JOIN.SQL.defect": "테이블의 별칭(Alias)이 생략되어 있습니다.",
  "sqlchk.MISSING.WHERE.DELETE_UPDATE.SQL.defect": "{0} 문에서 WHERE 절이 생략되어 있습니다.",
  "sqlchk.MISSING.WHERE.SELECT.SQL.defect": "SELECT 문에서 WHERE 절이 생략되어 있습니다.",
  "sqlchk.PROHIBIT_INCORRECT_USE_OF_JOIN.defect": "JOIN 규칙 가이드 외 JOIN SQL 구문이 사용되었습니다.",
  "sqlchk.PROHIBIT_NONSTANDARD_SQL.defect": "ANSI SQL 비표준 구문을 사용했습니다.",
  "sqlchk.PROHIBIT_NONSTANDARD_TYPE_CONVERSION.defect": "ANSI SQL 비표준 형 변환 규칙을 사용했습니다.",
  "sqlchk.PROHIBIT_USE_OF_BTRIM.defect": "ANSI SQL 비표준 공백 제거 규칙을 사용했습니다.",
  "sqlchk.PROHIBIT_USE_OF_CBRT.defect": "ANSI SQL 비표준 세제곱근 반환 규칙을 사용했습니다.",
  "sqlchk.PROHIBIT_USE_OF_DECODE.defect": "ANSI SQL 비표준 조건 규칙을 사용했습니다.",
  "sqlchk.PROHIBIT_USE_OF_ILIKE.defect": "ANSI SQL 비표준 검색 규칙이 사용되었습니다.",
  "sqlchk.PROHIBIT_USE_OF_INNER_JOIN.defect": "ANSI SQL 비표준 INNER JOIN 규칙을 사용했습니다.",
  "sqlchk.PROHIBIT_USE_OF_MAINTENANCE_HEAVY_FUNCTION.defect": "유지 보수가 어려운 함수가 사용되었습니다.",
  "sqlchk.PROHIBIT_USE_OF_NONSTANDARD_HIERARCHICAL_QUERIES.defect": "ANSI SQL 비표준 계층형 쿼리 검출 규칙이 사용되었습니다.",
  "sqlchk.PROHIBIT_USE_OF_NVL.defect": "ANSI SQL 비표준 null 검출 규칙을 사용했습니다.",
  "sqlchk.PROHIBIT_USE_OF_OUTER_JOIN.defect": "ANSI SQL 비표준 OUTER JOIN 규칙이 사용되었습니다.",
  "sqlchk.SAQT.Q.SQL.7169.defect": "INSERT 문에서 APPEND 힌트를 사용했습니다.",
  "sqlchk.SAQT.Q.SQL.7170.defect": "지정한 SQL 문장 형식에서 금지된 PARALLEL 힌트문을 사용했습니다.",
  "sqlchk.SAQT.Q.SQL.7214.defect": "ROWNUM과 ORDER BY가 동일 QUERY BLOCK에 존재합니다.",
  "sqlchk.SAQT.Q.SQL.7215.defect": "SQL 문장 내 고유 식별자가 올바른 위치에 주석으로 존재하지 않습니다.",
  "sqlchk.SAQT.Q.SQL.7217.defect": "SQL 쿼리 내 해당 문장 형식에 필수적으로 요구되는 특정 문구를 사용하지 않았습니다. {0}",
  "sqlchk.SAQT.Q.SQL.7218.defect": "테이블 또는 인라인 뷰에 별칭(Alias)이 누락되었습니다. {0}",
  "sqlchk.SAQT.Q.SQL.7218.defect.standalone": "테이블 별칭 없이 단독으로 사용된 컬럼이 존재합니다. {0}",
  "sqlchk.SAQT.Q.SQL.7218.defect.unused": "FROM 절 내 사용되지 않은 테이블이 존재합니다. {0}",
  "sqlchk.SAQT.Q.SQL.7262.defect": "SQL 쿼리 내 해당 문장 형식에 금지된 문구를 사용했습니다. {0}",
  "sqlchk.SAQT.Q.SQL.7533.defect": "INSERT 구문에서 컬럼 이름이 누락되었습니다.",
  "sqlchk.SAQT.Q.SQL.7534.defect": "SELECT 절에서 업무에 필요한 컬럼만 명시적으로 입력해야 합니다.",
  "sqlchk.TABLE_NAME_CONVENTION.SQL.defect": "테이블 이름 {0}이 컨벤션에 위반되어 있습니다.",
  "staticStringCompare.description": "불필요한 문자열 비교입니다.",
  "stlBoundaries.description": "반복자에 <, > 연산자를 사용합니다. != 연산자를 사용해야 합니다.",
  "stlIfFind.description": "find() 함수의 결과값을 정확히 체크해야 합니다.",
  "stlIfStrFind.description": "string::find() 는 비효율적입니다. string::compare()이 더 효율적입니다.",
  "stlSize.description": "size 함수로 비었는지 검사하는 것은 비효율적입니다. empty 함수를 사용하는것이 효율적입니다.",
  "stlcstr.description": "c_str 함수의 리턴 값은 후에 유효하지 않을 수 있습니다.",
  "stlcstrParam.description": "string 타입을 인자로 받는 함수에 c_str() 의 결과를 넣는 것은 비효율적입니다. 바로 string 을 넣는 것이 효율적입니다.",
  "stlcstrReturn.description": "c_str 함수의 결과를 바로 리턴값으로 사용하는 것은 비효율 적입니다. 바로 string 을 리턴하는 것이 효율적입니다.",
  "strPlusChar.description": "문자열 값에 char 값을 더합니다.",
  "strchk.ACCOUNT_INFO_IN_CODE.JS.defect": "사용자 계정 정보가 소스코드 내에 존재합니다.",
  "strchk.DANGEROUS_FUNCTION.ASP.defect": "취약한 함수를 검출했습니다.",
  "strchk.DJANGO_XSS.PYTHON.defect": "`autoescape` 옵션 혹은 `safe` 필터를 사용합니다.",
  "strchk.DO_NOT_USE_EXPERIMENTAL_FIREFOX.defect": "파이어폭스 브라우저의 실험적인 식별자를 사용했습니다. 이러한 식별자는 사용하지 않도록 합니다.",
  "strchk.DO_NOT_USE_EXPERIMENTAL_MS.defect": "익스플로러 브라우저의 실험적인 식별자를 사용했습니다. 이러한 식별자는 사용하지 않도록 합니다.",
  "strchk.DO_NOT_USE_EXPERIMENTAL_OPERA.defect": "오페라 브라우저의 실험적인 식별자를 사용했습니다. 이러한 식별자는 사용하지 않도록 합니다.",
  "strchk.DO_NOT_USE_EXPERIMENTAL_WEBKIT.defect": "웹킷 기반의 실험적인 식별자를 사용했습니다. 이러한 식별자는 사용하지 않도록 합니다.",
  "strchk.DO_NOT_USE_GIF_FORMAT.defect": "성능상 이슈가 많은 .gif 포맷을 사용했습니다.",
  "strchk.DO_NOT_USE_IMPORTANT_FLAG.defect": "!important 플래그를 사용했습니다. 제거하도록 합니다.",
  "strchk.DO_NOT_USE_STYLELINT_DISABLE.defect": "stylelint-disable 태그를 사용했습니다. 이 태그는 사용하지 않도록 합니다.",
  "strchk.DO_NOT_USE_STYLELINT_ENABLE.defect": "stylelint-enable 태그를 사용했습니다. 이 태그는 사용하지 않도록 합니다.",
  "strchk.DO_NOT_USE_SYSTEM_COLOR.defect": "구형 시스템 색상을 사용했습니다. 현대적인 색상을 사용하도록 합니다.",
  "strchk.FIND_STRING_IN_CONTENT.defect": "지정한 문자열이 소스코드 내에 존재합니다.",
  "strchk.HTML_COMMENT_IN_JSP.JSP.defect": "HTML 주석문을 사용할 경우 페이지 소스 보기에서 주석의 내용이 그대로 노출됩니다. JSP형태의 주석문을 사용해야 합니다.",
  "strchk.MALICIOUS.CODE.PATTERN.defect": "악성 코드 패턴이 감지되었습니다.",
  "strchk.PASSWORD_IN_COMMENT.ASP.defect": "주석에 작성된 중요 정보를 검출했습니다.",
  "strchk.PASSWORD_MANAGEMENT_HARDCODED_PASSWORD.defect": "하드코드된 비밀번호가 있습니다.",
  "strchk.PASSWORD_MANAGEMENT_PASSWORD_IN_COMMENT.defect": "주석문내에 비밀번호 정보가 있습니다.",
  "strchk.PRIVACY.ACCOUNT.defect": "소스 코드 내에 계좌 정보를 검출했습니다.",
  "strchk.PRIVACY.CREDIT_CARD.defect": "소스 코드 내에 카드 정보를 검출했습니다.",
  "strchk.PRIVACY.DRIVER_LIC.defect": "소스코드에서 운전 면허 정보를 검출했습니다.",
  "strchk.PRIVACY.EMAIL.defect": "소스코드에서 이메일 정보를 검출했습니다.",
  "strchk.PRIVACY.FOREIGNER_ID.defect": "소스코드에서 외국인 등록 번호 정보를 검출했습니다.",
  "strchk.PRIVACY.IP.defect": "소스 코드 내에 IP 정보를 검출했습니다.",
  "strchk.PRIVACY.NATIONAL_ID.defect": "소스 코드 내에 주민 등록 번호 정보를 검출했습니다.",
  "strchk.PRIVACY.PASSPORT.defect": "소스 코드 내에 여권번호 정보를 검출했습니다.",
  "strchk.PRIVACY.PHONE.defect": "소스코드에서 전화 번호 정보를 검출했습니다.",
  "strchk.SECURITY.DEPLOY.REMOTELY_MONITORING.defect": "모니터링 위험이 있는 옵션을 사용했습니다.",
  "strchk.SECURITY.DISABLE.BYTECODE_VERIFICATION.defect": "'-Xverify:none' 옵션을 사용했습니다.",
  "strchk.TOO_LONG_COLUMN_SCSS_SASS.defect": "너무 긴 컬럼을 사용했습니다. 120자 이내로 줄이도록 합니다.",
  "strchk.WEAK_PASSWORD_ALGORITHM.STRING.defect": "취약한 암호화 알고리즘을 사용했습니다.",
  "stringCompare.description": "같은 문자열 변수를 비교합니다.",
  "stringLiteralWrite.description": "문자열 을 직접 바꾸는 것은 의도치 않은 동작을 할 수 있습니다.",
  "suspiciousCase.description": "case 안에서 논리 연산은 의도대로 동작하지 않을 수 있습니다. 비트 연산이나 여러 개의 case 문을 사용해야 합니다.",
  "suspiciousEqualityComparison.description": "조건문에 의심스러운 대입 연산이 있습니다. == 을 의도했는지 확인해야 합니다.",
  "suspiciousSemicolon.description": "if 문과 같은 문의 끝에 세미콜론이 사용되었습니다.",
  "swiftchk.AVOID_CATCHING_GENERIC_EXCEPTION.SWIFT.defect": "너무 일반적인 예외를 catch 하고 있습니다.",
  "swiftchk.BAD_CALL.FORBIDDEN.SWIFT.defect": "금지된 함수가 호출되었습니다.",
  "swiftchk.BAD_COOKIE.NOT_SENT_OVER_SSL.SWIFT.defect": "Cookie에 secure 플래그가 없습니다.`",
  "swiftchk.BAD_PASSWORD.EMPTY.SWIFT.defect": "빈 암호가 사용되었습니다.",
  "swiftchk.BAD_PASSWORD.HARDCODED.SWIFT.defect": "하드코딩된 암호가 사용되었습니다.",
  "swiftchk.COMPOUND_ASSIGN_SHOULD_UPDATE_LEFT.SWIFT.defect": "Left Operand가 업데이트 되지 않았습니다. \"=\"로 끝나는 이항 연산자는 반드시 왼쪽 피연산자를 업데이트 해야 합니다.",
  "swiftchk.COOKIE.OVERLY_BROAD_DOMAIN.SWIFT.defect": "쿠키의 도메인이 너무 넓게 설정되어 있습니다.",
  "swiftchk.COOKIE.OVERLY_BROAD_PATH.SWIFT.defect": "쿠키의 경로가 너무 넓게 설정되어 있습니다.",
  "swiftchk.COOKIE.PERSISTENT.SWIFT.defect": "쿠키의 만료일이 너무 길게 설정되어 있습니다.",
  "swiftchk.DESERIALIZATION_OF_UNTRUSTED_DATA.SWIFT.defect": "역직렬화시 보안에 취약한 함수를 사용합니다.",
  "swiftchk.DO_NOT_AUTO_DIAL_SITE.SWIFT.defect": "webView 를 통해 페이지를 로드합니다.",
  "swiftchk.DO_NOT_CHANGE_PRECEDENCE_AND_ASSOCIATIVITY_OF_STANDARD_OPERATORS.SWIFT.defect": "기본 연산자의 연산 순위와 결합 순위를 바꾸면 안 됩니다.",
  "swiftchk.DO_NOT_USE_HARD_CODING.IP_ADDRESS.SWIFT.defect": "IP 주소를 하드코딩하여 사용했습니다.",
  "swiftchk.DO_NOT_USE_HTTP_PROTOCOL.SWIFT.defect": "http 프로토콜이 사용되었습니다.",
  "swiftchk.DO_NOT_USE_SMS.SWIFT.defect": "sms발송을 하지 마십시오.",
  "swiftchk.DUPLICATE_CONDITION_IN_IF_SWITCH.SWIFT.defect": "하나의 조건문에서 동일한 조건을 확인합니다.",
  "swiftchk.EMPTY_CATCH_BLOCK.SWIFT.defect": "catch 블록이 비어있습니다.",
  "swiftchk.EMPTY_HMAC_KEY.SWIFT.defect": "HMAC계산에 빈 키가 사용되었습니다.",
  "swiftchk.FLOAT_SHOULD_NOT_BE_TESTED_FOR_EQUALITY.SWIFT.defect": "float 타입의 변수에 대해서 관계 연산자를 사용하여서는 안됩니다.",
  "swiftchk.FORBIDDEN_SYSTEM_FUNCTION_CALL.SWIFT.defect": "system()이 호출되었습니다.",
  "swiftchk.FORCE_UNWRAPPED_OPTIONALS.SWIFT.defect": "옵셔널 타입을 force-unwrap 해서는 안됩니다.",
  "swiftchk.HEADER_MANIPULATION.SWIFT.defect": "http 헤더의 값을 확인 없이 사용했습니다.",
  "swiftchk.HTTP_RESPONSE_SPLITTING.SWIFT.defect": "검증되지 않은 문자열을 URLRequest 헤더에 포함시켰습니다.",
  "swiftchk.HTTP_TRANSPORT.GET.SWIFT.defect": "GET 메소드가 HTTP 전송을 위해 사용됩니다.",
  "swiftchk.IDENTICAL_EXP_ON_BOTH_SIDES.SWIFT.defect": "이항 연산 기호의 양쪽에 같은 표현식이 존재합니다.",
  "swiftchk.IMPLICITLY_UNWRAPPED_OPTIONALS.SWIFT.defect": "암묵적으로 벗겨진 옵셔널을 사용해서는 안됩니다.",
  "swiftchk.IMPROPER_AUTHORIZATION.SWIFT.defect": "사용자 정보 없이 LDAP 바인딩을 수행했습니다.",
  "swiftchk.IMPROPER_RESTRICTION_OF_XML_ENTITY.SWIFT.defect": "NSXMLParser 객체의 shouldResolveExternalEntities 값을 true로 설정했습니다.",
  "swiftchk.INSECURE_TOUCHID_IMPLEMENTATION.SWIFT.defect": "LAContext가 사용되었습니다.",
  "swiftchk.JUMP_SHOULD_BE_CONDITIONAL.SWIFT.defect": "분기문은 조건문 속에 포함 되어야 합니다.",
  "swiftchk.JUMP_SHOULD_NOT_BE_FOLLOWED_BY_OTHERS.SWIFT.defect": "제어문 후에 코드가 있습니다.",
  "swiftchk.LEFTOVER_DEBUG_CODE.SWIFT.defect": "디버그 함수가 호출되었습니다.",
  "swiftchk.MISSING_LOGIN_CONTROL.SWIFT.defect": "로그인 입력 횟수가 제한되지 않았습니다.",
  "swiftchk.MISSING_OPERATION_MESSAGE.SWIFT.defect": "\"지문 입력 요청 메시지가 공백입니다.\"",
  "swiftchk.RELIANCE_ON_UNTRUSTED_ENV_INPUTS.SWIFT.defect": "보안 결정이 신뢰할 수 없는 입력에 의존적입니다.",
  "swiftchk.SECURITY_DECISION_ON_DNS_LOOKUP.SWIFT.defect": "DNS 명을 사용하여 네트워크 연결을 시도하거나 사용자 검증을 하지 마십시오. IP 주소를 대신 사용해야 합니다.",
  "swiftchk.SPECIFY_CLASS_MODIFIER.SWIFT.defect": "클래스 엑세스 레벨을 명시적으로 작성하지 않았습니다.",
  "swiftchk.SYSTEM_INFORMATION_LEAK.SWIFT.defect": "stderr 스트림으로 출력합니다.",
  "swiftchk.TERNARY_OP_SHOULD_NOT_RETURN_THE_SAME_VAL.SWIFT.defect": "삼항연산자가 조건과 관계없이 같은 값을 리턴합니다.",
  "swiftchk.TOC_TOU_ACCESS.SWIFT.defect": "자원을 사용합니다(Time of Use). 멀티프로세스 환경에서는 TOCTOU 경쟁상태가 발생할 수 있습니다.",
  "swiftchk.UNCONTROLLED_RECURSION.SWIFT.defect": "재귀 함수가 어떠한 조건문이나 반복문 블록 없이 사용되고 있습니다.",
  "swiftchk.USE_OF_INSUFFICIENT_RANDOM_VALUES.SWIFT.defect": "불충분한 난수값이 사용되었습니다.",
  "swiftchk.WEAK_ENCRYPTION.HARDCODED_KEY.SWIFT.defect": "하드코드된 암호화 키를 함수 인자에 전달합니다.",
  "swiftchk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.SWIFT.defect": "암호화 키의 크기는 {0} 이상이어야 합니다.",
  "swiftchk.WEAK_ENCRYPTION_HASH.EMPTY_PBE_SALT.SWIFT.defect": "해시 솔트로 빈 값을 사용했습니다.",
  "swiftchk.WEAK_ENCRYPTION_HASH.HARDCODED_PBE_SALT.SWIFT.defect": "하드코딩된 값을 해시 솔트로 사용했습니다.",
  "swiftchk.WEAK_ENCRYPTION_HASH.INSECURE_PBE_ITERATION.SWIFT.defect": "CCKeyDerivationPBKDF 작은 수의 iteration을 사용했습니다.",
  "swiftchk.WEAK_ENCRYPTION_HASH.NIL_PBE_SALT.SWIFT.defect": "nil 솔트가 사용되었습니다.",
  "swiftchk.WEAK_ENCRYPTION_HASH.SWIFT.defect": "MD5 해시를 사용하지 마십시오.",
  "swiftchk.WEAK_ENCRYPTION_OPTION.SWIFT.defect": "ECB 옵션을 사용하지 마십시오.",
  "swiftchk.WEAK_SERVER_CERTIFICATES.SWIFT.defect": "인증서 검증 함수의 {0} 번 인덱스의 인자값을 잘못 설정했습니다. 인증서 검증이 제대로 이루어지려면 이 값은 {1} 이어야 합니다.",
  "swiftchk.WEAK_SSL_PROTOCOL.SWIFT.defect": "이 프로토콜을 deprecated 되었습니다.",
  "synz.COMMON.branch.false": "조건이 충족되지 못하여 {0} 번 줄로 이동합니다.",
  "synz.COMMON.branch.false.assumed": "조건이 충족되지 못한다고 가정하여 {0} 번 줄로 이동합니다.",
  "synz.COMMON.branch.true": "조건이 충족되어 {0} 번 줄로 이동합니다.",
  "synz.COMMON.branch.true.assumed": "조건이 충족된다고 가정하여 {0} 번 줄로 이동합니다.",
  "synz.COMMON.called": "{0}이(가) 호출되었습니다.",
  "synz.COMMON.taint.filter": "{0}을(를) 이용하여 오염된 값이 필터링되었습니다.",
  "synz.COMMON.taint.propagate": "{0}을(를) 통해 오염된 값이 전달되었습니다.",
  "synz.COMMON.taint.sink": "{0}에서 신뢰할 수 없는 값이 사용되었습니다.",
  "synz.COMMON.taint.source": "{0}을(를) 통해 오염된 값이 입력되었습니다.",
  "synz.COMMON.value.assigned": "값이 할당되었습니다.",
  "synz.COMMON.value.assigned.to": "{0}에 값이 할당되었습니다.",
  "synz.COMMON.value.passed": "값이 전달되었습니다.",
  "synz.COMMON.value.passed.to": "{0}(으)로 값이 전달되었습니다.",
  "synz.COMMON.value.returned": "값이 반환되었습니다.",
  "synz.COMMON.value.returned.from": "{0}에서 값이 반환되었습니다.",
  "truncLongCastReturn.description": "int 값이 long 으로 리턴됩니다. 정보의 손실이 있을 수 있습니다.",
  "unassignedVariable.description": "변수에 값이 대입 되지 않았습니다.",
  "uninitStructMember.description": "구조체 멤버가 초기화되지 않았습니다.",
  "uninitdata.description": "메모리가 할당되었지만 초기화되지 않았습니다.",
  "uninitstring.description": "String 을 초기화 하지 않고 strncpy 와 같은 함수에 사용합니다.",
  "uninitvar.description": "변수가 초기화 되지 않았습니다.",
  "unknownEvaluationOrder.description": "계산 순서에 따라 의도하지 않은 작동을 할 수 있습니다.",
  "unreachableCode.description": "return, break, continue, goto, throw 문 뒤에 있는 코드는 실행되지 않습니다.",
  "unsafeClassCanLeak.description": "이 필드는 메모리 누수 가능성이 있습니다. 소멸자에서 처리 하는것으로 해결 할 수 있습니다.",
  "unsignedLessThanZero.description": "부호없는 변수를 0보다 작은지 비교합니다.",
  "unsignedPositive.description": "부호 없는 변수를 0보다 크거나 같은지 비교합니다.",
  "unusedFunction.description": "사용되지 않는 함수입니다.",
  "unusedLabel.description": "사용되지 않는 레이블입니다.",
  "unusedLabelSwitch.description": "사용되지 않는 레이블입니다. switch 문 안에 들어가야 되는지 확인해야 합니다.",
  "unusedScopedObject.description": "더이상 사용되지 않는 객체 입니다.",
  "unusedStructMember.description": "구조체 멤버가 사용되지 않았습니다.",
  "unusedVariable.description": "사용되지 않는 변수입니다.",
  "useAutoPointerArray.description": "new[] 로 만든 포인터에 auto_ptr을 사용하면 안됩니다.",
  "useAutoPointerContainer.description": "STL 컨테이너 안에 auto_ptr, unique_ptr 포인터를 저장합니다. 이 경우에 원래 값에 대한 접근을 못할 수 있습니다.",
  "useAutoPointerCopy.description": "auto_ptr 값이 카피 될 경우, 원본 포인터는 기능을 할 수 없습니다.",
  "useAutoPointerMalloc.description": "malloc으로 생성된 포인터를 auto_ptr에 사용하면 안됩니다.",
  "useClosedFile.description": "열려 있지 않은 파일을 사용합니다.",
  "uselessCallsCompare.description": "str.find(str) 은 항상 0을 리턴하기 때문에 비효율적입니다.",
  "uselessCallsEmpty.description": "의미없는 empty 함수의 호출입니다.",
  "uselessCallsRemove.description": "std::remove 의 리턴값이 무시됩니다.",
  "uselessCallsSubstr.description": "substr만 호출하는 것은 의미없는 코드입니다. = 연산자를 사용하여 변수에 대입 해야 합니다.",
  "uselessCallsSwap.description": "같은 변수를 스왑합니다.",
  "va_end_missing.description": "va_end()가 호출되지 않습니다.",
  "va_list_usedBeforeStarted.description": "va_start 호출 전에 va_list가 사용됩니다.",
  "va_start_referencePassed.description": "va_start 인자로 레퍼런스를 사용하는것은 의도치 않은 동작을 할 수 있습니다.",
  "va_start_subsequentCalls.description": "va_end() 호출이 생략되었습니다.",
  "va_start_wrongParameter.description": "va_start 에 있는 인자가 함수의 마지막 인자가 아닙니다.",
  "varFuncNullUB.description": "가변인자 함수의 마지막 인자가 NULL 일경우 의도치 않은 동작을 할 수 있습니다.",
  "variableScope.description": "변수의 scope를 줄일 수 있습니다.",
  "vbnetchk.ACTION_NOT_RESTRICTED_TO_POST.VBNET.defect": "컨트롤러 작업은 POST verb만 허용하도록 제한해야합니다.",
  "vbnetchk.BAD_CALL.FORBIDDEN.VBNET.defect": "금지 함수를 호출하는 경우를 검출합니다.",
  "vbnetchk.DISABLED_HEADER_CHECKING.VBNET.defect": "헤더 검사를 비활성화 합니다.",
  "vbnetchk.DISABLED_VIEW_STATE_MAC.VBNET.defect": "뷰 상태 MAC 을 비활성화 했습니다.",
  "vbnetchk.EMPTY_BRANCH.VBNET.defect": "비어있는 branch가 있습니다.",
  "vbnetchk.EMPTY_CATCH_BLOCK.VBNET.defect": "캐치(catch)를 하지만 예외 처리를 하지 않았습니다.",
  "vbnetchk.HARD_CODED_USER_NAME_AND_PASSWORD.VBNET.defect": "암호에 해당하는 파라미터로 상수 문자열이 들어가는 경우를 검출합니다.",
  "vbnetchk.IMPERSONATION_CONTEXT.VBNET.defect": "응용 프로그램이 가장된 자격 증명으로 실행됩니다.",
  "vbnetchk.IMPROPER_SIGNATURE.VBNET.defect": "전자 서명 관련 기능을 검증 없이 사용했습니다.",
  "vbnetchk.LEAK.SYSTEM_INFORMATION.VBNET.defect": "캐치(catch) 구문에서 시스템 정보를 출력하는 경우를 검출합니다.",
  "vbnetchk.LEFTOVER_DEBUG_CODE.VBNET.defect": "디버그 목적으로 작성된 코드가 남아있습니다.",
  "vbnetchk.NON_SERIALIZABLE_OBJECT_IN_SESSION.VBNET.defect": "HttpSessionState 속성으로 non-serializable 객체를 저장합니다.",
  "vbnetchk.OPTIONAL_SUBMODEL_REQUIRED.VBNET.defect": "Required 속성이 없습니다.",
  "vbnetchk.OVERLY_BROAD_CATCH.VBNET.defect": "광범위한 예외를 이용하여 캐치(catch)한 경우를 검출합니다.",
  "vbnetchk.PERSISTENT_AUTHENTICATION.VBNET.defect": "Persistent authenticationi 티켓을 생성합니다.",
  "vbnetchk.UNVALIDATED_WEB_API_MODEL.VBNET.defect": "모델 검증의 통과 여부를 확인해야 합니다.",
  "vbnetchk.USE_PARAMETERIZED_QUERY.VBNET.defect": "Parameterized SQL query 를 사용하지 않았습니다.",
  "vbnetchk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.VBNET.defect": "RSA 암호화 알고리즘에서 사용하는 키 사이즈가 1024보다 작은 경우를 검출합니다.",
  "vbnetchk.WEAK_ENCRYPTION.VBNET.defect": "안전하지 않은 암호화 알고리즘을 사용한 경우를 검출합니다.",
  "vbnetchk.WEAK_SERVER_CERTIFICATES.VBNET.defect": "콜백 함수가 모든 인증서를 허용하는 방식으로 구현되었습니다.",
  "vbschk.BAD_CALL.FORBIDDEN.VBS.defect": "금지된 함수를 사용하지 않도록 합니다.",
  "vbschk.BAD_CROSS_ORIGIN_RESOURCE_SHARING.VBS.defect": "과도하게 허용된 Cross-Origin Resource Sharing(CORS) 정책을 선언했습니다.",
  "vbschk.BAD_TYPE_CHECKING.VBS.defect": "값이 비어있는지 여부를 확인하지 않고 타입 검사를 했습니다.",
  "vbschk.FORBIDDEN.WITH_STATEMENT.VBS.defect": "With 문을 사용했습니다.",
  "vbschk.INSECURE_RANDOMNESS.VBS.defect": "Rnd() 함수를 사용했습니다.",
  "vbschk.MISSING_RETURN.FUNCTION.VBS.defect": "함수 안에 반환문이 없습니다.",
  "vbschk.UNSAFE_REFLECTION.VBS.defect": "CallByName() 함수가 사용되었습니다.",
  "vbschk.WEAK_ENCRYPTION.DES.VBS.defect": "안전하지 않은 암호화 알고리즘(DES)이 사용되었습니다.",
  "vbschk.WEAK_ENCRYPTION.HASH.VBS.defect": "안전하지 않은 해시값을 사용하는 암호화 알고리즘이 사용되었습니다.",
  "vbschk.WEAK_ENCRYPTION.INSUFFICIENT_KEY_SIZE.VBS.defect": "암호화하기에 불충분한 크기의 키를 사용했습니다.",
  "weblink.COMMON.controller_entrance": "컨트롤러 {0}이(가) 수행됩니다.",
  "weblink.COMMON.view_entrance": "{0}(으)로부터 뷰로 이동합니다.",
  "weblink.COMMON.view_link": "{0} 뷰로 이동합니다.",
  "weblink.SPRING.request_param": "{0} 번 매개 변수를 request 의 {1} 매개 변수로 설정합니다.",
  "weblink.SPRING.response_body": "반환 값이 response 의 body로 설정됩니다.",
  "weblink.STRUTS2.getter": "request 의 {0} 속성을 getter를 이용하여 얻어온 필드 {0} 의 값으로 설정합니다.",
  "weblink.STRUTS2.setter": "필드 {0} 의 값을 request 의 {0} 매개 변수로 setter 를 통해 설정합니다.",
  "wm__caution__analysis__browser__command__failure__content": "브라우저가 실행할 수 없는 명령이 발생하였습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__command__failure__title": "분석 중 브라우저 명령어 실행 실패",
  "wm__caution__analysis__browser__cookie__create__failure__content": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__cookie__create__failure__title": "분석 중 브라우저 쿠키 설정 실패",
  "wm__caution__analysis__browser__interact__failure__content": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__interact__failure__title": "분석 도중 브라우저 에러 발생",
  "wm__caution__analysis__browser__interact__timeout__content": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__interact__timeout__title": "분석 중 브라우저 응답 지연",
  "wm__caution__analysis__browser__invalid__content": "브라우저에 접근이 되지 않아 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__invalid__title": "분석 중 브라우저 충돌 발생",
  "wm__caution__analysis__browser__javascript__failure__content": "JavaScript 실행 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__javascript__failure__title": "분석 중 JavaScript 실행 실패",
  "wm__caution__analysis__browser__javascript__timeout__content": "JavaScript 실행이 지연되어 실행에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__javascript__timeout__title": "분석 중 JavaScript 실행 시간 초과",
  "wm__caution__analysis__browser__login_record__failure__content": "분석을 위해 수집 과정에서 재현하였던 로그인 기록 파일을 다시 재현하는데 실패했습니다. 로그인을 하지 못한 채 분석이 진행됩니다. 로그인 기록 파일 내용이 변경되었거나 로그인 페이지가 변경되었는지 확인해야 합니다.\n\n{0}",
  "wm__caution__analysis__browser__login_record__failure__title": "분석 중 로그인 클립보드 재생 실패",
  "wm__caution__analysis__browser__login_record__interact__failure__content": "로그인 기록 파일을 재현하던 도중 오류가 발생하였습니다. 이로 인해 로그인이 수행되지 않을 수 있습니다. 이벤트 클립보드를 통해 로그인 기록 파일이 정상적으로 재생되는지 확인해야 합니다.\n\n{0}\n\n{1}",
  "wm__caution__analysis__browser__login_record__interact__failure__title": "분석 중 로그인 클립보드에서 실패한 이벤트 발생",
  "wm__caution__analysis__browser__session__create__failure__content": "브라우저의 세션이 생성되지 않아 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__session__create__failure__title": "분석 중 브라우저 세션 생성 실패",
  "wm__caution__analysis__browser__session__missing__content": "세션이 없습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__session__missing__title": "분석 중 브라우저 세션 유실됨",
  "wm__caution__analysis__browser__socket__timeout__content": "브라우저에서 대상 웹 애플리케이션 사이의 소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__socket__timeout__title": "분석 도중 소켓 생성 실패",
  "wm__caution__analysis__browser__web_element__alert__failure__content": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__web_element__alert__failure__title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__analysis__browser__web_element__alert__missing__content": "없는 경고창의 처리를 시도하였습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__web_element__alert__missing__title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__analysis__browser__web_element__interact__invalid__content": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__web_element__interact__invalid__title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__analysis__browser__web_element__interact__missing__content": "접근하려는 HTML 요소가 존재하지 않습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__web_element__interact__missing__title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__analysis__browser__web_element__interact__timeout__content": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__web_element__interact__timeout__title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__analysis__browser__window__missing__content": "없는 윈도우로 이동을 시도하였습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__browser__window__missing__title": "분석 도중 브라우저 윈도우 전환 오류",
  "wm__caution__analysis__client__host__invalid__content": "호스트를 알 수 없어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__host__invalid__title": "분석 중 HTTP 요청의 잘못된 호스트",
  "wm__caution__analysis__client__over_redirection__content": "요청 메시지의 리다이렉션 횟수가 많아 응답을 받지 않았습니다.\n\n```{0}```",
  "wm__caution__analysis__client__over_redirection__title": "요청 중 과도한 리다이렉션 발생",
  "wm__caution__analysis__client__protocol__invalid__content": "HTTP 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__protocol__invalid__title": "분석 중 HTTP 요청 프로토콜 오류 발생",
  "wm__caution__analysis__client__service__invalid__content": "서비스를 알 수 없어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__service__invalid__title": "분석 중 HTTP 요청의 잘못된 형식",
  "wm__caution__analysis__client__socket__failure__content": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__socket__failure__title": "분석 중 HTTP 요청 전송 실패",
  "wm__caution__analysis__client__ssl_handshake__failure__content": "SSL 연결이 거부되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n{0}",
  "wm__caution__analysis__client__ssl_handshake__failure__title": "분석 중 HTTP 요청 SSL 오류 발생",
  "wm__caution__analysis__client__ssl_key__invalid__content": "잘못된 SSL 키입니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__ssl_key__invalid__title": "분석 중 HTTP 요청 SSL 오류 발생",
  "wm__caution__analysis__client__ssl_peer__invalid__content": "대상이 확인되지 않아 SSL 연결을 할 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__ssl_peer__invalid__title": "분석 중 HTTP 요청 SSL 오류 발생",
  "wm__caution__analysis__client__ssl_protocol__invalid__content": "SSL 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__ssl_protocol__invalid__title": "분석 중 HTTP 요청 SSL 오류 발생",
  "wm__caution__analysis__client__timeout__content": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__timeout__title": "분석 중 HTTP 요청 시간 초과",
  "wm__caution__analysis__client__unexpected__failure__content": "HTTP 요청 중 알 수 없는 오류가 발생했습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__analysis__client__unexpected__failure__title": "분석 중 HTTP 요청 전송 실패",
  "wm__caution__analysis__process__timeout__content": "설정된 최대 분석 시간 {0}분에 도달하여 분석을 종료합니다.",
  "wm__caution__analysis__process__timeout__title": "최대 분석 시간 옵션에 의한 분석 종료",
  "wm__caution__analysis__socket__bind__failure__content": "포트가 사용 중이거나 로컬 주소가 잘못되어 소켓 바인딩에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__socket__bind__failure__title": "분석 도중 소켓 바인딩 실패",
  "wm__caution__analysis__socket__create__failure__content": "연결이 거부되어 소켓 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__socket__create__failure__title": "분석 도중 소켓 연결 지연",
  "wm__caution__analysis__socket__host__invalid__content": "대상에 도달하지 못하여 소켓 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__socket__host__invalid__title": "분석 도중 소켓 생성 실패",
  "wm__caution__analysis__socket__port__invalid__content": "범위를 벗어난 포트로 인해 소켓 생성에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__socket__port__invalid__title": "분석 도중 소켓 생성 실패",
  "wm__caution__analysis__socket__timeout__content": "소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__socket__timeout__title": "분석 도중 소켓 생성 실패",
  "wm__caution__analysis__socket__unexpected__failure__content": "소켓 통신 중 알 수 없는 오류가 발생했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__analysis__socket__unexpected__failure__title": "분석 도중 소켓 생성 실패",
  "wm__caution__analysis__unexpected__failure__content": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서의 분석에 실패했습니다.\n\n```{0}```",
  "wm__caution__browser__login_record__interact__failure__content": "로그인 기록 파일을 재현하던 도중 오류가 발생하였습니다. 이로 인해 로그인이 수행되지 않을 수 있습니다. 이벤트 클립보드를 통해 로그인 기록 파일이 정상적으로 재생되는지 확인해야 합니다.\n\n{0}\n\n{1}",
  "wm__caution__browser__login_record__interact__failure__title": "로그인 클립보드 실행 중 실패한 이벤트 발생",
  "wm__caution__crawl__browser__command__failure__content": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__command__failure__title": "수집 중 브라우저 명령어 실행 실패",
  "wm__caution__crawl__browser__cookie__create__failure__content": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__cookie__create__failure__title": "수집 중 브라우저 쿠키 설정 실패",
  "wm__caution__crawl__browser__endpoint__blacklist__content": "해당 페이지에서 오류가 지속적으로 발생하여 수집을 생략합니다.\n\n```{0}```",
  "wm__caution__crawl__browser__endpoint__blacklist__title": "페이지 수집 대상 제외 등록",
  "wm__caution__crawl__browser__interact__failure__content": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__interact__failure__title": "수집 도중 브라우저 에러 발생",
  "wm__caution__crawl__browser__interact__timeout__content": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다.\n\n```{0}```",
  "wm__caution__crawl__browser__interact__timeout__title": "수집 중 브라우저 응답 지연",
  "wm__caution__crawl__browser__invalid__content": "브라우저에 접근이 되지 않아 브라우저를 재시작합니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__invalid__title": "수집 중 브라우저 충돌 발생",
  "wm__caution__crawl__browser__javascript__failure__content": "JavaScript 실행 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__javascript__failure__title": "수집 중 JavaScript 실행 실패",
  "wm__caution__crawl__browser__javascript__timeout__content": "JavaScript 실행이 지연되어 실행에 실패했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__javascript__timeout__title": "수집 중 JavaScript 실행 시간 초과",
  "wm__caution__crawl__browser__login_record__interact__failure__content": "로그인 기록 파일을 재현하던 도중 오류가 발생하였습니다. 이로 인해 로그인이 수행되지 않을 수 있습니다. 이벤트 클립보드를 통해 로그인 기록 파일이 정상적으로 재생되는지 확인해야 합니다.\n\n{0}\n\n{1}",
  "wm__caution__crawl__browser__login_record__interact__failure__title": "수집 중 로그인 클립보드에서 실패한 이벤트 발생",
  "wm__caution__crawl__browser__session__create__failure__content": "브라우저의 세션이 생성되지 않아 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다.\n\n```{0}```",
  "wm__caution__crawl__browser__session__create__failure__title": "수집 중 브라우저 세션 생성 실패",
  "wm__caution__crawl__browser__session__missing__content": "세션이 없습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__session__missing__title": "수집 중 브라우저 세션 유실됨",
  "wm__caution__crawl__browser__socket__timeout__content": "브라우저에서 대상 웹 애플리케이션 사이의 소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "wm__caution__crawl__browser__socket__timeout__title": "수집 도중 소켓 생성 실패",
  "wm__caution__crawl__browser__web_element__alert__failure__content": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__web_element__alert__failure__title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__crawl__browser__web_element__alert__missing__content": "없는 경고창의 처리를 시도했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__web_element__alert__missing__title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__crawl__browser__web_element__interact__invalid__content": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__web_element__interact__invalid__title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__crawl__browser__web_element__interact__missing__content": "접근하려는 HTML 요소가 존재하지 않습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다.\n\n```{0}```",
  "wm__caution__crawl__browser__web_element__interact__missing__title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__crawl__browser__web_element__interact__timeout__content": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__web_element__interact__timeout__title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "wm__caution__crawl__browser__window__missing__content": "없는 윈도우로 이동을 시도했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__browser__window__missing__title": "수집 도중 브라우저 윈도우 전환 오류",
  "wm__caution__crawl__client__host__invalid__content": "호스트를 알 수 없어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__host__invalid__title": "수집 중 HTTP 요청의 잘못된 호스트",
  "wm__caution__crawl__client__protocol__invalid__content": "HTTP 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__protocol__invalid__title": "수집 중 HTTP 요청 프로토콜 오류 발생",
  "wm__caution__crawl__client__service__invalid__content": "서비스를 알 수 없어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__service__invalid__title": "수집 중 HTTP 요청의 잘못된 형식",
  "wm__caution__crawl__client__socket__failure__content": "TCP 연결이 거부되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__socket__failure__title": "수집 중 HTTP 요청 전송 실패",
  "wm__caution__crawl__client__ssl_handshake__failure__content": "SSL 연결이 거부되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__ssl_handshake__failure__title": "수집 중 HTTP 요청 SSL 오류 발생",
  "wm__caution__crawl__client__ssl_key__invalid__content": "잘못된 SSL 키입니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__ssl_key__invalid__title": "수집 중 HTTP 요청 SSL 오류 발생",
  "wm__caution__crawl__client__ssl_peer__invalid__content": "대상이 확인되지 않아 SSL 연결을 할 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__ssl_peer__invalid__title": "수집 중 HTTP 요청 SSL 오류 발생",
  "wm__caution__crawl__client__ssl_protocol__invalid__content": "SSL 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__ssl_protocol__invalid__title": "수집 중 HTTP 요청 SSL 오류 발생",
  "wm__caution__crawl__client__timeout__content": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__timeout__title": "수집 중 HTTP 요청 시간 초과",
  "wm__caution__crawl__client__unexpected__failure__content": "HTTP 요청 중 알 수 없는 오류가 발생했습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__caution__crawl__client__unexpected__failure__title": "수집 중 HTTP 요청 전송 실패",
  "wm__caution__crawl__endpoint__blacklist__content": "다음 URL에 대한 요청이 실패하여 해당 URL을 차단합니다.\n\n```{0}```\n\n요청에 실패하는 원인은 다음과 같습니다.\n\n{1}",
  "wm__caution__crawl__endpoint__blacklist__title": "URL 수집 대상에서 제외",
  "wm__caution__crawl__process__endpoint__limit__content": "설정된 최대 수집 URL 수 {0}개에 도달하여 수집을 종료합니다.",
  "wm__caution__crawl__process__endpoint__limit__title": "최대 수집 URL 수 옵션에 의한 수집 종료",
  "wm__caution__crawl__process__timeout__content": "설정된 최대 수집 시간 {0}분에 도달하여 수집을 종료합니다.",
  "wm__caution__crawl__process__timeout__title": "최대 수집 시간 옵션에 의한 수집 종료",
  "wm__caution__crawl__unexpected__failure__content": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "wm__tag__access": "접근",
  "wm__tag__analysis": "분석",
  "wm__tag__browser": "웹 브라우저",
  "wm__tag__client": "HTTP 클라이언트",
  "wm__tag__cookie": "쿠키",
  "wm__tag__crawl": "수집",
  "wm__tag__create": "생성",
  "wm__tag__dast": "DAST",
  "wm__tag__endpoint": "엔드포인트",
  "wm__tag__failure": "실패",
  "wm__tag__find": "발견",
  "wm__tag__inspect": "검출",
  "wm__tag__interact": "상호작용",
  "wm__tag__invalid": "부적절",
  "wm__tag__limit": "제한",
  "wm__tag__login_record": "로그인 기록",
  "wm__tag__missing": "누락",
  "wm__tag__openapi": "OpenAPI",
  "wm__tag__parsing": "구문 분석",
  "wm__tag__pre": "사전 분석",
  "wm__tag__process": "엔진 프로세스",
  "wm__tag__recheck": "이행 분석",
  "wm__tag__seed_url": "분석 대상 URL",
  "wm__tag__session": "세션",
  "wm__tag__socket": "TCP 소켓",
  "wm__tag__success": "성공",
  "wm__tag__timeout": "시간 초과",
  "wm__tag__web_element": "웹 요소",
  "wm__warning__analysis__process__checker__missing__content": "분석에 이용할 검출 규칙을 찾을 수 없습니다. 작업 프로파일이나 검출 규칙 목록을 확인하세요.",
  "wm__warning__analysis__process__checker__missing__title": "웹 취약점 검출 규칙을 찾을 수 없음",
  "wm__warning__analysis__process__load_result__failure__content": "분석할 대상을 불어오는 데 실패했습니다. 수집 결과를 확인하세요.",
  "wm__warning__analysis__process__load_result__failure__title": "수집 결과 불러오기 실패",
  "wm__warning__analysis__process__out_of_memory__content": "메모리가 부족하여 분석에 실패했습니다. 메모리를 추가하거나 동시 분석 수를 줄여야 합니다.",
  "wm__warning__analysis__process__out_of_memory__title": "메모리 부족으로 인한 분석 실패",
  "wm__warning__analysis__unexpected__failure__content": "wm__warning__analysis__unexpected__failure__content",
  "wm__warning__analysis__unexpected__failure__title": "URL 분석 중 알 수 없는 에러 발생",
  "wm__warning__crawl__browser__seed_url__access__failure__content": "브라우저가 분석 대상 URL에 접근할 수 없습니다. 브라우저로 수집을 할 수 없습니다.\n\n해당 분석 대상 URL은 다음과 같습니다. \n\n```{0}```",
  "wm__warning__crawl__browser__seed_url__access__failure__title": "수집 도중 분석 대상 URL 접근 불가",
  "wm__warning__crawl__browser__unexpected__failure__content": "브라우저를 실행할 수 없어 브라우저를 통한 수집 및 분석을 할 수 없습니다.\n\n다음의 경로에 있는 브라우저 바이너리를 확인해야 합니다.\n\n```{0}```",
  "wm__warning__crawl__browser__unexpected__failure__title": "브라우저 실행 불가",
  "wm__warning__crawl__client__seed_url__access__failure__content": "HTTP 클라이언트가 분석 대상 URL로 요청을 보낼 수 없습니다. HTTP 클라이언트로 수집을 할 수 없습니다.\n\n해당 분석 대상 URL은 다음과 같습니다. \n\n```{0}```",
  "wm__warning__crawl__client__seed_url__access__failure__title": "수집 도중 분석 대상 URL 접근 불가",
  "wm__warning__crawl__openapi__endpoint__access__failure__content": "수집 도중, OpenAPI 엔드포인트 접근에 실패했습니다.\n\n해당 엔드포인트의 URL은 다음과 같습니다: \n\n```{0}```",
  "wm__warning__crawl__openapi__endpoint__access__failure__title": "수집 도중 OpenAPI 엔드포인트 접근 실패",
  "wm__warning__crawl__openapi__parsing__failure__content": "수집 도중, OpenAPI 명세 파일 분석에 실패했습니다. 제공한 명세 파일이 올바른 파일인지 확인하세요.",
  "wm__warning__crawl__openapi__parsing__failure__title": "수집 도중 OpenAPI 명세 파일 분석 실패",
  "wm__warning__crawl__openapi__unexpected__failure__content": "수집 도중, 예상치 못한 오류가 발생하여 OpenAPI 처리에 실패했습니다.",
  "wm__warning__crawl__openapi__unexpected__failure__title": "수집 도중 예상치 못한 OpenAPI 처리 실패",
  "wm__warning__crawl__process__out_of_memory__content": "메모리가 부족하여 수집에 실패했습니다. 메모리를 추가하거나 동시 분석 수를 줄여야 합니다.",
  "wm__warning__crawl__process__out_of_memory__title": "메모리 부족으로 인한 수집 실패",
  "wm__warning__crawl__process__save_result__failure__content": "수집 결과를 저장하는 과정에서 문제가 발생했습니다.",
  "wm__warning__crawl__process__save_result__failure__title": "수집 결과 저장 실패",
  "wm__warning__crawl__process__seed_url__missing__content": "분석 대상 URL을 찾을 수 없습니다.",
  "wm__warning__crawl__process__seed_url__missing__title": "분석 대상 URL을 찾을 수 없음",
  "wm__warning__crawl__unexpected__failure__content": "wm__warning__crawl__unexpected__failure__content",
  "wm__warning__crawl__unexpected__failure__title": "URL 수집 중 알 수 없는 에러 발생",
  "wm__warning__pre__browser__login_record__find__invalid__content": "사전 분석 도중, 브라우저에서 적절하지 않은 로그인 기록을 발견했습니다. \n\n해당 로그인 기록을 실행할 수 없습니다.\n\n해당 로그인 기록을 포함하는 파일은 다음과 같습니다: \n\n```{0}```",
  "wm__warning__pre__browser__login_record__find__invalid__title": "사전 분석 도중 브라우저에서 적절하지 않은 로그인 기록 발견",
  "wm__warning__pre__browser__seed_url__access__failure__content": "사전 분석 도중, 브라우저에서 분석 대상 URL에 대한 접근에 실패했습니다.\n\n해당 분석 대상 URL은 다음과 같습니다: \n\n```{0}```",
  "wm__warning__pre__browser__seed_url__access__failure__title": "사전 분석 도중 브라우저에서 분석 대상 URL 접근 실패",
  "wm__warning__pre__openapi__endpoint__access__failure__content": "사전 분석 도중, OpenAPI 엔드포인트 접근에 실패했습니다.\n\n해당 엔드포인트의 URL은 다음과 같습니다: \n\n```{0}```",
  "wm__warning__pre__openapi__endpoint__access__failure__title": "사전 분석 도중 OpenAPI 엔드포인트 접근 실패",
  "wm__warning__pre__openapi__parsing__failure__content": "사전 분석 도중, OpenAPI 명세 파일 분석에 실패했습니다. 제공한 명세 파일이 올바른 파일인지 확인하세요.",
  "wm__warning__pre__openapi__parsing__failure__title": "사전 분석 도중 OpenAPI 명세 파일 분석 실패",
  "wm__warning__pre__openapi__unexpected__failure__content": "사전 분석 도중, 예상치 못한 오류가 발생하여 OpenAPI 처리에 실패했습니다.",
  "wm__warning__pre__openapi__unexpected__failure__title": "사전 분석 도중 예기치 못한 OpenAPI 처리 실패",
  "wm__warning__recheck__browser__seed_url__access__failure__content": "이행 분석 도중, 브라우저에서 분석 대상 URL에 대한 접근에 실패했습니다.\n\n해당 분석 대상 URL은 다음과 같습니다: \n\n```{0}```",
  "wm__warning__recheck__browser__seed_url__access__failure__title": "이행 분석 도중 브라우저에서 분석 대상 URL 접근 실패",
  "wm__warning__recheck__inspect__failure__content": "이행 분석 도중, 하나 이상의 이슈 분석이 실패했습니다.",
  "wm__warning__recheck__inspect__failure__title": "이행 분석 도중 이슈 분석 실패",
  "wm__warning__recheck__unexpected__failure__content": "이행 분석 도중, 예상치 못한 오류가 발생하여 처리에 실패했습니다.",
  "wm__warning__recheck__unexpected__failure__title": "이행 분석 도중 예상치 못한 처리 실패",
  "work.dast.ANALYSIS_BROWSER_COMMAND_FAILURE.content": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_COMMAND_FAILURE.title": "분석 중 브라우저 명령어 실행 실패",
  "work.dast.ANALYSIS_BROWSER_COOKIE_CREATE_FAILURE.content": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_COOKIE_CREATE_FAILURE.title": "분석 중 브라우저 쿠키 설정 실패",
  "work.dast.ANALYSIS_BROWSER_INTERACT_FAILURE.content": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_INTERACT_FAILURE.title": "분석 도중 브라우저 에러 발생",
  "work.dast.ANALYSIS_BROWSER_INTERACT_TIMEOUT.content": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_INTERACT_TIMEOUT.title": "분석 중 브라우저 응답 지연",
  "work.dast.ANALYSIS_BROWSER_INVALID.content": "브라우저에 접근이 되지 않아 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_INVALID.title": "분석 중 브라우저 충돌 발생",
  "work.dast.ANALYSIS_BROWSER_JAVASCRIPT_FAILURE.content": "JavaScript 실행 오류가 발생했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_JAVASCRIPT_FAILURE.title": "분석 중 JavaScript 실행 실패",
  "work.dast.ANALYSIS_BROWSER_JAVASCRIPT_TIMEOUT.content": "JavaScript 실행이 지연되어 실행에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_JAVASCRIPT_TIMEOUT.title": "분석 중 JavaScript 실행 시간 초과",
  "work.dast.ANALYSIS_BROWSER_LOGIN_RECORD_FAILURE.content": "수집 과정에서 재현했던 로그인 기록 파일을 다시 재현하는데 실패했습니다. 로그인을 수행하지 못한 채 분석이 진행됩니다. 로그인 기록 파일 내용이 변경되었거나 로그인 페이지가 변경되었는지 확인해야 합니다.\n\n{0}",
  "work.dast.ANALYSIS_BROWSER_LOGIN_RECORD_FAILURE.title": "분석 중 로그인 클립보드 재생 실패",
  "work.dast.ANALYSIS_BROWSER_LOGIN_RECORD_INTERACT_FAILURE.content": "로그인 기록 파일을 재현하던 도중 오류가 발생했습니다. 이로 인해 로그인이 수행되지 않을 수 있습니다. 이벤트 클립보드를 통해 로그인 기록 파일이 정상적으로 재생되는지 확인해야 합니다.\n\n{0}\n\n{1}",
  "work.dast.ANALYSIS_BROWSER_LOGIN_RECORD_INTERACT_FAILURE.title": "분석 중 로그인 클립보드에서 실패한 이벤트 발생",
  "work.dast.ANALYSIS_BROWSER_SESSION_CREATE_FAILURE.content": "브라우저의 세션이 생성되지 않아 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_SESSION_CREATE_FAILURE.title": "분석 중 브라우저 세션 생성 실패",
  "work.dast.ANALYSIS_BROWSER_SESSION_MISSING.content": "세션이 없습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_SESSION_MISSING.title": "분석 중 브라우저 세션 유실됨",
  "work.dast.ANALYSIS_BROWSER_SOCKET_TIMEOUT.content": "브라우저에서 대상 웹 애플리케이션 사이의 소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_SOCKET_TIMEOUT.title": "분석 도중 소켓 생성 실패",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_ALERT_FAILURE.content": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_ALERT_FAILURE.title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_ALERT_MISSING.content": "없는 경고창의 처리를 시도하였습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_ALERT_MISSING.title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_INTERACT_INVALID.content": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_INTERACT_INVALID.title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_INTERACT_MISSING.content": "접근하려는 HTML 요소가 존재하지 않습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_INTERACT_MISSING.title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_INTERACT_TIMEOUT.content": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_WEB_ELEMENT_INTERACT_TIMEOUT.title": "분석 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.ANALYSIS_BROWSER_WINDOW_MISSING.content": "없는 윈도우로 이동을 시도하였습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_BROWSER_WINDOW_MISSING.title": "분석 도중 브라우저 윈도우 전환 오류",
  "work.dast.ANALYSIS_CLIENT_HOST_INVALID.content": "호스트를 알 수 없어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_HOST_INVALID.title": "분석 중 HTTP 요청의 잘못된 호스트",
  "work.dast.ANALYSIS_CLIENT_OVER_REDIRECTION.content": "요청 메시지의 리다이렉션 횟수가 많아 응답을 받지 않았습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_OVER_REDIRECTION.title": "요청 중 과도한 리다이렉션 발생",
  "work.dast.ANALYSIS_CLIENT_PROTOCOL_INVALID.content": "HTTP 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_PROTOCOL_INVALID.title": "분석 중 HTTP 요청 프로토콜 오류 발생",
  "work.dast.ANALYSIS_CLIENT_SERVICE_INVALID.content": "서비스를 알 수 없어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_SERVICE_INVALID.title": "분석 중 HTTP 요청의 잘못된 형식",
  "work.dast.ANALYSIS_CLIENT_SOCKET_FAILURE.content": "TCP 연결이 거부되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_SOCKET_FAILURE.title": "분석 중 HTTP 요청 전송 실패",
  "work.dast.ANALYSIS_CLIENT_SSL_HANDSHAKE_FAILURE.content": "SSL 연결이 거부되었습니다. 이로 인해 다음 요청의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_SSL_HANDSHAKE_FAILURE.title": "분석 중 HTTP 요청 SSL 오류 발생",
  "work.dast.ANALYSIS_CLIENT_SSL_KEY_INVALID.content": "잘못된 SSL 키입니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_SSL_KEY_INVALID.title": "분석 중 HTTP 요청 SSL 오류 발생",
  "work.dast.ANALYSIS_CLIENT_SSL_PEER_INVALID.content": "대상이 확인되지 않아 SSL 연결을 할 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_SSL_PEER_INVALID.title": "분석 중 HTTP 요청 SSL 오류 발생",
  "work.dast.ANALYSIS_CLIENT_SSL_PROTOCOL_INVALID.content": "SSL 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_SSL_PROTOCOL_INVALID.title": "분석 중 HTTP 요청 SSL 오류 발생",
  "work.dast.ANALYSIS_CLIENT_TIMEOUT.content": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_TIMEOUT.title": "분석 중 HTTP 요청 시간 초과",
  "work.dast.ANALYSIS_CLIENT_UNEXPECTED_FAILURE.content": "HTTP 요청 중 알 수 없는 오류가 발생했습니다. 이로 인해 다음 요청에서의 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_CLIENT_UNEXPECTED_FAILURE.title": "분석 중 HTTP 요청 전송 실패",
  "work.dast.ANALYSIS_PROCESS_CHECKER_MISSING.content": "분석에 이용할 검출 규칙을 찾을 수 없습니다. 작업 프로파일이나 검출 규칙 목록을 확인하세요.",
  "work.dast.ANALYSIS_PROCESS_CHECKER_MISSING.title": "웹 취약점 검출 규칙을 찾을 수 없음",
  "work.dast.ANALYSIS_PROCESS_LOAD_RESULT_FAILURE.content": "분석할 대상을 불어오는 데 실패했습니다. 수집 결과를 확인하세요.",
  "work.dast.ANALYSIS_PROCESS_LOAD_RESULT_FAILURE.title": "수집 결과 불러오기 실패",
  "work.dast.ANALYSIS_PROCESS_OUT_OF_MEMORY.content": "메모리가 부족하여 분석에 실패했습니다. 메모리를 추가하거나 동시 분석 수를 줄여야 합니다.",
  "work.dast.ANALYSIS_PROCESS_OUT_OF_MEMORY.title": "메모리 부족으로 인한 분석 실패",
  "work.dast.ANALYSIS_PROCESS_TIMEOUT.content": "설정된 최대 분석 시간 {0}분에 도달하여 분석을 종료합니다.",
  "work.dast.ANALYSIS_PROCESS_TIMEOUT.title": "최대 분석 시간 옵션에 의한 분석 종료",
  "work.dast.ANALYSIS_SOCKET_BIND_FAILURE.content": "포트가 사용 중이거나 로컬 주소가 잘못되어 소켓 바인딩에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_SOCKET_BIND_FAILURE.title": "분석 도중 소켓 바인딩 실패",
  "work.dast.ANALYSIS_SOCKET_CREATE_FAILURE.content": "연결이 거부되어 소켓 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_SOCKET_CREATE_FAILURE.title": "분석 도중 소켓 연결 지연",
  "work.dast.ANALYSIS_SOCKET_HOST_INVALID.content": "대상에 도달하지 못하여 소켓 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_SOCKET_HOST_INVALID.title": "분석 도중 소켓 생성 실패",
  "work.dast.ANALYSIS_SOCKET_PORT_INVALID.content": "범위를 벗어난 포트로 인해 소켓 생성에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_SOCKET_PORT_INVALID.title": "분석 도중 소켓 생성 실패",
  "work.dast.ANALYSIS_SOCKET_TIMEOUT.content": "소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_SOCKET_TIMEOUT.title": "분석 도중 소켓 생성 실패",
  "work.dast.ANALYSIS_SOCKET_UNEXPECTED_FAILURE.content": "소켓 통신 중 알 수 없는 오류가 발생했습니다. 이로 인해 다음 주소에 대한 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.ANALYSIS_SOCKET_UNEXPECTED_FAILURE.title": "분석 도중 소켓 생성 실패",
  "work.dast.ANALYSIS_UNEXPECTED_FAILURE.content": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서 분석에 실패했습니다.\n\n```{0}```",
  "work.dast.ANALYSIS_UNEXPECTED_FAILURE.title": "URL 분석 중 알 수 없는 에러 발생",
  "work.dast.BROWSER_LOGIN_RECORD_INTERACT_FAILURE.content": "로그인 기록 파일을 재현하던 도중 오류가 발생하였습니다. 이로 인해 로그인이 수행되지 않을 수 있습니다. 이벤트 클립보드를 통해 로그인 기록 파일이 정상적으로 재생되는지 확인해야 합니다.\n\n{0}\n\n{1}",
  "work.dast.BROWSER_LOGIN_RECORD_INTERACT_FAILURE.title": "로그인 클립보드 실행 중 실패한 이벤트 발생",
  "work.dast.CLIENT_TIMEOUT.content": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. \n\n해당 요청은 다음과 같습니다:\n\n```{0}```",
  "work.dast.CLIENT_TIMEOUT.title": "HTTP 요청 시간 초과",
  "work.dast.CRAWL_BROWSER_COMMAND_FAILURE.content": "브라우저가 실행할 수 없는 명령이 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_COMMAND_FAILURE.title": "수집 중 브라우저 명령어 실행 실패",
  "work.dast.CRAWL_BROWSER_COOKIE_CREATE_FAILURE.content": "브라우저에 쿠키를 설정할 수 없습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_COOKIE_CREATE_FAILURE.title": "수집 중 브라우저 쿠키 설정 실패",
  "work.dast.CRAWL_BROWSER_ENDPOINT_BLACKLIST.content": "해당 페이지에서 오류가 지속적으로 발생하여 수집을 생략합니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_ENDPOINT_BLACKLIST.title": "페이지 수집 대상 제외 등록",
  "work.dast.CRAWL_BROWSER_INTERACT_FAILURE.content": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_INTERACT_FAILURE.title": "수집 도중 브라우저 에러 발생",
  "work.dast.CRAWL_BROWSER_INTERACT_TIMEOUT.content": "브라우저의 반응이 지연되어 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_INTERACT_TIMEOUT.title": "수집 중 브라우저 응답 지연",
  "work.dast.CRAWL_BROWSER_INVALID.content": "브라우저에 접근이 되지 않아 브라우저를 재시작합니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_INVALID.title": "수집 중 브라우저 충돌 발생",
  "work.dast.CRAWL_BROWSER_JAVASCRIPT_FAILURE.content": "JavaScript 실행 오류가 발생했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_JAVASCRIPT_FAILURE.title": "수집 중 JavaScript 실행 실패",
  "work.dast.CRAWL_BROWSER_JAVASCRIPT_TIMEOUT.content": "JavaScript 실행이 지연되어 실행에 실패했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_JAVASCRIPT_TIMEOUT.title": "수집 중 JavaScript 실행 시간 초과",
  "work.dast.CRAWL_BROWSER_LOGIN_RECORD_INTERACT_FAILURE.content": "로그인 기록 파일을 재현하던 도중 오류가 발생하였습니다. 이로 인해 로그인이 수행되지 않을 수 있습니다. 이벤트 클립보드를 통해 로그인 기록 파일이 정상적으로 재생되는지 확인해야 합니다.\n\n{0}\n\n{1}",
  "work.dast.CRAWL_BROWSER_LOGIN_RECORD_INTERACT_FAILURE.title": "수집 중 로그인 클립보드에서 실패한 이벤트 발생",
  "work.dast.CRAWL_BROWSER_SEED_URL_ACCESS_FAILURE.content": "브라우저가 분석 대상 URL에 접근할 수 없습니다. 브라우저로 수집을 할 수 없습니다.\n\n해당 분석 대상 URL은 다음과 같습니다. \n\n```{0}```",
  "work.dast.CRAWL_BROWSER_SEED_URL_ACCESS_FAILURE.title": "수집 도중 분석 대상 URL 접근 불가",
  "work.dast.CRAWL_BROWSER_SESSION_CREATE_FAILURE.content": "브라우저의 세션이 생성되지 않아 브라우저를 재시작합니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_SESSION_CREATE_FAILURE.title": "수집 중 브라우저 세션 생성 실패",
  "work.dast.CRAWL_BROWSER_SESSION_MISSING.content": "세션이 없습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_SESSION_MISSING.title": "수집 중 브라우저 세션 유실됨",
  "work.dast.CRAWL_BROWSER_SOCKET_TIMEOUT.content": "브라우저에서 대상 웹 애플리케이션 사이의 소켓 통신이 지연되어 연결에 실패했습니다. 이로 인해 다음 URL의 일부 페이지에서 분석이 제한됩니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_SOCKET_TIMEOUT.title": "수집 도중 소켓 생성 실패",
  "work.dast.CRAWL_BROWSER_UNEXPECTED_FAILURE.content": "브라우저를 실행할 수 없어 브라우저를 통한 수집 및 분석을 할 수 없습니다.\n\n다음의 경로에 있는 브라우저 바이너리를 확인해야 합니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_UNEXPECTED_FAILURE.title": "브라우저 실행 불가",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_ALERT_FAILURE.content": "처리하지 않은 경고창이 있습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_ALERT_FAILURE.title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_ALERT_MISSING.content": "없는 경고창의 처리를 시도했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_ALERT_MISSING.title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_INTERACT_INVALID.content": "HTML 요소가 접근할 수 없는 상태입니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_INTERACT_INVALID.title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_INTERACT_MISSING.content": "접근하려는 HTML 요소가 존재하지 않습니다. 이로 인해 다음 URL의 일부 페이지에서 수집이 제한됩니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_INTERACT_MISSING.title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_INTERACT_TIMEOUT.content": "접근하려는 HTML 요소가 사라졌습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_WEB_ELEMENT_INTERACT_TIMEOUT.title": "수집 중 브라우저 웹 요소 상호작용 실패",
  "work.dast.CRAWL_BROWSER_WINDOW_MISSING.content": "없는 윈도우로 이동을 시도했습니다. 이로 인해 다음 URL에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_BROWSER_WINDOW_MISSING.title": "수집 도중 브라우저 윈도우 전환 오류",
  "work.dast.CRAWL_CLIENT_HOST_INVALID.content": "호스트를 알 수 없어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_HOST_INVALID.title": "수집 중 HTTP 요청의 잘못된 호스트",
  "work.dast.CRAWL_CLIENT_PROTOCOL_INVALID.content": "HTTP 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_PROTOCOL_INVALID.title": "수집 중 HTTP 요청 프로토콜 오류 발생",
  "work.dast.CRAWL_CLIENT_SEED_URL_ACCESS_FAILURE.content": "HTTP 클라이언트가 분석 대상 URL로 요청을 보낼 수 없습니다. HTTP 클라이언트로 수집을 할 수 없습니다.\n\n해당 분석 대상 URL은 다음과 같습니다. \n\n```{0}```",
  "work.dast.CRAWL_CLIENT_SEED_URL_ACCESS_FAILURE.title": "수집 도중 분석 대상 URL 접근 불가",
  "work.dast.CRAWL_CLIENT_SERVICE_INVALID.content": "서비스를 알 수 없어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_SERVICE_INVALID.title": "수집 중 HTTP 요청의 잘못된 형식",
  "work.dast.CRAWL_CLIENT_SOCKET_FAILURE.content": "TCP 연결이 거부되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_SOCKET_FAILURE.title": "수집 중 HTTP 요청 전송 실패",
  "work.dast.CRAWL_CLIENT_SSL_HANDSHAKE_FAILURE.content": "SSL 연결이 거부되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_SSL_HANDSHAKE_FAILURE.title": "수집 중 HTTP 요청 SSL 오류 발생",
  "work.dast.CRAWL_CLIENT_SSL_KEY_INVALID.content": "잘못된 SSL 키입니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_SSL_KEY_INVALID.title": "수집 중 HTTP 요청 SSL 오류 발생",
  "work.dast.CRAWL_CLIENT_SSL_PEER_INVALID.content": "대상이 확인되지 않아 SSL 연결을 할 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_SSL_PEER_INVALID.title": "수집 중 HTTP 요청 SSL 오류 발생",
  "work.dast.CRAWL_CLIENT_SSL_PROTOCOL_INVALID.content": "SSL 프로토콜이 잘못되었습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_SSL_PROTOCOL_INVALID.title": "수집 중 HTTP 요청 SSL 오류 발생",
  "work.dast.CRAWL_CLIENT_TIMEOUT.content": "TCP 연결이 지연되어 HTTP 요청을 보낼 수 없습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_TIMEOUT.title": "수집 중 HTTP 요청 시간 초과",
  "work.dast.CRAWL_CLIENT_UNEXPECTED_FAILURE.content": "HTTP 요청 중 알 수 없는 오류가 발생했습니다. 이로 인해 다음 요청에서의 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_CLIENT_UNEXPECTED_FAILURE.title": "수집 중 HTTP 요청 전송 실패",
  "work.dast.CRAWL_ENDPOINT_BLACKLIST.content": "다음 URL에 대한 요청이 실패하여 해당 URL을 차단합니다.\n\n```{0}```\n\n요청에 실패하는 원인은 다음과 같습니다.\n\n{1}",
  "work.dast.CRAWL_ENDPOINT_BLACKLIST.title": "URL 수집 대상에서 제외",
  "work.dast.CRAWL_OPENAPI_ENDPOINT_ACCESS_FAILURE.content": "수집 도중, OpenAPI 엔드포인트 접근에 실패했습니다.\n\n해당 엔드포인트의 URL은 다음과 같습니다: \n\n```{0}```",
  "work.dast.CRAWL_OPENAPI_ENDPOINT_ACCESS_FAILURE.title": "수집 도중 OpenAPI 엔드포인트 접근 실패",
  "work.dast.CRAWL_OPENAPI_PARSING_FAILURE.content": "수집 도중, OpenAPI 명세 파일 분석에 실패했습니다. 제공한 명세 파일이 올바른 파일인지 확인하세요.",
  "work.dast.CRAWL_OPENAPI_PARSING_FAILURE.title": "수집 도중 OpenAPI 명세 파일 분석 실패",
  "work.dast.CRAWL_OPENAPI_UNEXPECTED_FAILURE.content": "수집 도중, 예상치 못한 오류가 발생하여 OpenAPI 처리에 실패했습니다.",
  "work.dast.CRAWL_OPENAPI_UNEXPECTED_FAILURE.title": "수집 도중 예상치 못한 OpenAPI 처리 실패",
  "work.dast.CRAWL_PROCESS_ENDPOINT_LIMIT.content": "설정된 최대 수집 URL 수 {0}개에 도달하여 수집을 종료합니다.",
  "work.dast.CRAWL_PROCESS_ENDPOINT_LIMIT.title": "최대 수집 URL 수 옵션에 의한 수집 종료",
  "work.dast.CRAWL_PROCESS_OUT_OF_MEMORY.content": "메모리가 부족하여 수집에 실패했습니다. 메모리를 추가하거나 동시 분석 수를 줄여야 합니다.",
  "work.dast.CRAWL_PROCESS_OUT_OF_MEMORY.title": "메모리 부족으로 인한 수집 실패",
  "work.dast.CRAWL_PROCESS_SAVE_RESULT_FAILURE.content": "수집 결과를 저장하는 도중 오류가 발생했습니다.",
  "work.dast.CRAWL_PROCESS_SAVE_RESULT_FAILURE.title": "수집 결과 저장 실패",
  "work.dast.CRAWL_PROCESS_SEED_URL_MISSING.content": "분석 대상 URL을 찾을 수 없습니다.",
  "work.dast.CRAWL_PROCESS_SEED_URL_MISSING.title": "분석 대상 URL을 찾을 수 없음",
  "work.dast.CRAWL_PROCESS_TIMEOUT.content": "설정된 최대 수집 시간 {0}분에 도달하여 수집을 종료합니다.",
  "work.dast.CRAWL_PROCESS_TIMEOUT.title": "최대 수집 시간 옵션에 의한 수집 종료",
  "work.dast.CRAWL_UNEXPECTED_FAILURE.content": "알 수 없는 오류가 발생했습니다. 이로 인해 다음 URL에서 수집에 실패했습니다.\n\n```{0}```",
  "work.dast.CRAWL_UNEXPECTED_FAILURE.title": "URL 수집 중 알 수 없는 에러 발생",
  "work.dast.PRE_BROWSER_LOGIN_RECORD_FIND_INVALID.content": "사전 분석 도중, 브라우저에서 적절하지 않은 로그인 기록을 발견했습니다. \n\n해당 로그인 기록을 실행할 수 없습니다.\n\n해당 로그인 기록을 포함하는 파일은 다음과 같습니다: \n\n```{0}```",
  "work.dast.PRE_BROWSER_LOGIN_RECORD_FIND_INVALID.title": "사전 분석 도중 브라우저에서 적절하지 않은 로그인 기록 발견",
  "work.dast.PRE_BROWSER_LOGIN_RECORD_PARSING_FAILURE.content": "로그인 기록 파일을 파싱하는 데 실패했습니다. 형식이 올바르지 않은 기록 파일이 첨부되었는지 확인해야 합니다.",
  "work.dast.PRE_BROWSER_LOGIN_RECORD_PARSING_FAILURE.title": "로그인 클립보드 파싱 실패",
  "work.dast.PRE_BROWSER_LOGIN_RECORD_UNKNOWN_EVENT.content": "로그인 기록 파일에 재생할 수 없는 형식의 이벤트 {0}가 포함되어 있습니다. 재생 시 해당 이벤트를 건너뜁니다.",
  "work.dast.PRE_BROWSER_LOGIN_RECORD_UNKNOWN_EVENT.title": "로그인 클립보드에 알 수 없는 이벤트가 포함됨",
  "work.dast.PRE_BROWSER_SEED_URL_ACCESS_FAILURE.content": "사전 분석 도중, 브라우저에서 분석 대상 URL에 대한 접근에 실패했습니다.\n\n해당 분석 대상 URL은 다음과 같습니다: \n\n```{0}```",
  "work.dast.PRE_BROWSER_SEED_URL_ACCESS_FAILURE.title": "사전 분석 도중 브라우저에서 분석 대상 URL 접근 실패",
  "work.dast.PRE_DOM_DIAGNOSIS_INVALID.content": "분석 대상 URL에 접근하여 확인한 페이지의 DOM 구조가 올바르지 않아 분석할 수 없습니다.",
  "work.dast.PRE_DOM_DIAGNOSIS_INVALID.title": "올바르지 않은 DOM 구조",
  "work.dast.PRE_OPENAPI_ENDPOINT_ACCESS_FAILURE.content": "사전 분석 도중, OpenAPI 엔드포인트 접근에 실패했습니다.\n\n해당 엔드포인트의 URL은 다음과 같습니다: \n\n```{0}```",
  "work.dast.PRE_OPENAPI_ENDPOINT_ACCESS_FAILURE.title": "사전 분석 도중 OpenAPI 엔드포인트 접근 실패",
  "work.dast.PRE_OPENAPI_PARSING_FAILURE.content": "사전 분석 도중, OpenAPI 명세 파일 분석에 실패했습니다. 제공한 명세 파일이 올바른 파일인지 확인하세요.",
  "work.dast.PRE_OPENAPI_PARSING_FAILURE.title": "사전 분석 도중 OpenAPI 명세 파일 분석 실패",
  "work.dast.PRE_OPENAPI_UNEXPECTED_FAILURE.content": "사전 분석 도중, 예상치 못한 오류가 발생하여 OpenAPI 처리에 실패했습니다.",
  "work.dast.PRE_OPENAPI_UNEXPECTED_FAILURE.title": "사전 분석 도중 예기치 못한 OpenAPI 처리 실패",
  "work.dast.PRE_POLICY_INSPECT_INVALID.content": "설정된 분석 옵션으로 인해 분석 대상 URL을 수집할 수 없습니다. 옵션이 적절하게 설정되었는지 확인해야 합니다.",
  "work.dast.PRE_POLICY_INSPECT_INVALID.title": "분석 대상 URL을 수집할 수 없음",
  "work.dast.RECHECK_BROWSER_SEED_URL_ACCESS_FAILURE.content": "이행 분석 도중, 브라우저에서 분석 대상 URL에 대한 접근에 실패했습니다.\n\n해당 분석 대상 URL은 다음과 같습니다: \n\n```{0}```",
  "work.dast.RECHECK_BROWSER_SEED_URL_ACCESS_FAILURE.title": "이행 분석 도중 브라우저에서 분석 대상 URL 접근 실패",
  "work.dast.RECHECK_INSPECT_FAILURE.content": "이행 분석 도중, 하나 이상의 이슈 분석이 실패했습니다.",
  "work.dast.RECHECK_INSPECT_FAILURE.title": "이행 분석 도중 이슈 분석 실패",
  "work.dast.RECHECK_UNEXPECTED_FAILURE.content": "이행 분석 도중, 예상치 못한 오류가 발생하여 처리에 실패했습니다.",
  "work.dast.RECHECK_UNEXPECTED_FAILURE.title": "이행 분석 도중 예상치 못한 처리 실패",
  "work.dast.access.tag": "접근",
  "work.dast.analysis.tag": "분석",
  "work.dast.browser.tag": "웹 브라우저",
  "work.dast.client.tag": "HTTP 클라이언트",
  "work.dast.cookie.tag": "쿠키",
  "work.dast.crawl.tag": "수집",
  "work.dast.create.tag": "생성",
  "work.dast.dom.tag": "DOM",
  "work.dast.endpoint.tag": "엔드포인트",
  "work.dast.failure.tag": "실패",
  "work.dast.inspect.tag": "검출",
  "work.dast.interact.tag": "상호작용",
  "work.dast.invalid.tag": "부적절",
  "work.dast.limit.tag": "제한",
  "work.dast.login_record.tag": "로그인 기록",
  "work.dast.missing.tag": "누락",
  "work.dast.openapi.tag": "OpenAPI",
  "work.dast.parsing.tag": "구문 분석",
  "work.dast.policy.tag": "정책",
  "work.dast.pre.tag": "사전 분석",
  "work.dast.process.tag": "엔진 프로세스",
  "work.dast.recheck.tag": "이행 분석",
  "work.dast.seed_url.tag": "분석 대상 URL",
  "work.dast.service.tag": "DAST",
  "work.dast.session.tag": "세션",
  "work.dast.socket.tag": "TCP 소켓",
  "work.dast.timeout.tag": "시간 초과",
  "work.dast.web_element.tag": "웹 요소",
  "work.sast.ANALYSIS_IS_STOP.content": "# 분석 엔진 정지 상태\n\n---\n분석 엔진이 정지되었습니다. `{0}` 분석이 종료되었습니다.",
  "work.sast.ANALYSIS_IS_STOP.title": "분석 엔진 정지 상태",
  "work.sast.CEM_MODULE_NOT_FOUND.content": "# 누락된 CEM 엔진 파일\n\n---\nCEM 엔진 파일이 없어서 C/C++ 분석을 진행할 수 없습니다. CEM 엔진이 있는지 확인이 필요합니다.\n\n## 경로\n```\nservice/sast/engine/lib/cem-*.jar\n```",
  "work.sast.CEM_MODULE_NOT_FOUND.title": "누락된 CEM 엔진 파일",
  "work.sast.CONTAIN_NON_ASCII.content": "# ASCII 외 문자가 포함된 분석 경로\n\n---\n분석 경로에 ASCII 외의 문자가 포함되었으므로 C/C++ 분석이 동작하지 않습니다. 파일 이름 혹은 분석 경로 이름을 확인하세요.\n\n## 경로\n```\n{{nonAsciiField}}\n```",
  "work.sast.CONTAIN_NON_ASCII.title": "ASCII 외 문자가 포함된 분석 경로",
  "work.sast.DATA_ANALYSIS_DIRECTORY_NOT_FOUND.content": "# 데이터 분석 폴더 확인 불가\n\n---\n데이터 분석 폴더를 찾을 수 없습니다. 데이터 분석 폴더를 확인해야 합니다.\n\n## 경로\n```\n{0}\n```",
  "work.sast.DATA_ANALYSIS_DIRECTORY_NOT_FOUND.title": "데이터 분석 폴더 확인 불가",
  "work.sast.ENGINE_ABNORMAL.content": "# 엔진 이상 상태 감지\n\n---\n분석 도중 일부 엔진에서 비정상적인 상태(ZOMBIE, HANG 등)가 감지되었습니다.\n상세 내역은 아래와 같습니다.\n\n## 엔진 : 상태\n{0}\n\n## 조치 방법\n해당 엔진의 로그 파일을 확인하거나, 관리자에게 문의하여 프로세스 상태를 점검하시기 바랍니다.",
  "work.sast.ENGINE_ABNORMAL.title": "엔진 이상 상태 감지",
  "work.sast.ENGINE_CONF_NOT_FOUND.content": "# 엔진 설정 파일 확인 불가\n\n---\n엔진 설정 파일이 없으면 분석이 정상적으로 진행되지 않습니다. 엔진 설정 파일이 있는지 확인이 필요합니다.\n\n## 경로\n```\n{0}\n```",
  "work.sast.ENGINE_CONF_NOT_FOUND.title": "엔진 설정 파일 확인 불가",
  "work.sast.FAIL_TO_BUILD.content": "# 빌드에 실패했습니다.\n\n---\n소스코드 빌드에 실패했습니다. 빌드를 확인하세요.",
  "work.sast.FAIL_TO_BUILD.title": "소스코드 빌드 실패",
  "work.sast.FAIL_TO_COPY_FILE.content": "# 파일 복사 실패\n\n---\n파일을 복사하는 데 실패했습니다. 복사에 실패한 파일을 확인해야 합니다.\n\n## 경로\n```\n{0}\n```",
  "work.sast.FAIL_TO_COPY_FILE.title": "파일 복사 실패",
  "work.sast.FAIL_TO_CREATE_ISSUE_REQUEST.content": "# 이슈 생성 요청 실패\n\n---\n이슈 생성 요청을 실패했습니다. 로그 파일에서 요청 내용을 확인해야 합니다.\n\n## 경로\n```\nlogs/sast/sast.log\n```\n\n## 내용\n```\n분석ID {0}에 대한 createSastIssues 요청 확인 필요.\n```",
  "work.sast.FAIL_TO_CREATE_ISSUE_REQUEST.title": "이슈 생성 요청 실패",
  "work.sast.FAIL_TO_CREATE_MESSAGES_REQUEST.content": "# 메시지 요청 생성 실패\n\n---\n메시지 요청을 생성하는 데 실패했습니다. 로그 파일에서 요청 내용을 확인해야 합니다.\n\n## 경로\n```\nlogs/sast/sast.log\n```\n\n## 내용\n```\n분석ID {0}에 대한 createWorkMessages 요청 확인 필요.\n```",
  "work.sast.FAIL_TO_CREATE_MESSAGES_REQUEST.title": "메시지 요청 생성 실패",
  "work.sast.FAIL_TO_DELETE_ANALYSIS_SPARROW_DIRECTORY.content": "# 스패로우 분석 폴더 삭제 실패\n\n---\n스패로우 분석 폴더를 삭제하는 데 실패했습니다. 스패로우 분석 폴더 확인이 필요합니다.\n\n## 경로\n```\n{0}\n```",
  "work.sast.FAIL_TO_DELETE_ANALYSIS_SPARROW_DIRECTORY.title": "분석 스패로우 폴더 삭제 실패",
  "work.sast.FAIL_TO_DELETE_DATA_ANALYSIS_DIRECTORY.content": "# 데이터 분석 폴더 삭제 실패\n\n---\n데이터 분석 폴더를 삭제하는 데 실패했습니다. 데이터 분석 폴더 확인이 필요합니다.\n\n## 경로\n```\n{0}\n```",
  "work.sast.FAIL_TO_DELETE_DATA_ANALYSIS_DIRECTORY.title": "데이터 분석 폴더 삭제 실패",
  "work.sast.FAIL_TO_DOWNLOAD_LOG.content": "# 로그 다운로드 실패\n\n---\n분석 로그를 다운로드 하지 못했습니다. 다음 경로에 폴더 혹은 파일이 있는지 확인해야 합니다.\n\n## 경로\n```\n1. service/sast/data/analysis/{0}\n2. service/sast/data/analysis/{0}/sparrow/log_files\n3. {1}\n```",
  "work.sast.FAIL_TO_DOWNLOAD_LOG.title": "로그 다운로드 실패",
  "work.sast.FAIL_TO_DOWNLOAD_SOURCE.content": "# 소스코드 다운로드 실패\n\n---\n스토리지에 있는 소스코드를 다운로드 하지 못했습니다. 아래 경로에 압축 파일이 있는지 확인해야 합니다.\n\n## 경로\n```\n{0}\n```\n\n## 압축 파일\n```\n{1}\n```",
  "work.sast.FAIL_TO_DOWNLOAD_SOURCE.title": "소스코드 다운로드 실패",
  "work.sast.FAIL_TO_EXTRACT.content": "# 소스코드 추출 실패\n\n---\n소스코드 추출 중 문제가 발생했습니다. 클라이언트 분석인 경우 클라이언트 로그를, 웹 분석인 경우 다음 파일 경로의 확인이 필요합니다.\n\n## 분석 대상 번호\n```\n{{targetIdxfield}}\n```",
  "work.sast.FAIL_TO_EXTRACT.title": "소스코드 추출 실패",
  "work.sast.FAIL_TO_GET_PROGRESS.content": "# 진행 상태 확인 실패\n\n---\n진행 상태를 가져오는 데 실패했습니다. 로그 파일에서 요청 내용을 확인해야 합니다.\n\n## 경로\n```\nlogs/sast/sast.log\n```\n\n## 내용\n```\n분석ID {0}에 대한 updateProgress 요청 확인 필요.\n```",
  "work.sast.FAIL_TO_GET_PROGRESS.title": "진행 상태 확인 실패",
  "work.sast.FAIL_TO_READ_FILE.content": "# 파일 읽기 실패\n\n---\n파일을 읽는 데 실패했습니다. 다음은 문제가 발생할 수 있는 상황입니다. 각각 경로의 확인이 필요합니다.\n\n## 경로\n```\n1. sast.jar 바이너리에 있는 oldCheckerInfo.json 파일 읽기 실패.\n2. service/sast/data/analysis/분석id/sparrow 산출물 확인 중 문제 발생. (extract_src.json 등)\n3. downloadLogFile 요청 처리 중 service/sast/data/analysis/분석id/sparrow/log_files 폴더내 파일들 접근 중에 문제 발생.\n```",
  "work.sast.FAIL_TO_READ_FILE.title": "파일 읽기 실패",
  "work.sast.FAIL_TO_READ_ISSUE_FILE.content": "# 이슈 파일 읽기 실패\n\n---\n이슈 파일을 읽는 데 실패했습니다. 이슈 파일이 정상적인지 확인이 필요합니다.\n\n## 경로\n```\nservice/sast/data/analysis/{0}/{1}/{2}/sparrow/xml_files 폴더내에 있는 {3}\n```",
  "work.sast.FAIL_TO_READ_ISSUE_FILE.title": "이슈 파일 읽기 실패",
  "work.sast.FAIL_TO_RUN_CEM.content": "# CEM 실행 중 문제 발생\n\n---\nCem 엔진 실행 중 문제가 발생했습니다. cem.log 파일에 대한 확인이 필요합니다.\n\n## 경로\n```\nservice/sast/data/analysis/{0}/sparrow/log_files/cem.log\n```",
  "work.sast.FAIL_TO_RUN_CEM.title": "CEM 실행 중 문제 발생",
  "work.sast.FAIL_TO_RUN_JEM.content": "# JEM 실행 중 문제 발생\n\n---\nJem 엔진 실행 중 문제가 발생했습니다. jem.log 파일에 대한 확인이 필요합니다.\n\n## 경로\n```\nservice/sast/data/analysis/{0}/sparrow/log_files/jem.log\n```",
  "work.sast.FAIL_TO_RUN_JEM.title": "JEM 실행 중 문제 발생",
  "work.sast.FAIL_TO_UPLOAD_ISSUES.content": "# 이슈 업로드 실패\n\n---\n`{0}` 분석의 이슈 업로드가 실패했습니다. SAST 서비스 로그를 확인해야 합니다.\n\n## 경로\n```\nlogs/sast/sast.log\n```",
  "work.sast.FAIL_TO_UPLOAD_ISSUES.title": "이슈 업로드 실패",
  "work.sast.FAIL_TO_UPLOAD_LOG.content": "# 로그 업로드 요청 실패\n\n---\n로그 업로드 요청을 실패했습니다. 로그 파일에서 요청 내용을 확인해야 합니다.\n\n## 경로\n```\nlogs/sast/sast.log\n```\n\n## 내용\n```\n분석ID {0}에 대한 uploadAnalysisLog 요청 확인 필요.\n```",
  "work.sast.FAIL_TO_UPLOAD_LOG.title": "로그 업로드 요청 실패",
  "work.sast.FAIL_TO_UPLOAD_SYMBOL_TAG.content": "# 심볼 정보 파일 업로드 요청 실패\n\n---\n심볼 정보 파일 업로드 요청을 실패했습니다. 로그 파일에서 요청 내용을 확인해야 합니다.\n\n## 경로\n```\nlogs/sast/\n```\n\n## 내용\n```\n분석ID {0}에 대한 uploadSymbolTarget 요청 확인 필요.\n```",
  "work.sast.FAIL_TO_UPLOAD_SYMBOL_TAG.title": "심볼 정보 파일 업로드 요청 실패",
  "work.sast.FAIL_TO_WRITE_OPTION_FILE.content": "# 체커 설정 파일 생성 실패\n\n---\n체커 설정 파일을 생성하는 데 실패했습니다. 다음 경로의 확인이 필요합니다.\n\n## 경로\n```\n{0}\n```",
  "work.sast.FAIL_TO_WRITE_OPTION_FILE.title": "체커 설정 파일 생성 실패",
  "work.sast.INVALID_PATTERNS.content": "# 분석 제외 함수 정규식 오류\n\n---\n입력된 '분석 제외 함수' 설정값 중 정규식(Regex) 문법에 맞지 않는 패턴이 감지되었습니다.\n해당 패턴들은 분석 제외 설정에서 무시되었습니다. 올바른 정규식인지 확인하세요.\n\n## 유효하지 않은 패턴\n```\n{0}\n```",
  "work.sast.INVALID_PATTERNS.title": "분석 제외 함수 정규식 오류",
  "work.sast.INVALID_RULE_OPTION_FATAL.content": "# 이슈 검출 규칙 옵션 오류\n\n---\n분석 요청 시 이슈 검출 규칙 옵션이 잘못 전달되어 올바르게 분석을 수행할 수 없습니다. 관리자에게 문의하세요.",
  "work.sast.INVALID_RULE_OPTION_FATAL.title": "이슈 검출 규칙 옵션 오류",
  "work.sast.INVALID_RULE_OPTION_PARTIAL.content": "# 일부 이슈 검출 규칙 옵션 오류\n\n---\n일부 이슈 검출 규칙의 옵션이 잘못 전달되었습니다: {0} 포함 {1}개",
  "work.sast.INVALID_RULE_OPTION_PARTIAL.title": "일부 이슈 검출 규칙 옵션 오류",
  "work.sast.JEM_MODULE_NOT_FOUND.content": "# 누락된 JEM 엔진 파일\n\n---\nJEM 엔진 파일이 없어서 Java 기반 엔진들의 분석을 진행할 수 없습니다. JEM 엔진이 있는지 확인이 필요합니다.\n\n## 경로\n```\nservice/sast/engine/lib/jem-*.jar\n```",
  "work.sast.JEM_MODULE_NOT_FOUND.title": "누락된 JEM 엔진 파일",
  "work.sast.NOT_FOUND_RULE_FILE.content": "# 룰 파일 찾기 실패\n\n---\n분석 이슈 생성 중 생성된 이슈의 룰 파일과 체커 키가 맞지 않습니다. 확인이 필요합니다.\n\n## 대상 파일 및 체커키\n```\n룰 파일 : {0}\n체커 키 : {1}\n```",
  "work.sast.NOT_FOUND_RULE_FILE.title": "룰 파일 찾기 실패",
  "work.sast.NOT_FOUND_SOURCE.content": "# 소스코드 검출 규칙으로 분석할 파일 없음\n\n---\n소스코드 검출 규칙으로 분석할 파일이 없습니다. 소스코드 이슈를 확인하려면 분석 대상 파일을 확인해야 합니다.",
  "work.sast.NOT_FOUND_SOURCE.title": "소스코드 검출 규칙으로 분석할 파일 없음",
  "work.sast.OPTION_FILE_CREATION_FAILED.content": "# 옵션 파일 생성 실패\n\n---\n이슈 검출 규칙 설정 파일의 생성이 실패했습니다. 다음 경로를 확인해야 합니다.\n\n## 경로\n```\n{0}\n```",
  "work.sast.OPTION_FILE_CREATION_FAILED.title": "옵션 파일 생성 실패",
  "work.sast.PATH_LIMIT_EXCEEDED.content": "# 파일 경로 길이 제한 초과  \n\n---\n\n소스코드 분석을 위한 파일을 생성하는 과정에서 **운영체제(OS)가 허용하는 최대 경로 길이를 초과**하여 작업이 중단되었습니다.\n이 문제는 분석 도구의 오류가 아니며, 파일이 저장될 위치의 **폴더 깊이**나 **파일명**이 너무 길어서 발생합니다.\n\n---\n\n### 상세 정보\n\n* **감지된 운영체제:** `{{os}}`\n* **제한 기준:** `{{limit}}`\n\n---\n\n### 실패한 경로\n아래 경로가 운영체제의 허용 한계를 넘었습니다.\n\n> `{{path}}`\n\n---\n\n### 해결 가이드\n\n현재 클라이언트가 바탕화면이나 깊은 폴더(`C:\\Users\\Name\\Desktop\\Work\\Project\\...`)에 있다면, 얕은 폴더로 이동해 주세요.",
  "work.sast.PATH_LIMIT_EXCEEDED.title": "파일 경로 길이 제한 초과 ",
  "work.sast.UNEXPECTED_ENGINE_SHUTDOWN.content": "# 분석 중 분석 엔진 종료\n\n---\n소스 코드 분석 중 분석 엔진이 비정상 종료가 되었습니다.\n\n## 종료된 분석 엔진\n```\n{0}\n```\n\n## Exit Code\n```\n{1}\n```",
  "work.sast.UNEXPECTED_ENGINE_SHUTDOWN.title": "분석 엔진 비정상 종료",
  "work.sast.analysis.tag": "분석",
  "work.sast.config.tag": "설정",
  "work.sast.copy.tag": "복사",
  "work.sast.create.tag": "생성",
  "work.sast.delete.tag": "삭제",
  "work.sast.download.tag": "다운로드",
  "work.sast.engine.tag": "엔진",
  "work.sast.extract.tag": "추출",
  "work.sast.fail.tag": "실패",
  "work.sast.file.tag": "파일",
  "work.sast.find.tag": "검색",
  "work.sast.folder.tag": "폴더",
  "work.sast.get.tag": "받기",
  "work.sast.issue.tag": "이슈",
  "work.sast.log.tag": "로그",
  "work.sast.message.tag": "메시지",
  "work.sast.progress.tag": "진행 상태",
  "work.sast.read.tag": "읽기",
  "work.sast.request.tag": "요청",
  "work.sast.rule.tag": "룰",
  "work.sast.run.tag": "실행",
  "work.sast.service.tag": "SAST",
  "work.sast.source_code.tag": "소스코드",
  "work.sast.stop.tag": "중지",
  "work.sast.upload.tag": "업로드",
  "work.sca.FAIL_TO_HEALTH_CHECK_WITH_DATA_WAREHOUSE.content": "# 데이터 웨어하우스 상태 확인 실패\n데이터 웨어하우스 서비스의 상태 확인에 실패했습니다. 분석이 진행되지 않습니다.\n\n## 데이터 웨어하우스 주소\n```\n{0}\n```",
  "work.sca.FAIL_TO_HEALTH_CHECK_WITH_DATA_WAREHOUSE.title": "데이터 웨어하우스 서비스의 상태 확인 실패",
  "work.sca.FILE_PARSING_ERROR.content": "# 파일 파싱 에러\n다음 파일 파싱 시 에러가 발생하여 분석이 올바르게 진행되지 않을 수 있습니다.\n\n## 파일 경로\n```\n{0}\n```\n\n## 에러 메시지\n```\n{1}\n```",
  "work.sca.FILE_PARSING_ERROR.title": "파일 파싱 에러가 발생했습니다.",
  "work.sca.INVALID_DATA_WITH_DATA_WAREHOUSE.content": "# 분석 중 데이터 웨어하우스 데이터 오류 발생\n\n분석 과정에서 데이터 웨어하우스와의 데이터 오류가 {0}회 발생했습니다.\n\n일부 컴포넌트 또는 이슈가 검출되지 않거나 상세 정보가 누락될 수 있습니다.\n\n## 데이터 웨어하우스 주소\n```\n{1}\n```\n\n## 잘못된 데이터\n{2}",
  "work.sca.INVALID_DATA_WITH_DATA_WAREHOUSE.title": "분석 중 데이터 웨어하우스 데이터 오류 발생",
  "work.sca.NOT_FOUND_ANALYSIS_FILE.content": "# 분석 대상 파일 탐색 실패\n분석 대상 파일을 찾을 수 없습니다.",
  "work.sca.NOT_FOUND_ANALYSIS_FILE.title": "분석 대상 파일을 찾을 수 없습니다.",
  "work.sca.RUNTIME_EXCEPTION_WITH_DATA_WAREHOUSE.content": "# 분석 중 데이터 웨어하우스 통신 오류 발생\n분석 과정에서 데이터 웨어하우스와의 통신 오류가 {0}회 발생했습니다.\n\n일부 컴포넌트 또는 이슈가 검출되지 않거나 상세 정보가 누락될 수 있습니다.\n\n## 데이터 웨어하우스 주소\n```\n{1}\n```",
  "work.sca.RUNTIME_EXCEPTION_WITH_DATA_WAREHOUSE.title": "분석 중 데이터 웨어하우스 통신 오류 발생",
  "work.sca.SCA_EXTRACTOR_ACCESS_DENIED_FILES.content": "# 전처리 과정에서 접근 권한이 없는 파일 발견\n\n`{{accessDeniedFileSize}}`개의 파일이 접근 권한이 없는 것으로 확인되었습니다.\n\n접근 권한이 없는 파일은 분석이 진행되지 않습니다.\n\n## 분석이 불가능한 파일 목록\n\n```\n{{accessDeniedFilePaths}}\n```",
  "work.sca.SCA_EXTRACTOR_ACCESS_DENIED_FILES.title": "전처리 과정에서 접근 권한이 없는 파일 발견",
  "work.sca.SCA_EXTRACTOR_ALL_ARCHIVE_FILES_INVALID.content": "# 모든 압축 파일에서 압축 해제 오류 발생\n\n`{{totalSize}}`개의 등록된 모든 압축 파일이 압축 해제에 실패한 것으로 확인되었습니다.\n\n압축 해제에 실패한 압축 파일은 분석이 진행되지 않습니다.\n\n## 분석이 불가능한 압축 파일 목록\n\n```\n{{invalidFilePaths}}\n```",
  "work.sca.SCA_EXTRACTOR_ALL_ARCHIVE_FILES_INVALID.title": "모든 압축 파일에서 압축 해제 오류 발생",
  "work.sca.SCA_EXTRACTOR_ALL_SBOM_FILES_INVALID.content": "# 모든 SBOM 파일에서 지원하지 않는 형식 발견\n\n`{{totalSize}}`개의 등록된 모든 SBOM 파일이 현재 시스템에서 지원하지 않는 형식입니다.\n\n분석을 진행할 수 없습니다.\n\n## 분석이 불가능한 SBOM 파일 목록\n\n```\n{{invalidFilePaths}}\n```",
  "work.sca.SCA_EXTRACTOR_ALL_SBOM_FILES_INVALID.title": "모든 SBOM 파일에서 지원하지 않는 형식 발견",
  "work.sca.SCA_EXTRACTOR_DOCKER_IMAGE_NOT_FOUND.content": "# Docker 로컬 저장소에서 이미지 탐색 실패\n\nDocker 로컬 저장소에서 이미지를 찾지 못했습니다.\n\n이미지 파일 추출에 실패한 Docker 이미지는 분석이 진행되지 않습니다.\n\n## 찾을 수 없는 Docker 이미지\n\n```\n{{notFoundImageName}}\n```",
  "work.sca.SCA_EXTRACTOR_DOCKER_IMAGE_NOT_FOUND.title": "Docker 로컬 저장소에서 이미지 탐색 실패",
  "work.sca.SCA_EXTRACTOR_SOME_ARCHIVE_FILES_INVALID.content": "# 일부 압축 파일에서 압축 해제 오류 발생\n\n`{{totalSize}}`개 중 `{{invalidFileSize}}`개의 압축 파일이 압축 해제에 실패한 것으로 확인되었습니다.\n\n압축 해제에 실패한 압축 파일은 분석이 진행되지 않습니다.\n\n## 분석이 불가능한 압축 파일 목록\n\n```\n{{invalidFilePaths}}\n```",
  "work.sca.SCA_EXTRACTOR_SOME_ARCHIVE_FILES_INVALID.title": "일부 압축 파일에서 압축 해제 오류 발생",
  "work.sca.SCA_EXTRACTOR_SOME_SBOM_FILES_INVALID.content": "# 일부 SBOM 파일에서 지원하지 않는 형식 발견\n\n`{{totalSize}}`개 중 `{{invalidFileSize}}`개의 SBOM 파일이 현재 시스템에서 지원하지 않는 형식으로 확인되었습니다.\n\n지원 가능한 파일만 분석이 진행됩니다.\n\n## 분석이 불가능한 SBOM 파일 목록\n\n```\n{{invalidFilePaths}}\n```",
  "work.sca.SCA_EXTRACTOR_SOME_SBOM_FILES_INVALID.title": "일부 SBOM 파일에서 지원하지 않는 형식 발견",
  "work.sca.TIMEOUT_EXCEPTION_WITH_BACKEND.content": "# 백엔드 요청 시 타임아웃 발생\n\n백엔드로 분석 결과 전송 작업 중 최대 응답 시간을 초과했습니다. 일부 분석 결과가 등록되지 않을 수 있습니다.",
  "work.sca.TIMEOUT_EXCEPTION_WITH_BACKEND.title": "백엔드 통신 중 타임아웃 에러가 발생했습니다.",
  "work.sca.analysis.tag": "분석",
  "work.sca.backend.tag": "백엔드",
  "work.sca.connect.tag": "통신",
  "work.sca.docker.tag": "Docker",
  "work.sca.exception.tag": "예외",
  "work.sca.fail.tag": "실패",
  "work.sca.file.tag": "파일",
  "work.sca.find.tag": "탐색",
  "work.sca.image.tag": "이미지",
  "work.sca.parsing.tag": "파싱",
  "work.sca.service.tag": "SCA",
  "work.sca.timeout.tag": "타임아웃",
  "work.sca.warehouse.tag": "데이터 웨어하우스",
  "writeReadOnlyFile.description": "읽기전용으로 연 파일에 쓰기 작업을 합니다.",
  "wrongPipeParameterSize.description": "pipe 함수에 인자로 들어가는 정수형 버퍼의 사이즈는 2여야 합니다.",
  "wrongPrintfScanfArgNum.description": "printf 포맷 스트링의 인자 갯수가 올바르지 않습니다.",
  "wrongPrintfScanfParameterPositionError.description": "포맷 스트링 내의 'n$'는 맞는 인자를 가져야 합니다.",
  "zerodiv.description": "0으로 나누기를 합니다.",
  "zerodivcond.description": "0 체크가 중복이거나, 0으로 나누기가 발생할 수 있습니다."
}